星期六, 11月 03, 2007

Hibernate on OSX

As on Tiger, we have already had the hibernate functionality. Apple call it "Safe Sleep". Some people might use "Deep Sleep" for it.

Safe Sleep is to use /var/vm/sleepimage for saving data in the RAM to disk (by default). And once you lost your power of Mac, Tiger will read the sleepimage and restore your working stage. But in Energy Saver, there's no option about this Safe Sleep functionality. Many people said that you can input root#pmset hibernatemode 3/0  to switch safe sleep on/off. What if I want to safe sleep then power off ( just like Linux and MS' system doing ) ? The answer is unclear. Until....

I saw the article about new options of Leopard's Hibernate and a "Hibernate Bear".
Now I understand, the Evil Apple just hide the power manager's functions again.
So, if you aren't interested in HOW TO CUSTOMIZE YOUR SLEEP MODE. Just try the Bear above first. The bear support 3 sleep modes. That may satisfy your need.
##CONTINUE##
For further tuning about energy saving, I tried to man pmset
It said that 
  • hibernate mode=0: This mode is to perform normal sleep. NOT safe sleep.
  • hibernate mode=1: This mode is to save data to sleepimage then shutdown.
  • hibernate mode=2: This mode is a SMART one. It will perform normal sleep when the battery is full. And when battery level is under "Hibernate Free Ratio"( Integer percentage ),  it will change to perform safe sleep. 
  • hibernate mode=3: This mode is to save data to sleepimage then sleep. If you lost power supply, OS X will use sleepimage to recover working state.
Because I use Macbook pro, and the energy saving is important for a notebook. So, I tuned as follows.pmset -b hibernatemode 2 hibernatefreeratio 5 
pmset -c hibernatemode 0

星期五, 11月 02, 2007

Parallels on OS X

最近試了將Parallels裝在Leopard上。有些心得與設定事項要注意。
  1. 因為Parallels有自動的post install,所以最好是用正版的Winxp安裝。
  2. 即使是用繁中的原版光碟安裝系統,在控制台/語言的設定中,卻是英文。這會造成一些亂碼與錯誤。比如 當你想要安裝程式時,卻出現了 NSIS Error 的錯誤。那麼請先去改成中文語系設定。
  3. Virtual Machine的設定從「Shared networking」改成「Bridged Ethernet」。速度會比較快一些。
  4. 聽說 usb的外接device會使得parallels不穩,但firewire就無此問題。
其它的小問題,等遇到了再來記錄~

星期四, 11月 01, 2007

TCP connections in OSX

隨著P2P分享軟體的增加,愈來愈多人使用這類軟體,使得本來的TCP連線數不夠用。
雖然調過Winxp上的TCP連線數,但是OS X上的要怎調整呢?

其實很簡單。因為OS X底層是採用FreeBSD的改良,所以調整系統參數的方法與FreeBSD相同。
使用sysctl這指令即可。
相關的文件可參考
Mobile01 【分享教學】使用sysctl 調校你的OSX (之一) 之二

星期四, 10月 25, 2007

Gmail in email clients

Today, I saw the news of Gmail's IMAP support.
IMAP( Internet Message Access Protocol ) can let you communicate with gmail's server and you can make changes with your mails as mails on gmail's server are applied changes immediately.

I've given up mail clients( outlook, thunderbird ... etc. ) many years, since their inconvenient occurs as I switch among 2 or more computers. Such as downloading your email with POP3, unsynchronized email as you downloaded them.

Hence, webmail service seems the only way to solve this problem. And gmail is indeed an outstanding mail service today. Now, may IMAP combine mail client application with webmail service perfectly ?

In my experience, IMAP with lots of mails will lower its performance and users have to wait "few seconds".

星期六, 10月 13, 2007

Textmate的543

Well, seems textmate is the best code editor about keyword/code completion.
Although there are so many hotkey you need to remember before you can perform a MAGIC completion of all kinds of programming language, it still is worth a try.
##CONTINUE##
IF you are a vim user or your mother-tone is a CJK-language, you MIGHT need the following plugins of textmate.
There are so many "programmers" using VIM or something else. And some key bindings are very important, especially vim's hjkl moving mode. But native textmate doesn't support this.

Hence, the "vimate" was born and it is still under developing. The most recent update is on Sep. 07'.

Another important thing is the width of the CJK words are 2-byte and obviously textmate treat them as 1-byte font. 
A good news is textmate 2.0 will support utf8. But just like the slogan of apple's new OS - ONLY IN LEOPARD ! Yes, textmate 2.0 is only in leopard. Damn...

Before apple ships leopard, we have another solution: make a new font with 1-byte-width CJK word. Thanks to Japanese-hetima to provide this idea and shinbang to provide his own new font.

星期日, 10月 07, 2007

itunes的istore帳號

因為萬惡的itunes增加了album photo的功能,itunes 7更是以3D的方式展現類似點唱機的感覺。所以大家就開始補完專輯的封面嘍~
而想用itunes自動抓取istore的專輯封面,就得要先有istore的帳號。雖然有高手寫了plugin抓網頁的圖片,不過最近又被擋了。看來,還是要有個正統的帳號才是王道。( 當然,也可以用google picture找圖,省了一堆麻煩 )
拿到帳號的方法,就我所知有下列方式
  1. 有美國的帳戶:正式的傳統方法,當然可開通istore帳號
  2. 有台灣的visa卡:先用visa開通paypal的帳號,然後利用paypal去申請istore
  3. 利用apple gift card的redeem code:這是apple行銷的手法–推出gift card,上面印有可儲值的密碼,所以可以用這串東東申請帳號。
  4. 利用....apple 網頁錯亂法 冏... 這是有緣人才能用的方法.
先說明(2),聽說用「中國信託」的visa卡,在paypal上註明是US,填上US地址;如此一來,在istore認證paypal帳號時,就能過關。
再來是前陣子很流行的(3),對岸的同胞也有滿多人用這類方法。(果然中國人都愛貪小便宜...) 簡言之,就是在網上的某些網站提供一批redeem code,而如何申請...可以google或參考下列討論。
http://blog.pixnet.net/ayhaadam/post/2629899
http://forums.macrumors.com/showthread.php?p=2022710
http://www.elesson.com.cn/modules/ipboard/index.php?s=&showtopic=38602&st=0
http://www.mobile01.com/topicdetail.php?f=177&t=228626&last=1907422
http://www.wretch.cc/blog/singho&article_id=12808440

最後,是神祕的(4)。因為在找(3)的時候,發現有人說「其實apple改了機制,能在網頁選取none的付費方式」(樣本數1),所以也許點個10、20次申請帳號就能通過?? 不不,我的經驗是,在redeem code填寫了過期的code,然後在失望的心情下,到處找能用的redeem code;最後要死心用paypal註冊之時,熊熊發現付費那格多了none ! 就降子,申請到了帳號。這帳號沒有credit card、沒有redeem code送的點數,算是個空帳號。這樣子的流程,讓我覺得應該是在之前填入redeem code時,apple雖然告知了過期,但是回去首頁申請帳號時,卻把它當做是使用redeem code型態的申請帳號。因此,雖然沒有能使用的redeem code,但是還是把帳號搞到手了。

星期二, 9月 25, 2007

試用OS X Tiger 10.4.10

話說,對岸同胞加入了mac os x crack之後,mac的資源更多了。
還有很多附帶著序號的軟體........看來即使沒有傳說中的嘿嘿嘿,也能擁有一堆軟體啦~
前幾天翻到了10.4.10的installer dvd,unhuck v1.3版的。
這安裝片解決了我失敗了n次的更新( 10.4.9 ->10.4.10 );雖然可以直接從iwork的package中更改版本限制,使iwork 08能安裝在10.4.9。但是,ilife可就不一定能這麼搞了。還是一口氣裝到Tiger終極版吧!
目前的系統運作穩定(在Asus U5f上),但是音效只能用Internal Speaker(接上SPDIF無效)、無線網路沒有穩定的解決方案(Intel 3945abg)。扣除硬體驅動的問題,這系統還不錯用。尤其是美工、程式界面,Vista輸太多了阿! 哈哈
經過了近一週的惡搞後,OS X之路,不再是像盲人摸黑了;至少看得到腳下的路嘍

待用過iwork 08與ilife 08之後,再來分享心得 !

星期一, 9月 17, 2007

OS X Tiger 10.4.9 on Asus U5f

Since I'd like to buy a Mac PowerBook Pro, I need to trial OS X first.
This is why I install OS X on U5f.

I think that the disk utility in installation DVD of OS X is a little strange....
When you press Partition button, it will split all partitions in the schedule. EVEN if you didn't make any GOD DAMN change ! So, I lost my WinXP and Ubuntu partitions and also data inside.
That's talk about my experience...

At beginning, I tried to use OS X's installation DVD to make a partition for OS X. ( just as Multibooting said). I failed 3 times ( even if after crashing my WinXP and Ubuntu ).Maybe because of my unfamiliar on OS X.
This make me so upset...Orz

