2012年9月24日 星期一

修改 Debian 或 Ubuntu 預設 editor

前幾天突然想到一個問題....由於 Ubuntu 預設 editor 是 nano,這對於一個 vim user 來說實在是不太舒服啊XD 所以稍微找了一下,找到一個很簡便的作法,可以用來修改預設 editor,方式如下:


$ sudo update-alternatives --config editor    
[sudo] password for crboy: 
There are 4 choices for the alternative editor (providing /usr/bin/editor).

  Selection    Path                Priority   Status
------------------------------------------------------------
* 0            /bin/nano            40        auto mode
  1            /bin/ed             -100       manual mode
  2            /bin/nano            40        manual mode
  3            /usr/bin/vim.basic   30        manual mode
  4            /usr/bin/vim.tiny    10        manual mode

Press enter to keep the current choice[*], or type selection number: 3
update-alternatives: using /usr/bin/vim.basic to provide /usr/bin/editor (editor) in manual mode.
$ 

其實重點就是那個 sudo update-alternatives --config editor 而已啦XD 後面照著指示操作就好了....:)

2012年9月21日 星期五

PHP 自動發信程式

之前為了發 COSCUP 的通知信,參考網路上的範例用 PHP 寫了個小程式。我把範例程式放在這個 gist 上:https://gist.github.com/3135053

其實明顯看得出來,程式沒什麼架構,純粹只是為了可以 work 而寫的拋棄式程式。不過丟出來一方面可以當自己的筆記,以後要找比較好找,另一方面,也許另一個人想要寫類似的小玩具的時候就可以參考了 :P

以下是一些簡單的介紹。

我使用這個程式的狀況是,我需要寄一封信給很多人,而我又希望每個人收到的信,收件者只有自己,而且信件開頭還會寫上他的名字,這樣比較貼心。所以沒辦法用「寄給自己 and BCC」的方法達成,只好透過程式完成。

這個小程式實際上是透過一套稱為 PHPMailer 的 library 做真正的寄信動作,所以困難的部分都被它做走了!我們只要把該設定的東西設定一下就差不多。要設定的項目大概有這些:

  • SMTP server 資訊 (主機、port、認證方式...等)
  • 登入資訊 (我使用 Gmail 寄信,所以需要登入)
  • 寄件者與收件者資訊
  • 信件資訊 (標題與內文)
在我這邊,每封信不同的地方只有收件者與內文,所以我會每次重新產生並設定,其餘部分都在最前面寫死。

收件者與內文的部分,我是先將收件者名單從 Google Spreadsheets 中匯出成 .tsv 檔 (因為比較容易 parse),再直接讀入。這個寫在 function parse_name_list_tsv($filename) 中。然後用一個自己刻的簡單 template tool (function fill_template($content, $data), 才 4 行XD) 去加上 user-specified 的資料,最後送信收工!

一些有趣的小細節:
  • 忘記為什麼了,我一開始跑起來會出現跟時區有關的錯誤,所以必須加上 date_default_timezone_set('Asia/Taipei'); 來避免這個問題
  • 因為我的 Google Account 有開啟兩階段驗證 (2-Step Verification),而我們這種小工具當然不可能支援,所以要為我們的程式特別創造一組應用程式密碼,才能正常使用喔!
  • 一開始不小心抓到舊版的 PHPMailer,它有個 bug 就是,CC 的人會變成 BCC (或是反過來...我忘了),所以我直接從它的 source code 裡找到有問題的那段修掉了 (open source rocks!),不過還是不太確定是不是我使用錯誤。結果後來發現有新版 PHPMailer,就特別關注了一下這個問題,發現已經被修掉了XD 修的方法一樣....哈!
  • 因為 PHPMailer 新增收件人的 API 是 AddAddress(),所以要注意,要更改收件人的話必須先執行 ClearAddresses(),否則收件人清單會一直長....(好險我在正式寄信前的測試就發現這個問題...orz)
大概...差不多是這樣吧!突然有點佩服自己,一點小東西也可以囉嗦這麼多,哈哈....

2012年9月19日 星期三

