2009-01-01から1年間の記事一覧
第十六回「層・圏・トポス 現代的集合像を求めて」勉強会に行ってきました。今日は自分に用事がある人*1と体調崩していた人が何人か居たので、予定を変更して16時で終了。前層から層を誘導する方法をやりました。初めから両立するものだけを集めて同値関係入…
Coroでスレッドプールを使うにはasync_poolを使えばいいはずなのですが、何も考えずに使うとうまくいかない場合があります。 最初にまとめ 長いのでまずまとめときます。まとめると単純な話で、「async_poolを使う時には、同時にたくさんのスレッドを利用し…
以前に、 なお、(2)でフロントエンドの処理を書く時は(0)のバックエンドとは逆に、AnyEventは直接使わない方が無難だと思います。理由は、AnyEventのイベントループからはCoroの層の関数が使えないからです。Coro::AnyEventでフロントエンドをコールバックを…
完全に素人の感想ですが・・・C++をやってみたいと思わせてくれる素晴らしい1日でした。特に、最初のid:faith_and_braveさんのBoostライブラリ紹介は後何度か聞きたいくらいよかったです(素人なんで)。CPANでも似たようなセッションやったら参考になりそう。…
今日はBoost C++ Librariesを遊び倒す会(ATND)に参加しています。ustreamもあるそうです。C++は新卒の頃に数ヶ月触ったキリで、先月勉強再開し始めたばかりなので、正直心配です(ぉ。Hello Worldだけは今朝実行しました!
昨日、コンボで参加してきました。層圏トポスは層の復習。位相がわからないときつい内容ですので、数学の素養がないと参加は厳しそうです。内容はとても面白いので、情報系に限らず学部レベルの数学を復習したい社会人や*1、学部生が参加するといいかもしれ…
社内で Shibuya.pm*1でmiyagawaさんのTatsumakiの話を聞く上での予備知識のつもりな勉強会をするので、利用するスライドだけ貼っておきます。AnyEvent and PlackView more documents from hiratara. *1:自分は行けなくなりましたが・・・orz
参加してきました。時間の都合でスライドは途中まで。まあ、そんなに面白い発表ではなかったのでいいかとw 一応、今朝の修正分も入れた最新版に差し替えておきました。内容は今までの復習に近かったのですが、id:m-hiyamaさんとckuwataさんのカロウビ展開圏…
2009-11-21 の 層圏トポス寄せ鍋用のスライドです。Math::Category は自分の勉強用に実装した、 Perlで主に射の概念を抽象的に扱うためのモジュールです。現在、関手、自然変換、モナドの概念に対応してます。極限や随伴とかは実装してません。 Math::Catego…
clone して filter-branch を使うと、サブディレクトリを別のリポジトリにできます。例えば、/tmp/hoge にあるリポジトリに hoge と subdir/foo と言うファイルがあって、ログが以下とすると、 % git log -p --pretty=oneline ac27f0a1f18108cd81be52634b072…
それってHamakiなんですが、試しに作ってみたので一応。ただし、Tatsumakiは、 This is considered as alpha quality software. Most of the stuff are undocumented since it's considered unstable and will likely to change. You should sometimes look …
第一回層圏トポス寄せ鍋(ATND)が行われるそうです。恐らく、圏論を勉強して半年くらいの初心者達が、ゆるく圏論について語り合う場になるんじゃないかと思います*1。圏の定義はとても簡単なのですが、抽象度の高さのために雲をつかんでいるような感覚に捕わ…
最後に出した例ですが、 module Main where main :: IO () main = getLine >>= putStrLn . reverse モナドで悟りをひらきたいのなら - 図でわかる(?)モナド さきほどのエントリの図が全部わかれば、以下のような図も書けますね。reverseをfmapで持ち上げて橋…
圏論の最大の武器はダイアグラムなので、モナドで悟りをひらきたいのならダイアグラムを使えばいいんじゃないでしょうか。 ダイアグラムの書き方 例えば、「 f :: a -> b 」とか「length :: [a] -> Int」は以下のように書きます。型を点で、関数を矢印で書き…
やっぱりパスタの会と言う名のcaty説明会に出席してきました。主催のid:m-hiyamaさんとckuwataさんはお疲れ様でした!catyスクリプトがライトさを目指しているのとは裏腹に、ガチガチの圏論の理論背景を持っているところがさすがはid:m-hiyamaさんと言った感…
PSGI Specificationが1.03に更新されています。新しく psgi.streaming が追加されました (Tatsumakiでも使ってる)。 最初にとても大事な注意 このエントリはPSGI 1.03の仕様について勉強したことを書いてます。PSGIの仕様はまだ流動的なので、かならず最新の…
Tatsumakiを触ってみたいなあと思ったらなんかPSGI/Plackの迷路に入ってしまい、つぶやいてたらid:miyagawaさんが色々教えて下さったので、せっかくなのでまとめておきます。教えてもらってない自分で調べたことも書いてるので、間違ってたらごめんなさい! …
出席してきました。本当に圏論の前提知識なしに米田のレンマまでぶっ通しで終わらせました。なんてひど・・・スピーディーな進行!しかし、米田祭だからといって米田のレンマを二度も証明するとは思いませんでした!!参加した方のために、参考資料を残して…
「セキュリティで保護された Web ページ コンテンツのみを表示しますか」で困っている方は、Deferred.next_default を使うようにすると最新版を使うと幸せになれると思います。参考→IEでSSL通信時に警告が出ることがある
参加してきました。第2章「圏」が全部終わりました!! (P90の層の部分除く)板書写真はこちらです。宿題は以下です。 P85の定理13やP89の5).、6).で使われる以下の性質の根拠 ∀X, C(X, A) ≃ C(X, B) ⇒ A ≃ B P89の6)の記法で、colim D_i とか lim C^{D_i} っ…
GUIのイベントを拾ったり、IRCクライアントのように登録したコールバックが何度も呼ばれるパターンでは、return型の関数にするのは難しいと思います。while でループさせるような作りにしたらできそうですけど、それがわかりやすいかどうか。Coro::AnyEvent…
POEからAnyEventに移すのはどんな感じか、試しにやってみます。 最初にまとめ 恐らく問題となるのはPOEのイベント呼び出しとAnyEventのコールバックの仕組みのギャップですが、AnyEventではメソッドを呼び出すコールバックを渡すことでPOEのイベント呼び出し…
Coro::AnyEventを使うと、継続渡しスタイルを使わずに非同期を書くことができます*1。ということで、試しにやってみました。 最初にまとめ AnyEventの層を作り、その上にCoroの層を重ねて、フロントエンドからはCoroの層だけ使うとわかりやすいアプリができ…
P87-88に書かれているのは、おおざっぱに言えば「-×Aの右随伴が存在 ⇔ ∀CについてC^Aやev_Cが存在」という話です。書籍だけではちょっと曖昧な部分があるのでフォローします。 題意 書籍では左辺はともかく右辺がちょっと曖昧です。マクレーン本や清水本から…
gist落ちてるのでここにメモ。 package DONE1; sub DESTROY{ warn 'd1:', shift; } package DONE2; sub DESTROY{ warn 'd2:', shift; } package DONE3; sub DESTROY{ warn 'd3:', shift; } package DONE4; sub DESTROY{ warn 'd4:', shift; } package DONE5;…
連休の非同期祭も(疲れたので)これでラストです。AnyEvent(5.2)でこんなコード書くと、「recursive blocking wait detected」が出ます。 use strict; use warnings; use AnyEvent; sub main { foreach my $i (1 .. 5) { my $cv = AE::cv; my $t = AE::timer …
またまた非同期ブームに乗ってお勉強継続中です。 AnyEventとCoro::AnyEventの違い AnyEventとCoro::AnyEventでは、メインループを回すスレッドが違います。 use strict; use warnings; use AnyEvent; use Coro; # use Coro::AnyEvent; my $done = AE::cv; m…
非同期ブーム第二段です。 書き換え方 func_by_cb( $cb, @params ) みたいな形式があった時に、Coroのrouse_cbを使うと、通常の関数呼び出しの形式で呼び出せる関数に変換ができます。こんな感じで。 sub func_by_coro { func_by_cb( Coro::rouse_cb, @_ ); …
空前の非同期ブームに乗っかってみます。Coro::LWPのドキュメントはやたらあっさりしてるんですが、以下のようなコードで効果がわかります。 use strict; use warnings; use Coro; # use Coro::LWP; use LWP::UserAgent; async { print "Hi\n"; }; my $ua = …
2009-10-10に、 Yoneda festival が開催されます。新たに圏論を勉強したい人向けの内容になりそうですので、Haskellのモナドで一度挫折を経験された方も、これを機にもう一度圏論に触れてみるというのはいかがでしょうか? 第一回層圏トポス米田フェスティバ…