Today, I made some changes.
  1. Install WinXP.
  2. Use fdisk to split disk space for OS X ( instead of OS X's disk utility ). as 蘋果的 X86 遊記
  3. Only erase the partition and format it as a Mac OS Extended (Journaled). as 5.5 Step Five: Show Time!
  4. Choose universal kernel image v.3( May 7, 07' ) and Intel GMA 950 for U5f.
  5. After installation, boot loader will detect the WinXP information and arrange a choice for WinXP.
  6. Now, I have a WinXP and OS X Tiger in Asus U5f.
But I don't have animations on apple dock right now.
Maybe, the display driver doesn't install well.
I'll report more information after tuning up Asus U5f.

星期六, 9月 08, 2007

firefox with red word - "menuitem"

Recently, I updated my firefox and found there's a red word "menuitem" below my status bar.
After googling this problem, this is because of typo in Java SE 6.
##CONTINUE##
A simple solution is
  1. GO TO your mozilla firefox installation folder
  2. Find chrome.manifest in extensions/{CAFEEFAC-0016-0000-0000-ABCDEFFEDCBA}
  3. Change chrome/locale/zh_TW/ffjcext/ to chrome/locale/zh-TW/ffjcext/
  4. Restart your firefox.
Now you'll find the god damn "menuitem" is disappeared !

星期二, 9月 04, 2007

Bango's的腦力激發

說話....Yesterday was not my day..
早上殺到了mtk才發現手機的sim卡被停了,然後想當然而,整天都處於失聯狀態。
傍晚趕去Bangos時,從內湖到台大..雨勢愈來愈大,而且俺還在Bangos那裡繞了10分鐘左右....
還好,在我變成落湯雞前,到了目的地。

Bangos果然熱鬧,直到關店之前,都是人聲鼎沸;而在這氣氛下,我們的滺(魷)大姐更是如魚得水,一路high到底。在我之前的其他社團經驗中,這真的是第一次遇到,有這麼好的互動。
不只是打屁聊天,在笑聲中,把社務規劃好,擬定草案。不知不覺間,敲定了迎新的事務,而轉向出遊的討論、琴社的發表會…等隨想。這樣的經驗,讓我想要以後都在這樣的聚會中度過;不過,我也很怕肥阿 Orz.... 對偟伶、易聰、建仁也有了更多的認識,真棒。下次再一起聊到關店吧 XD

雖然知道開會時,最好的方法就是大家互相激發,產生各種 idea;但是,又能有幾次這樣的經歷呢?我想,重點在於開會時的氣氛、每個人多分享對於議題的想法。不需要全面、創新、完美的點子,在你一言我一語之中,最終的定案,自然就能塑型。

如此快樂的時光,讓我這吝於寫文章的人,都想記錄且分享 !

星期六, 8月 25, 2007

如果讓我重做一次研究生

今天在p2看到這篇轉錄文,雖然不知道被轉了多少次,
但裡面還是有些值得參考的地方。
節錄幾個重點
  • 進入製造知識的階段 重視問題取向的安排
  • 每天、每週或每個月給自己一個挑戰,要每隔一段時間就給 自己一個挑戰,挑戰一個你做不到的東西,你不一定要求自己每次都能順利克服那個挑戰 ,但是要努力去嘗試
  • 形成你的知識樹 掌握工具
  • 每天要留個三十分鐘、一小時思考,想一想你看到了什麼?學習跳到比你所看到的東西更 高一點的層次去思考
##CONTINUE##

如果讓我重做一次研究生


王汎森 院士   中央研究院歷史語言研究所


這個題目我非常喜歡,因為這個題目,對大家多少都有實際的幫助。如果下次我必須再
登台演講,我覺得這個題目還可以再發揮一兩次。我是台大歷史研究所畢業的,所以我的
碩士是在台大歷史研究所,我的博士是在美國普林斯頓大學取得的。我想在座的各位有碩
士、有博士,因此我以這兩個階段為主,把我的經驗呈現給各位。

我從來不認為我是位有成就的學者,我也必須跟各位坦白,我為了要來做這場演講,在
所裡碰到剛從美國讀完博士回來的同事,因為他們剛離開博士生的階段,比較有一些自己
較獨特的想法,我就問他:「如果你講這個問題,準備要貢獻什麼?」結合了他們的意見
,共同醞釀了今天的演講內容,因此這裡面不全是我一個人的觀點。雖然我的碩士論文和
博士論文都出版了,但不表示我就是一個成功的研究生,因為我也總還有其他方面仍是懵
懵懂懂。我的碩士論文是二十年前時報出版公司出版的,我的博士論文是英國劍橋大學出
版的。你說有特別好嗎?我不敢亂說。我今天只是綜合一些經驗,提供大家參考。


一、研究生與大學生的區別

首先跟大家說明一下研究生和大學生的區別。大學生基本上是來接受學問、接受知識的
,然而不管是對於碩士時期或是博士時期的研究而言,都應該準備要開始製造新的知識,
我們在美國得到博士學位時都會領到看不懂的畢業證書,在一個偶然的機會下,我問了一
位懂拉丁文的人,上面的內容為何?他告訴我:「裡頭寫的是恭喜你對人類的知識有所創 新,因此授予你這個學位。」在中國原本並沒有博碩士的學歷,但是在西方他們原來的用
意是,恭賀你已經對人類普遍的知識有所創新,這個創新或大或小,都是對於普遍的知識
有所貢獻。這個創新不會因為你做本土與否而有所不同,所以第一個我們必須要很用心、
很深刻的思考,大學生和研究生是不同的。



(一)選擇自己的問題取向,學會創新

你一旦是研究生,你就已經進入另一個階段,不只是要完全樂在其中,更要從而接受各
種有趣的知識,進入製造知識的階段,也就是說你的論文應該有所創新。由接受知識到創
造知識,是身為一個研究生最大的特色,不僅如此,還要體認自己不再是個容器,等著老
師把某些東西倒在茶杯裡,而是要開始逐步發展和開發自己。做為研究生不再是對於各種
新奇的課照單全收,而是要重視問題取向的安排,就是在碩士或博士的階段裡面,所有的
精力、所有修課以及讀的書裡面都應該要有一個關注的焦點,而不能像大學那般漫無目標
。大學生時代是因為你要盡量開創自己接受任何東西,但是到了碩士生和博士生,有一個
最終的目的,就是要完成論文,那篇論文是你個人所有武功的總集合,所以這時候必須要
有個問題取向的學習。


(二)嘗試跨領域研究,主動學習

提出一個重要的問題,跨越一個重要的領域,將決定你未來的成敗。我也在台大和清華
教了十幾年的課,我常常跟學生講,選對一個領域和選對一個問題是成敗的關鍵,而你自
己本身必須是帶著問題來探究無限的學問世界,因為你不再像大學時代一樣氾濫無所歸。
所以這段時間內,必須選定一個有興趣與關注的主題為出發點,來探究這些知識,產生有
機的循環。由於你是自發性的對這個問題產生好奇和興趣,所以你的態度和大學部的學生
是截然不同的,你慢慢從被動的接受者變成是一個主動的探索者,並學會悠游在這學術的
領域。

我舉一個例子,我們的中央研究院院長李遠哲先生,得了諾貝爾獎。他曾經在中研院的
週報寫過幾篇文章,在他的言論集裡面,或許各位也可以看到,他反覆提到他的故事。他
是因為讀了一個叫做馬亨教授的教科書而去美國柏克萊大學唸書,去了以後才發現,這個
老師只給他一張支票,跟他說你要花錢你盡量用,但是從來不教他任何東西。可是隔壁那
個教授,老師教很多,而且每天學生都是跟著老師學習。他有一次就跟那個老師抱怨:「
那你為什麼不教我點東西呢?」那個老師就說:「如果我知道結果,那我要你來這邊唸書
做什麼?我就是因為不知道,所以要我們共同探索一個問題、一個未知的領域。」他說其
實這兩種教法都有用處,但是他自己從這個什麼都不教他,永遠碰到他只問他「有沒有什
麼新發現」的老師身上,得到很大的成長。所以這兩方面都各自蘊含深層的道理,沒有所
謂的好壞,但是最好的方式就是將這兩個方式結合起來。我為什麼講這個故事呢?就是強
調在這個階段,學習是一種「self-help」,並且是在老師的引導下學習「self-help」,
而不能再像大學時代般,都是純粹用聽的,這個階段的學習要基於對研究問題的好奇和興
趣,要帶著一顆熱忱的心來探索這個領域。

然而研究生另外一個重要的階段就是 Learn how to learn,不只是學習而已,而是學
習如何學習,不再是要去買一件很漂亮的衣服,而是要學習拿起那一根針,學會繡出一件
漂亮的衣服,慢慢學習把目標放在一個標準上,而這一個標準就是你將來要完成碩士或博
士論文。如果你到西方一流的大學去讀書,你會覺得我這一篇論文可能要和全世界做同一
件問題的人相比較。我想即使在台灣也應該要有這樣的心情,你的標準不能單單只是放在
旁邊幾個人而已,而應該是要放在領域的普遍人裡面。

你這篇文章要有新的東西,才算達到的標準,也才符合到我們剛剛講到那張拉丁文的博
士證書上面所講的,有所貢獻與創新。




二、一個老師怎麼訓練研究生

第二個,身為老師你要怎麼訓練研究生。我認為人文科學和社會科學的訓練,哪怕是自
然科學的訓練,到研究生階段應該更像師徒制,所以來自個人和老師、個人和同儕間密切
的互動和學習是非常重要的,跟大學部坐在那邊單純聽課,聽完就走人是不一樣的,相較
之下你的生活應該要和你所追求的知識與解答相結合,並且你往後的生活應該或多或少都
和這個探索有相關。

(一)善用與老師的夥伴關係,不斷 Research

我常說英文research這個字非常有意義,search是尋找,而research是再尋找,所以每
個人都要research,不斷的一遍一遍再尋找,並進而使你的生活和學習成為一體。中國近
代兵學大師蔣百里在他的兵學書中曾說:「生活條件要跟戰鬥條件一致,近代歐洲凡生活
與戰鬥條件一致者強,凡生活與戰鬥條件不一致者弱。」我就是藉由這個來說明研究生的
生活,你的生活條件與你的戰鬥條件要一致,你的生活是跟著老師與同學共同成長的,當
中你所聽到的每一句話,都可能帶給你無限的啟發。

回想當時我在美國唸書的研究生生活,只要隨便在樓梯口碰到任何一個人,他都有辦法
幫忙解答你語言上的困難,不管是英文、拉丁文、德文、希臘文……等。所以能幫助解決
問題的不單只是你的老師,還包括所有同學以及學習團體。你的學習是跟生活合在一起的
。當我看到有學生呈現被動或是懈怠的時候,我就會用毛澤東的「革命不是請客吃飯!」
來跟他講:「作研究生不是請客吃飯。」 

(二)藉由大量閱讀和老師提點,進入研究領域

怎樣進入一個領域最好,我個人覺得只有兩條路,其中一條就是讓他不停的唸書、不停
的報告,這是進入一個陌生的領域最快,又最方便的方法,到最後不知不覺學生就會知道
這個領域有些什麼,我們在不停唸書的時候常常可能會沉溺在細節裡不能自拔,進而失去
全景,導致見樹不見林,或是被那幾句英文困住,而忘記全局在講什麼。藉由學生的報告
,老師可以講述或是釐清其中的精華內容,經由老師幾句提點,就會慢慢打通任督二脈,
逐漸發展一種自發學習的能力,同時也知道碰到問題可以看哪些東西。就像是我在美國唸
書的時候,我修過一些我完全沒有背景知識的國家的歷史,所以我就不停的唸書、不停的
逼著自己吸收,而老師也只是不停的開書目,運用這樣的方式慢慢訓練,有一天我不再研
究它時,我發現自己仍然有自我生產及蓄發的能力,因為我知道這個學問大概是什麼樣的
輪廓,碰到問題也有能力可以去查詢相關的資料。所以努力讓自己的學習產生自發的延展
性是很重要的。

(三)循序漸進地練習論文寫作

到了碩士或博士最重要的一件事,是完成一篇學位論文,而不管是碩士或博士論文,其
規模都遠比你從小學以來所受的教育、所要寫的東西都還要長得多,雖然我不知道教育方
面的論文情況是如何,但是史學的論文都要寫二、三十萬字,不然就是十幾二十萬字。寫
這麼大的一個篇幅,如何才能有條不紊、條理清楚,並把整體架構組織得通暢可讀?首先
,必須要從一千字、五千字、一萬字循序漸進的訓練,先從少的慢慢寫成多的,而且要在
很短的時間內訓練到可以從一萬字寫到十萬字。這麼大規模的論文誰都寫得出來,問題是
寫得好不好,因為這麼大規模的寫作,有這麼許多的註腳,還要注意首尾相映,使論述一
體成型,而不是散落一地的銅錢;是一間大禮堂,而不是一間小小分割的閣樓。為了完成
一個大的、完整的、有機的架構模型,必須要從小規模的篇幅慢慢練習,這是一個最有效
的辦法。

因為受電腦的影響,我發現很多學生寫文章能力都大幅下降。寫論文時很重要的一點是
,文筆一定要清楚,不要花俏、不必漂亮,「清楚」是最高指導原則,經過慢慢練習會使
你的文筆跟思考產生一致的連貫性。我常跟學生講不必寫的花俏,不必展現你散文的才能
,因為這是學術論文,所以關鍵在於要寫得非常清楚,如果有好的文筆當然更棒,但那是
可遇不可求的,文彩像個人的生命一樣,英文叫style,style本身就像個人一樣帶有一點
點天生。因此最重要的還是把內容陳述清楚,從一萬字到最後十萬字的東西,都要架構井
然、論述清楚、文筆清晰。

我在唸書的時候,有一位歐洲史、英國史的大師Lawrence Stone,他目前已經過世了,
曾經有一本書訪問十位最了不起的史學家,我記得他在訪問中說了一句非常吸引人注意的
話,他說他英文文筆相當好,所以他一輩子沒有被退過稿。因此文筆清楚或是文筆好,對
於將來文章可被接受的程度有舉足輕重的地位。內容非常重要,有好的表達工具更是具有
加分的作用,但是這裡不是講究漂亮的style,而是論述清楚。






三、研究生如何訓練自己

(一)嘗試接受挑戰,勇於克服

研究生如何訓練自己?就是每天、每週或每個月給自己一個挑戰,要每隔一段時間就給 自己一個挑戰,挑戰一個你做不到的東西,你不一定要求自己每次都能順利克服那個挑戰 ,但是要努力去嘗試。我在我求學的生涯中,碰到太多聰明但卻一無所成的人,因為他們
很容易困在自己的障礙裡面,舉例來說,我在普林斯頓大學碰到一個很聰明的人,他就是
沒辦法克服他給自己的挑戰,他就總是東看西看,雖然我也有這個毛病,可是我會定期給
我自己一個挑戰,例如:我會告訴自己,在某一個期限內,無論如何一定要把這三行字改
掉,或是這個禮拜一定要把這篇草稿寫完,雖然我仍然常常寫不完,但是有這個挑戰跟沒
這個挑戰是不一樣的,因為我挑戰三次總會完成一次,完成一次就夠了,就足以表示克服
了自己,如果覺得每一個禮拜的挑戰,可行性太低,可以把時間延長為一個月的挑戰,去
挑戰原來的你,不一定能做到的事情。不過也要切記,碩士生是剛開始進入這一個領域的
新手,如果一開始問題太小,或是問題大到不能控制,都會造成以後研究的困難。 

(二)論文的寫作是個訓練過程,不能苛求完成精典之作

各位要記得我以前的老師所說的一句話:「碩士跟博士是一個訓練的過程,碩士跟博士
不是寫經典之作的過程。」我看過很多人,包括我的親戚朋友們,他之所以沒有辦法好好
的完成碩士論文,或是博士論文,就是因為他把它當成在寫經典之作的過程,雖然事實上
,很多人一生最好的作品就是碩士論文或博士論文,因為之後的時間很難再有三年或六年
的時間,沉浸在一個主題裡反覆的耕耘,當你做教授的時候,像我今天被行政纏身,你不
再有充裕的時間好好探究一個問題,尤其做教授還要指導學生、上課,因此非常的忙碌,
所以他一生最集中又精華的時間,當然就是他寫博士、或是碩士論文的時候,而那一本成
為他一生中最重要的著作也就一點都不奇怪了。

但不一定要刻意強求,要有這是一個訓練過程的信念,應該清楚知道從哪裡開始,也要
知道從哪裡放手,不要無限的追下去。當然我不是否認這個過程的重要性,只是要調整自
己的心態,把論文的完成當成一個目標,不要成為是一種的心理障礙或是心理負擔。這方
面有太多的例子了,我在普林斯頓大學唸書的時候,那邊舊書攤有一位非常博學多文的舊
書店老闆,我常常讚嘆的對他說:「你為什麼不要在大學做教授。」他說:「因為那篇博
士論文沒有寫完。」原因在於他把那個博士論文當成要寫一本經典,那當然永遠寫不完。
如果真能寫成經典那是最好,就像美麗新境界那部電影的男主角JohnNash一樣,一生最大
的貢獻就是博士那二十幾頁的論文,不過切記不要把那個當作是目標,因為那是自然而然
形成的,應該要堅定的告訴自己,所要完成的是一份結構嚴謹、論述清楚與言之有物的論
文,不要一開始就期待它是經典之作。如果你期待它是經典之作,你可能會變成我所看到
的那位舊書攤的老闆,至於我為什麼知道他有那麼多學問,是因為那時候我在找一本書,
但它並沒有在舊書店裡面,不過他告訴我:「還有很多本都跟他不相上下。」後來我對那
個領域稍稍懂了之後,證明確實如他所建議的那般。一個舊書店的老闆精熟每一本書,可
是他就是永遠無法完成,他夢幻般的學位論文,因為他不知道要在哪裡放手,這一切都只
成為空談。

(三)論文的正式寫作

1. 學習有所取捨

到了寫論文的時候,要能取也要能捨,因為現在資訊爆炸,可以看的書太多,所以一定
要建構一個屬於自己的知識樹,首先,要有一棵自己的知識樹,才能在那棵樹掛相關的東
西,但千萬不要不斷的掛不相關的東西,而且要慢慢的捨掉一些掛不上去的東西,再隨著
你的問題跟關心的領域,讓這棵知識樹有主幹和枝葉。然而這棵知識樹要如何形成?第一
步你必須對所關心的領域中,有用的書籍或是資料非常熟悉。

2. 形成你的知識樹

我昨天還請教林毓生院士,他今年已經七十幾歲了,我告訴他我今天要來作演講,就問
他:「你如果講這個題目你要怎麼講?」他說:「只有一點,就是那重要的五、六本書要
讀好幾遍。」因為林毓生先生是海耶克,還有幾位近代思想大師在芝加哥大學的學生,他
們受的訓練中很重要的一部份是精讀原典。這句話很有道理,雖然你不可能只讀那幾本重
要的書,但是那五、六本書將逐漸形成你知識樹的主幹,此後的東西要掛在上面,都可以
參照這一個架構,然後把不相干的東西暫放一邊。生也有涯,知也無涯,你不可能讀遍天
下所有的好書,所以要學習取捨,了解自己無法看遍所有有興趣的書,而且一但看遍所有
有興趣的書,很可能就會落得普林斯頓街上的那位舊書店的老闆一般,因為閱讀太多不是
自己所關心的領域的知識,它對於你來說只是一地的散錢。

3. 掌握工具

在這個階段一定要掌握語文與合適的工具。要有一個外語可以非常流暢的閱讀,要有另
外一個語文至少可以看得懂文章的標題,能學更多當然更好,但是至少要有一個語文,不
管是英文、日文、法文……等,一定要有一個語文能夠非常流暢的閱讀相關書籍,這是起
碼的前提。一旦這個工具沒有了,你的視野就會因此大受限制,因為語文就如同是一扇天
窗,沒有這個天窗你這房間就封閉住了。為什麼你要看得懂標題?因為這樣才不會有重要
的文章而你不知道,如果你連標題都看不懂,你就不知道如何找人來幫你或是自己查相關
的資料。其他的工具,不管是統計或是其他的任何工具,你也一定要多掌握,因為你將來
沒有時間再把這樣的工具學會。

4. 突破學科間的界線

應該要把跨學科的學習當作是一件很重要的事,但是跨學科涉及到的東西必須要對你這
棵知識樹有助益,要學會到別的領域稍微偷打幾槍,到別的領域去攝取一些概念,對於本
身關心的問題產生另一種不同的啟發,可是不要氾濫無所歸。為什麼要去偷打那幾槍?近
幾十年來,人們發現不管是科學或人文,最有創新的部份是發生在學科交會的地方。為什
麼會如此?因為我們現在的所有學科大部分都在西方十九世紀形成的,而中國再把它轉借
過來。十九世紀形成這些知識學科的劃分的時候,很多都帶有那個時代的思想跟學術背景
,比如說,中研院的李院長的專長就是物理化學,他之所以得諾貝爾獎就是他在物理和化
學的交界處做工作。像諾貝爾經濟獎,這二十年來所頒的獎,如果在傳統的經濟學獎來看
就是旁門走道,古典經濟學豈會有這些東西,甚至心理學家也得諾貝爾經濟獎,連John
Nash這位數學家也得諾貝爾經濟獎,為什麼?因為他們都在學科的交界上,學科跟學科、
平台跟平台的交界之處有所突破。在平台本身、在學科原本最核心的地方已經search太多
次了,因此不一定能有很大的創新,所以為什麼跨領域學習是一件很重要的事情。

常常一篇碩士論文或博士論文最重要、最關鍵的,是那一個統攝性的重要概念,而通常
你在本學科裡面抓不到,是因為你已經泡在這個學科裡面太久了,你已經拿著手電筒在這
個小倉庫裡面照來照去照太久了,而忘了還有別的東西可以更好解釋你這些材料的現象,
不過這些東西可遇而不可求。John Nash這一位數學家為什麼會得諾貝爾數學獎?為什麼
他在賽局理論的博士論文,會在數十年之後得諾貝爾經濟獎?因為他在大學時代上經濟學
導論的課,所以他認為數學可以用在經濟方面來思考,而這個東西在一開始,他也沒有想
到會有這麼大的用處。他是在數學和經濟學的知識交界之處做突破。有時候在經濟學這一
個部分沒有大關係,在數學的這一個部分也沒有大關係,不過兩個加在一起,火花就會蹦
出來。

5. 論文題目要有延展性

對一個碩士生或博士生來說,如果選錯了題目,就是失敗,題目選對了,還有百分之七
十勝利的機會。這個問題值得研一、博一的學生好好思考。你的第一年其實就是要花在這
上面,你要不斷的跟老師商量尋找一個有意義、有延展性的問題,而且不要太難。我在國
科會當過人文處長,當我離開的時候,每次就有七千件申請案,就有一萬四千個袋子,就
要送給一萬四千個教授審查。我當然不可能看那麼多,可是我有個重要的任務,就是要看
申訴。有些申訴者認為:「我的研究計畫很好,我的著作很好,所以我來申訴。」申訴通
過的大概只有百分之十,那麼我的責任就是在百分之九十未通過的案子正式判決前,再拿
來看一看。有幾個印象最深常常被拿出來討論的,就是這個題目不必再做了、這個題目本
身沒有發展性,所以使我更加確認選對一個有意義、有延展性、可控制、可以經營的題目
是非常重要的。

我的學生常常選非常難的題目,我說你千萬不要這樣,因為沒有人會仔細去看你研究的
困難度,對於難的題目你要花更多的時間閱讀史料,才能得到一點點東西;要擠很多東西
,才能篩選出一點點內容,所以你最好選擇一個難易適中的題目。

我寫過好幾本書,我認為我對每一本書的花的心力都是一樣,雖然我寫任何東西我都不
滿意,但是在過程中我都絞盡腦汁希望把他寫好。目前為止很多人認為我最好的書,是我
二十幾歲剛到史語所那一年所寫的那本書。我在那本書花的時間並不長,那本書的大部分
的稿子,是我和許添明老師同時在當兵的軍營裡面寫的,而且還是用我以前舊的筆記寫的


大陸這些年有許多出版社,反覆要求出版我以前的書,尤其是這一本,我說:「不行。
」因為我用的是我以前的讀書筆記,我怕引文有錯字,因為在軍隊營區裡面隨時都要出操
、隨時就要集合,手邊又沒有書,怎麼可能好好的去核對呢?而如果要我重新校正一遍,
又因為引用太多書,實在沒有力氣校正。

為什麼舉這個例子呢?我後來想一想,那本書之所以比較好,可能是因為那個題目可延
展性大,那個題目波瀾起伏的可能性大。很多人都認為,我最好的書應該是劍橋大學出的
那一本,不過我認為我最好的書一定是用中文寫的,因為這個語文我能掌握,英文我沒辦
法掌握得出神入化。讀、寫任何語文一定要練習到你能帶著三分隨意,那時候你才可以說
對於這一個語文完全理解與精熟,如果你還無法達到三分的隨意,就表示你還在摸索。

回到我剛剛講的,其實每一本書、每一篇論文我都很想把它寫好。但是有些東西沒辦法
寫好,為什麼?因為一開始選擇的題目不夠好。因此唯有選定題目以後,你的所有訓練跟
努力才有價值。我在這裡建議大家,選題的工作要儘早做,所選的題目所要處理的材料最
好要集中,不要太分散,因為碩士生可能只有三年、博士生可能只有五年,如果你的材料
太不集中,讀書或看資料可能就要花掉你大部分的時間,讓你沒有餘力思考。而且這個題
目要適合你的性向,如果你不會統計學或討厭數字,但卻選了一個全都要靠統計的論文,
那是不可能做得好。

6. 養成遵照學術格式的寫作習慣

另一個最基本的訓練,就是平時不管你寫一萬字、三萬字、五萬字都要養成遵照學術規
範的習慣,要讓他自然天成,就是說你論文的註腳、格式,在一開始進入研究生的階段就
要培養成為你生命中的一個部份,如果這個習慣沒有養成,人家就會覺得這個論文不嚴謹
,之後修改也要花很多時間,因為你的論文規模很大,可能幾百頁,如果一開始弄錯了,
後來再重頭改到尾,一定很耗時費力,因此要在一開始就養成習慣,因為我們是在寫論文
而不是在寫散文,哪一個逗點應該在哪裡、哪一個書名號該在哪裡、哪一個地方要用引號
、哪一個要什麼標點符號,都有一定的規定,用中文寫還好,用英文有一大堆簡稱。在
1960年代台灣知識還很封閉的時候,有一個人從美國回來就說:「美國有個不得了的情形
,因為有一個人非常不得了。」有人問他為什麼不得了,他說:「因為這個人的作品到處
被引用。」他的名字就叫ibid。所謂ibid就是同前作者,這個字是從拉丁文發展出來的,
拉丁文有一大堆簡稱,像et. al.就是兩人共同編的。英文有一本The Chicago Manual
of Style就是專門說明這一些寫作規範。各位要儘早學會中英文的寫作規範,慢慢練習,
最後隨性下筆,就能寫出符合規範的文章。

7. 善用圖書館

圖書館應該是研究生階段最重要的地方,不必讀每一本書,可是要知道有哪些書。我記
得我做學生時,新進的書都會放在圖書館的牆上,而身為學生最重要的事情,就是要把書
名看一看。在某些程度上知道書皮就夠了,但是這仍和打電腦是不一樣的,你要實際上熟
悉一下那本書,摸一下,看一眼目錄。我知道現在從電腦就可以查到書名,可是我還是非
常珍惜這種定期去browse新到的書的感覺,或去看看相關領域的書長成什麼樣子。中研院
有一位院士是哈佛大學資訊教授,他告訴我他在創造力最高峰的時候,每個禮拜都到他們
資訊系圖書室裡,翻閱重要的資訊期刊。所以圖書館應該是身為研究生的人們,最熟悉的
地方。不過切記不重要的不要花時間去看,你們生活在資訊氾濫的時代,跟我生長在資訊
貧乏的時代是不同的,所以生長在這一個時代的你,要能有所取捨。我常常看我的學生引
用一些三流的論文,卻引得津津有味,我都替他感到難過,因為我強調要讀有用、有價值
的東西。


8. 留下時間,精緻思考

還要記得給自己保留一些思考的時間。一篇論文能不能出神入化、能不能引人入勝,很
重要的是在現象之上作概念性的思考,但我不是說一定要走理論的路線,而是提醒大家要
在一般的層次再提升兩三步,conceptualize你所看到的東西。真切去了解,你所看到的
東西是什麼?整體意義是什麼?整體的輪廓是什麼?千萬不要被枝節淹沒,雖然枝節是你
最重要的開始,但是你一天總也要留一些時間好好思考、慢慢沉澱。conceptualize是一
種非常難教的東西,我記得我唸書時,有位老師信誓旦旦說要開一門課,教學生如何
conceptualize,可是從來都沒開成,因為這非常難教。我要提醒的是,在被很多材料和
枝節淹沒的時候,要適時跳出來想一想,所看到的東西有哪些意義?這個意義有沒有廣泛
連結到更大層面的知識價值。

傅斯年先生來到台灣以後,同時擔任中央研究院歷史語言研究所的所長及台大的校長。
台大有個傅鐘每小時鐘聲有二十一響、敲二十一次。以前有一個人,寫了一本書叫《鐘聲
二十一響》,當時很轟動。他當時對這二十一響解釋是說:因為台大的學生都很好,所以
二十一響是歡迎國家元首二十一響的禮炮。不久前我發現台大在每一個重要的古蹟下面豎
一個銅牌,我仔細看看傅鐘下的解釋,才知道原來是因為傅斯年當台大校長的時候,曾經
說過一句話:「人一天只有二十一個小時,另外三小時是要思考的。」所以才叫二十一響
。我覺得這句話大有道理,可是我覺得三小時可能太多,因為研究生是非常忙的,但至少
每天要留個三十分鐘、一小時思考,想一想你看到了什麼?學習跳到比你所看到的東西更 高一點的層次去思考

9. 找到學習的楷模

我剛到美國唸書的時候,每次寫報告頭皮就重的不得了,因為我們的英文報告三、四十
頁,一個學期有四門課的話就有一百六十頁,可是你連註腳都要從頭學習。後來我找到一
個好法,就是我每次要寫的時候,把一篇我最喜歡的論文放在旁邊,雖然他寫的題目跟我
寫的都沒關係,不過我每次都看他如何寫,看看他的注腳、讀幾行,然後我就開始寫。就
像最有名的男高音Pavarotti唱歌劇的時候都會捏著一條手帕,因為他說:「上舞台就像
下地獄,太緊張了。」他為了克服緊張,他有習慣性的動作,就是捏著白手帕。我想當年
那一篇論文抽印本就像是我的白手帕一樣,能讓我開始好好寫這篇報告,我學習它裡面如
何思考、如何構思、如何照顧全體、如何用英文作註腳。好好的把一位大師的作品讀完,
開始模仿和學習他,是入門最好的方法,逐步的,你也開始寫出自己的東西。我也常常鼓
勵我的學生,出國半年或是一年到國外看看。像現在國科會有各式各樣的機會,可以增長
眼界,可以知道現在的餐館正在賣些什麼菜,回來後自己要作菜也才知道要如何著手。




四、用兩條腿走路,練習培養自己的興趣

最後還有一點很重要的,就是我們的人生是兩隻腳,我們不是靠一隻腳走路。做研究生
的時代,固然應該把所有的心思都放在學業上,探索你所要探索的那些問題,可是那只是
你的一隻腳,另外還有一隻腳是要學習培養一、兩種興趣。很多人後來會發現他的右腳特
別肥重(包括我自己在內),也就是因為忘了培養左腳。很多很有名的大學者最後都陷入
極度的精神困擾之中,就是因為他只是培養他的右腳,他忘了培養他的左腳,他忘了人生
用兩隻腳走路,他少了一個小小的興趣或嗜好,用來好好的調解或是排遣自己。

去年夏天,香港《亞洲週刊》要訪問我,我說:「我不想接受訪問,我不是重要的人。
」可是後來他們還是把一個簡單的對話刊出來了,裡面我只記得講了一段話:做一個研究
生或一個學者,有兩個感覺最重要--責任感與罪惡感。你一定要有很大的責任感,去寫出
好的東西,如果責任感還不夠強,還要有一個罪惡感,你會覺得如果今天沒有好好做幾個
小時的工作的話,會有很大的罪惡感。除非是了不得的天才,不然即使愛因斯坦也是需要
很努力的。很多很了不得的人,他只是把所有的努力集中在一百頁裡面,他花了一千小時
和另外一個人只花了十個小時,相對於來說,當然是那花一千個小時所寫出來的文章較好


所以為什麼說要趕快選定題目?因為如果太晚選定一個題目,只有一年的時間可以好好
耕耘那個題目,早點選定可以有二、三年耕耘那個題目,是三年做出的東西好,還是一年
的東西好?如果我們的才智都一樣的話,將三年的努力與思考都灌在上面,當然比一年還
要好。






五、營造卓越的大學,分享學術的氛圍

現在很多人都在討論,何謂卓越的大學?我認為一個好的大學,學校生活的一大部份,
以及校園的許多活動,直接或間接都與學問有關,同學在咖啡廳裡面談論的,直接或間接
也都會是學術相關的議題。教授們在餐廳裡面吃飯,談的是「有沒有新的發現」?或是哪
個人那天演講到底講了什麼重要的想法?一定是沉浸在這種氛圍中的大學,才有可能成為
卓越大學。那種交換思想學識、那種互相教育的氣氛不是花錢就有辦法獲得的。我知道錢
固然重要,但不是唯一的東西。一個卓越的大學、一個好的大學、一個好的學習環境,表
示裡面有一個共同關心的焦點,如果沒有的話,這個學校就不可能成為好的大學。

星期二, 8月 21, 2007

ssh tunneling

之前試著用http tunnel,結果搞了很久還是失敗。
而且是時好時壞,還讓計中用SMTP把ip ban了....sigh

現在終於用ssh tunnel穿過firewall了。特此記念一po.

##CONTINUE##
最近測試NAT時,順手開了open ssh server,為了穿過mtk的firewall
還特地把port 443打開了。

在一番努力之後,終於穿過firewall了。
簡單的說,因為sshd本身就能提供socks5,所以利用plink或是putty的ssh tunneling功能。
在localhost:xxx用dynamic destination的方式做listenning。
這樣一來,所有經過localhost:xxxx的封包都能用這條ssh tunnel傳到遠端的socks5服務。
ref:
對岸寫的幾種建立http tunnel的方法

PuTTY - SSH Tunnel Usage


ps.
用ssh穿過firewall後,不禁想到,這種方式擋得住嗎?(笑)

星期五, 8月 10, 2007

MSN Virus - 你覺得我該用這張照片嗎?

今天熊熊被丟這個訊息:Should i use this picture on msn?
雖然有點奇怪,她為啥用英文?
但這還不怎麼讓我在意,因為我也常常做這種事....
###CONTINUE###
好~把檔案抓下來之後。咦?怎麼是 .exe 放在裡面............(汗)

-------該 不 會 是 病 毒 吧---------

她還很乖的在exe前面加上,用這個下載dn0323之類的名字。
以為這樣我們就會上當嗎??
不過,自從上次被丟了神奇訊息,叫我登入某網站之後。
我對msn的使用者們,深具信心阿
難怪每年會有這麼多的人,被騙、上當。

如果你不幸的因為滑鼠太靈敏,而把exe打開了。
那,請快上網抓combofix吧....
我不敢去嘗試,不過看起來像是熊喵的變種毒~

話說回來,她的暱稱寫著.... 「不要打開我傳的檔案」
真是令人哭笑不得。

星期五, 8月 03, 2007

漫畫下載器....

最近學了tcl,而又想寫個大陸的漫畫網站的gg人,所以就決定用tcl+tk啦~
在今天大功告成,簡記幾個mistakes
分別是writing binary data, use ::http to get binary data with -channel specified, get http in background
##CONTINUE##
  • Writing Binary Data: 平常都是使用 puts $channel "string" 寫入資料,但是當想寫入binary資料時,就必需要設定 fconfigure $channel -translation binary 來更正channel的設定

  • http package: 其實想把http的data content寫到檔案中,也可以用set $channel [open ...]打開channel,然後使用 ::http::geturl $URL -channel $channel,將 content直接放到channel中。這個方法就不需要先改channel的translation了。

  • fetch http in background: 基本上,一本漫畫都是近百頁的。如果一次抓一張,實在是.....有些慢。所以使用 ::http::geturl $URL -command Callbackfunction ,做到non-blocked http request with callback function。雖然每個檔案不是使用多分割下載,但是已經比之前好很多了。唯一的困難點在於參數的傳遞,因為callback function的參數是定死的。還好能從URL中parse圖片的名字。

附上目前的 source code

package require http
frame .n1
label .n1.filetosave -text "Save to:"
entry .n1.folder -textvariable folder
button .n1.openfolder -text "openfolder" -command setfolder
button .n1.rename -text "rename" -command rename
pack .n1.filetosave .n1.folder .n1.openfolder .n1.rename -side left
frame .n2
label .n2.folderurl -text "folderurl:"
entry .n2.url -textvariable url
button .n2.download -text "download" -command download
button .n2.stop -text "stop" -command stop
pack .n2.folderurl .n2.url .n2.download .n2.stop -side left
label .debug -text ""
label .state -text "Idle"
pack .state .n1 .n2 .debug -side top -fill both
set folder "comic_temp"
set serverno 2
set url "http://dm.99770.com/Comic/618/25601/?v=1*s=2"
set pagenumber 5
# =================================================================
# get http://dm.99770.com/Comic/618/25601/?v=1*s=2
# find pattern:
# 1. picurl=""
# 2. http://.....love.js
# get *love.js
# find pattern: ServerList[]
proc setfolder {} {
global folder
set tfolder [tk_chooseDirectory ]
if {$tfolder!= ""} {
set folder $tfolder
}
}
proc httpcallback { file token } {
# upvar #0 $token state
set fn [open $file w]
fconfigure $fn -translation binary
puts $fn [::http::data $token]
close $fn
}
proc wget { url { file "NULL"} } {
if {$file=="NULL"} {
return [::http::data [::http::geturl $url]]
} else {
::http::geturl $url -command [list httpcallback $file]
}
}
proc stop {} {
if {[.state cget -text]=="Downloading"} {
.state configure -text "Stop"
}
}
proc download {} {
global serverno ,pagenumber
set url [.n2.url get ]
set server ""

set fd [.n1.folder get]
if {[file exists $fd]==0} {
file mkdir $fd
}
cd $fd

.debug configure -text ""
.state configure -text "Downloading"
regexp {s=(\d+)} $url tmp serverno
set data [wget $url]
regexp {http[^>]*love.js} $data matched
debug [format "%s%s" "love js:" $matched]
set lovejs [wget $matched]
set i 0
while {\
[regexp -indices -line {^ServerList\[\d\]=[^;]*;} $lovejs index] } {
incr i
set tt [string range $lovejs [lindex $index 0] [lindex $index 1]]
if {$i==$serverno} {
regexp {http.*/} $tt server
debug [format "server: %s" $server]
}
set lovejs [string range $lovejs [lindex $index 1] end]
}

set index [expr [string last "/" $url]+1]
set baseurl [string replace $url $index end]
set i 1
while {1} {
if {[.state cget -text]=="Stop"} {
return
}
set url [format "%s%d.htm" $baseurl $i]
set data [wget $url]
regexp {picurl=\"([^;]*)\"} $data pic pic2
regexp {datas=([^;]*)} $data tmp pagenumber
set url [format "%s%s" $server $pic2]
set pic [lindex [split $pic2 "/"] end]
wget $url [format "%.3d%s" $i [string range $pic end-3 end]]
if {$i>=$pagenumber} {
break
}
incr i
}
.state configure -text "Complete"
cd ..
}

proc rename {} {
cd [.n1.folder get]
set i 1
foreach {f} [glob -nocomplain *] {
file rename $f [format "%.3d%s" $i [string range $f end-3 end]]
incr i
}
cd ..
}

proc debug { err } {
.debug configure -text [format "%s\n%s" [.debug cget -text] $err]
}

星期日, 7月 29, 2007

好運

原來seven eleven的折扣,不是只有成堆的89折....
##CONTINUE##
今天買了2件冰品,到櫃台順手一摸,1折..... :o
在驚訝之中,找了一堆零錢回來。這才想到,我給他大鈔做什麼....(汗)

.....原來那堆破牌子中,還真有1折 !

星期日, 7月 22, 2007

Blogger Hack

新加入一些功能,在輕鬆擴充 Blogger 功能: Blogger_ext2.js (jQuery way)!一文中,
擴充了很多blog功能喔, 而且目前已經寫成了plugin的型式。
大家一起來擴充blogger吧~ 許多有用的功能....如下
##CONTINUE##
  • 部落格會笑了!Blogger Smiley!
  • 隱藏 Blogger NavBar
  • 隱藏 Widget
  • 繼續閱讀功能
  • Sidebar 側邊網頁元素 折收/展功 功能
  • 讓網誌作者的回應文章高亮度顯示
  • 標籤雲 Label Cloud 功能
  • Sidebar 側邊網頁元素 Icon 圖示功能
  • 加入社群書籤功能

11種表情輸入對照碼: ※記得表情前面要空一格!
• 微笑 :) or :-)
• 大笑 :D or :-D
• 害羞 :$ or :-$
• 難過 :( or :-(
• 吐舌 :p or :-p
• 眨眼 ;) or ;-)
• 親親 :k or :-k
• 火大 :@ or :-@
• 閉嘴 :# or :-#
• 囧臉 :x or :-x
• 驚訝 :o or :-o
也許之後還會有更多擴充.

星期六, 7月 21, 2007

Conky是一個能輸出成類似terminal樣式的system monitor software
Official Site

#include

星期三, 7月 18, 2007

Firefox 突破50%.........

唔,今天才知道,原來看這blog的browser分佈,呈現不常規的取向......
最近一個月的統計.
1. Firefox 346 55.01%
2. Internet Explorer 259 41.18%
3. Opera 12 1.91%
4. Mozilla 5 0.79%
5. Safari 3 0.48%
6. Konqueror 3 0.48%
7. Mozilla Compatible Agent 1 0.16%
-----------------------------------------------------------

唔,果然是blog內容決定一切。
都是programer的東西(汗)

grub-install with SATA disk

常常把boot loader搞爛,或是少了哪個分割區。
這時使用linux的Live CD求援。
透過grub-install指定開機區與設定檔,就能把分割區救回來。
範例:我的 /dev/hdb 掛載到 /disk2 下,如何安裝 grub 到 /dev/hdb ?
[root@linux ~]# grub-install --root-directory=/disk2 /dev/hdb

一般來說,這樣子就ok了。
但是,SATA的硬碟會有些許問題。諸如...
does not have any corresponding BIOS drive

的錯誤。
這是因為device map broken所導致的。請服用強制recheck。
# grub-install --recheck /dev/sda
即可搞定~!!

星期四, 6月 28, 2007

神奇的firefox 文字複製/貼上

最近抓檔案時,遇到winrar解壓縮crc錯誤。
本以為是原作者沒弄好、或是winrar特殊版本的問題。
結果發現,是firefox的問題。
當在firefox營幕上的一串字裡面無空白時(即 顯示正常),把它複製/貼上到txt檔中。
會發現莫明的多了幾個空白在裡面。 冏rz

測試平台: firefox 2.0.0.4、WinXP sp2

星期六, 6月 16, 2007

Error: unresolved external symbol _WinMain@16

  1. 如果你是用VS開新專案,然後手動加入source code
  2. 如果以前是用VS2003或是更早的版本,然後轉到VS2005上
  3. 想把一個Win32 Console Application增加 UI,但是背後的Console Window不知如何拿掉
  4. 想把專案的Console Window叫出來。
以上的狀況,常會遇到一個Error:[ unresolved external symbol _WinMain@16 referenced in
function ___tmainCRTStartup ]。其中,粗體字部分也許會不同。
這種問題是因為,Source Code中的main,也就是我們預計的程式enrty point 與VS預期的名字相異,造成VS抓不到entry point,當然就出現了unresolved symbol。
一般來說,是由於SubSystem沒設定好所造成的。 更改Linker->System->SubSystem即可
但如果你的程式中,有新舊兩種WinAPI,比如include 又加入新版的Window Form( 有design view的 ),此時VS可能會搞混,所以上面的方法就失效了。

今天花了4個小時左右,終於把這個問題搞懂.....Orz
重點記錄幾個地方:( 以VS2005為例 ) Project Configuration Property中
  1. General -> CRL support:如果用VS2005的Windows Form,是需要用到CRL( /crl )的,如果想把project compile成lib、dll,似乎要用/crl safe。
  2. C/C++ -> Preprocessor:Definitions 中,有無_CONSOLE、_WINDOWS、WINDOWS等。這個地方其實就等同設定#define _CONSOLE...等。
  3. C/C++ -> Precompiled Headers:一般是設定成stdafx.h。不設定....似乎也沒差。
  4. Linker -> System -> SubSystem:設定成 WINDOWS、CONSOLE兩類最常見。如果沒設定,VS會看你的main function來選擇
    1. CONSOLE:Win32 character-mode application. Console applications are given a console by the operating system. If main or wmain is defined, CONSOLE is the default.
    2. Extensible Firmware Interface:The EFI_* subsystems. See the EFI specification for more information. For example, see the Intel web site. The minimum version and default version is 1.0.
    3. NATIVE:Device drivers for Windows NT. If /DRIVER:WDM is specified, NATIVE is the default.
    4. POSIX:Application that runs with the POSIX subsystem in Windows NT.
    5. WINDOWS:Application does not require a console, probably because it creates its own windows for interaction with the user. If WinMain or wWinMain is defined, WINDOWS is the default.
  5. Linker -> Advanced -> Entry Point:其實就是指定你的main function的起始位置。這是用在當你選了SubSystem成Console或是Windows,VS卻認錯你的entry point。此時,用這邊手動指定即可。

星期五, 6月 08, 2007

Tag Cloud

其實本來Blogger就有Tag排序的功能,只是沒有做成Tag Cloud的樣式。
所以我們只需要把原有的Tag List製做成Tag Cloud即可。
首先,先改CSS的設計部分:
/* Style for Label Cloud */
#labelCloud {
text-align: center;
}
#labelCloud .label-cloud li{
display: inline;
background-image: none !important;
padding: 0 5px;
margin: 0;
vertical-align: baseline !important;
border: 0 !important;
}
#labelCloud ul{
list-style-type: none;
margin: 0 auto;
padding: 0;
}
#labelCloud .label-count {
padding-left: 0.2em;
font-size: 9px;
color: #777;
}

