2014年7月31日 星期四

PATH 改錯的補救方式

 

PATH 是環境變數裡面算最重要的了,今天在安裝cuda的時候不小心改道了,當下也沒察覺到,在睡前無聊登入時才發現「怎麼任何指令都沒辦法使用」,害我當下非常緊張。

擷取

一開始我以為是筆電的問題,於是換了桌電試試看,但沒有發生任何改變,於是我嘗試改用 root 的帳號登入,確認 root 的帳號是正常的,於是我以 root 的帳號去查看了 /bin 資料夾,確認了 ls 仍健在。

最後我才想到會不會是 PATH 的設定不正確才導致這種情況發生,於是便使用root 的權限把我的家目錄中有對 PATH 進行修改的指令全部註解掉,並且重登。

在執行此動作之後,電腦就正常了。

其實早就該想到了,畢竟癥狀是「上一次登入沒事,過幾分鐘後登入就出事」,而會因為重登而改變的,大概就是 .bashrc .bash_profile .vimrc 之類的東西,或是一些 init.d 裡面的程式,所以一開始就應該潮這方向檢查才對。

2014年7月30日 星期三

[讀書心得] 易讀程式之美學──提升程式碼可讀性得簡單法則

《易讀程式之美學──提升程式碼可讀性得簡單法則》 
Dustin Boswell,Trevor Foucher


這本書裡面敘述了許多 coding 時應該注意的地方,像是變數以及函式名稱的設定、註腳、排版等等應該注意的小地點,讓程式能更清晰、美觀

也許有人得問: 「美觀有什麼用?」

其實美觀的用處不少,像是我在寫些小東西的時候就經常發生一個狀況,那就是上個月我寫好的程式,過了一個月後的今天我得花兩倍的時間才能讀懂它,而要維護、修改得花更多的時間,這都是由於註腳、變數設定不當所造成的結果,而在這本書中有大量範例可以學習,進而改善這種小問題。

在閱讀此書時,我也遇到了一些困難。

這本書大量的運用許多作者們在進行「團隊開發」的經驗,這造成了我閱讀上有些無法理解,像是「帶領新人加入團隊」這個在書中經常出現的情況,我自己就比較難代入。

另外,書中在講解時,也大量的使用一些業界常用得技巧作為範例,像是物件導向(OO)等方法,這部分是我比較少使用的,雖然不至於看不懂,但也確實讓腦袋需要轉個彎才能理解。

綜合來說,這本書是很推薦給需要寫程式的人使用的,但如果是剛入門程式設計的人(如我XD),可能就比較沒那麼推薦馬上閱讀了,因為裡面許多飯粒可能會無法理解,或是需要再另外進行查找的工作,相對無法用那麼輕鬆愉快的方法閱讀,這就有違本書撰寫的原意了。

聽說本書的英文版本也很值得閱讀,有興趣的人可以去買一本來看看。

2014年7月28日 星期一

[ALPS] SimpleGraphs

這是個簡單的繪圖,共有五個端點 (vertices) 以及五個連結 (edges) ,這東西的定義方式我們會將它放在一個 Lattice.xml 之中,而其內容如下:

<GRAPH vertices="5" edges="5">
<EDGE source="1" target="2"/>
<EDGE source="2" target="3"/>
<EDGE source="1" target="4"/>
<EDGE source="2" target="5"/>
<EDGE source="4" target="5"/>
</GRAPH>

整個內容是使用 <GTAPH> 和</GRAPH> 包含起來的,這是XML的格式,習慣HTML的人應該也多少不會太陌生,其中每個 edges 必須清楚告知它必須從哪個點連接到哪個點,也就是 source 和 target ,而這定義的風格似乎是盡量從左上往右下走,目前我尚且不明白這部分是否有任何特殊含意


 


這裡也提供另一種定義方法,是讓 vertices 帶有顏色的,如下圖:



這裡的紅、綠、藍分別使用 0 、 1 、 2 作為代碼,根據這個圖片我們可以寫下如此定義





<GRAPH vertices="5" edges="5">
<VERTEX id="1" type="0"/>
<VERTEX id="2" type="1"/>
<VERTEX id="3" type="0"/>
<VERTEX id="4" type="2"/>
<VERTEX id="5" type="2"/>
<EDGE source="1" target="2" type="0"/>
<EDGE source="2" target="3" type="0"/>
<EDGE source="1" target="4" type="1"/>
<EDGE source="2" target="5" type="1"/>
<EDGE source="4" target="5" type="0"/>
</GRAPH>

