2019年4月13日 星期六
2016年5月31日 星期二
行外人論 ePub 爲何很難普及
這篇文章放得有點久了,只是一直沒時間寫。
話說數週前 g0vsummit 會議剛結束。基本上我不知道這個會議在做什麼,以後可能跟它也沒什麼交集,而這篇文章的起點是我的一位朋友在 Twitter 上發表了幾則關於該會議的討論,或說是心得分享。這位朋友是數位出版的資深編輯 (現在好像官更大了),提到該會議裡的人都在抵制 pdf,然後他也提到 ePub 的種種好處,順道黑了一下 MS Word,認為公務體系都該學習 Markdown 以方便制定公文格式等等。
2013年3月20日 星期三
2012年6月14日 星期四
Computex 2012,咱ㄟ雙 A ....
最近無聊看了一下 Computex 的新聞 .... 老實說我已經很久沒去這類資訊展了,因為新技術大多不會在這種場合展出,而所謂的新產品 .... 坦白說越是大廠的作品,抄 Apple 就抄得越兇,乾脆等 Apple 的發表會就好了 ......... (常常比較有看頭的都是小公司的作品,唉)
2011年4月8日 星期五
全像素 (Hologram) 與 3D 立體影像
隨著 Avatar 電影的上映,被遺忘許久的 3D 影像議題又被炒熱了起來,不管是電影還是遊戲,只要跟影像有關的東西都要拿來跟 3D 扯上關係,像前一陣子台北市科教館就舉辦了兩個很有趣的展覽 -- 蒙娜麗莎會說話、"奇幻。不思議" 日本 3D 幻視藝術畫展,大玩各種 2D、3D 影像的應用,這篇就來談談簡單的 3D 影像原理。
2011年4月5日 星期二
McTiVia & Apple TV
McTiVia 是今年初開始嶄露頭角的一個週邊設備,由於名稱像 "Mac TV" 的諧音,加上 Apple 剛好也推出 Apple TV 2 代,所以這篇來談談這兩個裝置。(20110410 Update : 更改 McTiVia 的上市時間)
Apple TV 在 Apple 的產品史上,其實不算一個很成功的產品。在 2006 年發表後,次年三月開始販售,銷售狀況只能以慘淡來形容,原本 Apple 想以這個產品走進客廳,但很明顯地失敗了,最後就說這不過是 Apple 工程師在空暇之餘做的 "嗜好" (hobby)。
2011年1月2日 星期日
Office 物件的立體旋轉
我想很多人跟我一樣,常常要寫圖文並茂的文章或投影片,此時該文書軟體的繪圖工具就十分重要,因為不好的工具會大量降低生產力。以往我一致推崇 iWork,因為它不僅排版方便 [1],而且繪圖工具超讚 ! 我可以輕鬆地畫出很有質感的圖,但是有一個比較冷門的功能它沒有,就是物件的立體旋轉。
比如說我要畫出這樣的圖 :
圖中的雷射光並非是平行於桌面入射 [2],故畫極化板 (polarizer,那個像柵欄的東西) 時必須要以立體的角度去畫它,不然看起來就會怪怪的。以往都是以自己的空間觀念硬幹,花時間去畫就是了 (幸好小弟我的空間概念還不錯),類似下面兩張圖,都是花了不少時間去調整 :
比如說我要畫出這樣的圖 :
圖中的雷射光並非是平行於桌面入射 [2],故畫極化板 (polarizer,那個像柵欄的東西) 時必須要以立體的角度去畫它,不然看起來就會怪怪的。以往都是以自己的空間觀念硬幹,花時間去畫就是了 (幸好小弟我的空間概念還不錯),類似下面兩張圖,都是花了不少時間去調整 :
2010年10月24日 星期日
2010年9月23日 星期四
Mac 跟 Win 軟體生態圈的差異
之前在看最近一次的 Apple Special Event 的時候,看到上面這一幕,心裡有著不小的感觸,而這也是我很久以前就發現的一個現象。
這篇的重點並不是 App Store 造成多大的成功,而是不知道有沒有人發現,Win 上幾乎沒有小規模的軟體公司。比如說我經常逛一些軟體網站或是 PTT BBS,裡面不乏很多介紹軟體的文章,但是介紹的大多是免費軟體,甚至 Win user 動不動還問說 "有綠色的嗎 ?" 這表示 :
2010年7月12日 星期一
允許不同,才是自由
其實我想寫這類文章已經很久了,有多久呢 ? 從 M$ Office 2007 開始發售那時吧,距離現在至少三年了 (不過那時候根本還沒開始使用 Blog ... 應該是寫在 BBS 個人版上吧)。當時跟我同校的每個學生都收到一封通告信,說 M$ 2007 校園授權版已經買來了,大家可以自行下載或是去計中借軟體光碟。沒過幾天,我看到一個慣用 Linux 的學弟在他的個人版上寫說 "浪費公帑 ... 不知所云的東西 ...." 另外,說到反 M$ Office,不能不提到有名的自由軟體傳教士洪朝貴,有興趣的人可以看看他的網誌 :
我想說的是,自由軟體的精神到底是什麼 ? 很多人高喊著自由軟體的口號,但他們到底懂不懂自由軟體的歷史及中心思想 ? 就我所知,自由軟體的可貴就在於開放原始碼,任何人都可以取用並修改,全世界的人都可以一起維護,只是這樣而已,跟賣不賣錢、好不好用沒有直接的關係。事實上現今大部分的 GNU/Linux distro 都有商業團體支持,一般的公司行號可以付錢請他們幫忙維護,賣的是服務並非軟體本身。
但是我相當討厭一些自由軟體傳教士的心態,他們不見得一定使用 Linux 或 BSD,但是反 M$ Office 是一定要的。可是看來看去,論點都差不多,甚至可以說非常地可笑,我心裡想,或許你們這些後輩才是阻擾自由軟體發展的元兇。先從 Office 辦公軟體來看好了,這部分最有名的反對派就是洪朝貴 [1],我個人覺得他已經反到一種走火入魔的地步,只要是收費的商業公司都是該死就對了。可是讓我們來看看他們自由軟體聯盟最推崇的辦公室軟體 OpenOffice.org (簡稱 OOo) :
我想說的是,自由軟體的精神到底是什麼 ? 很多人高喊著自由軟體的口號,但他們到底懂不懂自由軟體的歷史及中心思想 ? 就我所知,自由軟體的可貴就在於開放原始碼,任何人都可以取用並修改,全世界的人都可以一起維護,只是這樣而已,跟賣不賣錢、好不好用沒有直接的關係。事實上現今大部分的 GNU/Linux distro 都有商業團體支持,一般的公司行號可以付錢請他們幫忙維護,賣的是服務並非軟體本身。
但是我相當討厭一些自由軟體傳教士的心態,他們不見得一定使用 Linux 或 BSD,但是反 M$ Office 是一定要的。可是看來看去,論點都差不多,甚至可以說非常地可笑,我心裡想,或許你們這些後輩才是阻擾自由軟體發展的元兇。先從 Office 辦公軟體來看好了,這部分最有名的反對派就是洪朝貴 [1],我個人覺得他已經反到一種走火入魔的地步,只要是收費的商業公司都是該死就對了。可是讓我們來看看他們自由軟體聯盟最推崇的辦公室軟體 OpenOffice.org (簡稱 OOo) :
2010年5月30日 星期日
Some Useful Accessories
這篇只是閒聊文 :P 我是一個 PC / Mac switcher,家裡有 PC 組裝桌機以及兩台 Mac,我不像某些使用者有很多五花八門的配備,比如說好的音響啦、耳機啦、不只一台的超大螢幕啦、多功能的昂貴鍵盤滑鼠啦、NAS 啦,記憶卡或 ATM 讀卡機啦,或是種種五花八門的 USB 小玩意 [1]。
這篇文章裡我想提一下我使用的兩個便宜又泛用的小玩意。
1. 多功能讀卡機 + 隨身碟
讀卡機百百種,我一直不願意買是因為我覺得讀卡機很醜,體積不小,還要牽一條線出來,又不是外接硬碟,搞這麼複雜幹嘛 ? 直到我看到我朋友買了一個跟隨身碟沒兩樣的讀卡機,才整個讓我改觀,該週末就去光華商場買了一支類似的產品回來,我找到的是下圖這個 :
很不錯吧,支援多種記憶卡,價格非常便宜,印象中是兩三百塊,使用到現在一兩年了還是非常滿意。現在越來越多類似的產品,價格更低,甚至一百塊有找,不過只能支援 SD 卡,我的 Sony 相機用 MS 卡,所以還是用 Rowa 這種多功能的比較好,反正沒貴多少。
2. 噴霧罐電腦清潔器
這是我在實驗室看到的,因為老闆要省錢所以用這個,讓我想到我的組裝桌機很久沒清灰塵了,風扇噪音越來越大,想當初我的桌機可是噪音很小的。打定主意後又跑光華去買了一罐,非常好買,隨便找一家堆滿電腦配件的店就有,而且很便宜,我花了 199 吧,大約像下圖 :
牌子是 Wind,其實看起來蠻像殺蟲劑的 XD 裡面是液化的高壓氣體,噴出來有一點臭 [2],建議邊開窗邊開電扇使用。噴的時候由於氣體吸熱氣化,會讓瓶子變得冰冰的,是正常現象。我把機殼內的風扇吹一吹,現在噪音小很多,相當推薦這類產品。不要再省錢用紙或布去擦了,浪費時間又效果不好,花個兩百塊可以用很久,甚至也能清別的東西,何樂而不為 ?
附註
1. OK.... 我知道 accessory 這個字不應該亂用,比如說螢幕、鍵盤、滑鼠都應該稱為 peripheral 才對,只是這裡把這些東西都比喻成額外的配備,沒有也不影響基本的使用,所以用 accessory 這個字。
2. 這類噴霧劑都會加入一些苦劑,這是安全措施,避免有小白亂噴在身上或嘴裡。
這篇文章裡我想提一下我使用的兩個便宜又泛用的小玩意。
1. 多功能讀卡機 + 隨身碟
讀卡機百百種,我一直不願意買是因為我覺得讀卡機很醜,體積不小,還要牽一條線出來,又不是外接硬碟,搞這麼複雜幹嘛 ? 直到我看到我朋友買了一個跟隨身碟沒兩樣的讀卡機,才整個讓我改觀,該週末就去光華商場買了一支類似的產品回來,我找到的是下圖這個 :
很不錯吧,支援多種記憶卡,價格非常便宜,印象中是兩三百塊,使用到現在一兩年了還是非常滿意。現在越來越多類似的產品,價格更低,甚至一百塊有找,不過只能支援 SD 卡,我的 Sony 相機用 MS 卡,所以還是用 Rowa 這種多功能的比較好,反正沒貴多少。
2. 噴霧罐電腦清潔器
這是我在實驗室看到的,因為老闆要省錢所以用這個,讓我想到我的組裝桌機很久沒清灰塵了,風扇噪音越來越大,想當初我的桌機可是噪音很小的。打定主意後又跑光華去買了一罐,非常好買,隨便找一家堆滿電腦配件的店就有,而且很便宜,我花了 199 吧,大約像下圖 :
牌子是 Wind,其實看起來蠻像殺蟲劑的 XD 裡面是液化的高壓氣體,噴出來有一點臭 [2],建議邊開窗邊開電扇使用。噴的時候由於氣體吸熱氣化,會讓瓶子變得冰冰的,是正常現象。我把機殼內的風扇吹一吹,現在噪音小很多,相當推薦這類產品。不要再省錢用紙或布去擦了,浪費時間又效果不好,花個兩百塊可以用很久,甚至也能清別的東西,何樂而不為 ?
附註
1. OK.... 我知道 accessory 這個字不應該亂用,比如說螢幕、鍵盤、滑鼠都應該稱為 peripheral 才對,只是這裡把這些東西都比喻成額外的配備,沒有也不影響基本的使用,所以用 accessory 這個字。
2. 這類噴霧劑都會加入一些苦劑,這是安全措施,避免有小白亂噴在身上或嘴裡。
2010年5月9日 星期日
The ABC's of Animation
這是我在網路上看到的一個短片,裡面把製作動畫的基礎講得很詳細,雖然我的英文聽力還不夠好,但旁白的發音還算標準,不是很難被聽懂 (好啦,我還是很多地方聽不懂 orz)。總而言之非常推薦這部影片 !
2010年4月17日 星期六
xPUD -- 超小隨身碟的新去處 !!
不知道有多少人有幫過別人修過電腦 ? 一般來說不是中毒就是無法開機對吧 ? 電腦症狀百百種,撇開硬體問題,最麻煩的應該就是進不了作業系統,因為什麼救援用的軟體都不能用,可是很多人不願意直接重灌,因為系統槽 (先預設是 C 槽) 可能有很多重要的東西 [1]。
要如何在不能進入作業系統的情況下存取硬碟內的檔案呢 ? 在命令列模式下打指令 ? 那太累了,會用這種方式的人不是太強就是太閒;用光碟修復系統期待能暫時回復 ? 別傻了,這一招大多沒有用,因為作業系統太複雜了,你怎麼知道壞在哪裡 ? 光碟的修復工具也沒這麼神。所以此時我會建議每個人能準備一個 Live OS,也就是安裝在其他儲存媒體的作業系統,像是 Live CD 或是 Live USB Drive。
Live OS 是怎麼運作的呢 ? 簡單的說就是作業系統完全存放在外接媒體,在開機時將所有必須的系統元件寫入記憶體中,之後只使用記憶體內的空間來運行整個系統,需要的系統元件就從外接媒體去讀取來用,因此就算沒有裝硬碟也無所謂。聽起來非常完美,但是有兩個明顯的問題 : 1. 記憶體要多,不然跑起來很痛苦;2. 外接媒體的資料讀取跟傳輸速度較慢,別說光碟機的讀取了,連 USB 2.0 傳輸速度都還差得遠,所以整體執行速度上會慢一點。
故我的建議是將 Live OS 只當救援工具用,因為它們到哪台電腦去都可以用,可攜性非常夠。在這裡我大力推薦使用 USB 隨身碟來做 Live USB,因為 : 1. 讀取較快 (你用過 Live CD 就知道等待光碟讀取有多痛苦);2. 可複寫,以後該 OS 有新版可以直接做一個新的;3. 現在隨身碟越做越大,已經退役的小隨身碟放著也是可惜,剛好拿來廢物利用。所以我推薦這個國人自製的 xPUD Live OS [2],非常輕巧,只有 50 多 MB,給我的 128 MB USB 隨身碟用剛剛好,而且界面很漂亮,非常有親和力,基本的上網及檔案瀏覽功能都做得很直覺 [3],接下來我來示範該怎麼做 Live USB Drive 及實際的試玩過程 :
1. 先介紹官網 : http://www.xpud.org/index.zh.html
2. 去下載頁面,選擇 "隨身碟" :
3. 下載 LiveUSB 安裝程式 (我是用 Windows 版的),插上隨身碟而且執行該程式 : (製作 Live USB Drive 會殺掉隨身碟內所有的資料,請先備份出來)
上圖內的 "隨身碟 Drive : " 應該會顯示現在插入的隨身碟的磁碟代號,只是我當初擷取這張圖的時候沒插上隨身碟而已。 :P
4. 做好了~ 貼上標籤不要跟別的隨身碟混在一起,只是手邊沒別的標籤紙 .... 這個傳統標籤貼紙很醜 ..... = =
5. 進 BIOS 選擇 USB Drive 開機,然後開始試用 :
首先可選擇語系,時間過太久就會自己登入,不過沒差,登入後再調整設定也可以。
6. 讀取隨身碟的開機元件,完全沒有華麗的介面 : (誰在意這個阿 :P)
7. 以英文界面登入,最下面是系統設定,左上角可以設定語系,我就調回繁體中文吧~ :P
8. 看看有什麼程式可以用,目前只有最基本的軟體,想安裝其他軟體可以到上圖的 "設定" 選單找 "Opt-Get" 以安裝其他程式,不過對我來說反正是救援工具,就算是平常的輕量使用,內建的軟體已經蠻夠用的了 (有看到終端機嗎 ? 對於某些 power Linux user 來說,有這個就夠了 XD)。
9. 瀏覽硬碟的檔案是最重要的,這點 xPUD 做得很棒,其他磁區就在 /mnt 目錄之下。不知道磁區代號哪個是哪個也無彷,因為那是 Linux 的稱法。點進去瞧一下就可以猜出來哪個是哪個了吧~ 測試 NTFS 磁區讀取無誤 !
D 槽 (父母用的電腦,所以沒什麼檔案 XD 那個 "Utility" 資料夾跟 recover iso 檔是我弄的 :P)
雖然是 Live OS,但是實測起來反應不慢喔,效能上可接受,跟以前用 Ubuntu Live CD 的壞印象完全不同。好啦~ 先示範到這裡,xPUD 的方便請自行體會吧。 :)
附註
1. 我知道有些人會說 C 槽本來就不該放個人資料,不然重灌時很麻煩,但是我得說,有很多設定檔不是那麼容易備份出來,或是工作時可能會臨時放一些經常存取的資料在桌面上,總之狀況太多了,當然我還是鼓勵儘量不要把重要資料放在 C 槽。小聲說..這時候就會知道 Unix like OS (像 Linux 或 Mac OSX) 的構想有多優秀....
2. 其實 Linux 的安裝光碟大多都可以當作 Live CD 來用,只是 xPUD 很特別,它的前身是 PUD Linux,一開始就是以 Live OS 為目標在做,所以一直都是非常輕量的系統,只是當時還沒有精簡到 128 MB 以內,所以我一直沒有使用。
3. 檔案瀏覽功能是很重要的一點 (廢話,要讀得到資料才能救阿 !),很多 Live Linux 預設不能讀取 NTFS 磁區 (幾年前的事,現在不知道....) 要靠輸入指令去掛載 NTFS 磁區,這樣很麻煩,可是 xPUD 不用做這種事情,這就是很大的誘因。想當初由於 Live Linux 要手動掛載 NTFS 磁區,連我都嫌麻煩,所以 Windows 版的 Live OS -- WinPE 就很流行,但是這東西似乎有版權問題 (M$ 哪可能忍受這種東西在市面上流通 ?! 原本好像是 M$ 授權給電腦公司的工程師維修系統時使用) 還是使用 Linux 比較安全,畢竟網路上加料的 WinPE 不知道塞了什麼東西。
要如何在不能進入作業系統的情況下存取硬碟內的檔案呢 ? 在命令列模式下打指令 ? 那太累了,會用這種方式的人不是太強就是太閒;用光碟修復系統期待能暫時回復 ? 別傻了,這一招大多沒有用,因為作業系統太複雜了,你怎麼知道壞在哪裡 ? 光碟的修復工具也沒這麼神。所以此時我會建議每個人能準備一個 Live OS,也就是安裝在其他儲存媒體的作業系統,像是 Live CD 或是 Live USB Drive。
Live OS 是怎麼運作的呢 ? 簡單的說就是作業系統完全存放在外接媒體,在開機時將所有必須的系統元件寫入記憶體中,之後只使用記憶體內的空間來運行整個系統,需要的系統元件就從外接媒體去讀取來用,因此就算沒有裝硬碟也無所謂。聽起來非常完美,但是有兩個明顯的問題 : 1. 記憶體要多,不然跑起來很痛苦;2. 外接媒體的資料讀取跟傳輸速度較慢,別說光碟機的讀取了,連 USB 2.0 傳輸速度都還差得遠,所以整體執行速度上會慢一點。
故我的建議是將 Live OS 只當救援工具用,因為它們到哪台電腦去都可以用,可攜性非常夠。在這裡我大力推薦使用 USB 隨身碟來做 Live USB,因為 : 1. 讀取較快 (你用過 Live CD 就知道等待光碟讀取有多痛苦);2. 可複寫,以後該 OS 有新版可以直接做一個新的;3. 現在隨身碟越做越大,已經退役的小隨身碟放著也是可惜,剛好拿來廢物利用。所以我推薦這個國人自製的 xPUD Live OS [2],非常輕巧,只有 50 多 MB,給我的 128 MB USB 隨身碟用剛剛好,而且界面很漂亮,非常有親和力,基本的上網及檔案瀏覽功能都做得很直覺 [3],接下來我來示範該怎麼做 Live USB Drive 及實際的試玩過程 :
1. 先介紹官網 : http://www.xpud.org/index.zh.html
2. 去下載頁面,選擇 "隨身碟" :
3. 下載 LiveUSB 安裝程式 (我是用 Windows 版的),插上隨身碟而且執行該程式 : (製作 Live USB Drive 會殺掉隨身碟內所有的資料,請先備份出來)
上圖內的 "隨身碟 Drive : " 應該會顯示現在插入的隨身碟的磁碟代號,只是我當初擷取這張圖的時候沒插上隨身碟而已。 :P
4. 做好了~ 貼上標籤不要跟別的隨身碟混在一起,只是手邊沒別的標籤紙 .... 這個傳統標籤貼紙很醜 ..... = =
5. 進 BIOS 選擇 USB Drive 開機,然後開始試用 :
首先可選擇語系,時間過太久就會自己登入,不過沒差,登入後再調整設定也可以。
6. 讀取隨身碟的開機元件,完全沒有華麗的介面 : (誰在意這個阿 :P)
7. 以英文界面登入,最下面是系統設定,左上角可以設定語系,我就調回繁體中文吧~ :P
8. 看看有什麼程式可以用,目前只有最基本的軟體,想安裝其他軟體可以到上圖的 "設定" 選單找 "Opt-Get" 以安裝其他程式,不過對我來說反正是救援工具,就算是平常的輕量使用,內建的軟體已經蠻夠用的了 (有看到終端機嗎 ? 對於某些 power Linux user 來說,有這個就夠了 XD)。
9. 瀏覽硬碟的檔案是最重要的,這點 xPUD 做得很棒,其他磁區就在 /mnt 目錄之下。不知道磁區代號哪個是哪個也無彷,因為那是 Linux 的稱法。點進去瞧一下就可以猜出來哪個是哪個了吧~ 測試 NTFS 磁區讀取無誤 !
C 槽 (測試用的電腦是安裝 Windows 7,這是其系統槽)
D 槽 (父母用的電腦,所以沒什麼檔案 XD 那個 "Utility" 資料夾跟 recover iso 檔是我弄的 :P)
雖然是 Live OS,但是實測起來反應不慢喔,效能上可接受,跟以前用 Ubuntu Live CD 的壞印象完全不同。好啦~ 先示範到這裡,xPUD 的方便請自行體會吧。 :)
附註
1. 我知道有些人會說 C 槽本來就不該放個人資料,不然重灌時很麻煩,但是我得說,有很多設定檔不是那麼容易備份出來,或是工作時可能會臨時放一些經常存取的資料在桌面上,總之狀況太多了,當然我還是鼓勵儘量不要把重要資料放在 C 槽。小聲說..這時候就會知道 Unix like OS (像 Linux 或 Mac OSX) 的構想有多優秀....
2. 其實 Linux 的安裝光碟大多都可以當作 Live CD 來用,只是 xPUD 很特別,它的前身是 PUD Linux,一開始就是以 Live OS 為目標在做,所以一直都是非常輕量的系統,只是當時還沒有精簡到 128 MB 以內,所以我一直沒有使用。
3. 檔案瀏覽功能是很重要的一點 (廢話,要讀得到資料才能救阿 !),很多 Live Linux 預設不能讀取 NTFS 磁區 (幾年前的事,現在不知道....) 要靠輸入指令去掛載 NTFS 磁區,這樣很麻煩,可是 xPUD 不用做這種事情,這就是很大的誘因。想當初由於 Live Linux 要手動掛載 NTFS 磁區,連我都嫌麻煩,所以 Windows 版的 Live OS -- WinPE 就很流行,但是這東西似乎有版權問題 (M$ 哪可能忍受這種東西在市面上流通 ?! 原本好像是 M$ 授權給電腦公司的工程師維修系統時使用) 還是使用 Linux 比較安全,畢竟網路上加料的 WinPE 不知道塞了什麼東西。
2010年4月10日 星期六
整理數位檔案的智慧
這是最近發生的一個大笑話,發生地點在實驗室,始作俑者是我老闆 YMC。我應該對不少的朋友說過,這個老闆非常難相處,我早已不想繼續在這實驗室待下去,其中有一個原因是他是一個標準剛愎自用的人,完全不能接受別人的任何意見。
這次的事件怎麼發生的呢 ? 就是他要我幫他掃描幾個光譜,然後把檔案存起來,也說了檔案的命名格式 :
現在還看不出盲點在哪裡 ? 頂多是覺得規定要 dat 很怪吧 ? 是因為牠只用 Origin,連 Win only 都不是,是 Origin only,上次學弟用 Excel 畫個預覽圖就被罵爆了...總之他不給別人任何自由度就是了。
測個幾張光譜之後,他要我測不同入射光強度的光譜 (也就是 power dependence 的實驗),我就想,前面測那麼多光譜,已經排到 04011006 了,我現在要做另一個主題的實驗,是不是應該把檔名分開比較清楚 ? 於是我就開了一個 power dependence 的資料夾來存,結果果然被罵了。
YMC : "你為什麼不照實驗室規定的來命名 ?"
Chris OS "明明就你規定的,還牽拖別人,說得好像公定標準一樣"
Chris : "不同主題的實驗為什麼要合在一起 ? 過幾天之後你還能記得哪個是哪個嗎 ?"
YMC : "至少你現在還記得吧 ? 你應該記在工作簿 ! 不是玩這種改檔名的 game !!!"
Ok....that's the point.... 我當時沒有反駁他,一來是我懶了,要講又要扯一堆;二來是他從未接受過我給的任何提議,講了根本沒有用,不是被酸、就是讓我更有機會爆發....好,我們來看看這問題出在哪裡 :
1. 工作簿會不會用完 ? 用完之後要放哪裡 ? 就以實驗室的記錄簿東一本西一本亂丟的情況來看,這間實驗室根本也不是管理多嚴謹的實驗室,舊工作簿很容易找不到,更別說過年大掃除時會弄丟多少東西。題外話,連光學元件都不整理好的實驗室主人,還能要求底下的人多有次序 ?
2. 數位資料最大的好處就是有可攜性,但是完全倚賴工作簿就是把這個優點抹煞掉,當你複製這個檔案去別的地方,不要說是家裡或是戶外,光是在凝態中心裡任何不存在這個工作簿的地方,就無法方便使用這個檔案,因為根本記不得哪個是哪個 (何況就算是在實驗室,也有可能找不到),一開始舉手之勞把資料夾分好、檔名取好不是就完全沒這種困擾 ? (另外,若要燒錄備份,工作簿不見了還是跟沒備份一樣)
數位資料沒有筆跡的問題,要分辨它們的身分完全要靠 index,我當學生到現在這麼久,沒有看過任何一個實驗室敢做 "將數位資料跟 index 分開" 的蠢事,始作俑者居然是該實驗室的 commander,而且毫無接納別人意見的雅量。
這篇的確是半篇抱怨文,但我只是想告訴各位,上位者不要目空一切,術業有專攻,有很多比你優秀的下屬;下屬要有獨立思考的能力,上位者腦袋有洞不要跟著牠一起流膿,如果真心想讓那個單位更好,應該要有膽子提出建言,除非像我覺得這地方已經沒救了。
一般來說剛愎自用的人會比較喜歡聽話的工具人,很不巧的我同事就是什麼都照著做的,即使也是常常出包,反正老闆不會認為自己出包.....但很抱歉,我真的無法成為工具人。
這次的事件怎麼發生的呢 ? 就是他要我幫他掃描幾個光譜,然後把檔案存起來,也說了檔案的命名格式 :
04011001.dat => (月)(日)(年)(編號).dat (副檔名,一定要 dat 不然牠會生氣)
現在還看不出盲點在哪裡 ? 頂多是覺得規定要 dat 很怪吧 ? 是因為牠只用 Origin,連 Win only 都不是,是 Origin only,上次學弟用 Excel 畫個預覽圖就被罵爆了...總之他不給別人任何自由度就是了。
測個幾張光譜之後,他要我測不同入射光強度的光譜 (也就是 power dependence 的實驗),我就想,前面測那麼多光譜,已經排到 04011006 了,我現在要做另一個主題的實驗,是不是應該把檔名分開比較清楚 ? 於是我就開了一個 power dependence 的資料夾來存,結果果然被罵了。
YMC : "你為什麼不照實驗室規定的來命名 ?"
Chris OS "明明就你規定的,還牽拖別人,說得好像公定標準一樣"
Chris : "不同主題的實驗為什麼要合在一起 ? 過幾天之後你還能記得哪個是哪個嗎 ?"
YMC : "至少你現在還記得吧 ? 你應該記在工作簿 ! 不是玩這種改檔名的 game !!!"
Ok....that's the point.... 我當時沒有反駁他,一來是我懶了,要講又要扯一堆;二來是他從未接受過我給的任何提議,講了根本沒有用,不是被酸、就是讓我更有機會爆發....好,我們來看看這問題出在哪裡 :
1. 工作簿會不會用完 ? 用完之後要放哪裡 ? 就以實驗室的記錄簿東一本西一本亂丟的情況來看,這間實驗室根本也不是管理多嚴謹的實驗室,舊工作簿很容易找不到,更別說過年大掃除時會弄丟多少東西。題外話,連光學元件都不整理好的實驗室主人,還能要求底下的人多有次序 ?
2. 數位資料最大的好處就是有可攜性,但是完全倚賴工作簿就是把這個優點抹煞掉,當你複製這個檔案去別的地方,不要說是家裡或是戶外,光是在凝態中心裡任何不存在這個工作簿的地方,就無法方便使用這個檔案,因為根本記不得哪個是哪個 (何況就算是在實驗室,也有可能找不到),一開始舉手之勞把資料夾分好、檔名取好不是就完全沒這種困擾 ? (另外,若要燒錄備份,工作簿不見了還是跟沒備份一樣)
數位資料沒有筆跡的問題,要分辨它們的身分完全要靠 index,我當學生到現在這麼久,沒有看過任何一個實驗室敢做 "將數位資料跟 index 分開" 的蠢事,始作俑者居然是該實驗室的 commander,而且毫無接納別人意見的雅量。
這篇的確是半篇抱怨文,但我只是想告訴各位,上位者不要目空一切,術業有專攻,有很多比你優秀的下屬;下屬要有獨立思考的能力,上位者腦袋有洞不要跟著牠一起流膿,如果真心想讓那個單位更好,應該要有膽子提出建言,除非像我覺得這地方已經沒救了。
一般來說剛愎自用的人會比較喜歡聽話的工具人,很不巧的我同事就是什麼都照著做的,即使也是常常出包,反正老闆不會認為自己出包.....但很抱歉,我真的無法成為工具人。
2010年3月14日 星期日
LabVIEW 的資料流
最近在實驗室寫一些很鳥的 LabVIEW 程式,遇到幾個愚蠢的問題,有幾個是因為 LabVIEW 程式語言 -- G language 的中心思想 -- 資料流的關係,這裡就來談談這種非常特別的程式邏輯。
LabVIEW 程式的寫法非常特別,在人機界面上放好一些控制元件,比如說按鈕或是文字輸入框,寫程式碼 (好吧...不算程式 "碼" XD) 的 Block diagram 裡就會出現對應那些控制元件的 vi 方塊,此時就會用到資料流的概念,舉一個例子好了,如下圖 :
上圖有三個控制項 (框框是 Event structure,不是此處的重點故先不提),資料流的觀念很簡單,就是整個平面的資料一起流動,而資料流動的方向就是程式執行的方向及順序,換句話說,上圖三個控制項是同時執行的。可是有點程式概念的人都知道,哪有什麼同時執行這種事情 ? (OK,我們先不提多執行緒平行處理這種深奧的玩意) 電腦執行程式就是程式碼一行一行地去跑阿 ! 果然上次聽 NI 的課程時,主講人就說,其實沒有人知道哪個先執行,電腦只是隨機抓一個先跑,也就是說還是有先後差別的 [1]。
那要怎麼決定程式執行的順序 ? 有好幾種方式,最基本的就是用牽線的方式,因為 Block diagram 裡所有元件都是左邊輸入,右邊輸出,如果像下圖這樣牽線...
表示資料從 Numeric 流至 Numeric 3,先執行的當然是 Numeric,這樣就決定了執行順序。另外就是使用 Stack structure :
這個像膠卷的框框代表執行的順序,上圖有 0 跟 1 兩頁,所以第 0 頁的 Numeric 執行完之後,要先執行第 1 頁的其他元件才會輪到 Numeric 3。
聽起來好像不錯,這種程式好寫,程式邏輯性也不錯,有什麼不足之處呢 ? 我立刻問一個問題,而且這還是幾乎每個程式都會遇到的 : 要怎麼把一個控制項的值輸出給自己 ? 這很常見吧 ! 你隨時有可能對某個輸入的數值或字串等等資料作一些處理,然後再輸出回原本的輸入框。但是在 LabVIEW 裡,以資料流的邏輯來看,這是很忌諱的事情,所以預設是辦不到的。試想,如果可以將一個控制項同時接上輸出跟輸入的線,這樣變成一個資料流的無限迴圈,程式怎麼判斷哪裡是起點 ? 這就是關鍵了。可是一般的程式語言哪有這種事情 ? 程式跑到該變數的那一行時,就去抓一塊記憶體區塊來用,之後不管對這變數幹嘛,輸入、輸出、修改,都取這一塊記憶體的資料就是了,再簡單不過的事情,在資料流的觀念下完全是罩門。
那要怎麼解決 ? LabVIEW 提供一種方法 -- 區域變數 (Local variable),也就是將該控制項複製一份,做成一個分身,這個分身就可當作輸出或輸入,如下圖 :
但是由於你複製了一份,所以會讓記憶體多一倍的耗損,這可是非常糟糕的,但是沒有辦法,這是資料流天生的限制。除了這個需求,Event structure 也增加區域變數的需要性 [2],如下圖 :
Event structure 可讓程式執行後,依照使用者的某些動作 (event) 產生反應,所以很明顯地,邏輯上各 event 間必須互相獨立,你不可以讓控制項的資料從一個 event 流到另一個 event,因為你不能判定哪一個 event 會先發生。至於將控制項放在 Event structure 外面也不行,因為你觸發 event 前修改的值就讀不到,到頭來不用區域變數都不行。
不過還是有例外,例如兩個不同的迴圈要同時執行,由於迴圈有不執行完就不停止的特性,所以看起來也必須用區域變數 :
可是此時可以用一種高級技術 Quene 來連接,就可以免於使用區域變數,但是很多人沒在使用這東西吧,這算是比較進階的技巧了,我個人也不是很想去深究就是 [3]....
LabVIEW 資料流的構想很好,圖形化的 Block diagram 使得寫程式變得簡單,有些天生的限制也沒什麼好奇怪的,就當作應有的代價也可以讓人接受。只是邏輯上還是跟一般程式語言有差,有時候要小心別犯邏輯錯誤,這種錯誤要 debug 可是很累人的 [4]。
附註
1. 這裡我就犯過一個愚蠢的邏輯錯誤,GPIB Write 跟 GPIB Read 絕不能放在同一個平面上,不然 Read 先執行了就會產生 I/O Error。
2. 我在之前的文章曾說過 Event structure 是非常重要的東西,居然到了第八版才出來,NI 到底在想什麼 ? 沒有這東西,LabVIEW G language 只配稱作一個執行得很慢的 script language 而已。
3. 坦白說這種糟糕的程式語言....我離開這個實驗室之後就不會再用了吧...
4. 邏輯錯誤比起語法錯誤更麻煩,因為程式開發工具沒辦法幫你找錯誤,要靠自己一點一點地檢查。
LabVIEW 程式的寫法非常特別,在人機界面上放好一些控制元件,比如說按鈕或是文字輸入框,寫程式碼 (好吧...不算程式 "碼" XD) 的 Block diagram 裡就會出現對應那些控制元件的 vi 方塊,此時就會用到資料流的概念,舉一個例子好了,如下圖 :
上圖有三個控制項 (框框是 Event structure,不是此處的重點故先不提),資料流的觀念很簡單,就是整個平面的資料一起流動,而資料流動的方向就是程式執行的方向及順序,換句話說,上圖三個控制項是同時執行的。可是有點程式概念的人都知道,哪有什麼同時執行這種事情 ? (OK,我們先不提多執行緒平行處理這種深奧的玩意) 電腦執行程式就是程式碼一行一行地去跑阿 ! 果然上次聽 NI 的課程時,主講人就說,其實沒有人知道哪個先執行,電腦只是隨機抓一個先跑,也就是說還是有先後差別的 [1]。
那要怎麼決定程式執行的順序 ? 有好幾種方式,最基本的就是用牽線的方式,因為 Block diagram 裡所有元件都是左邊輸入,右邊輸出,如果像下圖這樣牽線...
表示資料從 Numeric 流至 Numeric 3,先執行的當然是 Numeric,這樣就決定了執行順序。另外就是使用 Stack structure :
這個像膠卷的框框代表執行的順序,上圖有 0 跟 1 兩頁,所以第 0 頁的 Numeric 執行完之後,要先執行第 1 頁的其他元件才會輪到 Numeric 3。
聽起來好像不錯,這種程式好寫,程式邏輯性也不錯,有什麼不足之處呢 ? 我立刻問一個問題,而且這還是幾乎每個程式都會遇到的 : 要怎麼把一個控制項的值輸出給自己 ? 這很常見吧 ! 你隨時有可能對某個輸入的數值或字串等等資料作一些處理,然後再輸出回原本的輸入框。但是在 LabVIEW 裡,以資料流的邏輯來看,這是很忌諱的事情,所以預設是辦不到的。試想,如果可以將一個控制項同時接上輸出跟輸入的線,這樣變成一個資料流的無限迴圈,程式怎麼判斷哪裡是起點 ? 這就是關鍵了。可是一般的程式語言哪有這種事情 ? 程式跑到該變數的那一行時,就去抓一塊記憶體區塊來用,之後不管對這變數幹嘛,輸入、輸出、修改,都取這一塊記憶體的資料就是了,再簡單不過的事情,在資料流的觀念下完全是罩門。
那要怎麼解決 ? LabVIEW 提供一種方法 -- 區域變數 (Local variable),也就是將該控制項複製一份,做成一個分身,這個分身就可當作輸出或輸入,如下圖 :
但是由於你複製了一份,所以會讓記憶體多一倍的耗損,這可是非常糟糕的,但是沒有辦法,這是資料流天生的限制。除了這個需求,Event structure 也增加區域變數的需要性 [2],如下圖 :
Event structure 可讓程式執行後,依照使用者的某些動作 (event) 產生反應,所以很明顯地,邏輯上各 event 間必須互相獨立,你不可以讓控制項的資料從一個 event 流到另一個 event,因為你不能判定哪一個 event 會先發生。至於將控制項放在 Event structure 外面也不行,因為你觸發 event 前修改的值就讀不到,到頭來不用區域變數都不行。
不過還是有例外,例如兩個不同的迴圈要同時執行,由於迴圈有不執行完就不停止的特性,所以看起來也必須用區域變數 :
可是此時可以用一種高級技術 Quene 來連接,就可以免於使用區域變數,但是很多人沒在使用這東西吧,這算是比較進階的技巧了,我個人也不是很想去深究就是 [3]....
LabVIEW 資料流的構想很好,圖形化的 Block diagram 使得寫程式變得簡單,有些天生的限制也沒什麼好奇怪的,就當作應有的代價也可以讓人接受。只是邏輯上還是跟一般程式語言有差,有時候要小心別犯邏輯錯誤,這種錯誤要 debug 可是很累人的 [4]。
附註
1. 這裡我就犯過一個愚蠢的邏輯錯誤,GPIB Write 跟 GPIB Read 絕不能放在同一個平面上,不然 Read 先執行了就會產生 I/O Error。
2. 我在之前的文章曾說過 Event structure 是非常重要的東西,居然到了第八版才出來,NI 到底在想什麼 ? 沒有這東西,LabVIEW G language 只配稱作一個執行得很慢的 script language 而已。
3. 坦白說這種糟糕的程式語言....我離開這個實驗室之後就不會再用了吧...
4. 邏輯錯誤比起語法錯誤更麻煩,因為程式開發工具沒辦法幫你找錯誤,要靠自己一點一點地檢查。
2010年2月28日 星期日
源碼 3 路 ~ 自由軟體簡史
一兩個月前發現的有趣東西,一直忘記寫,上面擺的影片是第一集,其他集請去官網觀看。
這一系列的影片非常有趣,居然用蘋果動新聞的方式來做動畫,即使動作有點粗糙,不過依然值得讚許。之前看過幾部關於作業系統的歷史電影,其中關於自由軟體的一部經典作品就是 Revolution OS :
但是這部電影主要是以 Linux 的角度出發,裡面大多數演員甚至根本就是本人 (阿..這部電影也算記錄片啦..)。可是這讓我很好奇另一個叫鮮為人知的自由軟體 OS -- BSD 的歷史,由於跟 UNIX 的版權之爭搞了很久,所以沒有像 Linux 被推廣得那麼快 [1]。這一系列的影片終於提到裡面的一些經過,讓我這種沒時間去看這方面書或文章的人也能快速吸收,值得推薦 !
可惜的是這一系列影片似乎還有一集沒有完成,而這個網誌也快兩年沒有更新了.....sigh...
附註
1. 雖然 Linux 跟 BSD 都是自由軟體,但是兩者的授權方式可是完全不同的。前者是 GPL,這個授權方式要求使用程式碼的人必須要把程式碼公開出來,這是有法律的強制力;後者是 BSDL,這種授權方式沒有這個限制,你要封閉起來拿出去賣都可以,也因此 Mac OSX 採用 BSD 核心去改寫。
2010年2月8日 星期一
從 Sikuli Script 來看數位生活的演進
上個月底,網路上開始流傳一個新型的程式語言 Sikuli Script,以下是作者的網誌及程式官網 :
網誌 : http://blog.vgod.tw/2010/01/25/change-the-world/
官網 : http://groups.csail.mit.edu/uid/sikuli/index.shtml
可以看出這個作者是個在 MIT 念書的台灣人,這是一件非常振奮人心的事情,並不是因為他是台灣人這麼簡單,而是他做的這件事本身就很不得了,如他所說 "Change The World",豈是一句 "台灣之光" 了得 ? 全世界都需要這種人 [1]。
我個人不是資訊背景出身的,這種講古的文章也寫不了太多,只是藉著一些已知的資訊,發表一些自己的想法。數位生活是從什麼時候開始的 ? 其實嚴格說起來並沒有很久,至今十年前,還是很多人體會不到數位化的生活,一來是電腦不普及,二來是大多數的電子產品各自為政,沒有整合在一起。但是那已經很不容易了,因為已經有了個人電腦可以使用,做一些初步的工作。更早以前呢 ? 一開始的電腦非常龐大、非常昂貴、非常耗電,做的事情可能只是計算,所以稱 "computer" 為計算機一點也不為過,之後慢慢發展到大型伺服器,以電腦巨擘 IBM 最為有名。
可是如果這樣下去,電腦不會進入你我的家中。Apple 的兩位創始人看出了這一點,在車庫自製個人電腦,開啟了個人電腦的時代 [2]。可是電腦還是不好用,如果有人用過 DOS 的話,應該可以體會 -- 打指令的介面不合人性,大家不會把電腦當作生活的一部分。然後苦主 Xerox 的 GUI 被 Apple 抄走,M$ 再抄 Apple,圖形化介面的電腦時代就此來臨 [3],個人電腦也日漸普及。
下一個世代是網路時代,我個人覺得網路才是數位生活的開端,網路使得溝通更為方便,資源也能共享,人們有什麼東西想知道,第一件事可能是上網去找,而不是去圖書館找,這就是生活型態的改變。再配合上此時如數位相機的生活產品數位化,以及方便的 USB 傳輸介面逐漸普及,人們已經漸漸將電腦、網路及生活結合在一起,連有些老人家也在學習使用簡單的電腦技能,比如說收電子郵件或整理照片,至於智慧型手機也是類似的演化模式。
下一步呢 ? 主角還沒登場對不對 ? (哈) 從上面的發展可以看出演進的模式都差不多 :
簡單化
做不到的事 --> 只有少數人可以辦到 -------->>>> 大眾都能享受
有沒有發現 "簡單化" 的箭頭特別長 ? 不只是因為要塞比較多字的關係喔 ! (哈) 而是這一段路最難,最需要突破性的創造力。那現在我們缺乏什麼 ? 就是大家都希望電腦能幫自己做更多事,可是每個人的需求跟觀點都不一樣,等著別人做實在很不實際,為什麼自己的命運要被掌控在他人手中 ? 所以這就是科技進步的下一步 -- 如何讓大家都是創造者 ? 也就是程式開發的簡單化。想想資訊背景的人花了多少年在學習程式,程式的語法跟結構的確相當複雜,大學四年簡直只能學皮毛,更別說其他沒受過正統訓練的人了。可是這很重要嗎 ? 如果我只是想利用電腦完成我簡單的工作,而不是要開發什麼龐大的軟體 (像 Office 之類的),我沒必要學那麼多吧 ?
這就是重點所在,如何讓一般人也能輕易地寫出簡單的程式 ? 這其實很早以前就有人在做,比如說 Mac OS 裡的 Applescript,前身為 HyperTalk,以相對類似英文的語法使寫程式的門檻降低,即使這種語言的功能性稍嫌不足,但是做些簡單的自動化工作已經非常夠了 [4]。
什麼 ? 還不夠簡單 ? 沒問題 ! Apple 在 Mac OSX 10.4 發表了 Automator,藉著圖形化介面的輔助,讓使用者可以輕易製作工作流程,以操縱一些支援 Applescript 指令的程式,進一步簡化 Applescript 的撰寫過程 [5],Apple 對於人機介面的努力實在不得不佩服,連讓使用者簡化工作的程式開發工具都弄得有聲有色。
只有這樣嗎 ? 其實還有一家公司做得更好,只是他們公司發展取向的關係,使得他們不是廣為人知,就是 National Instrument (NI)。NI 是一家生產工業儀器的公司,在理工領域非常有名,除了生產儀器,NI 為了讓使用者可以控制這些儀器,開發了一個全新的程式語言 -- G 語言,程式撰寫介面完全是圖跟線,範例圖可以看我以前的文章。而程式開發工具為 Laboratory Virtual Inctrument Engineering Workbench,簡稱 LabVIEW。LabVIEW 在 1986 年推出第一版,到現在已經 8.x 版,功能越來越多,而且各作業系統平台都有。LabVIEW 的程式撰寫相當直覺,學習門檻較低,非常適合給非資訊科系的學生或職員使用,用來控制他們想操縱的儀器。
我前一陣子去參加 NI 辦的免費課程,我跟他們的行銷部門主管提到 "LabVIEW 最大的優點就是它最大的缺點",他說 "是阿",但沒有再深一步回答我或是問我細節,而我也懶得多提.....我想他應該是把這個問題當作耳邊風吧......沒錯,LabVIEW 明明就是這麼偉大的作品,為什麼鮮為人知 ? 原因就在於 LabVIEW 被 NI 定死在 Lab 裡,專心發展理工領域要的控制元件及功能,卻沒想過要推廣給更多處在 Lab 以外的老百姓,廣告裡都是那些圖表跟數學式,一般人看了就煩,也不會想去用,很多人更是有著根深蒂固的刻板印象,認為 LabVIEW 只能用在控制儀器,出了實驗室就沒有用了 (像我以前的老闆,他就以此理由不建議我學),但其實 LabVIEW 在 "功能上" 已經與其他程式語言相近 [6],但是可以用更少的精力去寫出一樣功能的程式 [7],若是 NI 願意做,LabVIEW 絕對有成為明日之星的特質,但發展了這麼多年策略都沒變....我看我這番話是不可能成真。
現在回到我們的主角 -- Sikuli Script,它利用程式的螢幕截圖來取代程式撰寫的一部分,有用又有趣,眼見即所得,讓程式的自動化更加容易,比起來 Automator 有些部分的程式說明還真的看不太懂....而且 Sikuli Script 還有個最特別的地方,就是它是以 JAVA 開發,這也代表它是跨平台的,不像 Applescript 是絕無可能移植到其它平台去的。看了作者的網誌,發現他是個 Mac user,這個程式語言是在 Mac OSX 環境下開發的,Windows 版本是後來才弄的,不過我必須要說,其實在 Mac OSX 底下的重要性不像 Windows 那麼高,因為至少還有代用品,但是在 Windows 裡就沒有了,最相近的頂多是 WinMacro :
可是還是沒有 Sikuli Script 好用,何況 Sikuli Script 才剛起步,以後會變得怎麼樣真令人期待。目前從名字 -- Sikuli "Script" 來看,似乎作者只初步預設它是自動化的腳本語言,但是以後會不會改名呢.....? 這一切都很難說.....嘿嘿嘿......
(謎之音) 都沒有人第一眼看到 Sikuli 會想到 Sugoi 嗎...............? 我好糟糕 orz..orz..orz..
附註
1. 可惜的是台灣媒體根本不知道這件事,國外的 Twitter 和作者的信箱都已經被灌爆了....同一時間有個台灣女孩拿了日本圍棋女流的某頭銜,報章媒體大幅報導...........我心想,是阿,這是台灣之光,不過我現在要討論的是世界之光。
2. 這方面的歷史故事可以看一部非常棒的電影 -- 矽谷海盜 Pirates.of.Silicon.Valley,把 Apple 跟 Microsoft 的過去講得很清楚。另外,不要理會台灣的譯名 "微軟英雄",不知道是不是台灣這個微軟王國的環境讓那個譯者腦袋被穿洞了 ?
3. 雖然很為 Xerox 感到惋惜,但也只能說他們的上級沒有遠見,看不出東西的價值。
4. Applescript 的前身 HyperTalk 在 1980 年就誕生了,那時還是古典 Mac OS 的年代,以非常類似英文語法的方式跟系統做緊密的結合。但也因為太像英文,被很多程式開發者嘲笑,甚至不屑使用這種語言。但我覺得如果作者 Bill Atkinson 當初就有 "簡單化程式的開發" 的遠見,即使這種語言本身有很多缺點,也是非常偉大,為這種思想的先驅者。
5. Automator 的確是 Applescript 的簡化版,但是裡面還是可以插入自製的 Applescript 語法喔 ! 這樣一來可以做的事情就更多,只是透過 Automator 寫出的工作流程執行速度會比較慢。
6. 為何我只說 "功能上" 呢 ? 因為 NI 只想在自動控制的領域經營,人機介面的美化做得真的很糟,每個 LabVIEW 程式寫出來都是差不多那副德性,頂多是控制鈕排得整不整齊而已。反正理工領域的教授或老闆大多都只希望程式 "能用就好",當然對於這個就不太重視了。
7. 事實上 LabVIEW 在功能上也還有很多改進空間,比如說 Event structure 這麼重要的東西居然第八版才出來.....#$%^&.....但只要不遇到它的弱項,LabVIEW 程式可以以更簡單的撰寫方式達到相同的效果。
2010年1月10日 星期日
LabVIEW 的 rem 及 [ ] 函數
上個月中退伍了之後在台大當助理,為了實驗室的需要,這一陣子都在學習 LabVIEW 這個程式開發工具 :
這是 NI (National Instruments) 公司所開發出來的一種程式開發工具,使用的程式語言是一種超高階的圖形化語言,又稱 G 語言。寫程式時分成兩個部分,一個是給使用者的操作面板,又稱人機介面 (下圖上);另一個是內部的程式碼,又稱程式方塊圖 (下圖下) : [1]
看起來好像很簡單,因為不用寫 (背) 程式碼,而是用圖形化的元件用線連在一起。LabVIEW 的程式是以 "資料流" 的方式在執行,也就是同一平面上所有元件的資料一起流動,而不像傳統程式是一行一行地執行程式碼,不過思維邏輯還是很類似的。
這篇要談 LabVIEW 裡兩個超爛的數學函數 rem 及 [ ]。每個程式語言都會內建一些數學函數供程式運算,如果是 MatLab 或 SciLab 這類數學軟體會內建更多。(我自己想寫的另外一個程式還必須要有積分跟微分,那真的不知道怎麼辦了) 畢竟程式很需要這些東西,很多程式根本就跟數學無關,程式碼裡還是一堆這種東西。
LabVIEW 雖然是工程用的程式開發工具,但是數學方面的函數還是不夠多,圖形化的運算元件就那麼幾個,還好有提供 "Formula Node",所以可以自己去寫,但是好像也沒比圖形元件多多少....(Formula Node 是一個方框,決定好輸入輸出後可以直接寫方程式運算,還能設條件,如下圖)
這樣就算了 !!!! 重點是還有寫得很爛的 !!!! 這就是這篇文章的主題 -- rem 及 [ ] 函數。
先說 [ ] 函數,有上過高中數學的人都應該知道這是高斯函數,意指它會取數值的整數部分,比如說 :
1.1 -> 1
2.9 -> 2
可是在 LabVIEW 裡的解釋是 "最接近的整數"。這沒什麼,它要這樣設定就這樣設,了不起變成四捨五入,這也都好解決。問題是它的進位原則很差勁,甚至我一開始以為根本沒有規律 !! "四捨五入" 跟 "最接近的整數" 的盲點在哪呢 ? 沒錯,就是 x.5 這種值 (x 屬於整數)。前者要進位,後者咧 ? 在中間怎麼辦 ? 我就想它至少會統一一下嘛 ! 結果很靠杯,它是在 x 為奇數時進位,偶數時不進位,例如 :
0.5 -> 0
1.5 -> 2
2.5 -> 2
3.5 -> 4
非常荒謬而且可笑,哪有這種數學函數 ?
另外一個就是 rem 函數,這是一個求餘數的函數。比如說 rem(51,3)=0,因為整除;rem(61,5)=1 因為餘數為 1,可是 rem 函數本身存在缺陷。就我的測試,rem 計算的方法跟半殘 [ ] 函數有關。比如說 :
rem(48,3)=0
rem(49,3)=1
rem(50,3)= -1
居然餘數會出現負值 !!!! 被除數或除數有一個是負值也就算了,偏偏都不是。原因在哪呢? 我懷疑 rem 計算的方式是 :
rem(a,b) = a - b*[a/b]
[a/b] 就是將 a/b 的浮點數值取詭異的 [ ] 函數運算。懂了嗎 ? 只要 a/b 的第一位小數點大於等於 5,就會讓 rem 函數給出負值 !!!! (噢不,如果是只有一位小數,而且是 5,還要看整數部分是奇數還偶數咧) 夠腦殘了吧 !!
我想了很久,終於想到讓 rem 及 [ ] 函數正常工作的方法 :
rem : 以 X1 與 X2 相除的餘數為例,輸出為 Y
if X1 * X2 >=0
Y = X1 - X2*[X1/X2] if rem(X1,X2)=0
X1 - X2*[X1/X2+0.5] else
動手腳就在那個加減 0.5,讓 X1/X2 一定會取到整數,整除的情況則不去動它。如此一來 rem 函數就修正好了,把它做成單一包裝的 *.vi 檔來用,以後就會比較方便。
唔,這種事情還是少發生的好,不然程式寫到一半發現 LabVIEW 自己出包真的會很想砸電腦....這個故事也告訴我們,做事要謹慎.....
附註
1. 這兩張例圖是用搜尋隨便找的,並不是同一個程式。
這是 NI (National Instruments) 公司所開發出來的一種程式開發工具,使用的程式語言是一種超高階的圖形化語言,又稱 G 語言。寫程式時分成兩個部分,一個是給使用者的操作面板,又稱人機介面 (下圖上);另一個是內部的程式碼,又稱程式方塊圖 (下圖下) : [1]
看起來好像很簡單,因為不用寫 (背) 程式碼,而是用圖形化的元件用線連在一起。LabVIEW 的程式是以 "資料流" 的方式在執行,也就是同一平面上所有元件的資料一起流動,而不像傳統程式是一行一行地執行程式碼,不過思維邏輯還是很類似的。
這篇要談 LabVIEW 裡兩個超爛的數學函數 rem 及 [ ]。每個程式語言都會內建一些數學函數供程式運算,如果是 MatLab 或 SciLab 這類數學軟體會內建更多。(我自己想寫的另外一個程式還必須要有積分跟微分,那真的不知道怎麼辦了) 畢竟程式很需要這些東西,很多程式根本就跟數學無關,程式碼裡還是一堆這種東西。
LabVIEW 雖然是工程用的程式開發工具,但是數學方面的函數還是不夠多,圖形化的運算元件就那麼幾個,還好有提供 "Formula Node",所以可以自己去寫,但是好像也沒比圖形元件多多少....(Formula Node 是一個方框,決定好輸入輸出後可以直接寫方程式運算,還能設條件,如下圖)
這樣就算了 !!!! 重點是還有寫得很爛的 !!!! 這就是這篇文章的主題 -- rem 及 [ ] 函數。
先說 [ ] 函數,有上過高中數學的人都應該知道這是高斯函數,意指它會取數值的整數部分,比如說 :
1.1 -> 1
2.9 -> 2
可是在 LabVIEW 裡的解釋是 "最接近的整數"。這沒什麼,它要這樣設定就這樣設,了不起變成四捨五入,這也都好解決。問題是它的進位原則很差勁,甚至我一開始以為根本沒有規律 !! "四捨五入" 跟 "最接近的整數" 的盲點在哪呢 ? 沒錯,就是 x.5 這種值 (x 屬於整數)。前者要進位,後者咧 ? 在中間怎麼辦 ? 我就想它至少會統一一下嘛 ! 結果很靠杯,它是在 x 為奇數時進位,偶數時不進位,例如 :
0.5 -> 0
1.5 -> 2
2.5 -> 2
3.5 -> 4
非常荒謬而且可笑,哪有這種數學函數 ?
另外一個就是 rem 函數,這是一個求餘數的函數。比如說 rem(51,3)=0,因為整除;rem(61,5)=1 因為餘數為 1,可是 rem 函數本身存在缺陷。就我的測試,rem 計算的方法跟半殘 [ ] 函數有關。比如說 :
rem(48,3)=0
rem(49,3)=1
rem(50,3)= -1
居然餘數會出現負值 !!!! 被除數或除數有一個是負值也就算了,偏偏都不是。原因在哪呢? 我懷疑 rem 計算的方式是 :
rem(a,b) = a - b*[a/b]
[a/b] 就是將 a/b 的浮點數值取詭異的 [ ] 函數運算。懂了嗎 ? 只要 a/b 的第一位小數點大於等於 5,就會讓 rem 函數給出負值 !!!! (噢不,如果是只有一位小數,而且是 5,還要看整數部分是奇數還偶數咧) 夠腦殘了吧 !!
我想了很久,終於想到讓 rem 及 [ ] 函數正常工作的方法 :
rem : 以 X1 與 X2 相除的餘數為例,輸出為 Y
if X1 * X2 >=0
Y = X1 - X2*[X1/X2] if rem(X1,X2)=0
X1 - X2*[X1/X2-0.5] else
else Y = X1 - X2*[X1/X2] if rem(X1,X2)=0
X1 - X2*[X1/X2+0.5] else
動手腳就在那個加減 0.5,讓 X1/X2 一定會取到整數,整除的情況則不去動它。如此一來 rem 函數就修正好了,把它做成單一包裝的 *.vi 檔來用,以後就會比較方便。
唔,這種事情還是少發生的好,不然程式寫到一半發現 LabVIEW 自己出包真的會很想砸電腦....這個故事也告訴我們,做事要謹慎.....
附註
1. 這兩張例圖是用搜尋隨便找的,並不是同一個程式。
2009年12月21日 星期一
第六感驚人的潛力 Parnav Mistry
相當精彩的影片,將現實社會與虛擬電腦世界結合,科學界就要有這種人阿 !
連同上次的山寨電子白板,TED 總是會邀請天才的科技人來演講。這些人早已跳出 OS 及硬體的限制,單純展示創新的科技應用。也許用的只是廉價或已經面世很久的產品或零件,但憑著創意得到意想不到的結果,並無私的推廣。
TED 官網 http://www.ted.com/
比起來很多企業的眼光就太狹隘了,眼裡只有錢。不過我並不打算批評這些科技業的業者,因為他們又不是慈善企業,太過天馬行空的創新既花錢又不見得能收到成果,投資報酬率太低,就連蘋果也不敢玩得太大,既使我覺得蘋果公司已經是很有創意的公司。
所以我才想一輩子待在學術機構。 :)
2009年12月16日 星期三
MSI AE2010 AIO PC
很可惜沒有開箱照 XD 這也不是我的風格http://emall.msi.com.tw/index.php?mod=products&dop=productDetail&keyId=73
上週末被父母叫去三峽家裡 (我平常住在台北外婆家),幫他們裝電腦,上面連結的 MSI AE2010 是我上次去資展買的 (資展便宜好幾千塊 @@..),一共買了兩台,因為我的房間也要一台電腦,不然每次過去那裡都要自己帶筆電實在很累。
回到這台 All-In-One (AIO) PC,雖然 CPU 僅僅是小筆電的等級,但是顯卡不錯,RAM 也還算夠用。此外,I/O 界面很不錯,有 eSATA 和四合一讀卡機,更棒的是有 VGA-in ! [1] 最後,OS 是 Windows 7 ! (雖然是 32-bit..) 我一直很想用用看這個新系統,就想我也很想用用看雪豹一樣。試用了兩天覺得還不錯,沒有什麼不相容的地方,或許是我用的軟體大多是免費或自由軟體吧,更新不錯快,系統內建的軟體也比以前實用多了,軟體界面上還有了一致性 [2]。目前只裝了幾個有立即用到的軟體,其他軟體就期待我的後續報導吧 XD。像這種品牌電腦,一般都會有該品牌的特製軟體,這方面也是我要自己去玩玩看的,上次只玩過備份軟體,可以很輕易的做 ghost。
好了,優點講完該講缺點了 = =
首先那個備份軟體,明明就是不管怎麼做備份都會需要兩片 DVD 光碟片去燒,結果內附的備份專用空白片只給一片,這是要我們自己去準備喔? [3] 還有,其他公司的品牌電腦都是直接給還原光碟的,哪有要我們自己燒的 ?! 如果我都沒在看光碟的內容,等到系統爛了要重灌不是就哭哭了 ? 關於這點我去找了某些使用者的網誌,MSI 的其他型號是送兩片空白光碟....= =####
第二點是關於試用版軟體,我真的很討厭這類軟體,乾脆不要給不是更好 ? 你他媽 Norton,不想殺掉你都不行 ! 本來給父母用的那一台還想留著用,結果動不動就跳出警示視窗,但是又不是遇到什麼怪網頁或怪檔案,只是提醒視窗而已。機歪的是還常常跳出註冊提醒視窗,阿不是已經說要試用了 ? 而且視窗還關不掉咧,X 是反白的,硬要我們填姓名跟 email,最後受不了就砍掉了。真是的,軟體做不好就算了,連做人都不會。
第三是硬體方面,其實是個很可笑的缺點,就是他內附的鍵盤。它面積特別小,類似 Mac 的小鍵盤,但是功能上弱多了。小鍵盤最重要的就是 Fn 鍵的硬體設定,組合得好才是成功,這鍵盤的 Fn 居然只跟 F1~F12 有連結,那是只是一些多媒體控制的功能,缺少的 page up/down、Home、End 根本不方便用。還有最囧的一點,就是鍵盤上的注音 ㄡ 跟 ㄥ 印反!!! 我無話可說了 = = ....。我自己還能忍受,我父母如果跟我抱怨,我就立刻給他們換一般鍵盤!!
最後一點可說是有好有壞,這是關於 Windows 7 本身的特性 。當初 Win 7 面世之前就有傳聞說 Win 7 預設安裝會精簡掉很多東西,要的話之後自己去微軟官網下載,我不知道這的傳聞的真假..但我的 Win 7 裡的確很多東西都沒有,比如說 gadget 面板 SideBoard,甚至連中文輸入法都沒有。 = = .... 不知道是不是 MSI 對我這版 Win 7 Home Premium 的處理,我真的找不到中文輸入法,最後火大自己裝 Yahoo! 奇魔輸入法解決 [4]。總結起來,其實這應該是個好特性,因為 Win 裡太多用不到的廢物軟體了,比如說我從不用 gadget 的,連 Mac 裡的 DashBoard widget 我都不用。
平心而論,雖然有貶有褒,但我還是要說我很滿意這款電腦。雖然有些小缺點,但是該有的東西都有了,而且一萬多的價格,要買組裝電腦組到一樣的配備,根本價錢不會差到哪裡去,何況還有 OS 的錢。省下的空間跟時間就不用提了....對於不常擴充電腦設備的人是很好的選擇 ,這裡有一篇文章正好跟我想法相同 :
http://taiwan.cnet.com/itmonth2009/0,2003032438,20143047,00.htm
現在要買的就是一個好的 3.5" 硬碟外接盒,一定要利用到 eSATA 接頭 ! 然後就開始 P2P 地獄了~ XDXDXDXD
附註 :
1. 之前 iMac 死都不支援 Video-in,空著大螢幕不給其他主機用,現在也只有最高階 iMac 27" 有支援。
2. 何謂一致性 ? 就是都變得像 Office 2007 的界面一樣,但是大多數第三方軟體並沒有跟進。我想可能是有很多開發者不喜歡 Office 2007 的界面吧,事實上我也是。
3. 事實上也沒有什麼備份專用的空白片啦,空白光碟還不都一樣,只差沒有 MSI 的光碟貼紙在上面而已,只是既然要附,就附完整的配備嘛 !
4. 我也先裝過新酷音,但是支援度很差,IE8 內的網頁不能輸入中文,官網上也沒有寫相容 Win 7..算了至少沒騙人,功能少跟面板外觀很醜就先不提了。
訂閱:
文章 (Atom)


