Gitit 簡介

最近打算發一系列的 gitit 相關文章,希望不要拖稿拖太久....萬一去當兵了,可能會拖很久很久這樣XD

之前我一直在尋找一個好用的共同協作平台系統,原因是我覺得 MediaWiki 的語法實在太難寫了....特別是當我看到 Ubuntu-TW Wiki 的首頁原始碼的時候,都快吐血了.....當下覺得我智商不足.....orz 但後來一直尋找,尋找的目標是:語法好寫、可即時線上協作的 wiki,所謂的「即時線上協作」就是像 Google Docs 那樣有可以多人同時編輯的頁面這樣。不過一直都找不到我想要的東西....即時線上協作有 etherpad-lite 這個 open source 專案,但是他是每個 pad 獨立的,而使用 Markdown 語法的 wiki 也不是沒有,但沒有勇氣(?)去嘗試....

一開始知道 gitit,是 @zeroplex (日落) 在噗浪上講的。因為之前也跟日落提過我想要尋找一個好用的 wiki system 這件事,他剛好不知道從哪裡獲得資訊,就分享給我了。結果沒想到,一玩下去,驚為天人啊XD

在 .htaccess 裡面修改 php 設定值

這篇筆記拖稿好久了....其實應該很短的,所以趕快寫一寫。

有時候在弄一些 php 相關的東西的時候,需要設定一些模組,例如之前用過的 Xdebug,但是每次設定 php.ini 就要重新啟動 apache server,很麻煩還是其次,有時候上線的系統這樣一搞就很多人掰了.....XD 所以我們需要一個修改後立即生效的做法。

「.htaccess」是非常實用的做法,只要先在 apache 的設定檔裡去 AllowOverride Options 即可使用 (我自己的機器通常會在特定目錄直接 AllowOverride All)。那麼,到底該怎麼做呢?下面是範例:
php_value xdebug.auto_trace on
php_value xdebug.trace_output_dir /tmp/xdebug
php_value xdebug.collect_params 3

php_value xdebug.profiler_enable on
php_value xdebug.profiler_output_dir /tmp/xdebug
應該滿好懂的?其實就是...前面先指定 php_value,後面不用等號,直接寫設定值即可。

這樣做出來的結果,可以在 phpinfo 裡面看到成效。phpinfo 下方的 Configuration 那邊,設定值的部分有三欄,分別是 Directive、Local Value、Master Value,Directive 就是設定值的名稱,Local Value 是在該目錄真的會生效的設定值,Master Value 則是全系統的設定值。如果你覆蓋了全系統的設定,那麼你會看到你的 Local Value 跟 Master Value 不同,應該滿好認的。

透過這個方式,我們可以隨時去修改 php 的設定值,對於一些測試性的行為很有幫助!:D

2012年9月10日 星期一

這拼音到底是什麼鬼?

有個已經讓我困擾非常久的問題....今天來抱怨一下。

