<?xml version="1.0" encoding="UTF-8"?> 
<feed version="0.3" xmlns="http://purl.org/atom/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xml:lang="ja">
<title>Copy/Cut/Paste</title> 
<link rel="alternate" type="text/html" href="http://blog.livedoor.jp/k1LoW/" />
<link rel="service.post" type="application/x.atom+xml" href="http://cms.blog.livedoor.com/atom/blog_id=2244670" title="Copy/Cut/Paste" />
<link rel="hub" href="http://pubsubhubbub.appspot.com" />
<link rel="self" href="http://blog.livedoor.jp/k1LoW/atom.xml" />
<modified>2012-02-13T06:16:37Z</modified> 
<tagline><![CDATA[]]></tagline> 
<id>tag:blog.livedoor.jp,2007:k1LoW</id>
<author>
<name>k1LoW</name> 
</author>
<generator url="http://blog.livedoor.com/" version="1.0">livedoor Blog</generator> 
<copyright>Copyright (c) 2012, k1LoW </copyright>
<entry>
<title>また祭がはじまった！ PHPMatsuri2011</title> 
<link rel="alternate" type="text/html" href="http://blog.livedoor.jp/k1LoW/archives/65613274.html" />
<modified>2011-10-04T13:30:09Z</modified> 
<issued>2011-10-04T22:27:07+09:00</issued> 
<id>tag:blog.livedoor.jp,2011:k1LoW.65613274</id>
<summary type="text/plain">
1年ぶり！

今年はダークサイドに落ちるよ！</summary> 
<dc:subject></dc:subject>
<content type="text/html" mode="escaped" xml:lang="ja" xml:base="http://blog.livedoor.jp/k1LoW/archives/65613274.html">
<![CDATA[<img src="http://livedoor.blogimg.jp/k1LoW/imgs/9/2/92936021.gif" width="250" height="110" border="0" alt="banner_01" hspace="5" class="pict"  /><br /><br>
1年ぶり！<br>
<br>
今年は<a href="http://wiki.fdiary.net/YamiPHPMatsuri2011/" target="_blank">ダークサイド</a>に落ちるよ！]]> 
</content>
<author>
<name>k1LoW</name> 
</author>
</entry>

<entry>
<title>俺のMatsuriが終わった</title> 
<link rel="alternate" type="text/html" href="http://blog.livedoor.jp/k1LoW/archives/65425211.html" />
<modified>2010-11-08T11:01:40Z</modified> 
<issued>2010-11-08T20:01:40+09:00</issued> 
<id>tag:blog.livedoor.jp,2010:k1LoW.65425211</id>
<summary type="text/plain">やっと！</summary> 
<dc:subject>PHP</dc:subject>
<content type="text/html" mode="escaped" xml:lang="ja" xml:base="http://blog.livedoor.jp/k1LoW/archives/65425211.html">
<![CDATA[<img src="http://livedoor.blogimg.jp/k1LoW/imgs/c/7/c7122bfc.jpg?0c7ba7b1" width="430" height="190" border="0" alt="bunner" hspace="5" class="pict" align="left"  />やっと！]]> 
</content>
<author>
<name>k1LoW</name> 
</author>
</entry>

<entry>
<title>PHPMatsuriに参戦します！</title> 
<link rel="alternate" type="text/html" href="http://blog.livedoor.jp/k1LoW/archives/65411587.html" />
<modified>2010-09-21T11:24:50Z</modified> 
<issued>2010-09-21T19:51:34+09:00</issued> 
<id>tag:blog.livedoor.jp,2010:k1LoW.65411587</id>
<summary type="text/plain">
10月2日、3日に開催されるPHPMatsuriですが、自分も参戦します！

(んでもって、うちの会社も協賛してます。)

楽しみ
何が楽しみかって、まずは「Hackathon形式であること」。


