<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/css" href="/stylesheets/rss.css"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
  <channel>
    <title>Extreme Pattern: Category rails</title>
    <link>http://blog.extremepattern.com/articles/category/rails</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description>enjoy</description>
    <item>
      <title>the lost utf8 encoding</title>
      <description>&lt;h3&gt;更新紀錄&lt;/h3&gt;


	&lt;ol&gt;
	&lt;li&gt;2006-1001 還是發生亂碼現象，這次進去看才發現原來之前的設定 /usr/bin/env ruby 並不一定會抓 /home/foo/bin/ruby 而是根據 fcgi 的設定，往往是 /usr/bin/ruby-1.8。之前如減少 500 建議又加上 frao_handler 試圖 reload 被 DH 定時砍的 fcgi ，也許在 reload 時出現問題 ? 刪除後觀察看看。&lt;/li&gt;
	&lt;/ol&gt;


	&lt;h3&gt;源起&lt;/h3&gt;


	&lt;p&gt;之前一直遭遇亂碼問題 &lt;a href="/articles/2006/08/20/typo-4-post-install"&gt;typo 4 post install&lt;/a&gt; ，終於到了需要攤牌的時候，經過一陣子觀察，發現混用環境會用到同帳號下面其他虛擬主機的 MySQL 連線，而剛好這個 foo 虛擬主機只是測試用，並沒有正常設定資料庫需要的  encoding 連結參數，這下子就慘了。&lt;/p&gt;


&lt;pre&gt;
$ ps aux | grep xxx
xxx 20120  0.2  0.6 29140 26564 ?       S    19:07   0:02 ruby dispatch.fcgi
xxx 26233  0.4  0.9 46028 36960 ?       S    19:08   0:04 ruby dispatch.fcgi
xxx 11270  0.2  0.6 29140 26568 ?       S    19:11   0:02 ruby dispatch.fcgi
xxx 14002  0.0  0.0  6488 1880 ?        S    19:19   0:00 sshd: linthink@pts/6
xxx  6930  0.0  0.0  4788 1684 pts/6    Ss   19:19   0:00 -bash
xxx 13610  0.8  0.6 29140 26556 ?       S    19:20   0:02 ruby dispatch.fcgi
xxx  9397  0.7  0.5 24684 22136 ?       S    19:22   0:01 /usr/bin/ruby1.8 dispatch.fcgi
xxx  4355  0.0  0.0  2484  860 pts/6    R+   19:24   0:00 ps aux
xxx 24377  0.0  0.0  4788 1688 pts/6    R+   19:24   0:00 -bash
&lt;/pre&gt;

	&lt;p&gt;一發生亂碼現象，馬上連進去看看現場，發現 ruby1.8 這個行程應該不存在，這是系統提供的 ruby ，但是我的 blog 站 typo 確是用私有 ruby，這代表有人在使用 foo 虛擬主機下的服務。&lt;/p&gt;


&lt;pre&gt;
$ ls -al /proc/9397/
-r--r--r--    1 xxx sasl 0 2006-09-21 19:25 cpu
lrwxrwxrwx    1 xxx sasl 0 2006-09-21 19:25 cwd -&amp;gt; /kkk/foo.extremepattern.com/public
-r--------    1 xxx sasl 0 2006-09-21 19:25 environ
lrwxrwxrwx    1 xxx sasl 0 2006-09-21 19:25 exe -&amp;gt; /usr/bin/ruby1.8
&lt;/pre&gt;

	&lt;p&gt;進去 proc 看看，果然是虛擬主機 foo，先試著關掉 dispatch.fcgi 看看。&lt;/p&gt;


&lt;pre&gt;
$ cd foo.extremepattern.com/public
$ mv .htaccess htaccess.bak
&lt;/pre&gt;

	&lt;p&gt;kill 這個不速之客後，reload 部落格網頁，還是喚起這個屬於
 foo 的連線，猜測應該是某種連接池關係，所以還是一堆亂碼。只好把其他 ruby 行程全砍，然後再進 typo 管理將快取清過，總算恢復編碼正常。&lt;/p&gt;


	&lt;h3&gt;一小時代價&lt;/h3&gt;


	&lt;p&gt;看了一下，發現之前不注意，有一篇文章被上面的程序，導致亂碼污了資料庫，先到 phpmyadmin 查到這筆紀錄
