2014年12月21日 星期日

QTranslate

QTranslate 是一款很好用的自動翻譯軟體

所謂自動翻譯,我的定義是能夠直接用滑鼠取字,並且能夠使用快速鍵(或不用)就直接在螢幕上顯示翻譯後的語言的功能。

 

之前我使用的軟體是 dr.eye 這套付費軟體,用得還算順手,但它總是會讓我的 Adobe Reader 當機,由於找不出問題,所以我只好改用其他的軟體。

 

而今天我找到了 QTranslate 這個小程式,它比起 dr.eye 檔案小很多,也比較不吃資源,速度不會比較遜色,故留個筆記以方便日後搜尋。

https://quest-app.appspot.com/

2014年8月31日 星期日

[ALPS] 使用法

總之,就是準備一個參數文件如下

parm.par

LATTICE="open chain lattice"
MODEL="spin"
CONSERVED_QUANTUMNUMBERS="N,Sz"
Sz_total=0
J=1
SWEEPS=4
NUMBER_EIGENVALUES=1
L=32
{MAXSTATES=100}
接著,使用 parameter2xml 來把參數文件轉換成 xml 檔案
parameter2xml parm.par
再來是直接用指令的方式執行它
dmrg --write-xml spin_one_half.in.xml
 
之前我一直以為 MODEL 中應該會放置實際上運作的方法,也就是所謂的「實作」,直到今天我才發現 MODEL不是這麼一回事,MODEL只是放置變數,以及針對 Bound、Site的「運算子」,而實作的過程、方法等則是放在 「dmrg」 這類已經被封裝好的中,難怪我之前都找不到。

2014年8月30日 星期六

[日劇] 流星之絆

原著是東野圭吾的同名小說,主要敘述著在滅門血案中遺族有明家三兄妹的故事。

2011052534219788_584_o

故事和小說不同的是,TV版本是從妹妹小靜被詐欺犯騙走了數十萬元開始,從而漸漸帶入十四年前的殺人事件,以及三兄妹在事件發生前的回憶。

除了回憶以外,也帶入了三兄妹間的夢想──「假如事件沒發生……」大哥的妄想也參雜在劇中,老爸和長大後的大哥一起在廚房鬥嘴鼓的畫面讓人更感鼻酸,同時也完全能體會遺族 (油其是大哥) 那深沉的恨意。

片中也探討了遺族在事件發生後的掙扎,到底「遺族」這個包袱要持續多久,要承受社會同情的眼光多久,「難道要一輩子當遺族嗎?」二哥如此說著。

雖然這麼說有些不好意思,但這部作品感覺上強調了人類的兩種情感,也就是愛和恨。藉由各種回憶的畫面以及人勿間的對白,很容易就把自己給代入到大哥的立場,深深的贈恨起了兇手,然而,在贈恨的同時卻又能同時感受到兄妹間相依為命的緊密羈絆,這兩者間形成了強力的對比,也讓三人的形象變得立體鮮明了起來,不再只是個飽含恨意的遺族,而是實實在在的人。

很推薦這個故事,小說很棒,而TV版則更加出色。

2014年8月15日 星期五

notepad++ 的ssh 功能

這次去台大學 cuda 程式設計,除了cuda以外也學到了用notepad++來編輯遠端伺服器的檔案

 

這是個很方便的做法,不過可惜我已經習慣用 vim 了,所以也就不太使用這個,但很推薦給剛使用 linux 的人使用。

 

主要的使用方式是編輯完成後上傳、覆蓋黨暗,而在結束後再回到 terminal 視窗來編譯執行。

 

以下介紹的影片,不介意聲音難聽的話就自行取用吧

2014年8月10日 星期日

Winscp ── 方便的 sftp 工具

