タグ

ブックマーク / blog.r-sky.jp (17)

  • PHP Memcached Extension をより軽量高速にしてみるテスト | チラシのうら

    php-memcached-dev/php-memcachedをforkしたmsgpack-and-snappyブランチで、シリアライズ方式にMessagePackを、圧縮方式にSnappyを選べるようにした。→GitHub MessagePackを使うにはPECL msgpackをインストールした上で、configureのオプションに --enable-memcached-msgpack を、Snappyを使うにはSnappyをインストールした上で --with-snappy-dir を付ければよい。 MacPortsでライブラリを入れている場合の例: phpize ./configure \ --enable-memcached \ --enable-memcached-msgpack \ --with-libmemcached-dir=/opt/local \ --with-snap

    PHP Memcached Extension をより軽量高速にしてみるテスト | チラシのうら
    sotarok
    sotarok 2012/10/24
  • PHP 5.4.1の新機能: Scalaライクなミックスイン | チラシのうら

    2012年4月1日にリリースされたPHP 5.4.1では、マイナーバージョンアップにも関わらず言語仕様が拡張されるという、PHPクォリティ全開の変更があったので紹介しよう。 実体化時ミックスイン (Mix-in instantiation)クラスをインスタンス化する際にuse文でトレイトを追加できるようになった。トレイトは実行時に解決されるので、クラス宣言より後にトレイトを宣言することも可能。 例1<?php class JoJo {} trait HermitPurple { public function sayStand() { echo '隠者の紫'; } } trait StarPlatinum { public function sayStand() { echo '星の白金'; } } $joseph = new JoJo use HermitPurple; $jotaro

    PHP 5.4.1の新機能: Scalaライクなミックスイン | チラシのうら
    sotarok
    sotarok 2012/04/01
    有限実行ってことですよね?
  • PHP 5.4におけるZend APIの変更点 | チラシのうら

    16日目の@yohgakiさんに続いて、2回目のPHP5.4 Advent Calendar 2011 エントリです。 今回はヘッダファイルの差分を見てPHP 5.3からPHP 5.4のZend APIにどのような変更があったのかを見てみましょう。バイトコードに対する処理が書かれているzend_vm_def.hとzend_vm_execute.hを除いた全差分はGistに貼り付けました。 全体的には char * / void * と定義されていた引数が const char * / const void * になっている箇所が多く見られます。この変更はPHP 5.2から5.3にもありましたが、中身を書き換えないポインタはconst修飾するというセオリーがより徹底されており、地味ながら良い変更ですね。 トレイト関連のAPI追加 (zend.h, zend_API.h)トレイトが導入されたこ

    PHP 5.4におけるZend APIの変更点 | チラシのうら
    sotarok
    sotarok 2011/12/19
  • PHP 5.4 の配列Tips | チラシのうら

    PHP5.4 Advent Calendar 2011 4日目です。3日目は@ooharabucyouさんでした。 2日目の@yohgakiさんの記事で紹介されたように、PHP 5.4から [] で配列を定義できるようになります。大変めでたいですね。 この記事ではその他の配列まわりの変更を紹介したいと思います。 Array Dereferencingの採用RFC: Function Array Dereferencing が取り込まれました。 これまでは配列を返す関数の返り値の一部だけが欲しいときでも、その値を一度変数に格納してから $foo[0] や $bar['baz'] としてアクセスする必要がありました。 Array Dereferencingによって、関数呼び出しの後ろに [] 演算子で配列の要素に直接アクセスできるようになります。 サンプル1function foo($valu

    PHP 5.4 の配列Tips | チラシのうら
    sotarok
    sotarok 2011/12/07
    rsky さんブログ tumblr になってた
  • Pirumを使ってみた - 讃容日記

    先日から公開を始めたPEAR(PECL)チャンネルでは、チャンネルサーバーの管理にPirumを使っています。 元々はChiara_PEAR_Serverを使おうとしていたのですが、インストール後のスクリプトがうまく動かずにコードを追っかけていたところ、@iteman 先生に「PHPUnitが移行したやつを使ってみてはどうか」と勧められたのがPirumを知ったきっかけでした。 “Pirum”はラテン語で“梨の実”という意味らしく、“PEAR”そのまんまですね。公式サイトの画像がなぜナスなのかは定かではありません。 以下に公式サイトの紹介文を和訳してみました。 Pirum is a simple and nice looking PEAR channel server manager that lets you setup PEAR channel servers in a matter of

    Pirumを使ってみた - 讃容日記
  • PHPエクステンションのリポジトリ始めました - 讃容日記

    長らく放置しておりましたブログとPHP拡張のメンテをぼちぼち再開します。 で、復活第一弾のエントリはPiece Network 3のテーマとして、PHP 5.3のサポートとGitHub/PEARチャンネルの公開をしましたので、そのご報告をば。 現時点ではよく使われているっぽいMeCabエクステンションと Tokyo Cabinetエクステンションを公開しています。他のものも需要がありそうなものから順次追加していきます。 PHP 5.3対応 PHP 5.3から ZEND_BEGIN_ARG_INFO_EX() マクロにstatic修飾子が含まれるようになったため、static ZEND_BEGIN_ARG_INFO_EX(...) としていた箇所が軒並みエラーになっていたので、これを修正しました。 また、php_set_error_handling(), php_std_error_hand

    PHPエクステンションのリポジトリ始めました - 讃容日記
    sotarok
    sotarok 2010/06/20
  • PHPでTokyo Cabinetハッシュデータベースサーバを作ってみた - 讃容日記

    Tokyo Cabinetのデータベースは書き込みモードで開くと排他ロックがかかるので、Apache2 (prefork)+mod_phpCGIのようなリクエストごとにPHPのプロセスが分かれているWebアプリケーションでTokyo Cabinetを読み書き両用で使うのは苦しいものがあります。(コードの書き方を工夫すればロックの影響を小さくできる場合もあります) そこで、PHPでHTTPベースのハッシュデータベースサーバを作ってみました。このサーバはPHP 5.2、tokyocabinet拡張モジュール、PECLのhttp拡張モジュールを使います。ソケットの操作にはPHP組み込みのストリーム関数を用い、sockets拡張モジュールは使いません。 <?php class TCHDBServer { static private $statuses = array( 100 => 'Cont

    PHPでTokyo Cabinetハッシュデータベースサーバを作ってみた - 讃容日記
  • php_tokyocabinet-0.3.0: Tokyo Cabinet 1.1.x対応(専用) - 讃容日記

    php_tokyocabinet-0.3.0.tgz Tokyo Cabinet 1.1.0で加わったAPIを実装。 TCHDB::setcache() TCBDB::range() TCBDB::rangefwm() IDLに合わせてTCBDBクラスのメソッドを名称変更。古い名前も残しているが、非推奨。 putdupall→putlist, outall→outlist, getall→getlist 詳細はあとで追記します。

    php_tokyocabinet-0.3.0: Tokyo Cabinet 1.1.x対応(専用) - 讃容日記
    sotarok
    sotarok 2008/04/24
    Tokyo CabinetのPHP拡張
  • 1000speakers:3:QIQ=モテ - 讃容日記

    中将閣下は無謀だった。 やってくれた喃はOK。 スライドのPDFはこちら。PHP2QIQ.pdf 明日のPHP拡張勉強会のスライドができていないのはきっと気のせいでしょう。

    1000speakers:3:QIQ=モテ - 讃容日記
    sotarok
    sotarok 2008/03/29
    rskyさんの資料がかっこよすぎる件
  • QIQの設計と実装 - 讃容日記

    QIQエクステンションがやっていることについて。 PHPというかZend Engineでは、コンパイラとエクゼキュータが関数ポインタになっており、それぞれファイルの内容から実行コードを生成するzend_comiple_file、文字列から実行コードを生成するzend_compile_string、実行コードに対応するハンドラを呼び出すzend_executeが定義されています。また、それらのデフォルト実装としてcompile_file()、compile_string()、execute()があります。 言語としては良いか悪いかは別にして、堅くも柔らかくもない独自のポジションにあるPHPですが、コアのZend Engineはコンパイラやエグゼキュータが差し換えられたり、実行時のフックが追加できたりと、実は拡張性に富んでいるのです。でもマルチスレッドと演算子オーバーローディングだけは勘弁な!

    QIQの設計と実装 - 讃容日記
    sotarok
    sotarok 2008/03/25
    extensionが実行される手順とか
  • TextMateでPHPプログラミング(PHP勉強会 at 大阪 発表資料) - 讃容日記

    いつもながらイベントのレポートが遅くて恐縮です。PHP勉強会 at 大阪の発表資料を公開します。 今回もSlideShareにはねられ、handsOutにもはねられたのでPDFの直DLです。CIDフォント(ロダン)は使わず、OTFとTTFだけ(ヒラギノ角ゴ Pro + Myriad Pro + アニト-等幅)だけにしたのですが...。次の機会からは別の方法を考えないといけませんね。 TextMateでPHPプログラミング (PDF) さて、会場のApple Store心斎橋店には2, 3度ほど行ったことがあったけど、2階に上がるのは初めて。立ち見が出るほどの大盛況でした。PHPのスキルの分布も初心者の方から濃い方まで満遍なくおられたようです。 えー、自分のプレゼンではAppleStoreのMacを使っての発表で、自分のマシンと勝手が違ったこともあり (言い訳100%)、かなりgdgdでした

    TextMateでPHPプログラミング(PHP勉強会 at 大阪 発表資料) - 讃容日記
  • qiq: immo quo - 讃容日記

    PHPの壁に当たったとき 素直にそこは代わりのものを使うのがよく訓練されたぺちぱー よーしおじさんextension書いちゃうぞーとなるのがぺくらー 体へのパッチを書くのが僕 パッチがスルーされて切ないのも僕 ならば既成事実を作ってやろうとコンパイラを差し換えるzend extensionを作る決意をしたのも以下略 zend extension版はこんな感じになる予定です。 zend_complile.c, zend_langage_parser.c, zend_language_scanner.c をベースに独自のコンパイラを作る。 関数ポインタzend_compile_fileとzend_compile_stringを差し換える。 do_bind_functionの絡みで、zend_opcode_handlersのZEND_DECLARE_FUNCTION_SPEC_HANDLERに

    qiq: immo quo - 讃容日記
    sotarok
    sotarok 2008/02/01
    ぼくまだぺちぱ.めざすはぺくら
  • GDで作成した画像をICO形式で出力する - 讃容日記

    php_gdextra-0.2.0.tgz Windows ICON (.ico) ファイルフォーマットを調べてみたところ、ヘッダが少し異なるのとマスクデータがあるだけでアイコン体はBMPだったので、先日のブツにICO形式で書き出す関数を追加してみました。 また、BMP出力でも従来の8,24ビットに加え、1,4,32ビットの出力にも対応しました。何ビットで出力するかを明示することはできず、画像の色数によって自動で切り替えます。 ただし32ビット (BITMAPV5,BitFileds,sRGBでヘッダを作成) のBMPに関してはこちらの環境ではアルファチャンネルが無視されるので正しくないかもしれません。同じデータから生成したICOではアルファチャンネルが有効になっているのですが... 一方でGDの関数には同等のものがないので、惜しくはありますがimagegetbmp_ex()を削除しまし

    GDで作成した画像をICO形式で出力する - 讃容日記
  • pecl_http の隠し機能? - 讃容日記

    今回は HttpRequest クラスのドキュメント化されていない (っぽい) 機能を紹介します。 なんと、サブクラスのメソッドとして onfinish が定義されている場合、リクエスト終了時に自動でコールされるのです。 onfinish メソッドは引数としてリクエストが成功したか (valid な HTTP Response が返ってきたか) を boolean として受け取ります。 利用例としてはこのようなクラスが考えられます。 <?php class UrlRetrieve extends HttpRequest { private $savepath; public function __construct($url, $savepath, $method = HttpRequest::METH_GET, $options = array()) { parent::__constr

    pecl_http の隠し機能? - 讃容日記
    sotarok
    sotarok 2008/01/26
    サブクラスのメソッドとして onfinish が定義されている場合、リクエスト終了時に自動でコールされる
  • PHP拡張モジュールの歳末大放出 - 讃容日記

    溜まりに溜まっていたのをまとめてリリース。それぞれの詳細は個別のエントリで。 php_calias-0.1.0.tgz php_continuation-0.2.0.tgz php_epeg-0.2.0.tgz php_iovm-0.5.0.tgz php_mecab-0.3.0.tgz php_rskit-0.1.0.tgz php_senna-0.2.0.tgz → php_senna-0.2.1.tgz php_speedy-0.2.0.tgz php_tokyocabinet-0.3.0.tgz php_unichar-0.3.0.tgz php_yaml-0.3.0.tgz 来年のなるべく早いうちには拙作PHP拡張モジュールを独自のPEARチャンネルで公開したいと考えています。

    PHP拡張モジュールの歳末大放出 - 讃容日記
  • RSKit 0.2.0: RSKit, Scope, Klosure - 讃容日記

    php_rskit-0.2.0.tgz RSkit::mixin()で任意の数のクラスを一度にMix-inできるようにしたり、ScopeクラスにcallメソッドとcallWithArgumentsメソッドを追加したほか、実験的な抽象クラス“Klosure”を追加しました。 また、Scopeクラスでinclude_pathが指定できないバグを修正しました。 runkitと併用すればPHPにこれまでにない自由さと変態度をもたらします。 RSKit クラスや関数を扱うユーティリティ。 API static public bool RSKit::mixin(string $target_class, string $source_class, ...) $target_classに$source_classのインターフェイス、クラス定数、プロパティ、メソッドをMix-inする。 $target_c

    RSKit 0.2.0: RSKit, Scope, Klosure - 讃容日記
    sotarok
    sotarok 2008/01/26
    クラスや関数を扱うユーティリティ。runkitと併用すればPHPにこれまでにない自由さと変態度をもたらします。
  • ムラムラして作った。反省はしていない - 讃容日記

    我が家から直線距離にして約500km離れたサイボウズ・ラボでPHP拡張勉強会が行われている最中、Twitterとかid:shimookaさんの実況中継とか尾藤さんのUstream(主に音声)だけでは飽き足らず、自分も書いた。 PHPの配列操作関数は破壊的なものばかりなので、非破壊的な関数群を実装。やってることはcall_user_function_ex()でarray_shift()やらsort()やらshuffle()を呼んでるだけ。 実装した関数: array_poped, array_pushed, array_shifted, array_unshifted, sorted, ksorted, asorted, rsorted, krsorted, arsorted, usorted, uksorted, uasorted, natsorted, natcasesorted, sh

    ムラムラして作った。反省はしていない - 讃容日記
    sotarok
    sotarok 2008/01/23
    あの短時間で...すごい><
  • 1