2013-01-01から1年間の記事一覧

CakePHPのfind()で取得したデータが全てstring型になるのを、DBのカラムの型に合わせてint型で値を取得する方法(mysql)

CakePHP2からはPDOを使ってDBアクセスするようになりました。PDO(mysql)では、デフォルト設定でデータをfetchするとint型のカラムでもstring型として結果が返ってきます。CakePHPもこの影響を受けており、jsonデータなどに変換する際や、型を厳密に扱いたい…

PHPからTwilioを使って電話を操作する発表をしました

FukuokaPHP第7回 1周年記念というめでたい日に、Twilioという電話APIサービスを使ってPHPから電話をかけたり、受けたりする話をしてきました。 fukuokaphp7 PHP x twilio from ichikaway 当日のUstreamの動画はこちら http://www.ustream.tv/recorded/3347…

「Unixという考え方」はやはり良い本でした

UNIXという考え方―その設計思想と哲学という本を読み終えました。 原著のタイトルはThe Unix Philosophyです。 これは1996年に出版された古い本ですが、Unixの考え方を通して、良いソフトウェアとは何かが分かる良書です。150ページほどしかないのですぐに読…

CakePHP1.2から2.3にアップデートしたらサーバの負荷が半減した

あるプロジェクトでCakePHP1.2を使っていたのですが、そろそろサポート期間も終わりそうな気がしたのでCakePHP2.3の最新版にアップデートしました。 サイトは月に数百万PVぐらいの規模で、DBテーブル数は80ぐらい、それに加えてViewテーブルやストアドプロシ…

(2013/4/28) CakePHPのPaginatorコンポーネントに脆弱性、すぐにバージョンアップを!

CakePHP1.2, 1.3, 2.xのPaginatorコンポーネントに脆弱性があり、最悪はSQLインジェクションが起こる可能性があるとのこと。 http://bakery.cakephp.org/articles/markstory/2013/04/28/security_release_-_cakephp_1_2_12_1_3_16_2_2_8_and_2_3_4 早急にア…

CakePHPのレールの外し方(CakePHP勉強会 uluru 2013/04/19)

株式会社うるるで開催された、第1回CakePHP勉強会で発表してきました。 今回のお題は、「エンジニアとデザイナーの協業」でした。 デザイナー向けというのは、実は3回目ぐらいなので何を話そうかなと悩んでました。悩んだ末に、プログラマがどこまでデザイ…

git, github講座で3時間ほど話して声が枯れてペットボトルの水3本を消費してきました

git

4/20にWAVE新宿で下記の講座を開催しました。「フロントエンド技術をたかめたい・Webクリエイターのためのgithubで始めるgit講座」 〜黒い画面を使わずに、バージョン管理の基本を学ぼう〜 今回は、コワーキングスペース茅場町 Co-Edo(コエド)、マルチメデ…

FacebookでCakePHPの日本用グループができました

正確には数ヶ月前からグループは出来てたんだけど、野良っぽい感じだった。 今は、CakePHPコアチームの人も参加してるし、名前もCakePHP Japanというグループ名になり、正式っぽくなった感じ。https://www.facebook.com/groups/304490963004377/日本のフォー…

プロセス一覧でメモリ消費量の多い順にソート

ps aux --sort -rssさらに、それを2秒おきに更新して表示 watch ps aux --sort -rss

CakePHPコアデベロッパーMarkStoryさんのインタビュー動画

CakePHP1.3からコアデベロッパーになったMarkStoryさんのインタビュー動画が公開されてます。http://twit.tv/show/floss-weekly/244動画はダウンロードできます。 また、音声のみでもダウンロードできるので、それをiPhoneに入れて聴いてました。彼の人柄が…

Cake Beer TalkでCake1から2への移行Tips100を発表しました

CakePHP 1 to 2 Migration tips 100 from ichikaway まぁ、100個も紹介する時間は無く、31個まで。残りはどこかで。。。。ちなみに表紙の写真は、自宅から徒歩10分ぐらいのところにある海。 福岡良いよ、福岡! 今回の会は茅場町のコワーキングスペースCo-Ed…

