タグ

PHPに関するshawのブックマーク (307)

  • PHPerのMVCの一体どこが間違っていたのか - MugeSoの日記

    メリークリスマス! PHP Advent Calendarもいよいよ24日目に突入です。 昨日はxhprofについてでしたね。僕もパフォーマンスチューニングの際に使っています。手軽に利用できるのでお勧めです。 さて、このエントリーでは表題の通りMVCについて書かせていただきます。これは、PHPカンファレンス2012&WordCamp Tokyo2012合同LT大会で発表した「やはりお前らのMVCは間違っている」で煽るだけだったこの問題をきちんと解説するものです。 この発表資料を公開するとPHPの枠を超えて広く閲覧いただき*1、また多くの方から突っ込みを戴きました。「LTだから」と言って逃げていた回答をして、気持ち新たに新年を迎えようと思います。 MVCとはなんなのか 間違いを指摘する前にMVCがそもそもどういうアーキテクチャであるのかを確認しなければいけません。 MVCは1970年代にパロ

    PHPerのMVCの一体どこが間違っていたのか - MugeSoの日記
    shaw
    shaw 2012/12/25
  • PHP5.3.2以降ではfcloseで自動的にアンロックされない

    PHP家サイトでflockの説明を読んでいたら、以下の変更履歴に気がつきました。 5.3.2 ファイルのリソースハンドルを閉じたときにロックを自動的に解放する機能が削除されました。 ロックの解放は、常に手動で行わなければなりません。 http://php.net/manual/ja/function.flock.php ところがネットの解説を見ると、ロック開放はflock($fp, LOCK_UN); ではなく、fcloseでやれとしている解説が結構あります。 (4)fcloseの前にflock解除するな … fcloseの前にflock(ファイルポインタ, LOCK_UN) する人は実に多いのですが、これははっきりと間違いだと断言します @ITPHPの記事が突っ込みどころ満載 - 暴言満載 LOCK_UNは普通は使われない。ロック開放はfclose()関数でやるのが鉄則。 http

    PHP5.3.2以降ではfcloseで自動的にアンロックされない
    shaw
    shaw 2012/12/06
  • PHPでTCPサーバを作ってみる - 覇王色を求めて

    この記事はPHP Advent Calender 2012の2日目の記事になります、詳細は以下をどうぞ。 PHP Advent Calender 2012 フレームワークやCMS的な記事が多いので、あまり参考例のないTIPSを書きたいと思います。 PHPでTCPサーバを立ててみる PHPでTCPなサーバを作るとなると、socket関数やfsockopenなどを使った例を多く見かけます。 PHPというよりかはLinuxなネタになってしまいますが、ここではxinetdを使った例を書いてみたいと思います。 xinetdとは? 今回は、スーパーサーバーと呼ばれる xinetd の設定方法について説明していきます。スーパーサーバーとは、ポート監視用のデーモンプログラムで、あるポートに対してアクセスがあると、設定ファイル (/etc/xinetd.d/ 等) を元にポートに対応したサービス (ftp

    PHPでTCPサーバを作ってみる - 覇王色を求めて
    shaw
    shaw 2012/12/03
  • 今時なCakePHPでの開発環境!? - kaz29

    前職を退職してもう半年以上経ってしまいました。おかげさまで、レガシーなコードとのバトル等色々お仕事しています。 さて、先日のPHP Matsuri2012での@ryuzeeさんの発表を聞いて、開発環境や手法を改善するべく、今月から始まったプロジェクト用の環境を構築しています。 CakePHPは最新で! CakePHPの最新stable版は 2.2.3 ですが、既に 2.3.0-beta が公開されています。幾つか2.3.0-betaの機能で使いたかったものがあったのと、今回のプロジェクトのリリース時期が来年の5月という事もあって、2.3.0-beta を使って開発をしています。来年の5月なら2.3.0Stable版がリリースされるんじゃないかとの読みです(^^;さて、どうなるでしょうかw? 出来る限り公開されているPluginを使う 前職の職場では、ある程度蓄積された自前のPluginがあ

    今時なCakePHPでの開発環境!? - kaz29
    shaw
    shaw 2012/12/01
  • セッション(session)の有効期限を設定するには - spanstyle::monolog

    セッション(session)の有効期限を設定するには ishii (2005年7月 5日 04:54) | 個別ページ | コメント(2) カテゴリ PHP タグ .htaccess, PHP セッションについて書いてみたらどうでもいいネタばかりになっちゃったけど、まあいいや。誰かのお役に立てれば。 セッションは、基的に session.gc_maxlifetime session.gc_probability session.gc_divisor の3つをこねくりまわせば有効期限を制御することができる。この中で一番大切なのはsession.gc_maxlifetimeで、ここにセッションの有効期限を秒数で設定すればいい。 この記事を見た人は以下のエントリも見ています symfonyでカスタムバリデータを使ってフィルタを実装する PHP5.2.8 で Mojavi3 を動作させた際に出る

    shaw
    shaw 2012/11/27
  • PHP/MySQL でレコードを N 件ずつバルクインサート | Born Too Late

    昨日の ParallelHttp の話に引き続き、PHP でのバッチ処理のパフォーマンス改善の話です。 あと、昨日と同じく PHP 5.2 で使えるライブラリを開発した話でもあります。 バルクインサートとは ひとことで言えば「複数のレコードをまとめてインサートすること」です。 例えば MySQL で言えば、 INSERT INTO `users` (`name`) VALUES ('foo'); INSERT INTO `users` (`name`) VALUES ('bar'); INSERT INTO `users` (`name`) VALUES ('baz'); ではなく INSERT INTO `users` (`name`) VALUES ('foo'), ('bar'), ('baz'); というようにやることです。 これで何が嬉しいかというと、サーバにクエリを投げてその結

    PHP/MySQL でレコードを N 件ずつバルクインサート | Born Too Late
    shaw
    shaw 2012/11/06
  • PHPのコーディング規約、PSRについての発表をしました : candycane development blog

    新標準PSRに学ぶきれいなPHP from yandodすでにご覧になった方も居るかとおもいますが、PHPのコーディング規約であるPSRについてのセッションをFukuoka.phpとShimokita.phpで行って来ました。後者はUstでの録画もあり生放送では20名くらいの方にご覧頂きました。 Video streaming by Ustream開きブレースの位置やソフトタブなど賛否両論がある規約もありますが、著名なプロジェクトのメンバーが統計と投票を元に採択した規約という事で無理なく採用できるよい規約ではないでしょうか。ただし資料でも言及していますが、敢えて制定していないコメントや代入などに関する規約については採用するフレームワークに合わせるなどの工夫が必要です。Fukuoka.phpもShimokita.phpも今後も開催が続く予定です。お時間に余裕のある方は是非どうぞ。

    shaw
    shaw 2012/10/03
  • PHP5.5新機能「ジェネレータ」初心者入門

    PHP5.5の新機能「ジェネレータ(Generator)」について、「それって何?」「どううれしいの?」「何に使えるの?」の3つを初心者向けに解説。動画 http://www.slideshare.net/kwatch/php55Read less

    PHP5.5新機能「ジェネレータ」初心者入門
    shaw
    shaw 2012/09/16
  • IDEA * IDEA

    ドットインストール代表のライフハックブログ

    IDEA * IDEA
    shaw
    shaw 2012/08/14
  • これは凄い。JavaScriptで作られたPHP VM·php.js MOONGIFT

    php.jsはJavaScriptで作られたPHP VMです。PHPコードをJavaScriptに変換して実行します。 世の中には色々変わったことを考える人がいます。Webブラウザでデフォルトで実行できるプログラミング言語がJavaScriptだけなんて許しがたい、そう考えたPHPプログラマーが生み出したのがphp.jsです。その名の通り、PHPの実行エンジンをJavaScriptに実装したというとんでもないソフトウェアになります。 確かに実行できています。PHPのコードからJavaScriptに変換を行っているようです。 配列、クラスさらにvar_dumpまで実装されているのが興味深いです。 かなり突っ込んだPHPの処理もできている模様です。これは面白い。 ダブルクオートの中に変数を入れて普通に出力できているのが興味深いです。 php.jsではPHPのコードがそのまま実行できます(もちろ

    shaw
    shaw 2012/08/13
  • PHP 公式マニュアルにおける SQL インジェクションと PDO の数値の型指定のサンプルコード

    PHP 公式マニュアルの SQL インジェクションのページには数値の扱い方がきちんと明記されている。 アプリケーションが、数値入力を期待している場合、データを is_numeric() で検証するか、 settype() により暗黙の型変換を行うか、 sprintf()により数値表現を使用することを検討してみてください。 サンプルコードも掲載されている。 settype($order, 'integer'); $query = "SELECT id, name FROM products ORDER BY name LIMIT 20 OFFSET $offset;"; // フォーマット文字列の%dに注意してください。%sを使用しても意味がありません。 $query = sprintf("SELECT id, name FROM products ORDER BY name LIMIT 2

    PHP 公式マニュアルにおける SQL インジェクションと PDO の数値の型指定のサンプルコード
    shaw
    shaw 2012/08/05
  • 6分でわかる最近のPHP ― 2012夏

    さて夏がやってきました。夏と言えばPHPということで、昨年に引き続き、最近のPHP事情をご紹介。 1. PHP5.4リリース PHP5.4が2012年3月にリリースされました。 Traits や Short array syntax(配列の短縮構文)、array dereferencing(foo()[0]) などのPHP言語拡張、PHPコマンドで起動するビルトインサーバ、そしてパフォーマンスの改善など大きな変更が加えられています。 言語自体の機能追加も注目ですが、ビルトインサーバは多くの人にとってメリットになるでしょう。これを使えばPHPアプリケーションの動作確認のためにApacheやnginxなどのhttpdサーバを自分のPCに入れる必要はありません。 下記のようなコマンドを打つだけで、ビルトインサーバが起動します。新しいフレームワークやライブラリ、アプリケーションを試してみたい時に手

    shaw
    shaw 2012/08/03
  • PHPの外部ライブラリの管理にComposerを使う | Ryuzee.com

    みなさんこんにちは。@ryuzeeです。 ComposerはRubyでいうところのBundlerのようなもので、アプリケーションが必要とする外部ライブラリを、そのアプリケーション固有の状態で一元的に管理してくれるツールです。 PHPではPearのようなコマンドを使ってライブラリをインストールすることが一般的ですが、アプリケーションによって必要とするバージョンが違う、といったケースでは問題が起こりやすくなります。 例えば手動でインストールをしていた場合、将来的にライブラリの配布が終わってしまったり、特定のバージョンが配布されなくなると困ってしまいます(したがって、インストールしたバージョンは構成管理の対象とするべきで、常に環境を再現可能にしなければいけません)。 Composerを使うことで、そのような問題からは簡単に解放されます。 なお、ComposerはPHP5.3.2以降で利用可能です

    PHPの外部ライブラリの管理にComposerを使う | Ryuzee.com
    shaw
    shaw 2012/08/03
  • 「8時間耐久 PHP構築の教室」を開催しました。 : candycane development blog

    今回も怒涛の8時間耐久という感じで、いつになくハードな内容になりました。 VPSを借りたりするとブログなどをみて見よう見まねで構築をする事もあるかと思いますが、ソースからPHPをビルドしてインストールするという流れを通じてPHPの動作原理や、はやりのnginx + php-fpmの構成を構築してWordPressを動かすというスパルタな感じの勉強会でした。途中、仮想マシンのMACアドレスの問題やmbstringの問題でapacheがクラッシュするなどの問題に直面しましたが、ひとまず西川さんがnginx + php-fpmWordPressを動かすというゴールには到達する事ができました。また副産物としてCでHello Worldを動かすという作業もしてみたのでビルドしてバイナリを作るという流れが身についたのかなと思います。これで4つ目の8時間耐久シリーズになったわけですが、希望があれば内容

    shaw
    shaw 2012/07/12
  • www.phptherightway.com

    Welcome There’s a lot of outdated information on the Web that leads new PHP users astray, propagating bad practices and insecure code. PHP: The Right Way is an easy-to-read, quick reference for PHP popular coding standards, links to authoritative tutorials around the Web, and what the contributors consider to be best practices at present. There is no canonical way to use PHP. This website aims to

    shaw
    shaw 2012/07/09
  • これは罠。PHPでiPhone端末にPUSH通知を送る際の落とし穴 | 株式会社LIG(リグ)|DX支援・システム開発・Web制作

    段田です。 最近、PHPからiphone端末にPUSH通知を送る機能の開発に携わりました。PHPでプログラムを実装する場合、フルスクラッチとライブラリを使用するケースがあるのですが、各ケースでのポイントを忘れないよう書きたいと思います。 なおPUSH通知の概要、証明証の作成については省略します。概要などは下記の記事がわかりやすく、参考になりました。 Apple Push Notification サービス(APNs) の実装方法 iPhoneプッシュ通知まとめ フルスクラッチのケース フルスクラッチでやる場合、こちらのはてなの記事が参考になりました。 https://irss.hatenablog.com/entry/20111026/1319632548 しかし、試しに作成すると送信はできるのですが、下記の様な制約があることを知ります。 1つのメッセージで256バイトを超えてはいけない

    これは罠。PHPでiPhone端末にPUSH通知を送る際の落とし穴 | 株式会社LIG(リグ)|DX支援・システム開発・Web制作
  • PHPフレームワークにTwitter,Facebook等の認証を速攻実装できる「Opauth」:phpspot開発日誌

    PHPフレームワークにTwitter,Facebook等の認証を速攻実装できる「Opauth」 2012年05月24日- Opauth ? Multi-provider authentication framework for PHP PHPフレームワークにTwitter,Facebook等の認証を速攻実装できる「Opauth」。 Zend、CakePHP、Symfony、CodeIgniter等のフレームワークに認証を入れる場合に是非参考にしたいライブラリ。 Facebook, Google, twitter, Linked.in の他、OAuth、OpenID などにも対応。Yahoo!JapanでOAuth等による認証ができますから、これで認証にまつわる処理はすべて実装できそう。 各サイトにおける認証の方法を都度実装するのは非効率ということで、こうしたライブラリで認証処理はサクっと終

    shaw
    shaw 2012/05/25
  • 40分濃縮 PHP classの教室

    PHPカンファレンス関西2012で使用したスライドです。完全な内容は下北沢で開催した際のスライドと動画を御覧ください。Read less

    40分濃縮 PHP classの教室
    shaw
    shaw 2012/05/14
  • http://www.nemousu.com/article/20120506/php-markdown-usage

    shaw
    shaw 2012/05/08
  • CGI版PHPにリモートからスクリプト実行を許す脆弱性(CVE-2012-1823)

    CGI環境でPHPを動作させているサイトには、リモートからスクリプト実行を許してしまう脆弱性があります。php.netから提供されている修正リリース(PHP 5.3.12 / PHP 5.4.2)は不完全なため、該当するサイトは至急回避策を導入することを推奨します。 概要 CGIの仕様として、クエリ文字列に等号を含めない場合は、クエリ文字列がCGIスクリプトのコマンドライン引数として指定されます。 例えば、http://example.jp/test.cgi?foo+bar+bazという呼び出しに対しては、test.cgiは以下のコマンドラインで呼び出されます。 test.cgi foo bar baz この仕様を悪用して、CGI版のPHPにコマンドライン引数としてPHPのオプションを指定できます。例えば、http://example.jp/test.php?-s というリクエストは、-s

    CGI版PHPにリモートからスクリプト実行を許す脆弱性(CVE-2012-1823)
    shaw
    shaw 2012/05/07