php

俺とPHP

php

なんか知らないうちにPHPを全然書いたことがないという噂が広まっていて心外すぎるので弁明しておく。長くなるかもしれない。PHPを使い始めたのはちょうど10年くらい前のことだと思う。4.0.3 あたりが出た頃だ。当時友人たちとシラバスの情報を共有するサイ…

なんで PHP をつかいつづけるのか

php

PHP を使い続けたいと思うように PHP 自体を変えていくという発想が必要です。 http://wiki.php.net/rfc/builtinwebserver

pixiv Tech Meeting #1 にて発表してきました。

ひょんなことで pixiv といろいろ縁があったので発表に至りました。 PHP を JS に変換する「Phjosh (仮)」についてです。誰にも聞かれなかったのであえて書くと、Phjoshの開発者の脳内発音は「fjosh」みたいな感じです。Phjosh(仮)プロジェクトView more pre…

php_threading

なんか完全に冗談のつもりで作った threading 拡張モジュールを、Alec さんという方がつい本気にして Windows にポートしたそうです (しかもネイティブスレッド使って)。http://news.php.net/php.internals/49486参照カウントをアトミックに増減させるとかそ…

sotarokを勝手に祝う会

sotarokを勝手に祝う会に行ってまいりました!僭越ながらこのたびはLTをさせていただいたので、その内容の紹介をさせていただきたく。(日立風)皆様ご存知のことと思いますが、OSSコミュニティーにおいて、開発者が結婚する際には、新郎と新婦にオリジナル○○○…

LLTigerで発表しました -Language Update編-

資料あげときます。Xlib.php は http://github.com/moriyoshi/php-Xlib/ よりとってきてください。 "/System/Library/Fonts/ヒラギノ明朝 ProN W6.otf", 'courier' => "/Library/Fonts/Courier New Bold.ttf", ); $texts = array( array("はい"), array("始…

Python Hack-a-thon #4 にて話しました

php

追記: 4回目でした。タイトルを修正。thanks to id:ymotongpoo . 追記2: id:ymotongpoo が当日の様子を録画してくれていました! 説明を端折りすぎて、何言ってるか分からない人も多かったのではないかと思うので、どうせネタなんだけど改めて書く。端的に言…

動的な配列サイズの増やし方 - PHPの場合

php

もう誰か触れてそうなもんだけど。 PHP : 2 倍?(これは PHP から使う配列の実装とは別物かな…?) // Zend/zend_dynamic_array.c : 43行目〜 if (da->current == da->allocated) { da->allocated *= 2; http://www.kmonos.net/wlog/111.html?_2334100705 P…

興味のある言語にPHPと書いておいたら面接で爆笑された

php

Inspired by http://anond.hatelabo.jp/20100125020240 Perlエンジニアを募集してる会社の採用面接を受けた時の話。 転職エージェントに作れと言われて作ったシートに、「興味のある技術/言語」という欄があったんです。 PSGI/Plackとか色々書いたけど、プロ…

Boost.PHP で SPL のイテレータを実装する

残念ながら所用で参加できなかった モダンPHP勉強会。SPL の発表を Ust 経由で聞いて楽しくなってきたので、Boost.PHP でインターフェイスを実装できるようにしてみた。追記: Boost.PHP の導入については、id:Kiske さんが素敵なチュートリアルを書いている…

display_errorsが謎の副作用を持っている箇所について

昨日 id:narusase さんよりお便りをいただきました。 はじめまして narusaseです。↓このあたりに軽くまとめてありますが・・・ http://d.hatena.ne.jp/narusase/20091203 http://d.hatena.ne.jp/narusase/20091204htmlspecialcharsのdisplay_errorsの解釈が…

Ada, Go, Erlang, Scala, Stackless Python, Java (java.util.concurrent), シェルスクリプトの適当すぎる比較

同じようなコードをそれぞれの言語で書いてみた。Ada: with Ada.Text_IO; with Ada.Strings.Unbounded; procedure MyTest is use Ada.Strings.Unbounded; use Ada.Text_IO; task MyTask is entry Hello(Message: String); end; task body MyTask is Received…