過去我都是使用Filezilla 這套軟體進行檔案傳輸,其中能和 Windows 的檔案總管互相進行拖拉這點讓人覺得十分方便,且「站台管理員」這項功能也十分方便,CTRL+S 就可以快速叫出並選擇適當的站台,然而由於左半邊的「本地端目錄」幾乎沒有使用,且顯示模式僅支援一種,整個畫面經常給隱藏目錄給湮沒,總令人感到有些缺憾。

而最近我找到了另一個可以開sftp的工具──Winscp,它同樣支援檔案總管的拖拉,且顯示方式可以調整成類似檔案總管的方式,不用再看到左邊那浪費空間的本地端目錄了,這很符合我的需求。

另外,它似乎也能和putty做結合,可以直接在終端機上拖拉上傳、下載,但這方面我還沒去嘗試,以後可以試試看。

Winscp也可以直接把機台存成捷徑放在桌面,直接點開就可以開啟sftp連結,用起來和檔案總管沒有差太多,相當方便。

2014年8月5日 星期二

[ALPS]結合 Unit cells 和 lattice

通常我們建立晶格時,單一循環內可以不只有一個粒子,而這其中「單一循環」感覺就有點像是 Unit cells了,這個「單一循環」可以很負責雜,也可以很簡單

較簡單的例子:

以上圖為範例,這是一個有著六個循環的開區間晶格,而單一循環中也僅有一個粒子存在,而每個循環之間只有一個連結,上一個循環中的1號粒子會連結到下一個循環的1號粒子。

 

要描述這樣的情形,所需要的 XML 語法如下:

<LATTICEGRAPH>
<FINITELATTICE>
<LATTICE dimension="1"/>
<EXTENT size="6"/>
<BOUNDARY type="open"/>
</LATTICE>
</FINITELATTICE>
<UNITCELL dimension="1" vertices="1">
<VERTEX/>
<EDGE>
<SOURCE vertex="1"/>
<TARGET vertex="1" offset="1"/>
</EDGE>

</UNITCELL>
</LATTICEGRAPH>


這段語法大多數在前兩次的筆記中有提到過了,其中最值得注意的是橘色的部分,這兒有提到EDGE 的 SOURCE 和 TARGET 以及 offset ,所謂「offset = “1”」的意思是:「往前進一個循環」的意思,也就是橘色的整段的意思是:「來源是這的1號端點,目標是下一個循環的1號端點」的意思囉。


稍微複雜的例子──循環內不只一個端點



上圖就是這次要建立的圖像了,這2維的圖像中,每個循環中有兩個端點,分別是紅色(1號)以及藍色(2號),而每個循環之間則以紅色進行相連,方向是向右以及向上,語法如下:

<LATTICE name="square" dimension="2">
<BASIS>
<VECTOR> 1 0 </VECTOR>
<VECTOR> 0 1 </VECTOR>
</BASIS>
</LATTICE>
<FINITELATTICE name="rectangular periodic" dimension="2">
<LATTICE ref="square"/>
<EXTENT dimension="1" size="L"/>
<EXTENT dimension="2" size="W,L"/>
<BOUNDARY type="periodic"/>
</FINITELATTICE>
<UNITCELL name="complex example" dimension="2" vertices="2">
<VERTEX id="1" type="0"><COORDINATE> 0.3 0.7 </COORDINATE></VERTEX>
<VERTEX id="2" type="1"><COORDINATE> 0.6 0.3 </COORDINATE></VERTEX>
<EDGE><SOURCE vertex="1"/><TARGET vertex="1" offset="1 0"/></EDGE>
<EDGE><SOURCE vertex="1"/><TARGET vertex="1" offset="0 1"/></EDGE>
<EDGE><SOURCE vertex="1"/><TARGET vertex="2"/></EDGE>
</UNITCELL>
<LATTICEGRAPH>
<FINITELATTICE ref="rectangular periodic"/>
<UNITCELL ref="complex example"/>
</LATTICEGRAPH>


