yacc入門 (2)

Rubyソースコード完全解説』の第9章「速習 yacc」に魅入っていました。

... 規則(群)の最後にセミコロンが必要な yacc も存在する。...
筆者はこのセミコロンが嫌いなので本書では常に省略する。(p.239)

ぷはっ、やっぱ『ふつうのLinuxプログラミング Linuxの仕組みから学べるgccプログラミングの王道』は「ふつう」だわw。(つまんないという意味ではなく、客層が違うので「ふつう」に端折らず丁寧に書いてある)

勢いで『Rubyを256倍使うための本 無道編』ポチッと買っちゃった。


Rubyソースコード完全解説 ふつうのLinuxプログラミング Linuxの仕組みから学べるgccプログラミングの王道 Rubyを256倍使うための本 無道編


で、該当の goal posts (ブロック・パラメータ囲み記号s) 部分はここか。

block_var_def   : '|' opt_bv_decl '|'
                    {
                    /*%%%*/
                        $$ = NEW_ITER((NODE*)1, 0, $2);
                    }
                | tOROP
                    {
                    /*%%%*/
                        $$ = NEW_ITER((NODE*)1, 0, 0);
                    }
                | '|' block_var opt_bv_decl '|'
                    {
                    /*%%%*/
                        $$ = NEW_ITER($2, 0, $3);
                    }
                ;

(コメントは削った)

super YACC guru の皆さーん、ココがハックするところですよー。


ここの '|' をリテラルから kDO や kEND のようなものに変えて、block_var を paren_args 相当にしなきゃいけないのかな? んー、違うなー、相手は '|' 演算子だからなー。'(' や '{' と一緒にしたらまずいのか。
opt_bv_decl は ";" とか "," みたいだから、とりあえず無視して、block_var を見る……長ぇー。

はてなのオープンソース化

話題が古いって? いいの「遅レス」だから。


FEEDBRINGER :: 樂水開発日記 より

これははてなのバグだ。どうするか考えたが、やはり報告すべきと考え、はてなアイデアにバグ報告アイデアを立てた。

それから10時間。家に戻ってきてはてなアイデアを見てみると、すでに再現試験を行い、そのうえで詳細なレポートを上げている人までいて、完全に不具合という共通認識が参加者の間で出来上がってしまっていた。

はてな利用者の底力に驚かされたが、それはもう一方で、はてなそれ自身の対応速度が物理限界に達しているために、やむなくそうなっている部分もあるという証拠だろう。

アイデア (バグ修正・改良含む) の溜まり具合を見て、サービスの増加に対して人が足りてないんではないかと皆が思っていると思う。
もし、はてなの開発スピードに限界が来てるのが真実ならば、近藤さんならやりかねんよな>オープンソース化。
たださんは冗談めかして予言しているが、まぁ、Probably の域に達しているのだろう。(期待度は probably > maybe > perhaps らしい by 英辞郎。maybe == perhaps by Yahoo!辞書)


はてなの収入源:

問題なさそうではある。


追記:
はてなの強みは、莫大な (言い過ぎ?) ユーザー数とそれを結びつける folksonomy 機能というのもある。ソースコード公開して個人サイトを立ち上げられても全く困らないだろう。それどころか API の公開により個人サイトユーザーまで取り込みかねん。

新しいメイド

これが私のご主人様」が、読みきりかなんかであった時「メイドはもういいよ!」と思ったものだが (言い訳:いや、消費活動はなにもしてませんよ、メイド喫茶にも行った事ないし、1度は行ってみたいけど)、今日新しいの考えた。


メイド司書。


高いところにある本を梯子を上って取ってくれるわけですよ。目の前の同僚 (ヲタじゃない、多分) が食いついてきたのだが、世間はいかに。本当に新しいかどうかは知らん。


ちょっと、ノーパンしゃぶしゃぶっぽいのに気づいた。(あ、こっちも行った事ないですよ。)

初めての Rast (1)

せっかく前田さんが Ruby on Rails 用の Rast extention を作ってくださったので、Rast をインストール。

$ sudo apt-get install libapr0-dev 

Apache Portable Runtime が無かったので入れておく。

Web 上にある deb が 0.1.1 のものだったので 、後学のために作って見た。(参考: 自作パッケージを作りたい - AptGet - Debian GNU/Linux スレッドテンプレ)

$ sudo apt-get install \
  build-essential \
  devscripts \
  dh-make \
  lintian
$ export DEBEMAIL="babie@..."
$ export DEBFULLNAME="foo bar"

環境変数は .bashrc にも付け加えておく

$ tar xvjf rast-0.2.0.tar.bz2
$ cd rast-0.2.0
$ dh_make

パッケージの構成は s : 1つのパッケージとして作成 を選び、debian/control に適当に description を入れて、

$ debuild

fakeroot がないと怒られたので、(スレッドテンプレに付け加えたが、うちの環境だけだったらやだなぁ)

$ sudo apt-get install fakeroot pentium-builder
$ export DEBIAN_BUILDARCH=i686

と、ついでに pentium-builder も入れて設定した。
今度は debuild 通った。

$ sudo dpkg -i rast_0.2.0-1_i386.deb

簡単!


さて、テストテスト。

初めての Rast (2)

とりあえず、http://www.netlab.jp/rast/tutorial-ruby.html.ja をこなそうと思ったら、早々に躓いた。

$ ./create.rb ~/tmp/rast/testdb
./create.rb:57:in `create': not supported encoding: utf8 \
 (Rast::RastError)
        from ./create.rb:57

検索したら、たださんが ximapd でエラー出してた やつにぶつかった。

$ dpkg -l | grep icu
ii  icu          2.1-2.1 International Components for Unicode
                         (non locale data)
ii  libicu21c102 2.1-2.1 International Components for Unicode
                         (libraries)
ii  libicu28     2.8-4   International Components for Unicode
                         (libraries)

うーむ、icu は入っているんだけどなぁ。あ、"non locale data" が怪しいな。


追記:

$ sudo apt-get install icu-data icu-i18ndata icu-locales
$ dpkg -l | grep icu
ii  icu          2.1-2.1 International Components for Unicode
                         (non locale data)
ii  icu-data     2.1-2.1 Data for ICU (source files)
ii  icu-i18ndata 2.1-2.1 Locale data for ICU (source files)
ii  icu-locales  2.1-2.1 Locale data for ICU
ii  libicu21c102 2.1-2.1 International Components for Unicode
                         (libraries)
ii  libicu28     2.8-4   International Components for Unicode
                         (libraries)

これでどうだっ!

$ ./create.rb ~/tmp/rast/testdb
./create.rb:57:in `create': not supported encoding: utf8 \
 (Rast::RastError)
        from ./create.rb:57

あぼーん。

追記:
8/1に続きを書いた。
あと、横幅調整で適当に改行。