<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Yashio&#039;s Blog</title>
	<atom:link href="http://yashio.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://yashio.wordpress.com</link>
	<description>Just another WordPress.com weblog</description>
	<lastBuildDate>Thu, 26 Jan 2012 00:34:42 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='yashio.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://0.gravatar.com/blavatar/8cee2ccb755f852e90d83486ee240be3?s=96&#038;d=http%3A%2F%2Fs2.wp.com%2Fi%2Fbuttonw-com.png</url>
		<title>Yashio&#039;s Blog</title>
		<link>http://yashio.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://yashio.wordpress.com/osd.xml" title="Yashio&#039;s Blog" />
	<atom:link rel='hub' href='http://yashio.wordpress.com/?pushpress=hub'/>
		<item>
		<title>CakePHP Advent Calendar 2011　12/09</title>
		<link>http://yashio.wordpress.com/2011/12/09/cakephp-advent-calendar-2011%e3%80%801209/</link>
		<comments>http://yashio.wordpress.com/2011/12/09/cakephp-advent-calendar-2011%e3%80%801209/#comments</comments>
		<pubDate>Fri, 09 Dec 2011 03:45:27 +0000</pubDate>
		<dc:creator>yashio</dc:creator>
				<category><![CDATA[cakephp]]></category>

		<guid isPermaLink="false">http://yashio.wordpress.com/?p=361</guid>
		<description><![CDATA[こんにちは。本日１２月９日担当の@yashioです。 来週はいよいよcake勉強会and忘年会ですね(∩´∀｀)∩ﾜｰｲ皆さんにあえるの楽しみにしています。 さて今回は、1.3系で・・しかも出尽くされていると思いますがViewキャッシュ導入について紹介したいと思います。 いろいろな方がこちらは紹介されていますが、私でもできるヨ！ってことで生暖かく見てください。 頑張って図つけたわ。。これが一番時間かかったとか・・・・。 ・登録者向けのサービスだが、ログイン前にランディングページなどの静的なページを多用している ・できるだけ、ウェブサーバーへの負荷を軽減したい などの時にぜひ。 レシピ：cake1.3、 https://github.com/mcurry/html_cacheからダウンロードしてきた一式 手順その１： https://github.com/mcurry/html_cache　からファイルをダウンロードしてapp/plugins/html_cache/の下につっこむ。 手順その２： App::import(&#8216;core&#8217;, &#8216;File&#8217;); をapp_controller.phpのbeforeFilterに記述する（これ重要です。忘れてすごい悩んだ・・） 特定のコントローラーだけに処理をさせたい場合は、該当するcontrollerのbeforeFilterに記述が望ましいでしょう。 手順その３：webroot/cache配下に静的に出力したいファイルのパスでディレクトリをつくる。app/webroot/cache/controller名/action名/のような。 手順その４： ３で作成したディレクトリにアクセス権限をつける。実際にここに静的なHTMLファイルが作成されます。 手順その５： 静的表示をしたいコントローラー、のアクションに、 $this-&#62;helpers[] = &#8216;HtmlCache.HtmlCache&#8217;; を追記する。 ※妙な怒りのデバッグが入っていますがおきになさらずに。ちゃんと表示されます。 これは、３の手順で作成したディレクトリのパスにcontroller,actionが一致している必要があります。 手順その６： webroot直下にある/htaccessを表1.のように変更する（簡単に言うと、webroot/cache配下に該当のファイルがある場合にはそちらを優先的参照する。ない場合は通常通りフレームワークのルールに則り、/controller/actionへ飛ぶ。） &#60;IfModule mod_rewrite.c&#62; RewriteEngine On RewriteCond %{REQUEST_METHOD} ^GET$ #追加部分 RewriteCond %{DOCUMENT_ROOT}/cache/$1/index.html -f #追加部分 RewriteRule ^(.*)$ /cache/$1/index.html [L]　　#追加部分 RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php?url=$1 [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=yashio.wordpress.com&amp;blog=7885922&amp;post=361&amp;subd=yashio&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>こんにちは。本日１２月９日担当の<a href="https://twitter.com/yashio">@yashio</a>です。<br />
来週はいよいよcake勉強会and忘年会ですね(∩´∀｀)∩ﾜｰｲ皆さんにあえるの楽しみにしています。</p>
<p>さて今回は、1.3系で・・しかも出尽くされていると思いますがViewキャッシュ導入について紹介したいと思います。<br />
いろいろな方がこちらは紹介されていますが、私でもできるヨ！ってことで生暖かく見てください。<br />
頑張って図つけたわ。。これが一番時間かかったとか・・・・。</p>
<p>・登録者向けのサービスだが、ログイン前にランディングページなどの静的なページを多用している<br />
・できるだけ、ウェブサーバーへの負荷を軽減したい</p>
<p>などの時にぜひ。</p>
<p>レシピ：cake1.3、 https://github.com/mcurry/html_cacheからダウンロードしてきた一式</p>
<p><strong>手順その１：</strong></p>
<p>https://github.com/mcurry/html_cache　からファイルをダウンロードして<strong>app/plugins/html_cache/</strong>の下につっこむ。</p>
<p><a href="http://yashio.files.wordpress.com/2011/12/hoge12.png"><img class="alignnone size-medium wp-image-369" title="hoge1" src="http://yashio.files.wordpress.com/2011/12/hoge12.png?w=300&#038;h=200" alt="" width="300" height="200" /></a></p>
<p><strong>手順その２：</strong><br />
App::import(&#8216;core&#8217;, &#8216;File&#8217;); をapp_controller.phpのbeforeFilterに記述する（これ重要です。忘れてすごい悩んだ・・）<br />
特定のコントローラーだけに処理をさせたい場合は、該当するcontrollerのbeforeFilterに記述が望ましいでしょう。</p>
<p><a href="http://yashio.files.wordpress.com/2011/12/hoge2.png"><img class="alignnone size-medium wp-image-372" title="hoge2" src="http://yashio.files.wordpress.com/2011/12/hoge2.png?w=300&#038;h=200" alt="" width="300" height="200" /></a></p>
<p><strong>手順その３：</strong>webroot/cache配下に静的に出力したいファイルのパスでディレクトリをつくる。app/webroot/cache/controller名/action名/のような。<br />
<a href="http://yashio.files.wordpress.com/2011/12/hoge3.png"><img class="alignnone size-medium wp-image-374" title="hoge3" src="http://yashio.files.wordpress.com/2011/12/hoge3.png?w=150&#038;h=300" alt="" width="150" height="300" /></a></p>
<p><strong>手順その４：</strong><br />
３で作成したディレクトリにアクセス権限をつける。実際にここに静的なHTMLファイルが作成されます。</p>
<p><strong>手順その５：</strong><br />
静的表示をしたいコントローラー、のアクションに、</p>
<p>$this-&gt;helpers[] = &#8216;HtmlCache.HtmlCache&#8217;;</p>
<p>を追記する。<br />
※妙な怒りのデバッグが入っていますがおきになさらずに。ちゃんと表示されます。</p>
<p>これは、３の手順で作成したディレクトリのパスにcontroller,actionが一致している必要があります。<br />
<a href="http://yashio.files.wordpress.com/2011/12/hoge41.png"><img src="http://yashio.files.wordpress.com/2011/12/hoge41.png?w=300&#038;h=136" alt="" title="hoge4" width="300" height="136" class="alignnone size-medium wp-image-384" /></a></p>
<p><strong>手順その６：</strong><br />
webroot直下にある/htaccessを表1.のように変更する（簡単に言うと、webroot/cache配下に該当のファイルがある場合にはそちらを優先的参照する。ない場合は通常通りフレームワークのルールに則り、/controller/actionへ飛ぶ。）</p>
<p>&lt;IfModule mod_rewrite.c&gt;<br />
RewriteEngine On<br />
RewriteCond %{REQUEST_METHOD} ^GET$ #追加部分<br />
RewriteCond %{DOCUMENT_ROOT}/cache/$1/index.html -f #追加部分<br />
RewriteRule ^(.*)$ /cache/$1/index.html [L]　　#追加部分<br />
RewriteCond %{REQUEST_FILENAME} !-d<br />
RewriteCond %{REQUEST_FILENAME} !-f<br />
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]<br />
&lt;/IfModule&gt;</p>
<p><strong>手順その７：</strong><br />
美味しくいただく。　さあ該当ページにアクセスしてみましょう。ファイルが作成されない場合はパーミッションの確認をしてください。<br />
３で作られたディレクトリにファイルがつくられていますか？日付を見てみてくださいね。<br />
この場合、controllerも通らないので不必要なロードがされないので結構表示速度を体感できるのではないかと思います。<br />
（コンテンツにもよるでしょうが）</p>
<p><a href="http://yashio.files.wordpress.com/2011/12/hoge5.png"><img class="alignnone size-medium wp-image-378" title="hoge5" src="http://yashio.files.wordpress.com/2011/12/hoge5.png?w=300&#038;h=206" alt="" width="300" height="206" /></a><br />
試しに削除してもう一度作成してみましょう。【やったー！】<br />
<strong>注意すべきことは</strong>ctpファイルの中身に変更が合った場合などは、</p>
<p>こちらにあるキャッシュを一度削除しないと新しいファイルが作成されません。</p>
<p>そのため頻繁に変更するファイルに関してはあまり向かないかもしれませんが、キャッシュで表示する方が<br />
明らかに表示速度は上昇しますので、お手軽にできますし皆さん、試してみてはいかがでしょうか。</p>
<p>さて、明日はおなじみ<a href="http://twitter.com/mon_sat">@mon_sat</a>さんです。よろしくおねがいしまーす！</p>
<br />カテゴリー:<a href='http://yashio.wordpress.com/category/cakephp/'>cakephp</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/yashio.wordpress.com/361/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/yashio.wordpress.com/361/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/yashio.wordpress.com/361/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/yashio.wordpress.com/361/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/yashio.wordpress.com/361/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/yashio.wordpress.com/361/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/yashio.wordpress.com/361/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/yashio.wordpress.com/361/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/yashio.wordpress.com/361/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/yashio.wordpress.com/361/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/yashio.wordpress.com/361/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/yashio.wordpress.com/361/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/yashio.wordpress.com/361/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/yashio.wordpress.com/361/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=yashio.wordpress.com&amp;blog=7885922&amp;post=361&amp;subd=yashio&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://yashio.wordpress.com/2011/12/09/cakephp-advent-calendar-2011%e3%80%801209/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c879ceb3c641ee022179f885d29c1d9d?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">yashio</media:title>
		</media:content>

		<media:content url="http://yashio.files.wordpress.com/2011/12/hoge12.png?w=300" medium="image">
			<media:title type="html">hoge1</media:title>
		</media:content>

		<media:content url="http://yashio.files.wordpress.com/2011/12/hoge2.png?w=300" medium="image">
			<media:title type="html">hoge2</media:title>
		</media:content>

		<media:content url="http://yashio.files.wordpress.com/2011/12/hoge3.png?w=150" medium="image">
			<media:title type="html">hoge3</media:title>
		</media:content>

		<media:content url="http://yashio.files.wordpress.com/2011/12/hoge41.png?w=300" medium="image">
			<media:title type="html">hoge4</media:title>
		</media:content>

		<media:content url="http://yashio.files.wordpress.com/2011/12/hoge5.png?w=300" medium="image">
			<media:title type="html">hoge5</media:title>
		</media:content>
	</item>
		<item>
		<title>bootstrap.cssの対応(for Play framework）</title>
		<link>http://yashio.wordpress.com/2011/10/09/bootstrap-css%e3%81%ae%e5%af%be%e5%bf%9cfor-play-framework%ef%bc%89/</link>
		<comments>http://yashio.wordpress.com/2011/10/09/bootstrap-css%e3%81%ae%e5%af%be%e5%bf%9cfor-play-framework%ef%bc%89/#comments</comments>
		<pubDate>Sun, 09 Oct 2011 09:35:46 +0000</pubDate>
		<dc:creator>yashio</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://yashio.wordpress.com/?p=338</guid>
		<description><![CDATA[メモ。 ちょっと家庭内制作で「phpじゃないやつで！」ということになってjavaでrailsライクなplayframeworkいぢってんですが、 来月の某締切りにむけて画面周りで、Bootstrap　を使ってます。 で、playはそもそもrailsライクってことで、cakephpと非常に似ているので、ファイルの構成とかは分かりやすい。 まあおいおいいろいろかけたらと思うんですけど、ひとまず、今Bootstrapが流行っているので、playframeworkで使ってみたい！ってことで使ってたんですが、一点、pagenateについてがどうにも、見た目を変更する必要がありました。 なので、paginateの導入も含めてメモしときます。 ※試行錯誤なんで、自己責任でよろしくおねがいします＞＜ 1.2.2使っているので、コンソールでとりあえず play install paginate する。そうすると、コンソールで「いれちゃうぜ？」てきいてくるので、はいyて答える。 そうすると・・・playインストール場所/modulre/paginate-0.11 という構成になり、そこにモジュールが展開される。 そのあと、 conf/dependencies.ymlに ~ require: ~ play -&#62; paginate 0.11 これを追記して、さらに conf/application.confに # Import the pagenate module module.paginate=${play.path}/modules/paginate-0.11 こんな感じで、play再起動。起動時に、 Module paginate is available (/home/yashiro/play-1.2.2/modules/paginate-0.11) とかいうログが見えると、無事paginateモジュールが読み込まれています。 さて、そのモジュールの中に、htmlが入っていて、（playの雛形みたいな）paginateに対してどういう記述をするか が書かれているControls.htmlをいうソースを探し出します( paginate-0.11/app/views/にありました）。 それをコピーして、app/views/paginate/Controls.htmlという構成にします。 （やってることはcakephpで、helperを自分のappの配下にもってきて変更していることにそっくり。） それでそのファイルをこんな感じで修正してみました。そしたらデモで見えるようなpaginateが表示されたよ！ (実際はpaginateを表示させるところまで、これ以外にもいろいろ道のりがあったんですが・・それは割愛） app/views/paginate/Controls.html まあここまではよかったんだけど、lastページになると、PreviousとNextのあいだのページ数が一個減るという謎の 現象に・・まあこれは次回でもどうにか修正することにしましょう。 &#160; ※１０年ぶりにJavaとか見たら、「アノテーション」とかいう謎の識別子がついていて時代を感じた。 カテゴリー:Uncategorized<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=yashio.wordpress.com&amp;blog=7885922&amp;post=338&amp;subd=yashio&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>メモ。<br />
ちょっと家庭内制作で「phpじゃないやつで！」ということになってjavaでrailsライクなplayframeworkいぢってんですが、<br />
来月の某締切りにむけて画面周りで、<a title="Bootstrap" href="http://twitter.github.com/bootstrap/">Bootstrap</a>　を使ってます。<br />
で、playはそもそもrailsライクってことで、cakephpと非常に似ているので、ファイルの構成とかは分かりやすい。<br />
まあおいおいいろいろかけたらと思うんですけど、ひとまず、今Bootstrapが流行っているので、playframeworkで使ってみたい！ってことで使ってたんですが、一点、pagenateについてがどうにも、見た目を変更する必要がありました。</p>
<p>なので、paginateの導入も含めてメモしときます。</p>
<p>※試行錯誤なんで、自己責任でよろしくおねがいします＞＜</p>
<p>1.2.2使っているので、コンソールでとりあえず</p>
<address>play install paginate</address>
<p>する。そうすると、コンソールで「いれちゃうぜ？」てきいてくるので、はいyて答える。</p>
<p>そうすると・・・playインストール場所/modulre/paginate-0.11</p>
<p>という構成になり、そこにモジュールが展開される。</p>
<p>そのあと、</p>
<p>conf/dependencies.ymlに</p>
<address>~ require:</address>
<p>~ play -&gt; paginate 0.11<br />
これを追記して、さらに<br />
conf/application.confに<br />
# Import the pagenate module<br />
module.paginate=${play.path}/modules/paginate-0.11<br />
こんな感じで、play再起動。起動時に、<br />
Module paginate is available (/home/yashiro/play-1.2.2/modules/paginate-0.11)<br />
とかいうログが見えると、無事paginateモジュールが読み込まれています。<br />
さて、そのモジュールの中に、htmlが入っていて、（playの雛形みたいな）paginateに対してどういう記述をするか<br />
が書かれているControls.htmlをいうソースを探し出します( paginate-0.11/app/views/にありました）。<br />
それを<strong>コピーして</strong>、app/views/paginate/Controls.htmlという構成にします。<br />
（やってることはcakephpで、helperを自分のappの配下にもってきて変更していることにそっくり。）</p>
<p>それでそのファイルをこんな感じで修正してみました。そしたらデモで見えるようなpaginateが表示されたよ！</p>
<p>(実際はpaginateを表示させるところまで、これ以外にもいろいろ道のりがあったんですが・・それは割愛）</p>
<p>app/views/paginate/Controls.html</p>
<p><pre class="brush: xml;">
%{
int __firstPage = 1;
int __currentPage = _items.pageNumber;
int __pagesDisplayed = _items.pagesDisplayed;
int __pagesBeforeMiddle = __pagesDisplayed / 2;
int __maxPage = _items.pageCount;
if (__currentPage &gt; (__pagesDisplayed / 2)) {
	__firstPage = __currentPage - __pagesBeforeMiddle;
}
int __lastPage = __currentPage + (__pagesDisplayed - __pagesBeforeMiddle - 1);
if (__currentPage &lt; (__pagesDisplayed - __pagesBeforeMiddle)) {
	__lastPage = __pagesDisplayed;
}
if (__lastPage &gt; __maxPage) {
	__lastPage = __maxPage;
}
boolean __hasPrev = _items.hasPreviousPage;
boolean __hasNext = _items.hasNextPage;
String __firstURL = __hasPrev ? _items.getCallbackURL(1) : &quot;#&quot;;
String __prevURL = __hasPrev ? _items.getCallbackURL(__currentPage-1) : &quot;#&quot;;
String __nextURL = __hasNext ? _items.getCallbackURL(__currentPage+1) : &quot;#&quot;;
String __lastURL = __hasNext ? _items.getCallbackURL(__maxPage) : &quot;#&quot;;
%}
&lt;div class=&quot;pagination&quot;&gt;
	&lt;ul&gt;
%{ if (_items.boundaryControlsEnabled) { %}
		&lt;li class=&quot;${__currentPage == 1 ? 'disabled' : 'first'}&quot;&gt;&lt;a href=&quot;${__firstURL}&quot;&gt;&amp;{'play-paginate.first'}&lt;/a&gt;&lt;/li&gt;
%{ } %}
		&lt;li class=&quot;${__hasPrev ? 'previous' : 'disabled'}&quot;&gt;&lt;a href=&quot;${__prevURL}&quot;&gt;&amp;{'play-paginate.prev'}&lt;/a&gt;&lt;/li&gt;
%{
for (__idx = __firstPage; __idx &lt;= __lastPage; __idx++) {
boolean __active = __currentPage == __idx;
%}
		&lt;li class=&quot;${__active ? 'active' : 'inactive'}&quot;&gt;&lt;a href=&quot;${_items.getCallbackURL(__idx)}&quot;&gt;${__idx}&lt;/a&gt;&lt;/li&gt;
%{
}
%}
		&lt;li class=&quot;${__hasNext ? '' : 'disabled'}&quot;&gt;&lt;a href=&quot;${__nextURL}&quot;&gt;&amp;{'play-paginate.next'}&lt;/a&gt;&lt;/li&gt;
%{ if (_items.boundaryControlsEnabled) { %}
		&lt;li class=&quot;${__currentPage == __maxPage ? 'disabled' : ''} next&quot;&gt;&lt;a href=&quot;${__lastURL}&quot;&gt;&amp;{'play-paginate.last'}&lt;/a&gt;&lt;/li&gt;
%{ } %}
	&lt;/ul&gt;
&lt;/div&gt;
&lt;br style=&quot;clear:both;&quot;/&gt;
</pre></p>
<p>まあここまではよかったんだけど、lastページになると、PreviousとNextのあいだのページ数が一個減るという謎の</p>
<p>現象に・・まあこれは次回でもどうにか修正することにしましょう。</p>
<p>&nbsp;</p>
<p>※１０年ぶりにJavaとか見たら、「アノテーション」とかいう謎の識別子がついていて時代を感じた。</p>
<br />カテゴリー:<a href='http://yashio.wordpress.com/category/uncategorized/'>Uncategorized</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/yashio.wordpress.com/338/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/yashio.wordpress.com/338/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/yashio.wordpress.com/338/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/yashio.wordpress.com/338/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/yashio.wordpress.com/338/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/yashio.wordpress.com/338/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/yashio.wordpress.com/338/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/yashio.wordpress.com/338/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/yashio.wordpress.com/338/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/yashio.wordpress.com/338/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/yashio.wordpress.com/338/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/yashio.wordpress.com/338/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/yashio.wordpress.com/338/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/yashio.wordpress.com/338/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=yashio.wordpress.com&amp;blog=7885922&amp;post=338&amp;subd=yashio&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://yashio.wordpress.com/2011/10/09/bootstrap-css%e3%81%ae%e5%af%be%e5%bf%9cfor-play-framework%ef%bc%89/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c879ceb3c641ee022179f885d29c1d9d?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">yashio</media:title>
		</media:content>
	</item>
		<item>
		<title>mysqlバックアップ</title>
		<link>http://yashio.wordpress.com/2011/04/23/mysql%e3%83%90%e3%83%83%e3%82%af%e3%82%a2%e3%83%83%e3%83%97/</link>
		<comments>http://yashio.wordpress.com/2011/04/23/mysql%e3%83%90%e3%83%83%e3%82%af%e3%82%a2%e3%83%83%e3%83%97/#comments</comments>
		<pubDate>Sat, 23 Apr 2011 08:18:47 +0000</pubDate>
		<dc:creator>yashio</dc:creator>
				<category><![CDATA[mysql]]></category>

		<guid isPermaLink="false">http://yashio.wordpress.com/?p=321</guid>
		<description><![CDATA[テーブルを丸ごとバックアップする方法で今までバックアップをとってきたんだが、 ある特定の業務アプリで、データが膨大なものが存在してた。 エディタでいちいちひらいてテーブルの名前から探して…みたいなことをしてたみたいで、 ちょっと手間がかかるなと。で、緊急時にリストアする際に、特定のテーブルだけしたいという リクエストをうけたので探してみた。 それっぽいのはあったんだけどまあ、１００％ってものがなかったのでとりあえず自作。 一週間で上書きっていう簡単なやつにしてみたよ。 Shellスクリプトもいろいろ面白いでつね。 カテゴリー:mysql<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=yashio.wordpress.com&amp;blog=7885922&amp;post=321&amp;subd=yashio&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<pre>テーブルを丸ごとバックアップする方法で今までバックアップをとってきたんだが、<br />
ある特定の業務アプリで、データが膨大なものが存在してた。<br />
エディタでいちいちひらいてテーブルの名前から探して…みたいなことをしてたみたいで、<br />
ちょっと手間がかかるなと。で、緊急時にリストアする際に、特定のテーブルだけしたいという<br />
リクエストをうけたので探してみた。<br />
それっぽいのはあったんだけどまあ、１００％ってものがなかったのでとりあえず自作。<br />
一週間で上書きっていう簡単なやつにしてみたよ。</p>
<p>Shellスクリプトもいろいろ面白いでつね。<br />
<pre class="brush: bash;">
#!/bin/sh
#DAYは数字で曜日。
DAY=`date '+%w'`
WORK_DIR=バックアップするディレクトリ
FILE_NAME=dump_$DAY
BACKUP_DIR=/tmp/
USER=DBのユーザ名
PASS=DBのパスワード
DB_NAME=データベース名

#バックアップディレクトリに移動
cd $BACKUP_DIR
#バックアップディレクトリがなかったら
if [ ! -d $WORK_DIR ]; then

	#ディレクトリを作成する
	mkdir $WORK_DIR
fi

#そのディレクトリに入る
cd $WORK_DIR
#事前にあったファイルは全部消す
rm ./*

#データベース内にあるテーブルリストを作成し、個別にテーブルのダンプデータを作成する
#-eはその後コマンドを実行するというオプション。
#-Bは余計な表示をせずに一覧を出力させる。
#-Nは一番上の見出しを削除する
for TABLENAME in ` mysql -u $USER -p$PASS -B -N -e 'show tables' $DB_NAME`
do
	#echo $TABLENAME
	mysqldump --opt -c -u $USER -p$PASS -x $DB_NAME $TABLENAME &gt; $TABLENAME.sql
done

#移動する
cd $BACKUP_DIR

#該当する日付のディレクトリをまるごと圧縮する
tar -czf $DB_NAME$DAY.tar.gz $WORK_DIR
</pre></p>
<br />カテゴリー:<a href='http://yashio.wordpress.com/category/mysql/'>mysql</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/yashio.wordpress.com/321/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/yashio.wordpress.com/321/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/yashio.wordpress.com/321/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/yashio.wordpress.com/321/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/yashio.wordpress.com/321/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/yashio.wordpress.com/321/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/yashio.wordpress.com/321/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/yashio.wordpress.com/321/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/yashio.wordpress.com/321/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/yashio.wordpress.com/321/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/yashio.wordpress.com/321/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/yashio.wordpress.com/321/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/yashio.wordpress.com/321/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/yashio.wordpress.com/321/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=yashio.wordpress.com&amp;blog=7885922&amp;post=321&amp;subd=yashio&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://yashio.wordpress.com/2011/04/23/mysql%e3%83%90%e3%83%83%e3%82%af%e3%82%a2%e3%83%83%e3%83%97/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c879ceb3c641ee022179f885d29c1d9d?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">yashio</media:title>
		</media:content>
	</item>
		<item>
		<title>Containable Behaviorを追いかけてみました。</title>
		<link>http://yashio.wordpress.com/2010/12/21/containable-behavior%e3%82%92%e8%bf%bd%e3%81%84%e3%81%8b%e3%81%91%e3%81%a6%e3%81%bf%e3%81%be%e3%81%97%e3%81%9f%e3%80%82/</link>
		<comments>http://yashio.wordpress.com/2010/12/21/containable-behavior%e3%82%92%e8%bf%bd%e3%81%84%e3%81%8b%e3%81%91%e3%81%a6%e3%81%bf%e3%81%be%e3%81%97%e3%81%9f%e3%80%82/#comments</comments>
		<pubDate>Mon, 20 Dec 2010 15:00:32 +0000</pubDate>
		<dc:creator>yashio</dc:creator>
				<category><![CDATA[cakephp]]></category>

		<guid isPermaLink="false">http://yashio.wordpress.com/?p=296</guid>
		<description><![CDATA[cakephp 1.3.3で開発しております。 今回は先日わたくしがハマった事象についてお話します。多少書きなぐり気味ですが＞＜許してください。 前提条件 １．A_controllerでpaginateしている ２．paginate対象のモデル(User)には色々なモデルが関連付けられているが、その1部であるHogehogeというモデルをLEFTJOINではなく、INNERJOINで連結したいので一度unbindする ３．このメソッドが呼ばれる前にapp_controllerのbeforeFilter()にUserモデルで検索をかけている箇所がある。そこはContainableBehaviorが使われている という前提でした。 １．A_controllerのpaginateの箇所はこんなかんじ。 でハッピー！　にならなかった・・・というお話。 &#160; まず、unbindModelの第2引数にfalseを渡すことで永続的にモデルのアソシエーション状態を保持してる、つもり。 ブログ記事でよく見かけますが、ここにfalseを設定しないと、paginateでは ・件数 ・欲しいレコード を段階的に取得するため、2回目のクエリでアソシエーションがもどってしまうという。という記事がじゃんじゃん、でてくる。 だがしかし。 falseにしてるのにどーやってもあーやってもHogehogeテーブルがLEFTJOINされ、上記のINNERJOINのHogehogeテーブルまでくっついてくるので「 Not unique table/alias: &#8216;Hogehoge&#8217; 」って怒られます。憤ります。ぷるぷる。別名とか別にLEFTJOINでもいいなとか色々選択肢はあったのですが、最近「ソースコードよめよ」なので一念発起してソースの旅に出てみることにしました。cakeフォルダのなかにダイヴします。 まずコアソースのcontroller.phpでpaginate()をあさります。ださいこと極まりないですが、ここでかたっぱしからdebug($object-&#62;belongsTo);を出力して、どうやら ここの前後で、belongsToの中身が、もともとのモデルにセットされているアソシエーションにもどってしまうことが分りました。つまり、falseにしているにも関わらず件数取得時にアソシエーションがリセットされていることになります。なので、こんどはmodel::find()をあさります。 すると、今度はmodel::findにある この箇所でbelongsToの内容が変化してしまうことがわかりました。そんな感じでソースをぐるぐるを追いかけていったところ結局、ここではcallback関数がよばれていて、model_behavior.phpにいき、 のようなtriggerメソッドから、afterFind()がよばれていることに。結論からいうと、app_controller.phpで ３。のメソッドが実行される →ここで、Userモデルの変数に__backAssociationという、いわば「モデルの既存アソシエーション」がバックアップのような意味合いでセットされる。 次に、paginate処理を行う →ここで、paginateのINNERJOINを実行したいためunbindする(INNER JOIN対象のモデルを、Userモデルから切り離す） →paginate実行 内部処理：カウントを取得　　→ここで、カウントを取得。この時点はアソシエーションはunbind状態が保持されている →count取得時のfindのafterFindが実行。その際、既にUserモデルにセットされている__backAssociationの値を参照しておりここに値が入っていると明示的にモデルのアソシエーションをデフォルトに戻してしまう →実際のレコードを検出(findが実行) →既にアソシエーションがもどっているため、unbindされたモデルなんぞは無視され、同じモデルが2回JOINされる有様。 なんで、model_behavior.phpのafterFindなのかというと、app_controller側で呼び出したメソッド内でUserモデルにビヘイビアがセットされるため、paginateではBehaviorは使っていないにもかかわらずここのafterFindが呼ばれる・・・らしい。ここだけはちょっとあやふや。もし「ここおかしいよ」って思われる方がいらっしゃったらご指摘いただけると。 対処方法：app_conrtollerのbeforeFilter()のクエリをContainableBehaviorを使わずに普通にjoinした。 とりあえずこの対応方法で行ったのですが…根本的ではないですね。 そもそも、事前に実行されるメソッドで利用したモデルの構成は引き継がれるという当たり前なことに気が付かず、　app_controllerにこのメソッドを追加する前まではpaginate処理が動作していたので非常にデバッグに時間がかかってしまいました。 一度Userモデルを使っているわけですから、そういう意味では原因がわかって「そりゃそうだな・・・」という気持ちになったのも事実です・・が 事前にＡモデルをContainableBehaviorを使って実行し、そのまま続けてＡモデルのモデル構成を変更（bind/unbind)しpaginateを行った場合に第2引数のfalseは役に立たない　という結論で・・・よろしいか？ こういう状況って皆さんあまりない・・かな。不具合とはいえないかもなんですが、ちょっと気になったのでネタにしてみました。　鼻の黒い人にこんな記事を見つけてもらったのですが同じ事をいってる・・かな。そう考えると、同じモデルのメソッドを別々のところで呼び出しているのもどうなのかなーって事もあるのかもですが、 ContainableBehaviorとpaginateの相性はそこまでウフフな関係にはいたっていないということでしょうか。 アソシエーションを密接にしておくと、思わぬところで意識していなかったモデルの姿形がかわっとる！という事があるかもしれないですね・・ カテゴリー:cakephp<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=yashio.wordpress.com&amp;blog=7885922&amp;post=296&amp;subd=yashio&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>cakephp 1.3.3で開発しております。<br />
今回は先日わたくしがハマった事象についてお話します。多少書きなぐり気味ですが＞＜許してください。</p>
<p><strong>前提条件</strong></p>
<p>１．A_controllerでpaginateしている<br />
２．paginate対象のモデル(User)には色々なモデルが関連付けられているが、その1部であるHogehogeというモデルをLEFTJOINではなく、INNERJOINで連結したいので一度unbindする<br />
３．このメソッドが呼ばれる前にapp_controllerのbeforeFilter()にUserモデルで検索をかけている箇所がある。そこはContainableBehaviorが使われている</p>
<p>という前提でした。</p>
<p>１．A_controllerのpaginateの箇所はこんなかんじ。</p>
<p><pre class="brush: php;">
$this-&gt;User-&gt;unbindModel(array('belongsTo'=&gt;array('Hogehoge')), false);//第2引数をfalseにすることでモデルの関連性を維持させる

			'joins'=&gt;array(
				array(
					'type'	=&gt;'INNER',
					'fields'=&gt;array('Hogehoge.name'),
					'table'=&gt;'`Hogehoges`',
					'alias'=&gt;'`Hogehoge`',
					'conditions'=&gt;array(
						'Hogehoge.id = Hogehoge.user_id',
					),
				),
			),
//このあとpaginate実行

</pre></p>
<p>でハッピー！　にならなかった・・・というお話。</p>
<p>&nbsp;</p>
<p><span id="more-296"></span></p>
<p>まず、unbindModelの第2引数にfalseを渡すことで永続的にモデルのアソシエーション状態を保持してる、つもり。<br />
ブログ記事でよく見かけますが、ここにfalseを設定しないと、paginateでは<br />
・件数<br />
・欲しいレコード<br />
を段階的に取得するため、<strong>2回目のクエリでアソシエーションがもどってしまうという。</strong>という記事がじゃんじゃん、でてくる。</p>
<p><strong>だがしかし。</strong></p>
<p>falseにしてるのにどーやってもあーやってもHogehogeテーブルがLEFTJOINされ、上記のINNERJOINのHogehogeテーブルまでくっついてくるので<strong>「 Not unique table/alias: &#8216;Hogehoge&#8217;	」</strong>って怒られます。憤ります。ぷるぷる。別名とか別にLEFTJOINでもいいなとか色々選択肢はあったのですが、最近「ソースコードよめよ」なので一念発起してソースの旅に出てみることにしました。cakeフォルダのなかにダイヴします。</p>
<p>まずコアソースのcontroller.phpでpaginate()をあさります。ださいこと極まりないですが、ここでかたっぱしからdebug($object-&gt;belongsTo);を出力して、どうやら</p>
<p><pre class="brush: php;">
$count = $object-&gt;find('count', array_merge($parameters, $extra));
</pre></p>
<p>ここの前後で、belongsToの中身が、もともとのモデルにセットされているアソシエーションにもどってしまうことが分りました。つまり、falseにしているにも関わらず件数取得時にアソシエーションがリセットされていることになります。なので、こんどはmodel::find()をあさります。</p>
<p>すると、今度はmodel::findにある</p>
<p><pre class="brush: php;">
$results = $this-&gt;__filterResults($results);
</pre></p>
<p>この箇所でbelongsToの内容が変化してしまうことがわかりました。そんな感じでソースをぐるぐるを追いかけていったところ結局、ここではcallback関数がよばれていて、model_behavior.phpにいき、</p>
<p><pre class="brush: php;">
$this-&gt;Behaviors-&gt;trigger($this, 'afterFind', array($results, $primary), array('modParams' =&gt; true));
</pre></p>
<p>のようなtriggerメソッドから、afterFind()がよばれていることに。結論からいうと、app_controller.phpで</p>
<p>３。のメソッドが実行される<br />
→ここで、Userモデルの変数に__backAssociationという、いわば「モデルの既存アソシエーション」がバックアップのような意味合いでセットされる。</p>
<p>次に、paginate処理を行う<br />
→ここで、paginateのINNERJOINを実行したいためunbindする(INNER JOIN対象のモデルを、Userモデルから切り離す）<br />
→paginate実行<br />
内部処理：カウントを取得　　→ここで、カウントを取得。この時点はアソシエーションはunbind状態が保持されている<br />
→count取得時のfindのafterFindが実行。<strong>その際、既にUserモデルにセットされている__backAssociationの値を参照しておりここに値が入っていると明示的にモデルのアソシエーションをデフォルトに戻してしまう</strong></p>
<p>→実際のレコードを検出(findが実行)<br />
→既にアソシエーションがもどっているため、unbindされたモデルなんぞは無視され、同じモデルが2回JOINされる有様。</p>
<p>なんで、model_behavior.phpのafterFindなのかというと、app_controller側で呼び出したメソッド内でUserモデルにビヘイビアがセットされるため、paginateではBehaviorは使っていないにもかかわらずここのafterFindが呼ばれる・・・らしい。ここだけはちょっとあやふや。もし「ここおかしいよ」って思われる方がいらっしゃったらご指摘いただけると。</p>
<p><strong>対処方法</strong>：app_conrtollerのbeforeFilter()のクエリをContainableBehaviorを使わずに普通にjoinした。<br />
とりあえずこの対応方法で行ったのですが…根本的ではないですね。<br />
そもそも、事前に実行されるメソッドで利用したモデルの構成は引き継がれるという当たり前なことに気が付かず、　app_controllerにこのメソッドを追加する前まではpaginate処理が動作していたので非常にデバッグに時間がかかってしまいました。<br />
一度Userモデルを使っているわけですから、そういう意味では原因がわかって「そりゃそうだな・・・」という気持ちになったのも事実です・・が</p>
<p>事前にＡモデルをContainableBehaviorを使って実行し、そのまま続けてＡモデルのモデル構成を変更（bind/unbind)しpaginateを行った場合に第2引数のfalseは役に立たない　という結論で・・・よろしいか？<br />
こういう状況って皆さんあまりない・・かな。不具合とはいえないかもなんですが、ちょっと気になったのでネタにしてみました。　鼻の黒い人に<a href="http://cakephp.lighthouseapp.com/projects/42648/tickets/1246-containable-should-keep-assoc-conditions">こんな記事</a>を見つけてもらったのですが同じ事をいってる・・かな。そう考えると、同じモデルのメソッドを別々のところで呼び出しているのもどうなのかなーって事もあるのかもですが、</p>
<p>ContainableBehaviorとpaginateの相性はそこまでウフフな関係にはいたっていないということでしょうか。<br />
アソシエーションを密接にしておくと、思わぬところで意識していなかったモデルの姿形がかわっとる！という事があるかもしれないですね・・</p>
<br />カテゴリー:<a href='http://yashio.wordpress.com/category/cakephp/'>cakephp</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/yashio.wordpress.com/296/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/yashio.wordpress.com/296/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/yashio.wordpress.com/296/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/yashio.wordpress.com/296/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/yashio.wordpress.com/296/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/yashio.wordpress.com/296/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/yashio.wordpress.com/296/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/yashio.wordpress.com/296/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/yashio.wordpress.com/296/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/yashio.wordpress.com/296/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/yashio.wordpress.com/296/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/yashio.wordpress.com/296/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/yashio.wordpress.com/296/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/yashio.wordpress.com/296/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=yashio.wordpress.com&amp;blog=7885922&amp;post=296&amp;subd=yashio&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://yashio.wordpress.com/2010/12/21/containable-behavior%e3%82%92%e8%bf%bd%e3%81%84%e3%81%8b%e3%81%91%e3%81%a6%e3%81%bf%e3%81%be%e3%81%97%e3%81%9f%e3%80%82/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c879ceb3c641ee022179f885d29c1d9d?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">yashio</media:title>
		</media:content>
	</item>
		<item>
		<title>javascriptでtextareaに値をセットしたい</title>
		<link>http://yashio.wordpress.com/2010/12/15/javascript%e3%81%a7textarea%e3%81%ab%e5%80%a4%e3%82%92%e3%82%bb%e3%83%83%e3%83%88%e3%81%97%e3%81%9f%e3%81%84/</link>
		<comments>http://yashio.wordpress.com/2010/12/15/javascript%e3%81%a7textarea%e3%81%ab%e5%80%a4%e3%82%92%e3%82%bb%e3%83%83%e3%83%88%e3%81%97%e3%81%9f%e3%81%84/#comments</comments>
		<pubDate>Tue, 14 Dec 2010 15:15:40 +0000</pubDate>
		<dc:creator>yashio</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://yashio.wordpress.com/?p=292</guid>
		<description><![CDATA[ビールのんで帰ってきたので放置せずにこれだけは書いて寝よう。 やりたいこと。 ＤＢ上で登録したテンプレートなる文書のデータを、subjectだけ一覧で見せたい。 そんで、その一覧のsubjectをクリックしたら、テンプレートの内容をtextareaにセットしたい。 …たったこれだけ。 やってみたことはリンククリック時にわざわざＤＢ通信するのもなんなので…ちょっとダサいけど、ページ出力時にテンプレートの内容はＤＩＶで区切ってどっかに出力させて、かつ表示させない(display=none)にして、リンククリックしたらそのＤＩＶの中身をテキストエリアにセットする、という流れ。 ところが、Ｃｈｒｏｍｅだとちゃんと見えるのにＩＥ（７）だと、テンプレート内の改行が全部、すっ飛ばされてしまう！ で、ググると出てくる、出てくる。そもそもinnerHTMLには適用されないだの、textareaがＵＮＫＯだとか、ＩＥ・・・？とか色々でてくるんですけど、これ！っていう情報が出てこない。なんつーか文字コードと混同してる（私が）感じで情報が切り分けられず、phpで文字コードを変換してみたりとか色々したけどもうだめびーるのみたいしさいきん体組成系かってふとったしビールのみたいし。 で、ＤＩＶタグなのがいけないのかと思ってたので、仕方ないのでinputタグで出力し、それを見せない、みたいなことをやってみたんだけど、どうにもこうにもダメ。text()でやるとうまくいった、とかいろいろあったんだけどもうだめぽ…と思ったんですが最終的に一番楽そうな手段が見つかったので、備忘録的にメモ。これが最適手段ではないと思いますが、もし他の方法をご存知の方がいらしたら「っへ！こんなのもあるでよ！」って教えてくれるとありがたい。 結論からいうとですね、ＤＩＶタグではなくて、テンプレートの内容をあらかじめtextareaに書き出しました。そして上記のようにdispayをnoneにして非表示にし、この値をjQueryで言うところのval()で取得し、セットもval()で行いました。そうするとＩＥだろうがＣｈｒｏｍｅだろうが、改行がきちんと判断されるようになりましたとさ。 $(document).ready(function() { // bind 'Form' and provide a simple callback function $(".template").click(function(event){ $('.comment').val($("textarea.setText" + $(this).attr('id')).val()); return false; }); }); こんなかんじで、セットする元のテンプレート内容は こんなかんじで対処しました。他にもっと良い方法あるよ！って人は是非。いやーこれ解決するのにすんごい時間かけてしまったよ…とほほ。 ※２１日はCakeAdvent2010 なんで最近はまったcontainableとunbindのくだりを書く予定です。よろしくお願いします。 カテゴリー:CSS, javascript<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=yashio.wordpress.com&amp;blog=7885922&amp;post=292&amp;subd=yashio&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>ビールのんで帰ってきたので放置せずにこれだけは書いて寝よう。<br />
やりたいこと。</p>
<p>ＤＢ上で登録したテンプレートなる文書のデータを、subjectだけ一覧で見せたい。<br />
そんで、その一覧のsubjectをクリックしたら、テンプレートの内容をtextareaにセットしたい。</p>
<p>…たったこれだけ。<br />
やってみたことはリンククリック時にわざわざＤＢ通信するのもなんなので…ちょっとダサいけど、ページ出力時にテンプレートの内容はＤＩＶで区切ってどっかに出力させて、かつ表示させない(display=none)にして、リンククリックしたらそのＤＩＶの中身をテキストエリアにセットする、という流れ。</p>
<p>ところが、Ｃｈｒｏｍｅだとちゃんと見えるのにＩＥ（７）だと、テンプレート内の改行が全部、すっ飛ばされてしまう！<br />
で、ググると出てくる、出てくる。そもそもinnerHTMLには適用されないだの、textareaがＵＮＫＯだとか、ＩＥ・・・？とか色々でてくるんですけど、これ！っていう情報が出てこない。なんつーか文字コードと混同してる（私が）感じで情報が切り分けられず、phpで文字コードを変換してみたりとか色々したけどもうだめびーるのみたいしさいきん体組成系かってふとったしビールのみたいし。</p>
<p>で、ＤＩＶタグなのがいけないのかと思ってたので、仕方ないのでinputタグで出力し、それを見せない、みたいなことをやってみたんだけど、どうにもこうにもダメ。text()でやるとうまくいった、とかいろいろあったんだけどもうだめぽ…と思ったんですが最終的に一番楽そうな手段が見つかったので、備忘録的にメモ。これが最適手段ではないと思いますが、もし他の方法をご存知の方がいらしたら「っへ！こんなのもあるでよ！」って教えてくれるとありがたい。</p>
<p>結論からいうとですね、ＤＩＶタグではなくて、テンプレートの内容をあらかじめtextareaに書き出しました。そして上記のようにdispayをnoneにして非表示にし、この値をjQueryで言うところのval()で取得し、セットもval()で行いました。そうするとＩＥだろうがＣｈｒｏｍｅだろうが、改行がきちんと判断されるようになりましたとさ。</p>
<p><code><br />
$(document).ready(function() {<br />
	// bind 'Form' and provide a simple callback function<br />
		$(".template").click(function(event){<br />
			$('.comment').val($("textarea.setText" + $(this).attr('id')).val());<br />
			return false;<br />
		});<br />
});<br />
</code><br />
こんなかんじで、セットする元のテンプレート内容は</p>
<p><pre class="brush: php;">
	if(isset($document)){
		//改行処理があるため、セットする要素と同じtextareaで対処する
	    foreach($template as $key=&gt;$value) {
			echo &quot;&lt;textarea style='display:none' class='setText{$value['Template']['id']}'&gt;&quot;;
	    	echo $value['Template']['content'];
			echo '&lt;/textarea&gt;';
	    	
	    }
	}
</pre><br />
こんなかんじで対処しました。他にもっと良い方法あるよ！って人は是非。いやーこれ解決するのにすんごい時間かけてしまったよ…とほほ。</p>
<p>※２１日はCakeAdvent2010 なんで最近はまったcontainableとunbindのくだりを書く予定です。よろしくお願いします。</p>
<br />カテゴリー:<a href='http://yashio.wordpress.com/category/css/'>CSS</a>, <a href='http://yashio.wordpress.com/category/javascript/'>javascript</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/yashio.wordpress.com/292/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/yashio.wordpress.com/292/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/yashio.wordpress.com/292/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/yashio.wordpress.com/292/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/yashio.wordpress.com/292/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/yashio.wordpress.com/292/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/yashio.wordpress.com/292/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/yashio.wordpress.com/292/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/yashio.wordpress.com/292/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/yashio.wordpress.com/292/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/yashio.wordpress.com/292/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/yashio.wordpress.com/292/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/yashio.wordpress.com/292/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/yashio.wordpress.com/292/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=yashio.wordpress.com&amp;blog=7885922&amp;post=292&amp;subd=yashio&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://yashio.wordpress.com/2010/12/15/javascript%e3%81%a7textarea%e3%81%ab%e5%80%a4%e3%82%92%e3%82%bb%e3%83%83%e3%83%88%e3%81%97%e3%81%9f%e3%81%84/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c879ceb3c641ee022179f885d29c1d9d?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">yashio</media:title>
		</media:content>
	</item>
		<item>
		<title>TortoiseGit &amp;VirtualBox</title>
		<link>http://yashio.wordpress.com/2010/11/12/tortoisegit-virtualbox/</link>
		<comments>http://yashio.wordpress.com/2010/11/12/tortoisegit-virtualbox/#comments</comments>
		<pubDate>Fri, 12 Nov 2010 06:36:12 +0000</pubDate>
		<dc:creator>yashio</dc:creator>
				<category><![CDATA[サーバ]]></category>

		<guid isPermaLink="false">http://yashio.wordpress.com/?p=282</guid>
		<description><![CDATA[今まで、サービスインしたサイトは社内ではxamppで開発し、社内で別途構築したCenOS上にデプロイし、本番機にアップ…という流れでした。ところが、巷では結構このxamppさん、あまり好かれてない。導入も楽だし、簡単な設定ですぐ動く。でもあまり好かれていない…で。会社で第2弾のサービスを立ち上げるにあたって社内の開発環境を少し変えてみることにした。 びふぉあ xamppでWindow上で開発 DBだけは社内のテストサーバーにあるmysqlを参照（共有） バージョン管理はSVN(TortoiseSVN） タスク管理は完全独立でbacklog あふたー virtualBoxでローカルでの開発 DBもVirtualBox上にローカルでお好きにどうぞ テスト環境は変わらず。 バージョン管理はgit(TortoiseGit) タスク管理はredmineを導入し、gitと連動する形にする ここで今回私が社内で悪戦苦闘したVirtualBoxのインポートと、Gitの接続時にしくじったことをメモ書き。 Virtual Boxのインポートに失敗 自宅で構築したVirtual BoxのVMイメージをエクスポートし、会社でインポートしようとすると途中で以下のようなエラーがでて中断する。　KU　SO　GA! The vm session was closed before any attempt to power it on. ガクガク。意味分らないから英語でも検索すると このサイトがでてきたので、VirtualBoxのVMの設定より、起動時のストレージにある、CDROMだのFDだののチェックを外したら読み込みだした！ （実は鼻の黒い人が「おれインポートって成功したことない・・」とかいうので、半分駄目元ではあったけど、インポートできると設定情報が引き継がれるから楽なんだよね・・・・。と結構粘着して調べていた。） TortoiseGitで　git cloneできない。 次に、社内で今までSVNをつかっていた関係で、TortoiseGitをいれたら設定情報とかかぶるんじゃねえ？とおもっていたけど、とりあえず、秘密鍵作って外部リポジトリへ接続（git clone)を試みる。ガッ！ 既にあるマスターリポジトリから、git cloneしようとするとなぜか社内サーバーのIPに接続しようとする いみわからんし・・・。これをてっきりTortoiseSVNのせいだと疑っていた（SVNは社内サーバのリポジトリにアクセスしていたので）接続時にはTortoiseGitはplink.exeというインストール時にデフォルトで設定されているツールでSSH接続を試みるわけだが、そこを直接クリックしてもダイアログがでて、192.168.56.XXXのユーザ名をいれてください　みたいなこといわれる！これ結局3日間なやんだ・・・。 結果として、TortoiseSVNは一切関係なくて、2chのここにモロ、回答がかいてあった！！ TortoiseGitからgit cloneしようとしたときには既にインストールしてたputty.exeのdefault settingという接続情報が最も優先されるらしい。速攻でここのホスト名をぶち消した！そしたらちゃんと指定したURLにアクセスしたお！かーちゃん、やったよ！ すんごいくだらないかもしれないことだけど、もし、同じ事で迷路に入ってしまった人がいた時に何かの助けになるかもしれないので、一応メモ。 カテゴリー:サーバ<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=yashio.wordpress.com&amp;blog=7885922&amp;post=282&amp;subd=yashio&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>今まで、サービスインしたサイトは社内ではxamppで開発し、社内で別途構築したCenOS上にデプロイし、本番機にアップ…という流れでした。ところが、巷では結構このxamppさん、あまり好かれてない。導入も楽だし、簡単な設定ですぐ動く。でもあまり好かれていない…で。会社で第2弾のサービスを立ち上げるにあたって社内の開発環境を少し変えてみることにした。</p>
<p>びふぉあ</p>
<li>xamppでWindow上で開発</li>
<li>DBだけは社内のテストサーバーにあるmysqlを参照（共有）</li>
<li>バージョン管理はSVN(TortoiseSVN）</li>
<li>タスク管理は完全独立でbacklog</li>
<p>あふたー</p>
<li>virtualBoxでローカルでの開発</li>
<li>DBもVirtualBox上にローカルでお好きにどうぞ</li>
<li>テスト環境は変わらず。</li>
<li>バージョン管理はgit(TortoiseGit)</li>
<li>タスク管理はredmineを導入し、gitと連動する形にする</li>
<p>ここで今回私が社内で悪戦苦闘したVirtualBoxのインポートと、Gitの接続時にしくじったことをメモ書き。</p>
<p><span id="more-282"></span></p>
<p><strong>Virtual Boxのインポートに失敗</strong><br />
自宅で構築したVirtual BoxのVMイメージをエクスポートし、会社でインポートしようとすると途中で以下のようなエラーがでて中断する。　KU　SO　GA!</p>
<pre>The vm session was closed before any attempt to power it on.</pre>
<p>ガクガク。意味分らないから英語でも検索すると<br />
<a href="http://www.sysprobs.com/vm-session-closed-attempt-power-virtualbox-32-error">このサイト</a>がでてきたので、VirtualBoxのVMの設定より、起動時のストレージにある、CDROMだのFDだののチェックを外したら読み込みだした！<br />
（実は鼻の黒い人が「おれインポートって成功したことない・・」とかいうので、半分駄目元ではあったけど、インポートできると設定情報が引き継がれるから楽なんだよね・・・・。と結構粘着して調べていた。）</p>
<p><strong>TortoiseGitで　git cloneできない。</strong></p>
<p>次に、社内で今までSVNをつかっていた関係で、TortoiseGitをいれたら設定情報とかかぶるんじゃねえ？とおもっていたけど、とりあえず、秘密鍵作って外部リポジトリへ接続（git clone)を試みる。ガッ！</p>
<li>既にあるマスターリポジトリから、git cloneしようとするとなぜか社内サーバーのIPに接続しようとする</li>
<p>いみわからんし・・・。これをてっきりTortoiseSVNのせいだと疑っていた（SVNは社内サーバのリポジトリにアクセスしていたので）接続時にはTortoiseGitはplink.exeというインストール時にデフォルトで設定されているツールでSSH接続を試みるわけだが、そこを直接クリックしてもダイアログがでて、192.168.56.XXXのユーザ名をいれてください　みたいなこといわれる！これ結局3日間なやんだ・・・。</p>
<p>結果として、TortoiseSVNは一切関係なくて、<a href="http://logsoku.com/thread/pc11.2ch.net/tech/1228366972/701-800">2chのここ</a>にモロ、回答がかいてあった！！<br />
TortoiseGitからgit cloneしようとしたときには既にインストールしてたputty.exeのdefault settingという接続情報が最も優先されるらしい。速攻でここのホスト名をぶち消した！そしたらちゃんと指定したURLにアクセスしたお！かーちゃん、やったよ！</p>
<p>すんごいくだらないかもしれないことだけど、もし、同じ事で迷路に入ってしまった人がいた時に何かの助けになるかもしれないので、一応メモ。</p>
<br />カテゴリー:<a href='http://yashio.wordpress.com/category/%e3%82%b5%e3%83%bc%e3%83%90/'>サーバ</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/yashio.wordpress.com/282/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/yashio.wordpress.com/282/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/yashio.wordpress.com/282/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/yashio.wordpress.com/282/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/yashio.wordpress.com/282/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/yashio.wordpress.com/282/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/yashio.wordpress.com/282/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/yashio.wordpress.com/282/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/yashio.wordpress.com/282/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/yashio.wordpress.com/282/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/yashio.wordpress.com/282/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/yashio.wordpress.com/282/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/yashio.wordpress.com/282/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/yashio.wordpress.com/282/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=yashio.wordpress.com&amp;blog=7885922&amp;post=282&amp;subd=yashio&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://yashio.wordpress.com/2010/11/12/tortoisegit-virtualbox/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c879ceb3c641ee022179f885d29c1d9d?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">yashio</media:title>
		</media:content>
	</item>
		<item>
		<title>model　Tips　その１</title>
		<link>http://yashio.wordpress.com/2010/09/22/model%e3%80%80tips%e3%80%80%e3%81%9d%e3%81%ae%ef%bc%91/</link>
		<comments>http://yashio.wordpress.com/2010/09/22/model%e3%80%80tips%e3%80%80%e3%81%9d%e3%81%ae%ef%bc%91/#comments</comments>
		<pubDate>Wed, 22 Sep 2010 03:44:23 +0000</pubDate>
		<dc:creator>yashio</dc:creator>
				<category><![CDATA[cakephp]]></category>

		<guid isPermaLink="false">http://yashio.wordpress.com/?p=275</guid>
		<description><![CDATA[ここ1ヶ月、2ヶ月で急激にcake1.3で開発をしています。 今年の初めから春先にかけても1.2で開発をしていましたが、その後はメンテナンスリリースだったり、デザイン面での改修が多かったので、改修もなかなかできず。社内の仕事が開発だけじゃないからサ…。 で、会社とは別に1.3系で開発をしているのですが、なんていうか、 ・今までしらなかったのか！ みたいな事があります、あります。特に1.3系に特化した内容でもないので、「うわこいつ…いまさらこんなこといってんの？」的な生暖かい目でみてください。 1．モデルはチェーンできんだぞ？しってた？ Aモデルにアソシエーションを張っている場合それらのモデル（たとえばB)は、外部呼出しをせずともチェーン形式で呼び出しが可能。 たとえばコントローラー側では $this-&#62;A-&#62;B-&#62;findAll(); 等が可能。もちろんBのデータを全部取って来れます。（hasOneでもhasManyでもbelongsToでも） ※今までusesにいれるとか、Class::registryしてました……。 BがCとアソシエーションはっていれば、もちろん Aのコントローラーから とかくだけ。書くだけです。ちなみに、アソシエーション時に、エイリアスで別のクラス名（モデル名）を設定している場合は そのエイリアスで呼ぶこと。そうじゃないと、無い！といわれます。 そうなってくると。ありそうなのはMailテーブルにfromとtoというフィールドを用意し、両方、ユーザIDが入ってるような場合は当然、fromとtoにbelongsToで設定したいところです。例として名前はFromUser,ToUserという名前にしてみます。 この場合、たとえば送信元のデータを取ってきたい場合はMailコントローラーで呼び出す場合 なんて呼び出しますよね。 その場合、モデルの方に検索するメソッドを実装するのですが、問題は、モデル名.フィールドで指定したい場合。実装するのはUserモデルに実装しますが、上記のような場合に呼び出される場合はFromUser.のような形で呼び出さないといけません。そんな時は ように$this-&#62;alias.を使うことで、その際のモデル名を判断し、取得することが可能です。つまり、Userモデルのメソッドとしても利用できますし、FromUserとしても利用が可能になります。 カテゴリー:cakephp<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=yashio.wordpress.com&amp;blog=7885922&amp;post=275&amp;subd=yashio&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>ここ1ヶ月、2ヶ月で急激にcake1.3で開発をしています。<br />
今年の初めから春先にかけても1.2で開発をしていましたが、その後はメンテナンスリリースだったり、デザイン面での改修が多かったので、改修もなかなかできず。社内の仕事が開発だけじゃないからサ…。</p>
<p>で、会社とは別に1.3系で開発をしているのですが、なんていうか、<br />
・今までしらなかったのか！</p>
<p>みたいな事があります、あります。特に1.3系に特化した内容でもないので、「うわこいつ…いまさらこんなこといってんの？」的な生暖かい目でみてください。</p>
<p>1．モデルはチェーンできんだぞ？しってた？</p>
<p>Aモデルにアソシエーションを張っている場合それらのモデル（たとえばB)は、外部呼出しをせずともチェーン形式で呼び出しが可能。</p>
<p>たとえばコントローラー側では<br />
$this-&gt;A-&gt;B-&gt;findAll();<br />
等が可能。もちろんBのデータを全部取って来れます。（hasOneでもhasManyでもbelongsToでも）<br />
<strong>※今までusesにいれるとか、Class::registryしてました……。</strong><br />
BがCとアソシエーションはっていれば、もちろん<br />
Aのコントローラーから</p>
<p><pre class="brush: php;">
$this-&gt;A-&gt;B-&gt;C-&gt;find();
</pre><br />
とかくだけ。書くだけです。ちなみに、アソシエーション時に、エイリアスで別のクラス名（モデル名）を設定している場合は<br />
そのエイリアスで呼ぶこと。そうじゃないと、無い！といわれます。</p>
<p>そうなってくると。ありそうなのはMailテーブルにfromとtoというフィールドを用意し、両方、ユーザIDが入ってるような場合は当然、fromとtoにbelongsToで設定したいところです。例として名前はFromUser,ToUserという名前にしてみます。</p>
<p>この場合、たとえば送信元のデータを取ってきたい場合はMailコントローラーで呼び出す場合<br />
<pre class="brush: php;">
$this-&gt;Mail-&gt;FromUser-&gt;getDetail();
</pre><br />
なんて呼び出しますよね。<br />
その場合、モデルの方に検索するメソッドを実装するのですが、問題は、モデル名.フィールドで指定したい場合。実装するのはUserモデルに実装しますが、上記のような場合に呼び出される場合はFromUser.のような形で呼び出さないといけません。そんな時は</p>
<p><pre class="brush: php;">
condtions =array(
 $this-&gt;alias.'.id' =&gt; $id ,
)
</pre><br />
ように$this-&gt;alias.を使うことで、その際のモデル名を判断し、取得することが可能です。つまり、Userモデルのメソッドとしても利用できますし、FromUserとしても利用が可能になります。</p>
<br />カテゴリー:<a href='http://yashio.wordpress.com/category/cakephp/'>cakephp</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/yashio.wordpress.com/275/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/yashio.wordpress.com/275/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/yashio.wordpress.com/275/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/yashio.wordpress.com/275/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/yashio.wordpress.com/275/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/yashio.wordpress.com/275/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/yashio.wordpress.com/275/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/yashio.wordpress.com/275/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/yashio.wordpress.com/275/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/yashio.wordpress.com/275/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/yashio.wordpress.com/275/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/yashio.wordpress.com/275/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/yashio.wordpress.com/275/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/yashio.wordpress.com/275/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=yashio.wordpress.com&amp;blog=7885922&amp;post=275&amp;subd=yashio&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://yashio.wordpress.com/2010/09/22/model%e3%80%80tips%e3%80%80%e3%81%9d%e3%81%ae%ef%bc%91/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c879ceb3c641ee022179f885d29c1d9d?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">yashio</media:title>
		</media:content>
	</item>
		<item>
		<title>munin監視＆メール設定</title>
		<link>http://yashio.wordpress.com/2010/06/05/munin%e7%9b%a3%e8%a6%96%ef%bc%86%e3%83%a1%e3%83%bc%e3%83%ab%e8%a8%ad%e5%ae%9a/</link>
		<comments>http://yashio.wordpress.com/2010/06/05/munin%e7%9b%a3%e8%a6%96%ef%bc%86%e3%83%a1%e3%83%bc%e3%83%ab%e8%a8%ad%e5%ae%9a/#comments</comments>
		<pubDate>Fri, 04 Jun 2010 15:42:07 +0000</pubDate>
		<dc:creator>yashio</dc:creator>
				<category><![CDATA[サーバ]]></category>

		<guid isPermaLink="false">http://yashio.wordpress.com/?p=262</guid>
		<description><![CDATA[CentOS5.4運用しとりまして、鯖監視を最近やっとります。 鯖監視というのは 利用できるようになったら、とりあえず日々を追ってじーっとみてみろ！ みたいな事をいわれていまして・・・。で、後ほどエントリしようと思っていますが、muninがいいからmuninにすれば。といわれてmuninというパッケージをインストールして、ジっとながめる。ということを日々やっとります。muninのインストールについては結構いろんなところで情報があるので、そちらを参考にしていただいたほうがよいかもしれず。 今回のエントリは 特定のプロセス数を超過したら、お知らせメールを送る っつーことでお知らせメール機能です。 閾値メール設定 /etc/muni/の中のmunin.confに下記のように追加（加筆したところは#でコメントをいれています。） #送信したいメールアドレスを、[email]というグループに関連づける（下記はメールアドレスまで一行つながりです） contact.email.command mail -s "Munin ${var:group}::${var:host}" hogehoge@xxx.vo.jp #以下の行はmuninで監視しているプラグインの情報を個別にメールでおくるかの設定。1にすると７通とかメールくるからコメントアウト。 #contact.email.max_messages 1 #以下一行はcriticalなものだけを送信対象とする contact.email.always_send critical #[email]グループに対してメールを送る contacts email # Drop somejuser@fnord.comm and anotheruser@blibb.comm an email everytime # something changes (OK -&#62; WARNING, CRITICAL -&#62; OK, etc) #contact.someuser.command mail -s "Munin notification" somejuser@fnord.comm #contact.anotheruser.command mail -s "Munin notification" anotheruser@blibb.comm [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=yashio.wordpress.com&amp;blog=7885922&amp;post=262&amp;subd=yashio&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>CentOS5.4運用しとりまして、鯖監視を最近やっとります。<br />
鯖監視というのは</p>
<li>利用できるようになったら、とりあえず日々を追ってじーっとみてみろ！</li>
<p>みたいな事をいわれていまして・・・。で、後ほどエントリしようと思っていますが、muninがいいからmuninにすれば。といわれてmuninというパッケージをインストールして、ジっとながめる。ということを日々やっとります。muninのインストールについては結構いろんなところで情報があるので、そちらを参考にしていただいたほうがよいかもしれず。<br />
今回のエントリは</p>
<li>特定のプロセス数を超過したら、お知らせメールを送る</li>
<p>っつーことでお知らせメール機能です。</p>
<p><strong>閾値メール設定</strong><br />
/etc/muni/の中のmunin.confに下記のように追加（加筆したところは#でコメントをいれています。）<br />
<code><br />
#送信したいメールアドレスを、[email]というグループに関連づける（下記はメールアドレスまで一行つながりです）<br />
contact.email.command mail -s "Munin ${var:group}::${var:host}" hogehoge@xxx.vo.jp<br />
#以下の行はmuninで監視しているプラグインの情報を個別にメールでおくるかの設定。1にすると７通とかメールくるからコメントアウト。<br />
#contact.email.max_messages 1<br />
#以下一行はcriticalなものだけを送信対象とする<br />
contact.email.always_send critical<br />
#[email]グループに対してメールを送る<br />
contacts email<br />
# Drop somejuser@fnord.comm and anotheruser@blibb.comm an email everytime<br />
# something changes (OK -&gt; WARNING, CRITICAL -&gt; OK, etc)<br />
#contact.someuser.command mail -s "Munin notification" somejuser@fnord.comm<br />
#contact.anotheruser.command mail -s "Munin notification" anotheruser@blibb.comm<br />
#<br />
# For those with Nagios, the following might come in handy. In addition,<br />
# the services must be defined in the Nagios server as well.<br />
#contact.nagios.command /usr/sbin/send_nsca -H nagios.host.com -c /etc/send_nsca.cfg<br />
# a simple host tree<br />
[localhost]<br />
address 127.0.0.1<br />
use_node_name yes<br />
#プロセス数が８０に達した時点でcriticalとみなす（メール送信がされるトリガ）<br />
#下記設定は[localhost]の中で設定すること。<br />
processes.processes.critical 80<br />
</code></p>
<p>で、munin-node再起動してじっと５分まつ。<br />
上記はあくまでもプロセスの監視なので、フィールドやプラグインの名前はそれぞれ閾値を設定したい対象によって異なります。で、これだとmuninはグラフ描画のために５分間隔でデータを取りにいくので、プロセス数が８０になったら５分おきにメールがきてしまうｗｗｗｗｗこれをどうにかしないといけないのであった。各パラメーターの参照は<a href="http://castor.s26.xrea.com/blog/2007/10/19">http://castor.s26.xrea.com/blog/2007/10/19<br />
</a>とか<a href="http://goungoun.dip.jp/app/fswiki/wiki.cgi/debianetch?page=2007%2F09%2F27%A1%A2munin%A1%A2munin-limits%20%A4%C7%A5%E1%A1%BC%A5%EB%C4%CC%C3%CE#p1">こちら</a>が非常に参考になりました。<br />
むーん、このテーマだとコードが改行されてしまうな。見づらいのでどうにかしないと。</p>
<br />カテゴリー:<a href='http://yashio.wordpress.com/category/%e3%82%b5%e3%83%bc%e3%83%90/'>サーバ</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/yashio.wordpress.com/262/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/yashio.wordpress.com/262/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/yashio.wordpress.com/262/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/yashio.wordpress.com/262/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/yashio.wordpress.com/262/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/yashio.wordpress.com/262/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/yashio.wordpress.com/262/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/yashio.wordpress.com/262/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/yashio.wordpress.com/262/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/yashio.wordpress.com/262/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/yashio.wordpress.com/262/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/yashio.wordpress.com/262/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/yashio.wordpress.com/262/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/yashio.wordpress.com/262/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=yashio.wordpress.com&amp;blog=7885922&amp;post=262&amp;subd=yashio&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://yashio.wordpress.com/2010/06/05/munin%e7%9b%a3%e8%a6%96%ef%bc%86%e3%83%a1%e3%83%bc%e3%83%ab%e8%a8%ad%e5%ae%9a/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c879ceb3c641ee022179f885d29c1d9d?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">yashio</media:title>
		</media:content>
	</item>
		<item>
		<title>第5回CakePHP勉強会に参加いたしました。</title>
		<link>http://yashio.wordpress.com/2010/06/03/%e7%ac%ac5%e5%9b%9ecakephp%e5%8b%89%e5%bc%b7%e4%bc%9a%e3%81%ab%e5%8f%82%e5%8a%a0%e3%81%84%e3%81%9f%e3%81%97%e3%81%be%e3%81%97%e3%81%9f%e3%80%82/</link>
		<comments>http://yashio.wordpress.com/2010/06/03/%e7%ac%ac5%e5%9b%9ecakephp%e5%8b%89%e5%bc%b7%e4%bc%9a%e3%81%ab%e5%8f%82%e5%8a%a0%e3%81%84%e3%81%9f%e3%81%97%e3%81%be%e3%81%97%e3%81%9f%e3%80%82/#comments</comments>
		<pubDate>Wed, 02 Jun 2010 15:28:12 +0000</pubDate>
		<dc:creator>yashio</dc:creator>
				<category><![CDATA[cakephp]]></category>

		<guid isPermaLink="false">http://yashio.wordpress.com/?p=259</guid>
		<description><![CDATA[今回はお手伝いの枠で、受付などに参加させていただきました。最終的にはびっしり、といった感じでほぼ満員御礼な感じでしたね。他の勉強会にそれほど行ってないのですが、この出席率は結構すごいのではないかと思います。 さて、発表は1.3ベースだったのですが、現在私が使用しているのは1.2。ですが将来的に新しいサービスの実装も控えていて、その際は100％間違いなく1.3であることが予想されるので興味深くお話を聞かせていただきました。また、私自身が勉強会の主催をさせていただいているKtai Libraryは新しいバージョンでどんどん進化しているようで、これも楽しみの一つでした。 印象に残ったセッションとしては CakePHP1.3の概要 市川さん(@cakephper) Ktai Library on CakePHP1.3 滝下さん(@ecworks_masap) 「CakePHPでjQueryを使ってみた(仮)」 – @nano_eightさん twitterとｃloud serverとcakeで新規サービス谷井さん(@takamunetanii) あたりがヒットで、谷井さんは別の勉強会でもご一緒したことがあったものの、「ついったー君」を作った人なのか！と妙に感動してしまいましたｗそれと コアライブラリのエレガントなハック　清水さん(@hiromi2424) こちらの@hiromi2424さんはtwitterでも大変お世話になっていて、ひそかに「すごい人なんだろうな・・・」と思っていたのですが勉強会中のタイムラインの流れで「ああ、やっぱりすごい人なんだな」と妙に納得した次第でしたｗ懇親会では帰りがけに声をかけていただき、とってもうれしかったでっす！ そして、実は楽しみにはしていたのですが、 @nano_eightさんの発表で、jQueryの話の延長でFlexigridを利用しており、かつプラグイン化までされているという事実がががががが。実は先日、業務でcakephpサイトにFlexigridを導入し、導入したまでは良かったのですが「どうせここまでできたんだからこういう風にして」とかリクエストされて、「いやこれ、元からこういう機能だし・・」とうまく言い訳ができなかった私はこれまたtwitter経由と@Hampomさんの力を借りて機能をつけた、という背景があり。大分苦戦しました。苦戦したのはほとんどjQueryの部分だったのですが・・・。まあjQueryを学ぶ良い機会だったと思います。（ちなみにこちらを通勤時間の行き２０分で、５日間みっちり読みましたｗ）php側の処理は非常にお粗末な作りで実装してしまっているので、プラグインを使うことで共通化でき、コードの見通しが良くなるのではないかと期待しています。 Flexigridはおなじみだとは思いますがこちらをごらんになっていただければよいかと思います。単一ではありますが検索、テーブル一覧表示、表示カラムの追加・削除・ソート機能、改ページ機能・列入れ替えなどが非常に視覚的にできる（リンクの一番下のサンプルで、虫眼鏡マークとか色々いじってもらえるとわかるかと思いますが）のでちょっとした一覧でしたら導入しただけで「なんだかしやわせ」になるわけです。オプションも結構豊富ですしフックメソッドの実装も可能です。@nano_eightのプラググイン化されているものが簡単に呼び出せれば既存の一覧もこの形にすることが今よりも可能になるのでは、と非常に期待しています。こちらに関しては自分も動かしてみようと思っています。 懇親会も非常に楽しく、cakeの話題からテレホーダイの話や英語を勉強するには…！など幅広く、またエンジニアとしてのモチベーションを維持するためのエッセンスを得られたと思います。「ウェブサービス楽しくつくろうよ！」と声を大きくして発言する方がいて「そうだよね、やっぱ作って発表だよね」なんて思ったりして。当たり前のことですがやっぱり前向きな人の輪の中にいれば、人間おのずと前向きになるんじゃないでしょうか。そして私（や他の誰か）が会社のエンジニアに勉強会で得たエッセンスを伝播させていく。勉強会は決して会が終わってそこで終端ではないんですよね。むしろそこから情報の広がりがあるんじゃないかと感じます。 私は、業界自体は１０年近くありますが、ブランクもあり、php自体は１年ちょっと、cakephpも同じくらいの経験値です。当時は職場ではphpの案件はなく、プログラムだけを書き、非同期通信やウェブサービスのいまどき　をほとんど知らずに仕事をしてきました。これはまずいと転職してちょっと職種が変わっただけで、日々書籍をあさり、検索をし、トライ＆エラー、果ては自身のパートナーに教えてもらう夜もあります。角度がちょっと違っただけで吸収しなくてはいけない量が倍増しました。それは私が選んですきでやっていることですが、一人きりでは行き詰る日もあります。そういう意味で勉強会やtwitterというつながりは非常に強力で、近しい場所に目標というか、自身が成長したらこうなれるのかな、という方々がいるのは励みになります。なんていうか「いい時代に生まれたんだなあ」という気がしますｗ ※現在Ktai Library勉強会の日程を調整していますが土曜日は会議室がどこも一杯なんだぜ…！「ここあいてるよ」などのコメントお待ちしています。もうちょっと色々書きたかったですが、本日はここまで。 カテゴリー:cakephp<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=yashio.wordpress.com&amp;blog=7885922&amp;post=259&amp;subd=yashio&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>今回はお手伝いの枠で、受付などに参加させていただきました。最終的にはびっしり、といった感じでほぼ満員御礼な感じでしたね。他の勉強会にそれほど行ってないのですが、この出席率は結構すごいのではないかと思います。</p>
<p>さて、発表は1.3ベースだったのですが、現在私が使用しているのは1.2。ですが将来的に新しいサービスの実装も控えていて、その際は100％間違いなく1.3であることが予想されるので興味深くお話を聞かせていただきました。また、私自身が勉強会の主催をさせていただいているKtai Libraryは新しいバージョンでどんどん進化しているようで、これも楽しみの一つでした。</p>
<p>印象に残ったセッションとしては</p>
<li>CakePHP1.3の概要 市川さん(@cakephper) </li>
<li>Ktai Library on CakePHP1.3 滝下さん(@ecworks_masap) </li>
<li>「CakePHPでjQueryを使ってみた(仮)」 – @nano_eightさん</li>
<li>twitterとｃloud serverとcakeで新規サービス谷井さん(@takamunetanii)</li>
<p>あたりがヒットで、谷井さんは別の勉強会でもご一緒したことがあったものの、「ついったー君」を作った人なのか！と妙に感動してしまいましたｗそれと</p>
<li>コアライブラリのエレガントなハック　清水さん(@hiromi2424)</li>
<p>こちらの@hiromi2424さんはtwitterでも大変お世話になっていて、ひそかに「すごい人なんだろうな・・・」と思っていたのですが勉強会中のタイムラインの流れで「ああ、やっぱりすごい人なんだな」と妙に納得した次第でしたｗ懇親会では帰りがけに声をかけていただき、とってもうれしかったでっす！</p>
<p>そして、実は楽しみにはしていたのですが、 @nano_eightさんの発表で、jQueryの話の延長でFlexigridを利用しており、かつプラグイン化までされているという事実がががががが。実は先日、業務でcakephpサイトにFlexigridを導入し、導入したまでは良かったのですが「どうせここまでできたんだからこういう風にして」とかリクエストされて、「いやこれ、元からこういう機能だし・・」とうまく言い訳ができなかった私はこれまたtwitter経由と@Hampomさんの力を借りて機能をつけた、という背景があり。大分苦戦しました。苦戦したのはほとんどjQueryの部分だったのですが・・・。まあjQueryを学ぶ良い機会だったと思います。（ちなみに<a href="http://www.amazon.co.jp/o/ASIN/4048684116/tor0-22/ref=nosim">こちら</a>を通勤時間の行き２０分で、５日間みっちり読みましたｗ）php側の処理は非常にお粗末な作りで実装してしまっているので、プラグインを使うことで共通化でき、コードの見通しが良くなるのではないかと期待しています。</p>
<p>Flexigridはおなじみだとは思いますが<a href="http://www.flexigrid.info/">こちら</a>をごらんになっていただければよいかと思います。単一ではありますが検索、テーブル一覧表示、表示カラムの追加・削除・ソート機能、改ページ機能・列入れ替えなどが非常に視覚的にできる（リンクの一番下のサンプルで、虫眼鏡マークとか色々いじってもらえるとわかるかと思いますが）のでちょっとした一覧でしたら導入しただけで「なんだかしやわせ」になるわけです。オプションも結構豊富ですしフックメソッドの実装も可能です。@nano_eightのプラググイン化されているものが簡単に呼び出せれば既存の一覧もこの形にすることが今よりも可能になるのでは、と非常に期待しています。こちらに関しては自分も動かしてみようと思っています。</p>
<p>懇親会も非常に楽しく、cakeの話題からテレホーダイの話や英語を勉強するには…！など幅広く、またエンジニアとしてのモチベーションを維持するためのエッセンスを得られたと思います。「ウェブサービス楽しくつくろうよ！」と声を大きくして発言する方がいて「そうだよね、やっぱ作って発表だよね」なんて思ったりして。当たり前のことですがやっぱり前向きな人の輪の中にいれば、人間おのずと前向きになるんじゃないでしょうか。そして私（や他の誰か）が会社のエンジニアに勉強会で得たエッセンスを伝播させていく。勉強会は決して会が終わってそこで終端ではないんですよね。むしろそこから情報の広がりがあるんじゃないかと感じます。</p>
<p>私は、業界自体は１０年近くありますが、ブランクもあり、php自体は１年ちょっと、cakephpも同じくらいの経験値です。当時は職場ではphpの案件はなく、プログラムだけを書き、非同期通信やウェブサービスのいまどき　をほとんど知らずに仕事をしてきました。これはまずいと転職してちょっと職種が変わっただけで、日々書籍をあさり、検索をし、トライ＆エラー、果ては自身のパートナーに教えてもらう夜もあります。角度がちょっと違っただけで吸収しなくてはいけない量が倍増しました。それは私が選んですきでやっていることですが、一人きりでは行き詰る日もあります。そういう意味で勉強会やtwitterというつながりは非常に強力で、近しい場所に目標というか、自身が成長したらこうなれるのかな、という方々がいるのは励みになります。なんていうか「いい時代に生まれたんだなあ」という気がしますｗ</p>
<p>※現在Ktai Library勉強会の日程を調整していますが土曜日は会議室がどこも一杯なんだぜ…！「ここあいてるよ」などのコメントお待ちしています。もうちょっと色々書きたかったですが、本日はここまで。</p>
<br />カテゴリー:<a href='http://yashio.wordpress.com/category/cakephp/'>cakephp</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/yashio.wordpress.com/259/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/yashio.wordpress.com/259/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/yashio.wordpress.com/259/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/yashio.wordpress.com/259/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/yashio.wordpress.com/259/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/yashio.wordpress.com/259/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/yashio.wordpress.com/259/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/yashio.wordpress.com/259/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/yashio.wordpress.com/259/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/yashio.wordpress.com/259/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/yashio.wordpress.com/259/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/yashio.wordpress.com/259/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/yashio.wordpress.com/259/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/yashio.wordpress.com/259/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=yashio.wordpress.com&amp;blog=7885922&amp;post=259&amp;subd=yashio&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://yashio.wordpress.com/2010/06/03/%e7%ac%ac5%e5%9b%9ecakephp%e5%8b%89%e5%bc%b7%e4%bc%9a%e3%81%ab%e5%8f%82%e5%8a%a0%e3%81%84%e3%81%9f%e3%81%97%e3%81%be%e3%81%97%e3%81%9f%e3%80%82/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c879ceb3c641ee022179f885d29c1d9d?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">yashio</media:title>
		</media:content>
	</item>
		<item>
		<title>cakephpでqueryを使う</title>
		<link>http://yashio.wordpress.com/2010/05/26/cakephp%e3%81%a7query%e3%82%92%e4%bd%bf%e3%81%86/</link>
		<comments>http://yashio.wordpress.com/2010/05/26/cakephp%e3%81%a7query%e3%82%92%e4%bd%bf%e3%81%86/#comments</comments>
		<pubDate>Tue, 25 May 2010 16:05:01 +0000</pubDate>
		<dc:creator>yashio</dc:creator>
				<category><![CDATA[cakephp]]></category>

		<guid isPermaLink="false">http://yashio.wordpress.com/?p=251</guid>
		<description><![CDATA[小話をひとつ。（誤ってる情報がありましたら修正いたしますので、コメント等いただけるとうれしいです） 先日、とあるシステム（made by cakephp　1.2）で今まで一切$model-&#62;query()を使わなかったわけだがとうとう解禁で（…というほどでもないけど）管理画面等でかなり複数のテーブルからほしいデータだけを取りたい、という要望があり、そのために$model-&#62;query($sql)を使うことになりました。ＳＱＬは非常に複雑だったのですが、まあ自由にクエリが書けるだけ色々考えずにすむ！ということでワーイワーイ。 だったわけですが。 テーブルの構造上＋データの出力上、unionすることになり、まあそれもクエリ自由にかけますから関係ないですよね、と思ってunionしまして出力してうへへへよかったね。ということで落ち着いたのですが、数日後、unionせずにデータを取得することができることが判明し。クエリを書き直したんですね。でunion消したと。そうしましたら。 おいおい、データがとれないくなったよ^^;実際のクエリをコンソールなりで実行するとデータが取れるわけだが、フレームワーク上では今までとどうも配列の構造がちがうんじゃね？と思って返却されたデータをみておっさん驚いた。全てのデータ（フィールド）が、取得元のテーブルのキー配列に入れ子になっておる。アッ！つまりですね…今まで[0]['field1']で取得できていたデータが全て[0]['table']['field1']という構造になってるよ！えー！というお話。unionしているクエリは全て別名で as &#8216;hogehoge&#8217;と指定しており、そこにテーブル名の記述はないので、すっかり「？？どうして？」とてんぱったというお話。今考えると「…まあそうだね」という結論ですけれども。 今回のケースはunionが肝で、データとして別のテーブルから、エイリアスとして同じ名前で設定したフィールドを取得しているため、「どこのテーブルから」という情報が識別できないので、取得時に[0]['field1']という形でデータを帰さざるを得なかったわけですが、unionを消したことで取得元のテーブルが明確になり、[0]['table']['field1']という構造で返却されました、ということでした。で、色々調べてみたんですけど、こちらに1.1系の話がのっていて気になったので自分も同様のソースを参照してみたところcakeの中のソースは同じでした。 というわけで、クエリをじかに書いていて、フィールド名のキーだけでいいんじゃゴルァ！という人はunionつかって空っぽのデータとくっつければいいよって、これちょっと乱暴じゃないか。いや他に良い策があればそれを実行したいのですが。統計情報とかで複雑なクエリを組んだりする場合、あちこちのテーブルからデータを取ってくることって多いと思うんですよね。なもんで、別にモデル名でいちいち判断してくれずに階層を浅くしてほしいな…と思えるシーンもあるんじゃないでしょうか。いちいちテーブルのキー情報で個別に判断するのはちょっとな…と思ったのでした。1.2でのお話です。こんな悩みに遭遇した方いらっしゃいますでしょうか…。 さてさてパフォーマンスチューニングやら、jQueryやら色々やってるわけですがブログが追いつかず悲しい…。最近はflexigridなんか使ってワーワーって感じでやっとります。今これ読んでます。今年は雑種な感じでなんでもあり、でOS本だのサーバ本だのフレームワークだの手当たりしだい読んでます。まだまだです…。 カテゴリー:cakephp<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=yashio.wordpress.com&amp;blog=7885922&amp;post=251&amp;subd=yashio&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>小話をひとつ。（<strong>誤ってる情報がありましたら修正いたしますので、コメント等いただけるとうれしいです</strong>）<br />
先日、とあるシステム（made by cakephp　1.2）で今まで<strong>一切$model-&gt;query()を使わなかった</strong>わけだがとうとう解禁で（…というほどでもないけど）管理画面等でかなり複数のテーブルからほしいデータだけを取りたい、という要望があり、そのために$model-&gt;query($sql)を使うことになりました。ＳＱＬは非常に複雑だったのですが、まあ自由にクエリが書けるだけ色々考えずにすむ！ということでワーイワーイ。</p>
<p>だったわけですが。</p>
<p>テーブルの構造上＋データの出力上、unionすることになり、まあそれもクエリ自由にかけますから関係ないですよね、と思ってunionしまして出力してうへへへよかったね。ということで落ち着いたのですが、数日後、unionせずにデータを取得することができることが判明し。クエリを書き直したんですね。でunion消したと。そうしましたら。</p>
<p>おいおい、データがとれないくなったよ^^;実際のクエリをコンソールなりで実行するとデータが取れるわけだが、フレームワーク上では今までとどうも配列の構造がちがうんじゃね？と思って返却されたデータをみておっさん驚いた。<strong>全てのデータ（フィールド）が、取得元のテーブルのキー配列に入れ子になっておる。</strong>アッ！つまりですね…今まで[0]['field1']で取得できていたデータが全て[0]['table']['field1']という構造になってるよ！えー！というお話。unionしているクエリは全て別名で as &#8216;hogehoge&#8217;と指定しており、そこにテーブル名の記述はないので、すっかり「？？どうして？」とてんぱったというお話。今考えると「…まあそうだね」という結論ですけれども。</p>
<p>今回のケースはunionが肝で、データとして別のテーブルから、エイリアスとして同じ名前で設定したフィールドを取得しているため、「どこのテーブルから」という情報が識別できないので、取得時に[0]['field1']という形でデータを帰さざるを得なかったわけですが、unionを消したことで取得元のテーブルが明確になり、[0]['table']['field1']という構造で返却されました、ということでした。で、色々調べてみたんですけど、<a href="http://d.hatena.ne.jp/msakamoto-sf/20080221/1203596955">こちらに1.1系の話がのっていて</a>気になったので自分も同様のソースを参照してみたところcakeの中のソースは同じでした。</p>
<p>というわけで、クエリをじかに書いていて、フィールド名のキーだけでいいんじゃゴルァ！という人はunionつかって空っぽのデータとくっつければいいよって、これちょっと乱暴じゃないか。いや他に良い策があればそれを実行したいのですが。統計情報とかで複雑なクエリを組んだりする場合、あちこちのテーブルからデータを取ってくることって多いと思うんですよね。なもんで、別にモデル名でいちいち判断してくれずに階層を浅くしてほしいな…と思えるシーンもあるんじゃないでしょうか。いちいちテーブルのキー情報で個別に判断するのはちょっとな…と思ったのでした。1.2でのお話です。こんな悩みに遭遇した方いらっしゃいますでしょうか…。</p>
<p>さてさてパフォーマンスチューニングやら、jQueryやら色々やってるわけですがブログが追いつかず悲しい…。最近はflexigridなんか使ってワーワーって感じでやっとります。今<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4048684116/cybergarden-22/ref=nosim//ref=nosim/">これ</a>読んでます。今年は雑種な感じでなんでもあり、でOS本だのサーバ本だのフレームワークだの手当たりしだい読んでます。まだまだです…。</p>
<br />カテゴリー:<a href='http://yashio.wordpress.com/category/cakephp/'>cakephp</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/yashio.wordpress.com/251/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/yashio.wordpress.com/251/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/yashio.wordpress.com/251/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/yashio.wordpress.com/251/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/yashio.wordpress.com/251/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/yashio.wordpress.com/251/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/yashio.wordpress.com/251/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/yashio.wordpress.com/251/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/yashio.wordpress.com/251/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/yashio.wordpress.com/251/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/yashio.wordpress.com/251/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/yashio.wordpress.com/251/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/yashio.wordpress.com/251/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/yashio.wordpress.com/251/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=yashio.wordpress.com&amp;blog=7885922&amp;post=251&amp;subd=yashio&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://yashio.wordpress.com/2010/05/26/cakephp%e3%81%a7query%e3%82%92%e4%bd%bf%e3%81%86/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c879ceb3c641ee022179f885d29c1d9d?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">yashio</media:title>
		</media:content>
	</item>
	</channel>
</rss>