基本上就是多在UNICELL標籤中新增了兩個VERTEX而已,而下方的FINITELATTICE標籤則是使用了 ref 功能,也就是"參照以上"的意思。

2014年8月1日 星期五

[ALPS] 創建晶格以及單位Cells

又幾天沒碰 ALPS 了,有點心虛阿,今天稍微推進一下進度。

上次學到了要如何畫出一個簡單的圖出來,而今天要讀的是如何自訂晶格以及單位Cells。

晶格的就是固態物理中經常見到的那個,而單位 Cells 的 Cells 字典是翻做為「細胞」,但我想應該也可以有「單位元件」的意思,我想應該是代表在週期性晶格下的一個「周期」中的基本組成元件的意思,目前還不是很明白,總之先讀了再說。

晶格不一定是我們現實世界中的三維,在物理模型中,為了簡化計算等原因,經常出現二維或是一維的晶格,這應該是個近似的結果。而我目前比較常在計算中遇到的則是二維的,以下程式碼則定義了一個二維的、無窮大的晶格:

Infinite Lattices

<LATTICE name="2D" dimension="2">
<BASIS>
<VECTOR> 1 0 </VECTOR>
<VECTOR> 0.5 1 </VECTOR>
</BASIS>
</LATTICE>

這串程式碼定義出來的晶格會長這樣



這是一個無窮大的二維晶格,而其中組成它的兩組單位基底向量則是 (1,0) 以及 (0.5,1) 這兩組。


其中,1、0.5、0 這些數字是可以使用代數來替代掉的:





<LATTICE name="2D" dimension="2">
<PARAMETER name="a" default="1"/>
<PARAMETER name="b" default="1"/>
<PARAMETER name="phi" default="Pi/2"/>
<BASIS>
<VECTOR> a 0 </VECTOR>
<VECTOR> b*sin(phi) b*cos(phi) </VECTOR>
</BASIS>
</LATTICE>

這使用了 PARAMETER 這個標籤,代表我們定義了 a b 這兩個參數,而這兩個參數 (變數?) 會在後續的 VECTOR 中被使用到,而以上這段程式碼出來的結果會和上一個程式碼一樣。


 


Finite lattices


我們的計算通常不會出現「無窮大」晶格的狀況,因此我們必須嘗試去定義有限的晶格。一個有限大小的晶格如下:


TutorialLatticeHOWTOLLattice2.gif


要定義出這個晶格,我同樣得使用XML語法:





<FINITELATTICE name="5x3">
<LATTICE name="2D" dimension="2"/>
<EXTENT dimension="1" size="5"/>
<EXTENT dimension="2" size="3"/>
</FINITELATTICE>

和無限大的晶格不同,我們在一開始的標籤是使用 FINITELATTICE ,而在 EXTENT 標籤中,我們則會給定它應有的 size ,也就是該方向的晶格大小。


另外,藉由預設的設定「如果沒指定方向的 size ,則每個方向都會一樣大小」,我們也可以定義一個 Cubic 出來





<FINITELATTICE>
<LATTICE dimension="3"/>
<EXTENT size="4"/>
</FINITELATTICE>

同樣的,參數標籤在這裡也是可以直接使用





<FINITELATTICE>
<PARAMETER name="W" default="2" />
<LATTICE dimension="3"/>
<EXTENT size="W"/>
</FINITELATTICE>

 


Boundary conditions


邊界條件一直是物理上一個很重要的參數,在ALSP中,邊界條件可以有兩種設定:


open: 開放式邊界條件,出了晶格就是空空如也


periodic: 循環的邊界條件,出了左側的晶格後,會循環回到右側的晶格點,左右、上下相接


建立方式不難,只要在其中加上





<BOUNDARY type="periodic" />
就可以了。

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裡面就可以了,按下去會發生有趣的事情喔

2014年6月28日 星期六

tmux 教學筆記


