跳到主要內容

文章

目前顯示的是 八月, 2007的文章

FreeBSD複製到另一顆硬碟

平常FreeBSD複製我都直接用dd, dd if=/dev/ad0 of=/dev/ad2 ,但這樣partition的大小必須相同。

為了將現有的FreeBSD複製到另一顆partition不同大小的硬碟,所以特地參考
FreeBSD使用手冊 Disks 18.3.2.1 Using Slices# dd if=/dev/zero of=/dev/ad2 bs=1k count=1
# fdisk -BI ad2 #Initialize your new disk
# bsdlabel -B -w ad2s1 auto #Label it.
# bsdlabel -e ad2s1 # 可以參考現有的partition編輯
# newfs /dev/ad2s1a # Repeat this for every partition you created.
# mount /dev/ad2s1a /mnt
# cd /mnt
# dump -f- / | restore -f- -r 多分區時挺麻煩的,平常還是用sysinstall分割比較方便。
參考資料:
FreeBSD使用手冊 Disks
如何將Linux或FreeBSD複製到另一顆硬碟
PartimageSystemRescueCd
Gnome Partition Editor
g4u

sh != bash

看到改以Shell Script來寫更改相片檔名的批次檔,想起許多用Linux、OS X的朋友都以為sh就是bash,其實古早的Linux也有sh,但後來為方便都用bash取代sh,連OS X也是。不信的人可以md5 /bin/sh和md5 /bin/bash就明白我說什麼。目前知道BSD系列sh不是bash,在FreeBSD上倒是用tcsh當做csh。在Redhat裏根本就用Link把sh -> bash, csh -> tcsh。

順便建議一下,因為每個系統bash位置不盡相同#!/usr/local/bin/bash建議改成#!/usr/bin/env bash而且Bash能夠執行sh的script,所以寫一個版本就夠了,另一個版本是他練功用的。

BTW,bash對非英文語系的相容性較好,OS X 10.3之後也從tcsh改用bash為預設shell。

參考: bash on Mac OS X使用bash的優點

打哪來的控制字元

用尚未完成的Xuite Blog備份程式幫同事備份成RSS,結果讀取出現問題,xml parser認為not well formed。詳查之下並非在下的程式有問題,而是字元裏出現控制碼;自由電子報的無名小站遇「駭」 個資流入中國在(整理:記者袁世忠)的前面,居然有一個ASCII 08的控制字元。同事在複製/貼上時把控制字元也貼進去,難怪xml parser會誤判。

在ASCII 20以前的字,一般人要打出來還不是很容易咧!根據ASCII 字元表,ASCII 08是backspace,偉大的記者是怎麼打出來的?難道知道按著ALT不放+右方數字鍵的秘技嗎?

在OSX終端機使用Opendesktop 字型

以前我用Firefly 新宋體的ttf版本做為OSX的終端機字型,也就是設定成AR PL New Sung 16點。我設定iTerm也是用這個字型,看起來比Taipei或Nice Taipei順眼。

昨天手賤換成Opendesktop 字型,發現字型的間距不同,原來寬高都設成1.0即可,再回頭仔細看說明才知道,等寬字改成AR PL New Sung Mono,原來的AR PL New Sung是不等寬字型。原來的fireflysung.ttf,也改成odosung.ttc,格式不同。

在此再度感謝 Firefly 螢火飛 前輩。

公文真難寫

據說從中華民國9X年開始,"呈"表示對總統有所呈請或報告時使用,因此"呈核"都得改為"陳核"。
但是問題來了,"陳董事長簽",是陳(姓)董事長簽(動詞)一件文,還是陳(動詞)董事長簽呈(名詞)呢?

公文力求清楚,這種改革不合理,公文真難寫呀!

參考資料:
主計法規及其延伸規定第二次工作會議議程
公文寫作與品質
基本公文注意事項

3rd Party database Provider for Windows

無欲則剛

