Posts by Category

C

Implement Memory Allocator

3 分鐘閱讀

前言 在很多程式語言都會看到 memory allocator,也可以看到陸續發表的 allocator 實作方式,例如 microsoft mimalloc。與其用看 source code 的方式來了解其原理,倒不如從基本學起,並且從實作過程中了解到為什麼他們要這樣設計 allocator。

semaphore sem_post 在 glibc v2.0 v2.1 之比較

2 分鐘閱讀

前言 在翻 futex man document 的時候,不小心看到 Linux Futex的设计与实现 這篇文章。文章中有提到在執行 sem_post 的時候,雖然沒有與其他 thread 競爭,還是會用到 fuxtex system call。當然文章中有提到原因,不過看了原因,覺得這看起來很明顯的效能問題,...

Development

使用 React-Redux 注意事項和運作原理

4 分鐘閱讀

前言 網路上有很多關於如何使用 redux and react-redux 的教學文章,所以在這邊就不寫如何去應用,而是會著重在一些可能會忽略的細節以及大概的 實作原理。其實這些細節都寫在官網上,不過一般在教學文章內較少著墨,所以特別摘錄出來,讓大家在使用 react-redux 時能注意到可能會發生的問題。

E2Etesting

Cypress & Cucumber Introduction

4 分鐘閱讀

Cypress E2E Testing Framework Features No more async hell Cypress automatically retries the query until the element is found. Real time reloads Cypress ...

GNU

semaphore sem_post 在 glibc v2.0 v2.1 之比較

2 分鐘閱讀

前言 在翻 futex man document 的時候,不小心看到 Linux Futex的设计与实现 這篇文章。文章中有提到在執行 sem_post 的時候,雖然沒有與其他 thread 競爭,還是會用到 fuxtex system call。當然文章中有提到原因,不過看了原因,覺得這看起來很明顯的效能問題,...

GameDevelopment

Discussing the Action Manager in Cocos2d-x

少於 1 分鐘閱讀

[前言] 前陣子才剛從英國完成論文返回台灣。因為忙論文 / 忙搬家 / 忙調作息,所以好些時間沒有更新相關知識,覺得自己好像停滯了…明天就是轉職人生的開始,趕緊來繼續惡補Cocos2d-x知識。API使用方式和理解固然很重要,不過我也相當喜歡探討一些運作流程和結構方式,所以文章內容也會比較著重在這部分。這次來看的...

Go

Start HTTP/2 running over cleartext TCP

6 分鐘閱讀

前言 主流使用 HTTP/2 時都是基於 TLS protocol,不過在 HTTP/2 RFC7540 規範中, HTTP/2 其實也可以直接基於 cleartext TCP 來溝通。這次主要介紹 based on cleartext TCP 的 HTTP/2 server 與 client 實作,後續會再加...

Go - Archive files with archive/tar lib

3 分鐘閱讀

前言 由於專案要提供 API 來讓使用者 export 匯出檔案, 因此需要將所需檔案集結成一個 archive file。這個流程是透過 Go 的標準 lib archive/tar 來處理,以下文章將簡單介紹流程和實作方式,並於最後附上完整程式碼。

Google Sign-in with OAuth 2.0

3 分鐘閱讀

前言: 由於目前專案是以 Embedded System 為主,比較少有機會接入第三方 api 的機會,所以這次 side project 就以 Google Sign-in for Web application with Go 的流程當作練習。由於網路上可以找到很多範例,所以在以下文章中會側重在原理 + ...

Go Fundamental - Array

1 分鐘閱讀

前言 最近在學 Go,而之前有一些 C 的基礎,因此在學到 Go 的 Array 時,發現它和 C 的 Array 差異性蠻大的,所以特別記錄下來。

MCU

Node-Red - Node 坑坑紀錄

1 分鐘閱讀

前言 最近工作接觸到 Node-RED,需要建立專屬的 Node,而在這過程中遇到蠻多坑的,所以特別紀錄一下。

Microprocessor System Lab. - Cross Compiler

1 分鐘閱讀