和上一次的程式碼不同的是,此次我們明白的指出了 vertices 的 id ,並在後頭指明它的 type ,也就是顏色,而這些資訊被包裹在 <VERTEX> 中,edge 的 type 也被標記了,這代表的是圖中的虛線和實線,當然最外層必須以 <GRAPH> 和 </GRAPH> 包著。


在網站上也提供了簡短版本的定義,這是基於一些 default 的東西所產生的,像是 VERTEX 和 EDGE 如果不進行指定,它的 type 會自動設定為零,而ID如果不特別指定,也會自動依序排下等等...….我不是很喜歡這種做法,易讀性感覺會受到影響,但仍能做為參考:





<GRAPH>
<VERTEX/>
<VERTEX type="1"/>
<VERTEX/>
<VERTEX type="2"/>
<VERTEX type="2"/>
<EDGE source="1" target="2"/>
<EDGE source="2" target="3"/>
<EDGE source="1" target="4" type="1"/>
<EDGE source="2" target="5" type="1"/>
<EDGE source="4" target="5"/>
</GRAPH>

 


接著是座標的部分,我們同樣可以使用直接指定座標的方式來定義 vertics





<GRAPH vertices="5" edges="5">
<VERTEX id="1"> <COORDINATE> 1 1 </COORDINATE> </VERTEX>
<VERTEX id="2"> <COORDINATE> 2 1 </COORDINATE> </VERTEX>
<VERTEX id="3"> <COORDINATE> 3 1 </COORDINATE> </VERTEX>
<VERTEX id="4"> <COORDINATE> 1 2 </COORDINATE> </VERTEX>
<VERTEX id="5"> <COORDINATE> 2 2 </COORDINATE> </VERTEX>
<EDGE source="1" target="2"/>
<EDGE source="2" target="3"/>
<EDGE source="1" target="4"/>
<EDGE source="2" target="5"/>
<EDGE source="2" target="3"/>
</GRAPH>

這方法是多了一個子目錄來存放座標元素,實際上取用我猜應該會視用類似 . id.coorinate 之類的方法吧?


 


參考資料與圖源:
http://alps.comp-phys.org/mediawiki/index.php/Tutorials:LatticeHOWTO:SimpleGraphs

ALPS project 學習小記

最近被交代要去學習ALPS這套軟體,由於官方wiki上只有英文教學,所以閱讀進度有點慢,記憶、查詢起來也稍微有些吃力,故有此筆記來進行記錄。

 

ALPS 是個用來強關連量子系統的軟體,藉由它,可以比較輕鬆的設定網格阿、鍵結阿之類的東西,然後直接丟給它進行模擬,不用每次都自己從頭撰寫源碼,只要含入它的庫就可以使用不少功能。

 

ALPS的官方網站:http://alps.comp-phys.org

 

資料的完整度基本上是 英文>日文>簡體中文>繁體中文,關於這點並不讓人意外,不過令人在意的是日文的標題


「ALPSプロジェクトへようこそ」

 

哈哈,還真有點「N・H・Kにようこそ! 」的感覺阿,這點挺有趣的。

 

關於安裝,編譯上需要一些library,我之前嘗試裝過,但到最後編譯檔案時總是會出現錯誤提示,於是只得使用官方提供的「最簡單方法」來安裝,所謂「最簡單方法」就是直接開一個虛擬機器,把 ALPS官方所推出的 linux 發行板安裝進去。

 

livealps :http://alps.comp-phys.org/mediawiki/index.php/LiveALPS

 

由於這個發行版是基於knoppix這個版本開發的,所以預設並不會出現安裝提示,我們得到選單那邊去找"install to HDD"才行喔。

 

配置完環境之後得開始學習如何進行網格的定義方式了,這會放在下一篇之中。

2014年7月27日 星期日

新增 angry 於 bin

昨日,我姐又暴怒啦,老樣子是對我媽,怒火順勢延燒到今日,無人能擋

 

對於她,全家基本上是有了共識,就是最好不要碰到她的東西

 

