NOTES / 思考與實作

技術文章。

把遇到的問題、讀過的論文,和寫過的程式,整理成筆記。

共 61 篇文章

Random Scheduler Note

Random Scheduler Note Golang Scheduler 最近因為 golang 討論區的一篇文章,又簡單複習了下 golang scheduler,其實這個 scheduler 設計上面算是蠻簡單的,具體的內容其實很多文章都寫過了,而特點就是讓多個 goroutines 跑在

Integer Encoding Algorithm 筆記

Integer Encoding Algorithm 筆記 現今的電腦在 CPU 和 Memory 的速度上有極大的差距,而 Memory 到 Disk 上面的差距就更大了,所以有許多的壓縮演算法被套用在不同的應用上,例如 IoT, big data 和 database 之類的, 一個是為了節省儲

Golang 的 string interning 技巧

String Interning 最近在 twitter 上面看到一篇推文 Hacked string interning profiler for golang:https://t.co/EB2uJwzvtxAllows to understand where to use interning &

學習使用 compiler vector extension 去寫 SIMD 程式

最近強者我 Tead lead Champ Yen 在公司內部做了一次 experience sharing,內容非常的精彩,分享了怎麼使用 compiler vector extensions 去寫 SIMD 的 program,進而將 program 的效率提升,並且可以產出 portable

google 的 swisstable hashmap 筆記

Matt Kulukundis 在 cppcon 2017 年給的 talk,我覺得這個 talk 講得非常好,主要是說明如何使用 Swiss Tables ,設計出更符合當代硬體架構的 hash map (flat hash map),google 內部大量採用這個改寫 std:unordered

Linux 的 file descriptor 筆記

前言 說來慚愧,一直以來都在跟 Linux 打交道,也瞭解 everything in unix is a file 的概念,卻沒有真的好好理解 file descriptor 的基本結構是怎樣,但是在知乎上面看到這篇 Linux file descriptor 演進史,讓我對於他為什麼長這樣有更進

Linux 5.1 的 io_uring

之前在 Facebook 上面分享不少技術文章的心得,被網友建議說可以放在 blog 上面,其實原本想在 blog 上面放一些比較長且整理過的東西,不過想想如果自己的心得能讓更多人看見,並且有機會交流也是不錯的事情,接下來應該會慢慢將之前的筆記謄過來。 https://www.facebook.co

AWS SSM session manager 筆記

一直以來,如何登入到 AWS EC2 instance 就是個大問題,以往的方式都是在建立 Instance 的時候,設定其 key pair ,再把 private key 好好的保存下來,不過這個方式對於管理許多機器的人,其實是很煩人的,試問有多少人會乖乖的 rotate 機器上面的 key,而

有關 Cache 的一些筆記

前言 最近看了 Amazon 的一篇文章 Caching challenges and strategies,在談論 cache 的種類,還有一些使用的邏輯和策略,剛好就想稍微整理一下有關於 cache 在分散式系統上面的一些筆記,這中間如果還有看到其他內容,還會再把它補起來,這邊強烈推薦大家看一下

How I Analyze S3 Upload Latency Issues

TLDR; Recently I helped company to finish S3 bucket migration in order to improve image upload speed of our lambda function. I found out letting lambd

Golang 10th Anniversary x GTG 45th 心得

上禮拜很開心可以參加 Golang 10th anniversary 的聚會,身為這次聚會的 co-organizer 加上贊助商,不但要參加 Golang 官方的行前會議,還有準備訂 Pizza 加上當講者,要做的事情真的是蠻多的,然後 Pizza 訂太少,讓晚來的同學沒有吃到,真的是蠻抱歉的,下

Coscup 分享 - HA Prometheus Solution Thanos

上個月參加了 Coscup,完成了我的 Coscup 講者處女秀,對比三年前當主持人,其實當講者輕鬆了不少,而且看到很多熟面孔的感覺非常好。 這次參加的 SDN x Cloud Native x Golang 議程軌,其實有非常多的好主題,而我也分享了一個跟 CNCF & Golang 有相關的 O

透過 IAM access advisor API 來幫 IAM permission 做大掃除

Preface 隨著組織慢慢變大,在 AWS 上面常常會遇到一個問題就是,我的 IAM entity 的 permission 是不是開的太大了,這個問題常常發生在 developer 想要快速驗證自己的 application 能不能 work,而作為 admin 的我們有時會給予太大的權限,等到

