タグ

2008年1月20日のブックマーク (17件)

  • DO++ : WEB DB PRESSに記事書きました

    今月号のWEB+DB PRESS(Vol. 42)でアルゴリズム・データ構造についての記事を書きました。 [出版社ページ] 結構専門的なことも書いていいとのことだったので、私が好きな範囲で自由に書かせてもらいました。 書いたのは ・連想配列(の使い方じゃなく実装) ・Trie ・Double Array ・Tx/Bep ・簡単な圧縮 ・連長配列 ・Front Coding ・可変長バイト符号 ・PFOR符号(Monet DBで使われている符号法で日で紹介するのは初?現時点で最速) ・簡潔データ構造 ・Rank/Select辞書 ・LOUDS ・Suffix Arrays ・BW変換とその応用 ページ数が限られていたので、できるだけ簡単な紹介程度で雰囲気を味わってもらう感じぐらいです。 (いくつかは動くコードもついてます) 今月号のWEB+DBは気合入っていて、他にも ニコニコ動画特集、S

    DO++ : WEB DB PRESSに記事書きました
  • [ActionScript 3.0] Fisher-Yatesアルゴリズムの可視化│miscellaneous

    要素をランダムに並べ替えるFisher-Yatesというアルゴリズムを可視化してみた。 下のウィンドウをマウスクリックすると並び替えの様子がアニメーションされます。 後ろから走査していって、自分より前のどれかと交換していく訳ですね。 計算量はO(n)です。 package{ import flash.display.*; import flash.events.*; import flash.geom.*; import flash.utils.*; import caurina.transitions.Tweener; [SWF(width="400", height="200",backgroundColor="0xffffff")] public class FisherYates2 extends Sprite{ private var balls:Array = []; priv

  • AM Denmark A/S

    agw
    agw 2008/01/20
  • MacBook Airの“薄さ”は本物だった!?

    スティーブ・ジョブズCEOの基調講演で発表された、新型Macの「MacBook Air」。詳細な情報はこちら(「MacBook Air」から「Time Capsule」まで、4つのテーマで語られたスティーブ・ジョブズ氏基調講演)や、こちら(アップル、厚さ19.4ミリの“0スピンドル”モバイルノート「MacBook Air」を発表)の記事を参照してもらうとして、まずはアップルストア銀座で報道関係者向けに公開された実機のインプレッションをお届けしよう。 まず手にとって驚かされるのは、その丸みを帯びたボディと滑らかな手触りだ。写真にもあるようにボディ全体は丸みを帯びているが、酸化皮膜処理されたアルミニウムは意外と手にしっくりとくるもので、フィット感はよい。そしてボディ前面が4ミリ、最厚部でも19.4ミリという圧倒的なスリムさに目を奪われる。 ラッチレスの液晶ディスプレイは指1で開閉でき、その際

    MacBook Airの“薄さ”は本物だった!?
    agw
    agw 2008/01/20
  • CPS(継続渡し方式)変換をJavaScriptで説明してみるべ、ナーニ、たいしたことねーべよ - 檜山正幸のキマイラ飼育記 (はてなBlog)

    久々にThe n-Category Cafeを見たら、Mike Stayによる"The Continuation Passing Transform and the Yoneda Embedding"なんて記事がありました。 米田埋め込みは圏論ではお馴染み。継続渡しへの変換はコンピュータ・プログラミングではお馴染み。 この2つは、実は同じものなんだよ。なんで、誰もこのことを言わないんだろうね? The Yoneda embedding is familiar in category theory. The continuation passing transform is familiar in computer programming. They're the same thing! Why doesn't anyone ever say so? Mike Stayのこの記事、面白いのだ

    CPS(継続渡し方式)変換をJavaScriptで説明してみるべ、ナーニ、たいしたことねーべよ - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • みにくいアヒルの子 -- コンピューティング・サイエンスとJavaScript - 檜山正幸のキマイラ飼育記 (はてなBlog)

    擬似コード記述のような、説明に使える“動く”プログラミング言語を探していて、一時はGroovyを候補に考えていました。が、最近はJavaScriptでいいやと思ってます。実際、ゲーデルの不完全性定理の説明にはJavaScriptを使ってるし。 構文のフレーバは伝統的な手続き型なので、説明なしに誰でもだいたい理解できます。 print("Hello world.");これをみて理解に苦しむ人はいないでしょう(もっとも、ブラウザで実行すると理解に苦しむことになるが(苦笑))。説明が必要でも、JavaScripの構文解説ならいくらでもそこらにありますし。 function式があるので、生のラムダ式の代わりにJavaScriptが使えます(なんならこれを参照)。メソッドも関数でラップできますから、そうしたいなら、純関数的に書くこともできます。 functio apply(func, args) {

    みにくいアヒルの子 -- コンピューティング・サイエンスとJavaScript - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • カリーをもっと -- ラムダで考えるカリー化 - 檜山正幸のキマイラ飼育記 (はてなBlog)

    「もっとかしこいカリー化」で紹介した、nanto_viさん、kilreyさん、KENZさんのコードはいずれも、ラムダ式によるカリー化の表現と正しく対応しています。最初からラムダ計算で考えればよかった。「なんでそんなことに気が付かないんだ?」と言われそうですが、それはですね; 僕みたいに後知恵で理屈をこねるヘタレと、直観で判断しても正しい結果を得るエキスパートの違いですがね。テキスト処理の方法を思いついたら、そのまま無反省にやってしまったよ、僕は。<<実は脊髄野郎だろ で、以下、後知恵でヘタレ理屈こねます、コネコネェ。 内容: JavaScriptからfunctional風疑似言語へ 多変数関数のラムダ計算: 構文の定義 あらためてカリー化の定義 ラムダ計算規則と計算例 curry関数がカリー化になっていること 補足または蛇足 自分的には、式のモーフィングがニャンカ面白い。 ●JavaScr

    カリーをもっと -- ラムダで考えるカリー化 - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • JavaScript で引数束縛: Days on the Moon

    引数束縛 (カリー化) の話。まずは「JavaScriptでカリー化」(檜山正幸のキマイラ飼育記)。タイトルを見てどこかで聞いたような話だなと思ったら「関数の変形」(Effecttive JavaScript - Dynamic Scripting) だった。だが、前者は文字列に戻してから評価というのが力技っぽくて個人的に好きでないし、後者は汎用的過ぎていささかわかりにくい。そこで今回は先頭の引数から束縛していくというのに的を絞ってみたいと思う。 まず第 1 引数のみを束縛する場合。Function#apply を使えば引数を配列として渡せるので、束縛された値と後から渡された引数とを連結してやればいいのではないか。 function curry(func) { return function (first) { return function () { var args = Array.p

  • ■ - うっくつさん本を読む。

    id:m-hiyamaさんへ、(メソッドではない)関数のCurry化ならテキスト処理無しで出来ますよ、と。 function curry(func){ return function(x){ return function(){ var args = new Array(arguments.length+1); args[0] = x; for(var i=1;i<args.length;i++){ args[i] = arguments[i-1]; } return func.apply(null,args); }; }; } function sum(x,y){ return x+y; } alert(curry(sum)(10)(15)); alert(curry(sum)(10)(15,20));追記) 任意個のcurry化を綺麗に書くとこうなる。 function curry(f

    ■ - うっくつさん本を読む。
    agw
    agw 2008/01/20
    JavaScriptでのCurry化。
  • もっとかしこいカリー化 - 檜山正幸のキマイラ飼育記 (はてなBlog)

    来たよ、来ましたよー。 僕がJavaScriptやブラウザの話を書くと、誤解・誤認の指摘や役に立つ情報の提供が、コメントやトラックバックで来ます。 (http://d.hatena.ne.jp/m-hiyama/20051210/1134187007)このジンクス(?)は正しかった。 うーん、テキストつぎはぎは、やっぱダサイな -- いいんか? これで (http://d.hatena.ne.jp/m-hiyama/20051213/1134446855)と、カリー化するのに、関数ソーステキストをいじくり回すってのは、いくら何でも汚すぎるとは思っていたのですが、、、 まずは: http://nanto.asablo.jp/blog/2005/12/13/176033 nanto_viさん、これはカッコいい(クール!)です。ちなみに、nanto_viさんは鋭く役に立つコメントをくださる方です

    もっとかしこいカリー化 - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • JavaScriptでカリー化 - 檜山正幸のキマイラ飼育記 (はてなBlog)

    JavaScriptでカリー化。ありがち、つうか実際にあるでしょうね。小ネタと思ってやりはじめたら、意外と混乱した。一種のメタプログラミングのはずだが、実際にはテキスト加工処理。 内容: カリー化ってなに? カリー化を行う関数を作る:準備 カリー化を行う関数を作る:テキストのパッチワーク カリー化を行う関数を作る:組み立て ●カリー化ってなに? 2引数の関数f(x, y)に対して、「gがfのカリー化」だとは、f(x, y) = g(x)(y) が常に成立すること -- ゴチャゴチャ説明するより実例実例: functio sum(x, y) { return x + y; } このsumのカリー化の例: function curried_sum(x) { return function (y) {return sum(x, y);} } curreid_sum関数は1引数で、戻り値として関数

    JavaScriptでカリー化 - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • MySQLがSUNに10億ドルで買収されました

    MySQLといえば、mixiや楽天Amazonなどなどの企業がネットサービスを提供するために使っているオープンソースのデータベースですが、それが買収されたとのこと。何の冗談かと思ったら当のようです。10億ドルというと、日円で約1096億円。買収したのはJavaで有名なサン・マイクロシステムズ。 詳細は以下から。 Sun to Acquire MySQL for $1 Billion - washingtonpost.com 既にSunやMySQLのブログでも報告されています。 Sun to aquire MYSQL : Solar Flare Jonathan Schwartz's Blog: Helping Dolphins Fly Sun acquires MySQL これによって、よりエンタープライズ分野におけるMySQLのシェアを上昇させるつもりらしい。また、これまでは商用デ

    MySQLがSUNに10億ドルで買収されました
    agw
    agw 2008/01/20
  • ウノウラボ Unoh Labs: 画像の遅延読み込み

    yamaokaです。 webページの表示を高速化する手法にはいろいろありますが、 その一つとして遅延読み込みという手法があります。 初期状態で表示する必要のない要素については読み込まず、 必要になったタイミングで読み込み、表示するようにする手法です。 ページの読み込みにかかる時間の大半を 画像の読み込みが占めている場合が多いので、 画像の読み込みを遅延させるという手法が多く取られます。 検討するべきケース では、画像の遅延読み込みはどのような場合に検討されるべきでしょうか。 最初から表示されている必要がない画像が存在し、その画像のサイズが大きかったり、 そうした画像の数が多い場合は検討してみる価値があると思います。 例えば、次のようなケースです。 初期状態では表示されないブロックに属する画像が存在し、 JavaScriptで表示するかしないかを切り替えているような場合 ページのずーっと下の

  • JSON入門:データ交換のもう一つのアプローチ - builder by ZDNet Japan

    XMLは、データ交換のための媒体として開発され導入された技術である。しかし、すべての開発者がXMLを大歓迎で受け入れたわけではない。中には、XMLの代替を実際に開発することを選択した開発者もいるのである。JSON(http://www.json.org/)(JavaScript Object Notation)も、そのようにして生まれた代替物の一つだ。稿では、JSONの設計と応用について詳しく見ていく。 JSONとは何か JSONは、JavaScriptのオブジェクト記法を用いて書式を指定する単純な方法だ。「データ指向」と呼ばれて、他の技術の設計で多用されており有名な「オブジェクト指向」と比較されることもある。JSONではプログラムの構成要素をそのまま用いるため、人間にもマシンにも理解可能な形式でデータを表現できるという特徴がある。 JSONはテキストベースのデータをやりとりするために設

  • くたばれSpamhaus - 後悔^H^H公開日記:別館

    昨年末から,会社から送ったメールが,Spamhaus を使っているメールサーバから拒否されるように. 会社のネットワークは,悪名高き OCN marunouchi. まあ,巻き添えったのかなぁ,1 IPの割当だから/24でもらっちゃいそうだしな.と,最初は穏やかな気持ちだったのですよ. でも,PBL見て呆れました. Ref: PBL151878 222.147.0.0/16 is listed on the Policy Block List (PBL) 16のネットマスクって…なんて荒っぽい遮断をしやがるんだ. …というわけで,迷惑メール並みに迷惑なことをしやがるSpamhausは,もう要らないと強く主張することにしました. (相変わらずSPAMは減らないしね) ちなみに,ネット上には「巻き込まれたときにはメールしろ」というブログエントリがたくさんありますが,Webとメールを使った解

    くたばれSpamhaus - 後悔^H^H公開日記:別館
    agw
    agw 2008/01/20
  • Macworld Expo 2008 観覧記 その1 - MacBook Air 触ってきた - アメリカでがんばりましょう

    Macworld Expo に今年も行ってきた。 まずは、MacBook Air の話をまとめてみようと思う。 写真はクリックすると大きな画像がポップアップするので気になったら見て欲しい。 Apple ブースに行ってみると、通常はちょっとした壁が置かれているところにでかいテーブルが置かれ、そのまわりにものすごい人だかりが。 まさに人で壁を作ってしまった形だ。 そのテーブルの上にはもちろん MacBook Air。 この薄さにはやはり目がいってしまう。 持ってみるとムチャクチャ軽いというより、意外にがっちり、しっかりしているという印象。 ディスプレイはとても明るく、 斜めからも十分見られる。 あまり気付かなかったがテカテカ液晶だったと思う。 キーボードはこれまでとあまり変わらず、普通な打ちごこち。 薄いからショボイということはなかった。 MacBook Air はパームレスト部分が熱くなるこ

    agw
    agw 2008/01/20
  • Macworld Expo 2008 観覧記 その2 – いつもと違った Apple ブース - アメリカでがんばりましょう

    agw
    agw 2008/01/20