You don't have javascript enabled. Good luck! :(

This is a test

You’ll find this post in your _posts directory. Go ahead and edit it and re-build the site to see your changes. You can rebuild the site in many different ways, but the most common way is to run jekyll serve, which launches a web server and auto-regenerates your site when a file is updated.

To add new posts, simply add a file in the _posts directory that follows the convention YYYY-MM-DD-name-of-post.ext and includes the necessary front matter. Take a look at the source for this post to get an idea about how it works.

Jekyll also offers powerful support for code snippets:

def print_hi(name)
  puts "Hi, #{name}"
end
print_hi('Tom')
#=> prints 'Hi, Tom' to STDOUT.

Check out the Jekyll docs for more info on how to get the most out of Jekyll. File all bugs/feature requests at Jekyll’s GitHub repo. If you have questions, you can ask them on Jekyll Talk.

  Jun 5, 2018     WenYuan     Linux  UPDATE:

在 Linux 上寫 C 語言該注意的事

我將告訴你 - 在 Linux 上寫 C 語言該注意的事

1. if…else… 排序

有學過計算機結構學就會了解, CPU 會將你的指令一行一行照順序地 Fetch 進 Instruction Memory , 因此可以想像, 如果我們 將發生機率高的程式區塊放在 if 中的話, 便會讓程式整體的效率提升, 如下所示:

if(Condition){
    // 放發生機率高的事件  
} else{
    // 放發生機率低的事件
}


2. static 的運用

重要的 函式或變數要使用 static 來宣告, 可以避免多個程式連結執行時, 因為在其他檔案中已宣告過相同的函式或變數而發生錯誤, 宣告方式如下:

static int errno; // 宣告變數
// 宣告函式
static void function(void){
    
}

使用 static 宣告的函式或變數代表只在該程式中有效


3. 善用 #define

在程式中儘量不要出現數字, 固定的數字儘量使用 #define 來定義, 其一是為了方便管理程式, 其二是怕你不小心敲到鍵盤多打到其它數字, 這時你就 GG 了, 因為你很難在幾千甚至上萬行的程式中找出錯誤點, 宣告方式如下:

#define PI 3.14159
#define BUFSIZE 1024

聽說在某些外商公司會強烈要求程式中不可以出現數字


4. 善用 man page

使用函數時要先看 man page 中是如何定義該函數的型態, 例如下方:

ssize_t write(int fd, const void *buf, size_t count);

你可以看到 write() 的回傳參數型態是 ssize_t , 一般情況下可能不會方生錯誤, 但是當你換到不同的 CPU 架構或者其他執行平台時就可能會發生錯誤

假設你想看 write() 的函數定義,你可以再瀏覽器搜尋 man write


5. 有借有還,再借不難

不管你是分配了動態記憶體或者開了新的 file descriptor , 只要你 不用時都要記得關掉 (釋放掉), 否則你的 程式可能會再執行一段時間後因為資源不足而掛掉, 如下所示:

int sockfd = socket(res->ai_family, res->ai_socktype, res->ai_protocol);
...
close(sockfd);
int *p = malloc(sizeof(int));
...
free(p);


6. 更為嚴謹的編譯方式

建議在使用 gcc 編譯時可以加入 -g -Wall 參數, 這兩個參數會 幫你編入錯誤訊息 (GDB可用) 以及顯示出所有警告訊息, 如下所示

/home/chris $ gcc -g -Wall exmaple.c -o output 

試著去除所有的 Warning Message , 讓你的程式更加完美


Reference

  • 學校上課內容


如果有其他要補充的, 歡迎下方留言告訴我