2017年12月7日 星期四

[github] github unable to connect to remote host

今天要用yaourt下載程式時,發現一直卡在git clone 的步驟
錯誤訊息長這樣:
 fatal: Unable to look up github.com (port 9418) Name or Service unknown
查了下資料,發現有可能是網路問題,後來在這個地方找到解決方式

可以先ping github.com
ping github.com
從ping得到的IP加上這串放到/etc/hosts裡面
received_ip github.com wiki.github.com gist.github.com assets0.github.com assets1.github.com assets2.github.com assets3.github.com
應該可以解決問題

2017年12月5日 星期二

Shebang #! 的用途

#英文名稱是sharp
!英文名稱是bang

在python或是shell script等腳本語言是不需要事先編譯的
但是每次要執行檔案的時候就必須用那些執行檔(python, sh),把腳本當成參數輸入才可以得到結果

Shebang的用途就是可以在腳本的第一行點出用來執行這個腳本的執行檔位置,之後就不需要再執行腳本時先打前面那些執行檔的名稱

用python來舉例
在沒有Shebang時,下的指令會是這樣   python test.py
但是如果在腳本裡面加上#!/usr/bin/python,就可以直接跑./test.py (要先把他轉成執行檔)

2017年11月18日 星期六

在不同的scope修改變數的值

其實一直知道就是要透過指標來完成
但是如果是要修改指標呢??那就要透過指標的指標來修改

舉例:

void modify(int *p){
     p = (int*)malloc(sizeof(int*));
     printf("address of ptr in modify(int*) = %p\n", ptr);
}
int main(){
    int *ptr = NULL;
    modify(ptr);
    printf("address of ptr in main() = %p\n", ptr);
    return 0;
}

比較粗心的人可能會覺得應該會印:
-------待補-------------
但是實際上的輸出是這樣:
------------待補------------

其實道理都一樣,如果要改到非自己scope的變數時(不管是不是指標),傳一個星星進去就對了!
為什麼是這樣呢?
我們呼叫function的時候,function會複製一份參數,所以當然傳過去改到的東西就只是在function scope 裡面改而已,想要改到我們原本傳入的參數,必須要傳入他的指標(如果是指標就傳指標的指標,如果是指標的指標就傳指標的指標的指標@@)

這樣function複製的東西就是我們要改的變數的指標了,因此我們可以再透過這個指標來改變他指向的變數

所以上面的程式應該要改成這樣:
void modify(int **p){
     p = (int*)malloc(sizeof(int*));
     printf("address of ptr in modify(int*) = %p\n", ptr);
}
int main() {
    int *ptr = NULL;
    modify(&ptr);
    printf("address of ptr in main = %p\n", ptr);
    return 0;
}

這樣就會是我們想要的結果了!

2017年10月17日 星期二

URI vs URL vs URN

URI (uniform resource identifier)
URL (uniform resource locater)
URN (uniform resource name)

2017年8月19日 星期六

[QT] build static QT

前陣子想要release程式又不想要額外附那麼多.dll檔,上網查了一下需要使用static build(靜態編譯)才可以,網路上直接下載的都是dynamic-build 的QT


這就去查了static linking 和 dynamic linking 的差別。

2017年6月22日 星期四

[QT] 利用QTcpSocket 建立連線

前陣子寫作業要用到連線,就有去研究一下官網的example

今天要實作出一個可以自己選擇要當host還是client,然後client要輸入IP和port,最後可以傳輸文字並顯示出來....