前言: 這陣子在看 Reactive Extension (Rx) 和 Angular ,而 Angular 中常使用的 Router 內就有些 Observable Type 的 instance,因此就打算從這邊深入了解一下 Angular Router 的流程和 Observable 應用方式。
Properties Access in V8 前言 傳統的 JavaScript 引擎,在抓取 object 內的 property 位置時,常常是利用 object 內的 hash table 來取得對應 property (通常稱為 dictionary )。不過這樣需要花費搜尋時間,相對來說效率就不是太好。也因此在現代的 JavaScript 引擎,會根據 object 內的 property 架構來進行不同方式的效能處理,避免一直使用 hash table,而是改採其他更有效率的結構,來達成快速得到 property 的目的。
前言 JavaScript 是種弱型態語言,而 JavaScript Engine (V8) 透過對於 JavaScript object 的型態強化來提升 JavaScript 執行效率。
前言 這篇文章起源於我為了瞭解瀏覽器的運作原理,以利針對瀏覽器進行效能優化時,所延伸出來的基礎文章。剛開始學習切入點是 Chrome 的 V8 JavaScript Engine,看到有一位作者仔細地說明 V8 Engine 如何 Compile JavaScript 的流程,進而引發我對 JavaScript Memory Allocation 的興趣。此外,剛好最近也在用 TypeScript 寫類 static type object,所以想更清楚知道使用 TypeScript 這個 pre-processor,在瀏覽器中會怎樣提高 JavaScript Compile 的性能。
Cypress E2E Testing Framework Features No more async hell
Cypress automatically retries the query until the element is found.
Angular formly 運作原理 將 form 中的每個 field 獨立出來寫成共用 template,並供整個 app 使用。使用者先在 angular-formly 中進行 configuration,包含設定 type 和 wrapper ,接著只要在 component 的 controller 中建立指定 type 的 field objects 之後,angular-formly 就會結合之前設定好的 field template 和 objects, render 出完整的表單。 !
前言 最近開始接觸前端技術,預計以Angular和NodeJS為主。之前其實有稍微點一些網頁相關技能,不過大概都才Lv.1,知道大概怎麼使用,卻不太清楚背後的原理和概念。所以這次在學習的時候,會著重在框架理論和實作方式上,希望自己除了能應用這些框架之外,還可以了解這些框架背後的原理,並且進而有能力比較各框架之間的好壞。雖然Angular目前已經出到v5.1.0,但起點會從Angular1開始學起,之後文章預計會去比較新版的Angular和Angular1有怎樣的差異,以及新版的運作方式可以帶來怎樣的好處。
Angular1主打特色之一包含 Two-way data binding (這邊先不在意這種方式帶來怎樣的壞處xD),這篇文章紀錄 Two-way data binding 的原理和實現方式,以及對網站來說會帶來怎樣的影響。文章將不會示範如何去應用 Two-way data binding,因為我覺得隨便 Google 就可以找到很多例子,就不特別介紹了。
前言 之前雖然有聽聞過CI(Continuous Integration)相關工具,但是一直沒有好好認真地研究,畢竟都是一個人寫,總認為自己也不太需要用到CI。直到最近開始上班了,看到了公司如何使用CI來進行build package流程,頓時覺得這工具實在很便利~而因為公司也早已經有完整架構,因此雖然看得到介面,卻還是不太清楚實際上到底是如何運作的,所以就趁雙十連假期間,決定自己來實際嘗試一下整個CI運作流程。
涉及內容 Gitlab CI Docker Gitlab底下的CI流程 GitLab offers a continuous integration service.
[前言]
前陣子才剛從英國完成論文返回台灣。因為忙論文 / 忙搬家 / 忙調作息,所以好些時間沒有更新相關知識,覺得自己好像停滯了…明天就是轉職人生的開始,趕緊來繼續惡補Cocos2d-x知識。API使用方式和理解固然很重要,不過我也相當喜歡探討一些運作流程和結構方式,所以文章內容也會比較著重在這部分。這次來看的是有關於node->runAction(Action* action);之前我寫遊戲時使用完全不同的方式來讓遊戲像素變動,因此會比較想了解引擎是如何讓node根據我們設定的動作來變化。
[涉及Class]
ActionManager
UT_hash_handle
前言
記得在6月份面試的時候,有考到自己寫Stack時,應該注意什麼地方,不過那時候很緊張,只有說到使用array來建構stack會有極限值或空值的問題,後來想想,其實還有element被pop之後的記憶體問題。剛好最近在看書複習時,書中只有簡單將top index - 1來限制可取得的element,導致即使array[index]的值被return後,array[index]實際上還是存在於記憶體中。
處理方式
Java
針對這個問題,去看了一下Java原始碼對於這部分的處理(arraydeque),果然它會先建立一個Result物件,然後將array[index] = null之後,返回Result,來避免上述所提到的問題。