透過 loop invariant 學習怎麼寫正確的 binary search

Preface Binary search 記得是我剛入門寫程式的時候,前幾個回家作業,當時寫出來時,覺得整個程式就很直覺,對這個也不太有什麼疑問,直到最近看到 Programming Pearls 這本書裡面,有寫到大概 90% 的 binary search 都是錯誤的,甚至第一版的 binar

AWS Shuffle Sharding

Preface Colm MacCárthaigh 是 AWS 的 Senior Principal Engineer,如果常在追他的 Twitter 帳號會看到很多有趣的 AWS 內部的 architecture 設計,像是最近有人在 og-aws.slack.com 的討論區問到為什麼 AWS

利用 Helm 在 EKS 上安裝 Prometheus

Preface 最近把玩了 EKS 一陣子,基本上 EKS 就是 AWS 提供的 Managed Kubernetes,主要是幫你管理 Kubernetes 的 master node,我們只需要管理 worker node 就好了,所以很多的服務還是可以用原本的 helm chart 裝起來,這篇

Deploy Prometheus Operator With Thanos

Preface Prometheus is widely adopted as a standard monitoring tool with Kubernetes because it provides many useful features such as dynamic service di

FFmpeg libav decode 筆記

Preface 身處在一間做 Surveillance 的公司,一定要熟悉下 FFmpeg 怎麼使用,FFmpeg 真的是蠻偉大的,應該全世界大部分需要處理影音的公司都對他不陌生,FFmpeg 是一個跨平台免費又開源的影音處理方案,採用 LGPL 或是 GPL 的 License,單純使用 ffmp

EKS 的一些筆記

前言 最近大量使用了 AWS 的 EKS ,並且也 migrate 了一些 workload 到 EKS 上面,為了更深入了解 EKS 也找了些文章和影片來看,所以就有了這篇筆記。相關的影片和文章我會列在下面的 Reference。 為什麼需要 EKS 最主要是為了改善維護及升級 k8s clust

記一次 AWS EKS troubleshooting 的歷程

前言 千呼萬喚下,前陣子 AWS 版本的 Kubernetes 終於 GA 了,但其實真正玩過後,跟之前用 CoreOS 跑起來的 Kubernetes 有不少的差別,主要是因為 AWS 需要把 IAM 及 Network 部分和 Kubernetes 做整合,因為權限和網路效能其實對於服務都是很重

Build a better client

Build a better client from cc liu Preface This is a talk I presented at the internal company meeting. It mainly addresses how could we create better c

記一次 Elasticsearch troubleshooting 的歷程

過程 前陣子又發生了 AWS Elasticsearch 的 status 變成 red 的情況,這次跟以往的情形有點不一樣,之前爆炸都是因為 disk space 不足,而後來增加了 Curator 定期清理資料後就解了,而這次發生的 outage 有點不同,也讓我想要記錄下發生的原因和解法。 調

Compassionate code

這是一篇感想文,最近看完了一篇文章叫做 Forget Clean Code, let’s embrace Compassionate Code,還有一篇相關的文章 Thoughts-on-Compassionate-Code,這裡寫的是對第一篇文章的感想,然後在第二篇的文章中找到了一些相同的感觸。

Gracefully Shutdown Docker Container

Recently, I have been working on some existing projects trying to implement graceful shutdown mechanism. The initial idea is to make application invok

用 docker 改善開發流程筆記

前言 在接觸 docker 的這三年中,從一開始的好奇和迷惘,到後來接受並享受了它的好處,途中經歷了一些不為人知的小困難,最近想寫這篇文慢慢回味並且分享一下我的 docker 學習心得,又因為我在 development + operation 方面的工作都有涉獵,更讓我對使用 docker 有不同

IPSec 筆記

前言 這篇筆記是用來記錄 IPSec protocal 的一些細節,前陣子在架設 AWS VPN 的時候,遇到了一些小問題,主要還是防火牆擋到需要走的 port ,而當時就在想自己對於 IPSec protocal 也太不熟悉了,所以才有這篇文章來稍微紀錄一下。 為什麼需要 IPSec IP is

AWS VPN with RouterBoard

