Saturday, March 30, 2019

V-rep 與 Webots 使用者手冊轉入 CMSimfly

網際內容管理實習專案

V-rep

http://www.coppeliarobotics.com/helpFiles/ (Github 倉儲) 為一系列 html 檔案, 可從 V-rep 3.6.1 helpFile 檔案下載, 為了讓使用者能直接利用 CMSimfly 編輯管理此一文件資料, 請各組討論該如何將這些資料內容轉為 CMSimfly 格式的靜態與動態網頁.

靜態網頁請使用 Github Pages, 同步動態網頁則採用 Heroku 製作.

Webots

https://cyberbotics.com/doc/guide/menu (Github 倉儲) 中的 docs 目錄則有一系列的 Markdown 檔案, 目前 Webots 採用 Javascript 以動態模式, 將 Markdown 文件轉為 html, 並且透過倉儲 tag 的版次號, 讓使用者可以直接在網際以 URL 參數擷取不同版次下的技術文件.

Webots 目前對於技術文件處理的流程, 除了能夠將網際文件 (目前有英文版的 guide, reference 與 automobile 等三個文件目錄) 以分散式多人協同進行管理外, 對於之後建立不同語系技術文件, 也相對較有效率, 因為只要透過 URL 的參數指向不同語系 Markdown 所在目錄即可讓使用者選擇各語系、各版次 (透過倉儲 tag release) 的網際技術文件.

例如:

以下為 R2019a 版次, guide, reference 與 automobile 目錄下的文件.

https://www.cyberbotics.com/doc/guide/page?version=R2019a

https://www.cyberbotics.com/doc/reference/page?version=R2019a

https://www.cyberbotics.com/doc/automobile/page?version=R2019a

R2019a-rev1 版次文件則分別如下:

https://www.cyberbotics.com/doc/guide/page?version=R2019a-rev1

https://www.cyberbotics.com/doc/reference/page?version=R2019a-rev1

https://www.cyberbotics.com/doc/automobile/page?version=R2019a-rev1

至於 CMSimfly 直接讓使用者編輯 html 檔案的方式, 只要設法引入網際 Markdown Editor, 並採用上述 Webots 處理 Markdown 文件與版次的方式即可!?


參考資料

https://www.crummy.com/software/BeautifulSoup/bs4/doc/

https://pythonprogramminglanguage.com/get-all-image-links-from-webpage/

https://stackoverflow.com/questions/20132458/how-to-concatenate-two-html-file-bodies-with-beautifulsoup

https://stackoverflow.com/questions/39292881/python-beautifulsoup-replace-img-src

Thursday, March 28, 2019

利用 Msys2 編譯 Multiphysics 分析套件 Range3

編譯步驟

https://github.com/Range-Software/range3 是一套能夠進行機構應力與熱流力分析的電腦輔助工程分析套件.

利用 Msys2 執行 Range3 編譯的流程與 https://2019wcm.blogspot.com/2019/03/v-rep.html 類似, 只需透過

pacman -Sy mingw-w64-x86_64-ffmpeg

加裝 ffmpeg 模組, 然後進入 Range3 目錄中的 range 目錄, 執行

qmake -o Makefile range.pro

mingw32-make -f Makefile

就可以在 Range3/range/Range 目錄中得到 Range_debug.exe, 執行時除了可攜系統中必要的 dll 檔案外, 必須額外下載 libcrypto-1_1-x64.dll 檔案, 就可以開啟執行.

自行利用 Msys2 編譯的 Range3, 由於完全獨立於 Windows 系統中的各動態程式庫, 因此相對於採用 Visual Studio 所的到的 100 MB 套件容量, 上述流程編譯取得的 Range3 容量將高達 1 GB 左右.

參考資料

kmol_range3.7z 下載

電子教科書:

Finite Elements - A Gentle Introduction
https://link.springer.com/book/10.1007/978-1-349-13898-2

Finite Element Methods - A Practical Guide
https://link.springer.com/book/10.1007/978-3-319-49971-0

An Introduction to Linear and Nonlinear Finite Element Analysis - A Computational Approach
https://link.springer.com/book/10.1007/978-0-8176-8160-9

Finite Elements Methods in Mechanics
https://link.springer.com/book/10.1007/978-3-319-08037-6

One-Dimensional Finite Elements - An Introduction to the FE Method
https://link.springer.com/book/10.1007/978-3-319-75145-0

Development and Application of the Finite Element Method based on Matlab
https://link.springer.com/book/10.1007/978-3-642-13153-0

Finite Element Methods for Engineering Sciences - Theoretical Approach and Problem Solving Techniques
https://link.springer.com/book/10.1007/978-3-540-76343-7

Range CAE 開發歷史:

2006.08.19 - 推出 0.9.5-2 版 (GUI 採 GTK+ 編寫)
2006.9.28 - 推出 0.9.6-1 版 (GUI 採 GTK+ 編寫)
2006.10.1 - 推出 0.9.6-2 版 (GUI 採 GTK+ 編寫)
2006.10.27 - 推出 1.0.0-RC1 版 (GUI 採 GTK+ 編寫)
2007.09.17 - 推出 1.1 版 (GUI 採 GTK+ 編寫)
2007.12.18 - 推出 1.2 版 (GUI 採 GTK+ 編寫)
2008.02.25 - 推出 1.3 版 (GUI 採 GTK+ 編寫)
2008.04.07 - 推出 1.4 版 (GUI 採 GTK+ 編寫)
2008.06.23 - 推出 1.5 版 (GUI 採 GTK+ 編寫)
2008.10.30 - 推出 1.6 版 (GUI 採 GTK+ 編寫)
2009.02.16 - 推出 1.9 版 (GUI 採 GTK+ 編寫)
2010.01.18 - 推出 2.1 版 (GUI 採 GTK+ 編寫)
2010.06.01 - 推出 2.2 版 (GUI 採 GTK+ 編寫)
2011.09.05 - 推出 2.3 版 (GUI 採 GTK+ 編寫)

Range CAE 以 Qt 改寫

2018.04.30 - 推出 3.0 版, 原始碼以 GPL3 授權釋出 (GUI 採 Qt 編寫)
2018.11.08 - 推出 3.1 版 (GUI 採 Qt 編寫)
2019.01.12 - 推出 3.2 版 (GUI 採 Qt 編寫)

其他原始碼:

https://github.com/FreeFem/FreeFem-sources

https://github.com/FreeFem/FreeFem-doc

https://github.com/ritchie46/anaStruct

https://github.com/ruimaciel/femp

https://github.com/AppliedMechanics-EAFIT/SolidsPy

Thursday, March 21, 2019

透過 Python 程式修改網誌文章

使用 Google Blogger API 可以利用程式修改網誌文章內容. http://mde.tw/cd2019

執行以下程式, 需要擷取 client_secrets.json 權限資料. 參考 https://developers.google.com/api-client-library/python/guide/aaa_client_secrets, 從  https://console.developers.google.com/apis/credentials 取得 client_secrets.json

可攜程式系統執行前, 必須額外安裝:

pip install google-api-python-client

pip install oauth2client

__author__ = 'disk1 At goodkym.com'

import sys
from oauth2client import client
from googleapiclient import sample_tools

argv = ""
# 認證並建立服務
service, flags = sample_tools.init(
  argv, 'blogger', 'v3', __doc__, __file__,
  scope='https://www.googleapis.com/auth/blogger')

try:
    users = service.users()
    # 取得使用者 profile 資料
    user = users.get(userId='self').execute()
    print('網誌名稱: %s' % user['displayName'])
    blogs = service.blogs()
    # 取得使用者所建立網誌名稱
    blogs = blogs.listByUser(userId='self').execute()
    for blog in blogs['items']:
        print(blog['name'], blog['url'])
    posts = service.posts()
    # 新增網誌 post 時, 需要 blog id
    '''
    body = {
    "kind": "blogger#post",
    "id": "5276710004996457925",
    "title": "透過 Python 程式新增網誌文章",
    "content":"使用 Google Blogger API 可以利用程式新增網誌文章內容"
    }
    insert = posts.insert(blogId='5276710004996457925', body=body)
    posts_doc = insert.execute()
    print(posts_doc)
    '''
    # 更新網誌文章時的 body
    body = {
    "kind": "blogger#post",
    "title": "透過 Python 程式修改網誌文章",
    "content":'''使用 Google Blogger API 可以利用程式修改網誌文章內容. http://mde.tw/cd2019
    '''
    }
    update = posts.update(blogId="5276710004996457925", postId="1389587938059038064", body=body, publish=True)
    update_doc = update.execute()
    print(update_doc)
except(client.AccessTokenRefreshError):
    print("error")
    
參考資料

Wordpress 與 Pelican 整合方案

2019 Spring 第五週總結課程教學影片內容

導入 Ungit

說明自 2019 Spring 開始, 可以利用 ungit 簡化近端 Git 指令的使用, 透過網際圖形化介面, 讓使用者進行分散式內容版次管理.

說明如何利用 CMSimfly 以動態模式在近端改版後, 將資料轉為靜態網頁後, 新增提交推送到遠端對應倉儲, 詳細說明請參閱下列影片:



利用 kungit.bat 在倉儲目錄中啟用 ungit



自製可攜系統

以下影片則說明如何自行建立可攜程式系統, 包括從 Python 下載, 安裝, 複製到隨身碟, 移除系統安裝, 然後進行命令搜尋設定等相關技術, 所完成的可攜隨身系統可以解譯流程執行 Python 3 與 ANSI C 程式:




納入 ShareX 的可攜系統:



建立 Blogger 網誌

本學期除了繼續使用 Pelican 網誌系統外, 還導入動態的 Google Blogger 網誌, 以下影片說明如何登入 Google 帳號後, 建立客製化的 Blogger 系統:



機械設計工程系網誌: https://mde2019.blogspot.com/ 

精密機械工程科網誌: https://pmenfu.blogspot.com/

建立 Github 倉儲




建立 Github Pages 網站




利用 CMSimfly 以及 Github Pages 建立網際內容管理系統:


以 ssh 連線對 Github 倉儲改版







加入 y:\home\.ssh\config 設定, 讓 ssh 連線透過 Proxy Server 擷取資料:






