# 每日 IT 用語筆記 > 想到就記錄,填補開發路上的坑坑洞洞。 ### TTL + TTL = Time To Live 的縮寫,表示「存活時間」或「有效期限」 + 目的:控制資料在系統中的存活期限,避免資料太舊以確保更新性 + 原理:設定一個時間值(通常單位是秒),超過後資料會自動失效或被刪除 + 實際用途: + DNS 中的 TTL:透過快取減少查詢次數,提升解析時間 + 網路封包中的 TTL:防止網路封包無限循環,提升網路穩定性 + 設定資料庫中的 TTL:自動清理過期資料,以節省儲存空間與確保資料時效性 ### D22 命令式 vs 宣告式 + 命令式程式設計(Imperative Programming) + 關注如何執行(How) + 具體步驟描述 + 直接修改變數 + 明確的迴圈、條件 + 宣告式程式設計(Declarative Programming) + 關注要什麼結果(What) + 結果導向描述 + 避免狀態變更/副作用 + 抽象化的操作 + 實務作法:使用純函式(Pure Functions)、不重新賦值變數(Immutability)、避免破壞性變更(Non-destructive operations) 透過宣告式程式設計,能提升程式碼可讀性與可維護性,但在需要考慮效能優化等情況(Case by case),以命令式撰寫會更適合。 ### D21 本地端部署 On-premises オンプレミス(On-premises,本地端部署):是指在公司內部本地環境中部署和管理資訊技術基礎設施,包括伺服器、軟體和資料庫等。與雲端服務(Cloud)相對,On-premises 提供完全的自主控制權,主要應用於需要嚴格資料控管的情況,如政府部門、銀行、醫療相關行業。 * 本地端部署(On-premises) * 完全自主控制、自行負責安全措施、受硬體限制不易擴展、需專業 IT 團隊、高度機密資料 * 雲端服務(Cloud) * 依賴第三方服務、與服務商共同責任、可即時彈性過展、快速部署需求、有效成本控制 * 混合雲(Hybrid Cloud)策略 * 可結合兩者優勢,在關鍵系統使用 On-premises,一版應用採用 Cloud 服務 ### D20 GraphQL vs RESTful API * GraphQL:Client 主導的靈活查詢 * 是一種 API 查詢語言,單一端點 `/graphql` * Client 端指定「彈性」資料結構 * 一次拿到所有需要的資料,減少網路請求 * 強型別系統 - 自動產生文件和型別檢查 * 適合複雜的資料關聯查詢 * REST: Server 主導的標準化操作 * 是一種基於 HTTP 的軟體架構風格,多個端點 `/users`、`/posts…` * Server 端定義「固定」資料結構 * 成熟的工具生態,學習曲線平緩 * 明確的HTTP 語義和快取機制 * 適合簡單的 CRUD 操作 ### D19 字元編碼 Character Encoding 文字コード 由於電腦只認識 1 和 0(二進位),必須透過字元編碼,將文字轉換成數字來儲存資訊。而為了解決不同系統之間的通訊需求,需制定共同標準,以達到相同的編碼結果。 * ASCII * 美國標準資訊交換碼(American Standard Code for Information Interchange),由 ANSI 制定的電腦編碼系統 * 提供 128 個字元組合的 7 位元編碼,支援英文字母、數字、符號 * EBCDIC * 延伸二進位編碼十進位交換碼(Extended Binary Coded Decimal Interchange Code),由 IBM 提出的解決方案 * 提供256 個字元組合的 8 位元編碼,用於企業行系統 * Shift-JIS * 日本電腦系統通用的字碼標準 * Big-5 * 台灣通用的字碼標準 * Unicode * 統一碼/萬國碼,由統一碼聯盟 (The Unicode Consortium) 制定,涵蓋世界上所有文字的國際字碼標準 * 使用 21 位元的編碼空間,實際儲存需透過 UTF-8、UTF-16 等編碼格式 * UTF-8 * UTF-8(8-bit Unicode Transformation Format)是一種可變長度的Unicode 編碼格式 * 向後相容 ASCII,為目前全球編碼主流 > Unicode vs UTF-8 用書來比喻 Unicode = 圖書分類標準,決定全世界每本書的編號 UTF-8 = 實際書本擺放方式 ,決定編號文學 001 的書放在第 1 格 #### 發展歷史 1960s ASCII(7位元):只有英文 1970s EBCDIC:IBM 企業級電腦專用 1980s 各國自製編碼:Shift_JIS 日本 / Big5 台灣 / EUC (Extended Unix Code)… 1990s Unicode(21位元):統一全球標準 2000s UTF-8:最佳實作方式 ### D18 雲端應用開發流程 1. 需求分析 & 技術選型 Technology Selection 2. 前端開發:React + React Router + Axios + Zustand 等套件 3. 後端開發:Node.js + Express + PostgreSQL 4. 整合測試:API介面、資料庫連接、前後端整合等 5. 容器化準備:環境變數、路徑配置 6. Docker/Podman 容器化 7. AWS ECR:提供容器映像存儲服務 8. Kubernetes Cluster(K8s 叢集):自動化部屬、擴展及管理多個容器的系統 9. ArgoCD GitOps:持續部署自動化 後端到部署相關的知識實在過於薄弱,連一些工具相關的單詞都不知道是在做什麼,只好一個一個坑慢慢補了。 ### D17 開發相關 * 編譯 コンパイル Compile * 重新編譯 再コンパイルする Recompile * 從編譯到執行 コンパイルから実行まで From compile to execution * 渲染 レンダリング Rendering * 解決衝突 コンフリクトを解決する Resolve conflicts * 管理依賴 依存関係を管理する Manage dependencies * 更新/安裝/移除套件 パッケージを更新する/インストールする/削除する Update/Install/Remove packages * 擴充系統功能 システム機能を拡張する Extend system functionality * 安裝擴充套件 拡張パッケージをインストールする Install extension package * 開發外掛程式 プラグインを開発する Develop plugin ### D16 常見開源授權 * MIT * 最自由的軟體授權條款 * 需保留版權聲明 * 代表:前端三大框架 Angular/React/Vue、PHP Laravel、jQuery * Apache 2.0 * 廣泛應用在商業開發,提供專利保護 * 需保留版權聲明 + 標註修改 * 代表:swift、Apache2、Android、Kubernetes * GPL(General Public License) * 最早出現的開源條款 * 強制開源(又稱病毒式開源),衍生作品必須同樣採用 GPL * 代表:Linux、MySQL、WordPress * BSD * 介於 Copyleft(著作傳)至 Copyright(著作權)之間的Copycenter(中間版權) * 需保留版權聲明,允許閉源 * 代表: nginx、Django、FreeBSD * LGPL * 較寬鬆的GPL * 只有修改部分需開源 * 代表:OpenOffice * CC0(Creative Commons Zero) * 放棄所有版權,無任何要求 = No Rights Reserved * 代表:免費圖庫素材 ### D15 實現多人協作:OT vs CRDT 為了解決多人協作時的衝突,主要有兩種實現方案: 1. Operational Transformation (OT):操作轉換 2. Conflict-free Replicated Data Types (CRDTs):無衝突複製資料型態 兩種演算法的差異主要如下: * OT:透過「轉換操作」解決多人協作的衝突 特徵:由伺服器處理(集中式)達到即時同步,保證強一致性,但實作上相對複雜 * 應用:Google Docs、Notion、HackMD * 框架:ShareJS * CRDT:透過「特殊資料結構」避免衝突產生 特徵:去中心化(分散式)架構達到異步同步,保證最終結果一致性,擴展性高 * 應用:Git 版本控制、分散式資料庫 * 框架:Yjs、AutoMerge ### D14 WAF(Web Application Firewall)網站應用防火牆 WAF 是專門保護網頁應用程式安全的防火牆,透過監控及過濾 HTTP/HTTPS 流量,阻擋來自網路的惡意攻擊。 特點: 1. 運作在應用層(OSI模型第7層):針對應用程式層面的攻擊,負責過濾惡意流量 2. 反向代理結構:網站流量會先經過 WAF,再到網站伺服器,避免伺服器直接暴露真實IP地址 3. 攻擊檢測:識別SQL注入、跨站腳本(XSS)、跨站請求偽造(CSRF)、分散式攻擊(CC Attack)、惡意 Bot 爬蟲等常見攻擊 ### D13 退信 Bounce バウンス 退信(Bounce):指發送的電子郵件無法送達收件人,而被退回給寄件人的情況。退信率(無法寄達的郵件佔總寄出郵件的比例)高低,將影響到寄件人郵件信譽(Email Reputation),使郵件容易被標記為垃圾信件。 郵件退信可區分為: 1. 絕對退信(Hard Bounce):無法被收信服務器接收的永久退信 例) 無效的郵件地址、不存在的域名、被列入黑名單 2. 軟性退信(Soft Bounce):暫時性原因導致無法寄送被退回,通常會自動嘗試重新發送 例) 收信郵箱容量已滿、郵件檔案過大、臨時性伺服器問題 根據 SMTP(Simple Mail Transfer Protocol,簡單郵件傳輸協議)錯誤代碼,了解退信通知的種類與其對應解決方式,即可有效降低退信率。 ### D12 課金方式 1. 従量課金(じゅうりょうかきん) /使用量課金:從量計費 Usage-based pricing/ Pay-as-you-go pricing(PAYG) 例) 雲端服務根據儲存容量計費 2. 定額課金(ていがくかきん):固定費率 Flat-rate pricing / Fixed pricing 例) 月費固定的Netflix 串流服務 3. 定額従量課金:基本費用+根據用量額外計費 Hybrid pricing 例) 手機費率、瓦斯費 4. ユーザー数課金:用戶數計費 Per-user pricing / User-based pricing 例) Salesforce、Slack 等企業用 SaaS 軟體 5. 段階的課金:階梯式計費 Tiered pricing / Graduated pricing 例) 電費 ### D11 FP - Pure Function & Currying * 純函數 Pure Function:單輸入單輸出,不產生副作用(Side Effect)的 function ``` const add = (a, b) => a + b ``` * 柯理化 Currying:將一個接受 n 個參數的function,轉換成 n 個只接受一個參數的 function ``` const curriedAdd = a => b => a + b ``` * 函式程式設計 Function Programming(FP):以純函數(Pure Function)為基礎,利用柯理化(Currying)等技術實現的設計模式 ``` const nums = [1, 2, 3]; const added = nums.map(curriedAdd(2)); // [3, 4, 5] ``` ### D10 更新與修復 * 熱修復 (Hotfix):針對緊急問題的快速應對 * 修補程式 (Fix Patch):有計劃性的更新 * 更新(Update):軟體的一般性更新 * 服務包 (Service Pack = SP):大規模更新套件 * 錯誤修復 (Bug fix):修正特定缺陷 * 臨時解決方案 (Workaround):暫時性迂迴策略 * 解決方案 (Solution):根本性解決辦法 * 發布 (Release):軟體公開 * パッチ(patch)を当てる/Hotfixを適用(てきよう)する:套用更新檔/熱修復 * Stage/Patchをリリースする:發布~ * ワークアラウンド(Workaround)/更新を実施(じっし)する ### D9 略語 りゃくご * LGTM:Looks Good To Me 看起來不錯 = 給過 * TL;DR:Too Long; Didn’t Read 太長了,沒看 = 懶人包 * WIP:Work In Progress 工作進行中 * TBD:To Be Determined 待確定 * TBR:To Be Reviewed 待審核 * BTW:By The Way 順帶一提 * FYI:For Your Information 供參 ### D8 認證標準 * ISO/IEC 27001 * 資訊安全管理系統的國際標準,2022年新版涵蓋資訊安全、網路安全與隱私保護 * 由國際標準化組織(ISO/IEC)制定,作為ISMS認證的基礎標準 * ISMS 認証 * 情報セキュリティマネジメントシステム認証 * ISMS = 資訊安全管理系統(Information Security Management System) * 基於ISO/IEC 27001 * 在日本,由日本資訊經濟社會推進協會(JIPDEC)作為認證機構運營 * JIS 日本産業規格 * JIS = 日本工業規格(Japanese Industrial Standards) * 基於日本工業標準化法制定的國家標準 * 由日本產業標準調查會(JISC)制定 * Pマーク * プライバシーマーク 隱私標章 * 基於JIS Q 15001(個人情報保護) ### D7 網路用語 * プロトコル Protocol 協定 * クライアント Client 客戶端 * サーバー Server 伺服器端 * リクエストrequest 請求 * レスポンス response 回應 * ネットワーク Network 網路 * LAN(Local Area Network)區域網路:限制封閉區域內連線,現代LAN通常由無線 Wi-Fi 和有線乙太網路構成 * WAN(Wide Area Network)廣域網路:提供遠距離網路連線 * INTERNET インターネット 網際網路:連接全球網路 ### D6 淺拷貝 vs 深拷貝 * 賦值 Assignment(代入 だいにゅう) * 原始型別是 by value(值傳遞):複製實際的值 * 物件型別是 by reference(引用傳遞):只改變指向的對象,完全共享同一物件 * let obj1 = {x: 10}; * let obj2 = obj1; * 淺拷貝 Shallow Copy(シャローコピー) * 只複製物件的最外層,內部巢狀結構則是共用 * spread operator: let obj3 = {...obj1}; * 深拷貝 Deep copy(ディープコピー) * 完全複製整個物件結構 * let obj4 = JSON.parse(JSON.stringify(obj1)); ``` // 原始型別 let a = 5; let b = a; // 值的複製(賦值) // 物件型別 let obj1 = {x: 10}; let obj2 = obj1; // 引用的複製(賦值,不是淺拷貝) // 淺拷貝 let obj3 = {...obj1}; // 複製最外層屬性 // 深拷貝 let obj4 = JSON.parse(JSON.stringify(obj1)); // 完全複製 ``` > Ref:[Javascript 的 Shallow copy VS Deep copy](https://fufong79570.medium.com/javascript-%E7%9A%84-shallow-copy-vs-deep-copy-f1ed7dca5db0) + 精神時光屋:精神と時の部屋(せいしんとときのへや,Hyperbolic Time Chamber) + プロジェクトの締め切りが迫る中、上司が精神と時の部屋に入った。 + まるで精神と時の部屋に入ったかのように、外の世界から切り離された感覚になった。 ### D5 開發用語 クレデンシャルをセットする Setting credential 設定憑證 テストが失敗する・落ちる Test failed 測試失敗 コンストラクタで引数(ひきすう)を渡す Pass arguments in the constructor 透過建構子傳入參數 キャッシュを消す Clear cache 清除緩存 ### D4 開發用語 * ソースコード Source code 原始碼 * リファクタリング Refactoring 重構 * コードレビュー Code review 程式碼審查 * バージョン管理 Version control 版本控制 * デザインパターン Design patterns 設計模式 * デフォルト Default 預設值 * カスタム Custom 客製化 * コネクション Connection 連線 * リダイレクト Redirect 重新導向 * プラットフォーム Platform 平台 ### D3 多租戶技術 Multi-Tenancy Technology マルチテナント(Multi-Tenancy Technology,多租戶技術):是一種「軟體架構技術」,允許單一軟體同時為多個使用者(租戶)提供服務,而租戶之間的資料和操作完全獨立,具備可擴展性並降低維護成本。 #### 實際應用: SaaS(軟體即服務,Software as a Service)雲端服務架構,如 Gmail, Salesforce, Dropbox 等,不同租戶之間資料隔離,但共享相同的軟體基礎設施。 ### D2 命名規則 Naming Convention 1. 烤肉串命名 `kebab-case`(ケバブケース) * 使用小寫字母,單詞之間用連字符(-)連接 2. 駝峰式命名 `camelCase`(キャメルケース) * 小駝峰 lowerCamelCase:第一個單詞首字母小寫 * 大駝峰 UpperCamelCase:首字母都大寫,又稱 PascalCase 3. 蛇形命名 `snake_case`(スネークケース) * 小蛇形式 lower_snake_case:全部小寫字母 * 大蛇形式 UPPER_SNAKE_CASE:全部大寫字母,又稱SCREAMING_SNAKE_CASE ### D1 藍綠部署策略 Blue-Green Deployment ブルーグリーンデプロイメント(Blue-Green Development,藍綠部署):是一種「軟體更新策略」,透過設定兩個完全相同但獨立的環境,一旦新功能在綠色環境測試完成,就會將使用者從舊版(藍色)切換至新版(綠色),以達到最小停機時間的目的。
×
Sign in
Email
Password
Forgot password
or
Sign in via Google
Sign in via Facebook
Sign in via X(Twitter)
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
Continue with a different method
New to HackMD?
Sign up
By signing in, you agree to our
terms of service
.