Entries from 2009-01-01 to 1 year

Ada を触っての個人的なメモ

あまりこういうチラ裏エントリは書かないつもりでいたけど。どうしても RHEL4 上で gcc 4.3 のパッケージを作らないといけないという状況にいて、何度も試行錯誤を繰り返す中、途中で出てくる gnat という文字がどうにも気になってしまったので Ada を触って…

PHP に autoboxing 追加するパッチ

先日は、大量の「これはひどい」タグをありがとうございました。これからも PHP の生けるマジコンとして突っ走る所存です。 配列は、以下のようにして繋ぐことも val = $a; } } function ref($a) { return new Ref($a); } ref(array(1, 2, 3))->val[0]; PHP …

「パッチを当ててやってもいいんだぞ、お前が嫌なら」

PHP では以下のように new してすぐメソッドを呼べない getOffset(); PHP で引数をそのまま返す関数を作っておくと便利 PHP はどうせマジメな言語ではないので自分用に作り替えるくらいが丁度いい。以下 diff↓

float型の値に対してビット演算する

id:ichii386 に phpでunsigned int超えそうなbit演算する方法っていいのないかな? と言われたので 64ビットアーキテクチャにすれば? と言ってみたのだが、一応、考えてみた。仕組みといっても大したことはなく、ソースの通り。52ビットまでならこうやってご…

言語の GC 機能と参照カウント (後編-1)

追記: 最後の図の「C」の参照カウントが 1 ではなく 2 になっていたのを修正 次回は cycle collector の実装と、回避方法について書く予定。 言語の GC 機能と参照カウント (中編) と 2008 年の 5 月 31 日に書き残して早 1 年と 2 ヶ月を迎えようとする中の…

テンプレートメンバ関数と仮想関数を (半ば強引に) 組み合わせる

c++

追記: タイトルが不正確だと思ったので修正。Wassr で id:kazuhooku さんがつぶやいていたので、それに触発されて。それにしてもこの 2 つは本当に水と油だね。typeinfo 見てディスパッチする、というのがばっちりはまる場合というのも結構ありそうだけど、…

push_back(...) vs. insert(end(), ...)

明らかに前者の方が速いだろうと思っていたがコンパイラをなめていたようだ。 g++ (Ubuntu 4.3.3-5ubuntu4) 4.3.3 Copyright (C) 2008 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty…

va_list を Boost.Tuple に変換する

意味あるかどうかわかんないけど思いついたので。↓以下テストコード

PHPEncode書いた

The JUI 2009 Returnsに参加してきました。発表者の皆様お疲れさまでした!!!!JavaScript は柔軟な文法を持っていながら、ドメイン特化型言語として生まれた宿命か、何度もその寿命を宣告されてきた言語だと思いますが、今回の発表はそんなことを微塵も感…

Objective-C を使わずに Cocoa を使ってみるテスト

PyObjC とか RubyCocoa とかの話ではなく、C で書くって話。 なんかも結局 #import 使ってるので全部自前で用意した次第。 $ gcc -o test test.c -framework AppKitなどとしてコンパイルして実行すると空のウィンドウが出現します。Objective-C 2.0 の API …

Quercus on GAE/J で Low-level datastore API を使う

昨日は GDD の GAE Hackathon で、id:kagigotonet さんと 2 人で PHP (笑) チームを作り、あれこれとやってました。私の方では結局 Quercus にパッチを当てて (バグを直して) Datastore の API を直接使えるようにするということをやりました。これまでも Da…

Issue 2517: Error when printing an exception containing a Unicode string

この先が気になって調べてみた。Issue 2517: Error when printing an exception containing a Unicode stringこの問題は デフォルトのエンコーディングが ascii となっている件→デフォルトのエンコーディングが「何のための」エンコーディングのデフォルトな…

VLゴシックのsynthetic emboldeningを抑制して、表示に高級感を。

Free な OS の標準的な日本語フォントとして Vine Linux をはじめ様々なディストリビューションに採用されている「VL ゴシック」。字体の見やすさなどから、徐々に愛好者を増やしているようなんだけど、前々から気にくわなかったのがこれの太字。小さい文字…

印刷して電車の中で読める (かもしれない) TCP ECHO サーバのソースコード (1)

アーキテクチャに関する質問として、「○○の仕組みってどうなってるの」というようなことを聞かれても、説明下手なせいか、なかなか口で説明できないことがある。そこで「UTSL (ソース読めばいいよ)」と言いたいんだけど、かといって実際に、これを読むといい…

select のなかみ

