ちょっと残念なところ

PHP

今の会社はPGさんの質がいいのか、残念なコードが少ないように見えたがやっぱりあった。一年足らずのcakePHP経験でガッツリ突っ込めるコードを発見。まー見つけたのはcakePHPの練習に使われてたプロジェクトのコードなので、あんまり酷く言えないところはあ…

cakePHPのモデルでフラグをどう扱うか

php

最近のポリシーとして、モデルの中で定数とか、staticな変数とかで定義することにしている。こんな感じで。 '社員', self::EMPLOYEE_FLG_OTHER => 'その他' )…

cakePHPのformヘルパーで

PHP

いろいろと便利なヘルパーですが、画面に表示する事もあってかなりニッチな要望もあるわけです。 今日来たのは日付の区切りの「-」を消してほしいというもの。 解説書とか、サイトで見つかりそうになかったので、form.phpを読むことに。で、調べてみるとやっ…

画像が切り替わるボタン

CSS

hoverでリンク画像を切り替える http://www.nishishi.com/css/link-image-hoverchange.htmlみたいなことをやってるサイトや、やり方を紹介しているサイトは幾つか見つけたが、どれもリンクを対象にしていたので、参考にしつつ試してみた。やりたいことはほと…

フェルマーたんハピバ

どうやら今日は偉大なアマチュア数学者フェルマーの誕生日だそうです。googleのロゴもそれにちなんだものでした。

ショートタグ

php

phpのコードをで書けるようになるアレです。問題として挙げられるのは、設定で有効・無効が切り替えられる=無効だったらコードダダ漏れってこと。だったらスクリプトの先頭で明示的に有効にしてやってもいいんじゃないか?なんて思う。 確実なのはショートタグ…

cakePHPで部分一致検索

php

サンプルを探してみると $this->find("all",array("conditions" => array("name like" => "%hogehoge%")));ってなってる。 フォームの受け取りデータで部分一致とすると $this->find("all",array("conditions" => array("name like" => "%".$name."%")));こ…

なんだ、このコードは?

if($_GET['search_keyword']) $where = " 列0 like '%".$_GET['search_keyword']."%'"; if(!$where) $where=" 1= 1 and 列A !='' and 列B=0 "; else $where .=" and 1= 1 and 列A !='' and 列B=0 ";入力情報に応じてSQLを組み立てている部分ですね。で、「 1…

残念サイト

apacheに関するあるキーワードで検索したら、ぜんぜん関係ないサイトが出てきた。 何でかなーと思いhtmlのソースを見たら、非表示のdivタグの中にデバック用の出力があって、そこに検索条件がヒットした模様。 えっと、一般に公開されてるサイトで、googleさ…

実行環境を識別させる

php

開発とか本番とかでDBの設定が違ったりってのは普通にあること。で、定数の設定ファイルが環境ごとに用意されたりて、必要なものをコピーするなりincludeするなりして利用する。というのがよくある運用かなーと思ってますが、これって設定ミスが結構出るんで…

qdmailでgmail

