→言語・開発環境

→Webアプリ開発

#contents

*話題 [#x46579f3]
-[[PHPでのスクレイピングに役立つライブラリ>http://dxd8.com/archives/85/]] 2008.3.13
-[[PHPはダメな言語なのか?>http://slashdot.jp/askslashdot/article.pl?sid=08/02/03/0022251]] 2008.2.4
--PHPを仕事で使うときの注意(抜粋)
---内部コードにはEUC-JPかUTF-8を使う。入出力もできるだけShift JISを避ける。Shift JISを使う場合には2byte目に0x5Cを含む文字の動作を忘れずに確認する。
---開発環境の警告レベルをE_STRICTにする。本番環境ではdisplay_errorsをオフにする。
---register_globals、magic_quotesはオフにする。
---プレゼンテーションとロジックを分割すること。ロジックはSimpleTestを使って単体テストすること。
---SQL文に変数を埋め込むときにはプレースホルダを使う(PDOのprepareとbindParams)。
---リクエストから取得したパラメータを出力するときはhtmlspecialcharsを使う。
---関数が長くなったら分割する(composite methodパターンを使おう)。
---変数を定数として使わない。定数はdefineで定義するか、const宣言する。
---常に最新バージョンでテストできる環境を作り、サービスイン後もバージョンアップに対応するための予算をとっておく---(サービスイン後にお金をかけたくないなら、PHPは避けるべき)。
---継承を使うなら、クラス図くらいは書いておく(単にコードを再利用したいだけなら、移譲を検討すること)。
---各URLにおけるパラメータとその閾値を文書化すること。パラメータの閾値の境界線についてソースレビューし、テストすること。
---既存のフレームワークを学習することに投資すること(学習コストを嫌って自己流のフレームワークを作ることは、バグを作りこむことになるのでかえってコスト高になる)。
---PHPしか使えない作業者の成果物はこまめにレビューすること。
---コピー&ペーストプログラミングの匂いを発見したら、そのコードを書いた人にプログラミングの基礎を教えること。
---リファクタリングの時間をスケジュールに入れること。
---require/includeを条件文や関数宣言の中に記述しないこと。

-[[PHPがいかにダメな言語か>http://www.rubyist.net/~matz/20080126.html#p04]] 2008.1.26
--いろんなものがfalseだったりするせいで、新たな比較演算子「===」が必要
--hashやlistがobjectが区別できない
--オブジェクト指向機能が壊れている
--lambda(無名関数)がない。create_functionはlambdaじゃない
--short_open_tagsやらsafe_modeやらregister_globalsがonになってるかもしれない
--一貫性のない名前(str_replace,strlen,parse_strとか)
--引数の順番がわかりにくい(in_arrayとかstrposとか)
--strpos('abcd','a')は0を返すが、0は偽である
--PHPで書かれたたくさんのアプリがあるがどれもHTMLとロジックが分離されてない(本当?)
--「PHPは初心者に学びやすい」と言われる。確かにそうかもしれないが、 おかげでどれだけのSQLインジェクションやらXSS脆弱性やら、 ひどいコードが放置されていることか
--グローバル。使うんじゃないってば。

-[[なぜPHPアプリにセキュリティホールが多いのか>http://gihyo.jp/dev/serial/01/php-security]]
--[[リモートファイルインクルード脆弱性ほか>http://gihyo.jp/dev/serial/01/php-security/0001]]


*Webサイト [#ud04084e]
-[[10日で覚えるPHPの基礎>http://c-brains.jp/blog/wsg/08/04/07-144033.php]]
-[[Smarty>http://smarty.php.net/]]
--[[Smartyマニュアル>http://sunset.freespace.jp/Smarty/]]
--SmartyはPHPのためのテンプレートエンジンです。
--より明確にphpのプレゼンテーションからアプリケーションの ロジックとコンテンツを分離して管理する事を容易にします。

-[[PHPマニュアル>http://www.php.net/manual/ja/index.php]]

-[[PHPセキュリティミステーク>http://www.devshed.com/c/a/PHP/PHP-Security-Mistakes/]]


*Windows2003+IIS6でのインストール方法 [#z6c25811]
-CGIの仕組みを使って動作させる方法と、ISAPIの仕組みで動作させる方法がある。
ISAPIの方がパフォーマンスが良いのでそちらを採用する。
-まずここへ行く
--http://www.php.net/downloads.php
-ダウンロードはZIPになっているものとインストーラになっているものがあるが、
インストーラ版はCGIで動かすものしか入ってないのでZIPの方を取ってくる
--「PHP 5.1.4 zip package [8,919Kb] - 04 May 2006」をクリック
-ZIPの中身を適当なフォルダに展開する。仮にd:\PHPとする
-D:\PHPにパスを切る。
-php.iniの設定をする。最低限、extention_dir と doc_rootの設定は必要らしい
-IISで公開するフォルダに対し、IUSR_XXXでスクリプト実行できるように設定する。
-IISのISAPIフィルタに php5isapi.dll を指定する。
-IISマネージャの「Webサービス拡張」に php5isapi.dll を登録する。
-IISマネージャのサイトのプロパティの「ドキュメント」タブの「規定のコンテンツページ」にindex.phpを追加する。
-詳しくはこちら(http://jp2.php.net/manual/ja/print/install.windows.iis.php)を見よ

*Tips [#o74013ef]
-[[画像のリサイズ、切抜きができるclass.image.php>http://phpspot.org/blog/archives/2008/02/phpclassimageph.html]]
-[[Jpeg画像のリサイズ>http://code.nanigac.com/source/view/206]]
-[[有効なドメインか確認する>http://code.nanigac.com/source/view/193]]
-[[include と require の違い>http://code.nanigac.com/source/view/172]]
-[[PHPで使える暗号関数>http://code.nanigac.com/source/view/169]]


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS