2022 Fall w6

2022 Fall 課程進入第六週, 原本只在近端運作的個人倉儲動態網頁, 這學期可以利用 Replit 與自建的 Ubuntu 伺服器執行, 只是學員必須適應在不同平台上執行程式的挑戰.

使用雲端免費資源教學

一直以來的課程教學都希望採用與業界相同的工具及系統, 其中包括 Github, Gmail, Microsoft 365 等工具, 還好這些工具都提供免費帳號註冊, 而且提供的權限與資源都能符合教學需求.

但若希望使用業界的 Application Server, 因為耗費的資源較多, 當 Heroku 在 2022 年宣布不再提供免費資源後, 雖然轉向 Replit, 但是由於免費帳號的 Replit 所提供的 CPU 運算時間與記憶體並非如 Heroku 優渥, 因此只能作為測試使用.

解決之道就是自行架構 Server, 讓所有學員能夠執行網際程式, 然後再設法與 Github 倉儲保持同步, 如此就能補足 Heroku 無免費帳號使用, 而 Replit 免費帳號不敷使用的問題.

疫情下的教學

這個月是台灣對外全面解封的時間點, 在更早之前, 已經有不少學員因疫情無法實體上課, 因此自 w3 開始, 即便在電腦輔助設計室實體上課, 但採用的模式與 remote 上課相同, 即時上課之外, 也將每一堂課的教學影片存檔, 以方便學員在任何地方同步或非同步上課.

另外與前幾年不同的教學方式, 是又重啟 TCExam 作為課程線上考試的系統, 這個系統應該比任何能夠買到的封閉源系統都更有彈性, 唯一的限制就是尚無 OAuth2 登入系統, 而且因為原始開發者已經不再積極維護原始碼, 所以必須自行讓老舊的 PHP 程式與資料庫連結系統, 在最新的系統中執行.

至於先前一直使用的 Ethercalc, 在配置的舊電腦無法開啟後, 已經無法在最新的 node.js 中運行, 目前只能暫時棄用, 因為開發者在忙著成立數位發展部, 應該沒有時間關心這項議題. 之後若有時間再設法修改處理.

cp2022

2022 的計算機程式仍從 Brython 教起, 配合 Javascript 與 html, 希望使用者能夠透過 Canvas 與 WebGL, 了解 Web based 前端程式如何進行 2D 與 3D 系統的模擬, 2D 的部分先前已經做過貪食蛇與俄羅斯方塊遊戲, 而 3D 的部分則必須使用 three.js 程式庫, 主要目的是希望能夠用來解析機械零組件的 STL 檔案, 其中牽涉 ASCII 格式與 Binary 格式檔案的讀取與 WebGL 展示.

而銜接 Brython 前端程式的後端 Server 程式, 仍希望採 Python + Flask 的架構進行, 其間的變數傳送將透過 WebSocket 進行. 且儘可能透過 cmsimde 架構下的 Blueprint 進行延伸.

之後, 假如學員能在 Brython 與 Python 的前後端程式架構下, 再進行延伸, 則可以透過 C 編寫程式庫, 或將 Server 端的 Python 轉為 Cython, 或者可以轉進 Rust 程式語言的全新領域.

cad2022

與先前的課程相同, 採用的 MCAD 分別為可自行編譯的 Solvespace, 雲端的 Onshape 與高階的 Siemens NX, 假如設計的機構零件外型是在初始設計階段, Solvespace 即可勝任參數式零組件繪圖與設計分析的工作. 比較可惜的是, 目前 Solvespace 尚不支援直接利用程式建構零組件, 使用者倒是可以透過程式建立零件的草圖, 然後匯入 Solvespace 後, 再長出 3D 外形. 至於 Onshape, 雖然使用者可以直接利用瀏覽器、平板或手機建立零組件, 但其能讓一般使用者進行零件 API 的部分, 僅限 Featurescript, 後端的 API 還需要申請授權碼才能進行.

Siemens NX 一直以來都是包含 CAD/E/M 的大套工具, 其中最值得與 cp2022 計算機程式結合應用的部分是其 NXOpen 支援 Python 延伸程式的架構, 使用者可以在一台 Windows 操作系統上安裝 Siemens NX2027, 然後利用 NXOpen Python 編寫延伸程式, 透過 run_journal.bat 執行, 並且透過 Flask 與 WebSocket 從網際前端傳送設計變數, 然後在 Server 端結合 NX 運算後, 將前端設計所需尺寸或架構的產品零組件檔案, 讓使用者下載.

在結合 Python 與 NX 的過程中, 可以再設法直接從產品組立件所轉出的 STL 零件, 透過 API 程式組成 CoppeliaSim 系統模擬所需的檔案格式, 以便接續進行零組件的控制系統設計與模擬流程. 

此外, cad2022 希望能將先前建構的手足球系統, 套用到 CoppeliaSim 的 Visualization Stream 功能上, 讓位於不同電腦的使用者可以透過不同埠號對同一個手足球場景進行控制, 可進行的模式分為 human vs human, human vs computer, 以及 computer vs computer 的對陣模式.