IPv6 環境設定與 Git 操作設定

Thursday, March 14, 2019

Github Learning Lab

https://lab.github.com/ 是 Github 利用其倉儲所提供的學習課程, 以下為介紹影片.



https://lab.github.com/githubtraining/introduction-to-github 介紹 Github 系統的相關功能, 其中包括:

  • Communicate in issues
  • Manage notifications
  • Create branches
  • Make commits
  • Introduce changes with pull requests
Github 團隊為此, 還特別建置了一個專門的討論區:



goodkym.com 網站

網域購買費用

goodkym.com 是以 .com 為名的網域, 每年的購買費用約為新台幣 500 - 700 元, 至於 .com.tw 的相對網址, 每年的擁有成本稍貴, 約為新台幣 700 - 1000 元, 亦即任何人或單位, 若自行購買網域, 費用大約是每天 2 - 3 元新台幣左右.

至於一個單位或公司需不需要將英文名稱隨後的所有附屬網域全數購買, 就要看公司的規模大小, 因為除了 .com 之外, 還有無數的附屬網域名稱, 假如公司屬於中小企業, 也就是根據台灣的定義, 以製造業、營造業、礦業及土石採取業登記的公司, 其經常雇用員工數未滿兩百人 (與歐盟相同, 但美國則定義為 500 名員工以下為中小企業), 或實收資本額在新台幣八千萬以下者, 建議只要維護一個 .com 網域即可, 不用理會一些網路蟑螂所佔用的 .com.tw, .tw 或其他許許多多的相同名稱, 但附屬網域登記在不同國家的網域名稱.

如何使用公司的網域

公司的網域名稱只是一個代號, 其功用與實體商標類似, 可以印在與公司產品有關的各種文書資料中, 但最大的功用是要讓既有的產品客戶或潛在客戶, 能夠利用公司的網站擷取到所需的服務或資料, 除此之外則希望當這些新舊客戶利用瀏覽器搜尋時, 公司的官方網站能夠名列前茅, 讓使用者很快找到有用的第一手資訊.

利用 Github Pages 伺服公司網站

總共有兩個步驟:


  1. 使用 Github 帳號上的ㄧ個倉儲, 啟用其 Github Pages, 並且將 Domain Name 設為 goodkym.com
  2. 在 goodkym.com 的 DNS 伺服器設定中, 依照 https://help.github.com/en/articles/setting-up-an-apex-domain 的說明進行設定.


完成後, 當使用者以瀏覽器連結 http://goodkym.com, 就可以連結到所設定的 Github Pages 網頁.

接下來就是採用各種網際內容管理的方法, 希望以永續經營的方式來推廣公司的產品, 造福客戶.

目前, 透過 https://onepagelove.com/logis, 將這個免費的單頁網站資料放到上述對應的倉儲分支中, 就從這裡開始設計一個合用的網站.

Wednesday, March 13, 2019

SciTE 設定

SciTE 在可攜程式系統中扮演很重要的角色, 可以用來解譯 Python 與 Lua, 並且透過 Tiny C 編譯器的特殊功能, 能夠進行類解譯的 ANSI C 程式執行.

此外, start.bat 中的

set PYTHONIOENCODING="utf-8"

讓 Python 程式解譯時, 不會將輸入以 Windows 10 的中文編碼 (Big-5) 讓 UTF-8 中文成為亂碼, 隨後, KMOL 在使用 ungit 執行特定 Git 倉儲各版本內容資料檢視時, 希望以 SciTE 開啟的檔案能夠及時配合顯示目前的內容版本, 就必須透過 Options 中的 Open Global Options File, 啟用

load.on.activate=1 

並且若希望在編輯 Python 程式時, 將 tab 視為 4 個 spaces 的縮排, 則需修改 Indentation 中原定為 8 個 Spaces 設定的 tabsize 與 indent.size, 設為一般 Python 程式建議的 4 個 Spaces 縮排. 並且不要使用 tab 符號.

tabsize=4
indent.size=4
use.tabs=0

Tuesday, March 12, 2019

以 Python 處理自然語言

NLTK

https://www.nltk.org/

https://www.nltk.org/book/

https://medium.com/pyladies-taiwan/nltk-初學指南-一-簡單易上手的自然語言工具箱-探索篇-2010fd7c7540

Dictionary

Webster Dictionary and Wordnet: https://github.com/mdecourse/lookupdict

https://wordnet.princeton.edu/

https://freedict.org/

中文斷字

https://github.com/fxsjy/jieba

利用 Beautifulsoup 或 Scrapy 爬網頁

Beautifulsoup

https://www.crummy.com/software/BeautifulSoup/bs4/doc/

參考

https://codeburst.io/web-scraping-101-with-python-beautiful-soup-bb617be1f486

https://medium.com/@adamaulia/python-simple-crawling-using-beautifulsoup-8247657c2de5

https://www.pythonforbeginners.com/python-on-the-web/web-scraping-with-beautifulsoup

https://www.dataquest.io/blog/web-scraping-beautifulsoup/

https://www.dataquest.io/blog/web-scraping-tutorial-python/


Scrapy

https://scrapy.org/

