協同產品設計實習課程流程圖
2019 年 Spring 課程以 V-rep 取代 Webots.
107學年教育目標:
本課程延續四技部計算機程式與電腦輔助設計實習之教學內容, 探討如何在網際協同環境進行機械產品開發.
107-2學期教育目標:
使用可攜程式系統, 以及 CMSimfly 與 portable Git 管理各學員與分組的動態與靜態網際內容管理系統, 同時利用 Onshape 與 V-rep 執行機電資整合產品開發, 當面臨各協同設計階段所遭遇問題時, 各學員可利用客製化程式加以解決.
課程議題:
參與協同產品設計者能否透過可攜程式環境提升效能? 與非可攜程式相較, 有何效益? 必須付出那些代價?
協同設計過程中所牽涉的各種資料, 如何透過版次管理, 讓各成員在專案執行過程所投入的貢獻, 能夠公開透明?
如何利用 Onshape 執行協同產品設計?
如何利用 V-rep 執行協同產品設計?
如何利用 Git 與 Github 執行協同產品設計?
Friday, May 31, 2019
Wednesday, May 29, 2019
WebMechaDesign - 網際機械設計
WebMechaDesign - 網際機械設計
將網際機械協同產品設計視為機電資創新產品開發流程中的重要一環, 並利用 Windows 10 與 Ubuntu 18.04 Server 作為網際虛實程式開發雙向環境, 分別結合隨身碟上的 Virtualbox 虛擬主機, 可攜 Python 程式環境, Putty 與 Filezilla client, 將 Windows 10 的 Chrome 與 Firefox 瀏覽器當作 GUI 前端, 而隨身碟上的 Virtualbox Ubuntu 18.04 Server 則作為後端 solid model 供應與分散最佳化設計運算中心.
展示網站: https://mde.tw/webmechadesign
Windows 端可攜程式系統: 2019_cdb_w13.7z
Ubuntu 端 Virtualbox 虛擬主機: W15 實作所完成的虛擬主機 vmdk 壓縮檔案.
Windows 端其他 solid model 虛擬主機: W15 實作所完成的 Solidworks 2016 虛擬主機壓縮檔案. (登入 @gm.nfu.edu.tw 後才能下載)
可開發專案
延伸 https://github.com/mdecourse/wcms-scrum1, 開發網際齒輪箱設計系統
延伸 https://mde.tw/webmechadesign/content/python-solvespace.html 開發網際平面連桿機構設計系統
延伸 https://mde.tw/webmechadesign/content/pyslvs.html 開發網際最佳化機械設計演化運算系統
將網際機械協同產品設計視為機電資創新產品開發流程中的重要一環, 並利用 Windows 10 與 Ubuntu 18.04 Server 作為網際虛實程式開發雙向環境, 分別結合隨身碟上的 Virtualbox 虛擬主機, 可攜 Python 程式環境, Putty 與 Filezilla client, 將 Windows 10 的 Chrome 與 Firefox 瀏覽器當作 GUI 前端, 而隨身碟上的 Virtualbox Ubuntu 18.04 Server 則作為後端 solid model 供應與分散最佳化設計運算中心.
展示網站: https://mde.tw/webmechadesign
Windows 端可攜程式系統: 2019_cdb_w13.7z
Ubuntu 端 Virtualbox 虛擬主機: W15 實作所完成的虛擬主機 vmdk 壓縮檔案.
Windows 端其他 solid model 虛擬主機: W15 實作所完成的 Solidworks 2016 虛擬主機壓縮檔案. (登入 @gm.nfu.edu.tw 後才能下載)
可開發專案
延伸 https://github.com/mdecourse/wcms-scrum1, 開發網際齒輪箱設計系統
延伸 https://mde.tw/webmechadesign/content/python-solvespace.html 開發網際平面連桿機構設計系統
延伸 https://mde.tw/webmechadesign/content/pyslvs.html 開發網際最佳化機械設計演化運算系統
Tuesday, May 28, 2019
WCM Week 15 實作
Ubuntu Server Setup
利用 Virtualbox 建立虛擬 Ubuntu 18.04 網際內容管理系統伺服主機:
1. 安裝最新版的 Virtualbox
2. 建立 Ubuntu 18.04 虛擬主機
3. 以網路卡橋接啟動 Ubuntu 伺服器
4. 以 sudo apt install nginx 安裝 nginx WWW 伺服器
5. 以 ifconfig 查 Ubuntu 伺服器的 IP, 測試 nginx 伺服器是否可以連線
6. 以 Windows 10 下的 Filezilla client, 將編輯好的 nginx 設定檔案送到 Ubuntu
7. 利用 Ubuntu 指令將設定檔案搬至設定位置後, 以 /etc/init.d/nginx restart 重新啟動 nginx
8. 在 Ubuntu 中以 sudo apt install uwsgi 安裝 uwsgi
9. 在 Windows 10 編輯 uwsgi 與 nginx 所需的設定檔案, 完成後以 filezilla 送至 Ubuntu.
10. 將 CMSimfly 程式碼送到 Ubuntu 伺服器中對應目錄後.
11. 在 Ubuntu 建立 cmsimfly 服務, 並設定隨機啟動.
12. 完成後, 在 Windows 10 以瀏覽器連線至 CMSimfly, 確認動態網頁與靜態網頁可以在虛擬主機中正常啟動.
13. 以上相關網際內容管理在機械工程相關應用可參考: https://www.driveworks.co.uk 或 https://robotbenchmark.net/
其他參考資料:
http://help.solidworks.com/2016/english/api/sldworksapiprogguide/Welcome.htm
https://github.com/OmniaGit/odooplm
https://github.com/vskrachkov/sw2014
https://github.com/cmuphyscomp/physcomp-solidworks
https://github.com/FuntechBlins/SwApiExamplesCs
http://joshuaredstone.blogspot.com/2015/02/solidworks-macros-via-python.html
Ubuntu 18.04 /etc/netplan/50-cloud-init.yaml 檔案參考內容:
uwsgi.ini 參考檔案:
python3 環境準備:
安裝 pip3:
sudo apt install python3-pip
安裝 CMSimfly 所需模組:
sudo pip3 install flask bs4 lxml
uwsgi 環境準備:
sudo apt install uwsgi uwsgi-plugin-python3
sudo pip3 install uwsgi
編輯的設定檔案為 uwsgi_ini 目錄中的各個 .ini 設定檔案.
nginx 環境準備:
sudo apt install nginx
編輯的設定檔案為 /etc/nginx/sites-available/default 檔案.
CMSimfly 的設定:
init.py 中必須將 uwsgi = False 改為 True, 因為準備採用 uwsgi 模式啟動 CMSimfly
apt proxy 設定檔案:
/etc/apt/apt.conf.d/90curtin-aptproxy
啟動 uwsgi 指令, 將會逐一啟動 wsgi_ini 目錄中個別 .ini 檔案:
sudo /usr/bin/uwsgi --emperor /home/kmol2019/wsgi_ini
最後則設定 Ubuntu 系統服務, 用來啟動 uwsgi:
/etc/systemd/system 的 cmsimfly.service 服務啟動檔案內容:
接著將 cmsimfly 服務設為隨系統開機啟動:
sudo systemctl enable cmsimfly
若要取消 cmsimfly 服務隨系統開機啟動:
sudo systemctl disable cmsimfly
手動啟動 cmsimfly.service 服務
sudo systemctl start cmsimfly
手動停止 cmsimfly.service 服務
sudo systemctl stop cmsimfly
最後, 在 Ubuntu 虛擬主機中設定 Fossil SCM:
安裝 fossil:
sudo apt install fossil
查 fossil 版本:
fossil version
因為採用 sudo apt install fossil 的版本為 2.5 版, 希望採用目前 (2019.05.28) 的最新版本 2.8, 因此:
直接在 Windows 10 下載 https://fossil-scm.org/home/uv/fossil-linux-x64-2.8.tar.gz, 解開壓縮檔案後, 將 fossil 送到 /homt/kmol2019/ 目錄下, 再使用指令, 將檔案複製到 /usr/bin/ 目錄下, 在 Ubuntu 要查詢 fossil 可執行檔案的位置, 使用 whereis fossil.
sudo cp fossil /usr/bin/
複製後, 再用 fossil version 查驗版本, 確認為最新的 2.8 版.
接著在 /home/kmol2019 目錄下建立 repository 目錄, 並且利用 fossil 起始一個 kmol2019.fossil 倉儲壓縮檔案.
mkdir repository
cd repository
fossil init kmol2019.fossil
完成後, 紀錄 kmol2019.fossil 的管理密碼, 以便啟動 Fossil SCM 伺服器時, 利用 kmol2019 當作帳號, 而以記錄的管理者密碼登入進行設定.
接下來為了要在 https 的模式下使用 Fossil SCM 伺服器, 因此必須安裝配置 stunnel:
sudo apt install stunnel
修改 /etc/environment, 加入:
HTTPS=on
修改 /etc/default/stunnel4, 修改 ENABLED=1
假如此時 /etc/stunnel 目錄下尚無 localhost.crt 與 localhost.key, 可以利用下列指令建立:
建立 localhost.key 與 localhost.crt:
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout localhost.key -out localhost.crt
接著設定 /etc/stunnel/stunnel.conf 如下:
表示利用 stunnel 執行 fossil 指令, 並且透過 http 協定啟動 位於 /home/kmol2019/repository 目錄下的倉儲壓縮檔案, 且附加採用 https 與 nojail 模式啟動.
其中 --nojail 目的在 drop the root privilege but do not enter the chroot jail, 其後的 --notfound 表示若沒有特別在 URL 中列出所要擷取的 .fossil 檔案 (指位於 /home/kmol2019/repository/ 目錄下), 則採用 kmol2019.fossil
重新啟用 stunnel:
sudo /etc/init.d/stunnel4 restart
啟動後的 Fossil SCM 位於 port 5443, 且將 kmol2019 管理者密碼設為 kmol2019.
W15 網際內容管理系統實作結果:
W15 實作所完成的虛擬主機 vmdk 壓縮檔案.
W15 實作所完成的 Solidworks 2016 虛擬主機壓縮檔案. (登入 @gm.nfu.edu.tw 後才能下載)
參考資料:
https://github.com/mhammond/pywin32
http://timgolden.me.uk/pywin32-docs/contents.html
https://sourceforge.net/projects/pywin32/files/
http://timgolden.me.uk/python/win32_how_do_i.html
http://timgolden.me.uk/python/winsys/index.html
https://win32com.goermezer.de/category/cad-systems/solidworks
https://blog.csdn.net/qq_41185868/article/details/80467713
https://win32com.goermezer.de/category/cad-systems
https://forum.freecadweb.org/viewtopic.php?t=21810
利用 Virtualbox 建立虛擬 Ubuntu 18.04 網際內容管理系統伺服主機:
1. 安裝最新版的 Virtualbox
2. 建立 Ubuntu 18.04 虛擬主機
3. 以網路卡橋接啟動 Ubuntu 伺服器
4. 以 sudo apt install nginx 安裝 nginx WWW 伺服器
5. 以 ifconfig 查 Ubuntu 伺服器的 IP, 測試 nginx 伺服器是否可以連線
6. 以 Windows 10 下的 Filezilla client, 將編輯好的 nginx 設定檔案送到 Ubuntu
7. 利用 Ubuntu 指令將設定檔案搬至設定位置後, 以 /etc/init.d/nginx restart 重新啟動 nginx
8. 在 Ubuntu 中以 sudo apt install uwsgi 安裝 uwsgi
9. 在 Windows 10 編輯 uwsgi 與 nginx 所需的設定檔案, 完成後以 filezilla 送至 Ubuntu.
10. 將 CMSimfly 程式碼送到 Ubuntu 伺服器中對應目錄後.
11. 在 Ubuntu 建立 cmsimfly 服務, 並設定隨機啟動.
12. 完成後, 在 Windows 10 以瀏覽器連線至 CMSimfly, 確認動態網頁與靜態網頁可以在虛擬主機中正常啟動.
13. 以上相關網際內容管理在機械工程相關應用可參考: https://www.driveworks.co.uk 或 https://robotbenchmark.net/
其他參考資料:
http://help.solidworks.com/2016/english/api/sldworksapiprogguide/Welcome.htm
https://github.com/OmniaGit/odooplm
https://github.com/vskrachkov/sw2014
https://github.com/cmuphyscomp/physcomp-solidworks
https://github.com/FuntechBlins/SwApiExamplesCs
http://joshuaredstone.blogspot.com/2015/02/solidworks-macros-via-python.html
Ubuntu 18.04 /etc/netplan/50-cloud-init.yaml 檔案參考內容:
# This file is generated from information provided by # the datasource. Changes to it will not persist across an instance. # To disable cloud-init's network configuration capabilities, write a file # /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following: # network: {config: disabled} network: ethernets: enp0s3: dhcp4: false dhcp6: false addresses: #- 192.168.1.13/24 - 2001:288:6004::1/64 gateway4: 192.168.1.1 gateway6: 2001:288:6004::254 nameservers: addresses: - 140.130.1.2 - 168.95.1.1 - 2001:288:6004:1::2 - 2001:b000:168::1 version: 2/etc/nginx/sites-available/default 參考檔案:
server { listen 80; listen [::]:80; root /home/kmol2019/newcms; index index.html; location /static { alias /home/kmol2019/newcms/cmsimde/static/; } location /downloads { alias /home/kmol2019/newcms/downloads/; } location /images { alias /home/kmol2019/newcms/images/; } location / { try_files $uri $uri/ =404; } location /blog { alias /home/kmol2019/cmsimfly/blog/; } location /reveal { alias /home/kmol2019/cmsimfly/reveal/; } } server { listen 443 ssl; #listen [::]:443 ssl ipv6only=on; location /static { alias /home/kmol2019/cmsimfly/static/; } location / { include uwsgi_params; uwsgi_pass 127.0.0.1:8080; } #server_name ipv4_ip; #ssl on; ssl_certificate /etc/stunnel/localhost.crt; ssl_certificate_key /etc/stunnel/localhost.key; ssl_session_timeout 5m; ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers "HIGH:!aNULL:!MD5 or HIGH:!aNULL:!MD5:!3DES"; ssl_prefer_server_ciphers on; try_files $uri $uri/ =404; } server { #listen 89 default_server; #listen [::]:89 default_server ipv6only=on; listen 8943 ssl; #listen [::]:8943 ssl ipv6only=on; location /static { alias /home/kmol2019/cmsimfly2/static/; } location / { include uwsgi_params; uwsgi_pass 127.0.0.1:8082; } #server_name ipv4_ip; #ssl on; ssl_certificate /etc/stunnel/localhost.crt; ssl_certificate_key /etc/stunnel/localhost.key; ssl_session_timeout 5m; ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers "HIGH:!aNULL:!MD5 or HIGH:!aNULL:!MD5:!3DES"; ssl_prefer_server_ciphers on; try_files $uri $uri/ =404; } server { #listen 88 default_server; #listen [::]:88 default_server ipv6only=on; listen 8843 ssl; #listen [::]:8843 ssl ipv6only=on; location /static { alias /home/kmol2019/newcms/cmsimde/static/; } location / { include uwsgi_params; uwsgi_pass 127.0.0.1:8081; } #server_name ipv4_ip; #ssl on; ssl_certificate /etc/stunnel/localhost.crt; ssl_certificate_key /etc/stunnel/localhost.key; ssl_session_timeout 5m; ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers "HIGH:!aNULL:!MD5 or HIGH:!aNULL:!MD5:!3DES"; ssl_prefer_server_ciphers on; try_files $uri $uri/ =404; }
uwsgi.ini 參考檔案:
[uwsgi] socket = 127.0.0.1:8080 uid = kmol2019 gid = kmol2019 plugins-dir = /usr/lib/uwsgi/plugins/ plugin = python3 master = true logto = /var/log/uwsgi/emperor.log logfile-chown = kmol2019:kmol2019 processes = 4 threads = 2 chdir = /home/kmol2019/cmsimfly wsgi-file = /home/kmol2019/cmsimfly/wsgi.py網際介面與資料庫伺服器採用 Ubuntu Server, Web Based Solid Modeling Server 採用 Windows 10, 以下列 Python 程式透過 COM 建立 SolidWorks 主機伺服器上的零件:
# 在 windows 10 以 python -m pip install pywin32 import win32com.client import pythoncom # 透過 win32com.client 建立 swApp swApp = win32com.client.DispatchEx("SldWorks.Application") swApp.Visible = 1 # 使用已經開啟的檔案或開啟新檔案 if swApp.ActiveDoc: swDoc = swApp.ActiveDoc else: swApp.NewDocument( TemplateName="C:\\ProgramData\\SolidWorks\\SolidWorks 2016\\templates\\gost-part.prtdot", PaperSize=0, Width=0, Height=0, ) swApp.ActivateDoc2( Name="name1", Silent=False, Errors=Exception ) swDoc = swApp.ActiveDoc swDoc.Extension.SelectByID2( "name2", "PLANE", 0, # X 0, # Y 0, # Z False, 0, win32com.client.VARIANT(pythoncom.VT_DISPATCH, None), 0, ) swDoc.SketchManager.InsertSketch(True) swDoc.SketchManager.CreateCornerRectangle( 0, 0, 0, 0.067899689762150967, -0.035683453981385727, 0 ) swDoc.FeatureManager.FeatureExtrusion2( True, False, False, 0, 0, 0.0115, 0.01, False, False, False, False, 0.017453292519943334, 0.017453292519943334, False, False, False, False, True, True, True, 0, 0, False )
python3 環境準備:
安裝 pip3:
sudo apt install python3-pip
安裝 CMSimfly 所需模組:
sudo pip3 install flask bs4 lxml
uwsgi 環境準備:
sudo apt install uwsgi uwsgi-plugin-python3
sudo pip3 install uwsgi
編輯的設定檔案為 uwsgi_ini 目錄中的各個 .ini 設定檔案.
nginx 環境準備:
sudo apt install nginx
編輯的設定檔案為 /etc/nginx/sites-available/default 檔案.
CMSimfly 的設定:
init.py 中必須將 uwsgi = False 改為 True, 因為準備採用 uwsgi 模式啟動 CMSimfly
apt proxy 設定檔案:
/etc/apt/apt.conf.d/90curtin-aptproxy
啟動 uwsgi 指令, 將會逐一啟動 wsgi_ini 目錄中個別 .ini 檔案:
sudo /usr/bin/uwsgi --emperor /home/kmol2019/wsgi_ini
最後則設定 Ubuntu 系統服務, 用來啟動 uwsgi:
/etc/systemd/system 的 cmsimfly.service 服務啟動檔案內容:
[Unit] Description=uWSGI to serve CMSimfly After=network.target [Service] User=kmol2019 Group=kmol2019 WorkingDirectory=/home/kmol2019/uwsgi_ini ExecStart=/usr/local/bin/uwsgi --emperor /home/kmol2019/uwsgi_ini [Install] WantedBy=multi-user.target
接著將 cmsimfly 服務設為隨系統開機啟動:
sudo systemctl enable cmsimfly
若要取消 cmsimfly 服務隨系統開機啟動:
sudo systemctl disable cmsimfly
手動啟動 cmsimfly.service 服務
sudo systemctl start cmsimfly
手動停止 cmsimfly.service 服務
sudo systemctl stop cmsimfly
最後, 在 Ubuntu 虛擬主機中設定 Fossil SCM:
安裝 fossil:
sudo apt install fossil
查 fossil 版本:
fossil version
因為採用 sudo apt install fossil 的版本為 2.5 版, 希望採用目前 (2019.05.28) 的最新版本 2.8, 因此:
直接在 Windows 10 下載 https://fossil-scm.org/home/uv/fossil-linux-x64-2.8.tar.gz, 解開壓縮檔案後, 將 fossil 送到 /homt/kmol2019/ 目錄下, 再使用指令, 將檔案複製到 /usr/bin/ 目錄下, 在 Ubuntu 要查詢 fossil 可執行檔案的位置, 使用 whereis fossil.
sudo cp fossil /usr/bin/
複製後, 再用 fossil version 查驗版本, 確認為最新的 2.8 版.
接著在 /home/kmol2019 目錄下建立 repository 目錄, 並且利用 fossil 起始一個 kmol2019.fossil 倉儲壓縮檔案.
mkdir repository
cd repository
fossil init kmol2019.fossil
完成後, 紀錄 kmol2019.fossil 的管理密碼, 以便啟動 Fossil SCM 伺服器時, 利用 kmol2019 當作帳號, 而以記錄的管理者密碼登入進行設定.
接下來為了要在 https 的模式下使用 Fossil SCM 伺服器, 因此必須安裝配置 stunnel:
sudo apt install stunnel
修改 /etc/environment, 加入:
HTTPS=on
修改 /etc/default/stunnel4, 修改 ENABLED=1
假如此時 /etc/stunnel 目錄下尚無 localhost.crt 與 localhost.key, 可以利用下列指令建立:
建立 localhost.key 與 localhost.crt:
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout localhost.key -out localhost.crt
接著設定 /etc/stunnel/stunnel.conf 如下:
[https] accept = kmol2019:5443 # 只先啟用 ipv4 #accept = :::443 cert = /etc/stunnel/localhost.crt key = /etc/stunnel/localhost.key exec = /usr/bin/fossil execargs = /usr/bin/fossil http /home/kmol2019/repository/ --https --nojail --notfound kmol2019
表示利用 stunnel 執行 fossil 指令, 並且透過 http 協定啟動 位於 /home/kmol2019/repository 目錄下的倉儲壓縮檔案, 且附加採用 https 與 nojail 模式啟動.
其中 --nojail 目的在 drop the root privilege but do not enter the chroot jail, 其後的 --notfound 表示若沒有特別在 URL 中列出所要擷取的 .fossil 檔案 (指位於 /home/kmol2019/repository/ 目錄下), 則採用 kmol2019.fossil
重新啟用 stunnel:
sudo /etc/init.d/stunnel4 restart
啟動後的 Fossil SCM 位於 port 5443, 且將 kmol2019 管理者密碼設為 kmol2019.
W15 網際內容管理系統實作結果:
W15 實作所完成的虛擬主機 vmdk 壓縮檔案.
W15 實作所完成的 Solidworks 2016 虛擬主機壓縮檔案. (登入 @gm.nfu.edu.tw 後才能下載)
參考資料:
https://github.com/mhammond/pywin32
http://timgolden.me.uk/pywin32-docs/contents.html
https://sourceforge.net/projects/pywin32/files/
http://timgolden.me.uk/python/win32_how_do_i.html
http://timgolden.me.uk/python/winsys/index.html
https://win32com.goermezer.de/category/cad-systems/solidworks
https://blog.csdn.net/qq_41185868/article/details/80467713
https://win32com.goermezer.de/category/cad-systems
https://forum.freecadweb.org/viewtopic.php?t=21810
Saturday, May 18, 2019
近端區網與雲端資料同步
近端區網與雲端資料同步
經歷多年以來的近端硬體與區域網路上的自架主機毀損, 以及各式雲端服務的來來去去, 最永續與保全各種機械設計流程資料的方法就是: 三者資料同步, 並設法利用自架主機當作從近端資料到雲端資料同步之間的跳板.
意即: 以 Github 倉儲存放的內容, 可以啟動靜態與動態網際內容伺服, 但由於許多雲端免費服務要的是用戶存放的資料, 最多只能靜態內容伺服, 大多不提供動態伺服, 因此由區域網路上的自架主機作為資料同步的跳板, 透過設定可以提供動態網際內容伺服, 而近端也能透過動態與靜態伺服進行資料維護與查驗, 如此三方資料在 Git 與 Fossil SCM 的整合運用下, 可以取得最大程度的資料協同維護與保全彈性.
近端環境: portablegit 與 Fossil SCM 加上能夠啟動網際內容管理動態與靜態伺服的程式環境
自架主機: Git 與 Fossil SCM 加上能夠隨主機啟動的網際內容動態與靜態伺服的程式與網路環境.
雲端主機: 提供分散式版次管理與 WWW 伺服功能.
實作:
選定一台至少配置 8GB 記憶體且可啟用 VT 技術的一般個人電腦, 實體安裝 Windows 10 操作系統, 加上一台 Virtualbox Ubuntu 18.04 無 X-Window 的 server.
以橋接啟動 Ubuntu 18.04, 配置 uwsgi + Nginx 伺服 Python Flask 程式, 以 Nginx 伺服靜態網頁
在 Ubuntu 18.04 安裝 Bind9 且申請 port 53 廣域網路開通, 自行管理伺服器的 domain name
在 Ubuntu 18.04 安裝 Squid 代理主機伺服器, 以便提供從近端至區網或雲端的連線速度
在 Ubuntu 18.04 安裝 Fossil SCM 以及 Stunnel, 以便提供 Fossil SCM 倉儲伺服
在近端使用可攜程式環境負責執行 Git, Fossil SCM 與 Python 網際內容管理程式.
在雲端設定 Github 倉儲執行 Github Pages 並設定以 SSH 對區網以及近端倉儲維護連線.
資料維護流程:
在近端或區網或雲端啟動倉儲, 設定與 Github 倉儲同步, 若近端有網路連線, 可直接透過自架主機進行資料協同維護後, 透過 putty 對近端主機連線, 以 Git 指令將資料送到雲端倉儲, 若近端無網路, 則可自行對近端倉儲改版, 待有網路時再對自架主機與雲端倉儲進行資料同步或內容合併流程.
經歷多年以來的近端硬體與區域網路上的自架主機毀損, 以及各式雲端服務的來來去去, 最永續與保全各種機械設計流程資料的方法就是: 三者資料同步, 並設法利用自架主機當作從近端資料到雲端資料同步之間的跳板.
意即: 以 Github 倉儲存放的內容, 可以啟動靜態與動態網際內容伺服, 但由於許多雲端免費服務要的是用戶存放的資料, 最多只能靜態內容伺服, 大多不提供動態伺服, 因此由區域網路上的自架主機作為資料同步的跳板, 透過設定可以提供動態網際內容伺服, 而近端也能透過動態與靜態伺服進行資料維護與查驗, 如此三方資料在 Git 與 Fossil SCM 的整合運用下, 可以取得最大程度的資料協同維護與保全彈性.
近端環境: portablegit 與 Fossil SCM 加上能夠啟動網際內容管理動態與靜態伺服的程式環境
自架主機: Git 與 Fossil SCM 加上能夠隨主機啟動的網際內容動態與靜態伺服的程式與網路環境.
雲端主機: 提供分散式版次管理與 WWW 伺服功能.
實作:
選定一台至少配置 8GB 記憶體且可啟用 VT 技術的一般個人電腦, 實體安裝 Windows 10 操作系統, 加上一台 Virtualbox Ubuntu 18.04 無 X-Window 的 server.
以橋接啟動 Ubuntu 18.04, 配置 uwsgi + Nginx 伺服 Python Flask 程式, 以 Nginx 伺服靜態網頁
在 Ubuntu 18.04 安裝 Bind9 且申請 port 53 廣域網路開通, 自行管理伺服器的 domain name
在 Ubuntu 18.04 安裝 Squid 代理主機伺服器, 以便提供從近端至區網或雲端的連線速度
在 Ubuntu 18.04 安裝 Fossil SCM 以及 Stunnel, 以便提供 Fossil SCM 倉儲伺服
在近端使用可攜程式環境負責執行 Git, Fossil SCM 與 Python 網際內容管理程式.
在雲端設定 Github 倉儲執行 Github Pages 並設定以 SSH 對區網以及近端倉儲維護連線.
資料維護流程:
在近端或區網或雲端啟動倉儲, 設定與 Github 倉儲同步, 若近端有網路連線, 可直接透過自架主機進行資料協同維護後, 透過 putty 對近端主機連線, 以 Git 指令將資料送到雲端倉儲, 若近端無網路, 則可自行對近端倉儲改版, 待有網路時再對自架主機與雲端倉儲進行資料同步或內容合併流程.
Thursday, May 16, 2019
推出 CMSiMDE
網際內容管理系統的功能是利用 WWW 客戶端與伺服器端的功能, 讓使用者可以將有用的內容放在雲端, 目的在能利用此架構進行協同設計.
隨著 CMSimfly 不斷因為需求改版, 先前引用舊版程式碼或設定的用戶, 若無法及時更新版本或自行修正, 使用者間就會產生許多謬誤.
有鑑於此, 將 CMSimfly 升級為 https://github.com/mdecourse/cmsimde, 使用者之後引用 CMSiMDE, 可以將此一網際程式模組設為倉儲中的 submodule, 若 CMSiMDE 小改版, 各用戶可以利用
git submodul foreach git pull origin master
將 CMSiMDE 更新為最新版.
若 CMSiMDE 大改版, 將原先的運作模式進行改變後, 先前的用戶只要不更新 submodule, 仍然可以運作, 或者將各用戶的內容轉移到新架構的 CMSiMDE 運作即可.
使用 CMSiMDE 的 demo 倉儲位於: https://github.com/mdecourse/newcms (使用 Github 版本倉儲, 可以再將資料同步到區域或廣域網路上的 Fossil SCM 版本倉儲)
靜態網頁: https://mde.tw/newcms (使用 Github Pages, 可以與 Fossil SCM doc 網頁同步, 在 Fossil SCM doc 可以隨時查詢各版次的靜態網頁內容)
動態系統: https://s1.mde.nfu.edu.tw:8843 (使用網路橋接設定之虛擬主機, 專責透過 Nginx SSL 與 uwsgi, 以 systemctl 服務執行 Python Flask 程式)
在 Nginx 運作的 newcms: http://s1.mde.nfu.edu.tw (使用網路橋接設定之虛擬主機中的 Nginx, 伺服動態系統的靜態內容)
隨著 CMSimfly 不斷因為需求改版, 先前引用舊版程式碼或設定的用戶, 若無法及時更新版本或自行修正, 使用者間就會產生許多謬誤.
有鑑於此, 將 CMSimfly 升級為 https://github.com/mdecourse/cmsimde, 使用者之後引用 CMSiMDE, 可以將此一網際程式模組設為倉儲中的 submodule, 若 CMSiMDE 小改版, 各用戶可以利用
git submodul foreach git pull origin master
將 CMSiMDE 更新為最新版.
若 CMSiMDE 大改版, 將原先的運作模式進行改變後, 先前的用戶只要不更新 submodule, 仍然可以運作, 或者將各用戶的內容轉移到新架構的 CMSiMDE 運作即可.
使用 CMSiMDE 的 demo 倉儲位於: https://github.com/mdecourse/newcms (使用 Github 版本倉儲, 可以再將資料同步到區域或廣域網路上的 Fossil SCM 版本倉儲)
靜態網頁: https://mde.tw/newcms (使用 Github Pages, 可以與 Fossil SCM doc 網頁同步, 在 Fossil SCM doc 可以隨時查詢各版次的靜態網頁內容)
動態系統: https://s1.mde.nfu.edu.tw:8843 (使用網路橋接設定之虛擬主機, 專責透過 Nginx SSL 與 uwsgi, 以 systemctl 服務執行 Python Flask 程式)
在 Nginx 運作的 newcms: http://s1.mde.nfu.edu.tw (使用網路橋接設定之虛擬主機中的 Nginx, 伺服動態系統的靜態內容)
Thursday, May 9, 2019
網際內容管理課程回顧
2019 Spring 網際內容管理課程
五專部
1. 是否已經在自己的隨身碟建立隨身程式系統?
此一隨身系統以 2019_cdb_w5.7z 為基礎, 使用者必須會自行查驗
是否已經將 portablegit 中的 helper = manager 的設定移除?
python 是否已經安裝 flask, bs4 與 lxml 模組?
是否了解 git 以 https 連線時, proxy 將採用那一個檔案中的設定?
是否已經學會如何採用 ssh 模式維護 github 上的倉儲?
是否了解 CMSimfly 動態與靜態系統之間的關係?
是否會在 CMSimfly 中上傳檔案, 引用檔案?
是否會在 CMsimfly 中上傳圖檔, 引用圖檔?
是否會在 CMSimfly 中嵌入 Youtube 影片?
是否會在 CMSimfly 頁面中加入 Javascript 互動程式?
W14 -> 所完成的隨身示範系統為 2019_cdb_w13.7z (s1 Fossil SCM 的 doc 為: https://s1.mde.nfu.edu.tw:5443/kmol2019/doc/trunk/index.html, Github 倉儲為: https://github.com/scrum-4/2019wcmj, Github Pages 網頁為: https://scrum-4.github.io/2019wcmj/)
是否會更改 CMsimfly 靜態系統所使用的模板?
是否能將 USB 隨身碟格式為 NTFS 或 extFAT, 以便放入 Ubuntu 虛擬主機檔案?
是否會使用自己隨身碟中的 Virtualbox 與 Ubuntu 中的 Fossil SCM 來伺服靜態 CMSimfly 檔案?
是否會使用自己隨身碟中的 Virtualbox 與 Ubuntu 中的 uwsgi 來伺服動態 CMSimfly 系統?
2. 是否已經根據各上述階段任務的操作拍成說明影片, 嵌入自己的 Github Pages 網站?
3. 是否已經著手執行各學員的期末專案, 是否了解各學員的期末報告, 必須同時呈現 html 與 pdf 版本.
各學員繳交供評分之內容: 個人倉儲 Github Pages 網站及 pdf 格式之期末報告.
四技部
除上述五專部各階段任務外, 採用分組協同與全班 Github 協同倉儲模式執行期末專案, 各學員必須繳交在個別學員 Github 倉儲中的內容外, 各分組必須在分組倉儲中集合整理, 且將內容摘要到全班分組倉儲中.
各學員繳交供評分之內容: 個人倉儲 Github Pages 網站及 pdf 格式之期末報告.
各組繳交供評分之內容: 分組倉儲 Github Pages 網站及 pdf 格式之期末報告.
全班協同倉儲中的內容:全班倉儲 Github Pages 網站及 pdf 格式之期末報告.
五專部
1. 是否已經在自己的隨身碟建立隨身程式系統?
此一隨身系統以 2019_cdb_w5.7z 為基礎, 使用者必須會自行查驗
是否已經將 portablegit 中的 helper = manager 的設定移除?
python 是否已經安裝 flask, bs4 與 lxml 模組?
是否了解 git 以 https 連線時, proxy 將採用那一個檔案中的設定?
是否已經學會如何採用 ssh 模式維護 github 上的倉儲?
是否了解 CMSimfly 動態與靜態系統之間的關係?
是否會在 CMSimfly 中上傳檔案, 引用檔案?
是否會在 CMsimfly 中上傳圖檔, 引用圖檔?
是否會在 CMSimfly 中嵌入 Youtube 影片?
是否會在 CMSimfly 頁面中加入 Javascript 互動程式?
W14 -> 所完成的隨身示範系統為 2019_cdb_w13.7z (s1 Fossil SCM 的 doc 為: https://s1.mde.nfu.edu.tw:5443/kmol2019/doc/trunk/index.html, Github 倉儲為: https://github.com/scrum-4/2019wcmj, Github Pages 網頁為: https://scrum-4.github.io/2019wcmj/)
是否會更改 CMsimfly 靜態系統所使用的模板?
是否能將 USB 隨身碟格式為 NTFS 或 extFAT, 以便放入 Ubuntu 虛擬主機檔案?
是否會使用自己隨身碟中的 Virtualbox 與 Ubuntu 中的 Fossil SCM 來伺服靜態 CMSimfly 檔案?
是否會使用自己隨身碟中的 Virtualbox 與 Ubuntu 中的 uwsgi 來伺服動態 CMSimfly 系統?
2. 是否已經根據各上述階段任務的操作拍成說明影片, 嵌入自己的 Github Pages 網站?
3. 是否已經著手執行各學員的期末專案, 是否了解各學員的期末報告, 必須同時呈現 html 與 pdf 版本.
各學員繳交供評分之內容: 個人倉儲 Github Pages 網站及 pdf 格式之期末報告.
四技部
除上述五專部各階段任務外, 採用分組協同與全班 Github 協同倉儲模式執行期末專案, 各學員必須繳交在個別學員 Github 倉儲中的內容外, 各分組必須在分組倉儲中集合整理, 且將內容摘要到全班分組倉儲中.
各學員繳交供評分之內容: 個人倉儲 Github Pages 網站及 pdf 格式之期末報告.
各組繳交供評分之內容: 分組倉儲 Github Pages 網站及 pdf 格式之期末報告.
全班協同倉儲中的內容:全班倉儲 Github Pages 網站及 pdf 格式之期末報告.
Monday, May 6, 2019
Why People Use Proxy Server?
Source: https://www.youngzsoft.net/ccproxy/use-proxy-server.htm
A proxy server is a computer that acts as an intermediary between the user's computer and the Internet.
It allows client computers to make indirect network connections to other network services.
If use proxy server, client computers will first connect to the proxy server, requesting some resources like web pages, games, videos, mp3, e-books, any other resources which are available from various servers over Internet.
As soon as getting such request, the proxy server will seek for the resources from the cache in its local hard disk.
If the resources have been cached before, the proxy server will return them to the client computers. If not cached, it will connect to the relevant servers and request the resources on behalf of the client computers.
Then it 'caches' resources from the remote servers, and returns subsequent requests for the same content directly.
Nowadays, we use proxy server for various purpose like sharing Internet connections on a local area network, hide our IP address, implement Internet access control, access blocked websites and so on.
Bellow are some benefits why people use proxy server:
To share Internet connection on a LAN. Some small businesses and families have multiple computers but with only one Internet connection, they can share Internet connection for other computers on the LAN with a proxy server.
To speed up Internet surfing. If use proxy server, all requests from client computers will reach the proxy server at first, if the proxy server has cached the required resources in its local hard disk before with the web cache function, clients will get feedback directly from proxy server, it will be more quickly than direct accessing.
To hide the IP address of the client computer so that it can surf anonymous, this is mostly for security reasons. A proxy server can act as an intermediary between the user's computer and the Internet to prevent from attack and unexpected access.
To implement Internet access control like authentication for Internet connection, bandwidth control, online time control, Internet web filter and content filter etc.
To bypass security restrictions and filters. For example, many work offices have blocked facebook and myspace however, you can use proxy server to bypass such restrictions and access blocked websites easily.
To scan outbound content, e.g., for data leak protection.
To circumvent regional restrictions. For example, a server using IP-based geolocation to restrict its service to a certain country can be accessed using a proxy located in that country to access the service.
此外, 純 IPv6 網路設定電腦可以透過 IPv4 與 IPv6 雙協定支援的代理主機, 連線至只支援 IPv4 協定的伺服器.
A proxy server is a computer that acts as an intermediary between the user's computer and the Internet.
It allows client computers to make indirect network connections to other network services.
If use proxy server, client computers will first connect to the proxy server, requesting some resources like web pages, games, videos, mp3, e-books, any other resources which are available from various servers over Internet.
As soon as getting such request, the proxy server will seek for the resources from the cache in its local hard disk.
If the resources have been cached before, the proxy server will return them to the client computers. If not cached, it will connect to the relevant servers and request the resources on behalf of the client computers.
Then it 'caches' resources from the remote servers, and returns subsequent requests for the same content directly.
Nowadays, we use proxy server for various purpose like sharing Internet connections on a local area network, hide our IP address, implement Internet access control, access blocked websites and so on.
Bellow are some benefits why people use proxy server:
To share Internet connection on a LAN. Some small businesses and families have multiple computers but with only one Internet connection, they can share Internet connection for other computers on the LAN with a proxy server.
To speed up Internet surfing. If use proxy server, all requests from client computers will reach the proxy server at first, if the proxy server has cached the required resources in its local hard disk before with the web cache function, clients will get feedback directly from proxy server, it will be more quickly than direct accessing.
To hide the IP address of the client computer so that it can surf anonymous, this is mostly for security reasons. A proxy server can act as an intermediary between the user's computer and the Internet to prevent from attack and unexpected access.
To implement Internet access control like authentication for Internet connection, bandwidth control, online time control, Internet web filter and content filter etc.
To bypass security restrictions and filters. For example, many work offices have blocked facebook and myspace however, you can use proxy server to bypass such restrictions and access blocked websites easily.
To scan outbound content, e.g., for data leak protection.
To circumvent regional restrictions. For example, a server using IP-based geolocation to restrict its service to a certain country can be accessed using a proxy located in that country to access the service.
此外, 純 IPv6 網路設定電腦可以透過 IPv4 與 IPv6 雙協定支援的代理主機, 連線至只支援 IPv4 協定的伺服器.
Thursday, May 2, 2019
網際內容管理課程任務
期末報告類別
2019 年 Spring 的網際內容管理課程已經到了最後執行分組期末報告的階段, 總共可以分為兩個大類:
此類期末報告的任務, 在將更多適合機械設計與精密機械工程使用的 Javascript 導向內容, 放入 CMSimfly, 並且讓各種裝置都能順利閱讀.
此任務目前已經將 Bootstrap 前端框架配置到 CMSimfly, 其倉儲位於:
https://github.com/scrum-1/wcm2019
網頁則位於:
http://cpgx.kmol.info/wcm2019
在此一類別所能進行的期末報告, 可以透過組員的協同, 將
深入了解網際內容管理系統的配置環境
2019 年 Spring 的網際內容管理課程已經到了最後執行分組期末報告的階段, 總共可以分為兩個大類:
- 持續強化網際內容與系統的可用性
- 深入了解網際內容管理系統的配置環境
此類期末報告的任務, 在將更多適合機械設計與精密機械工程使用的 Javascript 導向內容, 放入 CMSimfly, 並且讓各種裝置都能順利閱讀.
此任務目前已經將 Bootstrap 前端框架配置到 CMSimfly, 其倉儲位於:
https://github.com/scrum-1/wcm2019
網頁則位於:
http://cpgx.kmol.info/wcm2019
在此一類別所能進行的期末報告, 可以透過組員的協同, 將
與
各式 Template 導入 CMSimfly, 讓未來的使用者可以根據不同環境需求, 選擇不同的靜態網頁模板.
至於內容的強化則可根據實習任務三的引導, 將更多設想中的動態 Javascript 模擬或遊戲內容, 放入各組的 CMSimfly 網站中.深入了解網際內容管理系統的配置環境
此類期末報告的任務, 在利用 Virtualbox 中的 Ubuntu 操作系統, 配置一套可以動態啟動的虛擬網際內容管理系統, 並學習如何在虛擬操作系統與實體操作系統中配置 CMSimfly 網際內容管理系統. 相關規劃可以參考: https://2019wcm.blogspot.com/2019/04/virtualbox.html
Subscribe to:
Posts (Atom)
NX12
NX 12 Help https://docs.plm.automation.siemens.com/tdoc/nx/12/nx_help Python related https://docs.plm.automation.siemens.com/tdoc/nx/...
-
學員期中報告影片錄製 上課鐘聲響後 20 分鐘內, 各學員必須啟動 ShareX, 在電腦教室錄製無語音, 至多五分鐘的期中報告自評影片, 拍攝過程中, 可利用 PowerPoint 或其他文字編輯器, 引導影片觀看者了解影片中所要呈現的網站、倉儲或特定的歷程內容. 影片...
-
2019 Spring Week9 五專網際內容管理 期中考自評影片 請各學員依照 https://2019wcm.blogspot.com/2019/04/2019-spring.html 說明 進行期中考週各項任務. 影片上傳後, 以類似下方的 ancho...
-
2019 Spring Week9 2a 期中考自評影片 請各學員依照 https://2019wcm.blogspot.com/2019/04/2019-spring.html 說明 進行期中考週各項任務. 2a 倉儲: https://github.c...