昨天下班回家吃飯時看到重播的犬夜叉,內容是有人假扮彌勒法師到處行騙泡妞,結果是他的朋友八衛門狸,而且泡妞技術比他好得多,所到之處小妞都喜歡他。於是彌勒就向八衛門請教秘訣,八衛門就說:很簡單,就是"無欲則剛"。

當珊瑚質疑彌勒在偷偷討論泡妞的事時,彌勒馬上回說:"你看我這麼莊嚴,怎麼會動歪念頭呢?"


這實在是太經典了,女人都不喜歡色瞇瞇的男人,我輩宅男要切記呀!

讓end user感受到新技術的優點

今天有位不懂技術的user告訴我MIS寫的程式跑起來很慢,雖然在下緩頰說asp.net 2.0本來就會慢一點,但user提出一點:新技術就讓帶來更快速的使用感受。

微軟一直在追求快速開發,但是在RAD這塊其實微軟是後進者,也沒有太快的發展。記得PC上最早的RAD是IBM的VisualAge系統,不管是什麼語言,骨子裏是SmallTalk,所以效率也沒太好,但至少是用mouse拖拉和設定就產生一個框架,後來Visual Basic稍微像樣,但也沒有VisualAge那麼強的拖拉功能,後來IBM open source的Eclipse到現在也沒有VisualAge的神奇拖拉功能。

但是在追求快速開發的同時,別忘了使用者感受才是最重要的。上一篇也提到Office 2007和Vista都很慢,這是使用者要的嗎?Asp.Net很神奇沒錯,先不管奇怪的限制與陷阱,開發出來的程式跑得比較慢就被使用者所詬病。MSDN網站改版後有更快嗎?並沒有呀!

在下剛開始接觸jsp時也覺得很好用,開發很快又有物件導向,但後來就發現效能比不上PHP,要調校也需要不少的知識背景。當然隨著jvm和CPU的進步這漸漸不是大問題,但是asp.net的出現,又讓我重新思考這個問題;尤其是asp.net對於細部調整的困難,抵消了快速開發的優勢。

另一個例子是AJAX的流行,不管是Yahoo! Mail還是Live Mail,帶給使用者的感覺只有慢!他們應該想想Gmail為什麼仍保持樸素的介面。AJAX應該用在讓使用者更便捷的地方,而不是追求炫而使用。

朋友說OS X每次改版都更快,因為我使用並沒那麼久並不清楚,但以他20年的電腦使用經驗可相信OS X絕不會更慢,這難道不是微軟應該反省的地方嗎?從asp.net到silverlight,我看到的並不是技術的進步而只有開發者追求新技術的迷思。李登輝說過一句話:民之所欲,皆在我心。這句話應該夾不死比較有資格說,紙鈔之門要再多想想呀!

又一個Vista的負面評價

這次是前微軟員工約耳老大說:Even the Office 2007 box has a learning curve
I've tested Office 2007 extensively, and find it a tolerable replacement for the previous version, although it's extremely frustrating every time I have to spend several minutes finding something that I knew exactly how to find in the previous version. Even though there's no reason to upgrade to Office 2007, if you're setting up a new system, it's just as good as the previous version, even a little better in some places. But Vista is another story.
...
Whenever anyone asks, my advice is to stay with Windows XP.剛好在下今天試了一下Office 2007測試版中的word,不知道是不是沒裝對應的字型,居然又發生頁面長度不一致的現象。而且我居然完全找不到menu的位置,約耳真是有耐心的人。我最受不了的是硬體需求提高許多,比起Office 2003速度實在差太多了,我個人不想用。至於Vista,我想等到明年出的CPU可能會夠快吧。

CIF Single Chip 萬用的Webcam驅動程式

兩年前買的奇美螢幕送的WebCam一時找不到Driver,型號是C351-A,網路上根本找不到,奇美討論區有人提出,而且客服寄給他的driver還不能用?!

底下有一行小字:Ezonics EZ307,果然有找到這機型,但是到Ezonics下載EZcamiii02.exe還是無法驅動。

