原來可以這麼寫(20):關於docker的小技巧及python好坑
這個系列也寫到第20篇了,我想應該可以算是一個小成就了吧(?
這個系列的設定本來就是紀錄自己工作上的成長、並且整理工作上遇到的困難、心境記錄起來。 期許這些成長能夠成為一種「感恩」,也避免自己再犯第二次的錯誤。
重點是,要讓自己變得更好、更強。
近來,我發現將自己所學輸出真是最棒的方式,一種能夠證明自己有沒有學會的最佳方案。我想可能以後我會陸陸續續將我目前短短幾年累積的東西持續輸出,同時也將自己的部落格當作一種知識管理系統。
如果你看不懂我寫的內容,很歡迎你在底下留言回應。因為這也是能夠再度驗證自己有沒有學會的關鍵之一
關於 Docker 的小技巧
在這一份新工作裡,我學到有關 docker 一些小技巧
docker import
&docker export
docker load
&docker save
這兩對指令是成雙成對互相對應的,也就是可以不用 dockerfile 的方案做 docker image 等等。應該算是本地化方案(?
筆記Docker
的參數
-i
:執行時持續開啟 STDIN 管道,可以讓host與vm互動-t
: pseudo-TTY,使用虛擬終端機-d
:放在背後執行,detach mode (卸離模式)--rm
:當容器停止運行時就會移除container
docker exec -it nginx bash
docker run --name=nginx --rm -d -p 80:80 nginx:latest
參考來源:https://blog.miniasp.com/post/2022/11/22/docker-run-docker-exec-docker-attach-tty-and-stdin
salt-minon
我們這個軟體有用到這個神奇的東西,這好像是可以做遠端控制電腦的 lib。 是用Python撰寫。
參考資源:
建立開發環境的步驟與自動化時間
另外,我覺得每次換新工作或電腦都要重新建立開發環境、整理工作區實在有點麻煩, 所以建立了trello,來幫助自己釐清工作任務與內容。同時紀錄開發環境的checklist 如圖下:
這樣有點方便多了,不過希望未來走向自動化!
Python Print 的坑
另外在 trace code 的過程裡,我發現某個 log 為什麼總是沒有很及時地顯示出來、反而在重開時他又突然出現……
後來發現他在 log 的實現是使用print()
的方式,然後赫然查到 python 神奇的 print 魔術
原來 print 有 buffer的機制
參考來源:
- https://stackoverflow.com/questions/39530567/python-supervisor-how-to-log-the-standard-output
- https://blog.csdn.net/wonengguwozai/article/details/81668240
讓我們來做個實驗:
|
|
讓你猜猜,這個程式碼執行的結果會是 a)每10秒印出一個數字 b) 50秒後0-4都印出來?
答案是:b
這就是 buffer 的魔力、aka 緩衝區。
要解決它很簡單,就是下-u
就好,或者在 print 裏面加入flush=True
這個參數即可
參考資源: https://stackoverflow.com/questions/107705/disable-output-buffering
在 Devops Taiwan 看到的一篇內容
我喜歡參加一些社群、看看一些技術文章。尤其我蠻 focus 在如何讓軟體工程師更好、更 smart 的工作之類的,在 DevOps Taiwan 看到有人分享簡報。
覺得蠻被提醒的: 『導入 DevOps ,也相當於在導入敏捷,不可能在不導入敏捷的情況下導入 DevOps 。』
也許我再強調「DevOps」的過程中,也要想到公司或環境、文化有沒有「敏捷」…… 我覺得沒有敏捷的支持,DevOps大概很容易淪為工具或次文化吧。
Git 徹底搞懂
在Git合併分支有分兩種模式,底下有篇文章寫得蠻清楚的。這兩者的差別大概是在git commit 紀錄的部分。
- git merge
- git rebase
merge 在合併的時候會有 fast-forward,和衝突時用一個 commit 記錄合併變更的兩種情形。而 rebase 的整合方式非常有趣,依照關於 rebase 的另一段說明,它可以「把某個分支中所有 commit 的過程,以另一個分支的 commit 為基礎重播一輪」:
參考來源: https://backlog.com/git-tutorial/tw/stepup/stepup2_8.html 參考來源: https://medium.com/starbugs/git-%E6%88%91%E4%BB%A5%E7%82%BA%E7%9A%84-git-rebase-%E8%88%87%E5%92%8C-git-merge-%E5%81%9A%E5%90%88%E4%BD%B5%E5%88%86%E6%94%AF%E7%9A%84%E5%B7%AE%E7%95%B0-cacd3f45294d
小君曰:其實我還是比較喜歡Dockerfile的部分…