Introduction This post is used to note down how to setup Managed VPN connection between office to AWS by using Mikrotik RouterBoard. We basically foll

TCP Network Performance Tuning 筆記

這篇速記主要紀錄看了 AWS reinvent 這個影片的心得,裡面講解怎麼 tuning TCP 相關的 networking issue,影片來源在此 相當推薦這個影片,裡面不僅提到一些 TCP 上面的學術名詞,也很實際的告訴你在 linux 上面怎麼改變那些值,然後還可以看到在 applica

AWS fargate 的簡短筆記

AWS reinvent 2017 推出了許多對 container 管理的新工具,基本上我原本以為有 K8s on AWS 就很厲害了,沒想到 AWS 也沒有想放棄 ECS,在這兩個 container orchestration 的方法上面又疊加了一層 managed system -- far

Retrieving AWS IP range

It's a simple note that how to get notifications while AWS IP range changed Usage http://docs.aws.amazon.com/general/latest/gr/aws-ip-ranges.html AWS

Transaction 筆記

前言 大家都知道 RDBMS 其中有個主要的功能,就是能夠把 Transaction 這種任務,做得很完美,而 Transaction 這件事,在很多地方像是銀行轉帳或是進銷存的商業行為裡面,都是非常重要的,因為可以保證資料庫內的資料一致性。 而隨著 NOSQL 的蓬勃發展,看到很多 3rd par

淺談 Asynchronous Programming

利用這篇文章稍微紀錄一下,最近在公司分享的淺談 Asynchronous programming 的心得,其實在現在各個網路公司盛行的時代,不懂點 Asynchronous model 應該是不太可能的,而且就算不懂實際上大家也是天天在用,類似寫 Browser 端的 javascript,或是不論

Coscup Golang 社群議程主持人之簡短心得!

第一次在 Coscup 擔任議程主持人,說不緊張是假的,其實一開始還結巴哩,不過後來想想,講者應該比我還緊張,而我的責任其實是要好好照顧講者啊 (汗)。原本是要靠 @Evan 大大撐場,很不幸的他剛好有事無法出席,而他找的代打者也剛好在議程這天有事,只好讓備案中的備案 — 我上場啦!,有種在 1A

AWS route53 multivalue 筆記

AWS 發表的新的 route53 routing policy: multivalue,Raddit 上面的某篇文章,有比較了一下跟 simple & weighted 的差別,但主要看這張圖就夠了 http://imgur.com/4gvktlm。 1. simple 是把 multiple v

MySQL partition 筆記

最近要處理一件資料量不太大但是又超過 5kw 行的問題,問題是這樣的,需要一張 table 儲存上傳到 S3 影片的 metadata,像是 id , timestamp , s3_url 等等資料,然後過三個月就把之前的資料連同 metadata 砍掉,而想到簡單一點就用 mysql 的分區表來做

acs-engine-note

ACS Engine 的舊筆記存檔;原始文章目前僅有標題與日期。

Azure VMSS 的簡略使用筆記

在踏入 Azure 領域前,因為原本比較熟悉 AWS,所以從 AWS 的 Service 尋找對應的 Azure Service 算是比較好入門的管道,基本上這個連結 Azure to AWS mapping 算是整理的很不錯,不過也可以看得出來 Azure 也是設定大家都懂 AWS,想要從這邊搶客

AWS 四月小聚速記

這次的聚會是討論 security 1. Bastion 機 外面的 datacenter 都是買現成的 solution,然後有專業的 SI 幫你安裝,感覺很強大啊! Tim Hsu 大大分享,他自己建立 bastion 機器,然後利用 container 隔離每個人的登入環境,很容易收集個別帳號

筆記:學徒模式,優秀軟體開發者的養成之路

Note for Apprenticeship patterns: Guidance for the Aspiring Software Craftsman 1. 跟專家一起工作,先把語言和工具放一邊,跟著專家學習可以得到最大的成長 2. 為自己安排課程:維護閱讀清單 & 讀完的書,公開自己的清單,

How To Use Jenkins Parametered Build

When we build staging and production environment in Jenkins, we might find out a lot of parts are similar and we just need the variable to switch buil

migrate elasticsearch 2.3 to 5.1 on AWS

