PHP

hidefを試す

PHP

一流のペチパーとやらにもなれば、「PHPのdefineはコストが高いからねー」とドヤ顔で語りつつ hidef なるものを使うらしい。 http://pecl.php.net/package/hidef しかし、"PHP hidef"とかでググっても、インストールの仕方とかごく基本的なことはともかく、h…

serializeしたオブジェクトの継承元が変わったらunserializeできるのか?

PHP

疑問点。PHPにおいてオブジェクトをserializeし、その後そのオブジェクトの継承関係が変わったら、正しくunserializeできるのか?検証コード。親クラスなしのDogというクラスのインスタンスをserializeしたファイルに書きだした後、Dog name = $name; } publ…

チラシの裏

PHPのMemcache::deleteがなぜかfalseを返す・・・と思って調べていたのだが、 http://jp2.php.net/manual/ja/memcache.delete.php これか・・・・!? the Memcache::delete(key) function is broken on several combinations of memcached+pecl-memcache co…

yaml拡張の奇妙なバグ?

【追記】バグではなく、YAMLの「落とし穴」らしいという結論に達しつつあります。PECLのyaml拡張はナウでヤングなPHPerが腐りきったSpycやSyck拡張のかわりに使うらしいYAMLライブラリ。が、 int(12) [1]=> int(1) }のような出力結果になる。 CentOS 5.5 PH…

Facebookのコードレビューツール

WHAT IS ARCANIST?Arcanist is the CLI for Facebook's code review tool, Differential. Since Differential isn't released yet, it may not be terribly useful on its own. https://github.com/facebook/arcanist ということなので、ArcanistはFacebook…

セッションIDの作り方

メモ。 PHP REMOTE_ADDR, 現在の秒数, 現在のミリ秒, (0, 1)の範囲のランダムなdoubleを結合してランダムな文字列を作る session.hash_functionで指定されたハッシュアルゴリズム(MD5 or SHA-1)でdigestをする session.entropy_lengthが0以上が指定されてい…

PhpRedisのlists, sets関数にハマった話

