2008年7月21日

從XP救回在MBR的Grub

之前為了下載東西,所以一直沒有把Windows重灌,反而是先裝了Ubuntu。這下可好,一重灌完M$很貼心的把MBR給蓋掉了。開機再也看不到親愛的Grub選單了。總不會又要我重灌一次Ubuntu吧,那可是會瘋掉的。所以就開始上網找,以下是我成功的方法吧。

1. 首先先確定XP可以正常開機,如果連M$都有問題,可以用XP的FixMBR。

2. 下載WinGrub。

3. 照裡面的選單把Grub安裝到MBR ﹝要選磁碟機﹞,或者是BOOT.ini裡面﹝註﹞。

4. 我自己是安裝到MBR以後用UBUNTU的光碟開機進去終端機打以下指令:
﹝如果沒有先安裝到MBR,UBUNTU光碟開機重裝不起來的樣子...﹞

$: sudo -i
$: grub // 底下是Grub的畫面
grub> root (hd0,0) // 參考對應的硬碟,root跟括號之間要有一個空白。
grub> setup (hd0) // 看是安裝到哪個硬碟,注意括號前面要有空白。
grub> quit

5. 重開機。

6. 這時候可以回去Windows裡面把WinGrub裝的Grub給移除了﹝假設是裝在BOOT.ini﹞

註:如果選擇裝在BOOT.ini,則要照他的說明檔在C槽下建立一個boot目錄,裡面在建立一個grub目錄,在grub目錄裡面要寫一個 menu.lst。詳細寫法跟Linux類似,可以參見說明,這樣Windows開機的時候就會多一個選項,選那個就可以看到自己寫的選單,此時再進 Linux重新安裝Grub就好。

2008年6月10日

困擾我很久 ... vector&array效能問題

最近又有一個慘痛的教訓
就是在選用vector還是一般的指標陣列來儲存變動的資料
vector真是個好物,只要一直塞東西進去就好
不用管你現在vector陣列的大小為何
vector都會幫你管得很好
但一般的指標陣列就不是了
如果要宣告一個可變長度的陣列
還必須先知道你要宣告的陣列大小
才能做出一個符合你期望元素數量的容器出來
而vector在解構的時後也蠻方便的,呼叫一下Clear()即可
一般陣列又要delete[ ] 再NULL他

是的,剛接觸到vector的人一定會覺得那是一個寶
我剛開始也是這樣
之前決定用vector來寫變動長度的容器,就不會有index計算的問題
用vector::Size()就可以得知你丟進去元素的量有多少
在去存取元素成員,可以減少index超過的問題
一般陣列有時候index沒有設想好的話,超過陣列長度的存取
雖可能不會造成程式的中斷
但是這樣很有可能會得到錯誤的資料
但是後來實際上機測試vector的效能
用一般陣列與vector陣列
建立2000筆資料時
速度是一般陣列遠超過vector
差了大約10~15倍
隨著資料增長
5000資料就差了30~50倍以上
後來才知道vector在插入新元素的時後
其實是在另外一塊夠大的記憶體區域把自己原本的資料複製過去
再把新加入的資料塞入最後面
所以幾乎大部分的時間都在做記憶體搬移的動作
速度蠻讓人蠻失望的
所以阿,一個程式的效能
往往取決於資料結構選定、時間複雜度的減少,記憶體使用狀況節省
要讓程式速度快,那要下的基本功與前置作業真的可不能少阿!
所以,vecor 是在"不得以"的狀況下,才去使用會比較好唷!

這是網路上看到的文章,完全就是我的情形阿 ...
一開始是用到這麼好用的東西,動態陣列這麼方便,操作也超級方便,就用上癮了 ...
沒想到,程式效能跟別人做出來的差好多,一直在想是不是vector的問題,這篇文章完全證實了我的想法!!!就是這樣 .....

2008年5月5日

以程式哲學改善工作效率

根據Eric Steven Raymond的自由閱讀著作「The Art of Unix Programming」,作者Gina Trapani根據「Unix哲學的基礎」這一章,歸納出了幾個無論對於寫程式、或是改善個人生活與工作效率都很有用的原則;這裡摘錄標題並簡介如下:

1. 將資訊切割成單純的片段,再用乾淨的介面將它們連結起來(模組原則)



例如用不同的工具(軟體、網站‥‥)來構成管理個人資訊和時間的系統;功能和資訊過度集中、過度複雜的做法,可能不利於個別部份的升級和更新。