一応 select(2) も読んであったので説明しとく。メインループは非常に短いので抜粋。ここにはビットマップの転送処理は含まれていないので注意。max_select_fd() の前後が rcu_read_lock() と rcu_read_unlock() で囲まれているのは、ドキュメント (Document…

AcotieScriptはすでにllvmに対応している

yacc と lex で簡易言語の AcotieScript っての作ってみた→ http://github.com/moriyoshi/AcotieScriptというわけでみなさんよろしく まとめperlとrubyはparserをyaccでやってトークナイザはlex使わないで自前でやってる。 PHPもyacc使ってるが何かスッゲー…

epollのなかみ

よく C10K 問題とかいって epoll(7) の話が出てきて select(2) 遅いね poll(2) 遅いねってなるんだけど、正直なところ、これらのシステムコールを実際に使ってコードを書いてみたひとはどのくらいいるのだろう。ましてや eventpoll が何やってるか知っている…

llvm-py を使ってみた。

llvm-pyはドキュメントがめちゃくちゃよく書けているのはいいんだけど、バインディングとしての完成度は…普通かな。0 から 9 までの値をそれぞれ 2 倍したものを表示するサンプルを書いてみた。実は with を初めて使った。basic block (BB) のセマンティクス…

メタクラスと__getattribute__()

演算子オーバーロードがどう動いているのかを確かめるため、いろいろ意地悪なサンプルを書いてみる。 class MyType(type): def __init__(self, name, bases, dict): type.__init__(self, name, bases, dict) self.__add__ = lambda self, rhs: 1 def __getat…

SAXのハンドラをコンビネータっぽく書いてみた

これも有用性は不明。DOMツリーをトラバースするなりDigester (古い?)使うなりしたほうがいいと思いますけどね。 <document> <list> <item>a</item> <item>b</item> <item>c</item> </list> <list> <item>a</item> <item>b</item> </list> </document> こんな XML ツリーをパースするコードです。可読性はSAXハンドラを素で書いたにしてはいい方かもしれないけど、悪い。リフレ…

LinuxのFSモジュールを書いてみる (その2)

追記: コードに深刻な勘違いがあったので修正。前回は、ひとまず次のような機能を実装したモジュールを書いた。 ディレクトリを開く ディレクトリのエントリの一覧を取得する ディレクトリのエントリの属性を取得する ファイルを開く ファイルの内容を読む …

LinuxのFSモジュールを書いてみる

Fuseとか使えばまああっさりな話なんだけど、実際どう動くのかを知りたかったので書いてみた。もちろんFuseのソースは参考にしていない。それにしても本当に資料がないんだよなあ。結局ソース読み込んだ。というわけであんまりお作法的なものはよく分からな…

C++ で無理矢理 E4X のような XML 埋め込みを実現してみる

追記: id:hasegawayosuke さん曰く「c4xぢゃ?」E4X の E は embedded だと思ってたら ECMAScript だったのか。 まあ AS3 の E4X はなんなんだという話もあるわな…。 ついかっとなってやった。 int main(int, char **) { using namespace xml_builder; xml($ …

Python 2.6.1 + f2py (numpy-1.2.1) で生成されたラッパーが動作しない件

http://projects.scipy.org/numpy/ticket/964 more argument specifiers than keyword list entriesなどとぬかしやがります。ってか下位互換性をキープしてない Python も悪いし、変なフォーマット文字列を PyArg_ParseTupleAndKeywords() に渡している f2py…

JavaScript で x86 アセンブラ (32 bit) を書いてみた

4/22追記: Mach-O builder も実装したので Intel Mac でも遊べる。JQuery っぽい文法で、ブックマークレットとして簡単に遊べるアセンブラが欲しいと思って勢いで書いてみた (デモ)。とりあえず以下のサンプルが動くくらいにしか実装してない。 var buf = ne…

多バイト文字が通るようになりました。

GAE固有の問題と言うよりは、Quercusにもともとあった問題なんだけど、文字コードのハンドリングが恐ろしく適当で、まったく多バイト文字が通らないような状況だったのを、さらにパッチをあてて通るようにしてみた。ここのサンプルも文字化けせず動くように…

RPy の spec ファイルを書いた

R の Python バインディングである RPy の spec ファイルを書いた。

PHPをGoogle App Engineで動かす用のQuercusを公開した

追記: 詳細な手順がマイコミジャーナルに掲載されました。竹添さん、ありがとうございました。ここで書いた件ですが、forkしたコードをGitHubに上げました。http://github.com/moriyoshi/quercus-gae/手順は以下のファイルに書いてあります。http://github.c…

Google App EngineでPHPが動きました

詳しいことは明日書くけども、QuercusのSVN版とResinのソースの一部を使って、あとパッチあてまくって何とか動かせました。キャッシュなどでGAE固有の調整が必要なのでforkしようと思っています。sample 1sample 2 This is a quick attempt to run PHP scrip…

PHPにON ERROR GOTOが追加されました

先日は id:sotarok にきれいなPHPをあげたんだけど、今度はid:ockeghemさんが PHPの@演算子って、BASICのon error resume nextをどうしても連想しますね。えーっと、PHPの5.4でon error ... も追加されるのでしたっけ\(^o^)/ http://wassr.jp/user/ock…