phpに関するuratchのブックマーク (26)

  • 我慢強い人のためのpeclでsession_handlerを作る。 - お前の血は何色だ!! 4

    session_handler作ってますか? セッションをファイル以外に格納するとき使いますね。 例えば、セッションをデータベースとか、KVS等のセッションを格納するときとか。 ほとんどの場合は phpsession_handlerをシコシコ作っていると思います。 が、phpでセッションハンドラーを作ると、パフォーマンス的にあれだったり、毎回作るのがめんどかったり、もっと高度なことをしたくなったりするヂャないですか。 Yes/Y それだったら、 pecl な PHP拡張として、C言語で書くしかないですよね。 pecl なセッションハンドラに対応している pecl 拡張の場合、、、 session.save_handler を定義してあげることで、簡単に導入できます。 //tokyo tyrant にセッションストアをしたい時、、、 ini_set('session.save_hand

    我慢強い人のためのpeclでsession_handlerを作る。 - お前の血は何色だ!! 4
    uratch
    uratch 2011/02/20
  • ウノウラボ by Zynga Japan: 30分でわかる PHP Extensionの作り方を学べる記事をかいたよー \(^o^)/

    こんにちは。12月に入社した@chobi_eです。 私が所属しているチームではお菓子系男子が30%を超えているという素敵チームで 毎週チーム内の漢の子がお菓子を焼いてくるという状況でハッピハッピハッピーです。 今日は私が学んできたPHP Extension作成についてのノウハウの一部を 公開しようと思います。 PHPExtension作成についての資料はklabさんやyoyaさん rskyさんの記事が参考になりますが私のようにPHPは書けてもCが書けない人には具体的にhello world以降何をすればいいのかがサッパリよく分かりません。 そこで先人達が作ってくれた偉大なライブラリをPHPで扱えるようにする為にC/MigemoのPHPバインディングを作ってみましょう C/Migemoをインストールしてみる 読者の方の中にはC/Migemoをご存知でない方もいらっしゃるかと思いますので簡単に

  • サーバサイドでCanvasを利用する(node.js)

    // sample.js var Canvas = require('canvas') , http = require('http'); http.createServer(function (req, res) { var canvas = new Canvas(200,200); var ctx = canvas.getContext('2d'); // 四角形描画 ctx.fillStyle = 'rgba(0, 0, 255, 0.5)'; ctx.fillRect(10, 10, 190, 190); // テキスト描画 var text = "Canvas Test"; ctx.font = '30px Impact'; ctx.rotate(.1); ctx.fillStyle = 'rgba(0, 0, 0, 1.0)'; ctx.fillText(text, 10, 1

    サーバサイドでCanvasを利用する(node.js)
  • 実例で学ぶPHP拡張モジュールの作り方 記事一覧 | gihyo.jp

    運営元のロゴ Copyright © 2007-2024 All Rights Reserved by Gijutsu-Hyoron Co., Ltd. ページ内容の全部あるいは一部を無断で利用することを禁止します⁠。個別にライセンスが設定されている記事等はそのライセンスに従います。

    実例で学ぶPHP拡張モジュールの作り方 記事一覧 | gihyo.jp
  • PDOにおけるSQLインジェクションの危険性とその回避についてまとめ

    PHPのデータベース・アクセス・ライブラリPDOは、DB接続時の文字エンコーディング指定ができないため、文字エンコーディングの選択によっては、プレースホルダを使っていてもSQLインジェクション脆弱性が発生しうるという徳丸氏のブログ内容に対し、識者がその回避方法について試し、報告しています。

    PDOにおけるSQLインジェクションの危険性とその回避についてまとめ
    uratch
    uratch 2010/12/05
    もうどうでも良くなってくる...。
  • PHP と MySQL と サーバサイド プリペアードステートメント - do_aki's log

    少し前のお話なのだけど、せっかくなので書いておくことにする。 MySQLのクエリログを見ていたら、 prepare に相当するログが一切流れていないことに気づいたので、PDO(mysql)でサーバサイドプリペアードステートメントが利用されていないんじゃないか疑惑が浮上。 php のバージョンは 5.2.11 mysql は 5.0 系 以下、検証してみた結果と、その対応です。 検証 簡単なソースコードを実行してみて、そのクエリログを見てみることにした。 PDO を利用 $p = new PDO('mysql:dbname=dbname;host=localhost', 'user', 'password'); $stmt = $p->prepare("SELECT * FROM table_name WHERE id=?"); $stmt->execute(array(1)); $stmt

    PHP と MySQL と サーバサイド プリペアードステートメント - do_aki's log
    uratch
    uratch 2010/12/04
  • limeでなるべく気軽にユニットテストを書く - id:anatooのブログ

    limeというのはSymfonyフレームワークで使われてるユニットテストライブラリで、このライブラリはインストールも簡単で、実際にテストを書くのも楽なのでよく使う。 この記事ではlimeというライブラリを簡単に説明しつつ、クラスファイルにテストを埋め込むことで、より気軽にテストを書く方法を紹介する。 limeのインストール http://svn.symfony-project.com/tools/lime/tags/RELEASE_1_0_6/lib/lime.phpからファイルを適当な場所に保存する。limeは一つのファイルで完結しているのでインストールはこれで終わり。 実際にテスト書いてみる 通常の書き方が以下。 <?php include_once 'lime.php'; $t = new lime_test; $t->is('hoge', 'hoge', '比較のテスト'); $t

    limeでなるべく気軽にユニットテストを書く - id:anatooのブログ
  • [PHP] limeでTDDを体験する · DQNEO日記

    PerlのTest::Moreに相当するものが、PHPではlime.phpというやつである。 Kwappa開発室-TDDを体験する という記事で、PHPUnitを使ってTDD体験という話が大変面白かった。 私も体験してみようと思ったが、limeしか使えないのでlimeでTDD体験をしてみた。 準備 lime.phpを入手して、WEBサーバ上の任意のディレクトリに以下のように配置する。 lime.php Stack.class.php (空ファイル) TestStack.php (空ファイル) これから「スタック」という機能を持つクラスを作ります。 仕様はリンク先を参考のこと。 なお、私は諸事情により、コマンドラインではなくブラウザ上で実行しました。 Stack.class.php クラスを定義する。 <?php class Stack { } ?> TestStack.php 他の2つのク

    [PHP] limeでTDDを体験する · DQNEO日記
  • TDDを体験する - Kwappa開発室

    CUI な Git ブラウザ tig を入れてみた (Born Too Late) [git][scm][tig] tig を使ってみた (do_akiの徒然想記) Twitter Trackbacks () とべとべ夏祭り2010電設部に参加した #tobesetu (key-cc) EC-CUBE LC_Page::sendRedirect()に引数を渡せない (弱小PHPerの憂) [densetu][勉強会][学校]電設部IT勉強会#3やりますた(随時追記 (学内IT勉強会のススメ - atcorp) 電設部IT勉強会#3に参加したっ! (Curious) GLT #24 (懇親会)に乱入してきた! (Curious) GLT (Genesis Lightning Talks) Vol.24に参加しました (key-cc) GLT (Genesis Lightning Talks

    TDDを体験する - Kwappa開発室
  • JavaとPHPの文法比較

    こんにちは、スパイシーチキン弁当に慣れてきつつある浦です。 今回はJavaPHPの文法を比較し、何が同じで何が違うかを説明します。 Java開発者にとってはPHP入門になりますし、 PHP開発者にとってはJava入門になります。 (追記:というよりはPHPプログラミングで気をつけたい点として読んでいただければ、幸いです。) ■まずは共通点から クラスの継承 PHPJavaのどちらも、同時に1つの親クラスを継承できます。 extendsの書き方も同じです。

    JavaとPHPの文法比較
    uratch
    uratch 2010/11/19
    若干の違和感をどこかに感じつつも、でも、オプショナルに実装していくというのは常にありだと思います。
  • PHP5 __destruct() and unserialize() function - TokuLog 改メ tokuhirom’s blog

    http://co3k.org/diary/12 このへんみておもったこと。 unserialize() 関数はオブジェクトの unserialize もできるのだが、5 以後では __destruct() が導入されているので、その unserialize したオブジェクトの __destruct() がよばれてしまう。この際に、たとえば cache の処理などで __destruct() でファイルにデータをかきこむ、などの処理をしていると、そのファイルが汚染されてしまったりするということがおきうる。 で、実際に cakephp ではそういう状況になって、任意のコードが実行可能になった、と。 まとめると 5 以後では unserialize() をユーザーからの入力にたいしてはかならず検証してからおこなうようにするべき。 っていうか、ユーザーの入力にたいしては unserialize(

    uratch
    uratch 2010/11/18
    ここが理解できない。5以降なら即検証というステレオタイプな話なのでしょうか?検証とは??【まとめると 5 以後では unserialize() をユーザーからの入力にたいしてはかならず検証してからおこなうようにするべき。】
  • PHP開発者 Rasmus Lerdorf氏インタビュー ~PHPは「利己的」な開発者の集まり | gihyo.jp

    2010年9月24日・25日に開催された「PHPカンファレンス2010」にあわせて、PHP開発者のRasmus Lerdorf氏が来日されました。日を訪れるのは2度目という氏に、PHPの現状とその根底にある思想についてお話を聞きました。 現在の仕事について 大垣:昨年 Yahoo! Inc.を退職されましたね。現在はどのような仕事をされているのでしょうか? Rasmus:WePayという起業したばかり小さな会社にいます。WePayはカリフォルニアにある、グループで支払いを行う処理を行うベンチャー会社です。 大垣:グループで支払いを行う、というのは、どういうことですか? Rasmus:グループで何かを買いたいときに、グループとしてお金を管理したいですよね。例えば、大学で学生が集まってプレゼントを買いたいという場合があります。どんなものでも構わないですが、10人が集まって共同でオンラインショ

    PHP開発者 Rasmus Lerdorf氏インタビュー ~PHPは「利己的」な開発者の集まり | gihyo.jp
    uratch
    uratch 2010/09/29
    PHPのお父さん
  • blog.ishinao.net

  • PHPのSession Adoptionは重大な脅威ではない - ockeghem's blog

    なぜPHPアプリにセキュリティホールが多いのか?:第25回 PHPのアキレス腱にて、大垣靖男氏がPHPSession Adoption問題について取り上げている。大垣氏は度々この問題を取り上げているが、今のところ氏の主張に同調する人を見かけない。それもそのはずで、大垣氏の主張は間違っていると私は思う。 以下、大垣氏の主張を実際に試してみる形で、順に説明しよう。 大垣氏の主張 大垣氏の主張は、PHPにはSession Adoption脆弱性があるために、標準的なSession Fixation対策であるsession_regenerate_id()を施しても、その対策は有効ではないというものだ。 しかし,実際には現在に至るまでPHPのセッションモジュールのセッションアダプション脆弱性は修正されないままになっています。このために,来はsession_regenerate_id関数をログイン

    PHPのSession Adoptionは重大な脅威ではない - ockeghem's blog
    uratch
    uratch 2010/07/30
    良く書けてました。有難いです。
  • 単純な PHP エクステンションの開発方法 - Web/DB プログラミング徹底解説

    PHP はエクステンションによってその機能を拡張できます。 私は今、PHP からの認証方法を各種検討中なのですが、先日 AD へ問い合わせる方法として LDAP を検討しました。 今回はもうひとつの方法として、OS の機能 (すなわち LSA) に任せる方法もあるのではないか、 そしてそのほうがセキュリティ上も良いのではないかと考えています。 これを利用するには、PHP のエクステンションを実装するのが一番簡単なように思えます。 そこで今回は PHP エクステンションを開発する方法をまとめます。 準備 Visual Studio なり Windows SDK なり、Windows の DLL のビルド環境を準備します。 これは普通に Win32 の DLL がビルドできれば OK です。 もし DLL の作成方法がわからない場合は、当サイトの「Windows プログラミング入門 - 単純な

    単純な PHP エクステンションの開発方法 - Web/DB プログラミング徹底解説
    uratch
    uratch 2010/07/23
  • PHPでバイナリプログラミング その1

    はじめまして、5月から入社した久保田と申します。 九州からはるばる上京してエンジニアとして働いています。 普段はanatooというIDでブログ書いたりしています。 また、BlankaというPHP5.3で動くフレームワークを開発していたり、はてな記法パーサなどに利用されているパーサコンビネータなどを公開しています。 今後、勉強会などにも積極的に参加していこうと思いますのでお会いしたときはよろしくお願いします。 さて、この記事ではPHPでのバイナリの扱い方について説明します。 バイナリとは、ざっくりと言えばテキスト以外のバイト列のことです。 バイト列とは1バイトで構成される任意の長さを持つ列の事で、1バイトとは256通りの値を表現できる8ビットのデータのことです。 画像や音楽、映像などのバイナリは全て、テキストエンコーディングに沿わないバイト列によって表現されています。 これらのバイナリを扱う

    PHPでバイナリプログラミング その1
    uratch
    uratch 2010/06/17
    pack, unpackはもっと使われるべき
  • zuzara.com » ブログの記事本文を抽出するスクリプトをつくってみた

    ブログ検索において、RSSは必ずしも記事全文を配信していないので、クローラーが記事のURLにアクセスし記事の文を取得するケースが多いようです。 「gooブログ検索」「ブログレンジャー」開発者が語るブログ検索技術Yahoo!検索 スタッフブログ Yahoo!ブログ検索より細部改善のお知らせ上記の記事ではどちらも文を抽出してくる、とあっさり書かれていますが100%に近い精度を実現するとなるとそう簡単ではないはず。 ちょっと調べてみたら以下のような取り組みが論文として読めました。英語圏の文献は、検索語が悪かったのかいまいち。「blog entry extract body text etc…」 NRI 技術創発 ブログ記事の自動分類により消費者意識の側面を捉える試み(PDF)なんでもRSS! HTML文書からのRSS Feed 自動生成 南野朋之 奥村学:人工知能学会研究会資料 SIG-SW

  • Gree Fast Processor: PHPを3倍(くらい)速く | GREE Engineering

    ごあいさつエントリだけというのもなんなので、引き続きfujimotoです。実質上1つめのような気がするこのエントリでは、PHPが3倍くらい(少なくとも2倍くらいは...)速くなるGree Fast Processorというのを先月作ってみたのでご紹介です。 すぐわかるまとめ Gree Fast Processorというのを使ってみると、シンプルなsymfonyのプロジェクト(xav.ccで試しました)でも2倍弱、結構複雑なアプリケーションだと7倍くらい速くなったりします。いくつかの制約がありますが、パフォーマンスに飢えているかたはお試しください。 こちらはなんかすごい速くなっている感じのグラフ(一番上が速くなった版のRequests per Second、赤が通常版のRequests per Second): これはさすがにbest caseすぎる気がしますが、普通にやっても2倍弱くらいは

    Gree Fast Processor: PHPを3倍(くらい)速く | GREE Engineering
    uratch
    uratch 2010/05/20
    開設おめでとうございます。
  • PHPの無名関数を使って再帰処理を行う

    こんにちは、小川です。 今回はSymfonyではなくPHPのお話しです。PHP 5.3から無名関数が使えるようになりました。この無名関数、使い方によっては再帰なプログラムを書くことも可能なのです。 PHPの無名関数は次のようなものです。 <?php $greet = function($name) { echo "Hello, {$name}."; }; $greet('fivestar'); #=> Hello, fivestar. 無名関数というのは、その名の通り関数名が存在しない関数になります。JavaScriptなどではお馴染みですね。様々な使い方ができると思いますが、よく使うのはコールバック関数として使う方法が挙げられます。 例えばPHPにはarray_mapという標準関数があります。この関数は第1引数にコールバックを、第2引数に配列を指定し、指定した配列の各要素に対して第1引数

    PHPの無名関数を使って再帰処理を行う
    uratch
    uratch 2010/03/30
  • CakePHP routes.phpの確認はユニットテストで

    routes.phpを仕様に合わせて設定しておきます。 <?php // Router::connect('/:user_id/edit', array('controller' => 'user', 'action' => 'edit')); Router::connect('/', array('controller' => 'top', 'action' => 'index')); Router::connect('/:user_id/*', array('controller' => 'user', 'action' => 'index')); // Nothing Router::connect('*', array('controller' => 'nothing')); ?> 最後はシステムが取るべきURL以外ならNot Foundを出すように設定しています。これにより想定外