ログ日記

作業ログと日記とメモ

PHP

タイプヒンティングからオブジェクトの配列をインジェクションするためにネームスペースを使って動的にクラスを生成する

オートロード関数を登録する。 動的にネームスペースを生成してクラスを定義してオブジェクトを生成する。

オレオレフレームワークのメモ

Maple再起動で振り返る国内PHPフレームワーク戦争の歴史 – この先生きのこるには ここにフレームワークの歴史が。 今もここの第3世代のまま進んでる感じなんだろうか。もう何年も前の記事だけれども。 xFrameworkPX コアの開発は一人だったような…たしか。 h…

xcacheを入れてみる

PHP

キャッシュ機構が欲しいけれどmemcachedまでは要らないかな、と思ってaptitude searchを眺めているとxcacheというのがあることに気付いた。 aptitude install php5-xcache使い方は検索しても全然出てこない。どこもインストールと速度調査の記事ばかり。 apt…

PHP5.3をインストールしたついでにlithiumのコードを読む

lennyにパッケージでインストールするには、sources.listに以下の行を追加すればいいらしい。 deb http://php53.dotdeb.org lenny all deb-src http://php53.dotdeb.org lenny all それから、PHP5.3の新機能を使ってコードを書くにはマニュアルや解説記事を…

BazaarからGitに移行した

少しだけ使っていたLaunchpadはやめてGithubに変更。 Launchpadってmixiみたいに段々見にくくなってるような…。 http://github.com/nishimura/laiz 取り敢えずローカルのリポジトリとLANのリポジトリとgithubとこんがらがりながら使ってみている。 もともと…

yasnippetのphp-modeでクラス名を自動的に挿入するようにした