接下來,加入製做Tag Cloud的js code
紅色部分是自訂的地方,諸如blog網址、大小字型、顏色…等。
<!-- User defined inline javascript -->
<script language='javascript' type='text/javascript'>
<!-- Functions used for Label Cloud: adjustLabel(), generateLabels()-->
var labels = new Object;
function adjustLabel(min, max, weight, total) {
  if (min &gt; max)
    var temp=(min-max)/Math.log(total), result=min-Math.floor(Math.log(weight)*temp);
  else
    var temp=(max-min)/Math.log(total), result=Math.floor(Math.log(weight)*temp+min);
  return result;
}  

function generateLabels(){
  var blogURL = 'http://abinlee.blogspot.com';
  var maxFontSize = 18;
  var minFontSize = 11;
  var maxColor = [204,204,204];
  var minColor = [119,119,119];
  var showCount = true;
 
  var labelColor= [];
  var labelSize = 0;
  var labelCount = new Array(); 
 
  for (var i in labels)
    if (!labelCount[labels[i]])
      labelCount[labels[i]] = new Array(labels[i])
 
  total = labelCount.length-1;
  section = document.getElementById('labelCloud');
  ul = document.createElement('ul');
  ul.className = 'label-cloud';
 
  for(var tag in labels) {
    for (var i=0; i &lt; 3; i++)
      labelColor[i]=adjustLabel(minColor[i], maxColor[i], labels[tag], total);
   
    labelSize = adjustLabel(minFontSize, maxFontSize, labels[tag], total);
    li = document.createElement('li');
    li.style.fontSize = labelSize+'px';

    a = document.createElement('a');
    a.title = labels[tag]+' articles with Label: '+tag;
    a.style.color = 'rgb('+labelColor[0]+','+labelColor[1]+','+labelColor[2]+')';
    a.href = blogURL+'/search/label/'+encodeURIComponent(tag);
   
    if (showCount) {
      span = document.createElement('span');
      span.innerHTML = '('+labels[tag]+') ';
      span.className = 'label-count';
      a.appendChild(document.createTextNode(tag));
      li.appendChild(a);
      li.appendChild(span);
    }
    else {
      a.appendChild(document.createTextNode(tag));
      li.appendChild(a);
    }
    ul.appendChild(li);
    ul.appendChild(document.createTextNode(' '));
  }
  section.appendChild(ul);   
}
</script>

