文章

目前顯示的是 十一月, 2011的文章

學校也有五星級廁所

圖片
昨天去朋友的學校處理事情,去上廁所的時候注意到他們的洗手臺設計都超有型的!

這是男廁的洗手臺:






這是女廁的洗手臺:
(註:女廁的洗手臺是在外面ok? 我沒那膽子跑進去拍...)



顏色有好幾種輪流

Rails 3 多人共同開發時Migration版本相插的問題

在Rails 1的時代migration版本號是用流水號,共同開發時就容易撞號,schema_migrations又是只記最新的號碼,結果就是:撞號又較晚commit的人,那隻migration就無法執行,必須手動改號碼。

最近專案也遇到這個疑慮,所以測試了一下,發現在Rails 3下,schema_migrations會記所有的版本,所以你只要下rake db:migrate,他就會把所有的migration,不管新舊,只要沒跑過的都會run它,因此不需要擔心migration沒被run到的狀況。

你也可以用
rake db:migrate:up VERSION=20080906120000 指定只執行該版本號的up區塊的部份(給down就會執行down區塊)

但如果你下這樣
rake db:migrate VERSION=20080906120000 它會一路執行途中所有的migration,直到你指定的版本號為止

相關語法可參考rails guide


但是,如果你在migration內有寫row內容的轉換處理程式,或者欄位有相依性、順序不能錯的話,那事情就沒有那麼單純了。Rails可以自動幫你跑所有你還沒跑過的migration,但管不到這種問題。

如果你的專案真的有這種需求,你可能需要設立一個專門統籌migration的角色(可以把這個差事丟給DBA),所有人要開migration要先經過這個人的規劃。

[選文] 2011-11-28 網路選文

圖片

Mac新手最常問的問題

這裡整理我被問到的,關於Mac的問題,會持續編修,內容太多的話會再分章節。


Q: 如何把視窗放大到全螢幕(像Windows那樣)
A: 只能自己手動拖曳右下角,調整視窗大小

Mac的放大視窗的行為,是Mac本身的設計理念層次的問題,他也不讓你選設定,他認為你應該習慣這個放大方式。(不過每個應用程式的放大行為可能不太一樣,所以有些放大會放成全螢幕、有些不會)


Q: 如何切換輸入法、剪下、貼上等等
A: 我想你大概還不知道,原本Windows上搭配Ctrl的組合鍵,在Mac很多都要改搭配Command鍵(也就是有蘋果圖的那顆鍵,簡稱Cmd),切換輸入法是Cmd + 空白鍵


Q: 擷取畫面,取代Print Screen的組合鍵
A:
Cmd+Shitf+3:截整個畫面
Cmd+Shift+4:拖曳選取一個範圍拍下來
Cmd+Shift+4+空白鍵:游標會變相機,用那個相機去點視窗,功能類似Windows下的Alt+Print Screen
以上三種組合都是會直接存成檔案,放在桌面。如果你希望暫存到剪貼簿,就再多按一個Ctrl。


Q: 強制結束工作,取代Ctrl+Alt+Del的組合鍵
A: Cmd+Alt+Esc 可以叫出強制結束程式的工具箱

如果滑鼠跟Finder都還正常的話,也可以去打開 應用程式>工具程式>活動監視器。在這個介面可以強制結束Process


延伸閱讀:
Mac OS X 10.7 Lion 的軌跡板觸控手勢 這幾個你知道嗎

Mac的Terminal終端機下 游標如何跳到行首或行尾(home/end)

圖片
一直有個小問題困擾著我,以前在linux的終端機裡,如果想把游標跳到行首或行尾,只要按Home或End就好了,但是在Mac下這個鍵是無效的。

慢慢移到行首雖然比較久但也還可以接受,所以之前都一直忍著,今天終於生氣了,去搜尋一下,找到了答案。

跳到行首:Ctrl+A
跳到行尾:Ctrl+E

這鍵也太鬼了... 似乎是純文字下的編輯器的習慣,不過其實也很好記
口訣:「A是第一個字母,E代表End

另外,在Mac下,一般的程式(瀏覽器、文字編輯器等)跳到行首行尾是用Cmd+←跟Cmd+→。

這個部落格的走向

圖片
最近一直在思考這個部落格要怎麼經營

網路選文是我想持續經營的部份,一方面是幫大家整理一些文章,另一方面是我也可以很快的複習過去整理出來的好文章。然而這部份卻是相對冷門的專欄。

