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

2019年7月18日 星期四

selection sort實踐

void select(int arr[10])
{
    int i,j,min,idx,tp;
    for(i=0;i<10-1;i++)
    {
        min=INT_MAX;
        idx = -1;
        for(j=i;j<10;j++)
        {
            if(min>=arr[j])
            {
                min = arr[j];
                idx =j;
            }
        }
        tp = arr[i];
        arr[i] = arr[idx];
        arr[idx] = tp;
    }
}

int main()
{
    int arr[10]={5,3,2,2,0,1,3,4,6,8};
    int i;
    select(arr);
    for(i=0;i<10;i++)
        printf("%d ",arr[i]);
    printf("\n");
    return 0;
}

2019年7月13日 星期六

C 常數指標筆記

pointer to variable can not be modified, but pointer can be modified.

int a=1;
int b=3;
int const *p=&a;
const int *p2=&a;
*p=2; // failed
*p2=2; // failed
p=&b; // success
p2=&b; //success

pointer to variable can be modified, but pointer can not be modified.

int a=1;
int b=3;
int *const p=&a;
*p=2; // success
p=&b; // failed

pointer to variable can not be modified, and pointer can not be modified.

int a=1;
int b=3;
const int *const p=&a;
*p=2; // failed
p=&b; // failed

2019年6月23日 星期日

windows git push時credential出錯解法

windows 上需要push檔案到github上時,需要輸入帳密,若輸入完後,提示fatal: HttpRequestException encountered. ,可開啟左下角windows圖示,使用windows搜尋列搜尋Credential Manager,點入後清除git相關credential,之後再重新登入即可成功push。

2019年3月29日 星期五

scikit-learn train_test_split

使用方式:

import numpy as np
from sklearn.model_selection import train_test_split

x = [1, 2, 3, 4]
y = [5, 6, 7, 8]
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.25, random_state=0)
print(x_train,x_test)

輸出為:
[4, 2, 1] [3]

由此範例,可得知train_test_split會先對x和y做打亂的動作,再依據test_size參數,切train和test set。

2019年3月26日 星期二

將用戶加入docker群組內

將使用者加入docker群組內
sudo usermod -aG docker user

在免重開機的情況下,更新group cache
su - user

重啟docker服務
sudo service docker restart

接著使用者即可在免root權限的情況下使用docker。

windows架設之server連外設定

windows系統如果有,用自己電腦可用localhost存取到自身的server服務,但其他電腦卻無法連到此電腦的服務,這個情況發生。可以檢查是否為防毒軟體與防火牆的問題

解決方法為先檢查自己裝的防毒軟體是否擋掉了,可到防毒軟體內設定白名單,接著再用其他電腦重連測試,若還是沒有。可先關閉防毒軟體
,在進入windows開始列搜尋"防火牆",可找到"具有安全性的進階windows防火牆",點開進入視窗。


可在左邊的導航列,可看到輸入規則與輸出規則。
選取輸入規則,並點右鍵選新增規則。

接著根據需求選取所需要允許的程式或是連接阜,並按下一步。

如果選擇的是程式選項,那這邊就要選取想要允許的程式路徑,並點下一步;
如果選擇的是連接阜,那便要選定是tcp或是udp,並設定需要允許
特定本機連接阜port數字,並點下一步。

選取允許連線,並按下一步。

這裡會提示何時套用此規則,這邊依據需求選取即可,若是要提供對外服務,則照預設,三個選項皆勾起來即可,並點下一步。

這裡簡單的寫一下,這個規則的描述,並按下完成即可

當設定完後,且防火牆關閉的狀態下,理當外部電腦可連接到本機的服務。
如果還是沒有,可在設定輸出規則,而設定方式與前述一樣,設定完後理當可讓外部電腦連接到此電腦的服務。

若有測試成功,接著可嘗試再將防毒軟體開啟,並做白名單或相關的設定即可。

2019年3月19日 星期二

linux crontab 使用


編輯排程:
crontab -e
若出現提示選項,需要選定使用的編輯器,這邊直接選vim.basic即可
(vim用法請看這裡)

在文件最底下新增一行
SHELL=/bin/bash
這是用來指定crontab在啟動的時候會使用哪種shell,可根據需求選定想使用的shell,這邊是建議選定bash shell,因為其指令較sh shell齊全,且多數linux系統皆有裝。

接著在下方繼續新增一行,
根據需求設定何時要出發什麼樣的指令
ex:
0 12 * * MON touch /home/user/test
此指令是代表每個禮拜一的中午12點0分會touch /home/user下的test檔案
or
0 12 * * WED source/home/user/run.sh

測試:
有可能crontab的觸發時間為UTC時間,會與當地時間差了n小時,導致沒有在預期的時間點觸發,故可先設定一個比現在時間晚一點的觸發時間,測試crontab是否有正確工作。

若的確有crontab觸發的時間標準並非當地時間,有兩種解法:

1. 將crontab改為讀當地時間(若有管理員權限的話)
下date指令。
若顯示出來的時間與當地時間不同,則須透過下列指令設置系統的當地時間,
這裡的範例時區是asia/taipei,可根據需求作修改。
sudo timedatectl set-timezone asia/taipei

接著重新啟動cron deamon
sudo service cron restart

2. 另外一種為照著UTC時間反推回去設定觸發時間,例如:預計禮拜一中午12點要觸發任務,寫觸發指令的時候可改為4點觸發(即UTC 4點的意思)


顯示排程:
crontab -l






2019年3月10日 星期日

windows區域網路遠端連線


假如家中有多台windows電腦主機,若能透過其中一台遠端操作其他的電腦,則會方便很多。

ex: 現在家中有一台筆電,最近又購入了一台桌機,作為儲存用的硬碟機。其中一台要透過區網的方式控制另外一台。

1. 首先需要一台switch,這邊是買了一個300塊以內的switch。並準備n+1條網路線(n條是分給各個電腦的,另外一條則是若每台網路皆需上網的話,所需要連接至router用的)。
























2. 將每台電腦插入網路線,並連接至該switch,最後把在把連至router的網路線插在switch上。
像這邊的配置是最左邊的網路線會與router相連,
右邊兩條則是分別連到兩台電腦上

























3. 配置好後即可將所有電腦開機,第一次設定的話,需要分別設定每台電腦。

4. 若是被控端電腦,首先需要查看是否有成功連上switch(可看switch說明書說明何種指示燈代表連線成功,範例的這台是持續閃動則代表成功)。

5.首先需先查看此被控端電腦被switch動態配置到的ip是多少。

需先打開cmd介面輸入ipconfig

在乙太網路卡區域連線的欄位下,會看到類似下圖的資訊,

像是從此圖的資訊可得知目前電腦被分配到的ip為192.168.0.13,

可存取的ip值域為192.168.0.0~255,

預設閘道是192.168.0.1。




6. 接著在被控端電腦上,自行前往控制台 -> 網路和網際網路 -> 網路和共用中心

點選連線欄位的區域連線 -> 點選內容 -> 點選網際網路通訊協定第4版(若該行未被勾選,請勾

選起來),接著進入最後需要設定的頁面,點選使用下列的IP位址,並在其內照著在cmd中

打ipconfig,顯示的乙太網路介面內寫的內容填即可(填這裡的用意,是為了將該台電腦的ip固

定下來,以方便之後遠端控制的時候,可根據固定後的ip直接連到此電腦)

在使用下列的DNS伺服器位址欄位的第一欄內填寫 8.8.8.8,即google提供的dns服務(可讓電腦能成功使用一般域名上網的功能)。

最後記得在設定好的頁面中按下確定按鈕,並在前一個和前前一個也需要按下確定與關閉
























7. 在被控端電腦上設定自己的帳戶密碼,因為之後遠端連線到該台電腦,必須要有密碼才能連線成功,且較為安全。

設定方式為進入控制台 ->使用者帳戶和家庭帳戶->使用者帳戶,
選擇變更您的密碼。
設定好密碼後,之後不論是單機開此電腦,或是遠端連線此電腦,皆需要此密碼,故需要小心設定密碼或是抄寫下來。

8. 完成步驟7,則代表以完整設定好一台被控端電腦,若有多台則再從第4步開始作一次即可。

9. 主控端電腦現在已可直接透過區網方式,連線至被控端電腦。點選左下角開始圖示,並搜尋"遠端",即可看到遠端桌面連線選項,並點選之。


10. 填寫被控端在第6步所設定的IP位址,並填寫被控端的使用者名稱,接著下方的連線按鈕,即可連線進入被控端電腦,此時會提示輸入被空端的帳戶密碼,輸入之前在被控端電腦設定的密碼即可登入。


2019年1月9日 星期三

git 筆記


複製repo
git clone repo_url

將所有檔案加入追中
git add .

將所有追蹤的檔案提交至本地倉庫
git commit -m"commit message"

加入遠端倉庫url並在本地端以remote_name代稱
git remote add remote_name remote_url

將本地端commit紀錄推上遠端
git push remote_name local_branch_name:remote_branch_name

將遠端的分支刪除
git push remote_name :remote_branch_name

拉下遠端倉庫commit紀錄,並與當前分支合併
git pull

拉下遠端倉庫commit紀錄
git fetch

與遠端分支合併
git merge remote_url remote_branch

與本地分支合併
git merge local_branch

刪除本地端分支
git branch -d branch_name

新增一本地分支並用以存取遠端分支
git checkout -b local_branch_name remote_branch_name

切換版本並將更新工作目錄更改至當時commit之狀態
git checkout commit_id

編輯commit訊息
git commit --amend commit_id

顯示本地分支資訊
git branch

顯示所有分支資訊
git branch --all

顯示詳細遠端倉庫資訊
git remote -v