2. 以資訊的呈現方式而言,清楚比小聰明重要(清楚原則)



記錄資訊的時候儘可能清楚易懂;例如備忘事項寫「問老王怎麼開公司,電話1234-5678」就比「來開公司吧」有用。同樣的,用這種精神來寫程式,也會讓下一個處理的人輕鬆得多,尤其那個人可能是幾年後的自己。

3. 將資料跟使用方法寫在一起,讓運用過程簡單又防呆(形式原則)



一開始就把完成工作所需的所有資訊準備好。例如在記錄「打電話給老王」提醒事項時,順手就把電話號碼寫上去;去一個新地方之前,把完整的地址電話等資料寫在隨身筆記上。

4. 如果事情非死不可,就讓它死得流芳百世(修正原則)



通常我們會儘可能隱瞞失敗,但這樣可能只會讓失敗再度發生。詳細檢討自己的失敗內容、找出失敗原因,然後找出解決方法。生活中的很多事情跟軟體開發一樣,都是不斷循環的流程,壞的地方沒有修好,下次還是會碰到。

5. 人的時間比電腦的時間更珍貴(經濟原則)



能讓電腦做的事情,就不要自己做。善用快捷鍵、將備份資料之類常做的工作自動化,縮短自己做這些事情的時間。讓電腦幫你做事,而不是你幫電腦做事。

6. 先把雛形做好再修整、系統能動了再減肥(優化原則)



無論做什麼事情,有用的方法或工具就是最好的;一旦找到好的工具,就先開始用,然後再慢慢調整使用方式,會跑比看起來漂亮更重要。

7. 時時考慮未來,因為它降臨的速度比你想像的快(擴充原則)



很少有工具可以用一輩子;所以無論資料或工作方式,都不要被現在的工具給鎖死,要讓它們隨著你一起成長。

*****
會想摘錄這幾條看似簡單的原則,是因為雖然簡單、卻打中了許多我們因而常常忘記的事情。

至少我自己是如此:常常記下要打電話給某人,卻沒有順手把電話抄下來,於是第二天還得花一次時間去查;也有很多設計師因為執著於某一小部份作品的完美,而曠日費時於修理幾乎無關緊要的小地方,卻忽略了整體的平衡整合、或是延誤了完成的時間。

寫程式也好、安排自己的工作或時間也好,很多提升效率的道理是共通的,端看我們是否忽略忘記、或者因為自己的執念而明知故犯,如此而已。

2008年4月25日

Ubuntu

每次要搬移檔案還是複製檔案都會權限不足
很麻煩 不過剛剛在網路上找到這段話

如果真是要複製檔案到特定目錄去的話
不需要去使用root的
只要在終端機輸入sodu nautilus
它會打開一個視窗
這個視窗是有root的權限可以讓你做檔案的移動
當你把檔案移動完後直接關掉這個視窗就好了
我常常在安裝軟體或移動檔案時使用這個指令
覺得這個指令蠻方便的

把這個指令記下來 我的Ubuntu會好用很多!

2008年3月26日

忘情歌




忘情歌
作詞:伍佰 作曲:伍佰

心裡面 能夠有多少空間
藏這原來的幸福 藏這你的美
鎖住在心間 還要經過多少年
它會變成了石頭 找不到出口

一個人 能夠有多少的句點
在每一條愛情路 多半是孤獨
當然也有甜 好不好停在那邊
讓我擁有一個我 重新的自我
完整的自我

盡情遺忘 明天的路我要向著陽光
堅持遺忘 我要和你揮別在那遠方
堅信遺忘 懷念你我帶這太多感傷
就算匆忙 我要好好體會人生流轉

一個人 能夠有多少的句點
在每一條愛情路 多半是孤獨
當然也有甜 好不好停在那邊
讓我擁有一個我 重新的自我
完整的自我 再一次的我

盡情遺忘 明天的路我要向著陽光
堅持遺忘 我要和你揮別在那遠方
堅信遺忘 懷念你我帶這太多感傷
就算匆忙 我要好好體會人生流轉

空白的心中會有清澈的水讓我徜
那一個地方可以大聲呼喊像在海洋

盡情遺忘 明天的路我要向著陽光
堅持遺忘 我要和你揮別在那遠方
堅信遺忘 懷念你我帶這太多感傷
就算匆忙 我要好好體會人生流轉

2008年3月14日


我的wii終於弄好了,晶片更新成功了,我看這個應該可以玩了吧
不過遊戲片不知道跑哪去,要回去重新在燒一次 ...d9片很貴 ...