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

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…

PerlのXSからPerlの関数を簡単に呼び出せるようにしてみた (C++で)

Perlの謎APIをwrapして、Perlスクリプトの関数をC++から簡単に呼び出せるようにしてみた。てか、 リファレンスカウントを透過的に行えるようpimpl形式のコンテナを使ってみる mortalを透過的に行えるようcall_sv()による関数呼び出しを完全にブラックボック…

Gripで作成したID3v2タグを含むmp3をiTunesで文字化けしないように変換するプログラム

Gripで作成したmp3をiTunesにインポートすると、ASCIIでない文字がことごとく化けるのでなんでだろうと思っていたら、Grip は文字列フィールドに UTF-8 を入れる際、そのフィールドのエンコーディングを UTF-8 ではなく ISO-8859-1 と指定するようなのだ、な…

Autorelease poolを見栄えよく使うマクロ

Objective-C + C99限定なんだけど #define pool for (NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; pool; [pool drain], pool = 0) とかって定義しておくと void foo() { pool { NSObject *obj = [[MyObject alloc] init]; [obj autoreleas…

現在表示中のページのはてなブックマークのコメント (ブコメ) を表示するブックマークレット

作っている途中でここの車輪の再発明をしていることに気づいたわけですが、こちらははてなスターも出るし、ブックマークレットを呼び出すためのブックマークをもう一度クリックすることで表示を消せるようになっているのでまあいいかとか思ってます。 javasc…

PHP5.3の名前空間の区切りを好きなUTF-8マルチバイト文字列にできるパッチ

id:sotarok が 本当ですか!!名前空間区切りがきれいなPHPくれますか!! http://wassr.jp/user/sotarok2/statuses/IYzUK778PO と言ったので、ぼちぼち作った。たとえば php.ini に namespace_separator=(´・ω・`)と書いたり、もしくは .htaccessに php_…