2019年5月27日 星期一

vim 基礎使用方法

i                 進入insert mode
esc            回到 normal mode
:                進入command-line mode

command-line mode

:q!                          離開不存檔
:wq                        存檔並離開

:n  <filename>      在目前目錄下,新增文字檔

:n    <path>           開新檔案
:e    <path>           開啟舊檔
:w   <path>           存檔
:w!  <path>           存檔 (管他唯讀,寫就對了)

 normal mode

dd                       刪除整行
yy                       複製整行
p                         貼上

x                         Delete
X                        Backspace

0                        行首
$                        行尾

/<keyword>       搜尋
n                         找下一個
N                        找上一個

u                        undo (上一步)
r                         redo (還原)
.                        重複編輯的動作

hjkl                   上下左右移動游標




2019年5月24日 星期五

tmux

C- 指的是 Ctrl + 某個鍵一起按
M- 則是 Alt 或 Option 和某個鍵一起按


C-b % 新分割區(垂直)
C-b " 新分割區(水平)
C-b 方向健 區塊切換
C-d 關閉區塊/視窗

C-b c 建立一個新視窗
C-b p 上一個視窗
C-b n 下一個視窗
C-b <num> 依照編號直接切換(編號顯示於狀態列)

C-b d 暫離(detach)
tmux ls 列出在背景執行的 session
tmux attach -t 0 選擇第0個section
tmux new -s <_name_> 賦予session一個有意義的名稱(<_name_>)
tmux rename-session -t 0 <_name_> 修改名稱(將section0 命名為<_name_>)
tmux attach -t <_name_> 回到<_name_>

C-b ? 查詢所有指令
C-c 離開 Help

tmux kill-session -t 0 刪除session
tmux kill-session -t <_name_> 刪除session
tmux kill-session -a 刪除全部


Ctrl + Shift + t        開新分頁



參考資料
https://andyyou.github.io/2017/11/27/tmux-notes/

2019年5月14日 星期二

解決 VS code 中使用 gdb 但找不到某些內建 function 的相關 debug 資訊的情況

若出現

Unable to open 'strcmp.S': File not found (file:///build/glibc-OTsEL5/glibc-2.27/sysdeps/x86_64/strcmp.S).

之錯誤訊息,可參考以下解法:


step 1


sudo git clone https://github.com/jeremie-koenig/glibc /opt/src/glibc

step 2


在launch.json檔案裡面 加入以下資訊

            "sourceFileMap": {
                "/build/glibc-OTsEL5/glibc-2.27/": "/opt/src/glibc/"

            }



參考資料:

https://stackoverflow.com/questions/13978692/strcpy-sse2-unaligned-s-not-found



Step 1 + Step 2

sudo git clone https://github.com/jeremie-koenig/glibc /build/glibc-OTsEL5/glibc-2.27

以下附上我可以成功debug的相關設定

launch.json

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "(gdb) Launch",
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceFolder}/a.out",
            "args": ["<", "D1"],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": true,
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ],
            "preLaunchTask": "Build",
            "sourceFileMap": {
                "/build/glibc-OTsEL5/glibc-2.27/": "/opt/src/glibc/"
            }
        }
    ]
}


tasks.json


{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "2.0.0",
    "tasks": [
        {
            "label": "Build",
            "type": "shell",
            "command": "make"
        }
    ]
}


2019/11/23 更新


其實好像不用clone
18.04 預設放在
file /lib/x86_64-linux-gnu/libc-2.27.so
裡面


2019/12/20 更新

請到這裡
https://ftp.gnu.org/gnu/glibc/
下載 glibc-2.27 的版本
放到/build/glibc-OTsEL5裡面
才能確保所有功能都正常

2019年5月8日 星期三

SSH 公開金鑰密碼系統認證機制

# sudo apt install openssh-server


【用戶端】


# ssh-keygen

剩下都直接按Enter

在家目錄的.ssh資料夾中
可以找到以下兩個檔案
- id_rsa
- id_rsa.pub

此時要把*.pub送給別人哦~