參考

https://docs.scrapy.org/en/latest/

https://github.com/scrapy/scrapy

https://github.com/geekan/scrapy-examples

https://www.datacamp.com/community/tutorials/making-web-crawlers-scrapy-python

https://www.analyticsvidhya.com/blog/2017/07/web-scraping-in-python-using-scrapy/

https://www.linode.com/docs/development/python/use-scrapy-to-extract-data-from-html-tags/

https://www.accordbox.com/blog/scrapy-tutorial-series-web-scraping-using-python/

https://medium.com/python-pandemonium/develop-your-first-web-crawler-in-python-scrapy-6b2ee4baf954

https://towardsdatascience.com/how-to-scrape-the-web-using-python-with-scrapy-spiders-e2328ac4526

https://www.digitalocean.com/community/tutorials/how-to-crawl-a-web-page-with-scrapy-and-python-3

精密機械 - Github 倉儲, Github Pages 與可攜隨身系統

本週課程在說明如何利用 Github PagesCMSimfly, 建立個人的靜態網際內容管理系統.

Demo 網站: https://mdecourse.github.io/2019wcmj

此處所謂的靜態網際內容管理指 Github Pages 目前只允許伺服倉儲中特定分支的特定目錄中的超文件, 亦即 Html 檔案與 Javascript 程式檔案, 而 CMSimfly 的靜態網頁就是利用 Python 程式, 設法將原本的動態網站系統的內容轉為超文件與 Javascript 後, 單獨儲存在 content 目錄下, 然後透過倉儲根目錄中的 index.html 進行跳轉至 content/index.html, 但是 CMSimfly 倉儲中仍然保留所有動態系統的 Python 程式與設定, 可上傳至其他支援執行 Python 的網際應用伺服器 (例如: Heroku), 並以動態的網站格式型態, 讓管理者登入進行內容管理.

之後, 我們將以 Github 倉儲中的資料版本為主, 設法在各用戶的近端可攜環境中進行版本管理, 然後再同步到 Heroku 動態網站, 或其他自架的網站.

以下為與本週課程有關的操作說明影片.

建立 Windows 10 64 位元可攜程式套件



建立 Github 倉儲



啟用倉儲的 Github Pages 與 CMSimfly



使用 SSH 執行 Git clone 與 push

在 Windows 10 環境下使用可攜系統的優點是使用者可以隨身攜帶程式開發環境外, 還能將工作中的倉儲與認證用資料隨身, 以便在任何時間進行近端或遠端資料維護.

以下操作因僅用於課程教學使用, 所建立的認證用 Private Key 並未使用密碼保護, 其他非教學情境下, 建議一定要多加一組密碼保護認證用 Private Key, 一旦隨身碟遺失後, 無需擔心重要資料被竄改.

未採用密碼保護的 Private Key, 若隨身碟遺失, 則需即刻重新設定 Github 帳號中所使用的 SSH Public Key.

關閉操作系統儲存 Github 帳號密碼設定

目前 KMOL 所使用的 PortableGIT, 內建設定的 credential helper 為 manger, 表示當使用者使用 git push 時內建會跳出讓使用者輸入帳號密碼的對話視窗, 一旦使用者輸入帳號密碼後, 該資料將會儲存於操作系統中, 即便使用者選擇取消, 以手動輸入帳號密碼, 操作系統的 credential manager 依然會保存此一私密資料.

使用


git config --edit --system


可以帶出 vi 編輯器, 編輯 git 指令所使用的系統設定, 只要將 credential 項目中的 helper = manager 刪除後儲存, 即可關閉內定將使用者 Github 帳號密碼儲存於操作系統的問題.


建立 OpenSSH 格式的 Private 與 Public Keys


接下來, 在可攜系統的命令列視窗中, 以 sh 執行 Git 的 shell, 使用


ssh-keygen -t rsa -b 4096 -C "This is my key"

建立位於 y:\home\.ssh\id_rsa 的 Private Key 與位於 y:\home\.ssh\id_rsa.pub 的 Public Key, 並且將 id_rsa.pub 的內容, 轉貼到 Github 帳號 settings 中 SSH and GPG keys 項目內的 SSH Public Key 區.


使用 ssh 協定執行 git clone


為了採用 OpenSSH 協定執行登入認證, 使用者在近端 git clone 倉儲時, 必須使用類似 git@github.com:帳號/倉儲.git 的連線 URL


例如:


要將 https://github.com/mdecourse/wcm2019 的倉儲, 以 ssh 協定 git clone 到近端時, 必須使用:


git clone git@github.com:mdecourse/wcm2019.git


建立位於 wcm2019 的倉儲目錄, 而 git add ., git commit -m 與 git push 的指令則與採 http 連線時的指令相同. 只是採用 ssh 連線下的 git push, git 會讀取位於 y:\home\.ssh\id_rsa Private Key 與 Github 帳號上所設定的 Public Key 進行比對, 若同為一個 pair, 則通過認證, 可將改版的資料推送到遠端倉儲中.


上述 ssh 協定下的 git clone 與 git push, 配合 ungit 使用時, 可以直接輸入提交訊息後, 以 commit & push 將近端版本提交推送到遠端.