tmux 是個在Linux文字介面下相當強大的終端機工具,可以很方便的模擬出無數個終端介面來使用 使用起來有許多方式,有點像在視窗介面下開了好幾個終端機視窗的感覺,也可以做到類似tty1~7的快速切換功能,相當方便 廢話不多說,看圖吧 擷取 這是我目前的tmux介面,這樣可以把整個介面切換成很多個部分,並且使用快速鍵進行切換、新增、調整終端機,很迅速又方便。 tmux下有三個概念,那就是pane、window、session,pane就像是上圖中的那些區塊,每個區塊就代表一個pane,而window則是代表畫面,一個畫面就是一個window,session則可以想像成「一串window」,示意圖如下: DSCN0021 以下是tmux下常用的指令: 在普通bash下可操作的指令:
tmux 新增並進入一個新的tmux session
tmux attach 回復最後使用的tmux session
tmux attach -t o 回復編號o的 session
tmux ls 查看目前有哪些 session
  進入 tmux 模式中,我們會使用功能鍵「ctrl-b」,這兩個按鍵按下去、放掉以後可以接以下的按鍵,可以啟動不同的功能
d 收回session,並離開tmux模式
c 創立一個新的 tmux window
x 關閉所處的 tmux window
" 創立一個新的 pane 分割原本的 window
% 同",但是垂直切割
t 打開時鐘
$ 設定session的代號
. 設定window的代號
{和} 讓兩個被分割的pane位置交換
總之大概就是這樣啦,其他還有複製貼上  
ctrl-b+[ 進入上捲模式,點q可離開
ctrl+shift+2 進入圈選模式
alt+w 圈選了目標區域後複製目標物
ctrl-b+] 貼上目標物於終端機輸入
參考網站: http://blog.vic.mh4u.org/2012/707
http://blog.chh.tw/posts/tmux-terminal-multiplexer/
http://jeffyon.blogspot.tw/2012/05/tmux.html

2014年4月23日 星期三

在命令提示字元環境下使用GCC


對於linux使用者來說,使用文字介面編譯是比較舒適的一件事情 ,但有時仍免不了要在windows環境下來寫程式,這時如果能在windows內建的命令提示字元中編譯那就太棒了。

要在windows的命令提示字元中使用gcc並不會太過複雜,我們需要的是安裝好Mingw這套軟體,並且修改windows下的環境變數 PATH 即可。


首先,到wiki中搜尋 Mingw,並進入該條目
http://zh.wikipedia.org/wiki/MinGW

拉到下面,找TDM-MinGW GCC 這個版本
 
 接下來是一連串的安裝動作,鏡站可以選擇台灣,會比較快


到此已經安裝完畢,但我們仍須改變環境變數,否則CMD無法自動幫我們找到GCC這編譯器



在環境變數的尾端加上你剛剛安裝的路徑,預設是C:\TDM-GCC-64\bin,記得在這串位置之前必須要有一個半形分號「;」,以隔開其他環境變數。

至此已經可以直接在CMD中使用GCC了

2014年4月12日 星期六

[python] 命令列參數 argv argc[] in python

 

在C語言中,argv 和 argc[] 這兩個命令列的參數相當常使用,主要用於引入外界的變數,可以動態的為程式配置不同的變數,節省修改程式再編譯的時間,相當方便

python也提供相同的功能,使用方式如下:

import sys
for i in range(len(sys.argv)):
    print "i=\t",i," argv=\t",sys.argv[i]
print “argc=\t” ,len(sys.argv)

這裡的sys可以視為一個物件,而argv則是sys的一個方法,可以顯示其中存有的元素這樣

[python] 資料輸出輸入方法

在科學計算上經常會使用的檔案的輸出以及輸入,在這方面python提供了一些功能可以使用

過去我會使用open函數,使用方式如下:

fi=open('workfile', 'r') ##讀取模式
fo=open('workfile', 'w') ##寫入模式
python提供兩種方式存取檔案,而打開檔案以後,存檔的方式更是相當簡單,例如以下為存檔