前言 其實整個課程已經看完了,只是因為寫 blog 需要準備很多資料,畢竟有些部分老師快速帶過,所以生產文章的速度遠不及看課程速度XD 這次要說的是 Cross Compiler,因為如果是安裝像是 SW4STM32 IDE,它所有 cross compiler 設定都已經備妥妥了,使用者只要按一個蟲蟲鍵便能快速...

10月份自我學習日誌回顧

1 分鐘閱讀

前言 這次十月份的學習方向和預設有點不太一樣,主要是因為某天在因緣際會之下,接觸到交大開放式課程 微處理機系統實驗 Microprocessor System Lab.,覺得實在是太有趣了,所以就欲罷不能的聽下去,順便把一些相關教學材料也買齊,好好學一下 MCU 。可以預知,接下來會繼續上曹孝櫟老師的 嵌入式系統...

Microprocessor System Lab. - Nucleo-64 development board

2 分鐘閱讀

前言: 在英國的時候,學校大多專注在純軟開發課程上,例如敏捷開發(Agile Development), Web Development, database 等。其中有一堂課令我印象深刻,就是用 logic Unit, MUX 零件自組 16 Instruction Processor,然後自己手動按 Clock...

Meetup

GDG Hsinchu Meetup Sharing #3 Move from C to Go

1 分鐘閱讀

前言 這次又來挑戰在新竹分享啦!每次來工程師大本營分享主題都蠻緊張的,很怕會被下面的工程師夥伴慘電,但即使如此,還是非常希望可以在新竹開講,畢竟新竹很多軟韌體工程師,講起 Operating System 時候,共鳴點比較多~ 本次主題主要是想針對使用 C 的工程師來說明 Go 語言的特性,因此在內容上可能相對比...

Memory Allocator

Implement Memory Allocator

3 分鐘閱讀

前言 在很多程式語言都會看到 memory allocator,也可以看到陸續發表的 allocator 實作方式,例如 microsoft mimalloc。與其用看 source code 的方式來了解其原理,倒不如從基本學起,並且從實作過程中了解到為什麼他們要這樣設計 allocator。

Network

Start HTTP/2 running over cleartext TCP

6 分鐘閱讀

前言 主流使用 HTTP/2 時都是基於 TLS protocol,不過在 HTTP/2 RFC7540 規範中, HTTP/2 其實也可以直接基於 cleartext TCP 來溝通。這次主要介紹 based on cleartext TCP 的 HTTP/2 server 與 client 實作,後續會再加...

ProgrammingSkills

Write a collection

少於 1 分鐘閱讀

前言 記得在6月份面試的時候,有考到自己寫Stack時,應該注意什麼地方,不過那時候很緊張,只有說到使用array來建構stack會有極限值或空值的問題,後來想想,其實還有element被pop之後的記憶體問題。剛好最近在看書複習時,書中只有簡單將top index - 1來限制可取得的element,導致即使a...

Study

2019/11 月份自我學習回顧

少於 1 分鐘閱讀

前言 12/01是我生日,於是給自己放了一個禮拜的休息假,每天下班回去就是睡覺或是滑手機放空,除非公司 slack 出現訊息,不然很少打開電腦。老實說放假的感覺挺好的,沒有進修進度壓力,也可以好好休養身心~不知道是不是剛換環境以及天氣變化的關係,感冒時好時壞,這幾天就去大醫院照內視鏡和超音波做詳細檢查,幸好...

2019/10 月份自我學習回顧

2 分鐘閱讀

前言 應該是開始要努力分享一些學習到的內容了,十月份又變成只有學習日記,快要變成流水帳版了(誤)。十月卡了一個期中考大魔王,而且更可怕的是出社會太久都把微積分忘光,所以又回去複習。這次考試大多是證明,證明就是一個如果一開始錯誤,後面就會接連錯下去的東西~雖然證明不太好念,不過覺得過程中可以幫助釐清邏輯,再加上有考...

2019/09 月份自我學習回顧

2 分鐘閱讀

前言 這個月是一個比較多事的月份,主要原因是重新調整了生涯規劃。雖然自己出社會也快要十年了,但是轉職成 Engineer 也才不過這兩年的事情,因此自己還像是一名剛出社會的半新鮮人一樣,到處地探索自己喜歡的事物,不斷地從過程中試圖挖掘出自己的熱情所在。

