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

libxml2 の SAX インタフェースで XML をパースする

c

思うところあって LL からではなく C で libxml2 を使ってみました*1。普通にメモリ上やファイル上の XML ドキュメントを SAX インタフェースでパースするだけであれば,最上位 API の [http://xmlsoft.org/html/libxml-parser.html#xmlSAXUserParseFile:tit…

V8 で C++ から JS Object のプロパティを列挙したい

C++ で V8 を拡張する関数とか書いていると,JavaScript から Object(というか,今回のコンテキストではざっくりいうと Hash 的なもの)をわたしてあれこれしたい,という欲求がでてきます。たとえば Object から apr_table_t に変換したい,とかね。 もっ…

Makefile 自身の場所の取得

info を読んでもなさそうだった(あったら教えてくださいねー)んで,MAKEFILE_LIST 変数と word, dir 関数を使ってみました。たとえば MAKEFILE:=$(word $(words $(MAKEFILE_LIST)), $(MAKEFILE_LIST)) MAKEFILE_DIR:=$(patsubst ./,,$(dir $(MAKEFILE))) t…

V8 (Google JavaScript Engine) を embed した感想とかあれこれ

なぜ CodeRepos に登録しないのか べつだん深意や確執があるわけじゃなくて,華々しく 500 人めのコミッタになろうと思ったら,現在 461 人だったからです。ということで 38 人の方々,コミッタ登録してください ;P冗談はともかくおまえの書いた汚いコードを…

v8 (Google JavaScript Engine) を Perl XS モジュールにしてみた

やはりやっつけで。Joke module です。いろいろ書きたいことがあるけど,そのうち(追記するかも)。libv8 と XS の間をとりもつ bridge.cc。 /* bridge.cc */ #include <v8.h> #include "EXTERN.h" #include "perl.h" #include "XSUB.h" #include "ppport.h" /* h</v8.h>…

v8 (Google JavaScript Engine) を Apache のモジュールにしてみた

ちまたでは Google Chrome より v8 がアツいらしいので,やっつけでつくりました。Joke module です。ふつーに CGI モジュール的につくってもよかったんですが,なんとなくテンプレート的にしました。ほんとうは mod_perl みたいにサーバのあらゆるところに …

MVPen (Pegasus Mobile NoteTaker) の解析: インデックス

素敵ガジェット MVPen を Linux から使えるように試行錯誤してきましたが,一通り目標は達成できたので,これまでの記事のインデックスを置いておきます。ひとまず打ち止めです。※注意※ MVPen が故障する可能性があります MVPen (Pegasus Mobile NoteTaker) …

MVPen (Pegasus Mobile NoteTaker) の解析 (10)

MVPen をLinux から使う試みシリーズ。libusb でモバイルノートデータを取得してみました。※注意※ MVPen が故障する可能性があります MVPen のローレベルインタフェース仕様 MVPen のローレベルなインタフェースを見てみます。 device: vendor = 0x0e20, pro…

MVPen (Pegasus Mobile NoteTaker) の解析 (9)

MVPen をLinux から使う試みシリーズ。モバイルノートデータの構造について。※注意※ MVPen が故障する可能性があります モバイルノートデータのサンプル 実際のモバイルノートデータ(を前回のプログラムで取り出したもの)の抜粋をダンプしてみました。 000…

MVPen (Pegasus Mobile NoteTaker) の解析 (8)

MVPen をLinux から使う試みシリーズ。いよいよ MVPen からモバイルノートデータを取り出します。※注意※ MVPen が故障する可能性があります MVPen の Report 仕様のおさらい MVPen では INPUT Report, OUTPUT Report ともに一種類しか定義されていません。ま…

MVPen (Pegasus Mobile NoteTaker) の解析 (7)

MVPen をLinux から使う試みシリーズ。Linux の hiddev デバイスドライバでイベントを取得する方法。※注意※ MVPen が故障する可能性があります read (2) によるイベントの捕捉 いままで /dev/usb/hiddev* のデバイスデスクリプタハンドルにたいして ioctl (2…

MVPen (Pegasus Mobile NoteTaker) の解析 (6)

MVPen をLinux から使う試みシリーズ。Linux の hiddev デバイスドライバで Report の形式を取得する方法。※注意※ MVPen が故障する可能性があります今回は hiddev デバイスドライバのうち,Report の送受信にからむ部分のみ説明します。 HIDIOCGREPORTINFO …

MVPen (Pegasus Mobile NoteTaker) の解析 (5)

MVPen をLinux から使う試みシリーズ。Linux の hiddev デバイスドライバの使い方。※注意※ MVPen が故障する可能性があります今回は hiddev デバイスドライバのうち,Report の送受信にからむ部分のみ説明します。 HIDIOCGREPORT, HIDIOCSREPORT デバイスと …

MVPen (Pegasus Mobile NoteTaker) の解析 (4)

MVPen をLinux から使う試みシリーズ。Linux で HID デバイスを操る方法について。※注意※ MVPen が故障する可能性があります Linux の USB (HID) インタフェース Linux からアクセスできる USB (HID) まわりへのデバイスノードのパスには下記のようなものが…

MVPen (Pegasus Mobile NoteTaker) の解析 (3)

MVPen をLinux から使う試みシリーズ。昨日までの内容がやや間違っていたので,補遺です。※注意※ MVPen が故障する可能性がありますHID とのやりとりについて概略を知るためには,PSoCのUSB(HID)をつかってみる 文中でリンクされている Silicon Labs の AN24…

MVPen (Pegasus Mobile NoteTaker) の解析 (2)

MVPen をLinux から使う試みシリーズ。おまちかね?の解析結果です。※注意※ MVPen が故障する可能性があります 全般 USB デバイスとしての諸元は下記の通りです ベンダ ID: 0x0e20 プロダクト ID: 0x0101 デバイス名称: Pegasus Technologies Ltd. NoteTaker…

MVPen (Pegasus Mobile NoteTaker) の解析 (1)

MVPen をLinux から使う試みシリーズです。※注意※ MVPen が故障する可能性があります MVPen のレシーバのデバイス構造 MVPen のレシーバを PC に接続すると,下記のような構成になります。つまり, 「HID 準拠デバイス」をもつ USB ヒューマンインタフェース…

MVPen (Pegasus Mobile NoteTaker) の解析 (0)

MVPen を買いました。せっかくなので Linux で使えるように目指します。※注意※ MVPen が故障する可能性があります MVPenテクノロジーズ MVPen(エムブイペン) MVP-1 出版社/メーカー: MVPen asin:B0018AWYIC OEM 元 MVPen は USB の Manufacturer からすると…

Ubuntu 8.04 の Firefox 3.0.1 が英語メニューになって困った

ある日 Ubuntu をアップデートしたら,Firefox のメニューが英語になってしまいました。自宅の同じ環境ではきちんと日本語メニューになったんですが。一応日本語ロケールな extension はきちんとインストールされているぽい。 で,プロファイルフォルダをた…

CentOS で aufs (another unionfs) を使う

フラッシュメモリデバイスなディスクに Linux をインストールしたい ⇒ 書き換え限度回数が心配だよ ⇒ CDROM bootable な OS にすればいいよ ⇒ システムの変更やアップデートのときが面倒だよ ⇒ read only filesystem の上にかぶせることができる UnionFS を…

よくよく考えたら

c

ゆの in Lex - daily dayflower ゆの in yacc - daily dayflower どちらも標準入力から読んで答えを吐いているので,要件と違う気がしてきた。これじゃだめですね。でも bison で '/' とか ' とか token にできない(クォーテーションで囲まないとだめ)。ぐ…

ゆの in yacc

c

パーサかませばなんでもありだな…… %{ #include <stdio.h> #include <string.h> %} %union { char *str; } %token X %token <str> STRING %type <str> face mouths left_part right_part mouth %% sayhello: face '<' STRING '!' { fputs($1, stdout); fputc(' ', stdout); fputs($3, stdo</str></str></string.h></stdio.h>…

ゆの in Lex

c

元ネタ*1がいまいちわかんないすが,id:cho45 さんに捕捉されたかったので書いてみました。Lex なので C と絡めないと動かないところが歯がゆいところですけど。 %{ #include <stdio.h> int yywrap(void) { return 1; } %} %x BACK %x SPEAK %% [ \t]+ /* whitespaces</stdio.h>…

シェル機能をインプリメントしたいなら Term::ShellUI を使うと便利

Web::Scraperのshellをhistoryから補完できるようにしてみました。shell系は使わないと忘れてしまうので、historyがあったほうがいいかなと思って作ってみました。~/.scraperhistoryを作っておくと、historyが使えるようになります。 Web::Scraperのshellでh…

SWF フォーマットの変遷からみる Flash

ふと思い立って,プログラマーから見た Flash について書くことにしました。SWF and AMF Technology Center | Adobe Developer Connection からダウンロードできる SWF file format specification をもとに*1。といっても,ActionScript 1.0 / 2.0 / 3.0 の…

Scalar::Util の weaken()

Shibuya.pm #9 での id:lestrrat さんの発表 での質疑応答において id:dankogai 氏 weak references の実装はどのようになっていますか? id:lestrrat 氏 あー準備してくるの忘れました。Scalar::Util の Util.xs を見てください :) というやりとりがありま…

PL_check とパトリオットミサイルのしくみ

前回の記事はおかげさまで id:yappo さんに HE-N-TA-I 認定されたので安心してたら,マッチョな人に牛刀フラグを立てられ(もちろん冗談です*1),Shibuya.pm 入会への道もなかなか険しいなぁと思い知りました。そんな空気は読まずに理論編?を Perl 5.8.8 …

PL_check hack の旧スタブ

すいません。間違えて新しい記事にしちゃいました。ブクマしてくださった方々申し訳ないです。新記事 → PL_check hack - daily dayflower

PL_check hack

(あとでかく) XS くらいいじれないと Shibuya.pm に加入できないらしいので,とりあえず書きましたー。今回は実践編なので,あまりわかりやすい内容&たいした内容ではないです。わっふるさせてごめんなさい。 ゴール #!/usr/bin/perl eval 'print "Hello …

[http://search.cpan.org/perldoc?Web::Scraper:title=Web::Scraper] をつかってみた

ドキュメントねー,と思ったら Redirecting… みたいな素敵なチュートリアルがあったのでいまさらながら使えるようになりました。サンプル群も参考になりました。 はてブのホッテントリから,タイトル,URL,キーワード,タグを抜き出すのを書いてみました。…