普段会社でコーディングをしていても、周りは知った仲間なのでなかなか刺激は得にくい。情報...</summary> 
<dc:subject>PHP</dc:subject>
<content type="text/html" mode="escaped" xml:lang="ja" xml:base="http://blog.livedoor.jp/k1LoW/archives/65411587.html">
<![CDATA[<a href="http://2010.phpmatsuri.net/"><img src="http://livedoor.blogimg.jp/k1LoW/imgs/c/7/c7122bfc.jpg?0c7ba7b1" width="430" height="190" border="0" alt="bunner" hspace="5" class="pict"  /></a><br /><br>
10月2日、3日に開催される<a href="http://2010.phpmatsuri.net/">PHPMatsuri</a>ですが、自分も参戦します！<br>
<br>
(んでもって、<a href="http://2010.phpmatsuri.net/page/sponsor">うちの会社も協賛してます</a>。)<br>
<br>
<h4>楽しみ</h4><br>
何が楽しみかって、まずは「<b>Hackathon形式であること</b>」。<br>
<br>
<br>
普段会社でコーディングをしていても、周りは知った仲間なのでなかなか刺激は得にくい。情報共有も閉塞しがち。<br>
<br>
勉強会でも、情報は得られるけれどもそれ以上のことは懇親会で少し、程度。<br>
<br>
githubでもソースを知ることはできるけれども、そこまで。<br>
<br>
<br>
PHPMatsuriのHackathonなら、<b>知らない人と、いつもブログで知っているあの人と、さらにはコアデベロッパと、同じ場所でコーディングをする機会を得られる。コーディングの際の空気を知ることができる。</b><br>
これが楽しみでしょうがない。<br>
<br>
<br>
次にはやはり「<b>PHPフレームワークのコアデベロッパが実際にいること</b>」<br>
<br>
発表よりも、「いる」ということが楽しみ。CakePHPMatsuriでも話す機会があってモチベーションがあがったのだけれども、今回はさらに刺激がありそう。<br>
何か1つでも彼らにアピールしてみたい。「Search Pluginにpull request送ったけどどう？」みたいにしゃべってみたい。<br>
<br>
<br>
PHPを書いていて、少し向上が見られなくなってきたのでこの機会に是非とも刺激を受けてみたい。<br>
能動的な受身。<br>
<br>
<h4>というわけで</h4><br>
自分はCakePHPかLithiumで何か作りたいなとか思っているのだけれども、CakePHPには<a href="http://github.com/k1LoW/emacs-cake">cake.el</a>があるけれどもLithiumにはない。ということで作ってみた。<br>
<br>
<a href="http://github.com/k1LoW/emacs-li3"><br>
http://github.com/k1LoW/emacs-li3</a><br>
<br>
<br>
MVCの移動なんかがcake.elと同じキーバインドなので(個人的に)使いやすい。<br>
HelperとかComponentとかBehaviorとか、どこいったのかよくわからないので、これは(もしLithiumを使うなら)当日学習しながら実装していこうかな。<br>
<br>
<br>
<h4>募集！</h4><br>
Hackathonで、何しようか考え中です。<br>
<br>
誰か何かいいアイデアないすか？面白そうだったら一口かませてください！<br>
<br>
自分のアイデアが面白いものだったら一口かみませんか？<br>
<br>
<a href="http://twitter.com/k1LoW">Twitter@k1LoW</a>まで是非！]]> 
</content>
<author>
<name>k1LoW</name> 
</author>
</entry>

<entry>
<title>cake.elユーザのためのYet Another Ruby on Rails Minor Mode 'yarm.el' を作った</title> 
<link rel="alternate" type="text/html" href="http://blog.livedoor.jp/k1LoW/archives/65407756.html" />
<modified>2010-09-07T12:18:28Z</modified> 
<issued>2010-09-07T21:16:33+09:00</issued> 
<id>tag:blog.livedoor.jp,2010:k1LoW.65407756</id>
<summary type="text/plain">自分は普段CakePHPメインで仕事をしているのだけれども、ひょんなことからRuby on Railsを触ることに。

実際には既にあるプロジェクトのソースを触るだけなので、デプロイなどはする必要はないし、作業は主にViewファイルの編集、CakePHPとディレクトリ構成も近い、と「まあ...</summary> 
<dc:subject>Emacs</dc:subject>
<content type="text/html" mode="escaped" xml:lang="ja" xml:base="http://blog.livedoor.jp/k1LoW/archives/65407756.html">
<![CDATA[<img src="http://livedoor.blogimg.jp/k1LoW/imgs/6/2/62dec18e.png" width="140" height="140" border="0" alt="Emacs" hspace="5" class="pict" align="left"  />自分は普段CakePHPメインで仕事をしているのだけれども、ひょんなことからRuby on Railsを触ることに。<br>
<br>
実際には既にあるプロジェクトのソースを触るだけなので、デプロイなどはする必要はないし、作業は主にViewファイルの編集、CakePHPとディレクトリ構成も近い、と「まあ、簡単だろう」とタカをくくっていたら<br>
<br>
<br>
<b>作業が遅々としてすすまない。</b><br>
<br>
<br>
原因はRubyやRailsの構文を理解できないとかそういうことではなくて、<b><a href="http://github.com/k1LoW/emacs-cake">cake.el</a>の機能とキーバインドに慣れすぎた</b>。<br>
<br>
これは困った。<br>
<br>
いづれはポピュラーなRails用マイナモードの<a href="http://rinari.rubyforge.org/">Rinari</a>を使って・・・とか思っていたのだけれども、なまじMVCの構成が近いので指がcake.elのキーバインドで動いてしまう。<br>
<br>
仕方ないやということでcake.elの機能のRails移植を開始してみた。<br>
<br>
<br>
<a href="http://github.com/k1LoW/emacs-yarm">http://github.com/k1LoW/emacs-yarm</a><br>
<br>
<br>
まだ移植できていないものとか、Rails開発でのみ欲しいものとかあるけれども、基本的なファイルスイッチとanything.el連携ができたので断然効率が上がった。<br>
<br>
<b>やっぱ候補選択はanything.elだよねー</b>。Rinariはanything.el連携はしないのかいな。<br>
<br>
<br>
もともとEmacsのコマンドでマイグレーションとかテストとかWEBRick起動とか実行しようとは思っていないで(shell-pop.elユーザ)、よきに計らってくれるいつものファイルスイッチがあれば十分。<br>
<br>
あとは開発に合わせて欲しい機能を実装していけばいいかな。<br>
<br>
<br>
というわけで対象が「全世界数人のcake.elユーザ」というものですが、良かったら触ってみてください。]]> 
</content>
<author>
<name>k1LoW</name> 
</author>
</entry>

