the lost utf8 encoding

0

更新紀錄

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

源起

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

$ 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

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

$ 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 -> /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 -> /usr/bin/ruby1.8

進去 proc 看看,果然是虛擬主機 foo,先試著關掉 dispatch.fcgi 看看。

$ cd foo.extremepattern.com/public
$ mv .htaccess htaccess.bak

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

一小時代價

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

結論

  1. 同一個帳號環境要一樣
  2. 備份很重要,舊的不要刪掉
  3. 小問題還是要先解決,亂碼污染資料庫到幾百筆就難清了
  4. rails 共用環境是新的需求,遠不如 PHP 等共用環境穩定。

rail crash

0

源起

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

error page

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

上產品模式後會轉 404/500 頁面,並不會出現 RoutingError/UnknownAction,這點又需要注意。

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

Rails 分開發跟產品模式的錯誤處理往往讓人一頭霧水,個人覺得蠻複雜的,上線後都還需要 再測一次才知道,特別是貪圖方便去改 environments/production.rb 或是 development.rb 後, 就是後面惡夢的開始。

Html to RoR Task C

0

Task C 是個 RSS 加裝任務。

改寫 YML 中的名詞,改用泛用的名詞以利後續維護。

screencast 1

Use FeedTools to build RSS 2.0

screencast 2

改用 YahooUI Grids CSS to build new layout.

screencast 3

首頁最新10筆消息,只有抓單一來源比對日期,沒有做所有來源比對。

screencast 4

多來源最新10筆消息,目前只有抓rails 所有頻道比對日期,沒有做java來源比對。

screencast 5

Html to RoR Task B

0

Task B 是個 AJAX 改裝任務。

Use ajax function to insert screencast page

screencast 1

improve show/hide toggle function.

screencast 2

Effect 測試與切開 content.yml 中的 rails 部份

screencast 3

Create the nav-img-bar-current helper and assign to content.yml.

screencast 4

Create more images and fight with IE PNG BUG.

screencast 5

DRY some javascript codes.

screencast 6

Change WebRick to Mongrel for the development server.

screencast 7

Html to RoR Task A

0

紀錄 www 網站更新過程,原先都是 HTML 靜態檔,這裡選擇 RoR 做動態網頁的基礎。

一方面減少所需的HTML文件,一方面減少更動的成本。 主要是頭尾部分,集中起來要改也比較方便,另一個可以大量減少 HTML 碼。

screencast 1

繼續讓 HTML 慢慢乾掉 DRY。這裡不是使用資料庫,而是 YAML 的格式存放內容。

screencast 2

DRY content.yml

screencast 3

永久連結實在是不大可能,改來改去,所以要在 404.html 加些提示。

screencast 4

DRY view files

screencast 5

DRY content.yml again. Create a short section.

screencast 6

DRY content.yml again. 同時自己加個 filter 轉變成 google/search?q=foo+Goo,事後看來有點多餘。

screencast 7

性能改善的一些嘗試,參閱 A Look at Common Performance Problems in Rails 一文。

screencast 8

Older posts: 1 2 3