跳到主要內容

發表文章

目前顯示的是 3月, 2019的文章

[解決方法] Gitlab runner 執行 docker build 時報錯, permission denied

前言 Gitlab 是個非常好用的CI/CD工具(平台), 我們將所有要做的事情(如編譯, 測試, 產生docker image)定義在Pipeline裡, 讓 Gitlab Runner 去執行, 進而實現自動化的建置與部屬 而如果自動化的過程中出現問題, 也可以去追蹤輸出的log來找到原因 錯誤訊息 當 Gitlab Runner 執行 docker build 的指令時, 若出現以下錯誤訊息 Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post http://%2Fvar%2Frun%2Fdocker.sock/v1.38/build? ... 表示執行指令的身分沒有足夠權限 由於Gitlab Runner 會以gitlab-runner的身分去執行指令 所以解決方很簡單, 只要把 gitlab-runner 加到docker的群組中就行了 Step 1. (Optional) 若沒有docker群組的話需要建一個 sudo groupadd docker Step 2. 加入 gitlab-runner sudo usermod -aG docker gitlab-runner 最後, 重啟 docker服務或者重開機

[Linux] Shell Script中的 {@:2} 是什麼意思

... {@:2} 是什麼意思 ... 很簡單, 就是傳入shell script的參數很多時 我們可以從中選擇出前兩個, 舉例來說: 假設我們在執行setup.sh 時帶入五個參數1, 2, 3, 4, 5 $ ./setup.sh 1 2 3 4 5 那麼在shell script中的指令 echo ${@:2} 就會印出 1 2 要注意的是  ${@:2} 的輸出是個 字串 如果想以陣列的方式取出參數的話, 可以用 ... vars =( "${@:2}" ) ...

VS Code 如何遠端編輯你的程式碼

前言 有時候當我們想編輯雲上server裡的檔案時, 一般的作法就是SSH進去, 接著用vim開檔案編輯 但是不管是用vim 還是用 nano, 這些編輯器的介面實在是有夠醜的 用過VS Code 的人應該都知道, 他的介面簡單又好看, 而且還有Code Syntax Highlight等功能, 讓我們在編輯時不會看到眼花撩亂 今天就來分享如何用VS Code來做遠端編輯 Step 1. 安裝必要的Plugin 打開VS Code 進入Extension的頁面後( Ctrl + Shift + x ), 搜尋 SSH FS 並且安裝 Step 2.  打開User Setting File > Preferences > Settings (或是 Ctrl + , ) 搜尋 sshfs.configs 選擇 Edit in settings.json Step 3. 編輯連線資訊(包含位址帳密等等) Step 4. 連線 鍵盤上按F1選擇 SSH FS: Connect as Workspace folder 這個指令 最後, 若連線成功的話, 就可以在左手邊側欄看到遠端伺服器裡的檔案以及資料夾 Ref: https://marketplace.visualstudio.com/items?itemName=Kelvin.vscode-sshfs

[NLP] 聊天機器人之語意識別自己來, 實作Named Entity Recognition 專名辨別

前言 這一兩年來Chat Bot變得非常的火紅, 許多科技大廠也紛紛釋出SDK讓開發者們可以很快速地開發bot, 並且自由地將bot部屬在他們的平台上, 如Google DialogFlow, Microsoft Azure Bot service + Luis, Amazon Alexa Skill, Facebook Wit,... 尤其是使用DialogFlow或是Azure Bot Service的開發者們, 還可以省去串接社群頻道的細節, 專心在商務邏輯的開發 這些Chat Bot背後都運用到Natural Language Understanding的技術, 將使用者輸入的句子解析成最有可能的意圖(Intent)以及句子當中我們感興趣的字詞(Entity) 有了Intent與Entity之後, Bot 就能夠根據這些資訊來回答使用者的問題 相關技術:   Intent Classification: 預測目前的輸入句是屬於哪一種意圖   Named Entity Recognition, NER (專名辨別) :  從句子中挖出感興趣的字詞 基於這些技術, 開發者不需要在後端建立一大堆的條件判斷式, 以及Regular Expression 雖然這功能很好用, 但是天下沒有白吃的午餐, 這些服務的收費也是貴的很誇張, 如果想要省錢的話, 其實也可以透過開放資源自己去兜一個出來, 以下內容就教各位如何使用現成的開放資源來做NER Step 1. 安裝相關python模組  nltk / sklearn_crfsuite / sklearn $ pip install python-crfsuite nltk 下載NLTK上的套件 $ python -m nltk.downloader all Step 2. 將相關模組匯入 import nltk import pycrfsuite Step 3. 選擇語料庫 NLTK download 做完之後, 本機上會出現許多語料庫可以讓我們直接使用 這次的示範使用conll2000的語料庫, 基本上裡面的句子都已經以 IOB(Inside–outside–beginning)的形式 被標註好了 IOB(Ins

[簡易教學]快速建立深度學習的環境 CUDA + Tensorflow + virtualenv

前言 隨著電腦運算能力的增強, 特別是GPU的出現, 讓深度學習這個領域變得非常火紅, 進而成為目前人工智慧的主流, 由於他實在很強大, 現在不管是Google, Amazon, 或是Microsoft都在積極地推出深度學習的相關應用, 難道深度學習只有像Google這種大公司才玩得起嗎?  ( 答案是:  No) 建立一套深度學習網路並沒有想像中那麼難, 以下就教各位如何快速地建立一個深度學習的環境 Step 1. 安裝NVidia驅動程式 一開始可以先用ubuntu-drivers devices列出你的顯卡需要裝什麼驅動, 如果沒有特別的偏好, 直接用 autoinstall來裝就可以了 ubuntu-drivers devices sudo ubuntu-drivers autoinstall 安裝完後建議重開機 Step 2. 檢查是否安裝成功 nvidia-smi 可以用來監測GPU的使用率 nvidia-smi 如果驅動有安裝成功, 基本上可以到目前GPU的使用狀況 Step 3. 安裝 CUDA & CUDNN # Add NVIDIA package repository sudo apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/7fa2af80.pub wget http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/cuda-repo-ubuntu1604_9.1.85-1_amd64.deb sudo apt install ./cuda-repo-ubuntu1604_9.1.85-1_amd64.deb wget http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1604/x86_64/nvidia-machine-learning-repo-ubuntu1604_1.0.0-1_amd64.deb sudo