fo.write( string ) ##輸入的格式為字串
當然,寫入時的字串也可以經過格式化再輸出,像是以下輸出 1 2為例

fo.write(“%d\t%d” % (1,2))
則可以輸出 1 2至檔案中,相關的格式化方式和C很類似
而讀取的方式也很簡單

fo.read(字元數)
fo.readline() 
基本上是比較常用後者,因為這可以搭配string的一個方法 split 來切斷陣列
假設目前有一個檔案 data.dat 如下:

1  1.1
2 1.2
3 3.3
則讀取這個陣列使用方式如下:


x=[]
y=[]
fo=open("arr.dat")
while 1:
        line=fo.readline()
        if line=="":
                break
        line=line[:len(line)-1].split("\t")
        x.append(line[0])
        y.append(line[1])


以上是一般情況下讀取檔案的方法,然而在科學計算上,python提供了一組更加強大的工具包:numpy
在這函式庫中,也有一組主管檔案輸出輸入的函式──loadtxt 和 savetxt,可以直接輸出輸入在numpy中所定義的矩陣,使用方式如下:


from numpy import loadtxt,savetxt,zeros
arr=loadtxt("arr.dat")
x=zeros((len(arr),1))
y=zeros((len(arr),1))
data=zeros((len(arr),2))
for i in range(len(arr)):
        x[i]=arr[i][0]
        y[i]=arr[i][1]
        data[i][0]=x[i]
        data[i][1]=y[i]
savetxt("arr2.dat",data)

2014年3月13日 星期四

在 Win 7 環境中安裝 Python 2.7

Windows 下安裝一些東西總是比 Linux 麻煩些,同樣一件事在 Linux 環境下只需要 sudo yum install python 就可以結束,而在 Win 環境中就得多出幾個步驟,挺麻煩的。
讓自己能夠方便記憶,是這篇文章的目的,比起教學,其實更像筆記。
首先得到官方網站下載安裝檔,這裡可以選擇版本,基於習慣我選擇2.7版
http://www.python.org/
擷取
接著,執行安裝檔進行安裝,並記住安裝的路徑 (預設是C:\Python27)
擷取
接著為了能夠在命令列呼叫 python 互動式窗,必須修改環境變數
路徑是控制台>>系統及安全性>>系統>>進階系統設定>>環境變數
擷取
編輯「Path」,並在最後面新增「;%PYTHON_HOME%」(注意!!前面有分號)
擷取
並新增一個新的環境變數,名稱為「PYTHON_HOME」,而變數值則是剛剛安裝的路徑,預設為C:\Python27
擷取
至此已經完成安裝了,至於執行方面則是直接編輯好程式,並存成附檔名為 .py 的檔案,並直接點兩下執行即可

2014年2月5日 星期三

在大雪封閉的山莊裡

在大雪封閉的山莊裡立體書封

這本小說使用著推理小說中的超級老梗──大雪封閉的山莊,看到標題,原本以為這又是「名偵探天下一」的系列作之一,會是一本嘲諷本格推理的小說,然而實際上並非如此。

故事的主角是一群舞台劇演員,他們剛剛通過試鏡,一群人受到劇作家東鄉鎮平老師的指示前往深山的民宿住四天,並在這四天共同創作出一齣推理劇。背景的設定是推理小說的老把戲──在大雪封閉的山莊。在這過程中,團員們一個接著一個被宣告「死亡」,一開始團員們仍用著排演的心態看待發生的事件,直到元村「死亡」現場的染血花瓶出現,團員們開始懷疑這齣戲劇到底真的只是一齣戲,還是兇手精心策劃的殺人遊戲……

整本書對主角久我和幸的心境描寫得十分生動,很有代入感,同時由於書中所有角色都是職業演員的緣故,整本書比一般的偵探小說來更有懸疑感,感覺每個人的行動都像是在演戲,任何人都不能輕易相信。