2019/08月份自我學習回顧

2 分鐘閱讀

前言 8月份有蠻多事情要處理,首先是 Go Taipei 社群和 DigitalOcean Hsinchu 合辦 Meetup,這也是我第二次在 Go 社群分享主題。而這次探討的主題和 Lock 相關,再加上會涉及一些系統相關議題,因此花了蠻多時間在看相關素材和實作細節,非常怕在 QA 時間被問到什麼很艱深的問題...

2019/07月份自我學習回顧

3 分鐘閱讀

前言 時間超快地又到了八月了~七月整個月天氣都蠻悶熱的,加上小套房也不是很通風,想要好好在房間念書就只能一直開冷氣,偶爾再去金山街星巴克當假文青。除了進修之外,還跟公司旅遊補助團去了一趟高雄、台南小旅行,去高雄的那天剛好遇到輕颱大淹水,在開高速公路的時候,風雨交加,旁邊的大遊覽車不斷踩水激起大浪花,整個過程蠻膽戰...

2019/06月份自我學習回顧

2 分鐘閱讀

前言 六月份安排了一趟北海道旅遊,因此整體唸書時間相較少些。北海道旅遊中,在富良野鄉村地區待了兩日,雖然只有短短時間,但卻讓我體驗到完全不同的生活環境,遼闊無際的花園農田、路上慢步行走的當地居民們、以及寬廣的生活空間,都令人非常嚮往。我很喜歡在都市的緊湊步調,跟公司同事們努力開發以及學習各種新知原理的過程,但有時...

2018/12月份自我學習回顧

1 分鐘閱讀

前言 其實可以看到,我從 11 月開始發文量變少(雖然本來就不多XD),主要是因為目前在複習一些理論課程,我又是手寫筆記派,所以自然地就比較少用 blog 記錄,反而是都寫成筆記,不但能強化當下的記憶,也方便日後複習。

11月份自我學習回顧

1 分鐘閱讀

前言 這個月學習內容主要集中在 Embedded System 和 Network,說來慚愧,雖然大學有修網際網路,但是過了這麼久,很多知識都還給老師了。因為目前在網通廠工作,常常會接觸到 Application Layer Protocol 和使用 UNIX Socket,所以趁這機會再一次把網路課程複習一下,...

UsefulTools

新手入門 - Gitlab Continuous Integration & Deployment

2 分鐘閱讀

前言 之前雖然有聽聞過CI(Continuous Integration)相關工具,但是一直沒有好好認真地研究,畢竟都是一個人寫,總認為自己也不太需要用到CI。直到最近開始上班了,看到了公司如何使用CI來進行build package流程,頓時覺得這工具實在很便利~而因為公司也早已經有完整架構,因此雖然看得到介面...

Jekyll

少於 1 分鐘閱讀

這是第一次用Jekyll寫紀錄,雖然我Project是使用Jekyll的概念來開發的,不過實際上我並沒有真的使用它過,主要原因是怕自己想法會因為這樣而被定型,所以當初在開發的時候,只有參考Jekyll網站上的流程圖而已。現在Project的Prototype已完成,就來使用一下,看有什麼可以改進的地方。就整體架構...

Web

使用 React-Redux 注意事項和運作原理

4 分鐘閱讀

前言 網路上有很多關於如何使用 redux and react-redux 的教學文章,所以在這邊就不寫如何去應用,而是會著重在一些可能會忽略的細節以及大概的 實作原理。其實這些細節都寫在官網上,不過一般在教學文章內較少著墨,所以特別摘錄出來,讓大家在使用 react-redux 時能注意到可能會發生的問題。

WebDevelopment

Tail Recursion in Go

6 分鐘閱讀

前言 最近在實驗效能分析時,有使用到 Tail Recursion 寫法,因此也好奇在 Go 中是否有跟 C 一樣進行 Tail Recursion optimization 優化。在文章中,首先會用 C asm 來說明 tail call optimization,接著 dump Go asm code 來觀察...

Side Project for daily study trello

2 分鐘閱讀

前言 用 Trello 紀錄自己的每日學習進度也好一陣子了,雖然 Trello board 搭配 plugin Calendar 很好用,但是卻有資訊分散在各張卡的問題。因此為了便於在月末寫當月學習報告,以及整理所有曾經讀過的 article/post link,就開發了一個小工具 trello-transfo...

