2023 WebConf Taiwan心得及摘錄 Day1

Willy
9 min readAug 14, 2023

--

第一次參加conf這類活動,學到了非常多的東西,不只是技術面還有更多是在軟實力的提升上,是非常值得參加的活動,希望未來每年都可以舉辦。(上一次是2013有點可惜)

以下會是針對我有參與的議程做一些心得及內容的摘錄。

更多內容請參考這次議程的共筆筆記

活用 GitHub Copilot 開發 Web 應用程式

主要是講解及demo關於github copilot的功能與資訊。

  • 第一代為透過註解可以協助產生想要的code
  • 第 2 代copilot chat 可以像chatGPT一樣透過發問來獲得code
  • 良好的命名(function、class)可以增加產出的準確率
  • 使用前可先跟AI告知翻譯使用正體中文,才會回答符合我們常用的語言邏輯
  • 要使用分析的code需要在編譯器中打開
  • 若是新手,還看不懂 code 建議不要使用,因為產生不一定正確,目前還需要會判斷

講者:Will 保哥的技術交流中心

AI 驅動下的開發者體驗

講者提供一些反思問題,讓大家思考不同層面的問題,像是:

如果大家都熟悉copilot的話?那會怎麼樣

如果我只是一兩年經驗,就開始使用copilot 那會怎麼樣

那我所學到的會不會都是如何下註解, 而不是如何寫code

並透過延伸AI這個議題探討其他問題

  • 使用AI開發者體驗也許並沒有變好,一直產生錯誤的code,造成你要去更正他,造成思緒中斷
  • 常常還是可能會產生錯誤的資訊
  • 回饋的重要性 可以改善使用者體驗
  • 專案開始之初 首重要看見全貌
  • 有時候需要往後退才能看見全貌
  • 透過問題更容易看見全貌
  • 透過Google 搜尋問題時有大量的資訊,我們必須自己分析找尋答案這是在學習;透過chpgpt 會直接給我們答案,少掉了很多學習過程
  • 知識有用的地方在於改變行為
  • 使用AI產生的內容應該了解他應用他
  • 將資訊放在大道上 (將來會行進的路上)
  • 吸收沒有使用的知識是在囤積知識
  • 簡單原則:我先做哪件事之後 其他事就會變得比較容易 或者不必去做
  • 正向偏差:所有事情會找到自己的出入
  • 不要自己製造複雜性,讓一切更簡單讓自己隨時可以了解
  • 面對AI我們應該以學習為中心,而不是獲取知識為中心
  • 追求卓越
  • 嬰兒透過模仿成人來學習、藝術家透過模仿大師來學習、程式開發者透過複製貼上來學習
  • 達克效應:懂得越少的人越容易對自己有信心
  • 必須經常做水平思考,可以獲得更多
  • 要獲得必須持續改善
  • 對已知的未知:寫自動測試
  • 透過批判思維,批判自己使自己成長

講者推薦的書:打造第二大腦(書)

講者:Ruddy Lee

WebComponent 的好,用過的都知道

主要是簡單的帶大家認識WebComponent,並提供一些實際應用層面案例

Web Component MDN

  • Web assembly在未來應該會是非常火紅的技術
  • 限縮js作用域是重要的行為,元件化目的在於限縮js作用域、減少耦合性(好找、好改)
  • 估時程不只是開發時程,也應該要加入看old code時程

define 命名至少要兩個單字

customElements.define("word-count", WordCount, { extends: "p" });

Shadow dom

讓css 有作用域,但也吃不到外層的css,可以透過mode調整:

let shadow = elementRef.attachShadow({ mode: "open" });
let shadow = elementRef.attachShadow({ mode: "closed" });

Slot 只支援 Shadow dom

<my-paragraph>
<span slot="my-text">Let's have some different text!</span>
</my-paragraph>

Petite-vue(可以使用vue語法開發web component)

  1. 不是virtual dom base(也就是原本dom元素的事件不會消失)
  2. 檔案小、語法好閱讀、可以配合原有serve side專案,直接在原本專案中使用

講者:奶綠茶

成為前端建築師吧!透過 Frontend Infra 為前端應用打造穩健且高效率的開發體驗

