如何用 SSH 連進遠端主機內的 docker container?

Docker 是個好用的虛擬服務技術,可以快速將開發環境建立在其他電腦上,例如 Tensorflow 就有提供官方的 Docker image。但是如果想要用 Pycharm 遠端開發,會發現沒辦法直接跟遠端主機中 Docker container 內的 python 溝通。這時就得將 Container 的 SSH 服務安裝起來,讓 Container 直接可以對外連線,這樣對 Pycharm 而言就像是在另一台遠端主機上開發一樣。 如何將 container 的 port 22 暴露出去利用網際網路連線呢? 參考資料:Dockerize an SSH service 首先我們要建立一個名為 Dockerfile 的空白文件,以下是官方的 Dockerfile 範例: <pre class="brush: bash; highlight: [5]; title: ; notranslate" title=""> FROM ubuntu:16.04 RUN apt-get update && apt-get install -y openssh-server RUN mkdir /var/run/sshd RUN echo 'root:screencast' | chpasswd RUN sed -i 's/PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config # SSH login fix....

<span title='2018-12-05 16:54:26 +0800 +0800'>December 5, 2018</span>&nbsp;·&nbsp;2 分鐘&nbsp;·&nbsp;Jimmy

PyQt5 Signal / Slot 機制入門

利用 Qt Designer 設計好程式的介面以後,要如何讓程式有反應呢?這時候就得寫背後的邏輯了。 Qt 使用 Signal / Slot 機制來達到物件之間的通訊,就有點像是拿電線接起來一樣。例如將開關接上燈泡後,按下開關就會亮,而將連結斷開後,燈泡就不會對按鈕有反應了。 不知道怎麼安裝可以先看這篇 安裝PyQt5 + 連動Pycharm ![012](https://jimmylab-images.seisblue.com/uploads/2018/07/012.png) 現在我們先設計一個簡易的加法器如下,物件名稱需更改以利辨識 ![02_1](https://jimmylab-images.seisblue.com/uploads/2018/07/02_1.png) Qt Designer 右下角有個 Signal/Slot Editor,先按 + 產生一組訊號連結 在 Sender 欄可以選發送訊號的物件,Signal 欄可以選擇觸發條件,Receiver 欄可以選擇接收訊號的物件,Slot 可以選擇執行的動作 ![02_2](https://jimmylab-images.seisblue.com/uploads/2018/07/02_2.png) 我們希望按下 Clear 按鈕後,三個 lineEdit 框可以被清空,所以設定當 pushButton\_clear 被 clicked() 的時候,lineEdit\_A 要 clear() 自己的資料 ![02_3](https://jimmylab-images.seisblue.com/uploads/2018/07/02_3.png) 剩下 lineEdit\_B 與 lineEdit\_ANS 都比照辦理 現在將圖形介面存檔成adder.ui,並利用 PyUIC 將 adder.ui 轉換成 adder.py 另外寫一個 call_adder.py 來啟動程式: <pre class="brush: python; title: ; notranslate" title=""> import sys from PyQt5.QtWidgets import QMainWindow, QApplication from adder import * class AdderMainWindow(QMainWindow, Ui_MainWindow): def __init__(self, parent=None): super(AdderMainWindow, self)....

<span title='2018-07-12 23:16:43 +0800 +0800'>July 12, 2018</span>&nbsp;·&nbsp;1 分鐘&nbsp;·&nbsp;Jimmy

安裝PyQt5 + 連動Pycharm

如果要在 Python 上面寫 GUI 介面,推薦跨平台跨語言的Qt,它有 App Designer 可以直接排版後自動生成程式碼。用 signal / slot 作為物件之間的溝通,簡化了很多開發上的複雜度。Qt 底層為 C++ ,所以執行速度較快。PyQt5 只支援 Python 3 ,且不向下支援 PyQt4。 Pycharm 算是個人蠻推薦的 Python IDE,有強大的除錯功能,可以自動整理程式碼,並可以與許多工具結合,比用單純的文字編輯器好很多。 以下專注在 Windows 10,Pycharm 灌好的前提下,如何安裝 PyQt5 並連動: 打開 Settings ![011](https://jimmylab-images.seisblue.com/uploads/2018/07/011.png) 2. 找到 Project Interpreter 並按 + (有 Anaconda 的要先按綠色圈圈取消) ![021](https://jimmylab-images.seisblue.com/uploads/2018/07/021.png) 3. 在上方搜尋 PyQt5 並安裝 PyQt5 與 pyqt5-tools ![031](https://jimmylab-images.seisblue.com/uploads/2018/07/031.png) 4. 回到 Settings 找到 External Tools 並按 + ![041](https://jimmylab-images.seisblue.com/uploads/2018/07/041.png) 5. 設定 Qt Designer 如圖,找到 designer.exe (通常在 Python 根目錄下的 Lib/site-package/pyqt5-tools 裡面),Arguments 設定為`$FileName$`,Working directory 設定為`$ProjectFileDir$`,可以用 Insert Macro 裡面找 ProjetFileDir 生成!...

<span title='2018-07-09 15:53:55 +0800 +0800'>July 9, 2018</span>&nbsp;·&nbsp;1 分鐘&nbsp;·&nbsp;Jimmy

Python 新手上路包

最近太多人問怎麼學 Python 了 我覺得為了學 Python 專門去選學校的課太多此一舉了 畢竟選課會有時間上跟聽不聽得懂的問題 個人覺得用線上資源學習是最快最有效的~~~ ![pylogo](https://jimmylab-images.seisblue.com/uploads/2018/01/pylogo.png) 一個一個回答有點麻煩 就在這裡整理一些學習 Python 的資源吧 首先要先安裝 Python 直譯器 3.7 還是 2.7 ? 除非你有舊的程式要跑 不然一律用最新的~ 建議安裝 Python 套件管理程式 Anaconda ![logo-dark](https://jimmylab-images.seisblue.com/uploads/2018/01/logo-dark.png) 灌 Anaconda 的好處是 一開始他會幫你灌大部分會用到的套件包 包括新手最會卡關的 pip 與自家 conda 套件管理程式 也可以作套件包的版本控制 讓你不同專案的套件包不會打架 特別是有舊程式要維護的時候更重要 Anaconda 環境設定可以參考這篇 Win10下用Anaconda安裝TensorFlow ![MATLAB_R2013a_Win8_screenshot.png](https://jimmylab-images.seisblue.com/uploads/2018/01/matlab_r2013a_win8_screenshot.png) 再來可以選用一個[文字編輯器](https://zh.wikipedia.org/zh-tw/%E6%96%87%E6%9C%AC%E7%BC%96%E8%BE%91%E5%99%A8) (Text Editor) 或是[整合開發環境](https://zh.wikipedia.org/zh-tw/%E9%9B%86%E6%88%90%E5%BC%80%E5%8F%91%E7%8E%AF%E5%A2%83) (IDE) 如果是 [Vi](https://zh.wikipedia.org/zh-tw/Vi) 派的我也不反對 (有神快拜) 不知道 IDE 是什麼的話,看看 [Matlab](https://www.mathworks.com/products/matlab.html) 的介面 就是一個很標準的 IDE IDE可以幹嘛? 可以參考下面這篇文章 IDE、編輯器的迷思| iThome 你可以用 Anaconda 幫你灌好的 Spyder 這個 IDE 是仿效 MATLAB 介面做成的...

<span title='2018-01-05 00:17:23 +0800 +0800'>January 5, 2018</span>&nbsp;·&nbsp;2 分鐘&nbsp;·&nbsp;Jimmy

使用 Microsoft Azure Notebook 執行 Python

假如要 Demo Python 程式碼 Microsoft 有提供一個好用的雲端服務叫 Microsoft Azure Notebooks ![](https://jimmylab-images.seisblue.com/uploads/2019/03/image-1.png) 要用這個服務之前要先有 [Microsoft 帳號](https://login.live.com/tw) 如果沒有帳號可以先申請 整個 Microsoft Azure Notebooks 是用 Jupyter 建構出來的 Jupyter 是一個互動式的筆記本,可以將程式碼與註記放在一起,方便與讀者互動 Python 初學者可以先複製官方的教學 Python for DS 101 進去以後按 Clone,把教學範例複製到自己的 Library 裡面 ![Python2.png](https://jimmylab-images.seisblue.com/uploads/2017/11/python2.png) 打開 [01.Basics.ipynb](https://notebooks.azure.com/rheartpython/libraries/PythonDS101/html/01.Basics.ipynb) 就可以看到 Jupyter 的主畫面了 ![Basics.png](https://jimmylab-images.seisblue.com/uploads/2017/11/basics.png) 最簡單要記得的就是執行一個區段按 Shift+Enter 照著這個 Basics 走過一遍就會知道怎麼用了 另外常用到的功能是在前面加 ! 就可以執行 Shell 指令: ``` !pip install soundfile # Install pysoundfile package for wav I/O </p>這在需要額外安裝套件很有用的,或是想要執行一些 grep 或 awk 的指令,不過好像只有在 Azure Notebooks 才行,拿到其他 Jupyter Notebook 不一定能用。 剩下的就看這個 [Cheatsheet](https://s3....

<span title='2017-12-07 16:40:34 +0800 +0800'>December 7, 2017</span>&nbsp;·&nbsp;1 分鐘&nbsp;·&nbsp;Jimmy