2019/05月份自我學習回顧

1 分鐘閱讀

前言 五月的時候,團隊來了一位經驗豐富的瑞典人,而剛好有這個機會跟他合作,除了跟他練練英文口說能力之外,順便學習一下他的程式經驗。瑞典人是一位懂很多層面的工程師,從韌體到 Web Front-end 都有實務經驗,而且為人也不錯,會很認真地看每個 Pull Request,並給予架構上或是程式寫法上的回饋,能有...

2019/04月份自我學習回顧

1 分鐘閱讀

前言 不知不覺又過了一個月了,本來想說一週要產出一篇文章,結果發現技術文章真的蠻容易難產的,主要原因是我希望能盡可能地從根本去探討這些技術背後運作模式和原理,因此會花費大量時間在整理內容和實驗上。不過部分原因也可能是因為資歷不夠,所以這些內容要思考很久,才會下筆去寫,希望之後慢慢熟稔之後可以加快產出速度。

grpc-go source code trace - gRPC client 與 server 建立連線過程

5 分鐘閱讀

前言 其實一開始的目的是想要研究 gRPC 的 retry 機制,不過在了解 retry 之前勢必要先說明整個 gRPC client 與 server 建立連線的過程,因此就先用 source code trace 的方式簡單說明在呼叫 grpc.Dial 後所執行的連線流程,包含 gRPC 實現 load-b...

2019/03月份自我學習回顧

1 分鐘閱讀

前言 最近這一個月工作慢慢步上軌道,心情有比較踏實些。剛開始來的時候,實在不太確定自己能幫上什麼忙,不過這個月漸漸地有任務可以做,並且也和其他組員一起合作開發,感覺在團隊中可以發揮自己的價值:) 另外,這個月比較大的轉變是完全負責 back-end ,之前還想說可能會接觸到 React ,所以花了一些時間在看 ...

Golang - Request test using net/http/httptrace

3 分鐘閱讀

前言 在撰寫 HTTP request test 測試程式時,除了測試 response 結果是否如預期之外,我們還需要知道過程中需要耗費多少時間(request latency)。市面上有一些 libraries (e.g opencensus) 能提供相關的 HTTP 事件 trace,不過仔細看會發現他們大...

Functional options pattern in GO

1 分鐘閱讀

前言 之所以使用 Functional options 的契機,是因為用到 gRPC 的 New Server API,發現他是用 functional options 來讓使用者調整 Server 預設配置,這樣的作法不但兼具了擴充性和可用性,也能避免一些使用者誤用。而除了看 source code 來學習如何...

2019/02月份自我學習回顧

2 分鐘閱讀

前言 這個月大多在適應新的生活環境,第一次來新竹工作,不意外地在新手村落腳。在還沒來新竹之前,就聽聞過新竹可能是個比台北無聊的地方,那時候覺得反正我生活也很宅,不是 coding 就是買化妝品,只要有舒適的套房和康是美就可以存活了,但是實際上沒有我想的這麼簡單XD 畢竟新竹的社群活動真的少很多,讓假日少了一些...

React Hooks with memoizedState

2 分鐘閱讀

前言 React Hooks 自從正式 release 後,就出現很多相關教學文章,所以這篇不是講如何實作,而是說他如何在 stateless functional component 中保存當前 state。 此外,最近也開始嘗試把 class component 轉換成使用 hooks 的 component...

2019/01月份自我學習回顧

2 分鐘閱讀

又到了每個月檢討念書進度的日子了,這次 2019 新的一年有蠻多人生大轉變,像是離職換了一個新的工作環境,以及脫離媽寶身份,跑去新竹生活等。 Moxa 算是我轉職後第一份的正式工作,而在這一年中其實學到很多經驗,但是也對一些流程和開發方式有些疑問。我很想要根據這些問題提出自己的見解,可惜經驗少,又沒有其他公司經驗...

9月份自我學習日誌回顧

2 分鐘閱讀

9月份目標 把 Effective Go 看完 複習 JavaScript 概念,釐清各細節 工作上用到的 Protocol 相關知識

