Thinking, Coding, and Learning.

先生不知來自何方,亦不知歸去何處,年過而立,參悟生與死,淡泊名與利,但憂天下蒼生。蹤跡走紅塵,藏身山林田野,撫琴於搖滾,振筆於網路,傳道於教學;神遊金庸武俠,往返程式思考,常以此樂而忘眠。... 更多關於我

整理如何設定 git (github, bitbucket, gitlab) 與 Redmine Issue 整合.

這個目的是讓 commit 的東西跟 issue 做關聯性,可以讓相關人員知道到底改了些什麼?

這方法不需要另外安裝 Redmine Plugins, 設定分以下步驟:

  • Git Repository 與 Redmine 同步 (系統管理者)
  • 訊息關鍵字設定 (系統管理者)
  • 專案設定 (專案負責人)
Read More

有人在問 Lambda 抓取 S3 資料出現下載時間過大 (latency) 的問題,我做了這樣的假設:

  1. 把 Lambda 放在 VPC 裡
  2. 把 VPC endpoint 打開,指定到 Lambda subnet 的 Route Table

推論基礎是:都在 LAN 裡的傳輸,會比出去到 WAN 還快。

以 AWS 來說,Lambda / S3 都是在 VPC 裡 (LAN) 的網路傳輸應該會比透過 WAN 去 S3 拿還好。不過找了 Lambda 對於 VPC / Network 官方文件的描述,都沒有提到類似的。

基於好奇心,做了以下的測試。

Read More

這張考試重點回到 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 版本,正在準備的人請注意。相關資訊也可以參考我整理的 這篇說明

Read More

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,文章提到幾個設計的重點:

  • Fast (快)
  • Managed (好)
  • Scalable (好)
  • Durable and Highly Available (好)
  • Flexible (好)
  • Low cost (便宜)

Anyway,以下整理的是 DynamoDB 的重要概念、背後運作的原理。圖文資料都出自官方文件:DynamoDB Developer Guide 。 (有點像在翻譯練習 XD)

Read More

AWS Application Load Balancer 2016/08/11 23:27:00

新聞來源: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.

Read More

Ops as Code with AWS CLI 2016/08/03 21:53:00

整理一些利用 AWS CLI 作維運工作的例子,像是:

  • 根據 Tag 條件,定期刪除不需要使用的 EC2 Instances
  • 根據 Tag 條件,將 EC2 Instances 定期備份成 AMI / Snapshot
  • 統計 EC2 使用狀況。

另外還有 AWS CLI 的使用心得,目的就是達到 Ops as Code

Read More

考完 Solutions Architect (以下簡稱 ASA) 之後,就開始準備考這張 SysOps Administrator (以下簡稱 ASOA),主要因為現在主要的工作內容就是 System Operations / Administration 為主。

以下整理 Study 的摘要與心得。

Updated 2018/06/12:AWS 已經發佈新版的 SysOps 版本,正在準備的人請注意 官方資訊 - SOA-C01 (PDF)。

Read More

整理 EC2 Instance Lifecycle 和常遇到的 Troubleshooting.

Read More

整理 AWS Security GroupsNetwork ACLs 的差異,特別是 rule 的 statefulstateless 的差異。主要參考自下表:

![](/images/AWS/VPC/Comparison-of-Security Groups-and-Network-ACLs.png)

摘錄自 Security in Your VPC

Read More

AWS ELB 是利用 EC2 + Auto Scaling Group / Launch Configuration 實作的 (我猜的)。之前 觀察 Cloudtrail 更加應證此現象。而每一個 ELB 後面有多少台 EC2 可以從 ENI 的數量看得出來。但是 EC2 的數量卻跟 ELB 後面的 Backend 數量不成比例。整理觀察到的現象 …

Read More

利用 IAM Policy、以及 EC2 ResourceTag 限制權限,像是只有 DBA 可以針對 DB 機器做動作。不過搞了半天,踩了一個大雷 …. 整理以下 …

Read More

NOTE 2018/08/10: 從 Aug 2018 開始,SAA 已經無法考此版內容,這篇文章算是功成身退囉~

AWS Security Best Practices

使用 AWS 有一段時間,但是真的認真學習相關知識,然後在實務上應用,大概才一年的時間。過程中,覺得 AWS 整個 Cloud 的技術以及 Solution 相當完整,教育訓練也很有系統,加上工作的需求,於是興起考認證的念頭。

剛開始準備其實有點無頭蒼蠅,讀了好幾篇 Whitepapers 和 Guide,發現東西真的是太多了,後來找了一些心得分享,發現官方有完整的 考試指南,才開始收斂準備的方向。

