# 軟體開發流程 ## Peter Chen 陳科翰 --- ## 工作內容 PC 桌面軟體維護,控制器通訊軟體,資料收集整合,計算與修正顯示內容。 台鐵面板顯示介面設計,版面維護。 前後端互動介面設計。 尋求基礎工作在世界的發展地位,拿到專屬自己的技術,得到競爭力。根據 leet code 刷題經驗,數學系較能發現細節和原則,對創新有利,能發現未曾有的定律。如 bitwise or 對數字運算的規則, 5 | 2 = 7, 3 | 2 = 3 ,我能歸納出無限的數字的規律。 也能完善程式和資料計算,缺乏的部分,進而達成目的。 [github_file](https://medium.com/starbugs/%E5%A6%82%E4%BD%95%E5%BB%BA%E7%AB%8B%E7%8D%A8%E4%B8%80%E7%84%A1%E4%BA%8C%E7%9A%84-github-profile-%E8%88%87%E4%B8%89%E5%80%8B%E5%BE%88%E9%85%B7%E7%9A%84%E8%A8%AD%E8%A8%88%E5%8F%8A%E6%87%89%E7%94%A8-ef1cbb4b42c1) --- ### 討論須知 [如何嘴砲](https://phiphicake.blogspot.com/2012/01/paul-graham.html) [sense公民規劃](https://medium.com/sense-tw/spring-update-4392e1784e64) (https://blog.sense.tw/2018/02/what-we-test-and-learn/) [數學github](https://www.kdnuggets.com/10-github-repositories-master-math) --- - MVC 軟體架構。 Model, View, Controller,網頁後端的模型,後面有資料結構。[框架和編譯器](https://www.explainthis.io/zh-hant/swe/mvc) - 以 C++ Builder 為例。 - 物件拖拉開發,物件具有 View 的屬性,利用選單整理 - Object Viewer - 整份程式是專案,含有多個頁面。 - 特色是翻譯成 Pascal 的 C++ 編輯器。 --- ![image](https://hackmd.io/_uploads/SyxMMob7Jg.png) - 左上為頁面結構,左下為 Object Inspecter 物件瀏覽。 - 中央為頁面主要編輯,含 source code, header, 視覺頁面設計 - 右上為專案目錄,右下為物件庫 --- - 接下來,用物件呈現開發過程 - 框架還有分兩個 - VCL : windows 框架 - FMX : 動畫圖片視覺效果框架 - 一般物件:按鈕、標籤、文字列、勾選列、選取列 - Model:含有 Control 的概念 比如 Panel、 tabcontrol - 結合視覺分割頁面,可以在主頁面下包含其他物件,但與主頁面有分層。 - 可以說是框架層 - 程式控制會列在 cpp 檔案中,用文本編輯,並編譯執行來開發。 - 用人的視覺使用經驗來取代從零開始的文本編輯。 --- ![image](https://hackmd.io/_uploads/ByIl2iWmyg.png) - 因為 Windows 使用普遍。所以會讓開發者方便與客戶修改。 - 框架下物件都整理完成,有預定位置,只要決定位置,就可以完成設計。 --- - 以下說明會使用物件、程式碼控制。 - 實際上程式碼也是結合 C/C++ 的資料結構,完成控制頁面的目的。 - 常用架構 enum, struct, class --- 運作原理 ![image](https://hackmd.io/_uploads/HyU3iiWQJl.png) --- - 使用 C 語言的 macro 引入 class 的 header - 軟體有整理成 header,有自己的檔案架構。 - 也使用 C 語言的 pragma 指定編譯相關的庫 --- ![image](https://hackmd.io/_uploads/ryXhxnWXyl.png) - header 包含其他的 class --- 特殊物件 - Animate - 帶入 windows 動畫效果 - Timer - 直接控制物件隨時間回應 - UDP - 導入網路連線的功能 --- 專案介紹 - ECU mapper - university in Perth named to person's name - a work of led matrix outside the building - LAK mapping - triangle shaped led matrix - a commercial building in St.Petersburg, Russia - Opto font tool - a tool that exhibits pixel mapping font - VMS1.0 - Vehicle Media System --- ECU mapper - Jan - May :arrow_forward: Use C plus FMX and VCL framework - May - Aug :arrow_forward: learning mapping tool format - Aug - Nov :arrow_forward: use python to conduct data processing to spreadsheet data --- UI Interface - Data Insert and save to Excel - Excel API read and write data - Main Page - Hint, Wire diagram - length and meta file data read and write - Visual Check : 2 steps, load_led.py, showmap.py --- Python data process Unit - Wrap the data with class - Use class constructor, transform string data to int - Compared to C++, list is used. list can be seen as an array with mixed data type - Some data is generated by data in meta file, we can say it first degree generated data ![shot](https://hackmd.io/_uploads/rJaWnK041l.png) - Idea is to compress graph wiring diagram to array of data, and use the program to generate 2 degree of dependent data --- Meta file ![meta](https://hackmd.io/_uploads/r1pTctAEkl.png) line start number, line end number, strap shift, amount of lines, strap counts in each line, line start coordinate, line direction ---- ![image](https://hackmd.io/_uploads/r1McKrUDye.png) --- #### First degree data $A_i$ : {$A_0$, $A_1$, ...} PLlist are start pixel coordinates in each line Flr_list is the list of strap counts in each line --- #### Second degree data set the block size to 82 pixels , and Scl_list is scaled pixel coordinates in each "**strap**" --- Load data from comparison - first set the strap to 76, then load another file to choose the straps shorter than 76, use string separater to expand or process data - to do so, branch the data reading process and data gerating process and modify the class member, which preserves the data with its special index. ___ ### Structure - picture/ python/ viewpdf/ Win32/ - use libxl to read and write excel file with python commands (xls) pylightxl/pip - viewpdf is another project with a window only. It can be merged with the whole ECU project. - picture is the image data resourse for the application - Win32 is excuection directory --- LAK mapping --- Opto font tool --- #### VMS1.0 - MRT --- 流程圖 plainxml -- chatgpt drawio --- Figma - A form design tool - Use tkinter framework then an application is created. --- SAVC - products - applications ---- ### Video port ![VGA](https://hackmd.io/_uploads/r1LVc-gE1g.png) This is vga. HDMI is advanced. [intro](https://www.laird.tw/2015/05/vga-dvi-hdmi.html) --- ### HDMI and DVI ports ![HDMI](https://hackmd.io/_uploads/SJi-TZeVkl.png) Ipad as host through wire connect to LCD screen with HDMI. --- ### Oppotech and SAVC ![front_ctrl](https://hackmd.io/_uploads/SJeOdZxVJg.png) front control devices, SPU, DDU, SB ![back_ctrl](https://hackmd.io/_uploads/HJNFublEyx.png) back control devices, PC, power, oscilloscope --- ### Comparison Normal HDMI just sends the digital signals to monitor. Like 1K = 1920 * 1080 pixels high quality. We use 64 * 64 sample SMD matrix or 32 * 32 squares (48 * 64 pixels each square). Between PC and screen monitor, there are display divices to set up protocols to video signals. And led Strip, a long pcb bord with mixed led rows usually 2 rows, is controlled by digital driver of MCU. Signal processor unit, data distributor unit, scan board, these devices are deployed in the OS system with uniform monitor settings so we ignore it usually. --- ### Back end The power and oscilloscope is used to supply electric power and analysis signal. There are chips in PCB board of each unit devices, SPU, DDU, SB. --- # license ![confide_state](https://hackmd.io/_uploads/r1E4aZSIyx.png) #### intellectual property and trade secret. --- ### Confidentiality Statement. I understand that during my employment with the Company, I have had access to and participated in important information and programs of the Company, and have learned about the Company's related intellectual property information, and I signed a confidentiality agreement when I arrived at the Company, and I promise not to disclose the Company's related intellectual property and trade secret information to the outside world after I leave the Company, and to observe the principle of not using the Company's related intellectual property and trade secret information in other places. Translated with DeepL.com (free version) --- ### Declariation Intellectual property and trade secret mentioned above, is only confided only if such property is formally documented. And trade secret is only confided if complete document is provided. In the rule of Youtube and Github, the document which related to my work shall be pruned down to ten page document or video clip less than 40 minutes. This declariation is made to prevent arbitary and unrealistic conditions. In contrast, pratical and productive condition is encouraged. All rules remain the same for ever. Peter Chen; Ko Han Chen issued 2025/01/03 --- ### 聲明 上述智慧財產權及商業機密,僅限於有正式文件證明的財產。而商業機密也只有在提供完整文件的情況下才會被保密。依照 Youtube 和 Github 的專利規則,與本人工作相關的正式文件應縮減至 10 頁或視訊剪輯少於 40 分鐘。這項聲明是為了防止任性和不切實際的條件。相反地,我鼓勵實用且有成效的條件。所有規則永遠保持不變。 Peter Chen; Ko Han Chen 2025/01/03 發佈 例:RJ45, Embarcadero C++ builder, python 等公共軟體發明,及類似與公司無關技術,除文件相關外,不在保密範圍,為工作需要,仍可引為範例。所有非營利技術,皆開放 MIT 授權。 ---- ### Qt develop PC `Qt creator`, Raspberry pi `Qt library` ssh connection; [cross_compile](https://www.youtube.com/watch?v=JVJg1kI_WIg&ab_channel=anErik) Test a app with VMware machine [build_connection](https://www.youtube.com/watch?v=YFFLzhKRFak&ab_channel=EmbeddedCoder) qtcreator on raspberry pi, [] --- ### Cross compile 會需要對 cpp [編譯過程](https://junwu.nptu.edu.tw/dokuwiki/doku.php?id=cpp:helloworld),[命令連結](https://medium.com/@alastor0325/https-medium-com-alastor0325-compilation-to-linking-c07121e2803)。有理解,才能掌握進一步交叉編譯的元素。 [reference](https://earthly.dev/blog/cross-compiling-raspberry-pi/) 各自設定好,兩部機器,可以網路下載,或是參考前頁影片, [clip_ubuntu](https://www.youtube.com/watch?v=YFFLzhKRFak) --- #### QT creator local create --- #### PC Windows [步驟](https://ithelp.ithome.com.tw/articles/10321186) follow the steps build the link between PC and Pi, with ssh, app as putty with x11 windows screen manager, #### Pi tool chain 1. linaro cross 5 directories,clip 46:59 --- ### raylib platform - vscode tradition compilar environment, [plugin](https://www.youtube.com/watch?v=xWWqhQ1JnvE&t=75s&ab_channel=AndrewHamelCodes) 插件 - vscode [premake](https://www.youtube.com/watch?v=CnRpkKh_fjE&t=219s&ab_channel=AndrewHamelCodes) template, which sets up shell environment variables, and cmake and github repository. --- ### QT render API - all components are free to recreate - new structure is appliable ---- ## Git 這是文件 一 二 三 文件、程式原始碼、圖片 HTML,java 打字、存檔。 增加、修改、存檔。 不同版本要同時保留,一般不是要改檔名,視為不同的檔案。 為了保留版本的紀錄,利用記錄差異,產生一串紀錄。 這就是版本的歷史。 https://github.com/benlau/qpm-qt-creator-project-template.git ---- ### MobaXterm Remote desktop service [gdm3](https://www.cnblogs.com/xuyaowen/p/mobaxterm-ssh-x11-forward.html) [lighttight](https://hackmd.io/@yarou1025/HJGdDGlGA) 可以用 mobaxterm 遠端連桌面 透過 VNC 協定。 要固定 IP 的話,最好用有線網路,而且要確定路由器可以幫忙紀錄和設定網路位址。
{"title":"軟體開發流程","description":"MVC 軟體架構。 Model, View, Controller","contributors":"[{\"id\":\"bf2bc5d7-c562-4cdf-a03e-34989349d6b2\",\"add\":8823,\"del\":248,\"latestUpdatedAt\":null}]"}
    243 views