めも
KinoWiki パーサ
ある程度複雑なもの渡すとものすっごい時間かかったあげくメモリ食い尽くして*1残念なことになるんだけど. 解析の結果ひとつひとつ全部オブジェクトにしていくとか割と贅沢なコードだった気はするけど,ただのテキスト解析でメモリ溢れるってどうよ.
どっかに不正に無限ループしてたりとかだろうか.でも,ちょっと中身減らすとぎりぎりメモリ制限に収まるのか,通ったりするんで,普通に超メモリ食ってるだけの気も.地の文が長くても平気なんだけどプラグインに渡す文字列が長くなると顕著に重くなるから,その辺見てみるかなぁ.
うん,やっぱこういうことを考えると,メジャーで利用者多くて十分テストされているもの使った方が安心というのもわかる.
- coreserver のモジュール版 php の制限は 90 MB なんだけど普通に食らいつくす. [↩]
気づくとメタプロ
NScripter 流の書き方がさっぱりしっくり来ない.例えば
if $%0 == ”unko” hoge: hige: hage
とかが見た目としてひどい*1.ブロック文もどきもうちょっと頑張ってくれよ,for 文は当然のように行またぐのに…….
とかいうイライラが募って,
if $%0 == “unko”
hoge
hige
hage
fi
を最初の奴に置き換えるとかいう順当なマクロをぼちぼち作って前処理をやっていた
つもりが,気づくとあんまり NScripter のコードに見えないそれをコンパイルするとスプライト番号自動で振ったりボタン待ち後の飛び先ラベルが自動で用意されたりする何かになっていた.
マクロからテンプレートへ的人間の欲望を垣間見た気がした.
そんなもんまじめに作ってたら年が明けるので我に返ってぶん投げたけど,同じような何かはどこかで見た気がする. NScripter スクリプトと吉里吉里スクリプトの相互コンバートだったかなんだったか.
まじめな言語でやると気が遠くなる素人はノベルゲーム(笑)のスクリプトでメタプロもどきをやればいいと思うよという話.ONScripter のソースは読んでる.
役に立ちそうな方向としては話題の js エンジンか.v8 とかでもふーん,って気軽に読める程度の能力になりたいもんだ.
あとどうでもいいけど NScripter では
mov %0, 255
とかやって代入するんだけど,見た目にアセンブリ言語的なんでなんか難しそうなことやってるカコイイ! って思うかもしれないけど実際はものすごーく簡単でどうしようもない感じなんだよね.かろうじてポインタがあるくらいで,抽象度はアセンブリ言語と比較しちゃいけないレベル.
そのギャップがウケるんだけどね.こういうと漏れなく作者さんに失礼だけど,「俺ってアセンブラ使えるんだぜ! 確かこんなんだろ!?」 とか門外漢が記法だけ真似たっていう感じがしまくっている.いや俺も門外漢だけどさ.
でも %0 = 255 とか %0 = %0 + %1 とかを許可せずに mov %0, 255 とか add %0, %1 とか強いる理由って再帰的な構文解析めんどかったから以上でも未満でもないよね*2.
とかうだうだと文句言いつつもありがたく使わせてもらってます.
あー Flex でノベルエンジン書きたいな.
Automated 受験数学
最近なぜか知らないが基礎から標準未満くらいの難易度の大学入試数学を見たり解いたりしまくっていて.
標準レベル以上になるとなんつーか論理的思考だの体系的知識だのが 3ml くらい必要になるけど,ある程度のレベルまで……まあ偏差値 60 くらいの大学までの問題って,問題文の中に解法の全てが陽に含まれているっていうかさ,いやそりゃ問題の中に解答が意味的に含まれてなかったら受験問題にできないけどさ,レベルが低いと明らかにこうすれば解けますよっていう一対一対応が表面的にも見えるじゃない.
で,大昔つーか現役受験生の頃,受験数学の問題くらい自動で解けるんじゃないと思ってたんだけど,表面的な問題文を読み込ませるだけで解答を作成するプログラムっつーのは程度問題はあれど微妙にはできそうだしある程度面白そうだよね.
いや自動証明むりぽとか,それなんて劣化 Mathematica,とかいう話はあるけど,範囲を大学受験数学というどうしようもない範囲に絞れば,場合によっちゃ解釈にゆらぎがあるだめな書き方がしてありうる日本語数式まじりの「問題文そのもの」を読み込んで自然言語処理的な意味で頑張るのとか,そこから受験数学的に点数が引かれない答案*1はどういうものかを推論して出力するのとか,頑張り所があって面白そうだという話.
とかいうことを思うあたりだいぶ言語情報科学的思考回路にはなってきたのかなと.
満点とかが取れるようなところまで到達するのは常識的に考えて無理だなと思うけど,進研模試読ませて何点取れるかなとかやれる程度のところまでは偉大な感じの人がやれば行くんじゃない? 幾何が超難関のような気がするけど,数と式とか二次関数とか微積とか数列とか行列とかカモれば若干の点は取れる気がする.つーか同じような発想のプロジェクトは世界にいくつもあるんだろうな調べてないけど.
コンテスト形式で集まってそれぞれのプログラムの作った解答を採点した結果で競うとか.そんでやったー俺偏差値 55,とか喜ぶと面白げ.と思う人が世界に何人いるのかは知らない.
ほんと,頼むからもうちょっと社会に役立ちそうなことに興味を持ってくれと言いたくなる.
- 例えば増減表が書いてあるとか. [↩]
Tsuikyo_js のブラウザ別パフォーマンス
先日の Tsuikyo_js の余談.JavaScript のパフォーマンスが第何次か知らないけどブラウザ戦争でアツいとかいう話.
個人的にはブラウザは他にもっと重視することがあるだろって思うので js の速度だけ重視する気はない(というか俺の用途では Fx2 並の速度で足りてる)んだけど,まあ速いに越したことはないんじゃないでしょうか,みたいな傍観姿勢だったけど一度くらい体感しておいて損はないだろ.
Tsuikyo_js めがっさ遅かったらどうしようという不安もあったし,ついでなのでそれでベンチ.DOM 操作のスピード等はどうせそんな激しいことはしないだろうからどうでもいいが,文字列処理とかオブジェクト操作とか基本的なパフォーマンスはあると嬉しく,それ測るなら実際に Tsuikyo_js 動かしてやれば十分という判断. 中でやってる処理のことよくわかってる分,そのへんの総合ベンチの結果より実感が伴うのもいい.
|
E6600@3.0GHz AddWord(ms) |
E6600@3.0GHz Stroke(ms) |
U1300@1.1GHz AddWord(ms) |
U1300@1.1GHz Stroke(ms) |
|
|---|---|---|---|---|
| IE6 | - | - | 2318 | 1687 |
| IE7 | 781 | 422 | 2156 | 1437 |
| IE8 | 578 | 313 | - | - |
| Fx2 | - | - | 1579 | 1000 |
| Fx3 | 136 | 92 | 386 | 268 |
| Opera9 | 203 | 125 | 641 | 390 |
| Safari3 | 187 | 110 | 534 | 289 |
| Chrome | 37 | 57 | 140 | 156 |
| lunascape | 125 | 74 | 356 | 212 |
抜けてるトコは試せてない.AddWord は 1000 ワード分オートマトン作るのにかかった時間で Stroke は正しいキーを 10000 回(打ち切ったらワードに変えつつ)受理させた時間.
RSS が随時更新状態になる件
気づいている人は気づいていて UZEEE と思ってると思うんだけど,ここの RSS/ATOM が頻繁に更新扱いになっている*1.
この間はったニコ動 iframe もどきのせいです.うちの子が悪さをしたようで……ほら,あんたもちゃんと謝りなさい!
WP はデフォだとばりばり動的にいろんなもの吐いて,ATOM とか RSS もそうなんだよね.リクエストある度にデータベースに問い合わせて最新の内容返してる.
で,それはまあリソースが十分にあるなら便利なのでいいんだけど,例のニコ動プラグインがまたリクエストある度にニコ動 API 叩いて再生数とか随時最新のものをご出力なさるので,RSS とかに含まれる再生数とかが毎回カウントアップしていく. だから単に diff とるような RSS リーダだと更新扱いになっちゃうみたいなんだよね.
規格とか一般的なクライアントの仕様とか細かいこと調べないで言ってるけど,少なくともうちの環境ではなってるので,いい迷惑ですよ,ええ.
WP 本体の RSS や ATOM 出力の部分を弄るか,ニコ動 iframe もどきプラグインを弄るか……と考えたんだけど全然生産的な活動じゃないのでやりたくない.
というわけでとっととエントリを投稿しまくって RSS から該当エントリを追い出そうという,なんともアレな作戦に出ることにした.
はい,これで 1 エントリ.
- かもしれない.追記分のみ新規更新とみなすようなクライアントだと大丈夫かも. [↩]
phiz 弄り
情報科学分科でもらったアカウントの話*1
基本的に学科内の端末アクセス用で,一応メールアドレスもついてくる,くらいの認識だったんだけど,口頭で説明を受けたときに 「web スペースはあくまで東京大学の学生としてふさわしい,学術用途の内容でおながいします……」 みたいな下りがあったので,web スペースももらえるのか? と期待を膨らませた俺.
システム関係でわかんないことあったらここで聞いてね,と言われてる相談室的な部屋に入るとバイトで常駐してるんだと思われる TA さんが当然ニコニコ見てたので質問.
俺 「Web スペースってもらえるんですか?」
TA 「え,……知らないですね」
俺 「なんか説明のときに若干話があったんすよ.でも紙に詳細書いてないしぐぐっても phiz.c.u-tokyo.ac.jp な URL ってここの admin さんのくらいしか見あたらないし,どうなのかなーと」
TA 「わからんので他の TA にも聞いたりして調べておきます」
俺 「あと ssh とかどうもつなげそうな雰囲気なんですけど勝手につないでいいですぅ?」
TA 「私お留守番程度にいるだけなので.後日調べて連絡します」
俺 「了解ですぅ」
(以下オナニーなので more しておく)
wp-pukiwiki 導入
日本人なら PukiWiki (笑)だよねーというわけじゃないんだけど WordPress で Wiki 記法したくて探したらとりあえずそれが見つかったので入れたメモ.
- プラグイン本体: wp-pukiwiki v0.2
- WordPress v2.6.2
- PukiWiki v1.4.7
プラグイン本体とは別に,稼働している PukiWiki が一個必要. パーサ以下全部そっちの使うようで,プラグインは要するにインタフェースになるだけ.丸投げ.
本家の説明には 「PukiWiki 側に何か影響を与えることはないから,今稼働している手持ちの適当な PukiWiki を指定すればいいよ」 ってあるんだけど,新規に PukiWiki 設置してそこ指定した方がよいです.
なぜかというと確かにフィードバックはなんも起きないんだけど, PukiWiki 側からの出力をほとんどそのまま使う都合上,そっちの出力自体を適当カスタムできたほうが都合がいいんだよね.既存のを使うとそちらに影響が出てしまって適当にやれない.コンバータと割り切って新規に設置しましょう.
インスコまで問題ないけど実際に Wiki 記法で書いてみると色々不具合があったのでそれぞれ対処療法.
- 見出しに aname ついてうざい
=> PukiWiki 側 plugin/aname.inc.php を編集して削除 - 見出しから目次へ戻るリンクがうざい
=> PukiWiki 側 default.ini.php にて $top = “”; - リストを階層構造にすると </p> が無駄に挟まってうざい
=> PukiWiki 側が改行した html を吐いて,その改行を WP 側がなんか処理してる気がする
=> PukiWiki 側 lib/convert_html.php 内の join(”\n”, ~ ) 潰したら解決した - 脚注がないときにも </pukiwiki> の直前に水平線入ってうざい
=> PukiWiki側で消してもつく
=> wp-pukiwiki.php 内 wp_pukiwiki() がやってた.そこで弄ればよい - wiki 記法で書いた部分が <div id=”preview”> でくくられてるため 1 ページの中に複数 wiki 記法で書いた部分があると id 重複してバリデータに怒られてうざい
=> PukiWiki 側 plugin/edit.inc.php にそれを吐いている部分があるから id を class にしてみる
=> wiki 記法で書いた部分が丸ごと出力されなくなる
=> wp-pukiwiki 側で <div id=”preview”> で判断してるコードがあった.そこも class に置換でなおた
以上で,べた打ちしたエントリに wiki 記法で書いたエントリ混じっててもわからない程度にちゃんとした出力になりました.
リストの階層化あたりが便利なのでたまに使うかもしれない.
GD のリサイズが汚い - GD は餅屋でした
GPL な拾いものライブラリの中に typo があるだけだった.
if (function_exists(”imagecreatecruecolor”)) {
$new_image = imagecreatecruecolor($new_size[0], $new_size[1]);
} else {
$new_image = imagecreate($new_size[0], $new_size[1]);
}
s/cruecolor/truecolor/g
で無事
綺麗になりました.
エントリ書いてて「色足りてなくね?」と思って調べたら案の定色関連だったのでまあ書いた甲斐があったわ.
function_exists() とかあと eval() とか面白くていいけどこういうバグも当然生むわなぁ.
どうでもいいけど C と T を typo って qwerty じゃやらない気がする.dvorak だと隣接してる.とか,そういうことを考えてにやける俺であった.
GD のリサイズが汚い - 餅は餅屋か
php さまに数 MB とかある画像のサムネイル画像をキャッシュされてなければ動的に作って頂きたいなと思ってやってたんだけどリサイズが汚くて困った.
何も考えず imageCopyResampled 叩いてるだけなんで gd が悪いというか手抜きなのが悪いんだけど,それにしてももうちょいなんとかならんのか.最初 jpeg のクオリティの設定の問題かと思ったんだけど違った.
2560px × 1920px の元画像を 240px × 180px に縮小させたらこんなんなんすけど.上が gd で縮小,下が適当なペイントソフトで縮小.綺麗とか汚いとかいうレベルじゃない*1.補完失敗とか色合成失敗とかしてるような気配がする.
まあそもそもが綺麗に縮小するために特化したもんじゃないし,餅は餅屋ってことでサムネイル画像くらいローカルで作りましょうってことかね.
- もうちょっと綺麗にできてるのもあるけど.これは酷い例. [↩]
embed とかねーよ
いつになったら valid なものも吐いてくれるんだろう.下のエントリのやつ適当にやったら fx では読まれるけど IE6 あたりで読まれなかったようでしょぼーん*1.
<object data="http://www.youtube.com/v/a11blNPha4g" type="application/x-shockwave-flash" width="425" height="350"> <param name="movie" value="http://www.youtube.com/v/a11blNPha4g" /> <param name="wmode" value="transparent" /> <a href="http://www.youtube.com/watch?v=a11blNPha4g">http://www.youtube.com/watch?v=a11blNPha4g</a> </object>
調べたらこんなん出ましたのでメモ.
- なおしたけど. [↩]
サイト内検索
ログ
最近のコメント
携帯版

PC と共通の URL で OK.