準備考試之前,先確認以下:

  • 考試的範圍:AWS 的東西 非常非常多 ,範圍也是 非常非常大 ,每個 Service 都有一定程度的複雜 (像 EC2, S3, VPC, CloudFront),同時又會相互關聯、以及適當的 Practices,所以知道考試範圍,才知道接下來怎麼安排準備。
  • 實作:考試題目很活,很少記憶性的題目,大多是給予一個情境,然後問用哪些方案,或者做 trouble shooting。盡可能多練習,考試的內容很多是實務上的問題。
  • 盡可能地在實作中,想問題,然後從 User Guide / Developer Guide / Whitepapers / AWS Developer Forums 找答案.

以下是我準備時,所閱讀的東西,有些已經把重點整理在 blog。

Updated 2018/02/15: SAA 已經在 2018/02/15 更版,差異請參閱 AWS Certified SAA-01 Update 的說明

Read More

Study Notes - AWS S3 2016/04/07 21:53:00

S3 全名是 Simple Storage Service,故縮寫 S3,它是 AWS 在 2006 年推出的 第二個 SaaS 服務,有很長的歷史。雖然名字有個 Simple,但其實它不容易。本文整理研讀官方文件、以及工作上遇到的問題,整理以下的筆記:

  • 一、基本概念 (Concepts)
  • 二、核心功能 (Core Functions)
  • 三、存取權限 (Access Control)
  • 四、資料保護 (Data Protection)
  • 五、服務限制 (Limitation)
  • 六、開發 (Development)
  • 七、成本 (Cost)
  • 八、應用場景 (User Scenarios)
  • 九、常見問答 (FAQ)
Read More

Node.JS left-pad 事件 2016/04/07 11:27:00

這件事情 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 還是很棒 + 潮到出水的,值得投資學習 ….

Reference

Read More

AWS Identity and Access Management (IAM) Policy 的整理.

Read More

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)

Read More

Study Notes - AWS Route53 2016/03/14 21:53:00

整理 [Route53] 的學習筆記。

Read More

DNS (Domain Name Service) 2016/03/14 21:53:00

整理 DNS 概念筆記。

Read More

整理 Elastic Load Balancer 的學習筆記,包含了:

  • Classic Load Balancer (L4 + L7), 上一代的 LB ,已經不建議使用。
  • Application Load Balancer (L7)
  • Network Load Balancer (L4)

內容整理以下:

  • 基本概念
  • 功能
  • 常見問答
Read More

SES SMTP Credentials 2016/02/24 13:30:00

今天在設定新的 SES 的時候遇到設定 SMTP Credentials 和 IAM Policy 權限的問題。

Read More

整理學習 VPC 的筆記。包含以下:

  • 基本概念、設定 VPC 過程問題與心得
  • 相關 AWS 服務
  • 常見的應用場景,包含如何規劃適當的網路架構
Read More

Open File Limit 2016/02/20 23:42:00

Tomcat Log 出現 “Too many open files”

Log catalina.err 出現類似以下的 exception, 然後 application 就掛了 …

1
2
3
4
5
6
7
8
9
10
11
12
INFO: Deployment of web application archive /usr/tomcat/webapps/app.war has finished in 378,373 ms
Sep 2, 2014 10:46:54 AM org.apache.tomcat.util.net.JIoEndpoint$Acceptor run
SEVERE: Socket accept failed
java.net.SocketException: Too many open files
at java.net.PlainSocketImpl.socketAccept(Native Method)
at java.net.AbstractPlainSocketImpl.accept(AbstractPlainSocketImpl.java:375)
at java.net.ServerSocket.implAccept(ServerSocket.java:478)
at java.net.ServerSocket.accept(ServerSocket.java:446)
at org.apache.tomcat.util.net.DefaultServerSocketFactory.acceptSocket(DefaultServerSocketFactory.java:60)
at org.apache.tomcat.util.net.JIoEndpoint$Acceptor.run(JIoEndpoint.java:220)
at java.lang.Thread.run(Thread.java:701)
Sep 2, 2014 10:46:55 AM org.apache.tomcat.util.net.JIoEndpoint$Acceptor run
Read More

一直有透過 Cloudtrail 在了解資源的使用狀況 (為了方便監控,把訊息放到 Slack),可是發現每天都有一些奇怪的 event 如下圖:

這些 event 的特性有:

  • 都是用 root account 在執行 (OMG)
  • 都是刪除 ENI (網卡)
  • 大多都是晚上發生的

一直搞不懂為啥會有這動作,也去問了同事,有沒人在做這樣的動作,可是沒有結論,直到最近我在規劃 VPC 網路架構時 ….

