サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
Wikipedia
blog.ecworks.jp
大変にお待たせしました! ご好評いただきました「Pocket詳解CakePHP辞典」の続編、「詳解CakePHP辞典(通称CakePHP辞典2)」が3/15日に無事刊行となりました。基本的に本書はCakePHPバージョン2系対応本ですが、前書でページ数の都合上なくなく削った機能の解説を追加し、より多くの情報を詰め込んだ「これぞ辞典!」と言える内容となっています。 facebookのECWorksページでも若干紹介させていただいていますが、本書が前作と比較してどのような変化があったか、また多くの方からご要望のある「電子書籍化」について、執筆時のエピソード的なものを交えてちょっと書こうと思います。 前作と変わったところ Amazon等の書籍紹介ページをご覧になりますと、前作とあまり変化がないように見えますが、書店等で実物をご覧いただければ一目瞭然です。 判型がひとまわり大きくなった ページ数が
社内のサーバを引き続き構築しております。 ある程度出来てきたので、普段使用しているデスクトップ(XP)からリモートで管理者側LANにも接続できるように、LANカードを増設することにしました。俗に言う「LANカード二枚差し」です。 二枚差しそのものは当然ながらうまくいき、それぞれのネットワークに接続でき、問題なく動作していたかに見えたのですが、一つ困った状況になりました。 管理者側LANは、セキュリティの観点からインターネットに接続できないように設定してあるのですが、2枚差ししてある状態でインターネットを閲覧すると、まれに管理者側の方にルーティングされてしまい、インターネットアクセスが出来なくなってしまうのです。 また、この「まれ」というのが規則性が全くなく、突然起きるため非常に厄介でした。デフォルトゲートウェイ等を一生懸命設定してみたのですが、全く変化無し。見れたり見れなかったりを繰り返す
ModelのTipsが続いてしまいますが、今回はModel::read()についての注意事項です。 通常Modelでデータソースからのデータの読み出しはModel::find()/findBy()を用いるのが一般的だと思いますが、ほかの読み出し方法もいくつか存在しています。その中に今回取り上げます「Model::read()」がありますが、こちらは「プライマリIDを指定してレコード取得」を行うことができます。取得フィールドが指定できるため「find(‘first’, array(‘conditions’ => array(‘id’ =>$id), ‘fields’ => $fields));」に近いと思いますが、意味的にはfindById($id)のほうが近いかもしれません。 取り出し方、結果そのものについてはこれらはそれほど差がありませんが、ひとつだけread()には注意点があります。「
BaserCMS関連のTips続編です。 とにかく導入が楽でお手軽に使える事を目指しているBaserCMSですが、一つだけ個人的に良くないかなーと思う点があります。「テーマ機能」を用いて簡単にデザインを変えられる機能がありますが、ビューファイル(*.ctp)もドキュメントルート内に置く仕様になっているため、ctpファイル単体が閲覧できてしまう問題があります。 例えばTopページのビューは、インストール直後は「/themed/demo/pages/index.ctp」にあります。なので「http://www.example.com/themed/demo/pages/index.ctp」とすると次のように見えてしまいます。 PHPの関数コールが分かってしまう ソースコードが丸わかり。ビューにコードをいろいろ書いてしまうと危険! これはあまり気持ちの良い事ではないので、ビューファイルだけは見え
CakePHPを利用するにあたり、基本的にはWeb上で動作するアプリケーションを作成すると思いますが、バックエンド等でCakeの機能を用いながら処理を実行したい場合も当然出てきます。そんなときは「シェル」が活躍します。みなさんシェルは活用されていますか? CakePHP1.2/1.3では、シェルの中で「タスク」という小機能を呼び出す仕組みがあります。Shellの中に膨大な機能を全部押し込まなくても済むようになるためコードの可読性が上がり、大変に便利な機能です。膨大な機能を提供しているCake機能の一つ「Bake」も、コアコードを覗けば多数のタスクで構成されています。 使い方も簡単です。「app/vendors/shells/」内に、例えば「hoge_shell.php」を作成します。中身はShellクラスを継承した「HogeShell」クラスを作成します。そしてその中には「main()」メ
PHP Advent Calendar jp 2010 21日目担当のMASA-Pです。 CakePHP界隈ではいろいろとやらせていただいていますが、PHPコミュニティの方はなかなか日程等があわない関係もあって不参加状態ですので、もしかしたら初めましての方もいらっしゃるかもしれません。一応こんなものなんかを公開させていただいております。またこんな本とかこんな本なんかを執筆させていただだいておりますので、もし興味がありましたら是非よろしくお願いします。できれば買って!(笑) さて、今回はPHP Tipsという事なのですが、非常にお恥ずかしい話ですが当方は既にCakePHPがないと生きていけない体になっております(笑)。当方としましてもそういう道連れ的な方を一人でも多く製造したい次第ですので(笑)、布教活動がてら「CakePHPに存在している超便利な機能をライブラリとして使ってしまおう!」とい
「Ktai Library」をバージョンアップする際の研究で分かったことがあります。 「session.use_trans_sid=1」でクッキーが使えないブラウザ(例えばiMODE)でもセッションを使う対処をしたい場合、一部ページでセッションが切れる場合があります。 検索するとまず出てくるのが「リダイレクトをした場合」で、これはまだ一般的だと思いますが、実はそれ以外でも発生することが分かりました。 paginateを使っていない方には縁がないのかもしれませんが、CakePHPではGETパラメータを使わずにパラメータを挿入する機能があり ます。それは「/hoge/fuga/param:value」のようにコロンで区切ることで、パラメータを挿入することが出来ます。 ところが、この場合、PHP側で「別サイトへのリンク」と誤認識するようで、セッションキーをくっつけないのです。 例えば、次のように
【CakePHP】CakePHP Advent Calendar2010(day 7) : Tips for Routes CakePHP Advent Calendar2010 の当番が回ってきました。 本来はもっとかる~い内容でいくつもりでしたが、皆さんがっつりとやられているので、慌てて秘蔵のネタ(?)を引っ張り出すことにしました。まあとはいえ実際はそんなでもないので軽く読んでいただければ(笑)。 さて、Modelにまつわる話が多いようなので今回も違う話題にしましょう。Modelは今までTipsが出にくい仕組みの一つだったのかもしれないのですが、同じくなかなか情報として出回らないRoutes関連でも取り上げてみようと思います。 CakePHPであることを隠蔽する (CakePHP Advent Calendar 2010 2日目) でも取り上げられていましたが、CakeぽくないURLを
不定期ではありますが、「Pocket詳解 CakePHP辞典」をより楽しく便利に使っていただけるよう、本書にて取り上げられているクラス・メソッド等で「あまり知られていないけど便利!」なもの、あるいは説明が不十分なものについてのフォローも合わせて、Tipsとしてご紹介させていただきます。 今回は第1回目として、私自身も1度も使ったことのなかった「Timeヘルパー」内で面白いメソッドがあったので、ご紹介します。 CakePHPの組み込みヘルパーの中に「Timeヘルパー」があります。これは日付に関する便利な機能をまとめたヘルパーなのですが、strtotime()/strftime()をベースにしているため日付フォーマットを選ばずに処理してくれる素晴らしいヘルパーです。1.3からは国際化に対応できるように拡張されていますので、複数ロケールを持つサイトでも大変に役立ちます。 そんなTimeヘルパーな
2013年3月15日に、続編の「詳解 CakePHP辞典」が刊行されました。 詳しくは下記リンクを参照してください。 http://blog.ecworks.jp/archives/1488 今年1月から企画が始まり、いくつかのハードルを超えながら執筆したCakePHPの本が、いよいよ刊行できる運びとなりました! 前回執筆の「PHPで作る携帯サイト デベロッパーズガイド」は、どちらかというとCakePHPの解説というよりはCakePHPを用いたサイト開発手法をメインに書かせていただきましたが、今回は純粋にCakePHPの内部を徹底的に解説した、「CakePHPを使いこなすため」のリファレンスマニュアル本として書かせていただきました。 【書名】 Pocket詳解CakePHP辞典【出版社名】 秀和システム【著者名】 滝下 真玄 【価格】 2,600円(本体価格) 【ページ数】 672ページ(
相当苦しんでいたViewControllerの切り替えですが、ようやく任意のコントローラー内のViewを表示出来るようになりました。ボタンを押して切り替え、という仕組みはまだ実装していませんが、たぶん問題ないと思います。 なんのことはないです。InterfaceBuilderで、対象ViewControllerの、読み込みたいnibの設定をしていなかったため、コントローラ内のviewアウトレットが不正になっていてエラーが出ていただけでした。プロジェクトを作る際にビューベースを指定すると、何も設定せずにビューのnibを読み込むのですが、ただ単にViewControllerのインスタンスにnibの指定があったのに「クラス名をnibファイル名を同じにするとデフォルトで読み込んでくれている」と勘違いしていたのがそもそもの原因でした。 また、appAppDelegateに見えているviewContr
最近、仕事で携帯サイトを作っていて、CakePHPを用いて製作しているのですが、ShiftJISでコーディングしているのですがなぜかFirefox「だけ」文字エンコーディングがUTF-8に強制的にされてしまうことで悩んでいました。 まあこの現象は前から認識していて、例えばたまたま以前にCakePHPフォーラムで返答したことのある こんな 話題がはてブの新着に上がってきているんですが、結局このときは良く分からないままそのままになってしまっていたんですよね。 今回のこの件も、別にPCから見れる訳ではないので気にしなくても良い問題なのですが、とはいえ何だかあまり気持ちが良くないので、少し調べてみることにしました。 とにかくおかしいのは、いくら内部エンコーディングがShiftJISになっていても、header()で書き込んでも、何をしてもUTF-8にされてしまう点です。IE、Safari(iPho
昨日は1年越しの「CakePHP勉強会@東京5」が開催されました。 簡単ですがイベントの内容の報告と、当方で発表しました「Ktai Library on Cakephp1.3の資料を公開させていただきます。 ご覧の通り満員御礼! 今回は、前回の勉強会から丸1年、途中であったCakeMatsuriからも半年以上大きなイベントがなかったこともあるかもしれませんが、50名以上がひしめき合うイベントとなりました。セッション内でアンケートを採ったところ、そのうちの半分以上はこれらイベントを未経験ということで、なかなかフレッシュな集まりでした(笑)。 そして今回は、「福岡」「名古屋」「札幌」のサテライト会場、そして「ニューヨーク」からのセッションといった、今までになかった試みが行われました。凄いですね!遠くで同じイベントを共有できるなんて、時代の進歩というのか、とうとう勉強会もここまできたか!という感
かねてからやろうやろうと思って先延ばししていましたが、現在準備しているものがいい感じになってきましたので、それに合わせてやることにしました。 というわけで、「ktailibrary.org」をいよいよ公開します! 現在バグ報告は、当ブログのコメント欄がメインで使用されていますが、そろそろとても長くなってきたことと、情報の整理やオープン性が求められてきているのかな? ということで、まず手始めとしてBTSを公開することにしました。まだ何もない状態ですが、以後はこちらの方で報告いただけますと幸いです。 実は「ktailibrary.org」ドメインはず~っと前から取得はしてあったのですが、放置状態でした(^^;。ようやくお披露目できて良かったです。 また、サイト内を進んでいただきますと「おや?」と思うことがあるかもしれません。先日の「Ktai Library勉強会」に参加された皆様、もしくは福岡
時々、興味本位で他の方のプロジェクトにforkを刺したりするのですが、そのまま放置されていて知らない間に本家の方でバージョンが上がっていたりして、自分のリポジトリが古いままって事があります。gitの事を全く知らなかった頃、やり方が分からなくて結局removeしてしまったりしたのですが、やっと更新方法が分かったのでmemo書きです。 仮にhogeさんのfugaプロジェクトをgithub内でforkしたとしましょう。 そして、hogeさんがpushして、本家の方は最新版、ところが自分のfork刺したやつは古いまま、という状況です。 この場合、次のようにすることで最新版にすることが出来ます。 git pull git@github.com:hoge/fuga.git master git push まあ、よくよく考えてみればごく当たり前なのかもしれませんが(^^;;;。 というか、刺しっぱなしに
先日福岡遠征をした際に、「AIPカフェ」という施設にお邪魔をしました。IT技術者の交流の場として解放されているスペースで、イベントを開催したりいろんな事をやっている場所なんですが、ここが大変におもしろかったのです!! 東京には、こういった中心になって情報を発信できる施設がなく、勉強会とかもそれぞれが場所を見つけて運営したりしているし、また何かをリアルス ペースでアピールしたくてもイベント時でしかできなかったりで、日常的に行える場所がありません(もしかしたらあるのかもしれないけど)。 また、こういった場所があれば会社間で交流も生まれると思うし、仕事なんかが一緒に出来るかもしれない。気分転換に外で開発したくなっても電源やネット環 境に困ることが多いですが、このような施設があれば困ることはないでしょうし、また他の人の意見が聞けたりするだろうし、参考になる本とかも転がっていた ら最高です。 なので
CakePHP1.3もRC1となり、いよいよ1.2からの移行を本気で考えた方が良い時期に差し掛かってきました。 さて、1.2から1.3になることで、いくつかの新機能が搭載されていく(つまりメソッドが増える)のですが、反対に無くなっていくものもあるので注意が必要です。 たまたまTwitterでこれに関連する話題があったので、ついでなので調べてみました。 1.2.6のソースコードに書かれている「推奨しない」機能は次の通りです。 ■cache() (basics.php) 「Cache::write()」を使用します。 ■&Set::get() (set.php) Setは静的に使うことが推奨されています。 このためget()で設定値を入手しようとするとワーニングが出ます。 ■Xml::compose() (xml.php) Xml::toString()のラッピングです。 ■Email::_l
Twitterで少し議論になって、これってちょっと大事だよなと思ったことがあったので、言葉足らずだった部分についてもちょっと補足したりして記事として残しておこうと思います。 なお、これはあくまでも私の一個人としての「考え」であって、正解というわけではないと思います。ただ「こういった考え方もある」という点だけ伝わったら嬉しいです。 で、まあよくあるフレームワークにおける「MVC」の話なんですが、例えば「コントローラやモデルの中でヘルパーとか使ってもいいんじゃないか?」という点について。つまり、MVCで役割を分割しているのに、その領域を乗り越えて機能を実現することについてどうなのか、ということです。 CakePHPでも、ヘルパーの機能で汎用的に使いたい(そして実際に使える)機能があったり、逆にヘルパー内からモデルとかを呼び出して情報を取り出したりすることが出来るっちゃー出来ます。実際にコアヘル
2/6~7の2日間、「CakePHP温泉部」第一回の活動が箱根で行われました。 途中現地に到着するまでにハプニングがいくつかありましたが、活動そのものは大変有意義なものでした。 2日間の活動内容について報告させていただきます。 【日程】 2010年2月6日/7日(1泊2日) 【場所】 ホテル箱根アカデミー(箱根・湖尻) 【参加者】 konnoy(@konsan) hidetoshing(@hiden) kara_d(@kara_d) bin(@binbin4649) TAK(@takamunetanii) T.FUJIWARA(@tfmagician) [スタッフ] cakephper(@cakephper) [スタッフ] MASA-P(@ecworks_masap) [言い出しっぺ:スタッフ] ■到着まで メンバーは全員で8名でしたが、当方の車と@konsanさんの車に全員が4対4で便乗
久しぶりにCakePHPコアに関するTipsです。 バージョンは1.2系ですが、たぶん1.3系も同じだと思います。 で、今回は超便利なContainableビヘイビアの話題。 アソシエーションがたくさんになった場合は、このビヘイビアを使うことで、好きなモデル厳選して取り出すことも可能になります。 conditionsとかのオプション指定も可能! HABTM先の条件は、そのままでは指定が出来なくて全部データをとってきてしまうのですが、containを使えばHABTM先をフィルタリングできます。超便利!! 使い方は Cookbook を見てもらうとして、一つだけ落とし穴があるので注意! 通常のfind()では、オプションで’joins’を与えることにより、JOIN方法を指定できるのですが、containでは出来ないです。例えば、INNER JOINを使いたくても、contain先に指定が出来ま
※会場が変更になりました! 神奈川県足柄下郡箱根町元箱根160 ホテル箱根アカデミー http://hakone-academy.jp/ (アクセス) ・電車&バスの場合 伊豆箱根バス:小田原~(大涌谷経由)~湖尻~箱根園線 「湖尻」下車 小田原駅から1時間、箱根湯本駅から45分(同じバスです) http://www.izuhakone.co.jp/bus/rosen/timemenu/t0002.htm ・高速バスの場合 新宿(ビックカメラ前)から小田急高速バスで2時間10分 http://www.odakyu-hakonehighway.co.jp/route1/index.html ・車の場合 国道1号→元箱根を右折して県道75号→湖尻(遊覧船乗り場)をさらに300m進み山側の建物 ※電車の場合の集合場所、もしくは車での参加は後日希望を伺います。 1日目: 13:40
【CakePHP/KtaiLibrary】「PHPで作る携帯サイト デベロッパーズガイド」刊行します! 以前に予告していたものなのですが、なんとか予定日に入稿されたようですので早速告知させていただきます。 CakePHPに、当方で発表しています「Ktai Library」を組み合わせて携帯サイトを制作する方法を解説した「携帯サイト制作本」が、いよいよ12/23頃に書店に並ぶことになりました! 内容は、前半は携帯サイト制作に必要な情報をまとめ、後半は「携帯ショッピングサイト」を題材にして制作過程を順に追って説明していく、という感じです。 今まで「フレームワークを用いた携帯サイト制作」を扱った書籍がなかったので、かなり冒険的な内容と言えますが、これも「Ktai Libraryがあってこそ」実現できたのではないかと思います。 また、サイト制作の実録を掲載したことで、今までフレームワークそのものの
受講者として参加するのは久々なのですが、本日はCakePHPでAdobe Flex3を活用するというテーマのセミナーに参加しました。 ▼@IT勉強会「FlexとPHP研究会」PHPプログラマのためのFlex Builder入門 https://itmedia.smartseminar.jp/public/seminar/view/128 講師は(株)エフエックスビイの原氏。CakeMatsuriでお世話になりました! そして途中Adobeの轟氏がお見えになり、コアな内容に突入。なかなか興味深くお話を拝聴しました。 で、今回とても勉強になったこと。 「CakePHPでFLASH/Flexはかなりいけてんじゃね?」 です(笑)。 CakePHP + CakeSWXPHP + Flex(FLASH)で、フロント側のUI実現をかなり簡素化できる可能性が。このなかで、CakeSWXPHPというのは、
CakeMatsuriリレーブログ第6弾ということで、kaz_29さんからバトンをいただきましたので、今回は私MASA-Pがちょろっと書かせていただきたいと思います。先の諸氏がとても素晴らしい記事を書かれていますのでプレッシャーかかっています(^^;。皆さんの満足いく記事になるかどうかは分かりませんが、ちょっと視点を変えたネタも織り交ぜていきたいと思います。 ■CakePHPを使い始めた理由 私は初めてCakePHPに出会ったのは、約2年ほど前。1.2ベータ版が出始めた頃になります。おそらく青年団(といっても私は名ばかり参加ですが)の中では後発部隊です。PHP歴は結構古くて4.06ぐらいから使っていましたが、それまではピュアPHPメインで開発しており、オープンソースフレームワークにはあまり興味がなく、いわゆる「オレオレフレームワーク」をメインで使っていました。 CakePHPを使い始めた理
現在、iPhoneで最も極悪な不具合は「ブラウザやメールがハングアップし、メインメニューに戻されてしまう」点でしょう。よりによって長文のメールを書いているときとか、重要なサイトを開いているときとかに発生したりとかして、これによってストレスがたまっている人は多いのではないかと思います。 私も当然ながらこのような境遇に見舞われたことがあり、それによってブログの文章を失ったりしました。まあ、本体を投げつけるほど憤慨はしませんでしたが、確かになんとかしてもらうに越したことはない不具合です。 OSが近々バージョンアップされる予定があるようで、その際に直ってくれるのが一番良いのですが、私が経験した範囲で、実際に起きたケースと、その時の状況に一定の法則がありそうですので、もしお役に立てればと思い書いておくことにしました。確定的でなく、あくまでも事例ですので、参考程度にお読みいただけますと幸いです。 【i
アクセス解析ツールとして「StatPress Reloaded」という大変に優秀なツールがあるのですが、日本語化されていなかったため、日本語化ファイルを制作しました。 ▼ダウンロードはこちら statpress-reloaded-l10n-ja_JP.zip ▼プラグイン本体の入手先はこちら http://wordpress.org/extend/plugins/statpress-reloaded/ 【追記】 ファイル名が間違っていました(^^;;;。(l18nではなくl10n) また、翻訳に誤字があったため、中身も更新しました。 タイムスタンプが11:00のものが最新です。古い場合は再度ダウンロードをお願いします。
先日発表された待望のCakePHP1.3(-dev)ですが、現バージョンの1.2から移行するための情報が公開されました。 ▼Migration Guide from 1.2 to 1.3 http://code.cakephp.org/wiki/1.3/migration-guide 基本的にはそれほど困難なく移行できそうな雰囲気ですが、次の点について注意しなければならないようです。 app/webroot/index.phpはリプレースしなければならない(改造している人は注意!) app/config/core.phpは、新しい設定を追加しなければならない(PHP5.3関連) 「session.php」「socket.php」「schema.php」「bihavior.php」はそれぞれ「cake_session.php」「cake_socket.php」「cake_schema.php
DBのテーブル設定は非常に面倒な作業の一つです。 特に、開発時は仕様変更などでテーブル内のフィールドが頻繁に増減することもあるかもしれません。 テーブルを作成したり、更新したりするのに、皆さんはどのような手順を踏まれるでしょうか?まずSQLを書いて、アップロードして、mysqlやpsqlのコンソールを使って実行していますでしょうか?それとも、mysqladminとかのguiツールを使っていますでしょうか? CakePHPには、schemaシェルが付属されていて、これを用いることで簡単にテーブルを初期化することができます。コマンドラインからコマンド一発で(実際には確認メッセージがあるのでy/n選択がありますが)、書き換わるので大変に便利です。 ただ、ドキュメントや情報が公開されているブログなどが少ないため、どのように記述して良いか分からない方も多いかと思います。そこで、簡単に使い方を解説し、
フォーム内で画像を選ばせるようなインターフェースが出来ないものかと考えていて、今はやりのlightbox的なモーダルダイアログを実現出来ないかと思い、とりあえず自作してはみたのですがイマイチだったので、なんかこういうツールがないかなと思っていたのですが… やっぱりちゃんとあるんですね! ▼ThickBox 3.1 http://jquery.com/demo/thickbox/ 使い方はとっても簡単! 基本的に、ダウンロードしたJavaScriptファイルやcss、それとjQueryをwebroot内に設置して、表示したいもののURLを指定するだけ!iframe形式も、Ajaxによる埋め込みも可能です! 簡単な秘密は、URLにquery string(?~)でパラメータを渡すため、設定が不要だからだと思います。 この方式は欠点もありますが… このクエリストリングが実サイトの方にも行ってしま
次のページ
このページを最初にブックマークしてみませんか?
『ECWorks blog』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く