但這件事說來簡單,做起來又是另一回事了,雖然大家都極盡可能的少碰她的東西,但偶爾還是會不小心接觸道,此時就是賭人品的時間了,她可能機率性的開始大爆發,也可能相安無事,這一切都是人品的問題。

 

至於昨天發生的事情是什麼呢? 為什麼又能這樣呢? 以下由我細細道來:

 

晚間,我媽經過餐廳,看到餐廳有著一盤手工餅乾,是我姐做的,覺得放著也可惜,於是想發送給公司同事。

 

基於「她的東西別亂碰」原則,我媽轉進我姐的房間詢問是否可以使用。

 

「餐廳上得餅乾我想拿到公司給同事吃,可以嗎?」老媽如是說。

 

「喔,可以阿」老姐正忙著打電動,便隨便回應了一句。

 

「對了,我看餅乾有些軟掉了,我重新烤過喔。」我媽又如是問,殊不知這是引火自焚的開端。

 

「喔,隨便啦。」我姐實際上並沒有聽清楚,眼睛盯著螢幕隨意的回上一句。

 

 

十分鐘過後……廚房

 

 

「欸這餅乾怎麼烤成這樣?!!!!!! 我的餅乾給你烤壞了啦!!!!!!」老姐見著有點略黑的餅乾如是說

 

「還好吧,有點黑黑的正常阿,沒有烤焦阿」老媽張著無辜的大眼求饒道。

 

「不管!!!!烤壞掉啦!!!!不准你拿去發!!!!丟掉啦!!!!給我重烤一次啦!!!!!!!!」老姐的聲音開始帶有點哭腔。

 

「哎唷~沒有壞掉啦,不然阿德你來吃吃看吧」老媽把臉轉向我。

 

迫於壓力,我只得拿起一塊餅乾放進嘴中。

 

「怎樣,還好吧??」

 

「什麼還好?!!!它壞掉了啦!!!嗚嗚嗚」老姐開始崩潰得哭起來了。

 

餅乾的味道倒還不錯,至少我自己比較喜歡烤久一點的香味……雖說「餅乾」這種食品我根本不喜歡……

 

「不管!!!!!!!這些餅乾全部丟掉!!!!!!誰也不准吃!!!!!!」

 

「好啦,我丟廚餘桶給豬吃啦……」老媽苦笑著回答,但「給豬吃」這句話右起了反效果

 

「給豬吃?!!!!!我的餅乾要給豬吃!!!!嗚嗚嗚嗚嗚嗚嗚嗚~~~~~~」老姐崩潰得嚎啕大哭

 

接下來我就滾回房間了。

 

這場景我見了不少次,只要自己不是當事人,說真的這場景還挺好笑的,一個大學畢業生為了餅乾這點小事虐家人,完全看不出來她和四葉妹妹中的朝儀年紀差不多,行為感覺比四葉還幼稚,頗有趣XD

 

經過廁所時看她有拿衛生棉,我猜生理期可能是爆炸的變因之一,於是我就弄了個簡單的發飆記錄

 

filename:angry

date>>~/family/angry.txt

 

大概就是簡單得把時間紀到檔案裡面,希望能統計出發飆的規律性

 

 

幹 給豬吃,太有趣了XDD

2014年7月23日 星期三

bash bind function key

As title

bind '"\eOP":"echo F1\n"'
bind '"\eOQ":"echo F2\n"'
bind '"\eOR":"echo F3\n"'
bind '"\eOS":"echo F4\n"'
bind '"\e[15~":"echo F5\n"'
bind '"\e[17~":"echo F6\n"'
bind '"\e[18~":"echo F7\n"'
bind '"\e[19~":"echo F8\n"'
bind '"\e[20~":"echo F9\n"'
bind '"\e[21~":"echo F10\n"'
bind '"\e[23~":"echo F11\n"'
bind '"\e[24~":"echo F12\n"'
bind '"\e[25~":"echo F13\n"'
bind '"\e[26~":"echo F14\n"'
bind '"\e[28~":"echo F15\n"'
bind '"\e[29~":"echo F16\n"'
bind '"\e[31~":"echo F17\n"'
bind '"\e[32~":"echo F18\n"'
bind '"\e[33~":"echo F19\n"'
bind '"\e[34~":"echo F20\n"'

大概就是這樣啦,把以上這塊複製到.bashrc裡面就可以了,按下去會發生有趣的事情喔