class ${1:`(replace-regexp-in-string "^_+" "" (mapconcat #'identity (split-string ((lambda (a) (substring a (let ((case-fold-search nil)) (string-match "\\\\(/[A-Z][a-zA-Z0-9]+\\\\)+$" a ) )) ) (file-name-sans-extension (buffer-file-name))…

個人仕様のsnippet

(require 'yasnippet) ;; yasnippetのsnippetを置いてあるディレクトリ (setq yas/root-directory (expand-file-name "~/dev/yasnippet/snippets")) ;; 自分用スニペットディレクトリ(リストで複数指定可) (defvar my-snippet-directories (list (expand-fil…

yasnippetのphp-modeを書いた

http://d.hatena.ne.jp/n314/20091113/1258119022 これの続き。 個人仕様だけどGitの練習のために上げてみる。 http://github.com/nishimura/minimal-yasnippet-php-mode 見よう見まねなのでフォーマットには自信ない。 11ファイルだけなので、個人的にはhg…

PHPのクラスをextensionで構造体に変換してHaskellで操作する

http://d.hatena.ne.jp/n314/20090919/1253353885 の続き。 動作確認まで point/ /point2.xml /hs/ /point2/ point2.xmlを書いてひな形生成。 <extension name="point2" version="1.1.2"> <function role="internal" name="MINIT"> <code> </code> </function> </extension>

CodeGen_PECLとHaskellを使ってクラスを操作するExtensionを作る

http://d.hatena.ne.jp/n314/20090918/1253256703 の続き。 CodeGen_PECLをインストール。 pear install -a CodeGen_PECL作業ディレクトリ作成。 mkdir point cd point mkdir hs Haskellのコードを書いてコンパイル。 cd hs emacs point.hsmodule PhpPoint w…

PHPのextensionでHaskellを呼び出す

ソースをダウンロード。 apt-get source php5 cd php5-5.2.0+dfsg/ext ./ext_skel --extname=haskelltest cd haskelltest/comfig.m4 のコメント解除。 PHP_ARG_ENABLE(haskelltest, whether to enable haskelltest support, Make sure that the comment is a…

PHP Naive Bayesian Filter メモ

PHP

PHPでベイジアン。ソースを見ながら動作をメモ。参考:http://castor.s26.xrea.com/blog/2008/02/18 パターンの登録 train: 文章から分類用のデータを登録する。文章をトークンに分割してupdateWord、その後saveReference。 updateWord: {カテゴリ、単語}…

SPLのIteratorIteratorを使う

PHP

foreachで少しだけ表示を変えたい、イテレータのcurrentを表示のために少しだけ変えたい、という場合。 単純にイテレータを継承すると関係がややこしくなるので外部から書き換えたい。 というときのためのクラス。 callback = $callback; } pu…

途中でreturn

PHP

何度かネットで調べてるんだけれども迷う。 ソースを見る機会はC言語が多かったので途中returnが普通な感覚になってる。 でも例外があるんだから例外を使った方が分かりやすいのか…とか。 色々読んでたらPHPで考えることじゃない気がしてきたのでやめる。 HT…

例外とかインターフェースとか

PHP

最近、ディレクトリを役割別で分けたりインターフェースを使ってみたりしていて思ったこと。コードを書く速度が極端に落ちる。 かと言って品質が上がっているかは微妙。 前は一つのディレクトリに大量にファイルを置いていて、それを今回は分けるようにして…

引数を問わずにメソッド名だけをチェックするインターフェースがあればいいと思った

PHP

アクションクラスとかその他諸々のクラスで、引数のタイプヒンティングを見てインスタンスを自動生成するようにしている。 こうすると

FlexyのtemplateDirは複数指定できる

templateDirを複数指定したい場合はどうすればいいのか…独自にfile_existsで調べていってファイルが存在したディレクトリをtemplateDirに指定すればいいのか…とか色々考えてたけど、ソースを見たら元々複数指定できるようになっていることに気付いた。なんて…

エラー制御演算子 @ を使うことにした

PHP

随分前に速度とかissetとかの絡みで話題になってた。 include_pathを考慮しない読み込み系の関数(っていうかfile_exists)のために自分でinclude_pathを調べてたけどやめることにする。 includeやrequireで使うのはよくないっぽい記憶があったので、それはf…

sqliteでテーブル情報を取得する

PHP

http://php.net/ref.sqlite のコメント。 pragma table_info(tablename); を使うらしい。 tablenameは select name from sqlite_master; で。

PHPのフレームワーク作りたい熱がまた出てきた

Laizを軽く修正したらいけるかなーと思ったけど既存システムがそのまま動くように変更するのは無理だった。それならいっそのことゼロから作り変えてしまおうかと…。 最近のフレームワーク事情はさっぱり分からなくなってしまった。symfonyが流行ってるのかね…

autoloadをrequire_onceと同じように動かすためにはdebug_backtraceを使わないといけない?

PHP

読み込むファイルはまずカレントのワーキングディレクトリからの相対パスとしてinclude_path で探され、それから、カレントのスクリプトのディレクトリからの相対パスとしてinclude_path で探されます。 例えば、include_pathが librariesで、カレントの ワ…

PHPでTracのようなプラグインの仕組みを作る

PHP

Pythonを知らずにTracを触ってたので気付かなかったけど、Tracのソースに書いてあるInterfaceとかimplementsっていう仕組みはTrac独自なんだね。 だから自由にInterfaceの挙動を操作できる。 Interfaceが組み込みでも、リフレクションを使えば似たものが作れ…

Possible integer overflow in memory allocation

PHP

HTML_Template_Flexyでエラーが出た。 メモリを指すintegerポインタがオーバーフローした? php.iniのメモリの設定は関係ないみたい。 今まで出なかったのに新しいDebian etchを入れたマシンだと出る。 そういえば今まで使えてたpukiwikiでもエラーが出たこ…

タイプヒンティングとインターフェース

PHP

リンク元見てたら「php インターフェース タイプヒンティング」の検索が多数。 どこかで盛り上がっていたんだろうか…。 http://d.hatena.ne.jp/n314/20070128/1169999488 この辺の動きも今では何となく定まってきた。

PHP5.3のnamespace

PHP

メモ。 +1 means the separator is not affected negatively by the criteria +-0 means that the separator is only moderately affected by the criteria -1 means the criteria is severely affected by the criteria critieria \ ** ^^ %% :> :) ::: typ…

spl_autoload は LogicException を throw する

PHP

メモ。 spl_autoload_register を引数なしで実行すれば、spl_autoload が指定される。 で、spl_autoloadはクラス名に拡張子.phpと.incを付けて探してくれるので、これをそのまま使おうかなーと思ったのだが。 spl_autoload_register でいくつも関数を登録す…

flexy改造動画

巷では1000人スピーカプロジェクトというのが流行ってるらしい。 そっち方面のことはあまり知らなかったんだけど、flexyの話が出るということなのでちょっと調べてみた。 もう3回目になるんだね。 http://ja.doukaku.org/wiki/index.php/1000speakers phpLex…

久しぶりにflexyキーワードを見てみると・・

何気なく HTML_Template_Flexy のキーワードを見ていたら、パーサを解析している人を発見した!http://d.hatena.ne.jp/maru_cc/20080316/1205690507 どうやら2005年からTokenizer.lexをいじる日本人は増えていない模様。 私の場合はloop作ってid属性の動作変…

バグ修正がむずい

PHP

最近あまりPHP書いてない。 タスクの付箋が溜まってきた。 あとエラーメールも溜まってきた。 PHPのエラーをメールで送るようにしているんだけれど、Noticeの再現に困る。 たまにしか起きないっていうくらいだから、ある特定の状態のときに特定の操作をする…

flymakeで構文エラーをリアルタイムチェック

PHP

C用の設定はしていたのでPHP用の設定も追加。 emacs22以上だとflymakeがデフォルトで使える。 debianなので flymake-php.elの該当部分 をコピペして /etc/emacs/site-start.d/100flymake-php.el などに保存。 Shift-Cが入力できなくなるので、下記行をコメン…