2014年6月24日 星期二

Python 標準輸入

#/usr/bin/env python 

import sys 

counter = 1 
while True: 
        line = sys.stdin.readline() 
        if not line: 
                break 
        print "%s:%s" % (counter,line) 
        counter += 1

2014年6月18日 星期三

unix 系統基本指令



[控制鍵]: 首先要了解在下命令時一些控制鍵的用法 :

  Ctrl-U 刪除整行命令行
  Ctrl-W 刪除命令行的最後一個字(Word)
  Ctrl-C 中斷程式或 shell script
  Ctrl-Z 暫停程式或 shell script
  Ctrl-S 暫停往下顯示
  Ctrl-Q 繼續往下顯示
  Ctrl-O 不要程式的輸出, 但不中斷程式
  Ctrl-D 終止檔案輸入(EOF), 或 Logout

與檔案目錄有關的特殊字元

  .  現在目錄 (一個句點)
  .. 上一層目錄 (兩個句點)
  ~ User 之主目錄 (老鼠尾巴)
  ?  檔名之單一字元 (問號)
  *  檔名之所有字元 (星號)

以下摘錄 unix 較常用之命令, 其中也包含了部份 csh 之 Built-in commnad :

ls 顯示目錄內容, 同 DOS 之 DIR
  ls -al  詳細顯示此目錄內的所有檔案 (包含以 . 開頭之隱藏檔)
  ls *.c  顯示此目錄內的所有結尾為 .c 的檔案 (unix 無所謂附檔名)

cd切換目錄
  cd  切換目錄至您的主目錄
  cd ..  切換目錄至上一層目錄
  cd /usr/bin  切換目錄至 /usr/bin

pwd 顯示現在目錄的路徑

2014年6月17日 星期二

處理 command-line options using getopt()

$./order_pizza -d now -t Anchovies Pineapple
Output:
Thick crust.
To be delivered now.
Ingredients:
Anchovies
Pineapple

2014年6月13日 星期五

記憶體與指標

int doses[] = {1, 3, 2, 1000}
int *t = doses;
//doses[3] == *(doses+3) == *(3+doses) == 3[doses]

//sizeof(doses) == 16

//sizeof(t) == 4(32bits) or 8(64bits)
//傳遞陣列變數給指標會發生退化(decay)

//不可做指標乘法但可以做指標加法


//使用fgets來取代scanf,因為fgets的function signature中,長度是必要項


//避免這樣的寫法 char *s = "Some string";
//改用這樣的寫法 const char *s = "Some string";
//因為字串 "Some string"本身存在於唯讀記憶體區段,好的寫法可以避免產生這種錯誤
//s[0] = 'S';

//declaration 宣告是一段程式碼,聲明某個東西(變數, 函式等)存在
//definition 一段程式碼

$(./bermuda | ./geo2json) < spooky.csv > output.json
//此命令利用管線(|)將行程(bermuda)的標準輸出連結到另一行程(geo2json)的標準輸入,並利用括弧將兩支獨立的程式當成單一程式,標準輸入的資料(spooky.csv)透過redirect standard input operator(<)來重導向至行程(bermuda),並且透過redirect standard output operator(>)來將行程(geo2json)之標準輸出導向檔案(output.json)。

FILE *in = fopen("i_dont_exist.txt", "r");
//Not Safety

FILE *in;
if (!(in = fopen("i_dont_exist.txt", "r"))){
  fprintf(stderr, "Can't open the file.\n");
  return 1;
}
//Safety

2014年4月28日 星期一

C++ Nested Classes 巢狀類別

在巢狀類別結構中,外部類別不能存取內部類別的私用成員,如果想要存取內部類別的私用成員的話,必須宣告外部類別為friend,例如:
class PointDemo {
    ...

private:

    // Nested Class
    class Point {
        friend class PointDemo;
        ....
    };
    ....
};

2014年4月25日 星期五

Syntax error: Bad for loop variable

PROBLEM DESCRIPTION

for ((i=1;i<=100;i=i+1))
do
echo "$i"
done

執行以後
顯示
test2.sh: 1: Syntax error: Bad for loop variable

SOLUTION

把dash關掉
sudo dpkg-reconfigure dash