先日YコンビネータのきしださんのYコンビネータのエントリが話題になっていました。 ずいぶん日にちが経ってしまいましたが、自分も、自分なりにYコンビネータのあたりを絵解きで整理してみたいと思います。きしださんのエントリタイトル*1に引っ掛けて、目標として、自分の父親(非プログラマ。その辺のおっさん)でも解る内容を目指します。 なぜ不動点演算子というのか、不動点だったらなぜ再帰なのか、この辺りも含めて、実感を持って納得できればいいなと思います。 きしださんのエントリのおさらい 本題の前に、きしださんのエントリをおさらいしておきます。 Yコンビネータはただのオモチャじゃないんだよ 関数だけで色んな事が出来る 条件分岐をする関数ってのもある。 再帰(ループ)を作れる関数もある。←これがYコンビネータ。 数値も関数で表現できる。 つまり、関数だけで、条件分岐も、再帰(ループ)も、数値も作れちゃう!!
前エントリで、『JavaScript:The Good Parts 「良いパーツ」によるベストプラクティス』が万人向けでないことを書きました。 自分の実力を顧みず、この本のベストでない部分をつっこんでいこうと思います。ゴリアテどころかゴリアテの集団に挑んでいくような状態ですね。 さて、全エントリで書いた通り、この本は悪い本ではなく良本であり、読む人が読むと良い刺激になるに違いないと思っています。これを契機によりよいJavaScriptの書き方について論議が進むのではないかと期待しています。しかし、対象と思われる層が中級者以上で、初級者が読むと逆に悪本になりかねない部分を持っています。勘違いしそうな部分、気になった部分を中心に記述していきます。このため、否定的な内容は沢山出てきますが、上記のような前提ですので、書籍全体がこのような内容が散見されるわけではありません。そして、これを読んで本の内
jQuery Dropdown Check List HTMLだけでは実現できないドロップダウンチェックリストの作成JavaScript。 複数選択式の選択リストは普通に作成することが出来ますが、チェックボックスを使ったわかりやすいUIの実現は難しいですね。 「jQuery Dropdown Check List」ならjQueryプラグインなので、非常に簡単に実現できます。 $("#s6").dropdownchecklist(); のように、1行で初期化できるところも素晴らしいですね。 一昔前にやっていれば、どうやってやってるんだろうと検討もつかなかったと思いますが、進化したものです。 関連エントリ JavaScriptを使ったULリストをツリー風に表示するサンプル「Simple Tree Menu」
[M] [WIN][IE6/7×][FF1.5○][NN7.1○][OPERA8.5○] [Mac][Safari2.0○][FF1.5○][NN7.1○][OPERA8.5○] 【書式】 [1].addEventListener([2],[3],[4]) [1]……イベントを設定するオブジェクト [2]……イベント(click、mouseoverなど) [3]……呼び出す関数 [4]……イベントのキャプチャの有無(true/false) 【例】 document.getElementById("myBtn1").addEventListener("click",myJump, false); id名myBtn1のボタンにクリックしたらmyJump関数を呼び出すように設定する。 【解説】 要素にイベントを設定します。第一引数にclick、mouseoverなどのイベントを指定し、第二引数に
Opera の getContext("opera-2dgame") について追記しました。 fillText(strokeText) + pattern, + linerGrad, radialGrag について追記しました。 uupaa-excanvas.js ver 0.3 リリース版に基づき表を更新しました。 uupaa-excanvas.js ver 0.31で、drawImage(canvas, ...) をサポートしました。 先ほど Windows XP 上で調べました。Mac や Linux だとちょっと違うかもしれません。 # レンダリングの実例はhttp://uupaa-js-spinoff.googlecode.com/svn/trunk/uupaa-excanvas.js/DEMO.htmで見れます。 凡例 5: 実装されており他のブラウザの描画結果と互換性がある(
仕様書を読んでもわかりにくい、addEventListener()の第3引数useCaptureの意味についてのメモ。 addEventListener()はIEでは未実装なので関係なし。 以下はFireFoxで確認。 useCaptureの意味 通常登録したイベントハンドラ(*1)はイベント伝搬のバブリングフェーズで呼ばれる。このため、DOM Treeの下の方のエレメントからイベントハンドラが順番に呼ばれる。 useCaptureをtrueにしてイベントハンドラを登録すると、キャプチャフェーズでイベントハンドラが呼ばれるようになる。このため、その他のイベントハンドラに先だって呼び出されるようになる。 (*1) 以下のものが含まれる。 DOMエレメントのプロパティに設定したイベントハンドラ(element.onmousedown = handler) HTMLタグに埋め込んだイベントハンド
JavaScriptは悪くない - 0xFF この辺の記事を読みながら改めてモダンJavaScriptについて再考する時期なのかなー、と思い考えてみました。 考えられる要素 Ajax XMLHttpRequest クロスブラウザ DOM Event パフォーマンスチューニング 高速化 ファイルサイズ テスト Firebug IE オブジェクト指向 プロトタイプベース ユーザビリティ JavaScriptオフ HTML+CSS+JavaScript 今風の書き方 オブジェクト 関数 スコープ クロージャ 定番ライブラリ jQuery prototype.js Yahoo UI Library Ext.JS とりあえずは 上記のカテゴリの中で細かい部分についてはエントリにおこしてみたいなー、と考えてます。 突っ込み大歓迎!っていうスタンスで改めてノウハウの蓄積ができたらいいなー、と。 Java
「ウェブリブログ」は 2023年1月31日 をもちましてサービス提供を終了いたしました。 2004年3月のサービス開始より19年近くもの間、沢山の皆さまにご愛用いただきましたことを心よりお礼申し上げます。今後とも、BIGLOBEをご愛顧賜りますよう、よろしくお願い申し上げます。 ※引っ越し先ブログへのリダイレクトサービスは2024年1月31日で終了いたしました。 ※10秒後にBIGLOBEのおすすめページに遷移します
このエントリーの後に問題は解決しbinaryを取得することができました。最後のほうにある「その2」を参照してください。 画像等のファイルのデータをBase64化したDataSchemeでなんとか取得できないかと試してみました。結論からいうと失敗です。ただ、もう少し調査するともしかするとできるようになるかもしれません。しかし、自分の現時点の知識では、これが限界かと思います。もしかすると、問題箇所を誰かが解決してくれるのかもしれないと淡い期待を持って公開します。また、提示するcodeは使い方によってはDoS攻撃と思われてしまうような挙動をします。詳細は後述しますが実行時は注意してください。 自分で開発しているようなサイトの場合、自分でJavaScriptからデータを取得する仕組みを実装すればいいのでここでは考えないことにします。サーバ上の静的なファイルのデータ取得をしたいのは、クロスサイトで実
JSON(http://www.json.org/)データはけっこうよく使うので、何度か話題にしたことがあります(例えば「もう一度、ちゃんとJSON入門」)。でも、JSONには型情報/メタ情報が付けられないのがとても不満で、JSON改なんてもんを考えたこともありました。(後でXIONに改名) JSONデータに対するスキーマ定義の仕様がかたまりつつあることを、ごく最近になって知りました。 http://json-schema.org/ JSON本体はRFC 4627になっていますが、JSONスキーマの標準化のステータスは、あまりハッキリとは分かりません(僕には)。http://groups.google.com/group/json-schema?pli=1 を覗き見した感じでは、現状ワーキングドラフトという位置付けらしいです。 なかなか面白いし役に立ちそうなので紹介します。ただし、僕にとっ
10年ぶりにJavaScriptがバージョンアップする見通しとなりました。JavaScript(正式名称はECMAScript)の標準化団体であるEcma Internationalが4月9日に「Ecma International finalises major revision of ECMAScript 」というリリースを発表しています。ファイナルドラフトとなるドキュメント「final draft ECMA-262 5th edition」も公開されました。 新バージョンのECMAScriptはこれまでECMAScript 3.1と呼ばれていましたが、今後は名称が「ECMAScript 5th Edition」になるとのことです。そしてこれが一般的にはJavaScript 2.0と呼ばれることになるでしょう。 リリースからポイントを抜き出してみます。 The Candidate mi
JavaScript の不思議な面白さ - Yahoo! JAPAN Tech Blog JavaScript の不思議な面白さ - 第二回 - Yahoo! JAPAN Tech Blog JavaScript の不思議な面白さ - 第三回 - Yahoo! JAPAN Tech Blog JavaScript の不思議な面白さ - 第四回 - Yahoo! JAPAN Tech Blog JavaScript の不思議な面白さ - 第五回 - Yahoo! JAPAN Tech Blog JavaScript の不思議な面白さ - 第六回 - Yahoo! JAPAN Tech Blog JavaScript の不思議な面白さ - 最終回 - Yahoo! JAPAN Tech Blog のシリーズがJavaScriptの面白さよりも、暗黒面ばかり伝えてしまっている印象で、連載モノだか
配列操作の比較表: Ruby, Python, JavaScript, Perl, C++ プログラムを書いていると、他のプログラミング言語の記憶とごっちゃになって、「配列の後ろに要素を追加するのは push だっけ、 append だっけ」などと混乱することがあります。特に Ruby, Python, JavaScript はコードの書き方が似ているので、この問題が起きがちです。 そこで、備忘録として、 Ruby, Python, JavaScript, Perl, C++ の配列操作の比較表を作りました。一番慣れている Ruby を基準にしています。間違いなどがあったらご指摘いただけると助かります。他の言語のもあるといいなあ。 Ruby (Array) Python (list) JavaScript (Array) Perl (@) C++ (std::vector)
2009年04月13日12:00 カテゴリTips Ajax - tips - JSONPをブラウザにキャッシュさせない というわけで、添削おじさん登場。 [を] 笑い顔顔文字APIを作りました (なお、なぜか IE と Safari だと一回しか動きません。添削希望!)理由は単純で、IEとSafariはJSONPをキャッシュしてしまうのです。 理由がわかれば、解決法も簡単です。たとえば以下のようにしてURIをUniqueにしちゃえばOK. function WarosuJSON(cb){ this.proxy = 'http://mimitako.net/api/warosuapi.cgi'; this.cb = cb; this.count = 0; this.parse = function(cb){ var script = document.createElement('scri
Hello and welcome to the first part of what will hopefully be an extensive series covering core aspects of the JavaScript programming language and the DOM API. While frameworks such as jQuery, Prototype and MooTools are great ways of suppressing browser bugs and speeding up development, it's important to know and understand the underlying technologies. This series intends to tell you what you need
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く