#/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月24日 星期二
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
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
2014年4月24日 星期四
DynamoDB vs MongoDB NoSQL
I recently migrated my MongoDB to DynamoDB, and write 3 blogs to share some experience and data about performance, cost.
Migrate from MongoDB to AWS DynamoDB + SimpleDB
訂閱:
文章 (Atom)