更改時間是 2006-09-05 18:35:21，再去找備份 sql 截取出這段紀錄，重新貼上。同時這代表後來逐日備份全部
遭到污染。&lt;/p&gt;


	&lt;h3&gt;結論&lt;/h3&gt;


	&lt;ol&gt;
	&lt;li&gt;同一個帳號環境要一樣&lt;/li&gt;
		&lt;li&gt;備份很重要，舊的不要刪掉&lt;/li&gt;
		&lt;li&gt;小問題還是要先解決，亂碼污染資料庫到幾百筆就難清了&lt;/li&gt;
		&lt;li&gt;rails 共用環境是新的需求，遠不如 &lt;span class="caps"&gt;PHP&lt;/span&gt; 等共用環境穩定。&lt;/li&gt;
	&lt;/ol&gt;</description>
      <pubDate>Thu, 21 Sep 2006 19:40:00 -0700</pubDate>
      <guid isPermaLink="false">urn:uuid:da7d781d-0457-4d90-8cbd-c82147da74a5</guid>
      <author>LIN</author>
      <link>http://blog.extremepattern.com/articles/2006/09/21/the-lost-utf8-encoding</link>
      <category>typo</category>
      <category>hosting</category>
      <category>rails</category>
    </item>
    <item>
      <title>rail crash</title>
      <description>&lt;h3&gt;源起&lt;/h3&gt;


	&lt;p&gt;之前網路應用都在 java web 環境上發展，開始學 ror 會有點不習慣，需要做點轉換，覺得有不習慣的地方，在這裡紀錄一下。&lt;/p&gt;


	&lt;p&gt;&lt;img src="/files/my_8_railcrash.png" alt="" /&gt;&lt;/p&gt;


	&lt;h3&gt;error page&lt;/h3&gt;


	&lt;p&gt;typo 的做法是 route.rb 下面加一行做 route globbing 全攬下來，但這只能擋住 RoutingError，
要擋 UnknownAction 的做法是靠 ActionController::Rescue 救援。&lt;/p&gt;


	&lt;p&gt;上產品模式後會轉 404/500 頁面，並不會出現 RoutingError/UnknownAction，這點又需要注意。&lt;/p&gt;


	&lt;p&gt;http://www.typosphere.org/trac/browser/trunk/config/routes.rb
http://www.typosphere.org/trac/browser/trunk/app/controllers/articles_controller.rb
http://dev.rubyonrails.org/svn/rails/trunk/railties/configs/routes.rb&lt;/p&gt;


	&lt;p&gt;Rails 分開發跟產品模式的錯誤處理往往讓人一頭霧水，個人覺得蠻複雜的，上線後都還需要
