跳到主要內容

利用Visual Studio Code - Remote Development來建立開發環境

開發人員通常手上都會有多個專案要進行開發,但是不同專案可能會有不同的程式語言,不同的技術堆疊,不同的套件相依性,以及其它不同的第三方程式庫要安裝等。如果全部都安裝在本地,常常會遇到因為不同專案需求導致版本上的衝突。例如Angular與Node版本相依限制(可以參考Angular Version compatibility),不同版本的Angular其相依的Node/TypeScript/RxJS的版本都有限制。這種問題對開發人員來說其實很困擾,所幸Visual Studio Code有一個延伸模組-Remote Development,可以結合Docker建立開發人員所需要的開發環境,操作起來與在本地開發的體驗幾乎沒有差別,強烈建議使用。今天我們就用一個簡單的範例來演示一下如何透過Visual Studio Code Remote Development來搭建一個Python的開發環境。該範例會使用OpenCV來做影像辨識,並解析出文字,最後Print出來。

必要條件

  • 安裝Visual Studio Code與延伸模組-Remote Development
  • 安裝Docker Desktop

專案結構

  • hello-opencv.py- 主程式
  • line_avatar_yellow_480.png- 影像辨識的圖檔

從Visual Studio Code打開專案資料夾

設定開發容器

選擇在容器中開啟目前資料夾


選擇將設定新增至工作區

決定.devcontainer資料夾要放在哪裡,此範例與原始碼放一起。

選擇Image Template

此範例是Python應用,所以選擇Python 3 devcontainers。

選擇Image

選擇要添加的Feature

此範例會使用homebrew安裝OCR套件,需要其他的Feature可以一併選進來。

選擇保留預設值

依照設定自動啟動容器

啟動完成

留意左下角會顯示開發容器:Python 3

切換到遠端總管會出現我們建立的容器

修改devcontainer.json

此範例希望建立容器後自動安裝OpenCV相關的套件,所以在postCreateCommand區段加入了一些命令,這部分可視情況調整。

存檔後會提醒要重建容器,按下Rebuild即可

自動重建容器

等待重建完成即可。



進入Debug模式

選擇Python檔案

執行結果

OpenCV順利將圖檔的文字(EWS)解析出來。

參考資源


留言

這個網誌中的熱門文章

免費的SMTP Service?Twilio SendGrid

CI/CD工具無疑是開發人員的無形小幫手,大幅減輕開發員部署程序的工序,同時也提升了部署品質以及穩定度。通常我們會在pipeline增加一個郵件通知的post action,好讓CI/CD工具在完成部署時,通知相關人員部署成功或是失敗。 實際在客戶端配置CI/CD時,有時會遇到客戶端本身沒有架設SMTP Server的情況,這時候就需要藉助第三方SMTP Service,如果是免費方案就更好了😎。 Google了一下發現Twilio SendGrid滿足了我們的需求,它本身提供了一個 終身免費方案 ,該方案 每天可以發送最多100封郵件 ,相信這個額度應該可以滿足不少的族群,詳細定價方案可以參考官方網址  SendGrid Pricing 。 廢話不多説,我們直接進入主題,首先必須先注冊SendGrid賬號,注冊流程就不在此贅述,一旦注冊完成後,登入SendGrid接著三個步驟就完成了。 步驟一 建立API key 選單:Email API > Integration Guide,該範例我們使用SMTP Relay的方式。 輸入key name按下Create Key系統會自動生成一組密碼,記得把Server/Ports/Username/Password都複製保存下來,沒問題的話打勾 I've updated my settings ,點 Next: Verify Integration 完成設定。 步驟二 設定Sender Identity 該範例我們使用Gmail賬戶當作Sender,所以需完成Gmail賬戶驗證。 選單:Settings > Sender Authentication,按下 Verify a Single Sender。 接著按下 Create New Sender, 跳出如下畫面,填入適當資訊後,按下 Create ,過程中會發郵件到您的Gmail信箱進行身份驗證,所以務必輸入正確的郵件地址。 步驟三 發送測試 使用您熟悉的SMTP Client工具發送測試郵件就完成啦。

當Google Sites遇上Google Blogger

當Google Sites遇上Google Blogger會蹦出怎樣的火花呢? 答案是免費的形象網站兼具部落格功能,您可能會覺得這真是了無新意,但對於剛創業的個人工作者或是小型工作室,這無非是一個節省成本的選項哦,除了節省成本外,Google Blogger也可以透過Google AdSense達到額外的收益,可説是一舉數得啊! 您可能會説 wordpress.com 或其他類似的服務也有免費的方案啊!沒錯,但是如果您要綁定域名的話,就得升級為付費方案才可以了!反觀Google Sites與Google Blogger在免費方案下,依然都是可以綁定域名,同時也具備SSL的保護呢! 下面就來簡單説説如何使用Google Sites和Google Blogger來搭建一個兼具部落格的形象網站吧,本次重點會著重在域名綁定的部分。 Google Sites 登入 Google Drive ,按下左上角的 新增 > 更多 > Google協作平台 ,系統自動開啓新的Site編輯頁面,右側有很多的網頁元素供我們使用。 編輯過程中可以隨時按下上方的 預覽 小圖示進行畫面預覽。 編輯完成後,我們就可以開始域名的綁定,首先按下上方的 設定 小圖示: 接著左側選單按下 自定網域 ,再按下 開始設定 : 輸入我們申請的域名後,再按下 驗證擁有權 : 系統會自動將我們輸入的域名帶入下一個畫面,直接按下 繼續 即可: 接著系統會指示我們需要新增一筆DNS記錄以便順利通過驗證: 此時我們會需要登入域名供應商提供的管理界面,該範例以 GoDaddy 為例,進入 DNS管理 的畫面後,按下 新增記錄。 這裏我們會需要新增2筆DNS記錄,除了一筆Google Sites驗證使用的記錄之外,還要新增一筆 www 前綴的cname記錄,内容值為 ghs.googlehosted.com. ,需特別注意的是, 最後面的 . 是必須的 。 新增完DNS記錄後,我們再次回到Google Sites域名驗證畫面,按下 驗證 開始進行驗證: DNS記錄生效需要一段時間,如果驗證失敗,建議過幾個小時後再試試。 直到看到下面畫面,表示我們已經完成域名的綁定了。 最後我們就可以把我們的網站發佈到Internet上面了,我們再次回到Google Sites編輯畫面,按下上方的 發佈 小圖示: 接著再按下上方的...

FluentFTP不支援SFTP? 那就用SSH.NET吧!

某天在和客戶端進行FTP對接測試時,莫名報錯了,心想不可能吧,不是測試過了嗎?仔細看了Exception内容: System.TimeoutException Timed out trying to read data from the socket stream! System.TimeoutException: Timed out trying to read data from the socket stream!    at FluentFTP.FtpSocketStream . ReadAsync (Byte[] buffer , Int32 offset , Int32 count , CancellationToken token )    at FluentFTP.FtpSocketStream . ReadLineAsync (Encoding encoding , CancellationToken token )    at FluentFTP.AsyncFtpClient . GetReplyAsyncInternal (CancellationToken token , String command , Boolean exhaustNoop , Int32 timeOut )    at FluentFTP.AsyncFtpClient . GetReply (CancellationToken token )    at FluentFTP.AsyncFtpClient . HandshakeAsync (CancellationToken token )    at FluentFTP.AsyncFtpClient . Connect (Boolean reConnect , CancellationToken token )    at FluentFTP.AsyncFtpClient . Connect (CancellationToken token ) Timed out !! 隨即用 FileZilla Client 測...