2011-01-01から1年間の記事一覧

2012年はプログラミング言語を作りたい

本当は2011年の1-3月の間にやろうと思っていたのだが、卒業の危機などがあり思うように進まなかった。しかし今年Perl/XS以外にもC++, Objective C++, Java, ActionScript, JavaScript, Rubyなどでコーディングする機会があり、自分が欲しい言語が具体的にな…

2011年を振り返る

今年は長い一年だった。 3月は大学を卒業して東京に引越した矢先に東北大震災を経験して混乱も収まらないうちにOSDC.TWで台湾へ行き、4月にDeNAに入社して5月に配属、8月はShibuya.pm#16 正規表現祭りに参加、10月はサンフランシスコに出張と、こんなに激動…

古いPerl Advent Calendarも案外面白かったりするので

並べてみました。 Perl Advent Calendar 2011 Perl Advent Calendar 2010 Perl Advent Calendar 2009 Perl Advent Calendar 2008 しかし2009年以前はブクマ数が一覧から見えないのでどれが人気だったのかわかりませんね。

int($x) と ~~$x の違い

両方とも$xを整数化したものを返しますが、int("NaN")はNaNを返し、~~"NaN"は0を返します。 またint()は+int/-infもそのまま返します。確実に整数にしたいときは~~$xのほうがいいでしょう。速度はほとんど変わりません。

Alien::RRDtoolがLionで動かない件(未解決)

Alien::RRDtool - RRDtoolをCPANから入れる - Perl Advent Calendar Japan 2011 Hacker Track Perl Advent Calendar Hackers track day 2を書いたのですが、Alien::RRDtoolをMacOSX Lionで動かすことができないようです。 Snow Leopardなら動くのですが残念…

Re: use fields; と my TYPE EXPR;

これ、コンパイル時チェックというのはあってますが、実効速度が遅いというのは誤解です。 use fields; と my TYPE EXPR; - 日々量産 fieldsを使うと、フィールドに不正な代入があったら、"コンパイル時"にはじくことが出来る。 ハッシュキーをよくtypoする…

たまにはGUIでもと思ったものの

たまにはGUIでもと思い、手始めにAnyEvent::Impl::Wxでも書こうと思ったがWx.pmのドキュメントが乏しくて詰んだ。Timerは簡単にできたのだが、肝心のIOがよくわからないので終了。Wx::Socket*でできそうな気はするのだが、深追いはしていない。途中経過: ht…

Re: use parent と Try::Tiny とか

use parent と Try::Tiny とか - punitan (a.k.a. punytan) のメモ use parent を使って継承した時に try-catch あたりを継承先に突っ込んだりできないものかと考え倦ねいたけど中途半端なところでギブアップした。 use parent qw(Foo); で関数をインポート…

IRC botを駆使すると捗るらしいので手始めにlleval bot作った

Yokohama.pm#8でのYappoの話によれば、IRC botを駆使すると捗るらしい。 IRC botは作ったことがなかったので練習としてllevalを実行するbotを作ってみた。botのフレームワークとしてはAnySanを使い、llevalへのアクセスはLLEval-Clientを使った。https://git…

perlbrew-completionを書いた / またはcompletionスクリプトの開発とデバッグの話

きょうびmakeやgitでも補完が効くなか、perlbrewでも補完が効いてほしいですよね。 たとえば私はマシンによってperlbrewで入れたperlはけっこう違っているのですが、どのマシンにどのバージョンのperlを入れたか正確には覚えていません。なのでperlbrew use …

REPLでヒストリ機能が使えない病の直し方

PerlのデバッガやApp::REPLなどのreplプログラムはだいたい内部でTerm::ReadLineを使っているのですが、このときヒストリ機能が使えなかったりします。これは、Term::ReadLineが実際のターミナル制御をプラグインに任せているためで、そのプラグインを入れれ…

Sugarを介さずMouseを使う

「MouseはいいけどDSLはちょっと」とbonnuさんやxaicronに言われたのですが、実はDSLを介さずにもMouseは使えます。使い方はMouse.pmを読むとだいたいわかります。 要はインターフェイスがバックエンドと分離しているから好きなように変えられるってことです…

Snow Leopard & Xcode 4+ & system perl でXSをビルドできない問題の修正法

MacOSX Snow LeopardでXcode 4以上を使っているとき、system perl向けのXSモジュールがまったくビルドできないという非常に厄介な問題があります。 これは、system perlがユニバーサルバイナリでppc用のバイナリを含むようになっているにも関わらず、Xcode 4…

Plack::App::Directoryで簡易静的ファイル配信

だいたいaliasしてるらしいです。padでaliasつくると楽ですね。 alias pad="plackup -MPlack::App::Directory \ -e 'Plack::App::Directory->new->to_app'" 参考:第1回 PSGI/Plack―フレームワークとサーバをつなぐエンジン (2):Perl Hackers Hub|gihyo.…

Xslateのプロジェクトページを変えました

今までXslateは完全に私の個人プロジェクトだったのですが、そろそろコミュニティベースの開発にしたいと思っています。まず手始めにプロジェクトページを個人用アカウントからグループアカウントに変更しました。 https://github.com/xslate日本語のドキュ…