HABTMの中間テーブルのモデルがAppModelになる問題再び

や、、、奴が帰ってきたぜ!CakePHP1の頃に一度は解決した問題、また別の場所で勃発しました。。。 「HABTMの中間テーブルがAppModelオブジェクトになってしまう問題の対応」 今回は、HTBTMを持ってるモデルでfind()を実行して(recursive=1)、その後に別の場…

[CakePHP2] SQL文を貼り付けると、CakePHPのコードを生成するサービス

infinitas-cms.org というCakePHP製CMSを開発している @dogmatic69 さんが、すごいものを開発してました。 なんと、SQL文をペーストすると、CakePHPのコードを生成するものです。http://dogmatic69.com/sql-to-cakephp-find-converter コードは3パターン出力…

CakePHP2.3からinputタグにhtml5のrequired属性がつくようになった

CakePHP2.3から、モデルのバリデーション定義で必須項目にしているフィールドには、Viewのinputタグにrequrired属性が追加されるようになりました。 つまり、下記のようなinputタグが出力されるということです(一番最後のrequired=の箇所) <input name="data[Contact][name]" maxlength="50" type="text" id="ContactName" required="required"/> これがあると、…

CakePHP2実践入門が増刷されました!

CakePHPをバリバリ使ってるエンジニアで書き上げた「CakePHP2実践入門」、おかげさまで増刷(第2刷)となりました! CakePHPをある程度使ってる方にも有用で、例えばソーシャル連携とか、セキュリティとか、テストとか、CakeEmailとか、私もCakePHP2の開発をす…

CakePHP2.3がリリースされました。

CakePHP2.3がリリースされました。 http://bakery.cakephp.org/articles/lorenzo/2013/01/28/cakephp_2_3_0_is_out マイグレーションガイドはこちら http://book.cakephp.org/2.0/en/appendices/2-3-migration-guide.html find('first')が0件だった場合の返…

ComposerでインストールしたPHPUnitをCakePHP2のコンソールから利用する方法

今回は、ComposerでインストールしたPHPUnitをCakePHP2から利用する方法です。Composerのインストール方法は昨日書きました。 「Composerを使ってPHPUnitをインストール」 さて、方法はいろいろとあると思いますが、今回はCake2が元々持っているTestShellク…

App::import('Model', 'モデル名')をCakePHP2用にApp::uses()使うように置換

テストケースなどでモデルの読み込みをApp::importでやっている箇所が大量にあったので、一括置換する方法App::importの箇所を、自分のモデル名の文字列を切り出して、App::usesに置換します。 find ./ -name "*.php" | xargs sed -i "s/App::import('Model'…

Composerを使ってPHPUnitをインストール

PHPUnitはpearなどで入れることも出来ますが、ほかのPearライブラリと同一フォルダにインストールされてしまうため管理しにくいし、チームの各自でPearインストールをしてもらうとバージョンも異なる可能性もあるので避けたい。 必要なファイルだけをGitで管…

メモ: プロジェクト内のphpファイルのシンタクスチェックを一括で行う方法

find . -type f -name "*.php" -exec php -l {} \; ctpファイルの場合 cd View find . -type f -name "*.ctp" -exec php -l {} \;

Cake1からCake2に移行した際に、Call to a member function body() on a non-objectエラーが出る場合の対応

Cake1.2からCake2に乗せ換えしていてはまった話。 エラーログに下記のようなメッセージが出てうまく表示できない場合、コントローラのresponseオブジェクトが存在しないのが原因。$this->response->body()をCakeのコアコードで呼び出すのでその時にresuponse…

メモ: 拡張子を一括変更するgit mvのやりかた

.thtmlという拡張子のファイルを、.ctpにgit mvする方法 find ./ -name "*.thtml" | xargs -i basename {} .thtml | xargs -i git mv {}.thtml {}.ctpxargs -i basenameで拡張子以外の文字列を抜き出して、それをパイプで最後のxargsに渡す