Entries from 2009-01-01 to 1 year

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_…

Perlの正規表現のバグ? (後編)

追記: ケース4についての記述がなかったので言及。前回の調査で、[[:print:]] と \p{IsPrint} は実は等価でないということが分かったわけだけど、これだけではまだ再現できなかった理由、つまり、 use encoding 'utf-8'; $_ = "\t"; # 1. マッチしない print…

ワンライナーでパラパラ漫画作成ツール in JS

漫喫であまりに暇だったのでついカッとなって作った。 javascript:(function(d,w,h,z,f,t,u,a,n,c,o,p,m,q,i,j,s){s="n=d.createElement('canvas');with(n.style)width=n.width=w,height=n.height=h;n.setAttribute('style','position:absolute;left:0;top:0…

filter_var()関数の真価を見極める

もともとPECLにあって、PHPのバージョン5.2.0から標準に組み込まれたfilter拡張モジュール。URLのクエリ文字列やPOSTされた入力文字列の妥当性検査と「サニタイズ」という2つの役割を果たすもので、また突っ込みどころがいろいろあるんだけど、まあ利用法に…

続報: HTML5 ではいくつか valid らしい

8.6 Named character references を見たら、サポートされている実体参照の種類がぐっと増えてました。知らなかったー。HTML 5 でサポートされていないものの一覧も作ってみました。 参照名 Unicode文字コード (10進) 文字 HTML5での参照名 epsis 8714 ∊ - an…

PHPのhtmlentities()で (HTML4.0的に) 余計に実体参照に変換されてしまう文字の一覧

Bug #46478でid:hnwさんに報告していただいたバグを修正しようと思って作成したものですが…そもそもこのバグを作ったのは私で、5年くらい前の話になりますが、HTML4.0でサポートされている実体参照のテーブルではなく、Unicode 1.1 以降は obsolete となって…

なぜPHPのfgetcsv()はロカール依存という糞仕様なのか

前から言われてる、これ。(id:hnw さんも、もしかしたらこれは私が実装したということを知っていて自粛してるのかもしれないけど、そういう気遣いは不要です!)まあつまりですね、もともとfgetcsv()は「\」(0x5c) で次の文字をエスケープできるという割と不…

Perlの正規表現のバグ? (前編)

「鬼車の[[:print:]]はPOSIX流じゃないらしい」でid:ockeghemさんやid:nihenさんと先週いろいろやりとりしてた中で、一つだけ解決していない問題があった。utf8フラグが立っているかどうかでPOSIX文字クラスのマッチの挙動が変わるという件。 大変詳しい調査…

美人ゴルフ用サーバ

もうすっかり時期を逃した感があるけど、とりあえず書いてしまったので貼っときます。美人ゴルフをするのに、実在するwww.bijint.comのサーバにアクセスするのは、とてもよくないことになるかもしれませんよね!! なので練習用のサーバを書きましたよ東條さん…

美人ゴルフ

typedef char c;typedef int i;i sprintf(c*,c*,...);i socket();i close(i);i connect(i,i*,i);i read(i,c*,i);i write(i,c*,i);i***gethostbyname(c*);c*strstr(c*,c*);c*malloc(i);i open(c*,...);i main(){c*h="www.bijint.com",*t,*z;i b[]={0x50000002…

鬼車+Unicodeの\[\[:print:\]\]はPOSIX流じゃないらしい

追記: どっちが正しいとかそういう話ではないので念のため...。 追記2: Technical ReportがAnnexとなっていたのを修正。 追記3: 微妙に誤解があった部分を修正。結論としては同じ。id:ockeghem さんの、 「POSIX正規表現の[:print:]は改行やタブがマッチする…

SORT_REGULARはまあREGULARであってる

「PHPのsort関数は相当おかしい」のどこがオヤジギャグなのか一目で気づかなかった人は、PHPを今後使わないことを検討してください (俺含む)。さて、なんか「なんでこれが『SORT_REGULAR』なの?」「The language developed only by retards」とか「これがデ…

μPD7752エミュレータをJSに移植した

JSでCSM音声合成をやろうとしてたら (需要ありそうだし)、wonderflの「音声合成もどき」にちょっと先を越されてしまい、なんとかインチキできないかといろいろ考えて、ふとパピコンのエミュレータから持ってくればいいじゃんと思い立ち、探したらあっさりと…

PHP5.3のクロージャの謎というかPHPだから謎なんてない!な挙動

zend_compile.c を読んでいて気づいた。 これの結果が int(4)となる。摩訶不思議。みんな大嫌いなクロージャのuseキーワードは、5.1から導入されたcompiled variables(CV)という、ローカル変数アクセス高速化のための機構の実装が腐っているために導入され…

分け入っても分け入っても...

mb_check_encodingは何をチェックするのか(その3 UTF-8編)で指摘していただいた (thx!) バグを直しているときに気づいた。みんなよく聞いてくれ!悪いのはmbstringだけじゃないんだ!といって自己正当化してみるテスト。 結果 string(3) "123" string(8) "&…

PHPスクリプトでテンプレートの継承できたよ\(^o^)/

追記: 一部文字を実体参照化してなかったのを修正。typo修正。タイトルは若干 (というかかなり) 釣り。改造したPHPでテンプレートの継承 (もどき) をできるようにしてみた。ローカル変数が受け継がれないとか、まだまだ実用には耐えられるものではないので、…

LeopardのUNIXコマンドと環境変数COMMAND_MODE

昨日id:ichii386と id:ichii386「Solarisとかだといつもps -efってやるんだけど、Macだとだめなんだよね」 id:moriyoshi「え?使えるよ?何いってんの?」 という話になり*1、この違いの原因を突き止めることに。「バックドアとか仕掛けられてない?」「んなわけ…

undefinedだけじゃないのか、デフォルトのグローバルオブジェクト

ECMA-262を読んでいたら、たまたま見つけたのでメモ。いつもNumber.NaNとか使ってた。 15.1.1 Value Properties of the Global Object15.1.1.1 NaN The initial value of NaN is NaN (8.5). This property has the attributes { DontEnum, DontDelete}.15.1.…

BP Study #17での発表のために作成したサンプルコードとその解説

追記: 一部意味不明な箇所を修正公開する機会がないなあと思っていたので。 ※スライド自体はここにあります。 1. パイプラインパターン 以前にもこれは言及したことがあるけど、GoF的なパターンとして確立しているというよりかは、定石だということでパター…

Issue #4753: Faster opcode dispatch on gcc

追記: typo修正。テストコードに余計な「r」が含まれてたのと、「PICコード」とか間抜けなこと書いてたのを。Issue #4753職場でも話題になったので。このパッチのコメントによると、threaded codeにしたほうが分岐予測が効果的に働き、15%-20%ほど速くなると…

Adobe MAXのセッションでなぜか発表してきた

2009/2/23追記: 発表資料はこちら。最近「何の人かわからない*1」とよく言われ、アイデンティティを喪失しつつある今日このごろ、Adobe MAXというアドビさんのイベントの午後のセッション「出張JUIカンファレンス - Flashはもういらない?」にて、kawa.netの…

文字列繰り返しベンチマーク take 3

これの続き。 なんかかなりjitterがあるみたいでおかしな結果になってるんだけど、アルゴリズムごとの特徴は出てるので。 - Chrome FF3.0.5 FF3.1b2 IE6.0 IE8.0b2 Opera Safari WebKit/r40352 concat_op 32 203 150 747586 453 156 51.5 32 join 36 478 596…

弾さんに言及されたので

まさに同じコードでベンチマーク取ってる途中で (や、まじで) エントリを書かれてしまった。なんで気づかなかったんでしょうね。こういうの。ここで言及していただいてることなんですけどね。ちなみに。あと new Array(n).join(s); はどうかってブクマコメを…

昔の機械の音声合成についてのまとめ

追記: 手元のデータシートに従って、YM3526について言及。正式にはCSM音声合成モードでした。 追記2: PC-6001mkIIに内臓されているのはフォルマントボイスシンセサイザーのμPD7752でした。なんか今日話に上ったので。 ファミコンのサウンドチップ *1 にはDi…

文字列繰り返しベンチマーク take 2

追記: もっとよいアルゴリズムについて教えてもらいました (1, 2)。新しい結果とコードはこちら。TraceMonkeyの結果が不正確だったので取り直した件ですが…。速くはなったけど、あまり変わらず。という残念な結果に。 Chrome FF3.0 FF3.1b2 IE6 IE8 Opera9.6…

JavaScriptでExcelのドキュメントを生成してみた

時間がないのでまだPoCの段階だし、手短に。MS ExcelとかWordとかいろんなマイクロソフト製品の文章ファイルのバイナリ形式は「OLE2 Compound Document」というファイルシステム的な構造を持ったコンテナがベースとなってまして、昨日今日で、これを作ること…