Read More

Migrate Hexo 2.x to 3.0 2016/01/09 00:16:00

Hexo 3.x 有一些新功能,目前我還不知道有啥用,只不過現在用的 2.8.x 在 OS X 執行 codegen 時效能很差,所以想換個版本試看看是否有改善。

更新版本的方式主要是參考 Migrating from 2.x to 3.0

Read More

Docker on OS X?? 2016/01/06 19:41:58

今天同事丟 docker4xcode 過來,第一時間,心裡覺得怪怪的,因為不久前才稍微讀過幾篇介紹 Docker 原理的文章,對於 Docker 為啥能在 linux 上實現,以及有人利用 shell script 一百行的程式實作出 docker,心裡對 Docker 原理大概有個底。那時候也有去了解 Darwin (OS X kernel) 能否支援相關功能,結果是不行的。

Read More

實驗 AWS 兩個 VPC 透過 Peering 方式,可以讓不同 VPC Subnet 可以對連。基本架構如下 (From VPC Peering)

應用實例就是建立開發和測試兩個 VPC,各自有獨立的 Internet Gateway 和 Route Table. 同時也利用 Route53 的 private host zone,建立內部的 DNS 服務。

備註:實驗的過程,用新的 AWS 帳號來做實驗,避免影響正式的服務。

Read More

因為 這個 需求,我先在自己的機器實驗成功後,到公司 AWS EC2 設定。公司 AWS 架構比較複雜,所有的機器都在 VPC 裡面,如果要能夠讓外面進來,只有兩個選擇:ELB 或者是 加掛 EIP。 要讓 EIP 可以出去,就必須走 Internet Gateway (IGW),如果 EC2 Instance 放在 VPC 裡,那麼預設都是走 VGW (Virtual Gateway)。要讓這台機器可以同時在 VGW / IGW 兩端游走,後來想到的方法就是加掛另一張網卡 ENI,只是這張網卡的 CIDR 是在 IGW 的 Subnet。他們的關係大概長這樣:

Read More

把 Windows Server 的 EC2 做成 AMI 之後,利用此 AMI 重新建立的 Instance,就會變成無法取得 Administrator Password,出現以下訊息:

Read More

Linux 語言、語系問題 2015/12/03 22:20:00

整理一些在 Linux 常遇到的語言或語系問題。

Read More

Software QA 的職能條件 2015/10/11 11:08:00

很多事情,換個角度會有完全不一樣的見解。這篇文章整理我個人對於 SQA 職能的一些想法與經驗談。

20230523 更新: 本文部分收錄在 共同著作《軟體測試實務》 第一冊 第一章之中,歡迎大家彭場。

Read More

相容性與維護性 2015/08/22 09:50:30

最近系統遇到相容性的問題,兩個不同的版本並行在線上運作,產生諸多無法預期的問題,像是效能問題、未知的 HTTP 404、503 … 等。問題錯綜複雜,加上歷史包袱的堆疊,加上線上隨時的亂流,形成一種無法控制的風暴。

這讓我思考到幾件事情:

Read More

資深軟體工程師 2015/08/22 00:45:00

工程師要像趙雲一樣藝高、膽大、心細。

有些公司,只要是碩士畢業,就掛 高級工程師資深工程師。。。這種感覺就跟 幹訓班 出來,就掛 將軍 一樣軍銜,名不符實。

只要付得起每個月信用卡循環利息最低金額就可以申辦『白金卡』,這信用還真廉價 …

我覺得:

Title 代表的不是表象,而雇主對員工的是信任、期待與責任

那到底怎樣的條件才可以算是 資深軟體工程師?還有其他的 Title?

Read More

三種 QA (Quality Assurance) 2015/08/20 10:35:30

QA 的工作內容落差很大,要求的條件落差也很大。有的公司 QA 是獨立部門,有的是掛在 R&D 底下,有的則是掛在 PM 底下。

20230523 更新:本文內容部分收錄在 共同著作《軟體測試實務》 第一冊 第一章之中,歡迎大家彭場指導。

Read More

OS X 鍵盤問題 2015/05/27 23:53:00

幾個 OS X 使用鍵盤的問題:

(在不改動系統設定的前提之下)

Read More

面對問題 2015/05/10 21:32:00

跟朋友聊到流程的問題,聊到 這篇文章,整理一下我的想法。

Read More

  • 全站索引
  • 關於這裏
  • 關於作者
  • 學習法則
  • 思考本質
  • 一些領悟
  • 分類哲學
  • ▲ TOP ▲