Node.js Addons N-API example (v10.11.0)

3 分鐘閱讀

前言 由於專案需要整合 Node-RED ,我們必須開發自己的 Node 來讓用戶可以直接透過視覺化方式來建立簡單邏輯,又我們的 SDK 是 C 版本,因此有這機會可以接觸 Node.js 所提供的 C/C++ Addons 功能。另外,自己寫 server-side 都是使用 Golang,所以這也是難得的機會...

Angular Schematics

3 分鐘閱讀

前言: 最近專案需要提供工具讓外部人員一同參與 Web App 的開發,由於我們的 Web App 已經有基本架構和開發方式,為了讓外部人員能夠更方便的 follow 架構,所以就決定使用 Schematics 來創建專屬樣板,讓協作開發人員可以迅速地建立專案用的 component page,然後他們只需要修改...

Redux Anti Pattern

1 分鐘閱讀

前言 這篇文章是基於 Redux Anti-Patterns - Part 1. State Management 所進行的探討,包含在專案內是否有犯類似的錯誤,以及後續該如何改善。文章會結合目前專案所使用的 Redux(ngrx),並檢視使用 Ngrx 是否能避免這些錯誤發生。

CSS Typed Object Model

1 分鐘閱讀

前言 Chrome 66 版本全新支援 CSS Typed Object Model,透過這種新型的 CSS Typed OM,可以有效提升使用 JavaScript 操作 CSSOM 屬性的效率。雖然目前僅有 Chrome 支援( Firefox 據說在努力中, Edge 目前沒下文),不過既然此方式能對網頁呈...

The Main Flow of Rendering Engines

1 分鐘閱讀

前言: 最近在寫 CSS Animation 部分,於是比較深入的看瀏覽器渲染流程,希望在進行 Animation 時可以更加地流暢。

Angular - Reactive Form

1 分鐘閱讀

前言 在建立表單的部份,Angular 與 AngularJS 最大的不同就是多了 Reactive Form 的方式。由於 Reactive Form 比起一般 Template-Driven Form 更具彈性且好掌控,所以就來大致介紹一下與 Reactive Form 相關的流程機制。

Angular - ng-template & ng-container

2 分鐘閱讀

前言: 昨天剛好在看 Angular CDK Overlay (Overlay Document) 這部分,因為 Overlay 是 CDK 中 Portal 的ㄧ種,而 Portal 又和 Angular 中的 Template 機制有關係,這才發現自己對於 Angular 的 ng-template 和 ...

Understanding Router in Angular 6

1 分鐘閱讀

前言: 這陣子在看 Reactive Extension (Rx) 和 Angular ,而 Angular 中常使用的 Router 內就有些 Observable Type 的 instance,因此就打算從這邊深入了解一下 Angular Router 的流程和 Observable 應用方式。

JavaScript - Pass Params Into Functions

1 分鐘閱讀

前言 這篇文章起源於我為了瞭解瀏覽器的運作原理,以利針對瀏覽器進行效能優化時,所延伸出來的基礎文章。剛開始學習切入點是 Chrome 的 V8 JavaScript Engine,看到有一位作者仔細地說明 V8 Engine 如何 Compile JavaScript 的流程,進而引發我對 JavaScript ...

Cypress & Cucumber Introduction

4 分鐘閱讀

Cypress E2E Testing Framework Features No more async hell Cypress automatically retries the query until the element is found. Real time reloads Cypress ...

AngularJS - angular-formly study notes

3 分鐘閱讀

Angular formly 運作原理 將 form 中的每個 field 獨立出來寫成共用 template,並供整個 app 使用。使用者先在 angular-formly 中進行 configuration,包含設定 type 和 wrapper ,接著只要在 component 的 controller ...

AngularJS - Two way data binding

1 分鐘閱讀

前言 最近開始接觸前端技術,預計以Angular和NodeJS為主。之前其實有稍微點一些網頁相關技能,不過大概都才Lv.1,知道大概怎麼使用,卻不太清楚背後的原理和概念。所以這次在學習的時候,會著重在框架理論和實作方式上,希望自己除了能應用這些框架之外,還可以了解這些框架背後的原理,並且進而有能力比較各框架之間的...