最後把widget code展開,找到id='Label1'的widget,將這整個widget以下面的code取代掉。
<b:widget id='Label1' locked='false' title='Labels' type='Label'>
<b:includable id='main'>  <!-- Add Label Cloud -->
  <b:if cond='data:title'>
    <h2><data:title/></h2>
  </b:if>
  <div class='widget-content'> 
  <div id='labelCloud'/>
    <script type='text/javascript'>
      <b:loop values='data:labels' var='label'>
        labels[&quot;<data:label.name/>&quot;] = <data:label.count/>;
      </b:loop>
      generateLabels();
    </script>
    <noscript>
      <ul>
      <b:loop values='data:labels' var='label'>
        <li>
          <b:if cond='data:blog.url == data:label.url'>
            <data:label.name/>
          <b:else/>
            <a expr:href='data:label.url'><data:label.name/></a>
          </b:if>
          (<data:label.count/>)
        </li>
      </b:loop>
      </ul>
    </noscript>
    <b:include name='quickedit'/>
  </div>
</b:includable>
</b:widget>   


ps. 因為這樣子做出的Tag Cloud是以Blogger給定的Tag list製做的,所以排序就是以Blogger的設定為主,以次數或是字母排序。當然,改成了Tag Cloud之後,還使用次數排序,就看不出效果啦~