前陣子看到 Elasticsearch on AWS 終於升級到 5.1,就一直想著要把原本有的 2.3 cluster migrate 到 5.1,而查了一下發現步驟有點小複雜,不過實作過一次就上手了,特地來紀錄一下。 主要是參照下面兩篇文章 1. http://docs.aws.amazon.c

有關溝通的一些想法

最近常看到一些在網路上的爭辯,不管是在 FB 或是在 PTT,最後的結果都是兩造無法說服對方,而淪落為情緒化的口舌之戰,我其實蠻討厭在網路上筆戰的,因為很難看到雙方的語氣,常常會讓溝通難以進行,造成其溝通效果低落,當溝通變成辯論時,雙方只會想找到支持自己的論點,而不是就共同的部分達成共識,而就算到了

ubuntu16.04-docker-aufs

Background 事情是這樣的,前陣子在 AWS 上面使用最新的 ubuntu image 來建置 production 的環境,大家都知道 ubuntu 16.04 已經採用~~萬惡~~的 systemd 來管理 ubuntu 上面的 process,而在我開開心心使用 systemd 來管理

Consistent Hashing

前言 Consistent Hashing 算是前陣子在看的一個分布式演算法,在以往採用 Load Balance 的演算法有許多種,像是 Round Robin,HASH,Least Connection,Response Time,Weighted,而 Consistent Hashing 這種

Golang x CI x CD

前言 最近公司大刀闊斧採用 Golang 重寫架構,話說 CI & CD 這件事在軟體開發中已經算是少不了的一環,而從以前弄 python、 nodejs 一路到 Golang,好像都缺了一篇筆記,以至於常常踩了雷又開始回想到底是怎麼回事,所以才有這篇文章稍微紀錄一下,如何串這些工具。 啊啊啊,使用

docker registry 的簡單安裝紀錄

前言 最近公司也採用自己搭建 docker registry,完成 CI/CD 的最後一厘路,這邊做個簡單的安裝紀錄。 安裝 安裝 docker registry 先把 image 從 dockerhub 上面撈下來,我是用 2.1 這個 version,不過官方版本好像到 2.2.1 了。 先建立

使用 statsd + graphite 的 monitoring 心得

上上個禮拜看到威廉大大在 DevOps conf 裡面發表了 Whoscall 的 Realtime Monitoring 經驗分享,下面這張圖其實勾起我不少回憶,尤其是過去快兩年的時間內,親身體驗架起來的一些東西,有些是我曾經在內部分享過的,想說應該也要分享一下給大家。 緣起 說來也蠻有趣的,當年

RDBMS 先修課程筆記

這個禮拜一放棄DevOps聚會, 跑去上TritonHo的 RDBMS 先修課程, 感覺收穫頗多的, 可惜沒時間在平日的時候繼續上, 把不足的知識補起來, 其實類似的課程還蠻推薦大家參加的, 因為很少有大大會出來無私分享。 以下是那天的投影片: 主要在談論 RDBMS 的一些基本概念, 還有這是一場

Mongodb 如何使用Memory和tuning的小技巧

開始翻以前在 evernote 的連結,發現這篇對於 mongodb 如何使用 memory 的介紹算是簡單易懂,這邊做個小筆記 MongoDB London 2013:Understanding MongoDB Storage for Performance and Data Safety by

Mongodb Storage 的架構和問題解法

Mongodb 的 Storage 架構其實很簡單,這篇文章其實是看完 mongolab 這篇和自己一些經驗心得。 MongoDB storage 架構 Database and Extents 首先參考下面這張圖(與原文不同,我稍微做了點修改) 假設我們有個 database 叫做 test,裡面

Python 的時間還有時區處理

身為一個程式設計師,很容易就會碰到時間處理的問題,如果你的服務是跨國的應用,也會需要瞭解怎麼去換算時區。 舉個例子來說,David 在美西時間的 20:00 (GMT-8) 發表了一則留言,而他在台灣的女朋友 Mary 看到的時間應該是 12:00 (GMT+8)。 Python的時間處理 pyth

hell-hexo

Hello Hexo !!! 一直想要把 Blog 轉到比較好書寫的平台, 在使用過 Blogspot 還有 Medium 後, 覺得還是要自己架架看 static blog, 之前原本是想用 spf13 開發的 Hugo, 不過後來有人推薦我 Hexo, 而讓人感到熱血的地方, 就是 Hexo 是