Pixel Pedals of Tomakomai

北海道苫小牧市出身の初老の日常

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

HTTP::Response->contentの罠

えっ、と思った現象です。 my $mech = WWW::Mechanize->new; my $res = $mech->get('http://〜〜〜〜.jpg'); warn "mech->content: " . length($mech->content) . "\n"; warn "res->content : " . length($res->content) . "\n"; # 結果 mech->content: 5078…

正規表現エンジンを作ろう(6)

連載最終回では、主にNFAエンジンについて説明しました。鬼車等の正規表現エンジンも記事で紹介したエンジンのようにNFAをバイトコードに変換して処理を行っています*1ので、今回の記事が少しでもソースを読む際の助けになればと思います。さて、記事中で紹…

正規表現エンジンを作ろう(5)

連載第五回にして、ようやく正規表現エンジンが完成しました。それとも、逆にあっけなく完成してしまって拍子抜けと言ったほうがいいでしょうか??(笑) こんなに簡単に実装できたのは、今回のエンジンではキャプチャを実装してないことが大きいでしょう。キ…

第48回 Java EE勉強会

またまた議事録の元ネタを書かせて頂きました。今までの要約はこちらです。途中参加も全然可能ですので、興味がある人はぜひ。

tgsetup.pyがまた動かない

今現在のtgsetup.pyがまた動きませんねえ。*1駄目になった修正と思われるr5755を見てみたんですけど、なんだこれ。エラー処理を強化してるのはわかるんですけど、以下のコードがまずすぎです。 else: if argv: from setuptools.command.easy_install import …

Yokohama.pm テクニカルトーク #3 に参加中

ワタクシは横浜人ですので。

正規表現エンジンを作ろう(4)

連載も第四回となりました。今回が正規表現エンジンを作る上で一番重要な部分で*1、正規表現とNFAの関係を説明しています。結局は当たり前のことしか言ってないんですが、そこはコロンブスの卵でして、知ってるのと知らないのとでは大違いです。さて、この連…

左再帰を解決する

正規表現エンジンを作ろう(3)では、簡単のためすべて演算が右結合となるように構文解析を実装しました。ただ、ちょっとこれは乱暴過ぎたかなと反省もしてます。そんなわけで、 なお、引き算、割り算等のような、5-3-2が5-(3-2)のように右結合になると結果…

正規表現エンジンを作ろう(3)

第三回の公開です。今回は字句解析と構文解析を自作しました。 本格的な構文解析器は、通常 yacc 等のツールを利用して自動で作ることが多いですが、今回の正規表現の文法は単純なので自作してしまいます。 じゃあ、ツールを利用するとどうなるの? ってのを…

正規表現エンジンを作ろう(2)

CodeZineさんで第ニ回が公開されました。今回は最も底辺の部分である、NFAとDFAを実装しています。ただし、NFAの実行部に関しては以下の通り実装しませんでした。 このためNFAを実行するソースはDFAに比べてかなり複雑になります。ただし、今回はNFAを実行す…

正規表現エンジンを作ろう(1)

CodeZineさんで連載を始めました。全6回でDFAエンジンの実装方法を紹介する予定なので、興味のある方はぜひ*1。ところで、第一回で出て来た /^([a-z]*)\1$/ と言う正規表現ですが、 残念なことに、数学的な3つの定義ではこの正規表現が表す文字列集合を表現…

最短一致マッチで誤解しやすいこと