Toggle/ Untoggle Your Blogger's Sidebar

參考自abintech的Blog hack系列
要做的工作就是:
  1. 把想展開摺疊的區塊找出來,
  2. 做一個按鈕或連結,當按下去的時候,去切換該區塊的狀態(display inline or none)。
打開完整範本原始碼,首先貼入處理這個動作的 Javascript (貼在head標籤內):

<script type='text/javascript'>
<!-- Function used for Sidebar Element Toggling: ElementToggle()-->
function ElementToggle(id) {
var element = document.getElementById(id).getElementsByTagName(&#39;div');
for(i = 0; i < element.length; i++) {
attribute = element[i].getAttribute('id');
if(attribute == 'toggle')
{
if (element[i].style.display == &#39;none')
element[i].style.display = &#39;inline';
else
element[i].style.display = &#39;none';
}
}
}
</script>


接下來,要去修改元件 (Widget) 的程式碼。同樣以個人資料 (Profile) 元件為例,找 <b:widget ...> 開頭 </b:widget> 結尾的區段,應該是類似下面這樣:

<b:widget id='Profile1' locked='false' title='AUTHOR PROFILE' type='Profile'>
<b:includable id='main'>
<b:if cond='data:title != ""'>
<h2><data:title/></h2>
</b:if>
<div class='widget-content'>
............. (程式內文略過不表)
</b:includable>
</b:widget>


這個元件的 ID = Profile1,是範本裡用來識別該元件的方法,接下來要插入動態切換的連結,可以用圖片(此處我用[+/-]代替)


<b:widget id='Profile1' locked='false' title='AUTHOR PROFILE' type='Profile'>
<b:includable id='main'>
<b:if cond='data:title != ""'>
<h2><data:title/><a href='javascript:void(0); style='float:right;margin:-23px 0;' onclick='javascript:ElementToggle("Profile1");'>[+/-]</a></h2>
</b:if> <div class='widget-content' id='toggle' style='display:none;'
>
............. (程式內文略過不表)
</b:includable>
</b:widget>

搞定 !
---------From Moto http://moto.debian.org.tw/viewtopic.php?t=11377-----------
pulseaudio可以輸出到常用的alsa oss 驅動的裝置,esound server,遠端電腦(rtp),或甚至是windows 的waveout驅動.

可以接收來自
1.有支援pulseaudio的程式(xine,bmpx,audacious等等)
2.透過alsa-lib的plugin讓所有支援alsa的程式使用pulseaudio
3.支援esd的程式..pulseaudio可以完全取代esd
4.OSS模擬 (像是aoss一樣,可以給java發出聲音)
其他其他...
大概分享一下我在我電腦上使用pulseaudio的安裝方法
apt-get install pulseaudio pulseaudio-module-x11 paman pavucontrol pulseaudio-esound-compat pulseaudio-utils
module-x11 讓x11發出的警告beep聲音透過pulseaudio發出,像是..命令列已經沒有東西了又按backspace就會逼..vi裡面亂按也會..
paman pulseaudio manager可以讓你看目前server的狀態,所有的input/output
pavucontrol 音量控制,這個一定要裝,可以控制個別程式的音量

修改 /etc/pulse/default.pa
輸出輸入
### Load audio drivers statically
load-module module-alsa-sink device=dmix
load-module module-alsa-source device=plughw:1,0
輸出到alsa的dmix裝置,
從硬體1,0來錄音,你也可以設定成dsnoop

其實,修改到這樣子就可以用了...
不過我還加了esd的功能..
load-module module-esound-protocol-tcp auth-ip-acl=10.11.12.13;192.168.50.0/24;127.0.0.0/8
load-module module-esound-protocol-unix
讓那些ip可以透過tcp把聲音送到本機,或是也可以用unix socket

恩...就先這樣,執行pulseaudio之前.要先建立esd socket,不然,本機也會用tcp連線
mkdir -p /tmp/.esd
chmod 1777 /tmp/.esd
touch /tmp/.esd/socket
chmod 777 /tmp/.esd/socket
執行看看
pulseaudio --verbose
Note: 1. mplayer設定成pulse輸出的話,會crash. 改用esd輸出。
To support audio of Flash:
pulseaudio.revolutionlinux.com



星期一, 6月 04, 2007

In Ubuntu, there are many remote desktop utilities: tightvnc, vncserver, vnc4server(Xvnc), x11vnc, vino( the vnc which Feisty build in ).
The difference between them is to open a new display or connect to the existing one.

The easiest way for building server is choose the System -> Preference -> Remote Desktop and set up your settings.
But it's the solution in Gnome.

I use E17 as my window-manager, and don't know how to set up the vino-preference.
So, I've tried vncserver, vnc4server and finally x11vnc.

x11vnc is a server which let you control desktop environment remotely. It needs to start up X window first and use this display session( usually :0 ).
The most common problem is Xlib find display:0 error as .Xauthority isn't well set up.
When you see the tips and tried
ps -wwaux|grep auth
You'll find the existing session's auth. Here's the file used by Enlightenment 17.
x11vnc -auth /var/:0.Xauth
Also, you need a password for authentication of remote connection.
Just exec vncpasswd to generate ~/.vnc/passwd and use -rfbauth $HOME/passwd.
Or use -usepw. A .x11vncrc will be helpful.

As the client side, you can just use RealVnc's free client to connect the server.

ps. I found some errors as :
Xlib: connection to ":0.0" refused by server
Xlib: No protocol specified
Google it and find the solution:
sudo xhost local:kimk
But I still don't understand why.

星期四, 5月 31, 2007

Upgrade Ubuntu from Edgy to Feisty

Well, I upgrade my ubuntu to Feisty by using "update-manager -c -d".
But an error occurred.
If you use GUI to upgrade it, you might get the following message:
Authentication failed
Authenticating the upgrade failed. There may be a problem with the network or with the server.
or use command line to type "sudo update-manager -c -d", get more specific message:
extracting ‘/tmp/tmpVuEU0n/feisty.tar.gz’
authenticate ‘/tmp/tmpVuEU0n/feisty.tar.gz’ against‘/tmp/tmpVuEU0n/feisty.tar.gz.gpg’
exception from gpg: GnuPG exited non-zero, with code 131072
It's obvious that we don't have a gpg authentication. So, just type gpg ,as a normal user. Once it says Go ahead and type your message …, you can just press Ctrl-C to get back to the command prompt.

星期四, 5月 17, 2007

[HowTo] FreeBSD console framebuffer

First thing we have to do is add VESA and SC_PIXEL_MODE to the kernel and rebuild. You should always cvsup and rebuild your kernel and world to the latest available. However, don't try to 'optimize' the BSD kernel. It is already well optimized. If there is an option, like this, that you need to have, then go for it. We need to open the kernel config file. I would recommend that you cvsup first so that you rebuild the latest world/kernel, but it's optional.
cvsup -h cvsup2.freebsd.org -g -L 2 /usr/share/examples/cvsup/standard-supfile
Obviously, you can use whichever cvsup server you want. You can install fastest_cvsup to fins what server is fastest for your location as well. If this is the first time you are cvsup-ing, it will take some time. When it completes, we will continue.
cp /usr/src/sys/i386/conf/GENERIC /usr/src/sys/i386/conf/GENERICVESA
Name it to whatever you want.
vi /usr/src/sys/i386/conf/GENERICVESA
You will see, a couple of lines down an "ident GENERIC" line. You can change this if you want. It will be the display of the kernel in uname.

Directly after that, you will start to see 'option xxxxx #Description' sections..

This is where we add our options:
options VESA
options SC_PIXEL_MODE

Save your changes and exit.

From here, you generally build the world, and the kernel, install the kernel, reboot to single-user mode, mergemaster, installworld, etc... but I'm going to skip the buildworld because it will eat up a lot of time, and we can do it after the kernel.
cd /usr/src
make buildkernel KERNCONF=GENERICVESA
make installkernel KERNCONF=GENERICVESA
reboot
Now, you won't get the resolution just yet, we're not quite done. Boot back up and do the following:
kldload vesa
vidcontrol -i mode | less
You should see a punch of different modes. Scroll through and find one you'd like. For me, 1024x768x24 is the size I want. The first column shows the mode number, mine being 280.

Choose the one you want and try:
vidcontrol MODE_xxx
Substituting "xxx" for the number of the mode you want. The screen will go bank for a second, then it should come back with the prompt. If it cannot handle the resolution you specified, it should return with an error.

If it works, GREAT! Now we can add this to /etc/rc.conf to load on boot-up. However, we must make sure we load vesa on boot-up as well.
vi /boot/loader.conf
add the line :
vesa_load="NO"
change it to "YES" (maintaining caps)

Save, and exit.
vi /etc/rc.conf
and add to the end:
allscreens_flags="MODE_xxx"

星期三, 5月 16, 2007

網球終於有點Sense了

這學期選的透早網球課,終於有點收獲了.
雖然只是對牆打,但也抓到了一些輕鬆打的感覺。

今天的心得是.... 收拍要快,下一次揮拍擊球時,才能在身體的前方(90度半圓)的球點擊球。
多旋轉身體,會打得又遠又輕鬆。(這可以靠調整後拉拍的深度達到)
還有擊球後,手部的推出送球動作,也要注意。(推球動作能穩定你的球路)

ps. 當你總覺得擊球不順時,滿有可能是收拍太慢,使得下一次的擊球點,在身體的內側。
試著在擊球後,喊「後拉」、「拉」等字眼,提醒自己收拍,調整收拍的節奏。

星期三, 5月 09, 2007

安裝FreeBSD在Asus u5f

唔,最近老闆開金口,要擴充一台notebook。
在鳥鳥的中信局採購單、網卡要能快速的build與更改的考量下,買了U5f...
( 說實在的,我很想買Ferrari 1005耶! 如果我不是負責此產學案的人,就勸敗了啦~!!! )
在打開了純白色的u5f,安裝了Unbuntu 7.04之後....
一時興起,拿起來FreeBSD 6.2想要安裝。
結果.... 冏

星期五, 3月 30, 2007

wikipedia

雖然wiki本是一種大家編輯網站的方式,而裡面的資料可信度或是正確性沒有保證。
Wiki是一種可在網路上開放多人協同創作的超文本系統
一個wiki網站讓人能夠用網頁瀏覽器以及很簡單的標記語言合作撰寫文件。wiki技術的關鍵特質是能輕易用來創造與更新許多網頁。一般來說,改變網頁是不經審核的。大部分的wiki都是公開給一般大眾,不用註冊帳號。有些wiki會替使用者自動簽名,並且要求使用者持有一個「cookie」。私人的wiki之中,大多會要求身分認證。大部分的編輯都是即時的,而且幾乎會立即出現在網路上。這一點常導致系統被濫用。-----引自wikipedia

但是近幾年wikipedia這個網站在世界各地人們的建構下,形成一個龐大的資料庫,裡面有的資料包羅萬象。雖然沒有保證正確性,但至少有個參考說法,不是嗎?
所以除了google之外,使用wikipedia當作學習各類新名詞的人也逐漸上升中,可預見的,wikipedia將在網路中占有一席之地。
但是,這個網站在中國大陸如今卻被封鎖了。詳情請見Wikipedia talk:應對封禁。我想,這對對岸同胞的資訊來源是一大損失吧

星期四, 3月 29, 2007

sftp可能會發生的問題

今天想連到linux工作站的sftp,結果發生悲劇...

因為filezilla連線時,就卡在CONNECT上,完全不知道原因。
用wireshark看trace時,也只發現到有很多encrypted packet。
試著用linux的sftp連上工作站時,出現了戲劇化的轉折-
Received message too long 1500476704

What????

Google發現原來是sftp的FAQ阿(我真是太弱了...)
問題出在大家的 .bashrc/.tcshrc/.cshrc 這幾個檔案裡面。
如果我們在 .tcshrc/.cshrc/.bashrc 裡面 echo 一些東西,
或者是執行像是 date, nfrm, whosebirthday 等會印出東西的
動作,因為 sftp 執行時也會去執行這些檔案中的動作,所以
當這些檔案一輸出東西,sftp 的 server 就產生錯誤,而導致
上面所說的錯誤訊息並且斷線。

那solution呢?
當然是把會印出訊息的地方轉到sftp登入時不會執行的檔案上;
也就是.....bash的bash_profile
或者也可以加上if [$?prompt]來限制sftp去印這些東西~

ps. 如果執行一些命令時發生錯誤,那麼印出的錯誤訊息也會使sftp爛掉喔~

星期日, 3月 25, 2007

Nikon Coolpix 4500隱藏的祕密

本來想找4500的增距鏡有哪幾種。找著找著,看到了神奇的東西..
原來4500除了能存TIFF之外,還能存RAW....這真是大福音阿~!
雖然我現在少了圓頭的usb傳輸線,所以不能測試。但還是先把這麼重要的資訊記下吧~!
偷k也用得到呢

2篇關於打開4500 RAW的教學 1 2
關於RAW於TIFF的差別
个人认为 RAW 的主要优势不是分辨率,而是层次,12-bit 的 RAW 在层次上会明显强过 8-bit 的 JPEG,内置的 TIFF 也是 8-bit 的,所以实际价值不是太大。另外 12-bit 意味着可能具有更大的动态范围(具体的动态范围增加的幅度与机器有关)。
但是显然的,人眼对色彩和层次的分辨率是比较低的,不如对明度的分辨率,因而人眼看起来 100% 大小的 RAW 与 JPG 不会有明显区别,但放大到 400% 时就会有区别。我们似乎更重要的是提高色彩层次,从而具有更多的后期调整的空间。


使用RAW的後續編輯心得 1

星期六, 3月 24, 2007

World of Warcraft on Windows Vista

唔,最近wow台版要開放70級了,所以試著登入遊戲中。
沒想到,使用vista玩wow,是這麼的糟!!
當我用full screen時,螢幕三不五時就閃一下,還會黑掉1秒再復原....
當我試著使用新版的Intel Chipset driver installation安裝之後,一切....還是很糟。

在請教google之後,找到了幾篇相關文章:Wow官方的英文討論帖1 討論帖2
除此之外,還有篇「如何在Vista上玩魔獸世界
而我用的硬體是Intel 945G,在官方討論中寫到

Intel 945 & 950 Graphics

* Users are reporting that it will crash into a black screen. A message saying that the Display driver stopped responding and has recovered will follow. It has been reproduced in-house. Some users reported success using a new set of drivers drivers for the 945/950 series. These are released 2/4/07.



Desktop 945: http://downloadfinder.intel.com/scripts-df-external/Product_Filter.aspx?ProductID=2102&lang=eng


Mobile 945: http://downloadfinder.intel.com/scripts-df-external/Product_Filter.aspx?ProductID=2301



We are currently testing the game on these drivers. Early test indicate that these drivers have fixed the crash on the areas we have noted. If you want, try them and report your findings here.

事實上,在我使用window模式執行wow之後,狀況改善很多.....
而且如果電腦的配備是1GB以上的RAM時,有測試文章寫到Vista比WinXP好一點點。所以,扣除wow裡AddOns的相容性,在Vista跑wow其實沒有大家想像中的慘。

星期二, 3月 13, 2007

Ubuntu字型的設定

賴廣甫本來debian是用fontconfig設定字型的,在Ubuntu中,fontconfig預設沒有安裝,但是有fontconfig-voodoo這個套件。雖然到現在還是不知道這有啥用.....
簡述一下如何安裝ttf字型在edgy中吧!!
  1. 把ttf copy到/usr/share/font/truetype裡

  2. 執行fc-cache -v -f,重抓字型

  3. 使用fc-list |grep 字型名稱,找看看新安裝的字型是否在其中

以上是小總結。
ps.我在找如何在e17安裝字型時,發現一位高手的blog,裡面整理了linux的各種字型管理方法。

Kim Lai
賴廣甫
Kim Lai
Kimk Lai

星期日, 3月 11, 2007

游泳..

話說,最近開始嘗試捷式的左邊換氣。
動機是左右開弓的三次換氣,泳者的姿勢較不容易走樣....XD

以前,沒被教過捷式該怎游。只有在泳池偷看別人的方法,還有找書看。還記得那時候閒著沒事,自已練右換氣時,整個就是一團糟阿。捷式竟然比蛙式慢,令人吐血;而且勉強說是會換氣後,游起捷式比蛙式慢就算了,竟然還累得要死。大約游100m之後,兩隻手就不行了吧XD
這完全與我知道的「捷式是最快最省力的泳姿,因此在自由式賽項常被使用,故又稱自由式」相違背阿~~~!!!
在偷看了許多帥哥美女之後,我漸漸的會輕鬆快速的以捷式前進。那感覺就像是漂在水面上,用划手與打水推進;在換氣時,轉動身体吸氣就搞定了。但,這一切是建立在右換氣上。當試用左換氣時,世界變得不一樣了...
那個捷式游得比蛙式慢的我又回來了!!! 哇哈哈哈哈...I'm back !!!! Orz

看來,還需要偷看很多會左換氣的美女才行...

捷式教學 蛙式教學 仰式教學 蝶式教學
這是我在某blog看到的,上面有清楚的影片教學...四式都有喔
賴廣甫
Kim Lai
賴廣甫
Kim Lai
Kimk Lai

星期五, 3月 02, 2007

Vista的權限管理

[How to delete Windows Vista's System files]
有別於舊的WindowsXP系統,Vista的系統檔是分給一個叫TrustedInstaller的傢伙,而且這傢伙的權限還沒有刪除的能力。這使得我們需要刪除系統檔時,得要花上更多步。

簡單的說,要先把檔案或目錄的Owner改成自己(目前的UserName),然後把權限管理的頁面中,本機電腦/User的權限提升到有刪除能力,確定排在上面的權限中,沒有Deny或是擋掉刪除之類的。因為vista好像是從上而下inherit權限,如果上面沒有刪除能力( 比如說是SYSTEM ),那下面的User改了也沒用。

比較機車的地方在於,當使用vista的GUI界面修改Owner或權限時,預設是不會讓子目錄、檔案inherit新設定的權限。所以不論是改Owner或是權限時,記得要把inherit勾選。
賴廣甫
Kim Lai
賴廣甫
Kim Lai
Kimk Lai

The Devil Wears Prada

一時興起,想找部片來看,就選中這片嘍~
本想就算是影片不好看,起碼還能欣賞一下服裝設計。

這部影片除了fashion的服飾之外。主要表達出女主角在領導fashion、開創自己的事業時,失去了哪些。其實整部影片的劇情不多,用一句話就能表達:「初入社會的小女子,在得到令人稱羡的工作時,逐漸失去初衷;最後猛然醒悟,找回自己的人生。」

以演技來說,Meryl Streep不愧是拿了幾次獎的得主,光是片尾的個人表情獨秀,就顯出其功力。Stanley Tucci則飾演一個在時裝界的....助手吧( 我也不知道怎麼定位 ),他在片中有點娘娘腔(也許叫纖細),但眼光到位;在最終被出賣、犧牲時,無奈的吞下苦楚,那表現真是令人感同身受。Anne Hathaway飾演初入社會的小女生,對抗穿prada的惡魔;她充分的表現出其倔強、不服輸。

其實每個人都會追求成為目光的焦點,不論是在見面的打扮、事業的成功等等。但當你往這方向走的時候,是否能有機會一直思考這種生活是否是你所希望的呢?人是貪心的,總想要活得精采。如何在人生的路途上,搖搖擺擺的走,修正自己的路;我想,這是人生中的最大課題。其中,知道該修正自己時,還需要向未知、不穩定邁步的勇氣
賴廣甫Kim Lai賴廣甫Kim LaiKimk Lai

星期二, 2月 13, 2007

創意製圖


賴廣甫
今天由cym的blog看到了神奇的圖片.....
是由這個網站 ImageChef 製做出來的~

小試了一下,這張圖片像不像真的咖啡拉花呢?

星期二, 1月 30, 2007

雜記

賴廣甫
話說被某人鼓勵要多增加產量之後,懶惰的我要開始在blog上寫生活雜記了。

最近台北冷得要死,起床完全不想洗臉(洗手台對面有大樓風 Orz)。但是看到雅婷、泡芙她們在國外都是向下破蛋的;相比之下,俺還是很幸福的?? 也許因為如此,泡在溫水游泳池中,還真是舒服.....

把阿健上傳的古琴曲挑出來聽,雖然音質不好,但大師彈的就是不一樣....聽著聽著,我又想把琴拿出來了,自己彈琴,爽度又往上提升!
ps. 最近發現在琴腳的地方,琴身有些裂開,不知道要不要緊....改天找阿健或花輪幫我看一下?

星期五, 1月 19, 2007

XGL, E17

Well, there're lots of window manager.
But I think the 2 ones above have most credits of eye-candy !

If your video card is Intel integrated chipset, than maybe you should try AIGLX rather than XGL.
I saw combinations of GNOME+XGL or KDE+XGL, and I've installed AIGLX+Beryl+GNOME on Intel 945G successfully. I have to say XGL's transparency and cube's rotation is really outstanding. When you press ALT+wheel, you can tweak the transparency. When you press SHIFT+wheel, you can tweak the lightness. When you press windows key+wheel, you'll get a zooming!
It's a good news that XGL seems to be easily installed on Ubuntu Edgy(6.10).
And also, edevelop.org team has been working Elbuntu which window manager is Enlightenment 17 rather then GNOME.

Ubuntu had been a excellent distribution with nice compatibility. Now, I can see it will be a shining distribution!
賴廣甫

星期三, 1月 10, 2007

FILE的IO與Encoding

常用的IO class StreamReader就可以設定Encoding
StreamReader sr = new StreamReader("dic/wordlist_utf8.txt", Encoding.UTF8)

至於要把程式內的utf8 string轉成其它Encoding,以下是msdn的示範
string unicodeString = "This string contains the unicode character Pi(\u03a0)喔 是這樣嗎";

// Create two different encodings.
Encoding ascii = Encoding.ASCII;
Encoding unicode = Encoding.Unicode;

// Convert the string into a byte[].
byte[] unicodeBytes = unicode.GetBytes(unicodeString);

// Perform the conversion from one encoding to the other.
byte[] asciiBytes = Encoding.Convert(unicode, ascii, unicodeBytes);

// Convert the new byte[] into a char[] and then into a string.
// This is a slightly different approach to converting to illustrate
// the use of GetCharCount/GetChars.
char[] asciiChars = new char[ascii.GetCharCount(asciiBytes, 0, asciiBytes.Length)];
ascii.GetChars(asciiBytes, 0, asciiBytes.Length, asciiChars, 0);
string asciiString = new string(asciiChars);

// Display the strings created before and after the conversion.
Console.WriteLine("Original string: {0}", unicodeString);
Console.WriteLine("Ascii converted string: {0}", asciiString);
簡單的說,就是利用Encoding.Convert轉成不同encoding的byte[],然後再把byte[]轉成char[]或是string。

星期五, 1月 05, 2007

Rmote Desktop 6.0

Network Level Authentication

Network Level Authentication is a new authentication method that finishes user authentication before you establish a full Remote Desktop Connection and the logon screen appears.

The advantages of Network Level Authentication are as follows:
It requires fewer remote computer resources at first because remote computer uses a limited number of resources before it authenticates the user. In earlier versions, the remote computer starts a full Remote Desktop Connection.
It can help provide better security by reducing the risk of denial of service attacks (a denial of service attack attempts to limit or prevent access to the Internet).
It uses remote computer authentication. This helps protect users from connecting to remote computers that are set up for malicious purposes.

Server authentication

In Remote Desktop Connection, server authentication verifies that you are connecting to the correct remote computer or server. This security measure helps prevent you from connecting to a different computer or server than you intend to connect to. This also prevents you from unintentionally exposing confidential information.

Resource redirection

The Remote Desktop Connection 6.0 client update helps you redirect Plug and Play devices that support redirection.

TS Gateway servers

A TS Gateway server is a type of gateway that enables authorized users to connect to remote computers on a corporate network. These authorized users can connect from any computer by using an Internet connection. TS Gateway uses the Remote Desktop Protocol (RDP) together with the HTTPS protocol to help create a more secure, encrypted connection.

However, earlier versions of Remote Desktop Connection cannot connect to remote computers across firewalls and network address translators. This behavior occurs because port 3389 is typically blocked to enhance network security. Port 3389 is the port that is used for Remote Desktop connections. However, a TS Gateway server uses port 443. Port 443 transmits data through a Secure Sockets Layer (SSL) tunnel.

The advantages of a TS Gateway server are as follows:
It enables Remote Desktop connections to a corporate network from the Internet without setting up a virtual private network (VPN) connection.
It enables connections to remote computers across firewalls.
It helps you share a network connection with other programs that are running on the computer. This enables you to use the Internet service provider (ISP) connection instead of the corporate network to send and receive data over the remote connection.

Terminal Services Remote Programs

Remote Programs are a feature of Windows Server Terminal Services that lets client computers connect to a remote computer and use programs that are installed on it. For example, a workplace may have a remote computer to which employees can connect and run Microsoft Word. An administrator must first publish the programs for end-users to access them. The experience is the same as running a program that is installed on the computer.

Remote Programs make system administration easier because there is only one copy of a program to upgrade or to maintain instead of many copies that are installed on individual computers.

Monitor spanning

Remote Desktop Connection supports high-resolution displays that can be spanned across multiple monitors. However, the total resolution on all monitors must be under 4096 x 2048 pixels. The monitors must have the same resolution. Additionally, the monitors must be aligned side-by-side.

To have the desktop of the remote computer span multiple monitors, type Mstsc /span at a command prompt.

Visual improvements

Remote Desktop Connection now supports 32-bit color and font smoothing.
ref link:
http://support.microsoft.com/kb/925876