這個問題跟拼音有關,我指的是中文字以英文字母表示的那個拼音...最後還想提一下關於奇怪的「洋中文」 (我自己亂取的稱呼) 現象....但必須先說,我不是專業的語言或是文字學家,甚至我對語言、文字都沒有什麼深入的了解,我只是想表達我覺得很困擾,以及莫名奇妙莫名其妙的一些問題罷了。(感謝 http://www.plurk.com/mike771115 協助訂正錯字)

我們在某些特定場合,可能會需要提供自己的英文名字,特別是一些正式的場合,會需要正式的「中文姓名英譯」。而這個英譯應該以什麼為準呢?當然是護照上的英文名字。因為你如果出國,有法定效力的身分證明文件就是護照,所以不管是什麼證件、信用卡或是國際證照上面,最好都是寫護照上的英文名字。連帶的,像是發表論文之類的,我們也會填上護照上的英文名字。

OK,那這到底有什麼問題?

2012年9月9日 星期日

導讀:提問的藝術

這篇文章已經看過很多不同網頁都轉貼了,而我也不是很喜歡轉貼...所以我去 Google 搜尋了「提問的藝術」,然後直接貼第一條結果出來:http://ihower.tw/blog/archives/457/ (是 ihower 大大的部落格 <(_ _)>)。萬一未來哪天連結失效,那就自行搜尋吧~:)

那麼,要進入正題了。

首先,所謂黑客,在台灣可能比較常稱為駭客,指的是擁有高度知識與技術的人,但比較常用在電腦資訊相關領域。也許他鑽研的是資訊安全,也可能是深入作業系統,也可能是程式高手。我不夠資格對駭客下定義,但我認為這是種文化、是種哲學,體現的是喜好自由、喜好創造的個性。我想維基百科上的說明應該會更清楚。只要讀者不要把黑客跟蓄意搞破壞的人混為一談就好。這篇文章就是教你該怎麼從這些滿是知識跟經驗的駭客手上,獲得他們所會所學。

簡單來說:

  1. 保持謙遜的態度
  2. 找對問問題的地方
  3. 問對問題
  4. 把問題問對
態度是最重要的,也許包含了一切。很多人會不自覺的認為「別人應該告訴我答案」,這樣的想法會造成你提問的方式有很大的問題。如果你想的是「我想要拜託別人給我一個答案」,那也許會順利點。

想要「拜託」別人,總要拿出點誠意吧?要怎麼才能讓人看到你的誠意?你可以說明,你做了哪些動作。例如:你讀了說明文件 (哪一段?)、你看了 FAQ、你在網路上搜尋過、你有爬文。除了表現誠意以外,這對於別人找出你的問題也是有幫助的。也許你根本想錯方向,也許基本觀念不對,也許有地方誤解了等等...總之,做過哪些找答案的動作都可以提出來。(但最好不要胡亂猜測又不去嘗試,人家會想「那你怎麼不試試看?」)

透過提出具有思考性的問題,可以讓駭客們也對你的問題感興趣。若很多人對你的問題感興趣,那表示會有很多人一起幫你思考,幫你找出答案。(其實他們是在幫自己找出答案,只是你也可以從中獲益)

再來,請仔細思考你的問題。沒有思考過就拿去問人是很不禮貌的,特別是當你還覺得別人理應回答你的時候...除了仔細思考以外,也要仔細描述問題。特別是標題要清楚明確。如果你是別人,看到標題是「救命啊」的文章,你會覺得非看不可嗎?

第二點是找對地方。這很簡單,如果你有爬文,你應該有辦法分辨你的問題適不適合在這個地方出現。如果你每個地方都有爬文,那你應該就不會把問題胡亂貼到所有的地方去。

第三點,要問對問題。在很多情況下,你該問的是「我應該嘗試什麼?」而不是「答案是什麼?」為了你自己好,也為了節省別人的時間,請在問問題之前思考別人會怎麼回答你的問題。

最後,其實跟態度也有很大關連,要把問題問對。文章中已經舉了非常多例子,這邊應該不用多說,我寫得實在太差了,還是看原文比較好!:P

不過值得一提的是,要記得 RTFM (Read The Fucking Manual) 還有 STFW (Search The Fucking Web)。每次問問題的時候,最好都先自己找過答案。每次收到答案的時候,可能當中會有一些看不懂的東西,也記得要先找過答案。如果你收到了 *TF* 的答案....那就快去,因為答案真的在那裡.....


PS. 最近在思考一些關於學習的問題,總覺得普遍對於學習這件事不太抱有熱情...但似乎是個無解的問題。該如何鼓勵身邊的其他人 (例如學弟妹) 對探索跟學習的熱情,好像是個很難的問題...其實熱情也許是興趣的產物吧...沒興趣就很難解....

五月天 - 洗衣機

我記得...是今年的母親節吧。

還記得那時候五月天推出了這隻 MV,洗衣機。聽了好久的 KKBOX,一直都沒有仔細去聽歌詞,更沒有去看歌詞寫了什麼。

不過,看了 MV 之後,實在讓我太感動了.....也許,這跟我從小爸爸就過世了有關吧?一直在單親家庭長大的我,對這首歌如此有共鳴,也許是正常的.........先看看 MV 吧?