普通にやったらこけたのでメモ。 sslを使えるようにする windowsの場合php.iniで extension=php_openssl.dll phpのディレクトリにパスが通ってればOK メールサーバー $mailParam = array( 'host'=>'tls://smtp.gmail.com', 'port'=> 465 , 'protocol'=>'SMTP…

cakePHPでエラーが発生したとき

php

例えば存在しないコントローラーなんかをcallしたときにエラー画面が表示されて、処理中断ってなるけど、ログが出ない。追っかけてみたら。cakeErrorの中にログを書くなんてやってなかった。さすがにあんまりなので。app_error.phpにログ出力を追加してみた…

cakePHPのデバックレベルを環境ごとに切り替える

php

app/config/core.phpのdebugレベルの設定のところを Configure::write('debug', (isset($_ENV["cakeDebugLevel"]) ? $_ENV["cakeDebugLevel"] : 0));ってやって、開発用マシンの環境変数に cakeDebugLevel=2と、やっとくと、開発時のコードをそのまま本番に…

論理削除フラグを考える

長年納得の行かなかった物の一つに論理削除フラグというものがある。 DBのテーブルの端っこにいる、更新時刻とかと一緒にいて、データが削除されたことを示すフラグだ。 なんでこんなことをして、レコードそのものをdeleteしないかというと、削除したという…

ログを残そう

今日から新しいお仕事。環境構築とかで一日使ってしまった・・・。 フレームワークがcakePHPか。最近やって覚えたから何とかできるでしょう。で、一番ハマったのはmodelに対応するテーブルが無くてエラーになっていたところ。なんでこんな初歩的なところでハ…

phpのお勉強に

ちょっと思ったんだが、セッション管理をDBで行うライブラリを作るというのはどうだろうか?検証用の画面も一緒につくることを前提で。 DBとのI/Oとかセッションの概念をひと通り調べることになるんじゃないかなー。もう一つはログ出力のライブラリ。 もとも…

タスクスケジューラーの実行場所

[開始 (オプション)] ボックスには、プログラムまたはスクリプトを実行するコマンドラインの作業ディレクトリを指定できます。プログラムまたはスクリプトファイルへのパス、あるいは実行可能ファイルによって使用されるファイルへのパスを指定してください…

確率計算

続パスワードの定期変更は神話なのか http://d.hatena.ne.jp/ockeghem/20101209/p1定期更新で同程度の強度のパスワードに変更し続けることで、どの程度のリスクを軽減できるかという考察です。 なるほど、たしかに確率論的にリスクを0にすることはできないし…

googleリーダー

先日、mixiの日記をRSSにして、googleリーダーに登録するって事をやってみた。 自分のサイトにスクリプトを置いて、その中でログインとマイミクの日記更新を取得してRSSで返す。googleリーダーでこのスクリプトを購読。ってかんじ。 googleリーダー以外は何…

せっかくなのでxdebugの設定も

php.iniの追記 [XDebug] zend_extension_ts="c:\app\php\php_xdebug-2.1.0-5.2-vc6.dll" xdebug.remote_enable=true xdebug.remote_host="localhost" xdebug.remote_port=9000 xdebug.remote_handler=dbgp xdebug.profiler_enable=1 xdebug.profiler_output_…

ついでにhttpd.confの修正箇所

LoadModule php5_module "C:/app/php/php5apache2_2.dll" AddType application/x-httpd-php .php PHPIniDir "C:/app/php"あとDocumentRootの変更と、DocumentRootの設定を行なっている部分のパスの設定を忘れなければOK

windowsにapacheとphpでmysqlに

毎回々々忘れるのでメモ。 展開したphpの中にあるlibmysql.dllにpathを通さないと、php_mysqli.dllがロードできないっぽい。php_mysqli.dllがlibmysql.dllを呼んでるのかな?

SVN

メモ。 svnadmin create hoge(リポジトリ名) svn import hoge file://localhost/var/svn/hoge/ -m start さ、準備はできた。

みんなで開発

SVNとかあってローカルのwebサーバーで開発なら問題はないんだけど、ネットワークの構成などの都合で共通の環境を使うとき。 これが今の職場。なかなかめんどくさい ログをtailしてると他の人のリクエスで流される 共用環境にチェックアウトなんてやると、間…

pleiadesでPHP

eclipseでJava開発なら、コンパイラもデバッガも入ってるし、SVNもあるので、すぐにコードを書き始められるけど、PHPだと状況が違う最近はxamppってのもあって割と簡単に実行環境をローカルに構築できるけどね。 デバッガの問題 PDTにはデバッガがついてない…

pleiades-e3.6-php-jre_20101025.zip

差分表示でデグレってるようですね。ヌルポ*1が発生して落っこちます。 どうやらPDTの問題らしく、2.2.1に上げればOK。 *1:NullPointException

forループのカウンターについて

今回も実際に目の当たりにした残念なコード ページャーつきのリスト表示用に配列の一部を切り出す処理です。 $page_no //ページ番号。適当な数値が入ってるとします。 $disp_row //表示行数。同様に適当な数値が入っています。 $start = ($page_no - 1) * $d…

お隣さんのフォロー

お隣さんがはまってました。 曰く、「配列の値が一つ目しか取れないんです」 $array = $obj->getValues : :(中略) : $array = $array_status <- スカラー値です : :中略 : foreach($array as $val){ 予防策。 変数の使いまわしは慎重に。適時unset/初…

残念なコード

以前見かけたコード。 これと同じレベルのコードが実際に業務で使用されていて、こんなコードを使用しているシステムが日々お金を稼いでいるのが現実。 if( $_POST["ID"] != ""){ if( ctype_alnum($_POST["ID"])){ if($_POST"PW"] != ""){ if( ctype_alnum($…

筋のいいコードを書くには

いま、頭の中のイメージを書き連ねると、少人数で残念なコードをネタにしたソースレビューのような事をやってみるのがいいのかなー。 お互いの意見を出して、いい点とか悪い点とかを整理する。これだけでも結構勉強になると思う。 もうひとつは、ちょっとし…