PHPにメッセージキューとそれを扱う糖衣構文を実装してみた (「PHPのすべらない話 #3」)

Goにできて、PHPにできないはずはない!というわけでやってしまいました。まあ、これにメッセージキューとメッセージスロットを足しただけなんですが。

PHPの「えせプログラミング言語」の弊害

先日のエントリーでも少し触れたが、PHPの最大の問題点は、それが持つ「一見その言語構造がよくあるプログラミング言語の形をとりながら、プログラミング言語の最も大切なところを外している『えせプログラミング言語』である」点にある。Webアプリケーショ…

PHP をテンプレートエンジンとしてもっと頑張らせるパッチ

これは発表中に紹介したものだけど、「意欲的」な内容の割におもしろさが伝わらなかった気がするので改めて紹介。 きょうび論理構造を無視して、純粋に入力を文字列として扱うテンプレートエンジンっていらねーって思いませんか? PHP はテンプレートエンジン…

PHPカンファレンス2009へのご来場ありがとうございました

追記: スライドの TMP_VAR の図に誤りがありましたので差し替えました。と、まるで主催のような言い方になってしまいましたが、いやいや、主催の方々はほとんど睡眠してないとのことで、本当に頭が上がらないです。本当に発表の場をくださったことに感謝しま…

これまで作成した変態パッチを管理しているgithubのレポジトリ

追記: 漏れていた 2 つのパッチを追加 追記2: git fetch が抜けていたので訂正 実はこれも発表の際に降れておくべきだったんだけど、PHP のソースコードの VCS が subversion に移行したおかげで git のミラーが実現し、楽しくパッチを VCS で管理しつつ ups…

Phython がようやくまともに動くようになってきたので告知

Phython は、PHP だけで実装された Python の処理系です。になる予定です。名前から思いついて最近こつこつ作ってきましたが、今のところ、組み込み関数とかはまったく実装されておらず、またスクリプト中でクラス定義もできないなど、ほんとに基本的なもの…

PHP カンファレンス 2009 で喋ることになっているようです

09/05 (土) のテックデイで『PHP を「いじり」倒す 10 の方法』と題した発表を行います。内容は…このブログで紹介してきた ZendEngine ハックなどの詳細を説明したりとか、PHP のエクステンションを簡単に作る方法を紹介したりといった感じです。PHPは高性能…

PHP に autoboxing 追加するパッチ

先日は、大量の「これはひどい」タグをありがとうございました。これからも PHP の生けるマジコンとして突っ走る所存です。 配列は、以下のようにして繋ぐことも val = $a; } } function ref($a) { return new Ref($a); } ref(array(1, 2, 3))->val[0]; PHP …

「パッチを当ててやってもいいんだぞ、お前が嫌なら」

PHP では以下のように new してすぐメソッドを呼べない getOffset(); PHP で引数をそのまま返す関数を作っておくと便利 PHP はどうせマジメな言語ではないので自分用に作り替えるくらいが丁度いい。以下 diff↓

float型の値に対してビット演算する

id:ichii386 に phpでunsigned int超えそうなbit演算する方法っていいのないかな? と言われたので 64ビットアーキテクチャにすれば? と言ってみたのだが、一応、考えてみた。仕組みといっても大したことはなく、ソースの通り。52ビットまでならこうやってご…

PHPEncode書いた

The JUI 2009 Returnsに参加してきました。発表者の皆様お疲れさまでした!!!!JavaScript は柔軟な文法を持っていながら、ドメイン特化型言語として生まれた宿命か、何度もその寿命を宣告されてきた言語だと思いますが、今回の発表はそんなことを微塵も感…

Quercus on GAE/J で Low-level datastore API を使う

昨日は GDD の GAE Hackathon で、id:kagigotonet さんと 2 人で PHP (笑) チームを作り、あれこれとやってました。私の方では結局 Quercus にパッチを当てて (バグを直して) Datastore の API を直接使えるようにするということをやりました。これまでも Da…

多バイト文字が通るようになりました。

GAE固有の問題と言うよりは、Quercusにもともとあった問題なんだけど、文字コードのハンドリングが恐ろしく適当で、まったく多バイト文字が通らないような状況だったのを、さらにパッチをあてて通るようにしてみた。ここのサンプルも文字化けせず動くように…

PHPをGoogle App Engineで動かす用のQuercusを公開した

追記: 詳細な手順がマイコミジャーナルに掲載されました。竹添さん、ありがとうございました。ここで書いた件ですが、forkしたコードをGitHubに上げました。http://github.com/moriyoshi/quercus-gae/手順は以下のファイルに書いてあります。http://github.c…

Google App EngineでPHPが動きました

詳しいことは明日書くけども、QuercusのSVN版とResinのソースの一部を使って、あとパッチあてまくって何とか動かせました。キャッシュなどでGAE固有の調整が必要なのでforkしようと思っています。sample 1sample 2 This is a quick attempt to run PHP scrip…

PHPにON ERROR GOTOが追加されました

先日は id:sotarok にきれいなPHPをあげたんだけど、今度はid:ockeghemさんが PHPの@演算子って、BASICのon error resume nextをどうしても連想しますね。えーっと、PHPの5.4でon error ... も追加されるのでしたっけ\(^o^)/ http://wassr.jp/user/ock…

PHP5.3の名前空間の区切りを好きなUTF-8マルチバイト文字列にできるパッチ

id:sotarok が 本当ですか!!名前空間区切りがきれいなPHPくれますか!! http://wassr.jp/user/sotarok2/statuses/IYzUK778PO と言ったので、ぼちぼち作った。たとえば php.ini に namespace_separator=(´・ω・`)と書いたり、もしくは .htaccessに php_…

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

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

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

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

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

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

鬼車+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」とか「これがデ…

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でテンプレートの継承 (もどき) をできるようにしてみた。ローカル変数が受け継がれないとか、まだまだ実用には耐えられるものではないので、…

Memcache拡張モジュールを透過的に扱えるパッチを書いてみた。

PHPなんだから透過的にmemcachedとか扱えないとまずいでしょうということで。要はphp.iniに # 以下の書式が利用可能 # hostname # hostname:tcpport # hostname:tcpport:udpport # [hostname] # [hostname]:tcpport # [hostname]:tcpport:udpport memcache.a…

Python温泉でやったことのまとめ

実はPython温泉に行っていました。 1日目 夕方まで仕事のバグハンティング。 Boost.Asioを触ろうとコードを書き始める。 途中でBoostをMac OS XのframeworkにしたくなってきたのでBoostのビルドシステムの調査を開始。 夕食。奇妙な自己紹介 (「はじめにお詫…

kmyaccのPHP対応パッチをリエントラントにしたよ

今回作ったものをどう簡単に説明できるかわからないけど。id:kmori58さんによるyacc系パーサジェネレータkmyaccを「ベイエリア情報局: PHPのyaccを作ったよ」でbtoさんがPHPに対応させたものをさらに拡張して、クラス形式のパーサを生成できるようにしてみま…

kmyaccで$の扱いを柔軟にするパッチ

PHP+kmyacc (あるいはperl+kmyacc) を使うときに面倒なのが意味値 (semantic value) を指定するときに使う「$」の扱い。$$ とか $1 とか $ とか $-1 とか以外は普通に変数として見てほしいのにそのへんは甘くない。なので強引にパッチあてて回避。WTF factor…

おれおれWebアプリフレームワークを勢いで(しかもPHPで)書いてみた

はじめに いったい、一日に何個のフレームワークが生まれているのだろう。そんな疑問が浮かぶほど、PHPによる (Webアプリ) フレームワークの数は尋常じゃない*1。そして、PHPほどプログラマにフレームワークを書かせる気にさせる言語も他にはないんじゃない…

PHP Con 前日Hackathonに参加してきましたー

id:kunit さん超おつかれですー。ちなみに、私はMozo.PHPのPHP 5.3対応とオブジェクト対応をやりました。追記: id:masaki-fujimotoが本気を出してTokyo Dystopiaの拡張モジュール書いたみたいなのでみんなで使い倒しましょう。

PHPerはもっと__toString()を使ったほうがいい

PHP

(前回までのあらすじ) 「PHP」とは最近流行の、ドメイン固有言語だったものが汎用化してえげつなくなったスクリプト言語です。 val = $val; } function __toString() { return htmlspecialchars($this->val); } } $vars = array( 'a' => '<test>', 'b' => '<aho>', 'c' </aho></test>…

Mozo.PHPのアーカイブを更新しました。

オレンジニュースにて紹介していただいたようなので、ダウンロードのリンク先を修正しておきました。RSSリーダで再度上に上がってきてしまった方、すみません。こちらにも念のため: http://voltex.jp/downloads/mozo-php-20080405.tar.bz2

GNU Pthを使って、PHPでユーザスレッドを実現する

のをやってみた。もうちょっと作り込んでから、と思ったけど、まあまあまともに動くので先に公開。次のようなスクリプトがさくさく動いちゃうよ!

Mozo.PHP をレポジトリに上げました。

ちょ、freehg.org は神。http://freehg.org/u/moriyoshi/mozo-php/を参照してくださいまし。ついでに PHP の parser と lexer を C++ に移植したやつ。 構文木作るとこ*1まで行ったままで止まっているこの子を誰か拾ってください。http://freehg.org/u/moriy…

Mozo.PHP (その3)

今日の最初の方にリリースしたものはメモリリークします。 本気で使っている方はここから最新版を再度落としてください。 エラー処理 (1) C++ の関数からエラーを出して呼び出し元に復帰したいときは、mozo::php::runtime_error を throw します。 throw php…

Mozo.PHP (その2)

(追記: タイトルの一部にタグを入れているところが正しくタグとして認識されなかったので直しました。重複RSSエントリが発生したらすみません。) 前日の続き。ダウンロードはここ。主な変更点: std::string を戻り値にできないバグの修正。 HashTable の変換…

Boost.Python のような手軽さで C++ で PHP の拡張モジュールを書ける「Mozo.PHP (仮称)」

えー、久しぶりにですます調です。本日の第2回PHP拡張勉強会でグダグダながらもちょこっと発表させていただいた、あのライブラリについての紹介です。ダウンロードは以下からできます。 http://www.voltex.jp/downloads/mozo-php-20080324.tar.bz2 最新版は…