整理如何設定 git (github, bitbucket, gitlab) 與 Redmine Issue 整合.
這個目的是讓 commit 的東西跟 issue 做關聯性,可以讓相關人員知道到底改了些什麼?
這方法不需要另外安裝 Redmine Plugins, 設定分以下步驟:
- Git Repository 與 Redmine 同步 (系統管理者)
- 訊息關鍵字設定 (系統管理者)
- 專案設定 (專案負責人)
整理如何設定 git (github, bitbucket, gitlab) 與 Redmine Issue 整合.
這個目的是讓 commit 的東西跟 issue 做關聯性,可以讓相關人員知道到底改了些什麼?
這方法不需要另外安裝 Redmine Plugins, 設定分以下步驟:
有人在問 Lambda 抓取 S3 資料出現下載時間過大 (latency) 的問題,我做了這樣的假設:
推論基礎是:都在 LAN 裡的傳輸,會比出去到 WAN 還快。
以 AWS 來說,Lambda / S3 都是在 VPC 裡 (LAN) 的網路傳輸應該會比透過 WAN 去 S3 拿還好。不過找了 Lambda 對於 VPC / Network 官方文件的描述,都沒有提到類似的。
基於好奇心,做了以下的測試。
這張考試重點回到 Developer,考試範圍除了 Solution Architect (ASA) / SysOps Administrator (ASOA) 都已經很熟悉的 VPC / EC2 / IAM / S3 … 等,另外的重點都在 DynamoDB / 3S (SQS, SES, SNS) / SWF / AWS API。
Updated 2018/06/05:AWS 已經發佈新版的 Developer 版本,正在準備的人請注意。相關資訊也可以參考我整理的 這篇說明。
DynamoDB 設計理想源自於 Amazon 的論文: Dynamo: Amazon’s Highly Available Key-value Store, 2007,被稱為是 NoSQL 代表之作。
這篇由 Werner Vogels (AWS CTO) 寫的 Blog: Amazon DynamoDB – a Fast and Scalable NoSQL Database Service Designed for Internet Scale Applications,提到了 DynamoDB 背後設計的歷史、包含以前的 SimpleDB,文章提到幾個設計的重點:
Anyway,以下整理的是 DynamoDB 的重要概念、背後運作的原理。圖文資料都出自官方文件:DynamoDB Developer Guide 。 (有點像在翻譯練習 XD)
新聞來源:New – AWS Application Load Balancer
Application Load Balancers support content-based routing, and supports applications that run in containers. They support a pair of industry-standard protocols (WebSocket and HTTP/2) and also provide additional visibility into the health of the target instances and containers. Web sites and mobile apps, running in containers or on EC2 instances, will benefit from the use of Application Load Balancers.
整理一些利用 AWS CLI 作維運工作的例子,像是:
另外還有 AWS CLI 的使用心得,目的就是達到 Ops as Code。
考完 Solutions Architect (以下簡稱 ASA) 之後,就開始準備考這張 SysOps Administrator (以下簡稱 ASOA),主要因為現在主要的工作內容就是 System Operations / Administration 為主。
以下整理 Study 的摘要與心得。
Updated 2018/06/12:AWS 已經發佈新版的 SysOps 版本,正在準備的人請注意 官方資訊 - SOA-C01 (PDF)。
整理 EC2 Instance Lifecycle 和常遇到的 Troubleshooting.
整理 AWS Security Groups 和 Network ACLs 的差異,特別是 rule 的 stateful 與 stateless 的差異。主要參考自下表:

AWS ELB 是利用 EC2 + Auto Scaling Group / Launch Configuration 實作的 (我猜的)。之前 觀察 Cloudtrail 更加應證此現象。而每一個 ELB 後面有多少台 EC2 可以從 ENI 的數量看得出來。但是 EC2 的數量卻跟 ELB 後面的 Backend 數量不成比例。整理觀察到的現象 …
利用 IAM Policy、以及 EC2 ResourceTag 限制權限,像是只有 DBA 可以針對 DB 機器做動作。不過搞了半天,踩了一個大雷 …. 整理以下 …
NOTE 2018/08/10: 從 Aug 2018 開始,SAA 已經無法考此版內容,這篇文章算是功成身退囉~
使用 AWS 有一段時間,但是真的認真學習相關知識,然後在實務上應用,大概才一年的時間。過程中,覺得 AWS 整個 Cloud 的技術以及 Solution 相當完整,教育訓練也很有系統,加上工作的需求,於是興起考認證的念頭。
剛開始準備其實有點無頭蒼蠅,讀了好幾篇 Whitepapers 和 Guide,發現東西真的是太多了,後來找了一些心得分享,發現官方有完整的 考試指南,才開始收斂準備的方向。
準備考試之前,先確認以下:
以下是我準備時,所閱讀的東西,有些已經把重點整理在 blog。
Updated 2018/02/15: SAA 已經在 2018/02/15 更版,差異請參閱 AWS Certified SAA-01 Update 的說明
S3 全名是 Simple Storage Service,故縮寫 S3,它是 AWS 在 2006 年推出的 第二個 SaaS 服務,有很長的歷史。雖然名字有個 Simple,但其實它不容易。本文整理研讀官方文件、以及工作上遇到的問題,整理以下的筆記:
這件事情 NPM & left-pad: Have We Forgotten How To Program?,似乎在 node.js 圈吵很兇 ….
node.js 現在讓人最困擾的就是: 每個 module 都有小而美的精神,而且都很有個性 (跟 Un*x 很像)。但就是太有個性了,所以讓人覺得隨便的感覺 ….. 特別是很多 source code pull 下來真的是慘不忍睹 … 可讀性差, naming 混亂 ….
一隻 function module 放到 npm, 有可能就會被大的 module 參考. (很多 module 裡只有一行 code 的 ….)
像 left-pad 這種一個 loop 的東西,開發快當然沒問題,但從效能角度來看是有待商榷的,甚至是出局的。
PHP 剛開始的 function 大概就是這樣,超級亂的 function 與 naming / arguments / output … 但是能動 …. 然後 node.js 有些 “慣例性的用法”, 像是 lodash, 熟悉了就還好, 但是可讀性很差. 感覺很像 perl … 寫的人很爽,接手的 XXX 罵不完.
這樣的生態圈發展很快,也非常熱絡,但是對於需要高效能、穩定性、標準化的實務應用來講,還是要多慎選 modules 的使用。特別是效能的評估與架構性。
雖然感覺很亂,語法 (ES6) 在 OO 方面也不夠成熟, 像是沒 interface, TypeScript 才有; 只能宣告成員方法,無法宣告成員屬性; 沒有 private 修飾 …. (可能有,或者有類似的寫法 ….) …. runtime 能否做 profiling, memdump, 分析工具? 重構工具?
但是,天下分久必合,合久必分 …. node.js 還是很棒 + 潮到出水的,值得投資學習 ….
AWS Identity and Access Management (IAM) Policy 的整理.
Architecting for the Cloud (AWS Best Practices) (2016/02) 是 AWS 針對設計雲端架構的最佳實踐原則,描述了很多架構設計要知道的原則。
對於要設計 PaaS 或 SaaS 是非常有參考價值的。另外一篇也是很有參考價值的是 AWS Well Architected Framework.
Updated: 2018/01 我在公司內部教育訓練導讀了此篇,整理 Slide 分享 - Study Notes - Architecting for the cloud (AWS Best Practices, Feb 2016)
整理 [Route53] 的學習筆記。
整理 DNS 概念筆記。
整理 Elastic Load Balancer 的學習筆記,包含了:
內容整理以下:
今天在設定新的 SES 的時候遇到設定 SMTP Credentials 和 IAM Policy 權限的問題。
整理學習 VPC 的筆記。包含以下:
Tomcat Log 出現 “Too many open files”
Log catalina.err 出現類似以下的 exception, 然後 application 就掛了 …
1 | INFO: Deployment of web application archive /usr/tomcat/webapps/app.war has finished in 378,373 ms |
一直有透過 Cloudtrail 在了解資源的使用狀況 (為了方便監控,把訊息放到 Slack),可是發現每天都有一些奇怪的 event 如下圖:

這些 event 的特性有:
一直搞不懂為啥會有這動作,也去問了同事,有沒人在做這樣的動作,可是沒有結論,直到最近我在規劃 VPC 網路架構時 ….
Hexo 3.x 有一些新功能,目前我還不知道有啥用,只不過現在用的 2.8.x 在 OS X 執行 codegen 時效能很差,所以想換個版本試看看是否有改善。
更新版本的方式主要是參考 Migrating from 2.x to 3.0
今天同事丟 docker4xcode 過來,第一時間,心裡覺得怪怪的,因為不久前才稍微讀過幾篇介紹 Docker 原理的文章,對於 Docker 為啥能在 linux 上實現,以及有人利用 shell script 一百行的程式實作出 docker,心裡對 Docker 原理大概有個底。那時候也有去了解 Darwin (OS X kernel) 能否支援相關功能,結果是不行的。
實驗 AWS 兩個 VPC 透過 Peering 方式,可以讓不同 VPC Subnet 可以對連。基本架構如下 (From VPC Peering)

應用實例就是建立開發和測試兩個 VPC,各自有獨立的 Internet Gateway 和 Route Table. 同時也利用 Route53 的 private host zone,建立內部的 DNS 服務。
備註:實驗的過程,用新的 AWS 帳號來做實驗,避免影響正式的服務。
因為 這個 需求,我先在自己的機器實驗成功後,到公司 AWS EC2 設定。公司 AWS 架構比較複雜,所有的機器都在 VPC 裡面,如果要能夠讓外面進來,只有兩個選擇:ELB 或者是 加掛 EIP。 要讓 EIP 可以出去,就必須走 Internet Gateway (IGW),如果 EC2 Instance 放在 VPC 裡,那麼預設都是走 VGW (Virtual Gateway)。要讓這台機器可以同時在 VGW / IGW 兩端游走,後來想到的方法就是加掛另一張網卡 ENI,只是這張網卡的 CIDR 是在 IGW 的 Subnet。他們的關係大概長這樣:
把 Windows Server 的 EC2 做成 AMI 之後,利用此 AMI 重新建立的 Instance,就會變成無法取得 Administrator Password,出現以下訊息:

整理一些在 Linux 常遇到的語言或語系問題。
很多事情,換個角度會有完全不一樣的見解。這篇文章整理我個人對於 SQA 職能的一些想法與經驗談。
20230523 更新: 本文部分收錄在 共同著作《軟體測試實務》 第一冊 第一章之中,歡迎大家彭場。
最近系統遇到相容性的問題,兩個不同的版本並行在線上運作,產生諸多無法預期的問題,像是效能問題、未知的 HTTP 404、503 … 等。問題錯綜複雜,加上歷史包袱的堆疊,加上線上隨時的亂流,形成一種無法控制的風暴。
這讓我思考到幾件事情:
工程師要像趙雲一樣藝高、膽大、心細。
有些公司,只要是碩士畢業,就掛 高級工程師、資深工程師。。。這種感覺就跟 幹訓班 出來,就掛 將軍 一樣軍銜,名不符實。
只要付得起每個月信用卡循環利息最低金額就可以申辦『白金卡』,這信用還真廉價 …
我覺得:
Title 代表的不是表象,而雇主對員工的是信任、期待與責任
那到底怎樣的條件才可以算是 資深軟體工程師?還有其他的 Title?
QA 的工作內容落差很大,要求的條件落差也很大。有的公司 QA 是獨立部門,有的是掛在 R&D 底下,有的則是掛在 PM 底下。
20230523 更新:本文內容部分收錄在 共同著作《軟體測試實務》 第一冊 第一章之中,歡迎大家彭場指導。
幾個 OS X 使用鍵盤的問題:
(在不改動系統設定的前提之下)