2020年8月23日 星期日

windows wsl2 ubuntu-18.04下編譯安裝使用cool-retro-term

cool-retro-term主頁: https://github.com/Swordfish90/cool-retro-term


windows端:

下載vcsrv (https://sourceforge.net/projects/vcxsrv/)

安裝vcsrv,照預設裝即可,安裝時會提示windows防火牆已封鎖xming部分功能,記得需選中允許在公用網路或私有網路使用通訊之選項(若不確定現在用的網路是何種,可以先將兩者勾選起來)

安裝完畢後,在windows搜尋列搜尋允許的應用程式,並打開。確認VcXsrv windows xserver / Xming X Server有被勾選中,且目前在使用的公用/私有網路也有被勾選起來,若不確定現在是使用公用還是私人網路,可先將兩者勾選起來,並記得按下確定












vcsrv 啟動時須先啟動xlaunch(windows 搜尋列搜尋xlaunch並點選)

會看見設定選單第一頁照預設即可,第二頁需要取消勾選native gl,並勾選disable access control, ,再帶-ac參數,如下圖一

圖一


接著將此設定存檔如圖二,之後可以拿來讓xlaunch自動load此設定檔並執行xming

最後按完成鍵即可














圖二


接著啟動xming (windows 搜尋列搜尋xming並點選,點選後xming即可)


wsl2端(在此範例即開啟wsl2下的ubuntu-18.04):

sudo apt-get update

sudo apt install build-essential konsole x11-apps x11-xserver-utils qtchooser  qmlscene qt5-qmake  qt5-default qtdeclarative5-dev qml-module-qtquick-controls qml-module-qtgraphicaleffects qml-module-qtquick-dialogs qml-module-qtquick-localstorage qml-module-qtquick-window2 qml-module-qt-labs-settings qml-module-qt-labs-folderlistmodel wget 


vi ~/.bashrc(進入編輯模式可按i),在文件尾端加入以下四行

export DISPLAY_NUMBER="0.0"                                                                                     

export DISPLAY=$(grep -m 1 nameserver /etc/resolv.conf | awk '{print $2}'):$DISPLAY_NUMBER  

export LIBGL_ALWAYS_INDIRECT=0

export QT_SELECT=qt5

存檔 (:wq)

source ~/.bashrc


git clone --recursive https://github.com/Swordfish90/cool-retro-term.git 

(current commit: dac2b4ff1608dc79020868bfe204985a9cf5bb23)

wget http://download.qt.io/new_archive/qt/5.3/5.3.1/qt-opensource-linux-x64-5.3.1.run

chmod +x qt-opensource-linux-x64-5.3.1.run

sudo ./qt-opensource-linux-x64-5.3.1.run

此時會跳出安裝選單,照預設安裝即可


cd cool-retro-term

cd qmltermwidget

qmake && make

cp -r qmltermwidget/src/qmldir qmltermwidget/lib/kb-layouts qmltermwidget/lib/color-schemes qmltermwidget/src/QMLTermScrollbar.qml qmltermwidget/QMLTermWidget

sudo make install

cd ..

qmake && make

sudo make install


USER請改為你的帳戶名稱

sudo chown -R USER:USER ~/.local/

(此指令為確保cool-retro-term能在~/.local資料夾下以non-root權限做文件操作)


輸入以下程式名即可叫起cool-retro-term使用

cool-retro-term


之後每次重啟ubuntu-18.04或使用cool-retro-term前,記得需要先開xlaunch做設定(前述第二頁需要取消勾選native gl,並勾選disable access control, ,再帶-ac參數)

再開xming server

最後在ubuntu-18.04環境下,叫起cool-retro-term即可


效果圖:




2020年2月9日 星期日

c qsort with string 用法

#include <stdio.h>
#include <stdlib.h>
#include <string.h>


int cmp(const void *a,const void *b)
{
    return strcmp(*(const char**)a,*(const char**)b);
}

int main()
{
    char *arr[] = {"eat", "teaa", "cat", "hat", "tata", "tae"};
    int size = 6;
    int i;
    qsort(arr,6,sizeof(char*),cmp);
    for(i=0;i<size;i++)
    {
        printf("%s ",arr[i]);
    }
    printf("\n");
    return 0;
}

cmp func中的a or b之意義為,array of string中的某一個element(即某一個string pointer)的位址,意即an pointer's address。

而關於strcmp(*(const char**)a,*(const char**)b),這一行中strcmp所需要吃的參數型態為const char*型態之字串,而a and b目前為const void*型態,故我們需要將他們轉型,首先先轉成前述an pointer's address,即an string's address's address之型態,故會先cast為const char**,cast完後a and b已是string's address's address,而strcmp的需求參數為const char*即為const string's address,故a and b只需要再加一個星號取值,即可拿到string' address並正確餵入strcmp func,故最後轉型方式為*(const char**)a,*(const char**)b。

2019年12月24日 星期二

windows 加入host對應ip

1. 編輯C:\Windows\System32\drivers\etc\hosts
用notebook記事本開啟即可

2.
最下方加入host對應ip設定
設定範本如下:
xxx.xxx.xxx.xxx host



3. 儲存即可生效。

2019年11月26日 星期二

vim 常用指令

簡易用法:
編輯檔案
vim file_name

按i即可進入編輯模式開始編輯。
編輯完畢後按Esc再打:wq即可存檔離開。

vim常用指令說明:

進入normal mode(模式)
按Esc

進入insert mode(編輯模式)
按i

normal mode下之常用指令
跳出程式
:wq 存檔並離開
:q 離開
:q! 離開且不存檔

0 移至行首
$ 移至行尾
^ 移動至當行字首
輸入數字再按Enter,即可跳至下n行(ex: 10再按Enter,即會跳至當行再往下的10行之位置)
輸入:數字再按Enter,即可跳至該檔案之第n行(ex: :10再按Enter即會跳至檔案中第10行之位置)

w 前往下個單詞
b 前往上個單詞

gg 移至第一行
G(大寫) 移至最後一行

yy 複製當行文字
y再按數字再按Enter,即可複製n行(ex: y2再按Enter,即複製當行與下一行)

p 貼上

反白區域並進一步操作
按下v進入visual mode,使用方向鍵選中,按下d則刪除反白區域;按下y則複製選種區域(若要貼上可先按Esc進入normal mode,移動至欲貼上的地方按下p即可貼上)


新增多行重複字串
按下ctrl+v進入visual block mode,使用方向鍵選中多行,再按下shift+i進入insert mode,再輸入欲新增的字串,再按下兩次Esc

進入visual mode
按v

進入visual block mode
按ctrl + v







2019年11月16日 星期六

Python pandas 套件使用

初始化dataframe資料:
方法一:
data = [[1,2]]
data2 = pd.DataFrame(data)
print(data2)

方法二:
data = [[1,2]]
data2 = pd.DataFrame(data,columns = ["col","col2"])
print(data2)

方法三:
data = pd.DataFrame(columns=["col","col2"])
print(data)

dataframe加入新的一行資料:
data = pd.DataFrame(columns=["col","col2"])
dct_data = {}
dct_data["col"] = 1
dct_data["col2"] = 2
data = data.append(dct_data,ignore_index=True)

dataframe存成檔案
data.to_pickle(file_path)

從檔案讀出原先存入的dataframe
data = pd.read_pickle(file_path)

2019年11月15日 星期五

Ubuntu 16.04 安裝 google-chrome

1. 開啟terminal並登入root用戶
確認是否有安裝wget,若無請透過以下指令安裝:
apt-get update && apt-get install -y wget

2.google官網下載google-chrome最新版本安裝包,並開始安裝。
以下為下載與安裝指令:
wget -c https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb && dpkg -i google-chrome-stable_current_amd64.deb ; apt-get install -f -y && dpkg -i google-chrome-stable_current_amd64.deb

3.使用方式,輸入以下指令即可開啟chrome瀏覽器:
google-chrome