/images/avatar.png

Take notes of everything I learn

Welcome to my blog with some of my work in progress. I’ve been working on this book idea. You can read some of the chapters below.

Golang Sync.Map

Go sync.Map source from : https://mp.weixin.qq.com/s/8aufz1IzElaYR43ccuwMyA 在之前的 《爲什麼 Go map 和 slice 是非線程安全的?》 文章中,我們討論了 Go 語言的 map 和 slice 非線程安全的問題,基於此引申出了 map 的兩種目前在業界使用的最多的併發支持的模式。 分別是: 標準庫 sync.Map(Go1.9 及以後) 原生 map + 互斥鎖或讀寫鎖 mutex sync.Map 優勢 在 Go 官方文檔中明確指出 Map 類型的一些建議: https://pkg.go.dev/sync#Map 多個 goroutine 的併發使用是安全的,不需要額外的鎖定或協調控制。 大多數代碼應該使用原生的 map,而不是單獨的鎖定或協調控制,以獲得更好的類型安全性和維護性。 同時 Map 類型,還針對以下場景進行了性能優化: 當一個給定的鍵的條目只被寫入一次但被多次讀取時。例如在僅會增長的緩存中,就會有這種業務場景。 當多個 goroutines 讀取、寫入和覆蓋不相干的鍵集合的條目時。 這兩種情況與 Go map 搭配單獨的 Mutex 或 RWMutex 相比較,使用 Map 類型可以大大減少鎖的爭奪。 性能測試 聽官方文檔介紹了一堆好處後,他並沒有講到缺點,所說的性能優化後的優勢又是否真實可信。我們一起來驗證一下。 首先我們定義基本的數據結構: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 // 代表互斥鎖 type FooMap struct { sync.

AWS S3 CloudFront SSL

AWS S3 CloudFront SSL 架設靜態網站 使用AWS上的 S3, CloudFront 架設網站, 並藉由 AWS Certificate Manager 申請 SSL . 這樣的會就可以不用開啟S3的Static website hosting . 藉由 CloudFront 還可以讓 bucket 不必公開, 限制 bucket 只能由cloudfront讀取~ 流程 S3 建立 Bucket, public 權限打開, 放入你的靜態網頁(index.html) AWS Certificate Manager 申請 SSL (一定要在 virginia us-east-1 !!) Cloudfront 建立 Distribution, 並指向S3 Bucket S3 public 權限要關掉 https://docs.aws.amazon.com/AmazonS3/latest/userguide/website-hosting-custom-domain-walkthrough.html https://aws.amazon.com/tw/blogs/security/how-to-protect-your-web-application-against-ddos-attacks-by-using-amazon-route-53-and-a-content-delivery-network/ Content AWS S3 CloudFront SSL 架設靜態網站 流程 Content 1. S3 建立 Bucket 2. AWS Certificate Manager 申請 SSL 使用DNS驗證 3.

GitHub gitattributes

GitHub gitattributes GitHub 透過 Linguist 來計算各個檔案的程式語言. Github會自動統計, 但有時不如人意, 像是用了第三方東西後或者build 出大量html等, 導致統計結果不準確. 此時可利用 .gitattributes 這檔案來解決此問題. 指定檔案的程式語言 linguist-language ex: 將 ruby計入成java .rb linguist-language=Java 要對整個語言進行啟用和棄用,使用linguist-detectable選項 1 2 *.sql linguist-detectable=false // 放棄SQL 統計 *.html linguist-detectable=true // 啟用 html 統計 指定文件夾進行不統計,用linguist-vendored選項 1 assets/vendor/* linguist-vendored // 排除第三方 排除專案的文件說明 linguist-documentation 1 2 docs/* linguist-documentation docs/formatter.rb linguist-documentation=false 排除自動產生的程式碼 linguist-generated 使用 linguist-generated 排除程式自動產生的檔案(例如最小化過的 JavaScript, 編譯過的 CoffeeScript 檔案等等). 1 js/main.min.js linguist-generated=true Refernece https://github.com/github/linguist https://blog.csdn.net/weixin_45502929/article/details/117553758 https://jmln.tw/blog/2017-08-13-set-github-repo-lang.html

vJoystick

vJoystick 可橋接非遊戲控制器的任何設備與需要遊戲控制器的應用程式的設備驅動程序 http://vjoystick.sourceforge.net/joomla/ Download https://sourceforge.net/projects/vjoystick/ or https://github.com/shauleiz/vJoy vJoystick with UCR https://home.gamer.com.tw/creationDetail.php?sn=4886070 https://www.youtube.com/watch?v=SL3mXAHH-Eg&feature=emb_title Source Code : tajtiattila/vjoy https://github.com/tajtiattila/vjoy Include dll 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 var dll = syscall.NewLazyDLL("vJoyInterface.dll") var ( procGetvJoyVersion = dll.NewProc("GetvJoyVersion") procvJoyEnabled = dll.NewProc("vJoyEnabled") procGetvJoyProductString = dll.NewProc("GetvJoyProductString") procGetvJoyManufacturerString = dll.NewProc("GetvJoyManufacturerString") procGetvJoySerialNumberString = dll.NewProc("GetvJoySerialNumberString") procGetVJDButtonNumber = dll.NewProc("GetVJDButtonNumber") // Get the number of buttons defined in the specified VDJ procGetVJDDiscPovNumber = dll.

AWS Certified Solutions Architect Associate Prepare

[AWS] Certified Solutions Architect – Associate(SAA) 準備 斷斷續續也準備了三~四個多月, 網路上有很多文章教你如何準備, 所以這邊就不多說了, 主要告訴你從準備到考試的流程: 額外30分鐘申請, 如何準備, 有哪些資源, 考場的預約, 到考試注意事項. 先秀一下花了幾個月得來的 SAA證照~ 1. 額外 30 分鐘申請 (記得要先申請, 再去預約考場!!!) 網路上有些文章提供的是舊的介面~ 可參考如何將 AWS Certified 考試時間延長 30 分鐘-MR. 沙先生 此文章 流程如下: 登入 AWS Certification 在 Home 就可以找到 Request Exam Accommodations 點 Request Accommodations Accommodation 選擇 ESL +30 MINUTES 2. 準備 每個人的學習方式皆不同, 我這套不一定對你有用 還是要靠個人的努力了. 以下課程可以在特價時買, 買個約 330~4xx左右 線上課程 看個人需求了, 我是買Stephane Maarek, 主要是利用它裡面的slide. 如果有比較不會的單元, 可以去看影片來加強. Neal Davis: https://www.udemy.com/course/aws-certified-solutions-architect-associate-hands-on/ Stephane Maarek: https://www.

Shorcodes Practice

Built-in Shortcodes Hudo Shorcodes Practice. high light {{< highlight go >}} fmt.Println(“Hello World”) {{< /highlight >}} 1 fmt.Println("Hello World") {{< highlight html >}} This HTML {{< /highlight >}} 1 2 3 <html> <body> This HTML </body> </html> gist {{< gist kimi0230 ede767a27a0d62b4d458a17d28708995 >}} Custom Short Code {{< myshortcode >}} Hi Hi Reference https://gohugo.io/content-management/shortcodes/ https://gohugo.io/templates/shortcode-templates/