再查一下,在XP出現的是CIF Single Chip,用這個關鍵字股溝後找到對岸同胞有相同的問題,使用崴瑞Orite SC-120的driver即可,所以下載sc120.zip就成功驅動。

忠言逆耳

看到商業周刊股市上沖下洗 小豪宅快要被壓垮了,就想起兩年前顏炳立就不建議買小套房,但由於建商炒作和股市一片做多,後來就很少人請顏總上節目。以台灣人的生活型態而言,小套房需求量並不大,顏總說的完全沒錯。錯的是他和鳥毅一樣說話太直。

公司裏喜歡拍馬屁,一點事情做半天假裝很忙,老闆卻很賞識的大有人在;上班效率好提出建議的人會被老闆認為意見太多又不加班,很快就被打入黑名單,忠言逆耳這句話一點都沒錯呀!

STL的next_permutation

忘了在哪個站看到,題目是:"把 1、2、3、4、5 的所有排列情形列出",格主說他當時不會用recursive,就用迴圈做出,留言裏有提到STLnext_permutation,今天抽空試了一下多年沒碰的STL。#include <iostream> #include <algorithm> using namespace std; int main() { int a[] = {1,2,3,4,5}; do { cout << a[0] << " " << a[1] << " " << a[2] << " " << a[3] << " " << a[4] << endl; }while (next_permutation(a,a+5)); return 0; }果然是很優雅的寫法,看來這演算法也可應用到棋盤的窮舉法呀!

注意:若要走遍所有的排序,next_permutation的輸入必須由小到大排序過,prev_permutation是由大到小排序。所以若使用亂序的陣列做列舉,記得要先排序。

Update:感謝破百的老兵指正。

VC6裏STL的Bug

看到VC6裡STL的超大BUG,馬上就用幾個版本的GCC試,幸好都沒問題。又看到這裏還有一堆VC6的問題,不知道修完了沒?

想起學C++時STL還不成熟,印象中VC4沒有STL,VC6放進STL時GCC2.x也有STL,同樣是bug一堆.... 算了,舊編譯器就丟了吧!只是VC6的使用者比較可憐,升級都有一堆問題,若是大型專案可能得花幾個月做編譯器升級的修改與檢查吧?

不知道為什麼最近都遇到C/C++的主題,前兩天看到一位網友算三角形面積的問題:#include <stdio.h>
#include <stdlib.h>
int main()
{
float height, width, result;
height=26.4;
width=15.3;
result = height*width/2;
printf("%f\n", result);
return 0;
}為什麼答案是201.960007呢?其實是電腦二進位與十進位轉換所產生的精度問題。若把float改成double就可以解決。#include <stdio.h>
#include <stdlib.h>
int main()
{
double height, width, result;
height=26.4;
width=15.3;
result = height*width/2;
printf("%f\n", result);
return 0;
}結果就是201.960000。

C99沒有overload

JeffHung的Blog看到石頭成的C++和動態語言的泛型有錯,我先想到同名異式應該算是多型(polymorphism)而不是overload,後來想想又不對。

石頭成舉的兩個例子,應該都是C++而不是C的寫法,我用gcc 3.4.6和gcc 4.3.0在多平台都不會過(gcc -std=c99 a.c),必須要用g++編譯。

我看這裏猜想石頭成應該是誤會gcc與g++的分別,g++確實會自動連結某些library,但是g++編譯時都當成C++而不是C,不會管副檔名;而gcc會判斷副檔名是.c還是.cc或.cpp套用不同的compiler,gcc -c a.for會呼叫fortran compiler。

The New ISO Standard for C (C9X)Open source development using C99C99 的 offsetof macro有介紹一些C99的特性,這裏有下載的連結。

I am sorry to say that:C語言從來都不是OOPL呀!

JRuby on Rails連SQLServer使用Active Record失敗

裝好JRuby,記得在PATH把JRuby設在前面:
export PATH=/usr/local/jruby/bin:$PATH
set PATH=c:\jruby\bin;%path%$gem -v
0.9.4ruby 1.8.6裏的gem是0.9.0,JRuby附的是0.9.4