隨著前端越來越複雜Frontend Infra(Frontend Infrastructure)也越來越重要,甚至有些公司會將Infra獨立出一個團隊,而此議程提供了有哪些Infra工具及相關經驗分享

  • Frontend Infra: 維護開發測試等工具及流程(效能優化、CI/CD…等,增加開發效率、產品質量
  • 大型組織非常需要,但小型組織也可以導入,可以多使用現有服務,減少資金消耗

DRY (Don’t Repeat Yourself)原則

  1. Generator(template、rule config、框架…):可以更快速的建立專案環境
  2. Sharing code(npm、util functions…)
  3. design system
  4. Unified CI/CD infra(統一管理 pipeline)
  5. Monitoring (Sentry、Google Analytics、Google Search…): 提供指標、專案的可用程度
  • Frontend Infra優點:提供程式碼一致,但需要多餘的維護資金等

Frontend Infra相關工具:

  1. Lighthouse CI 降低低效能程式碼
  2. SonarQube 降低品質不好程式碼及程式碼安全檢測
  3. DevSecOps 軟體開發生命週期中先導入資安檢測
  4. Renovate for dependency Management 自動化更新套件,自動發PR 管理套件更簡單
  5. Preview URL 每次發PR自動化部屬版本產生改動差異

CI/CD Pipeline 優化流程效率(快速迭代、品質保證、降低風險、自動化…)

  1. 重要資料儲存共享 Artifacts(結果的儲存與共享)(一個 Repo 只能存 2 GB,不管有沒有被使用,在 90 天後都會自動清除。)
  2. Cache(加速 workflow) node_modules GitHub Action Cache (不能使用不同分支Cache、一個 Repo 的 size limit 是 10 GB,如果 7 天都沒有被 hit 到的 Cache 就會被清除。)
  3. Bundle size diffing: CI 中加入 bundle size diff 的流程並顯示在 PR comments 上,可以看到 PR 前後 bundle size 的變動。
  4. Dev Process Optimization:根據PR title 自動化上label (feat bug …等,自動加上label)
  5. Observability(New Relic、Sentry…等):記錄監控錯誤log,追蹤行為、頁面載入時間、錯誤率…等
  • 理解需求不要過度導入

講者:莫力全 Kyle Mo

如何在有限資源下實現十年的後端服務演進

講者主要是分享在Funliday 十年的心路歷程,中間遇到了哪些問題及解決方案,包括一些技術的轉換及補坑過程

  • Nosql 資料怎樣顯示就怎麼存
  • 沒get 就沒http cache
  • Blur hash 縮圖功能

講者:kewang

跳脫技術職與管理職的二分選擇,技術管理職讓職涯無限寬廣

分享一些管理職或技術職的思考面;常常管理職不單單只會需要懂管理,而技術職也許也要懂一些商業,為什麼會考慮管理職、為什麼排斥管理職,架構師偏向技術還是偏商業?項目到商業…等各方面的探討及經驗分享

  • 技術的價值在於創造價值
  • 用些手法讓問變輕鬆

營運 on call 時,無法處理的問題,可先溝通,不要讓值班人員特地叫工程師起來,有時他也沒辦法當下解決,造成白天工作晚上休息被打擾。或者有時也許只要重啟機器就可以了。

  • 透過婉轉的方式提醒構通
  • 技術必須被有效管理才能有效創造價值
  • 拒絕參與政治的結果就是被糟糕的人統治
  • 把自己放到離價值近的地方
  • 帶人要趁早(帶junior、規劃架構、協同開發、承接任務、排定計畫、帶領團隊完成目標、達成目標)
  • 精進自己的管理能力,追求更快更好更有價值,短期學期平衡,長期則要兼顧而非總是妥協,總是要求合理

講者:游舒帆Gipi

那些理所當然,卻像空氣般重要的小事:談開發流程、程式架構與職涯發展

講者分享許多開發過程中的經驗,及如何使用工具及自動化…等方式讓瑣碎容易犯錯的事變成更簡單、單純;最後是講些關於職涯發展的內容。

  • 文字規範是第一步同時也是最不得已的一步:單純使用文件還是會碰到問題,最後還是要詢問
  • 處理瑣碎的流程:變成自動化(如:github action)

怎樣處理讓你想罵人的事情

  1. Formatter linter / husky
  2. PR title checker
  • 透過script or Hooks 讓大家不會忘記
  • 很多東西當他變成習慣,你就忘記了他是個麻煩

Modularization(Soc) vs. Colocation

Modularization (SoC)
|
|-- components
| |-- Header.js
| |-- Footer.js
| `-- Button.js
|
|-- styles
| |-- Header.css
| |-- Footer.css
| `-- Button.css
|
|-- tests
| |-- Header.test.js
| |-- Footer.test.js
| `-- Button.test.js
|
`-- assets
|-- Header.png
|-- Footer.png
`-- Button.png

Colocation
|
|-- components
| |-- Header
| | |-- index.js
| | |-- style.css
| | |-- test.js
| | `-- asset.png
| |
| |-- Footer
| | |-- index.js
| | |-- style.css
| | |-- test.js
| | `-- asset.png
| |
| `-- Button
|-- index.js
|-- style.css
|-- test.js
`-- asset.png
  • 什麼是好的、可以維護的程式碼? 維護程式碼的是人、是團隊,要如何做取決於團隊的習慣和開發經驗
  • 不要侷限自己的角色 (前端、後端工程師)
  • 你可以不用是做的人但要能說得出來你要的是什麼
  • Work smart not work hard

講者:PJ (陳柏融)

從專業到商業:十年軟體架構變遷

軟體架構的變遷及規範都在改變,像是故障被設計為需要異常處理,到視故障為正常狀態,而為故障發生設計隔離,硬體都會故障,軟體當然也會有故障的可能;而微服務的出現也帶來許多改變;整理內容比較深

  • 每個東西都在變化
  • 發現所做事情的價值
  • DevOps:交集我多一點,溝通多一點,打破壁壘,持續整合
  • 選擇重要還是努力重要? 選擇:提高上限;努力:提高下限
  • 微前端一個頁面由許多團隊完成
  • 後端概念影響前端概念 (MVC Pattern)
  • 架構:專業與商業上的平衡
  • 設計系統的架構應以組織架構設計
  • 如果不能影響組織的設計技術和系統設計幾乎是徒勞的
  • 沒有完美的架構只有最適的架構
  • 架構及演化預想但不過早最佳化
  • 好的系統是由邊界而不是由中心形成

講者:曾義峰(Ant)

--

--

Willy
Willy

Written by Willy

前端修練筆記本,記錄一些踩雷及學習過程,希望能順便幫助一些,在學習或開發路上卡關的人們。

No responses yet