參加2023鐵人賽前的自我回顧

前言 參賽動力 工作經歷 第一份工作-軟體工程師 第二份工作-後端工程師 現在的工作? 參賽主題方向 結論 前言 因為要參加鐵人賽,所以比賽前想先鍛鍊自己的寫作能力, 撰寫為什麼要參加比賽的原因? 同時回顧自己開始工作後的經歷 參賽動力 從大學時期就知道有鐵人賽的存在,當初覺得自己技術不強、文筆也不夠好所以就不參加, 但回頭來看只是害怕失敗和變化而已 補充: 原來我曾經參加過2014鐵人賽,但沒搞清規則是連續30天在Day 9放棄了… c++第十二天-字串是用陣列存取 這次參賽起因是查詢技術資料的時候,意外看到今年鐵人賽又要開始了, 或許是經過社會的摩擦後,這次我不想再逃避了!! 在提到參賽主題之前,我想先說明工作後的經歷 工作經歷 第一份工作-軟體工程師 第一份是在高雄軟體園區找到的,而在之前還婉拒了一家韌體相關C++的工作, 新鮮人的履歷大致就是畢業專題和各種寵物專案結合。 名為軟體工程師,但實際工作的項目就是開發Web版的系統, 開發環境就是網頁,你沒有看錯…以現在來看就是Web版的整合開發環境(StackBlitz), 身為一個菜鳥也是個很珍貴的經驗 可以想像成用Google Blogger一樣,寫程式就是登入工程師帳號, 如同寫文章一樣方便,但話雖如此依然需要理解HTML、CSS、JavaScript。 日常的開發就是,但畫面可以使用Bootstrap和JQuery去開發, 而公司的服務核心主要是提供客戶分析的資料,所以工作中也需要理解SQL相關的語法以及如何用平台的語法連接對應的自訂義資料來源產生圖表。 當然後端平台來源再怎麼強大,也抵不過客戶更想要靈活功能的強大,而這時往往需要寫JavaScript標準化使用者的輸入,甚至手刻一個獨一無二的時間元件也都是在工作難得的經驗。 第二份工作-後端工程師 找到這份工作前也是我在猶豫的定位是前端or後端工程師,可能因為有了第一份的經驗後, 後來在Udemy買課自學用MERN架構寫了Todo-Platform 在開發的過程中讓我確定想成為後端工程師,當然這份作品也成了我第二份工作的敲門磚, 那時還被面試官問說你前端寫的還不錯,怎麼會想投後端工程師? 我還很誠實地回應是CSS框架夠好>口< 那時使用的便是 daisyUI ,官網的範例都蠻清楚的(適合喜歡撿現成美感的朋友) 話題扯遠了! 在這間後端開發是使用NodeJS的 ExpressJS,後端工程師需要先(後)寫API文件, 中期還引入Jira進行專案管理,需要工程師根據PM開的Story 開任務票、估時數。 這份經歷讓我體驗到前後端分離的開發,系統事前的規劃、後端/前端工程師/PM之間的溝通,或許是同事比上間多很多才有的分工合作,甚至還有QA的存在,這也是我在上間較小公司難以想像的! 後端部屬的部分內部是用aaPanel(江湖名稱: 寶塔),對外部屬就不提囉,我相信很多公司都有自己的部屬方式。 畢竟我只是想分享經驗,而非洩漏機密! 這點非常重要! 技術總是層出不窮,身為工程師也只能適應變化 by 我 現在的工作? 待業,規律生活鍛鍊身體…還有學習新知?! 或許是慣性思維在後端,即使離職後我在Hahow上 Java Spring Boot課程,學習其他工程師是如何利用成熟的框架是去開發/測試API,畢竟ExpressJS的架構有點太無主見,反而需要花費更多心力在更多後端庫的結合上 參賽主題方向 在上份工作中, 身為後端工程師不太有機會去寫前端, 而是花更多時間去開發API、確認架構、資料等等, 即使撰寫網頁往往也只是利用最純粹的HTML和JavaScript做個展示 因為玩了手機App在Netflix上的接龍遊戲,想試試看我能不能用 不熟悉的語言、領域,製作Web版的我自己的接龍遊戲,若有時間也想結合後端的部分進行實作,...

September 10, 2023 · 1 min · 宗嘉

使用Docker建立Node容器+MySQL容器的範本