youtube搞笑影片,其實很多人都在經營,覺得經營這塊並不是那麼有效率。要嘛就自己創造些有趣的玩意,單純的跟轉貼其他人的東西感覺不是很有搞頭。當然也有人是影片+自己的解說,成為有價值的資訊,但那必須花較多的時間與心思整理,所想我大概負擔不起。

也有想過多寫一點基礎的電腦技術文章,但還沒有規劃,不曉得各位有什麼想法呢?

歡迎留言或者寄信給我討論,我很想知道各位的想法:)

我的Email是:

Using utf8 encoding in Ruby with MySQL 5.1 and 5.5

remember to require mysql gem first
require "rubygems" require 'mysql'
with MySQL 5.1
db = Mysql.init db.options(Mysql::SET_CHARSET_NAME,"utf8") db.real_connect("localhost", "username", "password", "database")
with MySQL 5.5
db = Mysql.real_connect("localhost", "username", "password", "database") db.charset = "utf8"
check the result:
puts db.character_set_name
If you got utf8, Congratulations!

幫rails 3 加個nl2br函數,把\n換成br tag

Rails其實有內建轉換行的method叫simple_format,但是他會把連續兩個以上換行換成<p>...</p>,這有點太聰明了,又不知道有沒有其他更好的做法,所以我只好自己寫。

simple_format還可以擋javascript


在application_helper.rb
def nl2br(html) raw(h(html).gsub(/[(\n)(\r)]/, "\n" => "<br/>", "\r" => "" )) end 先將內容擋掉不該有的html tag,再把\n替換成<br>,這樣子可以避免被塞入有危險性的tag,但又能放行自己的換行tag。


h
<%=h "<br/>" %> # 其實是 h("<br/>") # => &lt;br/&gt;
raw
<%=raw "<br/>" %> # 其實是 raw("<br/>") # => <br/>
.html_safe
<%= "<br/>".html_safe %> # 跟 raw("<br/>") 是一樣的 # => <br/>

在Rails 2,預設是raw,在Rails 3剛好相反,預設是harm
也就是說:
Rails 3: <%= "<br/>" %> 擋掉html <%=raw "<br/>" %> 直接出html Rails 2: <%=h "<br/>" %> 擋掉html <%= "<br/>" %> 直接出html
在Rails 3加h也是沒關係的

ubuntu 11.10 設定Syngergy (軟體KVM) 一擊必殺秘技

Syngergy How to 軟體KVM

步驟1:
QuickSynergy 要先安裝。 伺服器及Client 端都要安裝.透過software center 安裝就可以了
本篇文章是參考自 https://help.ubuntu.com/community/SynergyHowto
步驟2: 編修 /etc/synergy.conf 檔案。 依hostname 及螢幕相對的左右位置
sudo gedit /etc/synergy.conf
section: screens
yourserver:
compaq:
end
section: links
yourserver:
left = compaq
compaq:
right = yourserver
end

步驟3 :手動分別啟動 synergy and synergyc
手動伺服器端的啟用
synergy
手動client 端的啟用
synergyc 192.168.0.11:24800
需在synergyc 後面加上伺服器的host name

一開機就要自動啟動它的方式。我是改用了gdm,參考底下的做法。唯一要注意的是使用QuickSynergy 在server端那邊要加上port號
像是 192.168.0.11:24800
https://help.ubuntu.com/community/SynergyHowto

底下的手動修改將分為伺服器端及客戶端。
Manual Configuration

The following steps assume you are setting up synergy on a host computer named myserver and a client computer namedmyclient.



On the Server

Synergy configuration can go in your home folder called .synergy.conf or in /etc/synergy.conf. It is up to you whether you would like the changes to be per-user or system-wide.

Here is a sample configuration that will b…

Variables and email headers always get nothing in Rails3 ActionMailer

中文版刊登於RailsFun論壇:解決Rails3 ActionMailer抓不到傳進去的變數的問題

Recently, I am working on sending email in my rails project. I use AWS SES (Amazon Web Services - Simple Email Service). But except some specific settings, others usage should be the same.

And I follow the official user guide:
... UserMailer.welcome_email(@user).deliver ...
I don't know what's going on. But it just doesn't work.

The work one:
UserMailer.welcome_email(@user.name, @user.email) Passing all parameters you're going to use, in Primitive type. (eg. String, Integer, Boolean)

If you use Objects (including Models). It cannot get your attributes. And Email headers (From, to, Subject) may stay blank. Than encounter this error:

Completed 500 Internal Server Error in 1392ms AWS::SES::ResponseError (InvalidParameterValue - Missing required header 'To'.):
The reason is that ActionMailer is Observer. It creates a new process to run on. But objects can't be accessed in difference process. So you should only …