タグ

ブックマーク / m-hiyama.hatenablog.com (11)

  • 唐突に MongoDB の話 - 檜山正幸のキマイラ飼育記 (はてなBlog)

    「CatyのJSONストレージとクエリ言語」で触れたように、MongoDBを触ったり調べたりしています。Kuwataさんも何やら書いてますね。 MongoDBの入門的な解説もいずれ書いてみたい気もしますが、今日はそういうのはすっ飛ばした話をします。タイトルの「唐突に」とは、MongoDBの紹介も説明もないよ、ってことです。あしからず。 データベースと名前空間 MongoDBは、パフォーマンスにこだわっていて、機能性、使い勝手、整合性などを犠牲にしています。ここまで犠牲を払って、もし遅かったらゴミですね。もちろん、ゴミじゃないだろうと僕は期待してます。 データベースの実体は、mydb.0, mydb.ns のような2つのファイルです。名前からして、mydb.0にコンテンツ、mydb.nsに名前空間(NSと略記)の情報でしょう。NSってのがまた珍妙な概念ですが、概念的にはIDの一意性のスコープ

    唐突に MongoDB の話 - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • パッチの作り方と当て方はこうするもんね - 檜山正幸のキマイラ飼育記 (はてなBlog)

    パッチの作り方/当て方を毎回忘れる。だからメモしておこう、っと。単にコマンドのオプションだけでなくて、ファイル/ディレクトリ名とかカレントディレクトリをどこにするかとかで悩むから、これも約束事として決めてしまえ! 例 foo.txt 変更前: first line second linefoo.txt 変更後: first line 2nd line third line hoge/ 変更前: hoge/ +--- foo.txt hoge/ 変更後: hoge/ +--- foo.txt (変更) +--- bar.txt (新規) 単一ファイルのパッチ オリジナルファイルには接尾辞".orig"を付けておく。 パッチを作るときも当てるときも、そのファイルがあるディレクトリで作業。 パッチファイル名は、当該ファイル名.日付.diff。 パッチ作成: > diff -u foo.txt.o

    パッチの作り方と当て方はこうするもんね - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • 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)
  • はじめての圏論 その第1歩:しりとりの圏 - 檜山正幸のキマイラ飼育記

    全体目次: 第1歩:しりとりの圏 (このエントリー) 第2歩:行列の圏 第3歩:極端な圏達 第4歩:部分圏 第5歩:変換キューの圏 第6歩:有限変換キューと半圏 第7歩:アミダの圏 第8歩:順序集合の埋め込み表現 第9歩:基に戻って、圏論感覚を養うハナシとか 付録/番外など: 中間付録A:絵を描いてみた 番外:同期/非同期の結合 中間付録B:アミダとブレイド 番外:米田の補題に向けてのオシャベリ 一部のプログラミング言語の背景として、圏論(カテゴリー論)が使われたりするせいか、以前に比べれば多少は圏論に興味を持つ人が増えたような気がしなくもないような。でも、安直な入門的文書はあまり見かけないですね。もちろん、シッカリした教科書や論説はあるんですが、どうもシッカリし過ぎているような。例えば、圏の例として「コンパクト・ハウスドルフ空間と連続写像の圏」とか言われてもねぇ(この例はいい例なんです

    はじめての圏論 その第1歩:しりとりの圏 - 檜山正幸のキマイラ飼育記
  • 圏論的指数の周辺:ラムダ計算、デカルト閉圏、ノイマン型コンピュータ - 檜山正幸のキマイラ飼育記 (はてなBlog)

    圏論勉強会は、コーヒーがなんと160円で飲めるベローチェで実施されました(参考→http://www.sampou.org/cgi-bin/haskell.cgi?CategoryTheory%3a%b7%f7%cf%c0%ca%d9%b6%af%b2%f1&l=jp、→http://d.hatena.ne.jp/bonotake/20070812/1186947754)。 僕が参加していた時間(1時間ほど)内にできた唯一の問題(2.3.2 Exercise)について述べてみます。問題自体は簡単なので、周辺事情とかも入れて、雰囲気やココロが伝わるように書くつもり。で、書いてみたら長くなっちゃったよ。 内容: ベータ変換とイータ変換 ラムダ計算とデカルト閉圏 指数をコンピュータの言葉で語れば インタプリタとコンパイラを分類する モジュールの実行環境 ノイマン/ゲーデルの箱庭風景 Exerci

    圏論的指数の周辺:ラムダ計算、デカルト閉圏、ノイマン型コンピュータ - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • 僕もErlangを試してみたよ -- 軽量プロセスを中心に - 檜山正幸のキマイラ飼育記 (はてなBlog)

    えっ、Erlang(アーラン)を紹介するのが流行なの? フーン、じゃ僕もやってみよう。 というわけで、ちょっと試してみたので、感想+解説を書きます。あまり他で触れられてないようなネタを選ぶつもり。 内容: 予備知識への参照 構文はPrologじゃん ランタイム・システムとEシェル で、Erlangって何がいいのよ? 繰り返しとプロセス メッセージング=プロセス間通信 最後の例題:greetingプロセス もう一度、Erlangって何がいいのか? ●予備知識への参照 HelloWorldを書くまでの案内は: 「これから15分でErlangを始めるための資料」(http://blog.overlasting.net/2007-05-09-1.html) Erlangの特徴は、次のスライドによくまとまってます。 "Concurrent Functional Programming with Er

    僕もErlangを試してみたよ -- 軽量プロセスを中心に - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • 檜山正幸のキマイラ飼育記 - 圏論やモナドが、どうして文書処理やXMLと関係するのですか?

    …という類<たぐい>の質問に答えるのはちょっと面倒なんですけど、とりあえず1つだけ具体例を挙げておきましょう。テンプレート処理が、もろにモナドになっている、ってハナシ。今回はテキスト処理について説明。次回(いつになるかまったく不明)はXML処理の予定。 テキスト処理だけでも長ーい説明(最長記録かも)なのだけど、分割すると“勢い”がなくなるから一挙掲載。読むときはユックリ・ジックリ読んでくださいね。プログラミング課題も、実際にコーディングしないまでも、「こうやればいいな」という方針くらいは考えてください。 ※印刷のときはサイドバーが消えます。 内容: ネストしたテキスト テンプレート処理 ブロック、文字列、名前 フラット・テキストとテンプレート・テキスト 多段階のテンプレート処理 蛇足 素材を整理しよう モナドに向かって突っ走れ!! バッチリ、モナドだぜぇ 残りは脱兎のごとく 最後に言ってお

    檜山正幸のキマイラ飼育記 - 圏論やモナドが、どうして文書処理やXMLと関係するのですか?
  • 檜山正幸のキマイラ飼育記 - JavaScriptで学ぶ・プログラマのためのラムダ計算

    JavaScriptによるテンプレート・モナド、すっげー簡単!」にて: 紙と鉛筆でラムダ計算を実行できることは必要だな、やっぱり。 なんて強調したので、ラムダ計算の入門、いってみよう。 [追記]練習問題集を追加しました。説明を読みながら、あるいは読んだ後で是非やってみてください。→「JavaScriptで学ぶ・プログラマのためのラムダ計算 問題集」[/追記] ※印刷のときはサイドバーが消えます。 内容: JavaScriptの関数リテラル ラムダ式ってなんだ ラムダ計算の体系と適用操作 ラムダ式の例をいくつか β変換 -- ラムダ計算のキモ! β変換を何度か実行してみる 中間まとめ、まだ続きがあるよ JavaScriptの関数リテラル 最初に、JavaScriptに関する知識を確認しておきましょう。なお、JavaScriptの対話的実行環境については「もっともお手軽な対話的JavaScr

    檜山正幸のキマイラ飼育記 - JavaScriptで学ぶ・プログラマのためのラムダ計算
  • プログラマのための述語論理 - 檜山正幸のキマイラ飼育記 (はてなBlog)

    たまにやっている「プログラマのための××○○」モノでがんす。これは一回読み切り。 表題どおり、述語論理の入り口を説明する目的があります。それと、ラムダ式もクロージャも高階の型/関数もないようなプログラミング言語(具体例にはJavaを使いますが)で、述語論理のような形式体系をどの程度表現できるかを試してみるのが、もうひとつの目的。それで、「やっぱりJavaみたいな言語はダメだ」と思うか、「けっこう、なんとかなるもんだ」と思うか、… さー、どちらでしょう。 [追記]変なJavaのコードでワケワカになってしまうときは、「述語論理はJavaScripを使うべきだった」のJavaScriptコードを参照してください(面倒で、すみません)。[/追記] ※長いよ。印刷の時はサイドバー消えます。 内容: 最初に命題論理を一瞥<いちべつ> 述語とは 述語の論理計算 これが述語論理のキモ:限量子 限量子のプロ

    プログラマのための述語論理 - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • 檜山正幸のキマイラ飼育記 - 「プログラマの常識」ってなによ

    僕は、「プログラマのための***」という続き物をボチボチと(きわめてボチボチと)書いていますが、タイトルに「常識的な知識は仮定するよ」って意味を込めています。んじゃ、「プログラマの常識」って、それなによ? って、実はハッキリしない。 別な事情もあって、「プログラマの常識」をハッキリさせたほうがいいな、と感じたりしてます。客観的な基準なんて求めないのだけど、「プログラマのための***」で暗黙に仮定している常識、それを少し明白にしたいのです、個人的にね。 思い付き順にバババッと並べるけど、次のようなことを知っていて欲しい: コードもデータも(それが所詮ビットコンビネーションだという意味で)一様なこと。 メモリセルには、そのコンテンツ(中身)とアドレスがあること。 コンテンツもアドレスも、やっぱりビットコンビネーションとしては一様であること。 コンピュータの実行は、順次実行以外に、無条件または条

    檜山正幸のキマイラ飼育記 - 「プログラマの常識」ってなによ
    takkan_m
    takkan_m 2006/01/31
    自分は学校でならったが、普通は知らないか
  • 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)
  • 1