問題 文字列'abcccde'に対して、以下の最短一致マッチ(non-greedy match)を使った(1)から(4)の正規表現をかけたときのマッチ結果は? (マッチするかしないかではなく、どの部分がマッチして $& に入るかです。) foreach my $regexp ( qr/bc*/ , # (1) qr/bc*…

POE::Wheel::ReadLine で日本語を使うパッチ

POE::Wheel::ReadLine は便利なのですが日本語が使えません。なので、パッチを書きました。 使い方 利用は自己責任でお願いしますm(_ _)m。ReadLine-1.003.patchをDLして、ReadLine.pmにあててください。でもって、POE/Wheel/ReadLine/JP.pmをインクルードパ…

第47回 Java EE勉強会

行ってきました。議事録の元ネタ書いてきました。今回のDDD読書会は要約がすべてwikiにまとまっているので、途中参加もしやすくなってます。興味のある方はぜひぜひ。

dieの引数とか例外の伝搬とかPROPAGATEとか

dieの引数って文字列だけじゃなかったんですね。こんな風にdieの引数省略したら、見慣れないメッセージが。 % perl eval {die "in eval"; }; die; in eval at - line 1. ...propagated at - line 2. perldocを見てみます。 If LIST is empty and $@ contains…

第二部「Lightning Talks」

LTです。一人6分間。

第一部 Scheme、Common Lisp、俺Lisp

いつもの実況メモです。

Shibuya.lisp テクニカルトーク #1 に行く予定

まさに「お邪魔」してきます(笑)。アウェイ感を楽しんで来ます≧(´▽`)≦ustreamはコチラから。

TT #1感想

今回はfujita-yさんのお話がとても刺激的でした。バイナリアンの人って、楽しそうだなーと・・・って、あんまLisp的な刺激じゃないですね(笑)。Lispに特化したスタックやクロージャの最適化の話も面白かったです。懇親会でも間接分岐についてわざわざ教えて…

SVKのpullは危険

どうもSVKに慣れません。昨日も暴走させました。しかも2回も。経験的に、「チェックアウトしたワークコピーにpullを使う」ことによる失敗が多い気がします。以下、たまたま昨日暴走させた2例をメモしておきます。 そもそも、なんでワークコピーにpullする…

固定長のCSVでやらかしました

すいませんすいませんすいません。 1,1,レコードA 2, ,レコードB 3,1,レコードC 4,1,レコードDこんなファイル。2カラム目が有効フラグで、こいつが立ってる行だけ表示したかったとします。 open(my $fh, 'test.csv') or die; while(<$fh>){ tr/\r\n//d; my (…

高階関数とlocalは相性がいい

太古の昔、localよりmyを使え! とみんなが口を酸っぱくして言っていたものだから忘れがちですが、正しい使い方をすればlocalはすごい便利です。 まとめ 最初にまとめを書いておきます。(なので、最後にまとめはありません!) localは便利 メソッド間に渡っ…

第46回 Java EE勉強会

今回も参加してきました。議事録の原本を書きましたので、興味ある方はどうぞ!

Compilers(ドラゴンブック)が多過ぎる

ドラゴンブック*1って種類がたくさんあるのですね。まとめてみましたので、買う時の参考にどうぞ!版は1と2っぽいですが、以下のような種類があります。 1版(赤いドラゴン) ハードカバー .com 日本語 ハードカバー+第2版のオンライン記事 .com 2版(紫のドラ…

上限下限の存在に対する命題の、イコールの取り扱い

久々に数学やると混乱するので、メモです。nとmを自然数とし、P(n) を 整数nについての命題とすると、 (1). は真ですが、 (2). の右方向は成立しません。

DBICの disconnect VS DESTROY

最近、 DBIx::Class の利用例を色々見てるのですが、Schema->connect は見かけるのですがdisconnectを見かけません。疑問に思ったので、色々調べてみました。 結論 disconnectは不要。

PerlySenseでyamlで指定したINCパスが反映されない

仕様かバグかはわからないですけど*1、タイトルの通りです。flymakeとかするときはきちんと -I とかで渡してるんですけどね。ってことで、perly_senseコマンドにパッチあてました。かなりNGなパッチですが、動くことは動きます。 % diff -c perly_sense.orig…

LL Futureの感想

まず、スタッフの皆様、大変お世話になりました。毎年のことなのですが、LLイベントは過酷なのにあっという間に終わると言う印象を持っています。今年も、11時間やったとは思えないほど時間が経つのが早く、楽しい時を過ごさせて頂きました。後、Larry Wall…

LL Future に参加中

電源を確保できたので、*1今日もログ取っておきます。ちなみに、チケットを持ってくるのを忘れましたorz。当日券買ったので二重払いとなりましたが、Larryさんの旅費と言うことで(笑)*2。 *1:結局、電源は途中からお借りしました。助かりました! *2:チケッ…

Trac-0.11.1.ja1でエラー発生時にエラー(?)

Trac-0.11.1.ja1入れました。以下の現象が起きました。 現象 mime_encoding の指定が間違えていると、以下のエラーが発生します。本来ならログに吐かれるだけで済むはずです。 UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-18:…