プログラミングに関するhokuto_viiのブックマーク (58)

  • さあ、Yコンビネータ(不動点演算子)を使おう! - よくわかりません

    前回、おとうさんにもわかるYコンビネータ!(絵解き解説編) - よくわかりませんというエントリで、Yコンビネータ(不動点演算子)と再帰の絵解き解説をしました。 Yコンビネータ自身は、結局のところ再帰を産み出してくれるだけです。関数(正確にはλという単純な文字列変換ルール)だけで出来て、プログラミングに関するいろんな原理の研究を可能にするのが凄い訳です。その辺のさわりを、きしださんが解説されています。しかし、単なる再帰なら、実際のプログラミングではYコンビネータなんて使わなくても出来ます。 じゃあ、Yコンビネータとか不動点とかは、偉い学者さんとかが研究に使えばいいもので、普通のプログラマには何の意味もないモノなのでしょうか? というわけで、今回はポジティブに、Yコンビネータや不動点で出てくる考え方を、理論だけじゃなく、実際のプログラミングに応用する例を見てみましょう。 今回、プログラムの例を

  • matarillo.com: UIパターン

    UIパターン 追記 この記事の一部を加筆・修正したものを「開発者が知っておくべき、6つのUIアーキテクチャ・パターン」として@ITに転載しています。 MVVMを追加した上で、アプリケーションモデルとMVVMをプレゼンテーションモデルのバリエーションとして位置づけました。 MVPの2つのスタイルとして、監視コントローラとパッシブ・ビューを説明しました。 まえがき Martin Fowlerの"GUI Architectures"を訳したので公開しようと思ったのだが、FAQページに「EAA developmentとかDSLなんかは商業出版するんで例外ってことで」と書いてある。面倒だったので翻訳の公開はやめて、「自分の理解を書く」というスタイルにしようと思う。 Fowler氏が説明しているのは 「フォームとコントロール」、「モデルビューコントローラー (MVC)」、「プレゼンテーションモデル」、

    hokuto_vii
    hokuto_vii 2009/02/08
    フォームとコントロール、モデルビューコントローラー(MVC)、プレゼンテーションモデル、アプリケーションモデル、モデルビュープレゼンター(MVP)。
  • https://blog.8-p.info/2009/01/unittest-js

  • SunSpider JavaScript Benchmark はそれぞれ何を測っているのか? - >& STDOUT

    アーカイブ開いてREADME的なもの探しても無いし、Webkitのサイトやその周りにも載って無いしでよくわからない、ので調べてみた。ウェブブラウザに搭載されているJavaScript処理系がどんだけやれんのか叩き出してくれるアレです。 http://www2.webkit.org/perf/sunspider-0.9/sunspider.html 3d-cube 元ネタはここ。 前版よりパフォーマンスが落ちるバグの確認の為のコンテンツだったらしい。 回転する立方体の3Dレンダリング。 3d-morph Apple謹製。元ネタはここ?。メッシュ変換。…というのが何を指すのか飲み込めていません。 3d-raytrace Apple謹製。レイトレーシングとも言われる、光の当たり方を視線から追っていく像を描く手法。アルゴリズムは単純ながら、膨大な計算量が必要とされる為、Benchmarkにはもって

    SunSpider JavaScript Benchmark はそれぞれ何を測っているのか? - >& STDOUT
    hokuto_vii
    hokuto_vii 2008/12/06
    ベンチマーク。
  • Undo,Redoの実装って何十回もやってる気がする - あしあと日記

    undo,redoの実装って何十回もやってる気がする。毎回同じパターンだ。undo,redoが登場するような編集ソフトは大体同じパターンに落とせる。フレームワークも作った。ブログにそういう内容を書きたいが面倒くさい。需要があれば面倒でも書くんだけどなあ http://twitter.com/youpychan/status/994486992 という発言をしたら何人か反応を頂いたので書いてみることにする。 需要があるなら書こう。undo,redoだけじゃなくてグラフィカルな編集ソフト全般の話をいつかまとめたいと思っていたので、ちょいとシリーズで書いてみようかとおもう http://twitter.com/youpychan/status/994636764 書こうと思う。 まずUndo,Redoについて。 Unod,Redoってみなさんどういう風に実装しているでしょうか? 私はコマンドパタ

    Undo,Redoの実装って何十回もやってる気がする - あしあと日記
  • アルゴリズムコンテストの挑み方 - d.y.d.

    17:29 08/09/30 クロスワード 暇つぶしに "Clueless Crossword" という冊子を買ってみて意外とハマっています。 クロスワードパズルなんだけど、単語のヒントの代わりに、 各マスに1~26の数字が振ってあって同じ数字のマスには同じA~Zが入るように埋めるというもの。 「母音っぽくて二連続して語尾にも出てくるのは多分 E だろう、もしかしたら O の可能性はなくもないけど」 みたいに埋めていく。 ちょっと違うけど フラッシュであった。 20:15 08/09/28 だいちのよろい そろそろ日に戻る前に観光するぞ月間、ということにして、ウルル(エアーズロック)に行ってきました。 もっとワイルドな感じかと思ったら、完全にリゾートのリゾートによるリゾートのための地帯になってました。 まあそんなもんか。 日は強風のため登るの禁止とのことだったので、周りから見るだけ。

    hokuto_vii
    hokuto_vii 2008/11/09
    探索、動的計画法、グラフ理論。
  • SML# - SML#の理論的基礎

    SML#の種々の特徴は,ML系言語のための型理論の伝統の上に,以下を含む我々の独自の基礎研究成果を基に実現されている. レコード多相性の理論 ランク1多相性の理論 データベース演算の多相型理論 JAVAとの相互運用のための型理論 高階の関数の相互運用に関する型理論 自然なデータ表現のための型理論 論理学に基づくコンパイル理論

    hokuto_vii
    hokuto_vii 2008/11/09
    型推論、多相性、値多相。
  • Burning Chrome: XTF: When XBL just won't cut it

    XTF: When XBL just won't cut it A few days ago, I was trying to load XBL bindings onto elements that the user doesn't see. By this, I mean the elements were loaded via a DOMParser. Unfortunately, that doesn't work. Since I've no desire to spend time trying to make it work in XBL, I reluctantly turned to another Mozilla technology, the eXtensible Tag Framework (XTF). Why reluctantly? Well, XTF is s

    hokuto_vii
    hokuto_vii 2007/07/03
    XTFチュートリアル。
  • http://www.tom.sfc.keio.ac.jp/~sakai/d/?date=20070414

    hokuto_vii
    hokuto_vii 2007/07/03
    スレッドの実装、継続渡し、トランポリン。evalの第2引数。
  • 404 Blog Not Found:perl - to goto or not to goto, that's the continuation

    2007年04月18日06:45 カテゴリLightweight Languages perl - to goto or not to goto, that's the continuation Perlでもgotoを使えば、当の継続(continuation)が可能であることを示す。 継続ってなんのことだかさっぱりわからない一は、以下にあらかじめ目をとおしておいていただきたい。 なんでも継続 なんでも継続、Perl で。 : torus solutions! 404 Blog Not Found:継続は力なり Tociyuki::Diary - Perl 5.8 で似非継続 Perl 5のgotoには、3種類ある。 goto LABEL こちらはCなどで見られるgotoと等価である。 goto END; print "Hello\n"; END: print "Goobye\n"; G

    404 Blog Not Found:perl - to goto or not to goto, that's the continuation
    hokuto_vii
    hokuto_vii 2007/07/03
    継続、goto &CODE。
  • SCRAPBLOG : ユーザのアイドル時間を測定する nsIIdleService

    Firefox 3 (Minefield) 以降限定だが、 nsIIdleService を使ってユーザのアイドル時間を測定したり、ユーザが一定時間何も操作しなかったことを検知したり、さらにその状態から操作を開始したことを検知することができる。言わずもがな、メッセンジャーのようなアプリケーションでユーザが退席中かオンラインかを見分ける用途などに最適だ。 まずXPCOMサービスを取得する。 gIdleService = Components.classes["@mozilla.org/widget/idleservice;1"] .getService(Components.interfaces.nsIIdleService); 現在のアイドル時間を取得するなら、 idleTime プロパティを調べるだけ。単位はミリ秒である。 setInterval(function() { documen

    hokuto_vii
    hokuto_vii 2007/07/03
    一定時間差操作していないことの検知。
  • Makefile は簡潔に書きましょう - pyopyopyo - Linuxとかプログラミングの覚え書き -

    仕組みが判ってしまえば Makefile は簡潔に書けます.$(CC) とか $@ とか $< なんて変数は使ったら負けです. 基(その1) ソースコード hoge.c から 実行形式のバイナリ hoge を生成するMakefileは,以下のように書きましょう all: hogeこれだけです.これで $ make all とすると hoge が生成されます 重要な点は,間違っても all: hoge hoge: hoge.c $(CC) hoge.c -o hogeのようなMakefileを書かないことです.このようなMakefileでは #!/bin/sh CC=gcc $CC hoge.c -o hoge というようなシェルスクリプトと同程度の使い勝手しかありません. 基(その2) ここで例えば-O3 を付けてコンパイルしたい場合や,-lm を付けてリンクしたい場合は以下のようにし

    Makefile は簡潔に書きましょう - pyopyopyo - Linuxとかプログラミングの覚え書き -
    hokuto_vii
    hokuto_vii 2007/07/03
    make -pで自動生成ルールを確認。
  • Home | byteMyCode

    To promote our SearchSquire software, we developed and executed CPM pop up ad campaigns across a number of networks. New Media Properties is an Internet consulting and business development company. In addition to operating our own websites, we provide consulting services to our clients and enable them to grow their market share, to increase their revenue, and to develop a stronger strategic positi

    hokuto_vii
    hokuto_vii 2007/07/03
    ソースコード共有、スニペット、snippets。
  • Scheme:なぜSchemeにはreturnが無いのか

    あるいは、なぜcall/ccがプリミティブなのか、に関する一考察 (Shiro: 「なんでも継続」に入れようかと思ってたネタだけど、 あっちがいつ書けるかわからんので、忘れないようにこっちにまとめとく) (話の流れがあるので、誤りの修正以外のコメントは途中ではなく、一番下にお願いします) returnはどこだ? Aliceは、リストlisと述語手続きpredを取り、lisの各要素に順にpredを適用して、 predが真の値を返したら直ちにその要素を返すような関数findを 書くことを考えた。 (findは便利なので、実はsrfi-1に定義されてるけど、 Aliceはまあ自分の勉強のために書いてみることにしたと思いねえ)。 AliceはPerlなら良く知っている。Perlならこんな感じで書けるはず。 sub find { ($pred, $lis) = @_; foreach $elt (@

    hokuto_vii
    hokuto_vii 2007/07/03
    継続、call/cc。
  • JavaScript でソートアルゴリズムを可視化 - bkブログ

    JavaScript でソートアルゴリズムを可視化 JavaScript でソートアルゴリズムを可視化するプログラムを書いてみました。元ネタは Jon Bentley による ソートアルゴリズムを可視化する Java アプレットです。 アルゴリズム 要素数 動作確認は Firefox 2, IE 7, Opera 9 で行いました。要素数は最大で200まで選べますが、かなり重くなるので遅いマシンで実行すると危険です。 English version is also available. ソースコード: sort-animation.js 解説 X軸が配列の添え字、Y軸が配列の要素の値を示しています。最初に要素がランダムに並んでいる配列 (値に重複なし) を作って、それを各種のソートアルゴリズムでソートする様子をアニメーションで表示します。 ただし、要素のあらゆる変更に対して毎回表示を更新し

    hokuto_vii
    hokuto_vii 2007/07/03
    各種ソートの実行の様子をアニメーション表示。
  • Scheme:使いたい人のための継続入門

    使いたい人のための継続入門継続渡し形式call/ccは普通の関数call-with系関数call-with-procedurecall-with-continuation-procedurecall-with-current-continuation評価順序と継続call/ccパズルお手元マルチスレッド部分継続reset/pcとcall/pc環境破壊と部分継続部分継続の使用法PRINT-AND-NEXT-REPL議論質問お手元マルチスレッドのサンプルプログラムについて 使いたい人のための継続入門 とりあえず殴り書き。 くどかったり冗長な文章になってたり、重複してたり、間違ってたり、 おおいなる勘違いをしてたり、恥をカいてたりするかもしれないけどご愛敬。 藁をもつかみたい気持ちで継続を使えるようになりたい人は読んでみてください。 ただし所詮は藁です。(w 継続渡し形式 例によって階乗fa

    hokuto_vii
    hokuto_vii 2007/07/03
    継続渡し、CPS、call/cc。
  • トランポリン版の継続渡し leaf_count_cps_t - Tociyuki::Diary

    11月16日に goto を使った強引なやりかたで、末尾再帰のループ化と継続渡しの実行をやってみたところ、コメント欄で shiro さんにトランポリンを紹介してもらいました。 ⇒ http://d.hatena.ne.jp/tociyuki/20061116/1163674424#c1163895106 shiro 『なお、ベース言語が末尾呼出し最適化を保証してくれない場合によく使う手としてトランポリンがあります。各関数を、結果を返すのではなく、その関数の継続手続きを返すように書いておきます。そして、(途中略)ひたすら返って来た継続を呼び出しつづけるドライバを書いて駆動します。 これだとベース言語のスタックを消費しません。』 随分と、あれから経った気がしますが、突然、これをやってみたくなったので試してみました。 まずは、関数コールをおこなわせるコードリファレンスをドライバに渡して、こんな風

    トランポリン版の継続渡し leaf_count_cps_t - Tociyuki::Diary
  • はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知

    はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28

    はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知
    hokuto_vii
    hokuto_vii 2007/02/04
    HTTPリクエストメソッドの修正。オブザーバでhttp-on-modify-requestトピックを受け取る。
  • 253125 - cleanup gratuitous use of NS_ERROR_FACTORY_REGISTER_AGAIN

    Shared components used by Firefox and other Mozilla software, including handling of Web content; Gecko, HTML, CSS, layout, DOM, scripts, images, networking, etc. Issues with web page layout probably go here, while Firefox user interface issues belong in the Firefox product. (More info)

    hokuto_vii
    hokuto_vii 2007/02/04
    必ずしもXPCOMコンポーネント登録時にNS_ERROR_FACTORY_REGISTER_AGAINを投げる必要はない。
  • IBM Developer

    IBM Developer is your one-stop location for getting hands-on training and learning in-demand skills on relevant technologies such as generative AI, data science, AI, and open source.

    IBM Developer
    hokuto_vii
    hokuto_vii 2007/02/04
    遅延評価、Schemeで。