《複製SSH key到遠端主機》


# ssh-copy-id user8@192.168.50.88


《將遠端SSH key儲存到本地》

# ssh-keyscan 192.168.50.88 >> ~/.ssh/known_hosts



【伺服器】


《Step.1》


sudo nano /etc/ssh/sshd_config
PasswordAuthentication no
PubkeyAuthentication yes

然後重啟
# sudo service sshd restart


《Step.2》


# cd ~
# mkdir .ssh

# chmod 700 .ssh/
# nano .ssh/authorized_keys
# chmod 644 .ssh/authorized_keys

把欲連上來之公鑰,都附加在authorized_keys文字檔中

像是下面這樣,直接將兩組ssh public key貼到文字檔中
ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQEAgpglRknnY26B2KsueBMu/EmipMsZwkPiG8nsWIcU45P1WjFKNC3Fp3CRkEJQGvaI28Eeurxhyl8pAOI0Xyly6ykbZH0yvyKnujO/Mn8x8Ccvm7fGmb05PIUFZWi50wy7Q/v+OsTSITzk3MIlBJDjojyDlFwprhcEfv1/HGbh3446B86Bf2Pyaknx487KdcWonT5WP/E7MM+5hbwhTiPA6wJ9aoarZtBAa2BeAEvshBAaJUKl0ruxD7hn2fMZyOfscUEPAuxMIIZon1vKy/L0/Z7J26sgekahm63YxZd09gNEj6447QSS18eGVNFsNs7rT0MlTfkgRkHsGtUq/m1fMQ== rsa-key-20190508

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDO2Sz6EQlBUwhCwa7Om8uxfR4tSYOMu938AIyR+qs86VXaBzLw1UgYiI2Bu3xfv9kcpQIVvIk5hIWQt9s1TV9wWzZN2juuib50aQvx6sf9n5rpqLBSxSztyQNW3Or6fTcrAC4PaDVihnh+HonbygLQKSU9/D+J8zZj27fNKz1p5qDkzGZGmsl2SfM4ZF0E7Q9lF8atRsAM2WC75n0x1NFlZzdZevQ6oHi21MtLD7DAZaaSWKjT7321/rwEnEsIv9NtjYq2loxCMsGjx6d1TCgWhHdv4Cbjf7iwmjSnVoTp4h2dYztSVRlbTe4ILXvUZpJC8Iy6ZPYYi5xe2aeAUTqb kh@kh-Virtual-Machine

2019年5月4日 星期六

MySQL 與 Entity Framework 6

今天終於把MySQL 與 Entity Framework 6接起來了

最後參考了這篇文章,才找到問題點
https://blog.mahonex.com/index.php/2018/11/26/vs2017%E4%BD%BF%E7%94%A8mysql%E5%92%8Centityframework%E9%97%AA%E9%80%80%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/

因此稍微整理一下資訊

[地雷1]
舊版的.NET Framework連接上可能會有問題
.NET Framework 選用 v4.7.2 就沒事了

[地雷2]
mysql的驅動要安裝下面的版本
注意版本要對到!!!!
mysql-connector-net-6.10.8.msi
https://dev.mysql.com/downloads/file/?id=480088
mysql-for-visualstudio-1.2.8.msi //這個應該可以載最新版沒關西(吧?
https://dev.mysql.com/downloads/windows/visualstudio/


參考步驟:

先安裝mysql的驅動
mysql-connector-net-6.10.8.msi
mysql-for-visualstudio-1.2.8.msi

安裝下面這個NuGet,注意版本要對到!!!!



經過測試,它會自動連下面這個一起安裝
(如果沒有的話,還請手動安裝)


正常來說,參考都會幫你加好,這邊只是列出來而已
接下來加入這個
選這個

新增連接

然後弄一弄就好了

最後應該會出現這個

然後按完成,就會開始產生程式碼
然後可以正常使用
最後附上這張,祝各位都找到可以用的版本

註:我連接的MySQL是直接連到GCP上的,它顯示的版本是5.7