ssh 連線透過 proxy server, 必須設定 y:\home\.ssh\config 如下:

ProxyCommand y:/PortableGit/mingw64/bin/connect.exe -H proxy.kmol.info:3128 %h %p

# for user1
# url = git@github.com_user1:user1/cmstest.git
Host github.com_user1
    User git
    Port 22
    Hostname github.com

    IdentityFile "y:\home\.ssh\id_rsa_user1"

    TCPKeepAlive yes
    IdentitiesOnly yes
    
# for user2
# url = git@github.com_user2:user2/user2.com.git
Host github.com_user2
    Port 22
    Hostname github.com

    IdentityFile "y:\home\.ssh\id_rsa_user2"

    TCPKeepAlive yes
    IdentitiesOnly yes
    

Sunday, March 10, 2019

自行編譯 V-rep

背景環境

2018 年除了在 https://github.com/mdecourse/cd2018/issues/15 中記錄如何自製 Windows 10 64 位元系統中的可攜式 3.5.0 rev3 V-rep 外, 還嘗試自行利用 MSYS2 編譯 V-rep, 當時使用的可攜系統為 kmol2018_for_compiling_vrep.zip, 而所完成的結果為 3.4.0 rev1 serialization version 20 的 vrep_kmol.7z.

進入 2019 年, https://github.com/CoppeliaRobotics/v_rep/releases 已經釋出 3.6.0 版, 現在 KMOLab 希望探究, 相同的流程是否能夠完成最新版本 V-rep 的編譯.

當然, 在 Windows 64 位元系統中, 自行編譯 V-rep 的目的, 也是希望透過對於原始碼的研究過程中, 進一步了解 V-rep 相關模組配置的細節, 設法將此一系統的最大功能發揮出來.

首先, 看看 V-rep 3.6.0 相對於 3.4.0, 功能有哪些差異? 從 https://github.com/CoppeliaRobotics/v_rep/releases/tag/vrep-v3.6.0 來看, 隻字未提, 但是從 https://github.com/CoppeliaRobotics/v_rep/releases/tag/v3.5.0 可以知道 3.5.0 版在 2018.02.07 釋出, 因此想知道從 3.4.0 到 3.6.0 V-rep 核心程式之間的差異, 只能自行從累次的提交內容中, 自行爬梳.

接下要進行的工作, 除了設法將最新版製作成可攜之外, 就是一連串程式編譯流程中資料的探索, 目前任務尚未完成, KMOLab 必須繼續努力.

第一個完成的任務為: V-rep 3.6.0 rev1 的可攜系統 v-rep3.6.0_rev1.7z, 先試試看能否在一般的 Windows 10 64 位元系統中執行.

執行編譯

編譯 V-rep 的第一步, 是確認系統所使用的  Lua 版本, 因為整體的 V-rep 架構都是植基於 Lua 系統原始碼之上, 截至 V-rep 3.6.0, 官方仍然使用 Lua 5.1 (目前 Lua 最新版已經來到 5.3.5), 從 https://www.lua.org/source/5.1/ 可以查看 5.1.5 原始碼中的內容, 並且可從 https://www.lua.org/ftp/ 下載 Lua 5.1 的原始碼, 之後在命令列中更換目錄到 lua-5.1 之後, 執行 mingw32-make mingw, 表示要使用 MSYS2 中的 mingw32-make 執行 MAKE, 且宣告 platform 為 mingw, 完成編譯後, 可以在 src 目錄中找到 lua.exe 與 lua51.dll.

註: mingw32-make mingw 指令可以正確編譯 lua 5.1, lua 5.1.4, lua 5.3.4 與 lua 5.3.5, 唯獨無法正確編譯 lua 5.1.5, 因為這裡只需要 lua 5.1, 因此不再處理 lua 5.1.5 編譯上的問題.

由於 V-rep 系統中也使用 lua51jit.dll, 因此可以從 http://luajit.org/download.html 下載 LuaJIT-2.0.5, 進入目錄後, 以 mingw32-make 即可完成編譯.

Lua 5.1.5 除錯

前面以為可以無需處理 Lua 5.1.5 編譯問題, 一旦進入 https://github.com/CoppeliaRobotics/v_rep/blob/562bd9fa1b22b9919a9bee03df64436b21529174/config.pri, 赫然看到 V-rep 開發者在 Windows 建議使用的 Lua 版本, 竟然就是 5.1.5 版, 因此, 還是必須處理所碰到的問題.

從 http://lua-users.org/lists/lua-l/2012-08/msg00121.html 得知 Lua 5.1.5 在釋出原始碼之後, 才發現幾個錯誤, 內容記錄於 http://www.lua.org/bugs.html#5.1.5-1, 只要按照說明更新錯誤, 即可利用 mingw32-make mingw 順利編譯出隨後所需的 lua.exe, luac.exe, lua51.dll 與 liblua.a.

下載 Kmol_lua_515_535.7z

編譯 V-rep 核心

第一步必須編輯 y:\vrep360_kmol\v_rep 目錄中的 config.pri 設定檔案, 根據目前所使用的系統設定內容修改如下:

# location of boost headers:
    BOOST_INCLUDEPATH = "y:/boost_1_66_0"    # (e.g. Windows)
    #BOOST_INCLUDEPATH = "/usr/local/include"    # (e.g. MacOS)

# location of lua headers:
    LUA_INCLUDEPATH = "y:/lua-5.1.5/src"    # (e.g. Windows)
    #LUA_INCLUDEPATH = "../../../../../mingw64/include/lua5.1"    # (e.g. Windows-MSYS2)
    #LUA_INCLUDEPATH = "../../lua5_1_4_Linux26g4_64_lib/include"    # (e.g. Ubuntu)
    #LUA_INCLUDEPATH = "/usr/local/include/lua5.1"    # (e.g. MacOS)

# lua libraries to link:
    LUA_LIBS = "y:/lua-5.1.5/src/liblua.a"    # (e.g. Windows)
    #LUA_LIBS = -llua5.1    # (e.g. Windows-MSYS2)
    #LUA_LIBS = -L"../../lua5_1_4_Linux26g4_64_lib/" -llua5.1    # (e.g. Ubuntu)
    #LUA_LIBS = "/usr/local/lib/liblua5.1.dylib"    # (e.g. MacOS)

# qscintilla location:
    QSCINTILLA_DIR = "y:/QScintilla_gpl-2.10.2"    # (e.g. Windows)
    #QSCINTILLA_DIR = "../../QScintilla-commercial-2.7.2"    # (e.g. Windows-MSYS2)
    #QSCINTILLA_DIR = "../../QScintilla-commercial-2.7.2"    # (e.g. Ubuntu)
    #QSCINTILLA_DIR = "../../QScintilla-commercial-2.7.2"    # (e.g. MacOS)

# qscintilla headers:
    QSCINTILLA_INCLUDEPATH = "$${QSCINTILLA_DIR}/include" "$${QSCINTILLA_DIR}/Qt4Qt5"

# qscintilla libraries to link:
    QSCINTILLA_LIBS = "$${QSCINTILLA_DIR}/libqscintilla2_qt5d.dll.a"    # (e.g. Windows)
    #QSCINTILLA_LIBS = "$${QSCINTILLA_DIR}/release/release/libqscintilla2.dll.a"    # (e.g. Windows-MSYS2)    
    #QSCINTILLA_LIBS = "$${QSCINTILLA_DIR}/release/libqscintilla2.so"    # (e.g. Ubuntu)
    #QSCINTILLA_LIBS = "$${QSCINTILLA_DIR}/release/libqscintilla2.9.0.2.dylib"    # (e.g. MacOS)

# Make sure if a config.pri is found one level above, that it will be used instead of this one:
    exists(../config.pri) { include(../config.pri) }


接著在命令列中, 進入 y:\vrep360_kmol\v_rep 目錄, 執行 qmake -o Makefile v_rep.pro, 過程中將取得 Makefile.Release, 可利用 mingw32-make -f Makefile.Release 開始進行 V-rep 核心的編譯流程.

編譯結束後, 可以在 v_rep/release 目錄中得到 V-rep 系統執行所需的 v_rep.dll 與 libv_rep.dll.a.

Tuesday, March 5, 2019

Windows 10 64 位元操作系統安裝

校園軟體下載

以下連結必須在校園網路、使用學校代理主機或 vpn 模式下才可下載

AutoDesk PDSU (Product Design Suite Ultimate edition) 包含:

Autodesk Inventor Professional
AutoCAD Mechanical
AutoCAD Electrical
AutoCAD
Navisworks Simulate
AutoCAD Raster Design
Autodesk Recap
Autodesk Vault Basic
Autodesk Fusion 360
Navisworks Manage

AutoDesk 安裝教學.pdf

下載 Windows 10 1809.iso 與 windows_kms.bat
下載 Office 2016.iso, 與 2016_office_kms.bat
下載 Matlab 2019a 64 位元_win.iso
下載 Matlab 2019a Linux.iso
Matlab 安裝說明.zip
Nod32_64位元.zip
Nod32 安裝說明.zip

Windows 10 ISO 下載與安裝

https://www.microsoft.com/zh-tw/software-download/windows10 可以下載最新版的 Windows 10 64 位元安裝 iso 檔案, 然後燒錄到 DVD 中備用.
http://www.download82.com/get/download/windows/windows-oem-product-key-tool/ 則可以下載 oemkey.exe, 取得合法 Windows 10 系統的 product key. 若在虎科大校園中, 可以直接下載 Windows 10 1809.iso, 每六個月 Windows 10 必須重新認證, 若電腦位於校外, 必須採用 VPN (Virtual Private Network) 進行認證.

(在校園網路, 也可以直接下載 Office 2016.iso, 與 2016_office_kms.bat)

安裝前處理:

從 https://technet.microsoft.com/en-us/windows/dn938339%28v=vs.60%29?f=255&MSPPError=-2147217396 可以得知:

Unified Extensible Firmware Interface (UEFI) 是希望換掉舊的 BIOS 與 EFI 1.10 規範.

而且若要使用 UEFI 介面所提供的 CSM (相容支援模組), Secure Boot 設定必須取消 (disabled).