PhpRedisとRedis 1.2.6で、 connect('127.0.0.1', 6379); if ($redis->rPush('php', 'sucks')) { // do someting } のようなコードを書こうとしたら、rPushがfalseを返してきて困った。rPushだけではなく、lists, setsの操作メソッドは軒並み駄目。しかし、…

Symfonyを書くのが楽しくなるTip

symfonyには"symfony cc"なる、僕のような初心者には何をやっているかよく分からないコマンドがあって、僕のような初心者はこれをタイプするたびに「symfony ccって何だよ。symfony(笑)」と思わずニヤリとしてしまって、そういうわけでなんやかんやでsymfony…

nginxでPHPを動かす

業界標準のCentOSで皆の大好きなPHPを皆の大好きなnginxで動かす。大前提としてnginxでPHPを動かすならば選択肢はFastCGIということになる。php-fpmというものがあるらしいが、できるだけ標準・準標準のRPMを使うことを考える。まず、CentOSの標準のPHPは--e…

誰が得するのか分からない

php_app - PHP eval server for Erlang/OTP http://github.com/skeltoac/php_app clone&ビルド。 $ git clone git://github.com/skeltoac/php_app.git $ cd php_app $ erl 1> make:all(). PHPを実行するサーバーを起動。 2> php:start(). PHPコードを実行。 …

The Return of Gearman

Eric Day氏による興味深いスライド。 Gearman and libdrizzle Slides The Return of Gearman(PDF) C版のGearmanライブラリとそれを利用したMySQLのUDF, PHP拡張について非常によくまとまっている。特に、UDFを利用したクローラーの例が参考になる。 MySQLに(…

MIME文書を解析する

Pythonで書けばこれだけのことだけど、 import sys from email import message_from_file msg = message_from_file(sys.stdin) for part in msg.walk(): tp = part.get_content_maintype() if tp == 'text': pass elif tp == 'image': pass elif tp == 'vide…

メールの送信にPEARのMailパッケージを使う

PHP

ちょっと気になって、PEARのMailとMail_mimeを調べていたのだが、普通に使えるライブラリっぽいので驚いた。PHPのmail関数とか、mb_send_mail関数とかは、今となってはどのように使うのか全く分からないし、何のために存在しているのか全く分からないが、PEA…

ネストしたループを抜ける

PHP

id:cocoitiにPHPでネストしたループ構造を抜けるには"break (ループ構造数)"を使うということを教えてもらいました。これは本当に知りませんでした。Live and learn !

終了タグ

PHP

久しぶりにPHPを触りました。しかもZend Framework。 Zend Frameworkを触っていて、「PHPの終了タグは省略できるようです inspired by phpspot開発日誌」というネタを思いついたが、微妙に既出なのかもしれない・・・ PHPの終了タグは省略できるようです htt…

焼肉デビュー

PHP

id:rskyさんを囲む会に潜入し、待望のPHP焼肉デビューを果たしました!

どうでもいい日記

PHP

久しぶりにPHPを触ると、mbstring.http_input, mbstring.http_output, mbstring.internal_encodingとかわけ分かんねーよ!

PHPプログラマにありがちだと思うこと

PHP

ふと思いついたので書き留めてみる。 別に他意はありません。 みんな自分のフレームワークを作っている。 みんな自分のORMを作っている。 「でも結局はSQLを直接書くよね」と言う。 みんな自作のテンプレートエンジンを作りたいと思っている。 実際に作っち…

Djangoプログラマから見たCatalyst, Symfonyの良いところ

最近、自分でCatalystで遊んだり、自分の周りで「空前のSymfonyブーム」が起きている??関係で、非PythonのWebフレームワークを触っています。備忘録がわりに、Catalyst, Symfonyがよいと思った点をメモしておきます。 Catalyst Catalystを完全に理解したと…

Picora

PHP

偶然発見したPHPのフレームワーク"Picora". これは本当に短いです。フレームワーク本体のコード行数は600行弱で、しかもその半分くらいはPHPDocのコメントです。 Picora - PHP Micro Framework http://livepipe.net/projects/picora/ そのかわり機能は限定さ…

デバッグフィルタ

そろそろ「サンプル・アプリケーションを動かすには?」、「画面が真っ白になって何も現れません!」という段階から脱するべきだと思い、Django風のデバッグ用エラー画面をOutputFilterとして書いてみています。 piece posted by (C)perezvon>

ファイルアップロード

だいぶ前に実装していて、すっかり忘れていました。 継続ベースのファイルアップロード機能 http://trac.piece-framework.com/piece-unity/ticket/47 この件、あとはテストコードを完全なものにするだけなので、当てにしていてください!サンプル・アプリケ…

そろそろ本気でSmartyを使いたい(3)

しばらくPieceから離れると、__flowExecutionTicketKey, __flowExecutionTicketというキーの名称を忘れてしまう。 そもそも__flowExecutionTicketは長い。 XMLHttpRequestで画面遷移を行ったり、EnterでフォームがSubmitされてしまう挙動を防ぐためのJavaScr…

そろそろ本気でSmartyを使いたい(2)

<form method="post"> <input type="hidden" value="{$__flowExecutionTicket}" name="{$__flowExecutionTicketKey}" id="flowExecutionTicket" /> <p> {piece_submit name="confirm" value="Back"} {piece_submit name="save" value="Save"} </p> </form> 上のようなテンプレートを書いたときに、 <form method="post"> </form>

そろそろ本気でSmartyを使いたい

Piece FrameworkではSmartyはなんだか使い難く、「関西方面ではFlexyを使っているんだろうな」と思いながら、騙し騙しSmartyを使い続けてきたのですが、Pieceで快適にSmartyを使うために、そろそろ本気で取り組んでみようと思います。(でも、もしかしたら、S…

PieceFramework Cheatseat

PHP

プラグイン設定ポイント KernelConfigurator キー 説明 デフォルト値 eventNameKey イベント判定用パラメータのキー _event autoloadClasses ? array() eventName 現在のリクエスト内でのイベント null(通常は_GET or _PORTから自動取得) importPathInfo ? f…

PHPプログラマ宣言

PHP

なんだか煮詰まってきたのと、しばらくさぼっている間にPiece Frameworkがパワーアップしているのと、それに、まだ公にできない神秘的・思想的理由により、しばらくPHPのプログラムを書く事にします。期間は、高階関数やジェネレータが恋しくなるまで。 以下…

YAMLラッパー

PHP

PHPでYAMLを扱う際に、SpycとSyckを意識したくないので、ラッパー・ライブラリを書きました。機能、特徴は、 エラー処理はPEAR_ErrorStackで。 Syckが使用できれば、そちらを使う。 spyc.php, spyc.php5の面倒を見てくれる。 こんな感じで使用します。

Session, Flowの中でファイル・アップロードを扱う

PHP

PHPオブジェクトの特殊メソッドに__wakeupと__sleepというものがありますが、あまり有効に利用されていないような気がします。 __sleepを利用した例として、次のような事例を考えてみました。 PHPのファイルアップロードで作成されるテンポラリファイルは、…

Oh please

PHP

コメントは積極的に書こう。例えば、PEAR::HTML_AJAXのこのコードのように。 // HTML/AJAX/JSON.php line 155 // oh please oh please oh please oh please oh please if(function_exists('mb_convert_encoding')) return mb_convert_encoding($utf16, 'UTF-…