Recent TODOs about Xslate

だんだん溜まってきたので整理すると… グローバルマクロ 日本語のドキュメント Wikiの整備 TTerseでカスケーディング I18N Text::Xslate::Bridge::Util 登録済み関数と同じ名前のパラメータでwarning header/footer で行番号がズレる問題を修正 期限は今年中…

Xslate+Locale::Maketext::Lexiconを考える

前提:Locale::Maketext::Lexicon を Xslate でつかう (by tokuhirom) L::M::SimpleよりもL::M::Lexiconのほうが使いやすいというのはそのとおりなんですが、うまく使うにはもうちょい工夫が必要かなと。 具体的には以下のようなことに対応したいです。 *.po…

Xslate日本語ドキュメント計画

いろいろなところから要望が挙がっているので、Xslateの日本語ドキュメントの整備をしたいと思ってます。今のところまとまった日本語のドキュメントはPerl Hackers Hubに寄稿したものくらいしかないので、リファレンスといえるものがないためです。 目標とし…

quick sortよりも高速でmerge sortのように安定しているソートアルゴリズムtim sort [勘違い]

C++

ベンチマークプログラムに誤りがありました。ソート済のシーケンスに対してソートを掛けていました。ご指摘ありがとうございます>ak氏 そんな夢のようなソートアルゴリズムがあるのかというと、あるらしいんです。それがtim sortと呼ばれるアルゴリズムです…

YAPC::Asia Tokyo 2011 にエア参加しました!

YAPC::Asia Tokyo 2011お疲れ様でした! 私は参加できなかったものの、Perl道場の問題をいくつか書いたりTLを追ったりしていたのでなんとなくエア参加した気分でした。ところでPerl道場の問題と回答率を眺めると、たとえば「cpanmとは何か」という問題の正答…

Re: Sub::Spyとか作った、けどナントカの夜は明けない

Sub::Spyとか作った、けどナントカの夜は明けない 要は「コードリファレンスにプロパティをつけたいけどblessはしたくない」ってことですよね。 それ、InsideOut法でできますよ。下記のように関数インターフェイスになってしまっていいならHash::FieldHashを…

YAPC::Asiaのトークをキャンセルした件について

ただいまサンフランシスコに来ております。貴重な体験を楽しんではいるものの、YAPC::Asia期間中もこちらにいることになりました。 したがってYAPC::Asiaのトーク「Xslateマスターコース」をキャンセルすることになりました。YAPC::Asiaのブログでは既にアナ…

Perl 5.15.3 released!

ちょっと時間がたってますが、Perlの開発版である5.15.3がリリースされています。 cf. Perlのバージョン表記について https://metacpan.org/release/STEVAN/perl-5.15.3/ 今回は大きな変更はないのですが、5.15.2で導入された組み込み関数のコードリファレン…

Googleのインクリメンタル検索を無効にするたった一つの設定

window.twttr = (function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0], t = window.twttr || {}; if (d.getElementById(id)) return t; js = d.createElement(s); js.id = id; js.src = "https://platform.twitter.com/widgets.js"; fjs.paren…

ISUCONのウェブアプリのテンプレートエンジンはXslateでした

livedoor Techブログ : ISUCONやりましたーっ! 最終結果発表 #isucon ISUCONに[twitter:@xaicron] & [twitter:@myfinder]両名と一緒にチーム「真夏のサイクロンウェーブ」を結成して参加しました。 結果は…memcachedをいじっていたらアプリを壊してしまい最…

Perl 5.15.2 released!

Perlの開発版である5.15.2がリリースされました。 https://metacpan.org/release/RJBS/perl-5.15.2 このバージョンで組み込み関数のサブルーチンリファレンスが取れるようになっています。 use 5.15.2; # automatically turns on strict my $time = \&CORE::…

Data::MessagePack 0.35_1 renewal!

バイナリデータシリアライズフォーマットMessagePackのPerl実装であるData::MessagePackがインターフェイスを一新したり新機能を追加したりしてJSON.pmからの移行がしやすくなりました*1。 具体的には以下のように変わっています。 pack/unpackのエイリアス…

If Test::More was pluggable ...

There are two interesting Test::More extentions: にひりずむ::しんぷる - subtest の出力をフラットにする Test::Flatten を書いてみた (Test::Flatten) テストに適当に名前をつける2 - 冬通りに消え行く制服ガールは✖夢物語にリアルを求めない。 - subte…

「一人Scala勉強会 #4」に参加してきました - Actor Model

【第四回】一人Scala勉強会の枠が余っていたので参加してきました。Scalaに興味はあるものの中々手を出せなかったのでいい機会だったと思います。 さて今日はアクターモデルがいまいち分からなかったのでPerlで実装してみることにしました。 まずアクターモ…

Perl脳でC++を書く - 純粋仮想メソッド編

純粋仮想メソッドは、Perlのような動的言語ならば特別の工夫はいらず、以下のようにいきなり呼べばいいですね。 #!perl -w use 5.14.0; package ScopedReporterBase { use Mouse; has name => (is => 'ro'); sub DESTROY { my($self) = @_; # report()は純粋…