前言 距離上一篇文章使用Docker建立Nodejs開發環境範本 已經有1年啦! 那時竟然還擔心部落格太多文章,Github page是否會被限制 Node.js (Express.js + MySQL Server) 建置流程(快速克隆 -> 趕時間) 直接使用git clone語法下載範例 $ git clone https://github.com/kabuto412rock/node-demo.git --branch express-mysql --single-branch 啟動服務、關閉服務 # 進到目錄底層 $ cd node-demo # 啟動Docker服務 (node-demo) $ docker-compose up -d # 停止Docker服務 (node-demo) $ docker-compose down 相對上篇文章的差異 使用sequelize-cli進行Sequelize的設定,畢竟手寫migration、seeds太累 docker-compose.yaml多加MySQL容器、Adminer容器 express-mysqldb: image: mysql:8.0 # WARNIGN:正式環境請不要直接使用原生密碼,這只是開發偷懶用 command: --default-authentication-plugin=mysql_native_password restart: always ports: - "3308:3306" environment: # root的密碼 MYSQL_ROOT_PASSWORD: PyoA2hGpSDQordaDAbuiQIIDS # 預設建立的DB名稱 MYSQL_DATABASE: mydb # DB使用者的帳號 MYSQL_USER: dbuser # DB使用者的密碼 MYSQL_PASSWORD: youiIIDSA2hGpassword my-app資料夾可以注意到config/config....

June 6, 2023 · 1 min · 宗嘉

如何解決動態載入(Dynamic Import)不支援智能提示

前言 因為同事目前使用動態載入資料夾內多個程式檔案時,最後由一個特定檔案輸出,但VSCode編輯引用特定檔案的程式碼時,無法看到相對應的智能提示、引用路徑 我手上的NodeJS專案也有類似的例子,比如說多個Model檔定義在一個models資料夾, 最後統一由models/index.js做查詢檔案動態載入所有Model檔案,最後使用任一Model時只需要引用index.js 好處 只要在models新增一個新Model檔,不用特別修改index.js 需要任一Model時只需要引用index.js 壞處 失去了開發時可以享受靜態引用的VSCode提示(AutoComplete、Intellisense) 所以問題是如何保持好處且消除壞處 思考路境 動態載入不會被VSCode支援提示是因為Intellisense只支援靜態分析, 若改為添加靜態引用就失去原本的動態載入的方便。 除非添加靜態引用這件事本身是自動的… 解法 使用腳本生成靜態引用,如果行得通甚至可以使用類似nodemon去watch特定資料夾內的檔案變化,達到自動生成靜態引用的功能。 範例 https://github.com/kabuto412rock/gen-static-import

November 1, 2022 · 1 min · 宗嘉

Linux指令-設定檔案讀寫權限 chmod

問題: WSL2跑Docker也可以寫原本在Ubuntu寫的hugo,又不用額外安裝homebrew 想用VSCode編輯Docker容器產生的文章後,發現我VSCode竟然沒有權限修改檔案。 解法: 辦法很簡單,修改檔案權限全開 chmod -R 777 content/ 這篇是用來測試Github action是否還有正常運作

October 30, 2022 · 1 min · 宗嘉

[教學] 使用Docker建立Nodejs開發環境範本

大綱 前言 為什麼要用Docker部屬 Node.js (Express.js) 建置流程Ver 1(快速克隆 -> 趕時間) 建置流程Ver 2 (手動 -> 練習過程) node-demo/app/package.json node-demo/app/src/index.js node-demo/docker-compose.yaml 資料夾結構 docker-compose建置說明 version services app (實際上可以取你自己喜歡的名稱web-app之類的) 結語 前言 最近想紀錄一下可重複使用的程式碼片段,這樣之後找就從自己的部落格找會比較方便,尤其是最近常用Docker建立部屬環境。 想看docker-compose建置Express + MYSQL環境,請走這 為什麼要用Docker部屬 雖然網路上可以找到很多理由,但我的理由是: 使用git版本控制,設定檔本身就取代環境建置說明文件 不弄髒本地環境,想刪就刪 替換依賴容易,Ex: MySQL -> Postgresl Docker基本上語法不複雜設定起來也很容易,尤其在建立不熟悉的環境亂試也可以, 且因為Docker有cache layer的關係,所以修改重新跑docker-compose up 也很快就可以建立。 廢話不多說,開始部屬吧… Node.js (Express.js) 建置流程Ver 1(快速克隆 -> 趕時間) 直接使用git clone語法下載範例 $ git clone https://github.com/kabuto412rock/node-demo.git --branch express_template --single-branch 啟動服務、關閉服務 # 進到目錄底層 $ cd node-demo # 啟動Docker服務 (node-demo) $ docker-compose up -d # 停止Docker服務 (node-demo) $ docker-compose down 檢查實際結果 http://localhost/ 建置流程Ver 2 (手動 -> 練習過程) 建立相關的檔案&安裝Express(主要是為了產生package....

April 3, 2022 · 2 min · 宗嘉