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

Luaの区間

Luaの添え字が1から始まることは衆人の知るところである。毀誉褒貶について、私は知らない。添え字を1から始めるとLuaの仮装機械と標準ライブラリが喜ぶということを、私は知る。 それはさておき。 不要なメモリの確保は絶対悪である。もちろん、絶対悪など…

Lua 5.3の命令セット入門

MOVEを基準として、命令ごとにどれくらい時間がかかるかを比べた。当たり前だけれど、メモリ確保は時間がかかるので避ける。 MOVEとだいたい同じくらい MOVE LOADK LOADBOOL GETUPVAL SETUPVAL UNM NOT MOVEの1.5倍くらいまで ADD SUB MUL BOR BXOR BNOT VAR…

正規表現入門 (3)

前回までのあらすじ。EREに入門したはずなのに、Localeの隘路にはまりこんでいた。 今回のあらすじ。不正 (invalid) と未定義 (undefined) の隘路にはまりこむ。 正規表現クイズ! a{4,2} a{4}{2} ^$ $^ ^{0}$ ${0}^ 答えあわせタイム! a{m,n}はmがn以下で…

正規表現入門 (2)

前回までの正規表現! 「POSIX LocaleのLC_COLLATEにはcollating symbolもcollating elementもない。伝説の木の下で告白を、じゃなかった、POSIX Localeの下で[.または[=で始まるハイクを詠め。カイシャクしてやる」と言ったな。あれは嘘だ。ゴメン! ゴメン…

あるいはHash DoS

配列など存在しない(キットラー風に)。Luaには存在しない。 にもかかわらず、Luaのテーブルは配列のようにふるまう。あなたがC++ならば、連続した整数をインデックスに使うとき、Luaのテーブルはあたかもstd::vectorのようにふるまうと理解してかまわない…

正規表現入門 (1)

私の正規表現の理解は浅い。SUSのRegular Expressionsの節を読みたくないあまり、うっかりpcregrepを使ってしまうくらい浅い。と言い条、PCREとECMAScriptの正規表現の区別もあいまいだ。一念発起してEREの仕様を読みはじめた。なんたることか、いつのまにか…

配列など存在しない(キットラー風に)。Luaには存在しない。

配列など存在しない(キットラー風に)。Luaには存在しない。シークエンスは存在するけれど。にもかかわらず、LuaのJSONエンコーダは、テーブルをオブジェクトとしてエンコードするか配列としてエンコードするかを決定しなければならない。 典型的な問題の例…