確定版本沒錯就接著安裝rails
$gem install rails --include-dependencies
$gem install activerecord
$gem install activerecord-jdbc在我的mac上rails有問題,把 /usr/local/jruby/bin/rails 第一行
#!/usr/local/jruby/bin/jruby
改成
#!/usr/bin/env jruby

再下載SQLServer 2005 JDBC,選unix版,把解開的sqljdbc.jar放到 jruby/lib裏
接下來就可以開始工作,照iThome這個範例
rails bookmarker

剩下的參考JRuby on Rails 安裝方式改config/enviroment.rb和config/database.yml

我是用ruby版的檔案直接修改,發現date錯誤,照JRuby interact with MS SQL Server - JDBC and ActiveRecord-JDBC改jdbc_adapter.rb,結果又出現[#9330] Error connecting to a MSSqlServer database in a rails app.

所以,JRuby想用activerecord-jdbc連SQLServer確定目前不可行,我還是乖乖地用jsp或php寫吧。

忘了說,在XP上jruby連sqlserver的測試程式居然抓到亂碼,在Mac上跑反而正常。

SQL填空遊戲

聯合國網站被駭客入侵 正在修復這篇裏,居然出現"SQL填空遊戲"的名詞,查了一下才知道是這裏看來的,真的被記者打敗了。SQL Injection叫資料隱碼我都覺得不太合適了,若是我命名會叫SQL注射,胡百敬看到這新聞應該要驕傲吧!

踏到asp.net的地雷

為什麼沒事會去試Rails呢?因為我踏到asp.net的地雷!在Windows 2000上用ASP.Net 2.0寫個簡單到不行的維護介面遇到 Invalid Viewstate錯誤,找到:
Intermittent Invalid Viewstate Error in ASP.NET Web pages
無效的 Viewstate 間歇性的錯誤在 ASP . NET Web 網頁

官方的解決方法:1. 調整應用程式集區上設定。
2. 使用特定金鑰 machine.config 中, 以防止在每個處理序啟動時自動產生金鑰
3. 只張貼到相同的 ASPX 頁面
4. 關閉防火牆和防毒軟體這樣的解決方式,我實在難以接受。因為:
1. 已經調整成獨立集區,沒用。
2. 這有點白痴,我不想做。
3. 原來就是post back到同一頁。
4. 關閉防毒軟體請恕我做不到,Windows實在太容易中毒。
5. 以上訊息是針對asp.net 1.1,不見得適用asp.net 2.0。

我仔細想想,會不會是Ajax.asp.net造成的?還是Windows 2000 Server造成的,但另一台Windows 2000 Server掛一堆服務都沒事。所以,我打算找個Open Source的solution,至少出問題時我能trace server呀!

XP環境Ruby on Rails使用SQL Server中文亂碼

在Windows XP使用Ruby on Rails連接SQL Server中文會有問題,目前解決big5字元部份,網頁仍以UTF-8顯示。依照官方文件HowtoConnectToMicrosoftSQLServer安裝ADO及設置database.yml。rake migrate後連到SQL Server手動把varchar改成nvarchar。(直接改sqlserver_adapter.rb並沒用)照這裏所說,在environment.rb加上require 'win32ole'
WIN32OLE.codepage = WIN32OLE::CP_UTF8我並未考慮把頁面改成big5,那樣能夠使用的字元太少,其他的解決方式都太過麻煩。而無法顯示堃、粦、嬑等字應該是因為Windows的code page並不是UTF8而是CP950導致(因為可使用碁)。

這樣仍未完全解決問題,在production環境還是會掛,另一個方法是改用jRuby搭配JDBC,有空再試。

快速開發的雙面劍

今天VB超人馬上把他的KM元件升級,做出Firefox相容的viewer,鳥毅對他一向只支援IE頗有微詞,沒想到他半天就搞出AJAX版viewer,而且還是純手工打造,讓在下配服得五體投地。

不過,下午就發現因為他的後台元件也升級,鳥毅借用他元件開發的另一個程式又掛了!幸好只有一個user,鳥毅重新連結元件編譯後丟上server就好。

這件事告訴我們:強的人就是強呀!我在高手不需明說提過,“When a programmer is good, he is very, very good. But when he is bad, he is horrid.”
管理與規劃很重要。小公司就算了,若是某大醫院系統像這樣搞,鳥毅大概得遞辭呈了。(某大醫院的DBA不知走了沒)

我也想唸資工系

剛才看到William大師的錄取總分「有九成都是 50 分以上」的大學,才知道這兩天沒看新聞實在是錯了。

立德管理學院資訊工程系最低錄取總分為 20.36,稻江資科的 18.47 分。這種小數點下兩位的分數是如何計算出來的?不管怎麼說,就算是平均分數,鳥毅也有把握考上資工系,呵~
我承認,大學和研究所我都只考平均50分,但總分50分,OK啦!

其實大學生素質幾年前就開始爛了,前幾年和指導教授吃飯時,他就表示學生不再自動自發,有些人連抄作業都懶。記得多年前在某間大學唸書時,周和平教授說過,討海人要能解決問題,作弊不被抓到也OK。我想他的意思是,對於連作弊都懶的學生,大概也沒什麼好說的,就直接讓他1/2吧。

以後如果再有人說鳥毅不是本科系,嘿,我就去再唸個資工系封他們的嘴吧!

ROR的安全性

雖然只有照ROR教學試過一次,要客制化時就踏到鐵板,但若只是想寫個公司內部的DB編輯頁面,例如後台編輯等,ActiveRecord的ORM實在是快到不行呀!熟ROR的人應該比使用VS2005的精靈拉畫面還快吧!

剛才看到
以 ROR 打造網站,設計盲點所引發的惡搞危機
現在用 RoR 開發上線網站 OK 嗎?

看了以上這兩篇,還是只有滿滿的Orz呀!Twitter居然有這麼大的問題,另一個好奇的問題:Twitter時常當機,與ROR有關嗎?

『致富懶人包』讀後感

雖然用電腦十幾年,但仍然喜歡紙本的感覺,去博客來買這本書也算是回饋楚狂人分享。可惜太晚看他的書和blog,已經在回整前忍不住下單。

楚狂人說出別人不敢說的話,看『富爸爸,窮爸爸』和『鄭弘儀教你投資致富』都沒有提到的重點,全都在黃書楷這本書裏說出來。例如對理財專員的看法,對基金的說明等等,都是一般理財入門書絕不會提的。他的專業度真是沒話說,鳥毅也相信楚狂人沒有藏私,也不必藏私,他的判斷能力和直覺、習慣等絕不是別人學得來的。看了後就明白公司裏的菜籃族媽媽這幾年能賺不少錢是因為大多頭,等到像2000年時的大空頭再度來臨,就輪到她們呼天喊地。

小吐槽一下,楚狂人在自我介紹寫說:我只愛自由不愛財富,但是不巧的是財富決定自由,所以我只好追求財富。一般人沒有辦法每天投注那麼多的心力去分析、瞭解各種線型走勢。楚狂人除了本身從事金融業,更在字裏行間透露出以賺錢為樂,這絕對不是為了追求自由所能達到的境界。

因為『腦袋決定口袋,口袋決定自由』,所以鳥毅為了自由也不得不開始注意民生問題,但看了『致富懶人包』後,瞭解自己的屬性,也只能不要虧太多而已。每個人對生活的要求不同,要對付物價上漲財產縮水,當月光族宅男似乎也是種選擇呀:P

Vista的Ready Boost

這兩天裝了一台Vista測試機,因為只有512MB,跑起來有如神龜,真不是普通的慢。

昨天終於受不了,跑去買威剛 2G隨身碟 PD7,為什麼買這支呢?因為讀取速度高達200X!讀寫效能達30MB/Sec(R)、20MB/Sec(W)支援Windows Vista ReadyBoost功能比起創X的同級產品少了40%的價格。
在別家網拍都賣一千左右,這間特價還可刷卡,所以昨天晚上就殺到Nova買一支。今天插上usb選擇要用來系統加速後,一開始還顯示無法使用!按下重新偵測才可以使用。效果呢...感覺到變快一點,畢竟不是真的加RAM,但已經明顯感覺到差別,但還是遠慢於XP/2003。所以結論是:想要用Vista,RAM至少要1G,2G不嫌多。有錢要加速Vista,先買RAM,沒辦法加RAM時,可以試試Ready Boost。沒事不要用Vista。強制啟動ReadyBoost的方法:(出處)
Plug in the device.Open the Readyboost tab on the device properties.Select "Do not retest this device"Unplug the deviceOpen regedit (start->run->regedit)Expand - HKLM (Local Machine)\SOFTWARE\Microsoft\Windows NT\CurrentVersion\EMDgmtFind your device.Change Device Status to 2Change ReadSpeedKBs to 1000Change WriteSpeedKBs to 1000Plug in the device.Enable Readyboost!!!!插入外接硬碟某槽按右鍵選內容,選ReadyBoost將 停止再次測試 打勾 (我有特地開一槽4G)把外接碟拔掉執行 regedit打開上述位置找到要開RB的槽 (請先針對該碟輸入標籤會比較好找, 因為會有亂碼, 例如我的碟是 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\EMDMgmt\쬺쬺ReadyBoost_3231409381)將DeviceS…

馬路如虎口

今天早上坐公車上班時,經過某高職路口司機忽然按喇叭,接著馬上急踩煞車,在還來不及意會之際就碰的一聲,整台車震動一下。

司機連忙熄火衝下車,隔了約30秒回來請大家下車。下車後看到一位女學生倒在車前,看來是女學生衝太快,司機又搶黃燈。大型車輛的視線死角很多,行人要多小心。其實我嚇得說不出話,回想起大一時同學騎機車過彎加速,不幸罹難在校園旁的慘劇,也是搶快沒注意。

馬路如虎口,無論是駕駛或行人都要小心,尤其是行人更要多注意。

奇摩學聰明了

今天收到一封信,標題為:"帳號整合即將開始囉!"無名小站與Yahoo!奇摩將於2007年9月3日起開始進行帳號整合。重點在於帳號整合的方法終於對了,先登入奇摩,再登入無名,只要把無名的登入頁換成Yahoo domain,檢查Cookie就知道此無名帳號對應到哪個奇摩帳號~

但是case4的情況真的需要嗎?真是給他Orz。

好用的ImageMagick

以前想不花錢做圖檔轉換都得用GDLibTIFF、Ghostscript這些工具。
今天為了轉pdf,發現這幾年出現ImageMagick這個好東西,不止有command line tool,也有API供程式呼叫。

以前tiff轉pdf:
tiff2ps -2 -e -s IMAGE.tif >IMAGE.tif.eps
ps2pdf IMAGE.tif.eps IMAGE.pdf用ImageMagick tiff轉pdf:
convert IMAGE.tif IMAGE.pdf更重要的一點是ImageMagick預設直援多頁tiff,也可以縮圖、加浮水印等等,難怪現在用php寫程式的人都改用ImageMagick而不用GD

FreeBSD桌面輸給Linux

前幾天看到Leeym說Yahoo總部已經換成Linux桌面,剛又看到舊聞甲骨文取代紅帽 搶得雅虎Linux商機,原來連愛用FreeBSD的Yahoo都不用FreeBSD當桌面,實在是整個Orz。

不過我為了能夠好好跑Java,也是在NB裝Ubuntu而不是FreeBSD,看來只有像朋友Dustin這種高手,才有辦法用FreeBSD當桌面呀!

Update:原來Yahoo在2006年已經決定全面轉移到Linux,只是時間早晚問題。