タグ

ブックマーク / hiratara.hatenadiary.jp (11)

  • Shibuya.js beyond HTML5 に参加してきます - Pixel Pedals of Tomakomai

    hiratara : とりあえず確保。上司から許可が取れたら行きます Shibuya.js beyond HTML5 上司の許可がとれたので行ってきます! → 出席してます! おさらい(JavaScript歴史) ... → JavaScript → JScript → ECMAScript → HTML 4.01 コンセプト: Rediscover the JavaScript 2006年が第1回。2008年の京都が最後で、2年ぶり (実は渋谷ではやっていない) 最近やってなかったのは → jQueryとか便利だし、日常化した 復活したのは → HTML5の登場、JITの高速化、IE6の終了 LTの虎の予選も兼ねているらしい Rich UI with JS / @amachang jQueryの作者にも認められているShibuya.js HTML5とは? → 仕様にDOMとHTMLが両

    Shibuya.js beyond HTML5 に参加してきます - Pixel Pedals of Tomakomai
  • モナドのdo記法をPerlのCoroで実装してみた - Pixel Pedals of Tomakomai

    先に言っときますが、決して役に立つエントリではないので圏論やコルーチンみたいなものに興味がある人だけどうぞw PythonにおけるHaskellチックなdo記法をジェネレータで実装する方法に心惹かれたので、Perlで真似してみました。 ジェネレータはコルーチン的な振る舞いをするので、PerlではCoroを使うと楽でしょう。以前のエントリで作ったMaybeモナド*1を利用して、以下のようなシンタックスシュガーを作ってみます。 my $may_div = sub { my ($x, $y) = @_; return $y ? just($x / $y) : nothing; }; my $maybe_divs = do_monad { my $v1 = retrieve $may_div->(3.0, 1.0); my $v2 = retrieve $may_div->(2.0, 1.0);

    モナドのdo記法をPerlのCoroで実装してみた - Pixel Pedals of Tomakomai
  • Apache2+mod_proxy+持続接続で時々レスポンスが悪くなる現象のメモ - Pixel Pedals of Tomakomai

    今更な話題で恐縮ですがmiyagawaさんがものすごい勢いで教えてくれたのでメモっておきます。 mod_proxyでバックエンドにリクエストを投げたとき、リクエストのうち何個かが極端に遅いという現象が起こりました。その時のabの結果は以下。 % ab -c 5 -n 500 http://127.0.0.1:21082/ Percentage of the requests served within a certain time (ms) 50% 1 66% 1 75% 1 80% 1 90% 4 95% 1008 98% 1994 99% 2003 100% 2020 (longest request)なお、今回使おうとしたバックエンドはStarmanです。 多分こんな原因 検証不足で断言はできないのですが、多分以下のような感じ。多分。 Apache のデフォルトのServerLimi

    Apache2+mod_proxy+持続接続で時々レスポンスが悪くなる現象のメモ - Pixel Pedals of Tomakomai
  • Perlでモナドを学ぶ - Maybeモナド編 - Pixel Pedals of Tomakomai

    Maybeモナドの実装です。 簡単な解説 Maybeモナドの関手のT_objectは、渡された集合に対して、すべてをリファレンス化した集合にundefを加えたものに移します。こうすることによって、元々持っていた値を全て表現すると同時に新しいundefと言う値を手に入れられます。undefがHaskellのNothingとなります。 実装 リファレンスをとる処理がうざかったので、ヘルパー関数にまとめました。こいつの名前をjustにしたので、Haskellっぽくなりました*1。 sub just { my $value = shift; return \$value; } my $list_monad = Monad->new( T_arrow => sub { my $arrow = shift; # A -> B return sub { my $tx = shift; # TA -> T

    Perlでモナドを学ぶ - Maybeモナド編 - Pixel Pedals of Tomakomai
  • Perlでモナドを学ぶ - Pixel Pedals of Tomakomai

    勉強のためにPerlでモナドを実装してみました。 免責 圏論のモナドの概念をPerlでシミュレートしようと言うエントリであって、モナドを開発にどう利用するかなどについてはびっくりするくらい言及しませんので悪しからず。 1. 圏を考える Perlのスカラ値の任意の集合を対象として、引数も戻り値も一つで副作用がないサブルーチンを射とします*1。domとcodについては、関数が正常に動作する範囲で適当にとりましょう。 * 例: 対象「文字列」から対象「整数」への射 length 2. 自己関手の表現 自己関手は、二つの写像からなります。 対象を対象に移す写像 T_object モノとしては考えますけど今回は実装しません*2。 射を射に移す写像 T_arrow 『サブルーチンを受け取ってサブルーチンを返すサブルーチン』として実装できます。 3. 自然変換の表現 関手Tから関手Sの自然変換は、対象A

    Perlでモナドを学ぶ - Pixel Pedals of Tomakomai
  • Perlでモナドを学ぶ - IOモナド編 - Pixel Pedals of Tomakomai

    ListモナドとMaybeモナドに続いて、今日はIOモナドのお勉強をしてみます。 簡単な解説 IOモナドは実質的にStateモナドなので、こちらとかこちらとかを読んで下さい。 ただし、状態は「世界」となります。世界によって値は異なり、新しい世界(副作用が施された世界)を返します。 実装 Stateモナドと同じ定義をしました。 my $io_monad = Monad->new( T_arrow => sub { my $arrow = shift; # A -> B return sub { # TA -> TB my $tx = shift; # TA return sub { # TB my $world = shift; my ($value, $new_world) = $tx->($world); return $arrow->($value), $new_world; }; }

    Perlでモナドを学ぶ - IOモナド編 - Pixel Pedals of Tomakomai
  • 社内勉強会 - Pixel Pedals of Tomakomai

    Moose::RoleはJavaのInterfaceなんかじゃないの内容を社内勉強会でやったので、スライドだけ貼っておきます。 slideshareの貼り方ははてなブログでslideshareのプレゼンテーションflashを貼る方法で教わりました。

    社内勉強会 - Pixel Pedals of Tomakomai
  • 今日はShibuya.pm #11の日です - Pixel Pedals of Tomakomai

    no Perl; use x86; *1ですので、Perlにそんなに興味がない方でも楽しめると思います!!(笑) 今日はユニバーサルアクセスを兼ねて内容を細か目に書いたのですが、書いてる人もあまり理解してないので雰囲気だけ読み取って下さい・・・。誤りの指摘は大歓迎ですorz 4/23追記: 内容の補完のために、すぎゃーんメモさんとこのメモも合わせてどうぞ。 第一部 sandbox特集 バイナリ畑で捕まえて - inside lleval / dankogaiさん バイナリ麦畑で捕まえて → lleval というサービス デモ Perlのコード(CSSの都合で動かない) BASICのコード postscript Perl6 → 重いけど動く 動かすのは簡単 → 不正なコードを動かされると困る → 捕まえて欲しい 1分を越すとタイムアウトする fork爆弾 外部モジュール(syscall.p

    今日はShibuya.pm #11の日です - Pixel Pedals of Tomakomai
  • Moose::RoleはJavaのInterfaceなんかじゃない - Pixel Pedals of Tomakomai

    Moose::RoleはJavaのInterfaceと似たような物だと思ってたんですが、大きな誤解でした。 モダンPerlの世界へようこそを読んで、Moose::RoleはTraits: Composable Units of Behaviorの概念の実装らしいことがわかったので、この論文を読んでみました。*1。非常に面白い内容でした。P.12 の a) と b) を見るだけでも、この概念の面白さが伝わるんじゃないかと。要は、指定した振る舞い(requires)から新しい振る舞い(provides)を作るものが、Traitsってことです。(ただし、ここで言う振る舞いにはアクセサを含みます。) 誤解していたこと Moose::RoleをTraitsとして見なすとすれば、JavaのInterfaceの性質である以下の2点は誤解です*2。 Moose::Roleは、単なるインタフェース(API)

    Moose::RoleはJavaのInterfaceなんかじゃない - Pixel Pedals of Tomakomai
  • XS Nite (Shibuya.pm Tech Talk #9) - Pixel Pedals of Tomakomai

    id:TAKESAKOさんの好意で出させてもらったので、適当にロギングします。 はじめてのXS / id:hirose31さん XSってなに? PerlとCをつなぐための言語&インタフェース Foo.xs → xsubpp → Foo.c → Cコンパイラ → Foo.so Perlからは、XSLoaderやDynaLoaderでFoo.soを読み込む なぜXSを使う? Cのライブラリを使いたい パフォーマンス向上(Cache::Memcached::Fast 等) Perlの内部をいじくり倒す(autobox*1 等) XSを書いた動機 → forkしまくりたくなかった ドキュメント perlxstut, perlxs, perlguts, perlapi h2xs or module-starter (Module::Starter::XSimple) で始める 外部のsay_hell

    XS Nite (Shibuya.pm Tech Talk #9) - Pixel Pedals of Tomakomai
  • YAPC::Asia 2008 Tokyo 2日目 - Pixel Pedals of Tomakomai

    いよいよ最終日です。電池切らさないように頑張ってレポートします(笑)。 You're Doing OO Wrong/Michael Schwernさん(9:50〜10:25) スピーカーの到着遅れてたようです。5分遅れでのスタートです。 継承がオブジェクト指向?→違う Howではなく、その操作から何が得られるかに着目する→インタフェース 継承がなぜよくない? 継承はめちゃめちゃになりやすい←ダイヤモンド継承 注意深く継承するのはつまらない 特徴に応じてクラス分けすると、クラスが増え過ぎてしまう Class::DBI → 色々継承している use Moose 少ないコードで書ける→OO部分だけ書けばいい Mooseでも、機能が欲しいだけでextendsを使うと意味がない→hasを使おう Roleはwithで取り込む まとめ: isa ×、hasa ○、Role ○ 自分でOO実装しないで、M

    YAPC::Asia 2008 Tokyo 2日目 - Pixel Pedals of Tomakomai
  • 1