<entry>
<title>PEARライブラリをCakePHPアプリケーション内にインストールする&quot;pear_local&quot;を作ってみた</title> 
<link rel="alternate" type="text/html" href="http://blog.livedoor.jp/k1LoW/archives/65392787.html" />
<modified>2011-07-27T06:23:24Z</modified> 
<issued>2010-07-20T20:37:31+09:00</issued> 
<id>tag:blog.livedoor.jp,2010:k1LoW.65392787</id>
<summary type="text/plain">モダンなPHPの開発環境の構築方法をみていて、「はやく5.3.xに慣れないとなー」とか思っていたら、

&quot;アプリケーション以下に lib/ などとディレクトリを作って、その中に pear コマンドなどでパッケージを入れる＋ include_path を調整するのが良い(まあ、だいたいフレーム...</summary> 
<dc:subject>PHP</dc:subject>
<content type="text/html" mode="escaped" xml:lang="ja" xml:base="http://blog.livedoor.jp/k1LoW/archives/65392787.html">
<![CDATA[<img src="http://livedoor.blogimg.jp/k1LoW/imgs/d/e/deeee8d3.png" width="140" height="140" border="0" alt="CakePHP 1.2" hspace="5" class="pict" align="left"  /><a href="http://d.hatena.ne.jp/sotarok/20100717/modern_phpenv">モダンなPHPの開発環境の構築方法</a>をみていて、「はやく5.3.xに慣れないとなー」とか思っていたら、<br>
<br>
"アプリケーション以下に lib/ などとディレクトリを作って、その中に pear コマンドなどでパッケージを入れる＋ include_path を調整するのが良い<b>(まあ、だいたいフレームワークがやってるよ)</b>。<br>
<中略><br>
余談だけど、<b><a href="http://ethna.jp/">Ethna</a>なら pear-local コマンドってやつがあるよ！</b>"<br>
という記述が。<br>
<br>
なんだってー！CakePHPにはそんな便利なコマンドない！<br>
<br>
ということで作ってた。<br>
<br>
<br>
<a href="http://github.com/k1LoW/pear_local">pear_local</a><br>
<br>
<br>
app/pluginsにディレクトリを展開して<br>
<br>
<code>cake pear_local install Net_UserAgent_Mobile</code><br>
で、使用可能。<br>
<br>
app/vendors/pearにライブラリがインストールされてapp/config/bootstrap.phpに読み込むためのコードが追加される。<br>
<br>
<br>
これでCakePHPのデプロイのしやすさはそのままに、PEARライブラリを使える。<br>
<br>
<br>
<a href="http://ethna.jp/">Ethna</a>++]]> 
</content>
<author>
<name>k1LoW</name> 
</author>
</entry>

<entry>
<title>第2回CakePHP勉強会@福岡無事終了しました！</title> 
<link rel="alternate" type="text/html" href="http://blog.livedoor.jp/k1LoW/archives/65388151.html" />
<modified>2010-07-06T12:06:18Z</modified> 
<issued>2010-07-06T21:04:00+09:00</issued> 
<id>tag:blog.livedoor.jp,2010:k1LoW.65388151</id>
<summary type="text/plain">第2回CakePHP勉強会@福岡無事終了！

1年半ぶりの開催。しかも主催ということで、なんとか最後までこなせたのがほっとしました。
ちなみに、懇親会の料理だけは自信があります。

地方開催ながらもかなり濃い充実した内容で、非常に勉強になったしうれしかったです。

自分も...</summary> 
<dc:subject>PHP</dc:subject>
<content type="text/html" mode="escaped" xml:lang="ja" xml:base="http://blog.livedoor.jp/k1LoW/archives/65388151.html">
<![CDATA[<img src="http://livedoor.blogimg.jp/k1LoW/imgs/d/e/deeee8d3.png" width="140" height="140" border="0" alt="CakePHP 1.2" hspace="5" class="pict" align="left"  />第2回CakePHP勉強会@福岡無事終了！<br>
<br>
1年半ぶりの開催。しかも主催ということで、なんとか最後までこなせたのがほっとしました。<br>
ちなみに、懇親会の料理だけは自信があります。<br>
<br>
地方開催ながらもかなり濃い充実した内容で、非常に勉強になったしうれしかったです。<br>
<br>
自分もLTで発表させてもらいました。<br>
<br>
<div style="width:425px" id="__ss_4678519"><object id="__sse4678519" width="425" height="355"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=cakephpk1low-100704194239-phpapp02&stripped_title=cake-php-k1low" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed name="__sse4678519" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=cakephpk1low-100704194239-phpapp02&stripped_title=cake-php-k1low" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object></div><br>
<br>
<br>
また、発表資料が出揃った段階でまた改めて感想を書きたいと思います。<br>
<br>
県外から来ていただいた@cakephperさん、@tkykmwさん、@nojimageさん(若干福岡ですがw)。忙しい中発表していただいた@ryuringさん@rytichさんありがとうございました。<br>
代打のプリンさんもありがとう！<br>
<br>
参加していただいた皆さん、本当にありがとうございました。福岡でも充実したイベントはできる！<br>
<br>
<br>
また、濃いのをやりたいなー。]]> 
</content>
<author>
<name>k1LoW</name> 
</author>
</entry>

<entry>
<title>第2回CakePHP勉強会@福岡を開催します！</title> 
<link rel="alternate" type="text/html" href="http://blog.livedoor.jp/k1LoW/archives/65386349.html" />
<modified>2010-07-01T11:44:47Z</modified> 
<issued>2010-07-01T20:42:39+09:00</issued> 
<id>tag:blog.livedoor.jp,2010:k1LoW.65386349</id>
<summary type="text/plain">今週末7月3日は第2回CakePHP勉強会@福岡が開催されます！

第2回CakePHP勉強会@福岡

今回のメインセッションもかなり強力な方々です。

県外から、非常に活発に活動されていて自分もつねにその動向を追っている2名。
そして県内からこれまた個人的に注目している、企業とい...</summary> 
<dc:subject>PHP</dc:subject>
<content type="text/html" mode="escaped" xml:lang="ja" xml:base="http://blog.livedoor.jp/k1LoW/archives/65386349.html">
<![CDATA[<img src="http://livedoor.blogimg.jp/k1LoW/imgs/d/e/deeee8d3.png" width="140" height="140" border="0" alt="CakePHP 1.2" hspace="5" class="pict" align="left"  />今週末7月3日は第2回CakePHP勉強会@福岡が開催されます！<br>
<br>
<a href="http://atnd.org/events/5312">第2回CakePHP勉強会@福岡</a><br>
<br>
今回のメインセッションもかなり強力な方々です。<br>
<br>
県外から、非常に活発に活動されていて自分もつねにその動向を追っている2名。<br>
そして県内からこれまた個人的に注目している、企業といっていいのか個人といっていいのかその両方な2組。<br>
<br>
<br>
LTにもTwitterKitという旬なプラグインの開発者自身の発表もあります(これ正直メインセッションレベルだよな･･･時間どうしよう)。<br>
<br>
自分もここ最近の「車輪の再発明」なプラグイン(未公開含む)の紹介をしたいと思います。<br>
<br>
<br>
その他、社内的にもいろいろきっかけになる勉強会だったりします。<br>
<br>
<br>
これも博多クオリティ。楽しみ！<br>
今からでも是非参加登録してください。]]> 
</content>
<author>
<name>k1LoW</name> 
</author>
</entry>

<entry>
<title>第5回CakePHP勉強会@Tokyo 福岡サテライト開設します</title> 
<link rel="alternate" type="text/html" href="http://blog.livedoor.jp/k1LoW/archives/65365772.html" />
<modified>2010-05-12T09:23:33Z</modified> 
<issued>2010-05-12T18:23:33+09:00</issued> 
<id>tag:blog.livedoor.jp,2010:k1LoW.65365772</id>
<summary type="text/plain">第5回CakePHP勉強会@Tokyoが開催されるとのことで(既に１次募集終了)、うらやましい限りなので福岡サテライトを開設します。


第5回CakePHP勉強会@Tokyo 福岡サテライト


東京と同様に終了後そのまま懇親会を開催します。
場合によっては勉強会開始と同時に懇親会を開始し...</summary> 
<dc:subject></dc:subject>
<content type="text/html" mode="escaped" xml:lang="ja" xml:base="http://blog.livedoor.jp/k1LoW/archives/65365772.html">
<![CDATA[<img src="http://livedoor.blogimg.jp/k1LoW/imgs/d/e/deeee8d3.png" width="140" height="140" border="0" alt="CakePHP 1.2" hspace="5" class="pict" align="left"  /><a href="http://events.php.gr.jp/events/show/95">第5回CakePHP勉強会@Tokyoが開催される</a>とのことで(既に１次募集終了)、うらやましい限りなので福岡サテライトを開設します。<br>
<br>
<br>
<a href="http://atnd.org/events/4518">第5回CakePHP勉強会@Tokyo 福岡サテライト</a><br>
<br>
<br>
東京と同様に終了後そのまま懇親会を開催します。<br>
場合によっては<b>勉強会開始と同時に</b>懇親会を開始します。<br>
<br>
<br>
これぞ博多クオリティ。<br>
]]> 
</content>
<author>
<name>k1LoW</name> 
</author>
</entry>

<entry>
<title>ローカルGitリポジトリブラウジング CakePHPプラグイン&quot;Fatty&quot;を作ってみた</title> 
<link rel="alternate" type="text/html" href="http://blog.livedoor.jp/k1LoW/archives/65359586.html" />
<modified>2010-04-30T22:54:16Z</modified> 
<issued>2010-04-23T22:36:12+09:00</issued> 
<id>tag:blog.livedoor.jp,2010:k1LoW.65359586</id>
<summary type="text/plain">自分はプライベートな開発は基本的にGitに移行しており、それ以外の案件もgit-svnを使っていたりする。


で、Gitは便利で楽。その上で欲しいものが2つ。


・リポジトリブラウザ：せっかく分散リポジトリなんだし。
・現在のbranchをブラウザ上でも常に見たい：zshの設定で...</summary> 
<dc:subject>PHP</dc:subject>
<content type="text/html" mode="escaped" xml:lang="ja" xml:base="http://blog.livedoor.jp/k1LoW/archives/65359586.html">
<![CDATA[<img src="http://livedoor.blogimg.jp/k1LoW/imgs/1/d/1dc958a8.png" width="140" height="140" border="0" alt="fatty" hspace="5" class="pict" align="left"  />自分はプライベートな開発は基本的にGitに移行しており、それ以外の案件もgit-svnを使っていたりする。<br>
<br>
<br>
で、Gitは便利で楽。その上で欲しいものが2つ。<br>
<br>
<br>
・<b>リポジトリブラウザ</b>：せっかく分散リポジトリなんだし。<br>
・<b>現在のbranchをブラウザ上でも常に見たい</b>：zshの設定であるようなやつ<br>
<br>
<br>
というわけで、それらを実現するCakePHPプラグイン"<b>Fatty</b>"を作ってみた。<br>
<br>
<br>
<a href="http://github.com/k1LoW/fatty">http://github.com/k1LoW/fatty</a><br>
<br>
<br>
詳しくはREADMEで(スクリーンショットも含めてちゃんと書いた)。<br>
<br>
<br>
ちなみに、なんで"<b>Fatty</b>"という名前なのかというと、ある人に「バカ(Git)にケーキ(Cake)を与えたらどうなる？」と聞いたら、即答で<br>
<br>
「<b>そりゃデブ(Fatty)になるでしょ</b>」<br>
<br>
と返って来たから。]]> 
</content>
<author>
<name>k1LoW</name> 
</author>
</entry>

<entry>
<title>お気楽bindModel()/unbindModel() CakePHPプラグイン&quot;has_no&quot;を作ってみた</title> 
<link rel="alternate" type="text/html" href="http://blog.livedoor.jp/k1LoW/archives/65358089.html" />
<modified>2010-04-30T22:54:16Z</modified> 
<issued>2010-04-20T22:23:22+09:00</issued> 
<id>tag:blog.livedoor.jp,2010:k1LoW.65358089</id>
<summary type="text/plain">CakePHPでモデルのアソシエーションの調整方法はいくつか派閥があって、大体次の3つに分かれると思う。

[A] モデルにアソシエーションプロパティ($belongsToとか$hasManyとか)を書かずに必要に応じてbindModel()をする派
(ref: http://bakery.cakephp.org/articles/view/kee...</summary> 
<dc:subject>PHP</dc:subject>
<content type="text/html" mode="escaped" xml:lang="ja" xml:base="http://blog.livedoor.jp/k1LoW/archives/65358089.html">
<![CDATA[<img src="http://livedoor.blogimg.jp/k1LoW/imgs/d/e/deeee8d3.png" width="140" height="140" border="0" alt="CakePHP 1.2" hspace="5" class="pict" align="left"  />CakePHPでモデルのアソシエーションの調整方法はいくつか派閥があって、大体次の3つに分かれると思う。<br>
<br>
<b>[A] モデルにアソシエーションプロパティ($belongsToとか$hasManyとか)を書かずに必要に応じてbindModel()をする派</b><br>
(ref: <a href="http://bakery.cakephp.org/articles/view/keeping-bindmodel-and-unbindmodel-out-of-your-controllers">http://bakery.cakephp.org/articles/view/keeping-bindmodel-and-unbindmodel-out-of-your-controllers</a>)<br>
<br>
<b>[B] 必要に応じてunbindModel()する派</b><br>
<br>
<b>[C] Containable Behabivorを華麗に使いこなす派</b><br>
(ref: <a href="http://book.cakephp.org/ja/view/474/Containable">http://book.cakephp.org/ja/view/474/Containable</a>)<br>
<br>
<br>
で、自分はというと<b>bindModel()とかunbindModel()を書くのが面倒くさい派</b>。<br>
んでもって、<b>モデルにアソシエーションプロパティはしっかり書いておきたい派</b>。<br>
<br>
なので、モデルのアソシエーションプロパティを活用してbindModel()/unbindModel()を簡単にするhas_noプラグインを書いてみた。<br>
<br>
<br>
<a href="http://github.com/k1LoW/has_no">http://github.com/k1LoW/has_no</a><br>
<br>
<br>
使い方はhas_noプラグインを設置したあと、アソシエーションプロパティが普通に書いてあるモデルに以下のように書く。<br>
<code>var $actsAs = array('HasNo.HasNo');</code><br>
<br>
そうするとhas_noプラグインはそのアソシエーションプロパティを利用して全てのアソシエーションに大してunbindModel()を実行する(hasNo()メソッドの実行)。派閥的には[A]に近い。<br>
<br>
その後必要になるアソシエーションがある時には<br>
<code>$this->Model->has('AssociationModelName');</code><br>
とか<br>
<code>$this->Model->has(array('AssociationModelName1','AssociationModelName2'));</code><br>
とか<br>
<code>$this->Model->hasAll();</code><br>
とか書けば、モデルのアソシエーションプロパティを利用してbindModel()を実行する。<br>
<br>
通常のbindModel()とかunbindModel()とかContainable Behaviorと比べると出来ることは限られているけれども、<br>
その分使いやすいし、他との併用も可能なのがこのプラグインの利点。<br>
どうせbindModel()とかunbindModel()とかをする内容は、モデルのアソシエーションプロパティの範囲を越えることは少ないし、<br>
本当に細かい調整が必要ならbindModel()/unbindModel()/Containable Behaviorを使えばいい。<br>
<br>
<br>
面倒くさいけどアソシエーションは気にしたいよね派におすすめ。<br>
<br>
<br>
ちなみに、<br>
<code>var $actsAs = array('HasNo.HasNo' => array('init' => false));</code><br>
と書けば読み込み時のhasNo()メソッドの実行はされないので[B]的な使い方もできたりする。<br>
<br>
<br>
作ったあとに<a href="http://bakery.cakephp.org/articles/view/an-improvement-to-unbindmodel-on-model-side">これ</a>に気づいたのだけれども近い？]]> 
</content>
<author>
<name>k1LoW</name> 
</author>
</entry>

<entry>
<title>データベースのレコードデータから*fixture.phpを生成するCakePHPプラグイン&quot;Fake&quot;を作ってみた</title> 
<link rel="alternate" type="text/html" href="http://blog.livedoor.jp/k1LoW/archives/65345325.html" />
<modified>2010-04-30T22:54:16Z</modified> 
<issued>2010-03-25T02:23:03+09:00</issued> 
<id>tag:blog.livedoor.jp,2010:k1LoW.65345325</id>
<summary type="text/plain">CakePHPはテスティングフレームワークとしてSimpleTestにデフォルト対応をしているのだけれども、正直*fixture.phpの$recordsのテストデータを書くのが面倒。
とくにリレーションが複雑な場合。

ちなみに、Ruby on RailsはテストデータをYAMLで書けるらしく、ハッシュで書か...</summary> 
<dc:subject>PHP</dc:subject>
<content type="text/html" mode="escaped" xml:lang="ja" xml:base="http://blog.livedoor.jp/k1LoW/archives/65345325.html">
<![CDATA[<img src="http://livedoor.blogimg.jp/k1LoW/imgs/d/e/deeee8d3.png" width="140" height="140" border="0" alt="CakePHP 1.2" hspace="5" class="pict" align="left"  />CakePHPはテスティングフレームワークとしてSimpleTestにデフォルト対応をしているのだけれども、正直*fixture.phpの$recordsのテストデータを書くのが面倒。<br>
とくにリレーションが複雑な場合。<br>
<br>
ちなみに、Ruby on RailsはテストデータをYAMLで書けるらしく、ハッシュで書かなければならないCakePHPよりましだけれどもそれでも面倒。<br>
<br>
じゃあ、データベースのレコードデータを活用するように*fixture.phpの$importパラメータを駆使すればいいのだけれども、ここがなかなか鬼門で、いままで運用にのる形でうまくいった試しがない。<br>
やっぱり$recordsを書いて対応するのがデフォルトで安定しているみたい。<br>
<br>
<br>
でも$recordsを書くのは面倒なわけで、「*fixture.phpの$recordsをデータベースのデータから生成するようなプラグインないですかね」と#cakephp@codecheck.inで聞いてみたのだけれどもどうやらない様子。<br>
<br>
<br>
というわけで、データベースのレコードデータから*fixture.phpを生成するコンソールプラグイン"Fake"を作ってみた。<br>
<br>
<br>
<a href="http://github.com/k1LoW/fake">k1LoW's fake at master - GitHub</a><br>
<br>
<br>
ちなみに、"Fake"は"<b>Fixture generator plugin for cAKEphp</b>"の略だったりするのだけれども、他にも「<b>テストケースをレコードデータから生成するなんて本末転倒だろ</b>」ということから"Fake TDD"の略とか、bake.phpのコードを参考につくったので"Fake bAKE"の略とか。<br>
<br>
<br>
Fakeは1.2.6をベースに開発したのだけれども、既に<a href="http://d.hatena.ne.jp/hiromi2424/">id:hiromi2424</a>さんから1.3RC2で動くようにpatchをもらっていて、<a href="http://github.com/k1LoW/fake/tree/1.3">1.3ブランチ</a>の方で適用しているので、1.3RC2を利用している人はそちらを利用したら動くと思う。<br>
<br>
id:hiromi2424さんありがとうございます！<br>
<br>
<br>
あとはfake allとか実装していきたいかな。]]> 
</content>
<author>
<name>k1LoW</name> 
</author>
</entry>

<entry>
<title>Fukuoka Perl Workshop #15に参加してきた</title> 
<link rel="alternate" type="text/html" href="http://blog.livedoor.jp/k1LoW/archives/65342339.html" />
<modified>2010-04-30T22:54:16Z</modified> 
<issued>2010-03-17T03:10:23+09:00</issued> 
<id>tag:blog.livedoor.jp,2010:k1LoW.65342339</id>
<summary type="text/plain">Fukuoka.pmのFukuoka Perl Workshop #15に参加してきた。
Fukuoka.pmのみなさんお疲れ様でした！


んでもって、Perl書いたことはないのだけれども思うところがあって発表させてもらった。



いやーとても楽しかった。
php-funref-in-perlもだけどParttyでの遠隔ライブコー...</summary> 
<dc:subject>PHP</dc:subject>
<content type="text/html" mode="escaped" xml:lang="ja" xml:base="http://blog.livedoor.jp/k1LoW/archives/65342339.html">
<![CDATA[<img src="http://livedoor.blogimg.jp/k1LoW/imgs/7/4/74a0e53f.jpg" width="140" height="140" border="0" alt="PHP" hspace="5" class="pict" align="left"  />Fukuoka.pmのFukuoka Perl Workshop #15に参加してきた。<br>
Fukuoka.pmのみなさんお疲れ様でした！<br>
<br>
<br>
んでもって、Perl書いたことはないのだけれども思うところがあって発表させてもらった。<br>
<br>
<div style="width:425px" id="__ss_3447452"><object width="425" height="355"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=fukuokapm-100316125214-phpapp01&stripped_title=fukuokapm" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=fukuokapm-100316125214-phpapp01&stripped_title=fukuokapm" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object></div><br>
<br>
いやーとても楽しかった。<br>
php-funref-in-perlもだけど<a href="http://partty.org/">Partty</a>での遠隔ライブコーディングとかPerlの人の行動はすごい。<br>
<br>
PSGIという仕様がなぜ必要なのかということについても、Apache+mod_phpで事足りていた自分としては「やっと理解できた」という感じ。<br>
<br>
<br>
<a href="http://twitter.com/dragon3/statuses/10514278577">plackupなう</a>は近いかもしれない。]]> 
</content>
<author>
<name>k1LoW</name> 
</author>
</entry>

<entry>
<title>CakePHP + Oracle + Ubuntu</title> 
<link rel="alternate" type="text/html" href="http://blog.livedoor.jp/k1LoW/archives/65339165.html" />
<modified>2010-04-30T22:54:16Z</modified> 
<issued>2010-03-09T23:22:05+09:00</issued> 
<id>tag:blog.livedoor.jp,2010:k1LoW.65339165</id>
<summary type="text/plain">結構面倒なので忘れないように設定メモ。

環境は、
OS:Ubuntu 9.10
PHP:5.2.10
DB:Oracle XE(Oracle 9iでも接続確認済み)

※Oracleは別サーバを想定

Oracle Instant Clientのインストール
2つくらい方法があるのだけれどもとりあえず1つ紹介。

/etc/apt/sources.listに以...</summary> 
<dc:subject>PHP</dc:subject>
<content type="text/html" mode="escaped" xml:lang="ja" xml:base="http://blog.livedoor.jp/k1LoW/archives/65339165.html">
<![CDATA[<img src="http://livedoor.blogimg.jp/k1LoW/imgs/6/e/6e09039a.png" width="140" height="140" border="0" alt="Ubuntu" hspace="5" class="pict" align="left"  />結構面倒なので忘れないように設定メモ。<br>
<br>
環境は、<br>
OS:Ubuntu 9.10<br>
PHP:5.2.10<br>
DB:Oracle XE(Oracle 9iでも接続確認済み)<br>
<br>
※Oracleは別サーバを想定<br>
<br>
<h4>Oracle Instant Clientのインストール</h4><br>
2つくらい方法があるのだけれどもとりあえず1つ紹介。<br>
<br>
/etc/apt/sources.listに以下の設定を追加。<br>
<code>deb http://oss.oracle.com/debian unstable main non-free</code><br>
で、リポジトリをupdate。<br>
<code>$sudo apt-get update</code><br>
今回はInstant Clientだけ必要なのでoracle-xe-clientのみインストール。<br>
<code>$sudo aptitude install oracle-xe-client</code><br>
<br>
<h4>oci8のインストール</h4><br>
PECLコマンドでoci8をインストール。<br>
<code>$sudo pecl install oci8</code><br>
このときORACLE_HOMEの設定を聞かれるので以下を設定。<br>
<code>/usr/lib/oracle/xe/app/oracle/product/10.2.0/client</code><br>
これがCentOSと違ったので少しはまった。<br>
<br>
<h4>php.iniの設定</h4><br>
UbuntuでデフォルトでApacheを入れていたらapache2がインストールされているはず。<br>
<br>
php.iniはapache2とcliで分かれているので注意。<br>
mod_php(apache2)でもcliでも使えるようにするために/etc/php5/conf.d/oci8.iniを作成して以下を追記。<br>
<code>extension=oci8.so</code><br>
<br>
<h4>database.phpの設定</h4><br>
例えば接続先が192.168.24.1のOracle XEだった場合、database.phpの設定は以下のような感じ。<br>
<br>
<code>var $oracle = array(<br>
        'driver' => 'oracle',            <br>
        'persistent' => false,    <br>
        'host' => '192.168.24.1',                 <br>
        'login' => 'login',             <br>
        'password' => 'password',        <br>
        'connect' => 'oci_connect',          <br>
        'database' => '192.168.24.1/xe',    <br>
        'charset' => 'utf8',         <br>
        'prefix' => '',                  <br>
    ); <br>
</code><br>
<br>
<br>
これでbakeも通るはず。<br>
]]> 
</content>
<author>
<name>k1LoW</name> 
</author>
</entry>

<entry>
<title>最近のcake.el</title> 
<link rel="alternate" type="text/html" href="http://blog.livedoor.jp/k1LoW/archives/65334020.html" />
<modified>2010-04-30T22:54:16Z</modified> 
<issued>2010-02-27T22:45:20+09:00</issued> 
<id>tag:blog.livedoor.jp,2010:k1LoW.65334020</id>
<summary type="text/plain">昨年から本業が忙しい時期が続き、ここもずっとほったらかしになってた。


本業が忙しいということはCakePHPを使ってシステム開発をしていたということで、必然的にcake.elも拡張され続けてる。最新のバージョンは1.2.4。

前回のcake.elの記事が1.1.0のcommitのお知らせな...</summary> 
<dc:subject>Emacs</dc:subject>
<content type="text/html" mode="escaped" xml:lang="ja" xml:base="http://blog.livedoor.jp/k1LoW/archives/65334020.html">
<![CDATA[<img src="http://livedoor.blogimg.jp/k1LoW/imgs/7/8/7817d8b3.png" width="140" height="140" border="0" alt="cake.el" hspace="5" class="pict" align="left"  />昨年から本業が忙しい時期が続き、ここもずっとほったらかしになってた。<br>
<br>
<br>
本業が忙しいということはCakePHPを使ってシステム開発をしていたということで、必然的にcake.elも拡張され続けてる。最新のバージョンは1.2.4。<br>
<br>
<a href="http://blog.livedoor.jp/k1LoW/archives/65211573.html">前回のcake.elの記事</a>が1.1.0のcommitのお知らせなのでかなり変わっていることになる。<br>
最新のcake.elは、<a href="http://github.com/m2ym/auto-complete">auto-complete.el</a>を使ったモデル/コンポーネント/ビヘイビアのオムニ補完に対応していたり、cake-switchが空気を読んでファイルスイッチをしたり(オムニスイッチ?)、<a href="http://github.com/k1LoW/emacs-cake">リポジトリがGitHubに移行していたり</a>する。<br>
<br>
最近はCakePHPの1.2系と1.3系を、どうやって両方のサポートをするか(もしくは1.2系を切るか)を考え中。<br>
CakePHPのソースから1.2系か1.3系かを判断する良い方法とかないですかねー。<br>
<br>
<br>
<a href="http://d.hatena.ne.jp/cakephper/">id:cakephperさん</a>には「githubをみたら元気に活動しているのが分かる」とかIRCで言われたりしていたので、ぼちぼち調子を戻していきたい。<br>
]]> 
</content>
<author>
<name>k1LoW</name> 
</author>
</entry>

<entry>
<title>TechTouch #0b10001 Report</title> 
<link rel="alternate" type="text/html" href="http://blog.livedoor.jp/k1LoW/archives/65282124.html" />
<modified>2009-11-16T16:43:46Z</modified> 
<issued>2009-11-17T01:43:46+09:00</issued> 
<id>tag:blog.livedoor.jp,2009:k1LoW.65282124</id>
<summary type="text/plain">TechTouch #0b10001 完全に助けられつつ終了しました

ふつうのLinux
現在12章、既に中盤を過ぎたのだけれども途中仕事で出れなかったためなのかCを理解できていないためなのか、若干ついていけていない。。。

一方でCに強い人は嬉々として楽しんでいる。

とはいえ何も収穫...</summary> 
<dc:subject>codecheck.in</dc:subject>
<content type="text/html" mode="escaped" xml:lang="ja" xml:base="http://blog.livedoor.jp/k1LoW/archives/65282124.html">
<![CDATA[TechTouch #0b10001 完全に助けられつつ終了しました<br>
<br>
<h4>ふつうのLinux</h4><br>
現在12章、既に中盤を過ぎたのだけれども途中仕事で出れなかったためなのかCを理解できていないためなのか、若干ついていけていない。。。<br>
<br>
一方でCに強い人は嬉々として楽しんでいる。<br>
<br>
とはいえ何も収穫がないわけじゃなく、Linuxプログラミングに必要な知識については「聞きかじった」レベルにはなっているんじゃないだろうか。<br>
<br>
とにかく、自分の素朴な質問に丁寧に答えてくれる方々が本当に心強い。<br>
今回自分が出した疑問は<br>
<br>
<br>
<blockquote>「プロセスをfork()したら親子関係になるけれども、子プロセスが親プロセスをKILLできるのか。そしてできたとしたらそのあとどうなるのか。」</blockquote><br>
<br>
実験結果は、<b>「親プロセス殺しは可能。そして子プロセスの親はPID 1(つまりinit)になる。」</b><br>
<br>
<br>
ふむ。ダブルfork()と同じイメージかな。デーモンってこれでできたことになるんだろうか。<br>
<br>
<br>
とまあ疑問はつきません。<br>
<br>
<h4>次回予告</h4><br>
「ちょっとLinuxプログラミング続きすぎているよね。」ということで次回は息抜き的に別のTechにTouchします。<br>
対象は<br>
<br>
<br>
<b><a href="http://code.google.com/intl/ja/closure/">"Google Closure Tools"</a></b><br>
<br>
<br>
やっぱりこれは触っとかないといけないでしょう。<br>
ということで「きっかけ的に」という本来のTechTouchの趣旨にそったものになります。<br>
<br>
2時間弱でどれくらい突っ込んで遊べるかが肝。<br>
<br>
<a href="http://trac.codecheck.in/share/wiki/TechTouch"><b>TechTouch #0b10010 2009/11/19 at Fusic 20:00-</b></a>]]> 
</content>
<author>
<name>k1LoW</name> 
</author>
</entry>
</feed>