再測一次才知道，特別是貪圖方便去改 environments/production.rb 或是 development.rb 後，
就是後面惡夢的開始。&lt;/p&gt;</description>
      <pubDate>Thu, 21 Sep 2006 18:58:00 -0700</pubDate>
      <guid isPermaLink="false">urn:uuid:c270199e-e6d3-4ca9-95cc-8b41c262ee62</guid>
      <author>LIN</author>
      <link>http://blog.extremepattern.com/articles/2006/09/21/rail-crash</link>
      <category>rails</category>
    </item>
    <item>
      <title>Html to RoR Task C</title>
      <description>&lt;p&gt;Task C 是個 &lt;span class="caps"&gt;RSS&lt;/span&gt; 加裝任務。&lt;/p&gt;


	&lt;p&gt;改寫 &lt;span class="caps"&gt;YML&lt;/span&gt; 中的名詞，改用泛用的名詞以利後續維護。&lt;/p&gt;


	&lt;p&gt;&lt;img src="/files/screencast.png" alt="" /&gt; &lt;a href="/showswf/exp_ror_C1/980/666"&gt;screencast 1&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;Use &lt;a href="http://sporkmonger.com/projects/feedtools/"&gt;FeedTools&lt;/a&gt; to build &lt;span class="caps"&gt;RSS 2&lt;/span&gt;.0&lt;/p&gt;


	&lt;p&gt;&lt;img src="/files/screencast.png" alt="" /&gt; &lt;a href="/showswf/exp_ror_C2/980/666"&gt;screencast 2&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;改用 &lt;a href="http://developer.yahoo.com/yui/grids/"&gt;YahooUI Grids &lt;span class="caps"&gt;CSS&lt;/span&gt;&lt;/a&gt; to build new layout.&lt;/p&gt;


	&lt;p&gt;&lt;img src="/files/screencast.png" alt="" /&gt; &lt;a href="/showswf/exp_ror_C3/980/666"&gt;screencast 3&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;首頁最新10筆消息，只有抓單一來源比對日期，沒有做所有來源比對。&lt;/p&gt;


	&lt;p&gt;&lt;img src="/files/screencast.png" alt="" /&gt; &lt;a href="/showswf/exp_ror_C4/980/666"&gt;screencast 4&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;多來源最新10筆消息，目前只有抓rails 所有頻道比對日期，沒有做java來源比對。&lt;/p&gt;


	&lt;p&gt;&lt;img src="/files/screencast.png" alt="" /&gt; &lt;a href="/showswf/exp_ror_C5/980/666"&gt;screencast 5&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Thu, 24 Aug 2006 01:58:00 -0700</pubDate>
      <guid isPermaLink="false">urn:uuid:e2a24cbb-e6e4-419e-ae8c-383aecfa3182</guid>
      <author>LIN</author>
      <link>http://blog.extremepattern.com/articles/2006/08/24/html-to-ror-task-c</link>
      <category>rails</category>
      <category>screencast</category>
    </item>
    <item>
      <title>Html to RoR Task B</title>
      <description>&lt;p&gt;Task B 是個 &lt;span class="caps"&gt;AJAX&lt;/span&gt; 改裝任務。&lt;/p&gt;


	&lt;p&gt;Use ajax function to insert screencast page&lt;/p&gt;


	&lt;p&gt;&lt;img src="/files/screencast.png" alt="" /&gt; &lt;a href="/showswf/exp_ror_B1/980/666"&gt;screencast 1&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;improve show/hide toggle function.&lt;/p&gt;


	&lt;p&gt;&lt;img src="/files/screencast.png" alt="" /&gt; &lt;a href="/showswf/exp_ror_B2/980/666"&gt;screencast 2&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;Effect 測試與切開 content.yml 中的 rails 部份&lt;/p&gt;


	&lt;p&gt;&lt;img src="/files/screencast.png" alt="" /&gt; &lt;a href="/showswf/exp_ror_B3/980/666"&gt;screencast 3&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;Create the nav-img-bar-current helper and assign to content.yml.&lt;/p&gt;


	&lt;p&gt;&lt;img src="/files/screencast.png" alt="" /&gt; &lt;a href="/showswf/exp_ror_B4/980/666"&gt;screencast 4&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;Create more images and fight with &lt;span class="caps"&gt;IE PNG BUG&lt;/span&gt;.&lt;/p&gt;


	&lt;p&gt;&lt;img src="/files/screencast.png" alt="" /&gt; &lt;a href="/showswf/exp_ror_B5/980/666"&gt;screencast 5&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;&lt;span class="caps"&gt;DRY&lt;/span&gt; some javascript codes.&lt;/p&gt;


	&lt;p&gt;&lt;img src="/files/screencast.png" alt="" /&gt; &lt;a href="/showswf/exp_ror_B6/980/666"&gt;screencast 6&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;Change WebRick to Mongrel for the development server.&lt;/p&gt;


	&lt;p&gt;&lt;img src="/files/screencast.png" alt="" /&gt; &lt;a href="/showswf/exp_ror_B7/980/666"&gt;screencast 7&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Thu, 24 Aug 2006 01:43:00 -0700</pubDate>
      <guid isPermaLink="false">urn:uuid:43ff4112-8c18-463b-9c5e-5b47cdcb0256</guid>
      <author>LIN</author>
      <link>http://blog.extremepattern.com/articles/2006/08/24/html-to-ror-task-b</link>
      <category>rails</category>
      <category>screencast</category>
    </item>
    <item>
      <title>Html to RoR Task A</title>
      <description>&lt;p&gt;紀錄 www 網站更新過程，原先都是 &lt;span class="caps"&gt;HTML&lt;/span&gt; 靜態檔，這裡選擇 RoR 做動態網頁的基礎。&lt;/p&gt;


	&lt;p&gt;一方面減少所需的HTML文件，一方面減少更動的成本。 主要是頭尾部分，集中起來要改也比較方便，另一個可以大量減少 &lt;span class="caps"&gt;HTML&lt;/span&gt; 碼。&lt;/p&gt;


	&lt;p&gt;&lt;img src="/files/screencast.png" alt="" /&gt; &lt;a href="/showswf/exp_ror_A1/980/666"&gt;screencast 1&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;繼續讓 &lt;span class="caps"&gt;HTML&lt;/span&gt; 慢慢乾掉 &lt;span class="caps"&gt;DRY&lt;/span&gt;。這裡不是使用資料庫，而是 &lt;span class="caps"&gt;YAML&lt;/span&gt; 的格式存放內容。&lt;/p&gt;


	&lt;p&gt;&lt;img src="/files/screencast.png" alt="" /&gt; &lt;a href="/showswf/exp_ror_A2/980/666"&gt;screencast 2&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;&lt;span class="caps"&gt;DRY&lt;/span&gt; content.yml&lt;/p&gt;


	&lt;p&gt;&lt;img src="/files/screencast.png" alt="" /&gt; &lt;a href="/showswf/exp_ror_A3/980/666"&gt;screencast 3&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;永久連結實在是不大可能，改來改去，所以要在 404.html 加些提示。&lt;/p&gt;


	&lt;p&gt;&lt;img src="/files/screencast.png" alt="" /&gt; &lt;a href="/showswf/exp_ror_A4/980/666"&gt;screencast 4&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;&lt;span class="caps"&gt;DRY&lt;/span&gt; view files&lt;/p&gt;


	&lt;p&gt;&lt;img src="/files/screencast.png" alt="" /&gt; &lt;a href="/showswf/exp_ror_A5/980/666"&gt;screencast 5&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;&lt;span class="caps"&gt;DRY&lt;/span&gt; content.yml again. Create a short section.&lt;/p&gt;


	&lt;p&gt;&lt;img src="/files/screencast.png" alt="" /&gt; &lt;a href="/showswf/exp_ror_A6/980/666"&gt;screencast 6&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;&lt;span class="caps"&gt;DRY&lt;/span&gt; content.yml again. 同時自己加個 filter 轉變成 google/search?q=foo+Goo，事後看來有點多餘。&lt;/p&gt;


	&lt;p&gt;&lt;img src="/files/screencast.png" alt="" /&gt; &lt;a href="/showswf/exp_ror_A7/980/666"&gt;screencast 7&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;性能改善的一些嘗試，參閱 &lt;a href="http://www.infoq.com/articles/Rails-Performance"&gt;A Look at Common Performance Problems in Rails&lt;/a&gt;  一文。&lt;/p&gt;


	&lt;p&gt;&lt;img src="/files/screencast.png" alt="" /&gt; &lt;a href="/showswf/exp_ror_A8/980/666"&gt;screencast 8&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Thu, 24 Aug 2006 01:02:00 -0700</pubDate>
      <guid isPermaLink="false">urn:uuid:4785459f-9dbb-4645-92db-4bada586175c</guid>
      <author>LIN</author>
      <link>http://blog.extremepattern.com/articles/2006/08/24/html-to-ror-task-a</link>
      <category>rails</category>
      <category>screencast</category>
    </item>
  </channel>
</rss>
