<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>DASALOG -ださろぐ</title>
	<atom:link href="http://dasalog.eg2mix.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://dasalog.eg2mix.com</link>
	<description>システム開発者からコーヒー屋への道。</description>
	<lastBuildDate>Mon, 07 May 2012 11:29:53 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>ロリポップ！のDBダンプデータを持ってきてMySQL5系に突っ込む時にやったこと</title>
		<link>http://dasalog.eg2mix.com/lolipop-db-migration/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=lolipop-db-migration</link>
		<comments>http://dasalog.eg2mix.com/lolipop-db-migration/#comments</comments>
		<pubDate>Mon, 07 May 2012 11:29:53 +0000</pubDate>
		<dc:creator>eg</dc:creator>
				<category><![CDATA[環境]]></category>
		<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://dasalog.eg2mix.com/?p=361</guid>
		<description><![CDATA[メモエントリーです。 とある事情によりロリポップ！で動いていたWordPressの環境をまるごと開発に持ってくる必要があり、何も考えずにダンプとってDBに突っ込もうとしたら怒られたのでメモ。 バージョンアップしてれば問題 [...]]]></description>
			<content:encoded><![CDATA[<p>メモエントリーです。<br />
とある事情によりロリポップ！で動いていたWordPressの環境をまるごと開発に持ってくる必要があり、何も考えずにダンプとってDBに突っ込もうとしたら怒られたのでメモ。</p>
<p>バージョンアップしてれば問題なさそうですが、DBデータがMySQL4系だったりするとcreate文でこけたりするので以下のように置換をかけました。</p>
<pre class="brush: bash; title: ; notranslate">
# エンジンの指定方法を置換
sed -e &quot;s/TYPE=MyISAM/ENGINE=MyISAM/&quot;
# タイムスタンプ型の(14)みたいな書き方は無効なので置換
sed -e &quot;s/timestamp(14)/timestamp/&quot;
# データ突っ込んだら文字化けしてよくみたらset NAMES ujisなんてのが居たのでutf8に
sed -e &quot;s/ujis/utf8/&quot;
</pre>
<p>DBの中身によっては他にもあるかもしれませんがとりあえずこんな感じで書式を合わせたらなんとかなった。<br />
この際だからエンジンもinnoDBに変えたりして良い気もしますが開発用なので気にしない。</p>
<p>逆にいってしまえばこれだけの修正で4系→5.5系で動かせるMySQLの互換性はなかなかすごいですね。</p>
]]></content:encoded>
			<wfw:commentRss>http://dasalog.eg2mix.com/lolipop-db-migration/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>イガイトカンタン -PhoneGapからTitaniumMobileに乗り換えて10日くらいでアプリを作った話</title>
		<link>http://dasalog.eg2mix.com/titanium10days/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=titanium10days</link>
		<comments>http://dasalog.eg2mix.com/titanium10days/#comments</comments>
		<pubDate>Mon, 12 Mar 2012 05:06:28 +0000</pubDate>
		<dc:creator>eg</dc:creator>
				<category><![CDATA[service]]></category>
		<category><![CDATA[Titanium]]></category>

		<guid isPermaLink="false">http://dasalog.eg2mix.com/?p=263</guid>
		<description><![CDATA[Phonegap→Titaniumに移行して10日でandroidアプリを作ってリリースしてみました的な記録。 コードは一行も出て来ませんごめんなさい。 そんな面倒なことしないでもっとこうしたらええがな、みたいな突っ込み [...]]]></description>
			<content:encoded><![CDATA[<p class="alignnone size-medium wp-image-308" title="device-2012-01-22-023055使い始め">Phonegap→Titaniumに移行して10日でandroidアプリを作ってリリースしてみました的な記録。<br />
コードは一行も出て来ませんごめんなさい。<br />
そんな面倒なことしないでもっとこうしたらええがな、みたいな突っ込み歓迎です。</p>
<h3>つくったもの</h3>
<p>ももいろクローバーZの情報をトータルフォローする非公式アプリ「<a title="ももクローム！" href="https://play.google.com/store/apps/details?id=me.momochro.ti.momochrome" target="_blank">ももクローム！</a>」</p>
<p><a href="http://dasalog.eg2mix.com/wp-content/uploads/2012/03/momo512-512.png"><img class="size-thumbnail wp-image-285 alignleft" title="momo512-512" src="http://dasalog.eg2mix.com/wp-content/uploads/2012/03/momo512-512-150x150.png" alt="" width="150" height="150" /></a><a href="http://dasalog.eg2mix.com/wp-content/uploads/2012/03/c7b3487b895b9ef3e406a52eb745f7aa.png"><img class="alignnone  wp-image-286" title="c7b3487b895b9ef3e406a52eb745f7aa" src="http://dasalog.eg2mix.com/wp-content/uploads/2012/03/c7b3487b895b9ef3e406a52eb745f7aa.png" alt="" width="443" height="242" /></a></p>
<h3>え、これ何するやつ？</h3>
<p>（最近なかなか会えない、になりつつある）今会えるアイドル、週末ヒロインももいろクローバーZの最新情報を１アプリでチェックすることが出来ます。あんまこういう言い方したくないけどようするにファンアプリ的なやつだよ！<br />
現在以下の情報に対応しています。</p>
<p>・メンバーブログ、スタッフブログ、新着ニュース<br />
・公式スケジュール<br />
・アイテム情報<br />
・公式動画</p>
<h3>環境</h3>
<p>・android端末 HTC　X06HT<br />
・titanium studio on windows7 on thinkpad x201<br />
・自身は昔Java、は普段PHPをメインで使っていてJSはjQueryとセットでたまに使う程度</p>
<h3>かかった時間と前提条件</h3>
<p>・業務時間外の作業（平日の夜＋休日）で約10日<br />
・サーバー側の実装はほぼほぼ終わった状態でスタート<br />
・アイコンとか画像全般は<del>ももクロファン</del>デザイン出来るやつに外注</p>
<h3>PhonegapからTitaniumへ移行した理由</h3>
<p>基本的に端末機能をほとんど使わないため最初はPhonrgap+jQueryMobileで開発していた<br />
→割と慣れたjQueryでの開発なので初速は結構でた。↓くらいの状態には一日で出来ました。</p>
<p>当初のUIはこんな感じ。jQueryMobileのテーマローラー使用。割と綺麗。</p>
<p><a href="http://dasalog.eg2mix.com/wp-content/uploads/2012/03/538052ab74d4cb66aaffbd9099df2d8b.png"><img class="alignnone size-medium wp-image-274" title="リスト２" src="http://dasalog.eg2mix.com/wp-content/uploads/2012/03/538052ab74d4cb66aaffbd9099df2d8b-180x300.png" alt="" width="180" height="300" /></a><a href="http://dasalog.eg2mix.com/wp-content/uploads/2012/03/745f7aa118709de59030f4fe96f2b053.png">　<img class="alignnone size-medium wp-image-275" title="ブログ" src="http://dasalog.eg2mix.com/wp-content/uploads/2012/03/745f7aa118709de59030f4fe96f2b053-180x300.png" alt="" width="180" height="300" /></a></p>
<p>が、以下の理由により断念</p>
<p>・ページ遷移時に同じ位置にあるボタンをタップしてしまう現象を回避できず<br />
→ボタンをタップして画面遷移した際に、同じ位置にあったボタンに対してもタップイベントが走ってしまう。イベント制御を色々試してみたが回避出来ず。<br />
・httpでのサーバーからのデータ取得がこける（これは後に別の問題と判明）<br />
・固定ヘッダの挙動がいまいち（スクロールで再描画される。たまにでない。）<br />
・その他android上での挙動が全般的にイマイチ（ページ遷移時の再描画など）</p>
<h3>Titaniumでの実装で時間がかかった部分</h3>
<p>・INTENTの機能や、andoridのメニュー機能はサンプルをみながら割とあっさり実装できた<br />
→<a href="http://www.amazon.co.jp/gp/product/4798123986/ref=as_li_ss_tl?ie=UTF8&amp;tag=egmcassoc-22&amp;linkCode=as2&amp;camp=247&amp;creative=7399&amp;creativeASIN=4798123986">Titanium Mobileで開発するiPhone/Androidアプリ</a>のサンプルやネット上のサンプルを参考に書けばおｋ</p>
<p>・UIの調整にとにかく時間がかかる<br />
参考までに以下UIの変遷</p>
<p>一覧</p>
<p><a><img title="device-2012-01-22-023055使い始め" src="http://dasalog.eg2mix.com/wp-content/uploads/2012/03/device-2012-01-22-023055-180x300.png" alt="" width="180" height="300" /></a><a href="http://dasalog.eg2mix.com/wp-content/uploads/2012/03/list1.png"> <img class="alignnone size-medium wp-image-279" title="list1" src="http://dasalog.eg2mix.com/wp-content/uploads/2012/03/list1-180x300.png" alt="" width="180" height="300" /> </a><a href="http://dasalog.eg2mix.com/wp-content/uploads/2012/03/GalaxyNexus.png"><img class="alignnone size-medium wp-image-312" title="GalaxyNexus" src="http://dasalog.eg2mix.com/wp-content/uploads/2012/03/GalaxyNexus-168x300.png" alt="" width="168" height="300" /></a><a href="http://dasalog.eg2mix.com/wp-content/uploads/2012/03/ss1_desire.png"> <img class="alignnone size-medium wp-image-283" title="ss1_desire" src="http://dasalog.eg2mix.com/wp-content/uploads/2012/03/ss1_desire-180x300.png" alt="" width="180" height="300" /></a></p>
<p>１）とりあえず一覧表示（サイズ指定がpxなのでやけに小さい）<br />
２）dip指定を覚えて サイズはいい感じに<br />
３）と思ったらgaraxy nexusで端っこがきれてる<br />
４）ロゴと背景画像を分け、背景横幅100%、ロゴをセンタリングで解決</p>
<p>詳細</p>
<p><a href="http://dasalog.eg2mix.com/wp-content/uploads/2012/03/device-2012-01-26-0308081.png"><img class="alignnone size-medium wp-image-317" title="detail1" src="http://dasalog.eg2mix.com/wp-content/uploads/2012/03/device-2012-01-26-0308081-180x300.png" alt="" width="180" height="300" /></a> <a href="http://dasalog.eg2mix.com/wp-content/uploads/2012/03/ss21.png"><img class="alignnone size-medium wp-image-318" title="detail2" src="http://dasalog.eg2mix.com/wp-content/uploads/2012/03/ss21-180x300.png" alt="" width="180" height="300" /></a> <a href="http://dasalog.eg2mix.com/wp-content/uploads/2012/03/ss5.png"><img class="alignnone size-medium wp-image-319" title="ss5" src="http://dasalog.eg2mix.com/wp-content/uploads/2012/03/ss5-180x300.png" alt="" width="180" height="300" /></a><a href="http://dasalog.eg2mix.com/wp-content/uploads/2012/03/ss11.png"> <img class="alignnone size-medium wp-image-320" title="detail4" src="http://dasalog.eg2mix.com/wp-content/uploads/2012/03/ss11-180x300.png" alt="" width="180" height="300" /></a></p>
<p>１）とりあえず詳細表示<br />
２）フキダシっぽくしてみたけど横に張り付き<br />
３）フキダシに収まるようにしたけど実際は横幅いっぱいまでwebviewがあるため中のリンクを踏むと悲しい見た目に<br />
４）なんとかフキダシ内部にwebviewを置くことに成功</p>
<p>記事のプレビューエリアはフキダシにしよう、と当初から決めていましたがここのUI調整だけでえらい時間かかりました。</p>
<p>最終的に<br />
・ベースとなるコンテンツエリアのビューを定義（縦は表示領域の余ってるところ全部）<br />
・その上にヘッダとフッタをイメージビューで配置<br />
・真ん中に背景画像にフキダシの横の線部分を設定したビューを配置。さらにそのうえに左右にマージンをとったwebviewを配置</p>
<p>で解決。<br />
手法としてはCSSで画像使って角丸設定するのと同じような感覚なんだけど、透過部分がうまくいかなかったり、マージンが効かなかったりというのを調整し、その都度実機転送して確認、を繰り返し。</p>
<p>そんな面倒なことをして、わざわざ表示する領域を狭くしてまでフキダシを設置するのもどうなのよ、というコメントを頂いたりもしますが、<strong>フキダシにしたほうがこうももかが喋ってるような感じでめっちゃ気持ち伝わるやんけ！<br />
</strong>というこだわりによるものなのであしからずご了承ください。<strong><br />
</strong></p>
<h3>はまった点など</h3>
<p><strong>・デバッグ方法</strong><br />
→Titanium Studioのデバッグメニューは「Android Emulator」しか出てこないので、しばらくそれでデバッグしていたんですが、「端末じゃないと再現しない」、「エミュレーター重いしよく落ちる」のでかなりストレスです。<br />
とはいえTi.API.debugから出力したメッセージもみたい、とあれこれやっていたところ、最終的に<strong>実機で実行して、android sdk標準のddmsを単体で立ち上げ、フィルターでTi.APIとか指定する</strong>方法でデバッグが出来そうだったのでそのようにしました。</p>
<p>余談ですが、Ti.〜とかでログ出していると、他のTitaniumで開発されたアプリが引っかかったりして楽しいです。</p>
<p><strong>・画像のサイズが合わない</strong><br />
→dip指定と100%指定を組み合わせてなんとか乗り切りましょう</p>
<p><strong>・マーケットにあがらない</strong><br />
→最後の最後でマーケットに上がらない現象が発生。アイコンが云々みたいなエラーメッセージを出されるが実際は全然別の原因で、自分の場合は<strong>i18n/en/string.xml</strong>が存在しなかったのが原因。全然ちゃうやん・・。他にも「AndroidManifest.xmlの不備」などが原因であがらなかったりするようなのでアップ時には余裕を持ってやりましょう。</p>
<p><strong>・http://〜で指定した画像が出てこない</strong><br />
→android.permission.WRITE_EXTERNAL_STORAGEで書き込み権限を持っていないとダメ。キャッシュの関係なんですが、SDカードの読み書きとか別にしねーし、と思っててもこれ入れとかないと画像が出ません。</p>
<h3>今後の課題</h3>
<p>・メモリ管理（オブジェクトの破棄とか）、モジュール化などをちゃんとやるようリファクタリング<br />
→リリースしたら終わり、というものでなければこのへんちゃんとやらんとダメね。<strong>手を抜いてちゃダメさー</strong>。<br />
・自身のjsのスキルアップをしつつ、シングルコンテキストな感じで書き直したい<br />
・内部にデータキャッシュ機構を持たせたい</p>
<p><strong>参考リンク</strong></p>
<p>一番役だったのは書籍「<a href="http://www.amazon.co.jp/gp/product/4798123986/ref=as_li_ss_tl?ie=UTF8&amp;tag=egmcassoc-22&amp;linkCode=as2&amp;camp=247&amp;creative=7399&amp;creativeASIN=4798123986">Titanium Mobileで開発するiPhone/Androidアプリ</a>」ですが、参考にした諸々のリンク先をあげておきます。<br />
androidアプリ開発のため、偏ってます。</p>
<p>・<a title="titanium-mobile-doc-ja" href="http://code.google.com/p/titanium-mobile-doc-ja/" target="_blank">titanium-mobile-doc-ja</a><br />
基本的な情報は大体ここで</p>
<p>・<a href="http://tidocs.com/mobile/latest/" target="_blank">Titanium Mobile API Documents</a><br />
APIドキュメント</p>
<p>・<a href="http://ti.masuidrive.jp/" target="_blank">Titanium BBS(JP unofficial)</a><br />
日本語非公式掲示板。困った時はここで。</p>
<p>・<a title="【Titanium Advent Calendar 2011：十九日目】Androidアプリも作ろうぜ！～Androidアプリに実装すべきTipsたちAdd Star" href="http://d.hatena.ne.jp/harukazepc/20111219/1324260914" target="_blank">【Titanium Advent Calendar 2011：十九日目】Androidアプリも作ろうぜ！～Androidアプリに実装すべきTipsたち</a><br />
この記事超参考になりました</p>
<p>・<a title="Community Questions &amp; Answers" href="http://developer.appcelerator.com/questions/newest" target="_blank">Community Questions &amp; Answers<br />
</a>本家のQA。英語ですがSDKのクリティカルなバグ情報とか対処法が見つかったりします</p>
<p>その他色々ありましたが見つけたら追記。<br />
余談としてandroid固有の話（たとえばサイズ別画像の用意）などはネイティブのandroid開発資料などが役に立ちます。</p>
<h3>まとめ</h3>
<p>・Titaniumは結構簡単にアプリを作れるがUI調整には時間がかかる</p>
<p>・実機転送の間の過ごし方をなにがしか考えておく</p>
<p>・必要なのは高いモチベーションと折れない心</p>
<p>・実機はなるべく多くの種類を用意した方がよい。解像度の低い端末ではいきなりアイコンがでかくなったりしてびびる。</p>
<p>特に３つ目の高いモチベーションは大事。<br />
そもそも私はこのアプリを自分が使いたいから、という理由で開発していたわけですが、開発期間中に手に入れた<strong>ももいろクリスマス in 日本青年館~脱皮:DAPPI~</strong>をみたい衝動を抑え開発作業を続けるのは非常な困難を伴いました。<br />
あー俺はなんでこの超いいDVD見るの我慢してこんな地味な作業を続けなければならないんだろう、という不毛な考えが浮かぶようではアプリ開発はままなりません。<br />
<strong>必要なのは折れない心です</strong>。<br />
<strong>絶対諦めないwe are！</strong></p>
<p><a href="http://momochro.me/"><img class="alignnone size-full wp-image-333" title="ももクローム！" src="http://dasalog.eg2mix.com/wp-content/uploads/2012/03/momo_sticker.jpg" alt="" width="367" height="101" /></a></p>
<p><iframe style="width: 120px; height: 240px;" src="http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank&amp;bc1=FFFFFF&amp;IS2=1&amp;bg1=FFFFFF&amp;fc1=000000&amp;lc1=0000FF&amp;t=egmcassoc-22&amp;o=9&amp;p=8&amp;l=as4&amp;m=amazon&amp;f=ifr&amp;ref=ss_til&amp;asins=B004IRQBLI" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" width="320" height="240"></iframe>　<iframe style="width: 120px; height: 240px;" src="http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank&amp;bc1=FFFFFF&amp;IS2=1&amp;bg1=FFFFFF&amp;fc1=000000&amp;lc1=0000FF&amp;t=egmcassoc-22&amp;o=9&amp;p=8&amp;l=as4&amp;m=amazon&amp;f=ifr&amp;ref=ss_til&amp;asins=4798123986" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" width="320" height="240"></iframe></p>
]]></content:encoded>
			<wfw:commentRss>http://dasalog.eg2mix.com/titanium10days/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MacPortsでphpとlibyamlをインストール</title>
		<link>http://dasalog.eg2mix.com/macports%e3%81%a7php%e3%81%a8libyaml%e3%82%92%e3%82%a4%e3%83%b3%e3%82%b9%e3%83%88%e3%83%bc%e3%83%ab/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=macports%25e3%2581%25a7php%25e3%2581%25a8libyaml%25e3%2582%2592%25e3%2582%25a4%25e3%2583%25b3%25e3%2582%25b9%25e3%2583%2588%25e3%2583%25bc%25e3%2583%25ab</link>
		<comments>http://dasalog.eg2mix.com/macports%e3%81%a7php%e3%81%a8libyaml%e3%82%92%e3%82%a4%e3%83%b3%e3%82%b9%e3%83%88%e3%83%bc%e3%83%ab/#comments</comments>
		<pubDate>Sat, 25 Feb 2012 04:14:54 +0000</pubDate>
		<dc:creator>eg</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[環境]]></category>
		<category><![CDATA[インフラ]]></category>

		<guid isPermaLink="false">http://dasalog.eg2mix.com/?p=256</guid>
		<description><![CDATA[apacheは別にいらなかったんだけどログみてたら入ってる予感・・。 peclのyamlを使いたいのでlibyamlをいれる libyamlの場所を聞かれる。 autodetectだと見つからないので明示的に指定。 po [...]]]></description>
			<content:encoded><![CDATA[<pre class="brush: bash; title: ; notranslate">
sudo port install php5
sudo port install php5-mbstring
</pre>
<p>apacheは別にいらなかったんだけどログみてたら入ってる予感・・。<br />
peclのyamlを使いたいのでlibyamlをいれる</p>
<pre class="brush: bash; title: ; notranslate">
sudo port install libyaml
pecl install yaml
</pre>
<p>libyamlの場所を聞かれる。<br />
autodetectだと見つからないので明示的に指定。<br />
portsのインストール先からなんとなくここやろって入れたら合ってた。</p>
<pre class="brush: bash; title: ; notranslate">
/opt/local
</pre>
<p>あとはphp.iniに足せばいいんだけどportsでいれた場合iniはここにある</p>
<pre class="brush: bash; title: ; notranslate">
/opt/local/etc/php5
</pre>
<p>ついでにerror_reportingやらtimezoneやら設定するととりあえずいい感じですね。</p>
]]></content:encoded>
			<wfw:commentRss>http://dasalog.eg2mix.com/macports%e3%81%a7php%e3%81%a8libyaml%e3%82%92%e3%82%a4%e3%83%b3%e3%82%b9%e3%83%88%e3%83%bc%e3%83%ab/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>muninのapache関連のデータ取得で忘れがちな点</title>
		<link>http://dasalog.eg2mix.com/munin%e3%81%aeapache%e9%96%a2%e9%80%a3%e3%81%ae%e3%83%87%e3%83%bc%e3%82%bf%e5%8f%96%e5%be%97%e3%81%a7%e5%bf%98%e3%82%8c%e3%81%8c%e3%81%a1%e3%81%aa%e7%82%b9/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=munin%25e3%2581%25aeapache%25e9%2596%25a2%25e9%2580%25a3%25e3%2581%25ae%25e3%2583%2587%25e3%2583%25bc%25e3%2582%25bf%25e5%258f%2596%25e5%25be%2597%25e3%2581%25a7%25e5%25bf%2598%25e3%2582%258c%25e3%2581%258c%25e3%2581%25a1%25e3%2581%25aa%25e7%2582%25b9</link>
		<comments>http://dasalog.eg2mix.com/munin%e3%81%aeapache%e9%96%a2%e9%80%a3%e3%81%ae%e3%83%87%e3%83%bc%e3%82%bf%e5%8f%96%e5%be%97%e3%81%a7%e5%bf%98%e3%82%8c%e3%81%8c%e3%81%a1%e3%81%aa%e7%82%b9/#comments</comments>
		<pubDate>Thu, 09 Feb 2012 08:28:25 +0000</pubDate>
		<dc:creator>eg</dc:creator>
				<category><![CDATA[misc]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[munin]]></category>
		<category><![CDATA[インフラ]]></category>

		<guid isPermaLink="false">http://dasalog.eg2mix.com/?p=248</guid>
		<description><![CDATA[メモエントリーです。 シンボリックリンクを追加 httpd.confに以下を追加（これよく忘れる・・） locationで設定出来ないケースもあるのでバーチャルホストで定義してしまう curlなどで叩いてみる 問題なけれ [...]]]></description>
			<content:encoded><![CDATA[<p>メモエントリーです。</p>
<p>シンボリックリンクを追加</p>
<pre class="brush: bash; title: ; notranslate">
ln -s /usr/share/munin/plugins/apache_accesses /etc/munin/plugins/apache_accesses
ln -s /usr/share/munin/plugins/apache_processes /etc/munin/plugins/apache_processes
ln -s /usr/share/munin/plugins/apache_volume /etc/munin/plugins/apache_volume
</pre>
<p>httpd.confに以下を追加（これよく忘れる・・）</p>
<pre class="brush: plain; title: ; notranslate">
ExtendedStatus On
</pre>
<p>locationで設定出来ないケースもあるのでバーチャルホストで定義してしまう</p>
<pre class="brush: plain; title: ; notranslate">
#status
&lt;VirtualHost *:80&gt;
    ServerName 127.0.0.1
    &lt;Location /server-status&gt;
      SetHandler server-status
      Order deny,allow
      Deny from all
      allow from 127.0.0.1
    &lt;/Location&gt;
&lt;/VirtualHost&gt;
</pre>
<p>curlなどで叩いてみる</p>
<pre class="brush: bash; title: ; notranslate">
curl http://127.0.0.1/server-status
</pre>
<p>問題なければmunin-nodeをrestart</p>
]]></content:encoded>
			<wfw:commentRss>http://dasalog.eg2mix.com/munin%e3%81%aeapache%e9%96%a2%e9%80%a3%e3%81%ae%e3%83%87%e3%83%bc%e3%82%bf%e5%8f%96%e5%be%97%e3%81%a7%e5%bf%98%e3%82%8c%e3%81%8c%e3%81%a1%e3%81%aa%e7%82%b9/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Windows+Eclipseで（ゴテゴテした）快適なCake開発環境を作る（CakePHP Advent Calendar 2011 11日目）</title>
		<link>http://dasalog.eg2mix.com/advent-201111/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=advent-201111</link>
		<comments>http://dasalog.eg2mix.com/advent-201111/#comments</comments>
		<pubDate>Sat, 10 Dec 2011 18:53:10 +0000</pubDate>
		<dc:creator>eg</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[環境]]></category>
		<category><![CDATA[cakephp]]></category>

		<guid isPermaLink="false">http://dasalog.eg2mix.com/?p=165</guid>
		<description><![CDATA[@mon_satさんからバトンを受け取ってのAdvent Calendar2011 11日目担当EG（@EGMC）です。 初参加で地味ネタですが、開発環境の話ってあまり聞かないのでとりあえず自分なりに育てた開発環境の話を [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://twitter.com/#!/mon_sat" target="_blank">@mon_sat</a>さんからバトンを受け取ってのAdvent Calendar2011 11日目担当EG（<a href="http://twitter.com/#%21/EGMC" target="_blank">@EGMC</a>）です。<br />
初参加で地味ネタですが、開発環境の話ってあまり聞かないのでとりあえず自分なりに育てた開発環境の話をしてみます。</p>
<p><em><span style="color: #000000;">※注　この前置きは長いのでさっさと本題に入りたい方は「開発環境構築編（ここから本編）」へどうぞ</span></em></p>
<p>ネタはWindows+EclipsePDT+その他tools。<br />
昨今、勉強会に行くと皆MacBook Airなどを片手に、華麗にターミナルを開いてVimやEmacsで優雅にコーディングしている光景を目に致します。<br />
そんな光景を横目に見つつ、しかしThinkpadでWindowsを起動してEclipseでもっさり開発している人たちも一定数いるはずだ！と信じてこのエントリーを書く次第です。いるかなあ。いるといいなあ。<br />
前提として環境は</p>
<p><em>・開発サーバー（物理でもVPSでも）を外部（VMとかではなく）立てていて、DBは同サーバー（または同一ネットワーク内）にある</em><br />
<em> ・ローカル環境はWindows+EclipsePDTで構築しており、プロジェクトは作成済み</em><br />
<em> ・ソース編集はローカルで行うが、DBの操作やデバッグ（ログのtailとか）はリモートで行う<br />
・ローカルのWindows環境にもphpがインストールされてる（bake用）<br />
</em></p>
<p>とします。<br />
それ以前の情報は検索すればすぐ当たると思うので他に譲ります。<br />
なお、cake1.3系で書きますが2.0系でも基本的に同じような事が出来ます。<br />
環境設定上examle.netとかにしている部分は適宜ご自分の環境に置き換えてくださいませ。</p>
<h2>なぜWindowsなのか？</h2>
<p>・プラットフォームに依存したエディタとか、使い慣れたツールがたくさんあるからです。例えば私はHTMLエディタにCrecsent EVEを使ってます。</p>
<h2>なぜEclipseなのか？</h2>
<p>・元々自分がJava開発をメインでやってたのでその流れて使い始め、慣れていたというのが大きい<br />
・起動の重さとかは色々あるものの、強力な補完機能（コード、Docコメント）、コードへのジャンプ、バージョン管理連携、プラグイン拡張など現実的な機能が多い<br />
・最悪外部エディタが起動出来たり結構なんとかなる<br />
・他の環境（Andoroid開発環境とか）と同居出来る<br />
・起動の遅さについては<a href="http://dasalog.eg2mix.com/vsuite-ramdisk-free-editionを使ってeclipse高速化/">RAMDISKなどを使って</a>ある程度は改善出来る</p>
<h2>なぜ外にサーバーを立てるのか？</h2>
<p>・自分の場合、会社と家で使うPCが違ったりするのでローカルに環境作ると何かと面倒くさい<br />
・外部から叩かれる（例えばFacebookのプラグイン入れたりとか）ような機能を追加したりする<br />
・他の人と環境を共有したりする<br />
・↑みたいなことが無ければ全然VMでいいかなーと思ってます</p>
<h2>使うツール群</h2>
<p>・<a href="http://mergedoc.sourceforge.jp/" target="_blank">Eclipse PDT（IDE） </a><br />
・<a href="http://winscp.net/eng/docs/lang:jp" target="_blank">WinSCP（ファイル転送） </a><br />
・<a href="http://toh.fuji-climb.org/pf/JP/" target="_blank">PortFowarder（ポート転送） </a></p>
<h2><span style="color: #000000;">開発環境構築編（ここから本編）</span></h2>
<h3>１）ファイルの自動転送</h3>
<p>今回の構成では開発環境はリモートにあるのですが、ソースの反映は書き換えたらリアルタイムで行いたいですよね。<br />
というわけで変更を即座に反映するよう自動転送します。<br />
WinSCPの同期機能を使います。</p>
<p><a href="http://dasalog.eg2mix.com/wp-content/uploads/2011/12/winscp_01.jpg"><img class="alignnone size-medium wp-image-185" title="winscp_01" src="http://dasalog.eg2mix.com/wp-content/uploads/2011/12/winscp_01-300x263.jpg" alt="" width="300" height="263" /></a></p>
<p>ローカルはEclipseのプロジェクトフォルダを指定してパスを合わせます。<br />
これで監視下のフォルダで変更があると即座にリモートへ転送してくれます。<br />
無視したいファイル（.svnなど）はこんな感じで除外リストに入れておきましょう。</p>
<p><a href="http://dasalog.eg2mix.com/wp-content/uploads/2011/12/winscp_02.jpg"><img class="alignnone size-medium wp-image-192" title="winscp_02" src="http://dasalog.eg2mix.com/wp-content/uploads/2011/12/winscp_02-300x222.jpg" alt="" width="300" height="222" /></a></p>
<p>この状態でセッション保存しておけば、起動→接続→CTRL+Uですぐ同期をスタート出来ます。</p>
<h3>２）Eclipseの自動補完を効かせる</h3>
<p>なぜEclipseなのか？の所で補完機能を使いたいからだよ！と書きましたが、フレームワーク故にというかCakeはあまりモデルそのものをnewしたりしないので、そのままではほとんど補完が効きません（モデル、コンポーネント、etc・・）。<br />
というわけで補完を効かせるようにコードをいじります。<br />
正直、IDEの補完機能のために不要なコードを足すのはどうなの？という思いもありますが開発効率や動作速度を天秤にかけてこの方法を採用しています。</p>
<p>app_controller.phpに</p>
<pre class="brush: php; title: ; notranslate">
/**
* Userモデル
*
* @var User
*/
var $User;

/**
* セッションコンポーネント
*
* @var SessionComponent
*/
var $Session;

/**
* authコンポーネント
*
* @var AuthComponent
*/
var $Auth;

/**
* セキュリティコンポーネント
*
* @var AuthComponent
*/
var $Security;
</pre>
<p>のように書いてどのクラスかを教えてあげます。</p>
<p>これで補完が効くようになります。</p>
<p><a href="http://dasalog.eg2mix.com/wp-content/uploads/2011/12/eclipse_hokan_02.jpg"><img class="alignnone size-full wp-image-220" title="eclipse_hokan_02" src="http://dasalog.eg2mix.com/wp-content/uploads/2011/12/eclipse_hokan_02.jpg" alt="" width="715" height="351" /></a></p>
<h3>３）ローカルからbakeを使う</h3>
<p>cakeといえばbakeですよね。<br />
モデルやコントローラの生成が楽に行えますが、リモートで生成したファイルをいちいち持ってくるのは面倒です。<br />
ローカルで（かつIDE内で）作ります。</p>
<p>bakeは当然phpが必要なのでローカルのWindowsマシンにphpを入れます。<br />
bake.batはphpにパスが通ってる前提なのでパスを通します。</p>
<p><a href="http://dasalog.eg2mix.com/wp-content/uploads/2011/12/env_setting.jpg"><img class="alignnone size-full wp-image-204" title="env_setting" src="http://dasalog.eg2mix.com/wp-content/uploads/2011/12/env_setting.jpg" alt="" width="403" height="140" /></a></p>
<p>さて、これでbakeは実行出来るのですが、モデルの情報を取得するのにDBに接続しなければなりません。<br />
ローカルにDB作るという方法もありますが、いちいち二重化させるのは面倒なのでリモートのDBに繋ぎたいです。<br />
ポート転送を使いましょう。<br />
Teratermのポート転送機能などもありますが、今回はPortForwarderを使います。</p>
<p><a href="http://dasalog.eg2mix.com/wp-content/uploads/2011/12/portfowarder_02.jpg"><img class="alignnone size-full wp-image-215" title="portfowarder_02" src="http://dasalog.eg2mix.com/wp-content/uploads/2011/12/portfowarder_02.jpg" alt="" width="326" height="239" /></a></p>
<p>config.txtはこんな感じで</p>
<pre class="brush: bash; title: ; notranslate">
Host dev.example.net
HostName dev.example.net
# hostname or IP address

User hoge
# username on server. NEEDED

LocalForward 13306 localhost:3306
# localforward info1

Compression yes
# if you need compression

IdentityFile dev.example.net-key.rsa
</pre>
<p>13306ポートをリモートサーバーの3306に転送してます。<br />
これでPortForwarderを立ち上げてDBの接続先を13306にすれば繋がります。<br />
開発環境と、ローカルで接続情報が異なる場合は実行パスの判定などを行って接続先を切り替えます。</p>
<p>core.phpで切り替える場合は例えばこんな感じで</p>
<pre class="brush: php; title: ; notranslate">
if (__FILE__ === 'C:\path_to_workspace\project\app\core.php') {
// ローカルでbakeするための設定
    define( '_DB_HOST' , '127.0.0.1:13306' );
    define( '_DB_NAME' , 'projectname' );
    define( '_DB_USER' , 'user' );
    define( '_DB_PASS' , 'pass' );
} else {
    // サーバーで動かすための設定
    define( '_DB_HOST' , '127.0.0.1:3306' );
    define( '_DB_NAME' , 'projectname' );
    define( '_DB_USER' , 'user' );
    define( '_DB_PASS' , 'pass' );
}
</pre>
<p>※ちなみにCake2.x系の場合はPORTは別指定になりますね</p>
<p>bake用の実行構成を実行→外部ツールから作成します。</p>
<p><a href="http://dasalog.eg2mix.com/wp-content/uploads/2011/12/bake_setting.jpg"><img class="alignnone size-full wp-image-212" title="bake_setting" src="http://dasalog.eg2mix.com/wp-content/uploads/2011/12/bake_setting.jpg" alt="" width="448" height="588" /></a></p>
<p>これでIDEからbakeが実行出来ます。</p>
<p><a href="http://dasalog.eg2mix.com/wp-content/uploads/2011/12/bake_console1.jpg"><img class="alignnone size-large wp-image-211" title="bake_console" src="http://dasalog.eg2mix.com/wp-content/uploads/2011/12/bake_console1-800x189.jpg" alt="" width="800" height="189" /></a></p>
<p>ファイルの生成を行った後、F5でファイルのリフレッシュを行うと反映されますね。</p>
<p>ここまでやると晴れて快適に補完も効き、bakeも使え、ソースも同期される開発環境が構築出来ます。</p>
<p>ちなみにここまでの設定をすべて行って必要な諸々を起動すると画面はこんな感じになります。</p>
<p><a href="http://dasalog.eg2mix.com/wp-content/uploads/2011/12/dev_ss_02.jpg"><img class="alignnone size-large wp-image-236" title="dev_ss_02" src="http://dasalog.eg2mix.com/wp-content/uploads/2011/12/dev_ss_02-800x500.jpg" alt="" width="800" height="500" /></a></p>
<p>・・・・まあ非常にWindowsらしい感じですね、うんうん。<br />
立ち上げているものも多く、そもそもサーバー側で作業すれば楽なことも多々ありますが、まあこれはこれで慣れればいいものですよー。<br />
Windowsで開発をされている方のお役に立てれば幸いです。<br />
あと、こんな面倒なことしなくてもこんなんありまっせ！みたいな情報もあれば是非twitterなどで突っ込んで頂ければと思います。</p>
<p>そんなこんなで初参加の<a href="http://atnd.org/events/22721">CakePHP Advent Calendar 2011でした。</a>明日は<a href="http://twitter.com/#!/slumbers99" target="_blank">@slumbers99</a>さんです！</p>
]]></content:encoded>
			<wfw:commentRss>http://dasalog.eg2mix.com/advent-201111/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>CakePHPのShell内部でemailビューをレンダリングしてQdmailでメールを送る</title>
		<link>http://dasalog.eg2mix.com/cakephp-shell-qdmail/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=cakephp-shell-qdmail</link>
		<comments>http://dasalog.eg2mix.com/cakephp-shell-qdmail/#comments</comments>
		<pubDate>Thu, 17 Nov 2011 06:59:02 +0000</pubDate>
		<dc:creator>eg</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[cakephp]]></category>
		<category><![CDATA[qdmail]]></category>
		<category><![CDATA[shell]]></category>

		<guid isPermaLink="false">http://dasalog.eg2mix.com/?p=156</guid>
		<description><![CDATA[タイトルまま。 我ながらこれは悪手だと思うがとりあえずこの方法で実現は出来ましたので公開。 こんなやり方もあるよ！とかあれば是非twitterなどでツッコミくださいませ。 ちなみにビューはSmartyプラグインを使ってい [...]]]></description>
			<content:encoded><![CDATA[<p>タイトルまま。<br />
我ながらこれは悪手だと思うがとりあえずこの方法で実現は出来ましたので公開。<br />
こんなやり方もあるよ！とかあれば是非twitterなどでツッコミくださいませ。<br />
ちなみにビューはSmartyプラグインを使っていますがこの場合基本ビューはなんでもよく、ヘルパーも普通に使えると思います（多分）＿。</p>
<h4>環境</h4>
<p>PHP5.3.6<br />
CakePHP1.3系<br />
Qdmail1.2.6b</p>
<h4>そもそもの問題点</h4>
<p>cakeのというか、Qdmailの仕様で、ビューのemailエレメントを使ってメール本文を構築する際に、コントローラーに値をセットして渡す必要がある。<br />
コントローラーからメール送信する場合はそれでよいが、シェルなどから（例えばユーザーに対しての一斉送信などで）メールを送る場合はコントローラーが存在しないため値の受け渡しが出来ないので考えた結果コントローラをでっちあげる事にしたという話。</p>
<h4>サンプル</h4>
<pre class="brush: php; title: ; notranslate">
&lt;?php

App::import('Core', 'Controller');
App::import('Component', 'Qdmail');
App::import('Core', 'Router');

class HogeShell extends Shell {

    var $uses = array('User');

    function startup() {

    }

    function main() {

        // qdmail
        $this-&gt;Qdmail = new QdmailComponent();
        // テンプレートに入れ込むためのデータ
        $userdata = $this-&gt;User-&gt;read(null, 100);

        // Qdmailコンポーネントに食わせるためのダミーコントローラーを生成
        App::import(&quot;Controller&quot;, &quot;App&quot;);
        $dummycontroller = new AppController();
        // 値をセット
        $dummycontroller-&gt;set(&quot;user&quot;, $userdata);
        // startupを自分で呼んでダミーコントローラーを渡す
        $this-&gt;Qdmail-&gt;startup($dummycontroller);

        $this-&gt;Qdmail-&gt;to($userdata['User']['email']);
        $this-&gt;Qdmail-&gt;subject('シェルからのメール送信');
        $this-&gt;Qdmail-&gt;from('test@example.com');
        // emailエレメント使う
        $this-&gt;Qdmail-&gt;cakeText( null ,'users.notice');
        $this-&gt;Qdmail-&gt;send();
    }
}
</pre>
<p>これで生成したAppコントローラーを経由して値の受け渡しが出来、送信時にviews以下のテンプレートを使用することが出来る。<br />
コントローラーはもちろんダミーで無駄な生成コストがかかってるがとりあえずやりたい内容は実現出来た。</p>
<h4>そもそもの話というか不満点</h4>
<p>emailの送信はコントローラーだけでなく色々なレイヤーで行われるので、コントローラーに依存したくない。画面出力に使わない値をメール送信のためだけのコントローラーにバインドするというのもちょっと気持ち悪い。<br />
（まとめて配列でパラメータを渡すとかでいいと思う）</p>
<p>いずれにせよこれはあまり筋の良い解決法とは思われないので、何か良い方法を考えたい・・。</p>
]]></content:encoded>
			<wfw:commentRss>http://dasalog.eg2mix.com/cakephp-shell-qdmail/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CakePHP2.0.2で意地でもTwigを使ってみる</title>
		<link>http://dasalog.eg2mix.com/cakephp2-0-2-twig/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=cakephp2-0-2-twig</link>
		<comments>http://dasalog.eg2mix.com/cakephp2-0-2-twig/#comments</comments>
		<pubDate>Tue, 15 Nov 2011 14:46:52 +0000</pubDate>
		<dc:creator>eg</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[cakephp]]></category>
		<category><![CDATA[twig]]></category>

		<guid isPermaLink="false">http://dasalog.eg2mix.com/?p=124</guid>
		<description><![CDATA[CakePHPの2.0系が最近安定版リリースされましたね。 まだまだ情報は少ないですが、折角なので新規の開発は1.3系ではなく2系でやりたい！と思うこの頃です。 さて、CakeといえばテンプレートエンジンはSmartyを [...]]]></description>
			<content:encoded><![CDATA[<p>CakePHPの2.0系が最近安定版リリースされましたね。<br />
まだまだ情報は少ないですが、折角なので新規の開発は1.3系ではなく2系でやりたい！と思うこの頃です。</p>
<p>さて、CakeといえばテンプレートエンジンはSmartyを使う人が多い印象ですが私は圧倒的にTwigが好きです。然り、Twigが好きなわけです。</p>
<p>CakeでTwigを利用するプラグインは<a href="https://github.com/m3nt0r/cakephp-twig-view">こんな感じで</a>Kjell Bublitz氏が作成されているわけですが、<a href="http://cakealot.com/2011/05/twig-for-cakephp-updates/">早くも2系に実験的ながら対応しました</a>的なことが書いてあるのでこれは！ということで導入してみました。<br />
2系の仕様がよくわかってなかったりドキュメントがまだアレだったりと色々ありましたがとりあえず動かせてます。</p>
<p>環境：<br />
CakePHP2.0.2<br />
Twig1.3.0(stable)<br />
cakephp-twig-view(commit a5fc2e6291)</p>
<p>導入：<br />
１）基本的にInstallationに書いてある通りのフォルダ階層で突っ込みます。</p>
<p><img class="alignnone size-full wp-image-151" title="フォルダ体系２" src="http://dasalog.eg2mix.com/wp-content/uploads/2011/11/22247a771f7b162e92df5affd39f7547.jpg" alt="" width="298" height="408" /></p>
<p>こんな感じで、Plugin直下にtwig_viewを配置。<br />
Twig本体はvendorsの下に配置。</p>
<p>２）初期設定諸々</p>
<p>app/Config/bootstrap.phpあたりに下記コードを追加してプラグイン有効化</p>
<pre class="brush: php; title: ; notranslate">
CakePlugin::load('TwigView');
</pre>
<p>app/Controller/AppController.phpにてviewClassの変更<br />
(2系は$viewではないっぽい)</p>
<pre class="brush: php; title: ; notranslate">
class AppController extends Controller {

    public $viewClass = &quot;TwigView.Twig&quot;;
}
</pre>
<p>３）app/Plugin/views/twig.phpの編集<br />
そのままだと動かなかったのでパスまわりの修正をする。<br />
・Twigオートローダーの読み込み</p>
<pre class="brush: php; title: ; notranslate">
// Load Twig Lib and start auto loader
App::import('Vendor', 'TwigView.TwigAutoloader', array(
'file' =&gt; 'Twig'.DS.'lib'.DS.'Twig'.DS.'Autoloader.php'
));
include_once __DIR__ . '/../vendors/' . 'Twig'.DS.'lib'.DS.'Twig'.DS.'Autoloader.php';
</pre>
<p>・・App::importがなぜかうまく読み込めてなかったので無理矢理include・・App::importの仕様がようわからんです。</p>
<p>・2系用にパス周りの修正とautoescape<br />
まとめてこんな感じに書き換えちゃいました。<br />
autoescapeは後述しますがちょっと問題があるのでお好みで。私はonにしました。</p>
<pre class="brush: php; title: ; notranslate">
    function __construct(&amp;$controller, $register = true) {

        parent::__construct($controller, $register);

        if($this-&gt;isCake2()) {

            // just collecting for str_replace
            $this-&gt;templatePaths = array(
                APP.'View',
                ROOT.DS.'cake'.DS.'Lib'.DS.'View'
            );
            $loader = new Twig_Loader_Filesystem(APP.'View');
        } else {
            $this-&gt;templatePaths = array(
                APP.'views',
                ROOT.DS.'cake'.DS.'libs'.DS.'view'
            );

            // we always look in APP, this includes error templates.
            $loader = new Twig_Loader_Filesystem(APP.'views');
        }
        // setup twig and go.
        $this-&gt;Twig = new Twig_Environment($loader, array(
            'cache' =&gt; TWIG_VIEW_CACHE,
            'charset' =&gt; strtolower(Configure::read('App.encoding')),
            'auto_reload' =&gt; (bool) Configure::read('debug'),
            //'autoescape' =&gt; false
            'autoescape' =&gt; true
        ));;

        // overwrite some stuff
        $this-&gt;Twig-&gt;addExtension(new CoreExtension);

        // activate |trans filter
        $this-&gt;Twig-&gt;addExtension(new Twig_Extension_I18n);

        // activate |ago filter
        $this-&gt;Twig-&gt;addExtension(new Twig_Extension_TimeAgo);

        // activate basic filter
        $this-&gt;Twig-&gt;addExtension(new Twig_Extension_Basic);

        // activate number filters
        $this-&gt;Twig-&gt;addExtension(new Twig_Extension_Number);

        if (isset($controller-&gt;theme))
            $this-&gt;theme =&amp; $controller-&gt;theme;

        $this-&gt;ext = '.tpl';
    }

}
</pre>
<p>$this-&gt;isCake2()を使ってざっくりパスの切替をしています。<br />
$this-&gt;isCake2は親で設定されるプロパティを使って判定しているので、親のコンストラクタの後に諸々の処理を移動しています。</p>
<p>４）使ってみる</p>
<p>コントローラーでこんな値を設定してみて</p>
<pre class="brush: php; title: ; notranslate">

public function index() {

    $array_vars = array(&quot;foo&quot; =&gt; &quot;&lt;bar&gt;&quot;,&quot;hoge&quot; =&gt; &quot;&lt;hogehoge&gt;&quot; );

    $this-&gt;set(&quot;hello&quot;, &quot;&lt;hello! It's a beautiful Twig World!!&gt;&quot;);
    $this-&gt;set(&quot;array_vars&quot;, $array_vars);

}
</pre>
<p>出力してみます。ビューファイルの拡張子は.tplで（変更可能）</p>
<pre class="brush: xml; title: ; notranslate">
&lt;div&gt;
変数：
     {{hello}}
&lt;/div&gt;
&lt;div&gt;
連想配列：
&lt;ul id=&quot;sortable_list&quot;&gt;
{% for k,v in array_vars %}
    &lt;li&gt; {{ k }} , {{ v }}&lt;/li&gt;
{% endfor %}
&lt;/ul&gt;
&lt;/div&gt;
&lt;div&gt;
ヘルパー：
    {{form.create()|raw}}
    {{form.input('input')|raw}}
    {{
    form.input('email', {
        'label': 'Your E-Mail Address'| trans
        })
    |raw}}
    {{form.end()|raw}}
&lt;/div&gt;
</pre>
<p>こんな感じに出力されます</p>
<p><img class="alignnone size-full wp-image-152" title="twig_screen" src="http://dasalog.eg2mix.com/wp-content/uploads/2011/11/twig_screen.jpg" alt="" width="669" height="395" /></p>
<p>&lt;や&#8217;もエスケープされてますね。<br />
オートエスケープをオンにするとヘルパーで生成したコードもエスケープされてしまうので|rawで出力しています。<br />
ここらへんを考慮してデフォルトオフにしているんでしょうが、出来ればヘルパーで生成した場合は自動で生出力とかにしたい・・。</p>
<h3>ざっくりまとめ</h3>
<p>2.0対応の部分についてはまだドキュメントなども追いついてない部分がありますがとりあえず動かすことは出来ました。<br />
ソースはすべてgithubで公開されているので自分もフィードバック送ったりしたいところですがgitの使い方がようわからん・・。使わないとなあ。</p>
<p>また、2系の仕様がイマイチよくわかってないのでTwigの読み込みがApp::importになってたりアヤシイ感じなのでここはこうじゃないだろ！というツッコミお待ちしております。</p>
]]></content:encoded>
			<wfw:commentRss>http://dasalog.eg2mix.com/cakephp2-0-2-twig/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>第57回PHP勉強会@東京で濃ゆい話を聞いてきた</title>
		<link>http://dasalog.eg2mix.com/phpstudy_108/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=phpstudy_108</link>
		<comments>http://dasalog.eg2mix.com/phpstudy_108/#comments</comments>
		<pubDate>Sat, 12 Nov 2011 13:50:03 +0000</pubDate>
		<dc:creator>eg</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[イベント]]></category>

		<guid isPermaLink="false">http://dasalog.eg2mix.com/?p=106</guid>
		<description><![CDATA[初心者向け負荷軽減のはなし（taka0024/60分/php中級者～Webプロデューサーを目指す人へ） @taka0024さん ・初心者向け負荷低減 ・負荷軽減はお金になるよ！ 最初にアンケート １）立場は？ →プログラ [...]]]></description>
			<content:encoded><![CDATA[<p><strong>初心者向け負荷軽減のはなし（taka0024/60分/php中級者～Webプロデューサーを目指す人へ）</strong></p>
<p>@taka0024さん</p>
<p>・初心者向け負荷低減<br />
・負荷軽減はお金になるよ！</p>
<p>最初にアンケート<br />
１）立場は？<br />
→プログラマーが多数</p>
<p>２）何やってる？<br />
→自社サービスが多数</p>
<p>３）負荷軽減やってる？<br />
→結構やってるが多数</p>
<p>ある日突然負荷軽減して欲しいといわれたら？<br />
携帯SNS→プログラム作り直せば？→いやそりゃ無理っしょ→で、実際に負荷低減した話。<br />
初心者向け、と銘打ってましたがDBの水平、垂直分割が出てきたり結構色々。</p>
<p>tips）<br />
materはブラックホールエンジンを使ってレプリケーションさせる<br />
クエリアナライザを使う<br />
普通のクエリログもみる<br />
MySQLのバージョンは新しいのを使おう。</p>
<p>気になったけど聞きそびれた点・・・）<br />
具体的にどの程度の効果があったのか、ざっくりの数値かグラフレベルでみたいなあ。<br />
インフラのコスト面での話。</p>
<p><strong>触れてはいけないほうの闇の話（sasezaki/10分/PHP初級者）ykll</strong></p>
<p>@sasezakiさん</p>
<div id="__ss_10131007" style="width: 425px;"><strong style="display: block; margin: 12px 0 4px;"><a title="PHP 触れてはいけないほうの闇の話" href="http://www.slideshare.net/sasezaki/php-10131007" target="_blank">PHP 触れてはいけないほうの闇の話</a></strong> <iframe src="http://www.slideshare.net/slideshow/embed_code/10131007" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" width="425" height="355"></iframe></p>
<div style="padding: 5px 0 12px;">View more <a href="http://www.slideshare.net/" target="_blank">presentations</a> from <a href="http://www.slideshare.net/sasezaki" target="_blank">sasezaki</a></div>
</div>
<p>・コードは書いたとおりに動く<br />
・個々一番氏へのお礼がありました</p>
<p>どこまで書いていいかわからないが<br />
・メンテナは大変・・・<br />
・テストコードがis_array</p>
<p>雑感）<br />
・なにそれこわい<br />
・テストコードのパッチ・・は・・面倒・・なのかな？</p>
<p><strong>PHP がいっぱい（@yuya_takeyama/10分/PHP のバイナリを日常的にビルドする人向け）</strong></p>
<p>@yuya_takeyamaさん</p>
<div id="__ss_10126898" style="width: 425px;">
<p><strong style="display: block; margin: 12px 0 4px;"><a title="Building Development Environment with php-build and phpenv" href="http://www.slideshare.net/taketyan/building-development-environment-with-phpbuild-and-phpenv" target="_blank">Building Development Environment with php-build and phpenv</a></strong> <iframe src="http://www.slideshare.net/slideshow/embed_code/10126898" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" width="425" height="355"></iframe></p>
<div style="padding: 5px 0 12px;">View more <a href="http://www.slideshare.net/" target="_blank">presentations</a> from <a href="http://www.slideshare.net/taketyan" target="_blank">Yuya Takeyama</a></div>
</div>
<p>node.js / Socket.io → リアルタイムwebapp<br />
→node楽しいよnode</p>
<p>phpenv →バージョンの切替、pearとかも<br />
php-build→こっちはビルドツール</p>
<p>php-build<br />
・ビルドらくちん<br />
・依存パッケージは自分でいれる<br />
・依存関係でこけてる場合はtmpの中にログがはかれるのでみてね</p>
<p>phpenv globalでバージョン切替<br />
phpenv-v each で各バージョンで実行出来る</p>
<p>php-buildのconfigureオプションは？<br />
→定義ファイルでいじればいいよ。マルチバイトとかね。</p>
<p><strong>pure PHPでのバイナリ処理（yoya/20分/PHPでのWebプログラミングに飽きてきた人）</strong></p>
<p>@yoyaさん<br />
<a href="http://d.hatena.ne.jp/yoya/20111111/php">スライド</a></p>
<p>・purephp→標準関数を使う<br />
・2進数大好き</p>
<p>jpg、png、gifなど、仕様を知っていれば画像サイズとかはさくっと取れる</p>
<div>openpear/IO_Bit<br />
・byte/bit処理するのに便利<br />
・応用例→IO_SWF</div>
<div>
</div>
<p><strong>PHP用回帰テストツール-PROVE（@yohgaki/10分～30分）</strong></p>
<p>@yohgakiさん</p>
<p>・realip<br />
→プロキシとか挟んだ場合にリモートアドレス取るの面倒だよね<br />
→まあmod_rpafとか色々あるけど、ロジック側でさくっと何かするには便利かも</p>
<p>PROVE<br />
・個人利用は無償<br />
・PROVEは内部動作を場合によってはオーバーライドすることで環境に依存しないテストを実行</p>
<p><a href="http://www.provephp.com/ja/start">これ</a></p>
<p><strong>perl Regexp::Assemble を php に移植する話（rti/25分/他の言語も気になる人）</strong></p>
<p>@super_rtiさん<br />
<a href="http://prezi.com/q0vfeok0qu9u/regexpassemble-for-php/">スライド</a></p>
<p>・多分今回一番盛り上がったスライド。懇親会の中だったのでツッコミ多数。<br />
・perlの正規表現自動生成エンジン（って言い方あってるかな・・）perl Regexp::Assemble をPHPに移植する話<br />
・一行ごとにPHPコードに置き換え。言語仕様の壁を結構無茶な方法で乗り越え・・。<br />
・実行速度は（perl5.8.8とのPHP5.4の比較では）高速。十分実用ですね。<br />
・メンテナ募集、githubにあります。<br />
・<a href="http://rtilabs.net/files/2011_11_02/">テストサイト</a>。落ちるとくじらが飛ぶそうです。皆さん頑張ってくじらを出しましょう！</p>
<p>・・・この後の<a href="http://prezi.com/mqpbsfzawlnj/presentation/">家電の話</a>も相当面白かったんですが力尽きたので割愛。</p>
<p>総じて（事前にアジェンダみてわかってはいましたが）濃ゆい発表で非常に面白かったです！<br />
あとハイパーのエンジニアとしてお声がけくださった皆様ありがとうございました。cakeの愚痴ばっかですいません。</p>
<p>最後に、会場提供してくださった<a href="http://voyagegroup.com/">VOYAGE GROUP</a>さんありがとうございました。<br />
<a title="第57回PHP勉強会@東京" href="http://events.php.gr.jp/events/show/108">第57回PHP勉強会@東京</a></p>
]]></content:encoded>
			<wfw:commentRss>http://dasalog.eg2mix.com/phpstudy_108/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CakePHPで直前のクエリをチェック</title>
		<link>http://dasalog.eg2mix.com/cakephp%e3%81%a7%e7%9b%b4%e5%89%8d%e3%81%ae%e3%82%af%e3%82%a8%e3%83%aa%e3%82%92%e3%83%81%e3%82%a7%e3%83%83%e3%82%af/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=cakephp%25e3%2581%25a7%25e7%259b%25b4%25e5%2589%258d%25e3%2581%25ae%25e3%2582%25af%25e3%2582%25a8%25e3%2583%25aa%25e3%2582%2592%25e3%2583%2581%25e3%2582%25a7%25e3%2583%2583%25e3%2582%25af</link>
		<comments>http://dasalog.eg2mix.com/cakephp%e3%81%a7%e7%9b%b4%e5%89%8d%e3%81%ae%e3%82%af%e3%82%a8%e3%83%aa%e3%82%92%e3%83%81%e3%82%a7%e3%83%83%e3%82%af/#comments</comments>
		<pubDate>Sun, 06 Nov 2011 04:16:14 +0000</pubDate>
		<dc:creator>eg</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[cakephp]]></category>

		<guid isPermaLink="false">http://dasalogwp.eg2mix.com/?p=93</guid>
		<description><![CDATA[こんな感じで。 thanks →@deeeki]]></description>
			<content:encoded><![CDATA[<pre class="brush: php; title: ; notranslate">
App::import('Model', 'ConnectionManager');
$db = ConnectionManager::getDataSource('default');
$this-&gt;log($db-&gt;getLog(), LOG_DEBUG);
</pre>
<p>こんな感じで。</p>
<p>thanks →<a href="http://twitter.com/#!/deeeki">@deeeki</a></p>
]]></content:encoded>
			<wfw:commentRss>http://dasalog.eg2mix.com/cakephp%e3%81%a7%e7%9b%b4%e5%89%8d%e3%81%ae%e3%82%af%e3%82%a8%e3%83%aa%e3%82%92%e3%83%81%e3%82%a7%e3%83%83%e3%82%af/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Titanium環境構築メモ</title>
		<link>http://dasalog.eg2mix.com/titanium%e7%92%b0%e5%a2%83%e6%a7%8b%e7%af%89%e3%83%a1%e3%83%a2/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=titanium%25e7%2592%25b0%25e5%25a2%2583%25e6%25a7%258b%25e7%25af%2589%25e3%2583%25a1%25e3%2583%25a2</link>
		<comments>http://dasalog.eg2mix.com/titanium%e7%92%b0%e5%a2%83%e6%a7%8b%e7%af%89%e3%83%a1%e3%83%a2/#comments</comments>
		<pubDate>Tue, 05 Jul 2011 03:39:12 +0000</pubDate>
		<dc:creator>eg</dc:creator>
				<category><![CDATA[環境]]></category>

		<guid isPermaLink="false">http://dasalogwp.eg2mix.com/?p=87</guid>
		<description><![CDATA[昨日のWEBサービス開発者のはじめてのTitanium勉強会で諸々開発についていい話を聞いたのだけど、環境構築がすこぶる面倒だったので今のうちにメモしておく。 開始前に気づいて事前準備としてTitanium Studio [...]]]></description>
			<content:encoded><![CDATA[<p>昨日の<a href="http://atnd.org/events/17048">WEBサービス開発者のはじめてのTitanium勉強会</a>で諸々開発についていい話を聞いたのだけど、環境構築がすこぶる面倒だったので今のうちにメモしておく。</p>
<p>開始前に気づいて事前準備としてTitanium StudioとKichenSinkプロジェクトのダウンロードはやっておいたのだけど、進めていくうちにこれも足りねーってことになったので・・。</p>
<p>環境：Windows7（Home Premium） SP1</p>
<p>最終的に入れたもの</p>
<ul>
<li>Titanium Studio</li>
</ul>
<p><a href="http://www.appcelerator.com/">http://www.appcelerator.com/</a>（要登録、Community）</p>
<ul>
<li>JDK 1.6.0_26</li>
</ul>
<p><a href="http://www.oracle.com/technetwork/java/javase/downloads/jdk-6u26-download-400750.html">http://www.oracle.com/technetwork/java/javase/downloads/jdk-6u26-download-400750.html</a></p>
<ul>
<li>Andoroid SDK</li>
</ul>
<p>（これいれないとプロジェクトが作れない）</p>
<p>このうち足りなかったのはJDKとAndoroid SDK。</p>
<p>JREだと動かないので注意（javacとか使うので・・そりゃそうだ）。</p>
<p>パスを通すもの（環境変数）</p>
<ul>
<li>JAVA_HOMEのパス（C:\Program Files\Java\jdk1.6.0_26）など</li>
<li>（多分）PATH（%JAVA_HOME%\bin）も通しておく</li>
</ul>
<p>JDK、Andoroid SDK、Titanium Studioは結構ダウンロードに時間がかかるので気長にやりましょう。</p>
]]></content:encoded>
			<wfw:commentRss>http://dasalog.eg2mix.com/titanium%e7%92%b0%e5%a2%83%e6%a7%8b%e7%af%89%e3%83%a1%e3%83%a2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

