タグ

ブックマーク / blog.64p.org (39)

  • ふと思いたって、emacs の設定を1からやりなおしたの記 - tokuhirom's blog

    久々に Emacs の設定をした。普段は vim をつかっているのだが、日語の長 文を vim で書くのはつらいので Emacs 環境を整備したかったのだ。 (Emacs ですべてを書くと左手の小指が死ぬので、日語のときだけにつかう ことにしている) Emacs の設定は最近は MELPA だか package.el だか el-get だかでやるのが ナウいらしいのだが、どうちがうのかよくわからない。いろいろと日語の情 報があるのだが、「そもそもどれがなんなのか」というところをあんま説明し てくれてなくて辛い。 いろいろと調べた結果、僕は以下のような結論にたっした。 package.elインストーラ。tar ball とか file を指定すると、それをインストールして くれる。便利。 MELPAレポジトリから定期的にフェッチしてきて、いいかんじに package.el 対応の サ

  • 2013年 のPerl5 の OOP について考える - tokuhirom's blog

    Moo今年の命? 新しくつくるならこれが無難な気がします。速度的にも Mouse とあまりかわらない。 若干依存がおおい気もするけど、インストールベースがふえれば気にならなくなるかな、ともおもいます。 Class::XSAccessor とかつかってるんで、速度的にもホットスポットは速いのがよい。 なお発音はムーだとおもう。 (http://www.forvo.com/word/moo/) Mouse完成している感じがする。得にわるい点もないが、あえていうと xs 部分がおおいので、gfx 以外がメンテできないかんじがするのが欠点か。 Xslate をつかっている場合は自動的に xslate が mouse つかってるので、自然と Mouse がロードされるので、そういった意味では Mouse つかってもいいかなとおもっている。

  • 最速な JavaScript のリファレンスマニュアルサイトをつくった - tokuhirom's blog

    JavaScript のリファレンスマニュアルといえば MDN(Mozilla Developers Network) が有名ですが、MDN の資料は探索がめんどくさいし、表示が遅いということで使い勝手がわるいという問題がありました。 そこで、jQuery のリファレンスマニュアルサイトとして有名な jqapi.com とおなじよような使い勝手のサイトがあったらいいのになーとおもいました。 なので、つくりました。 サイト自体はすべて static なデータで構成されているので、github からデータを取得すれば、イントラや自分のマシン内で閲覧することも可能となっています。 なお IE での動作確認はしていないので、うまくうごかない場合は pull-req してください。

  • Perl5 においてファイルからの読取る場合における Malformed UTF-8 問題 - tokuhirom's blog

    Perl::Critic が最近 PerlIO layer に :utf8 つかうと怒ってくるけど、べらんめえしったことか! とおもっていたら、サイトが表示できなくなった(このような問題を hasegawayosuke 現象と我々はよんでいる)ので、ちゃんと調べた。 https://metacpan.org/module/Perl::Critic::Policy::InputOutput::RequireEncodingWithUTF8Layer 以下のようなスクリプトを実行する。 #!/usr/bin/perl use strict; use warnings; use utf8; use 5.010000; use autodie ':all'; use Devel::Peek; { open my $ofh, '>', 'foo.txt'; print $ofh "\xC0\xAF"

  • tokuhirom blog

    PSGIとPlackと 〜 軽量フレームワークAmon2入門 (3) 〜 さて、今回は裏をかいて、いったん題のAmon2の話からはずれて、PSGI/Plackのはなしをしましょうかね。 PSGI/Plackは基的にはアプリを書く人は知る必要はあまりないのですが、概念ぐらいは知っておくにこしたことはない、というところです。 さて、数年前のYAPCでわたくしが口を酸っぱくして申し上げたことを皆さんはおぼえているでしょうか。そう、一番大事なのは「PSGIは仕様。Plackは実装」ということなのでした。ここだけ把握していれば十分なので、PSGI/Plack の詳細に興味がない人はブラウザの Back ボタンを連打してください。 PSGIってなんだ?PSGIとは「ウェブアプリケーションとアプリケーションサーバーの間のプロトコルのこと」です。Perlの基的なデータ型であるArrayRef, Ha

    tokuhirom blog
  • Perl5のキモいコードと一般的な Perl Mongers の関わり方について - tokuhirom's blog

    書いた人がやりすぎ+あんまりうまくない、が正解なんじやないかなあ RT @toritori0318: 並べて見るとやっぱperlキモイ / メソッドのフック どう書く?org http://htn.to/aGv4tN http://twitter.com/lestrrat/status/22074833828というのをみたが、たとえば Data::Util をつかえば、こういうかんじで書ける。Data::Util はエンドユーザーがつかわない低レベルライブラリなのでちょっとつかいづらいが、元のコードよりはだいぶマシといえるだろう。 use 5.10.1; use strict; use Data::Util; sub add_hook { my ($class, $method, $type, $code) = @_; no strict 'refs'; *{"${class}::${me

  • リアルタイムWebのためのPubSubHubbub の Subscriber を構築する方法 - tokuhirom's blog

    PubSubHubbub(以下PuSH)は、フィードの更新をリアルタイムに通知するためのプロトコルである。 ウェブ上にころがっている"PuSH"の情報は、"Pub" の部分を実装する方法か、「PubSubHubbub の家GAE実装を手元でうごかしてみたよ」という記事しかなくて、"Sub"を実装する方法について解説しているブログなどはみあたらなかったので、ここに記す(英語だといくつかあった)。 基的に、ほとんどの人が興味あるのは "Pub" の部分である。自分のブログの更新情報等をリアルタイムにおくりつけたいと考えるからである。実際、ほとんどのブログソフトウェアではすでに PuSH 対応がすんでいる。see MT-PuSH, etc. しかし、私は今まさに Subscriber をつくりたいとおもったのである。なぜならば、"friendfeed.com/cpan" の更新情報を PuS

  • Perl Monger は Test::More の subtest が便利すぎるので頭にいれておくべきだと主張したい俺がいる件 - tokuhirom's blog

    Test::More の 0.94以後(2009-09-02)では subtest という機能が導入されており、これが非常に便利なのだが意外と利用されていないようなので、ちょっと宣伝させてもらいますね。 以下は Data::Recursive::Encode のテストケースなのだが、似たようなケースが頻出するわりに、抽象化するのが面倒だし、わけわからなくなること必至であり、かつまた、こんなものを複数のファイルにわけていてはメンテナンスが面倒なことは考えるまでもない。 チミチミと似たような数行のテストをかいたファイルを複数つくるぐらいならば、このように subtest の利用を考えるべきだとおもう。 ただし、これも他のツール同様、なんにでも適用すればいいというものではなく、使い方をまちがえれば、関係ないものがゴッチャリはいった .t ができあがるので注意するべきだろう。 use strict

  • tokuhirom blog

    Blog Search when-present<#else>when-missing. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: ${entry.path} [in template "__entry.ftlh" at line 3, column 25] - Reached through: #include "__entry.ftlh" [in template "entry.ftlh" at

  • tokuhirom blog

    Blog Search when-present<#else>when-missing. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: ${entry.path} [in template "__entry.ftlh" at line 3, column 25] - Reached through: #include "__entry.ftlh" [in template "entry.ftlh" at

  • Perl5.11.2 の Perl_keyword_plugin ハックがまじアツイゼ!の巻。 - tokuhirom's blog

    最近、さっぱり Perl のことを書かないので、Go に改宗したかとおもわれがちな tokuhirom ですこんばんわ。 http://d.hatena.ne.jp/gfx/20091121/1258770809 をみてたら、Perl5.11.2 でクールなハックがはいってることを知りました。こ れ は 熱 い!!ということでちょっと調べてみたよ! 端的にいうと、PL_keyword_plugin をつかえば、Devel::Declare のようなシンタックスを操作してしまう系の hack が可能になるということ。 つまり、Perl の syntax の制限で実現できなかった記法とかが、CPAN モジュールにより可能になるということ!その仕組みが Perl5 に公式にはいるということ! これは熱い。しかもこれ、激しく自由度が高い。これはキーワードをフックして、そっから先のパーズを Perl

  • tokuhirom blog

    Blog Search when-present<#else>when-missing. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: ${entry.path} [in template "__entry.ftlh" at line 3, column 25] - Reached through: #include "__entry.ftlh" [in template "entry.ftlh" at

  • tokuhirom blog

    Blog Search when-present<#else>when-missing. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: ${entry.path} [in template "__entry.ftlh" at line 3, column 25] - Reached through: #include "__entry.ftlh" [in template "entry.ftlh" at

  • tokuhirom blog

    Blog Search when-present<#else>when-missing. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: ${entry.path} [in template "__entry.ftlh" at line 3, column 25] - Reached through: #include "__entry.ftlh" [in template "entry.ftlh" at

  • tokuhirom blog

    Blog Search when-present<#else>when-missing. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: ${entry.path} [in template "__entry.ftlh" at line 3, column 25] - Reached through: #include "__entry.ftlh" [in template "entry.ftlh" at

    nekomori
    nekomori 2009/10/10
  • Module::Install::ForC で C のプログラムを簡単に構築する - tokuhirom's blog

    http://github.com/tokuhirom/p5-module-install-forc Module::Install のアーキテクチャを利用した configure/SCons 等のサブセットをつくりました。 記法は SCons を参考にしており、Rake のような黒魔術的でとっつきにくい記法ではなく、シンプルでわかりやすい記法になっています(もちろん主観ですが、Rake の記法は Rake を知らない人にとって非常にとっつきにくく、見通しがわるいというのが個人的見解です。慣れても見通しがいいとはおもいませんが。。。)。 Perl Monger がちょっとした C のコードを書くときに便利なのではないかとおもいます。Module::Install をつかってるので inc/ もいっしょに配布すれば、perl5.8.0 以上さえあればうごくということになります。便利です。 最

  • 自分のサーバの性能を知っておく - tokuhirom's blog

    http://github.com/kazuho/manymanythreads ↑kazuhoさんがCで書いたエコーサーバーと、そのベンチマークツールによって、自分のサーバでどんぐらいのQPSがでるのかがわかる。 たとえば自分のマシン(SC440)だと ./testechoclient -c 1 -n 1000000 -f -p 5050で、 77906.624081 reqs./sec. (1000000 in 12.835879 seconds)ぐらいでる。 一番単純なエコーサーバーをうごかしたときの性能を把握しておくことによって、どのぐらいの速度がでてしかるべきなのかが把握できるようになるという。 【追記】 ここで知った echo server の限界性能をもとに、その後、自分がなにかサーバ等を書いた場合に最適化したらどのぐらいの速度がでるかを予測できる(経験が必要だとおもうけど)

  • Thrift は Thrift::BufferedTransport をつかいわすれると 147 倍遅くなってつかいものにならない - TokuLog 改めB日記

    Blog Search when-present<#else>when-missing. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: ${entry.path} [in template "__entry.ftlh" at line 3, column 25] - Reached through: #include "__entry.ftlh" [in template "entry.ftlh" at

  • tokuhirom blog

    Blog Search when-present<#else>when-missing. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: ${entry.path} [in template "__entry.ftlh" at line 3, column 25] - Reached through: #include "__entry.ftlh" [in template "entry.ftlh" at

  • tokuhirom blog

    Blog Search when-present<#else>when-missing. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: ${entry.path} [in template "__entry.ftlh" at line 3, column 25] - Reached through: #include "__entry.ftlh" [in template "entry.ftlh" at