2007年11月24日20:00 カテゴリアマグラマーのすすめ アマグラマーのすすめ - 目次 完成まで毎日更新予定 - なかなか毎日更新とは行かないのはスルーしていただく方向で。 はじめのはじめ はじめに プログラムって何さ? 世界は言葉で出来ている 下ごしらえ プログラムの言の葉 美徳その1:怠慢 美徳その2:短気 美徳その3:傲慢 「アマグラマーのすすめ」カテゴリの最新記事

未だに半年前のエントリにブクマされるみたいなので、もう少しjavascriptについて書いてみる。 今回は大規模化開発におけるJavascriptの注意点とかそういうの。当てはまらない環境の方もいます。(しかも基本的な事だらけで大したことは書いてないです) ほぼリッチクライアントを主目的としたjavascripterとコードを対象とします。 どちらかというと、ライブラリを提供する側の視点から 1.ログを出力せよ あなたが書いたコードは遅い、と必ず言われます。なので言われる前から、自分の書いたコードの処理時間をログするようにしましょう。 次のような処理時間を計測するロガーを作ります。 var TraceLog = function (){ this.startTime = -1; var outer = document.getElementById('_outer'); if(oute
正規表現の練習くらいにしか役に立たないですが作ってみました。 特徴 リアルタイムで確認ができる。 XHTMLとJavascriptで作ったので保存すればローカルで使える。 JavaScriptで実装してるので一部使えない表現有り。 正規表現エディタ あとがき 最近ブログを更新してないので数ヶ月前に作ったやつを手直したものです。Firefox2(MAC)とIE7では動くの確認しました。あまり詳しくないんですが各ブラウザに多少、正規表現の実装が違う気がします。 patternを空にすると選択範囲がおかしくなるのを修正。
WEB+DB PRESS 編集の R たんから、僕の連載記事に読者様から質問が来ていると教えていただいたので、その内容を教えていただきました。 以下、内容を転載 「JavaScriptわくわく開発道」の記事に関して質問です。 今回の内容で特に興味を持ったのはthisキーワードの振る舞いでした。 thisキーワードの説明には、オブジェクト型の変数を別の変数にコピーしてから初期化すると、コピーした変数からメソッドを実行できなくなるという例が紹介されていました。 そこには「(1)の時点でobj0には{}が入っているため、hogeは未定義となってしまう」という説明があるのですが、誌面の都合上省略があるためか、thisキーワードを用いることで問題を回避できるという理由がなかなか理解できないでいます。 自分なりに考えてみたところ、内部的には以下のようなことが起きているのではないかと思いました。 (1)
※追記:あまりにも記事タイトルが適当すぎて我ながら日本語でおkと思ったのでタイトルを変えました。 http://labs.cybozu.co.jp/blog/kazuho/archives/2006/12/oo-settimeout.php http://blog.livedoor.jp/dankogai/archives/50714622.html このネタはmalaさんが1年半前に通過した地点なのである程度常識の部類かと思ってました。 でもdankogaiがわざわざやるってことは知らない人も多そうだし、malaさんが同じネタをまたやるようにも思えないので、ついでにLDRに現在使われてるFunction.prototype.laterとかを紹介してみる。 Function.prototype.later = function(ms){ var self = this; return fu
前回の「ブログの☆の総数を取得できるAPIを組み込みました」では、はじめてJSONPを使ってみました。以下、実際にJSONPを使ってみての覚え書きと、これからJSONPプログラミングをはじめる方へのTIPSです。 ブログの☆の総数を取得できるAPIは、はてなスターに登録されたブログの情報を取得できるJSON形式とJSONP形式で提供されているAPIでした。 はてなスター日記 - ブログの☆の総数を取得できるAPIを追加しました JSONとは、JavaScriptにおけるオブジェクトの表記法をほぼそのまま利用したデータフォーマットのことで、JSONPはJSONにちょっと記述を加えて、クロスドメインのJSONデータを非同期で読み込ませて処理するための手法のことです。(詳しい定義については、自分で調べてみてください) 通常、Webブラウザでは他ドメインのJavaScriptのデータを読み込んで実
背景 いままで、ちゃんとパーサというものを書いたことがなかったので勉強のためにアレコレ考えながらやってみようと思って、簡単な数式を木にするパーサを書いてみようと思ったのです>< 今回作るパーサの仕様 パースする数式の演算子は二項演算子 + - * / と単項演算子 + - だけ。 括弧とかは使わない。 演算の優先順位は * / のほうが + - より高い。つまり、 1 + 1 * 1 は 1 + (1 * 1) 単項演算子は二項演算子より優先順位が高い。つまり、 - 1 + 1 は (-1) + 1 で、作ってみた! ソースコード filter 関数とか使ってるので、 Firefox only です。 var parse = function(source) { var tokens = source.match(/[-+*/]|[^-+*/\s]+|\s+/g).filter(/^[^\
XPCOMから外部コマンドを呼べる事が分かったので、試しにアプリケーションランチャーを作ってみた。出来る事が少ないので未完成品。だけどコマンド起動方法の断片として他で使うかもしれないからメモ代わりに置いとく。 本当はコマンドの標準出力を受け取って、それを加工してサイドバーに出力、とか考えてたけど、どうも標準出力は受け取れないみたいだ。リダイレクトでファイルに書き出して読むしか手は無いのかな...。 /** * external Application Launcher * @author teramako teramako@gmail.com * @version 0.1 * @license MPL 1.1/GPL 2.0/LGPL 2.1 */ (function(){ var entries = [ { name: 'GranPradiso', path: 'D:\\usr\\lib
2007年08月17日01:15 カテゴリ翻訳/紹介Lightweight Languages 怠翻 - JavaScriptでありがちな9つのシマッタ 私自身結構シマッタしちゃうので。 Nine Javascript Gotchas 尻カンマ注意 以下のコードはFireFoxでは動きますが、Internet Explorer (以下IE)では問題になります。 var theObj = { city : "Boston", state : "MA", } 最後にカンマが入らないよう注意しましょう。 浮気なthisは何を見てるやら 以下のコードで、thisは何を指しているでしょうか。 <input type="button" value="Gotcha!" id="MyButton" > <script> var MyObject = function () { this.alertMess
最近 JSONP というのが話題になっているようですので, ここで簡単に紹介します。 JSONP (JSON with Padding)というのは JSON のデータフォーマットにちょっとした記述を加えて JavaScript の関数として呼び出せるようにしたものです。 JSONP については以下の記事に簡単な説明があります。(多分この記事が初出だろうという話です) Remote JSON - JSONP 例えば以下のような JSON データがあるとします。 { "name" : "Yasuhiro ARAKAWA" } JSONP ではこのデータに記述を加えて JavaScript 関数のようにしたものです。 分かりにくいですね。 具体的にはこのように記述します。 callback( { "name" : "Yasuhiro ARAKAWA" } ); "callback" の部分は関数
動的にscript要素を追加してやることによってクロス・ドメインのJavaScriptファイルを読み込むというテクニック。Firefoxの場合は動的に追加するscript要素のonload属性で読み込んだJavaScriptファイルを処理するfunctionを指定してやれば問題ない。しかし、これをクロス・ブラウザで実現するには違ったアプローチが必要になる。そのひとつがJSON and the Dynamic Script Tag: Easy, XML-less Web Services for JavaScriptで取り上げられているJSONScriptRequest。XmlHttpRequestと比較するとかなり機能が限定されたものだけど、扱いが手軽で限定された環境ではなかなか威力を発揮するっぽい。 JSONScriptRequestはどうやらJSONPと呼ばれている、JSONデータをc
翻訳(thanks to JavaScript++かも日記) 原文:Introducing JSON JSON(JavaScript Object Notation)は、軽量のデータ交換フォーマットです。人間にとって読み書きが容易で、マシンにとっても簡単にパースや生成を行なえる形式です。JavaScriptプログラミング言語(ECMA-262標準第3版 1999年12月)の一部をベースに作られています。JSONは完全に言語から独立したテキスト形式ですが、C、C++、C#、Java、JavaScript、Perl、Python、その他多くのCファミリーの言語を使用するプログラマにとっては、馴染み深い規約が使われています。これらの性質が、JSONを理想的なデータ交換言語にしています。 JSONは2つの構造を基にしています。 名前/値のペアの集まり。様々な言語で、これはオブジェクト、レコード、構
UStream.tvとtwitterでニコニコ動画ってみた、あとJavaScript→ActionScriptブリッジの更新 追記:デモページTwitterとUstream.tv のアカウントは切り替えれるようにした。 このエントリの続き JavaScript → ActionScript なオブジェクトブリッジを作ってみた 最近もっぱらActionScript勉強中なのですが、JavaScriptオブジェクトをActionScriptから叩けると楽しいのじゃないか、と思ってオブジェクトブリッジ作成中な訳です。で実際何が便利かと考えたら、まあJSONPかなぁと。やっぱActionScriptでもJSONPでクロスドメインのデータとってきたいじゃない、人間だもの。 で一つサンプルを作ろうと思ってネタ探ししてたら、なんかustream.tvってのが面白そうじゃないか。ustream.tv一言で
クラスを定義する方法です。考え付くだけでも、これだけたくさんの方法があります。やっぱり、 JavaScript って柔軟であり複雑な言語ですね。 ちなみに、以下のすべての例はこのクラスを定義しています。 ちなみに、僕は一番下の書き方ですね。 皆さんはどのようにプログラミングしていますか? プロトタイプを使わない。クロージャを使う。 // プロトタイプを使わない。 // クロージャを使う。 function Item(price) { this.showPrice = function() { alert(price); }; } プロトタイプを使わない。クロージャを使わない。 // プロトタイプを使わない。 // クロージャを使わない。 function Item(price) { this.price = price; this.showPrice = function() { aler
iPhone/iPod touch iPhone/iPod touchはAppleから発売されているスマートフォンおよびミュージックプレイヤー。どちらも世界的に普及しており、Apple Storeからデジタルコンテンツを購入して利用できる。 当初は一般ユーザーはAjaxアプリケーションしか開発できなかったが、2008年2月に「iPhone 2.0」が公開され、ソフトウェア開発キット「iPhoneSDK」も公開となり、ネイティブアプリケーションも開発可能となった。 開発したソフトウェアが有償の場合は30%をAppleに支払い、残りの70%を開発側で手にすることができる。無償の場合はAppleへの支払は不要となる。 ネイティブアプリケーション 統合開発環境として「Xcode」、プログラミング言語として「Objective-C」、アプリケーションフレームワークとして「Cocoa
aki note ≫ Google 電話面接を受けました orz (いまは消えてるけど)にて割り算が壊れました。自分で実装してみてくださいという質問が紹介されていた。せっかく(?)の機会なので、割り算だけでなく、四則演算を全部壊してみて、JavaScript で実装して見ることにした。JavaScript を選んだのは、コンパイル不要、ビット演算がある、Firebug で手軽に確認できる、という理由から。それ以上の深い意味はない。ということで、次のような問題に一般化してみた。問い四則演算を JavaScript で実装しなさい。演算子は ==、!= およびビット演算子のみ使ってよいものとします。補足例えば、for 文で for(var i = 0; i { // ... } と書くためには、++ 演算子は次のように定義できる。 function increment(i){ var c =
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く