Compatibility with legacy BIOS. Some UEFI-based PCs contain a Compatibility Support Module (CSM) that emulates earlier BIOS, providing more flexibility and compatibility for end users. To use the CSM, Secure Boot must be disabled.

使用 UEFI 的優點之一為:

Support for multicast deployment, which allows PC manufacturers to broadcast a PC image that can be received by multiple PCs without overwhelming the network or image server.

2018 年電腦教室管理

2018  年初配合處理電腦輔助設計室 Windows 電腦管理所留下的紀錄:

https://github.com/mdecourse/wcms2018/issues/7

目前已知兩種群準還原卡複製磁區模式, 採 16 位元模式複製, 網路卡使用 Realtech (最下方附加網路卡), 網路卡設定選 No.17, 模式選擇 2, 此一模式的複製傳輸速度較慢, 只有每分鐘至多 300 MB.

複製母機開機至群準表單後, 按下 F10 然後輸入管理密碼後, 等待與相同網卡設定模式的子機進行登錄, 而子機開機後至群準表單後, 必須按下 F9 後, 從母機中進行登錄, 待所有子機全部完成登錄後, 選定特定磁區與全部複製或增量複製, 就可以啟動複製.

若將網路線接在最上方的網路卡, 則可以採用 32 位元複製, 而設定中則選定 No. 11 號網路卡進行複製, 同樣在母機按下 F10 後輸入管理密碼後, 等待按下 F9 的子機進行登錄後, 可以達到約 3GB/分的速度執行複製, 100 GB 的有效資料約 30 分鐘可以完成複製.

電腦磁區複製管理: https://clonezilla.org/

電腦輔助繪圖室 2019 年 Asus 電腦 (D840MB) 手冊: https://dlsvr04.asus.com/pub/ASUS/Desktop/D840MA/T14427_D840MA_D840MB_D840SA_UM_Win10_V1_WEB.PDF

D840MB Drivers and Tools: https://www.asus.com/Commercial-Desktop/D840MB/HelpDesk_Download/

更新 BIOS: https://www.asus.com/tw/support/faq/1012815/

 參考資料

https://docs.microsoft.com/en-us/windows-hardware/manufacture/desktop/windows-setup-installing-using-the-mbr-or-gpt-partition-style

https://mde.tw/cmstest/downloads/asus-support-FAQ-1030858.pdf

https://mde.tw/cmstest/downloads/asus-tw-Commercial-Desktop-D840MB.pdf

https://mde.tw/cmstest/downloads/Asus_Z97-K.pdf

https://mde.tw/cmstest/downloads/asush170m-E_d3.pdf

https://mde.tw/cmstest/downloads/disable-enable-secure-boot-asus-motherboard-uefi-bios-utility.pdf

開放源 Robot 相關模擬套件

V-rep: http://www.coppeliarobotics.com/



Webots: https://cyberbotics.com/



FreeCAD robot workbench: https://www.freecadweb.org/wiki/Robot_Workbench



Blender: https://www.blendernation.com/2018/12/11/robotic-design-with-blender/


Computer Networking 相關教材

https://github.com/mdecourse/wcm2019/issues/1 列出幾份與電腦網路有關的教材, 其中包括超過 800 頁的 An Introduction to Computer Networks.pdf, 100 頁左右的 Data Communication and Computer Network.pdf, 23 頁摘要式的 Introduction to Computer Networking.pdf, 以及 38 頁簡報式的 Networking Fundamental.pdf.

這些資料包含簡要瀏覽 [3, 4] 以及正式電腦網路相關課程都適合使用的完整教科書 [1, 2].

以機械設計或精密機械有關的網際內容管理來看, 學員可以從綜一館 6-9 樓的電腦網路配置與應用作為目標, 配合上述教材進行學習.

從客戶端的角色而言, 則可以先從 Windows 10 的網路設定開始, 了解基本 TCP/IP 的協定, IPv4 與 IPv6 的設定, DNS 伺服器的選擇, ipconfig /all, nslookup 與 tracert 等指令的使用作為開端.

接下來則配合 Google Chrome 與 Firefox 瀏覽器的 proxy 伺服器設定與選用, 了解如何在各樓層的電腦配線與路由器的接力下, 連通到系主幹以及學校主幹.

最後, 則可以將身分從網路使用者提升為網路管理者, 嘗試在 Windows 10 環境中, 以 Virtualbox 虛擬主機學習配置 Ubuntu 伺服器, 了解 Linux 的操作系統、網路架構與相關指令, 並且學習如何配置 Bind Server, Squid Proxy Server, Stunnel, WSGI Server, 以便將與機械設計或精密機械有關的網際程式安裝在虛擬主機中, 讓參與協同成員可以透過電腦與網路的整合, 提高工作效率.

Monday, March 4, 2019

配置 ungit

下載 ungit 與 node.js 程式碼

首先下載 kmol_2019.7z, 接著再下載 nodejs_with_ungit.7z, 兩者分別解開壓縮檔案, 然後將 nodejs 放入 kmol_2019 的 data 目錄中.

設定命令列搜尋路徑

接下來設定啟動 start.bat 中的 ungit 命列列搜尋路徑:

set path8=%Disk%:\nodejs;%Disk%:\nodejs\appdata\roaming\npm;

並且將 path8 納入 path 設定:

path=%path%;%path1%;%path2%;%path3%;%path4%;%path5%;%path6%;%path7%;%Disk%:\p37\site-packages\scipy\extra_dll;%Disk%:\scite\bin;%path8%;

修改 ungit 執行內容

修改 y:\nodejs\appdata\roaming\npm\ungit 成為:

#!/bin/sh
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")

# Yen 必須關掉下列設定, 讓 ungit 可以導引 git 讀取 y:\home 下的 .gitconfig 設定
#case `uname` in
    #*CYGWIN*) basedir=`cygpath -w "$basedir"`;;
#esac

if [ -x "$basedir/node" ]; then
  "$basedir/node"  "$basedir/node_modules/ungit/bin/ungit" "$@"
  ret=$?
else 
  node  "$basedir/node_modules/ungit/bin/ungit" "$@"
  ret=$?
fi
exit $ret

設定 USERPROFILE 環境變數

最後, 為了讓 node.js 能夠使用 y:\home 作為使用者目錄, 在 start.bat 中加入

set USERPROFILE=%Disk%:\home

Sunday, March 3, 2019

在 MSYS2 環境編譯 Solvespace

 以下引用一篇位於 http://project.mde.tw/blog/zai-msys2-huan-jing-bian-yi-solvespace.html 的舊文章.

能夠自行利用隨身碟上的 MSYS2 在 Windows 10 64 位元環境中編譯 https://github.com/solvespace/solvespace, 所代表的意義是, "假如"我們有能力看懂這個小型的參數式 2D/3D 電腦輔助繪圖系統的製作原理, 之後就可以客製化修改此一系統, 加入所要延伸的功能.

只是, 經過四百多天之後, 以下的編譯流程, 還能套用在最新的程式碼嗎?

"假如" 基本的參數式零組件建構軟體已經可以從使用者進階到陽春開發者, 那麼 https://github.com/Range-Software/range3 是否也能夠用類似的流程進行編譯與修改或延伸?

一旦, 協同產品開發者, 擁有最最基本可隨身的 CAD 與 CAE 套件之後, 就終於可以再結合 V-rep, 進行所謂創新產品的開發了嗎?




接下來, "假如"上述彈珠台的每一個立柱, 都裝上感測器, 且被彈珠碰撞後分別代表得分或扣分, "假如" 協同產品設計團隊能夠讓一套所謂具有學習或人工智慧的程式來發球, "它" 有機會可以越學越精準透過發球, 每次都取得彈珠檯遊戲的最高分嗎?

2017.12.25

在 MSYS2 環境編譯 Solvespace 


先前必須在 Ubuntu 或 Windows Visual Studio 環境中, 才能夠編譯 Windows 環境中的 Solvespace 執行檔情況, 在 2014 年 MSYS2 推出之後, 有了截然不同的改變.

MSYS2 建立 Windows 執行程式

MPV 首先發布在 Windows 環境中採用 MSYS2 執行原生編譯, 但是將所依賴的程式庫安裝在 MSYS2 環境中的方法, 並不適用於 Solvespace.

MSYS2 建立 solvespace.exe

在視窗環境, 利用 MSYS2 編譯 Solvespace, 目前已知可行方案為, 只採用 MSYS2 所提供的 gcc 編譯器與 mingw32-make 執行編譯及連結, 但前置處理 Solvespace 所需的 CMake, zlib 與 64 位元 d3dcompiler 程式, 都必須使用 Windows 原生版本. 而且從 Solvespace 下載原始程式後, 必須蓋掉 angle 中搜尋 d3dcompiler_43.dll, d3dcompiler_46.dll 與 d3dcompiler_47.dll 動態連結程式庫的設定.
至於以 CMake 及 mingw32-make 編譯連結得到的 zlib 程式庫, 則必須放入 MSYS2 系統 lib 目錄中, 如此, 一旦在 build 目錄中完成
1
2
cmake .. -G "MinGW Makefiles" -DCMAKE_BUILD_TYPE=Release
mingw32-make
之後, 就可以結合 solvespace.exe, d3dcompiler_43.dll 與 libwinpthread-1.dll, 在 Windows 10 64 位元的環境中啟動執行.

Solvespack 倉儲

根據上述配置所完成的 Solvespace, 專供 KMOLab 程式開發使用, 倉儲位於 Solvespack.

參考資料

下載 kmol_2019.7z

下載 nodejs_with_ungit.7z

p37_adv.7z (下載 5GB, 解開 15 GB)

Qt.7z (下載 8GB, 解開 21 GB)

Solvespace_kmol_2019.7z (100MB)

編譯 Solvespace 流程:

git clone --recursive  https://github.com/solvespace/solvespace

cd solvespace

mkdir build

cd build

cmake .. -G "MinGW Makefiles" -DCMAKE_BUILD_TYPE=Release

mingw32-make

cd bin

solvespace.exe

listdlls64 solvespace.exe

複製執行 Solvespace.exe 所需 dll 或設法將程式庫與 exe 綁定


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/...