JavaScript

Prototype and Constructor in JavaScript

我想 prototype 在 JavaScript 中算是一個十分核心且重要的特色,但總覺得一直處於似懂非懂的狀態。剛好最近在查閱相關的資料,就藉此整理在這邊。 這篇文章假設你看得懂基本的 JavaScript 語法,只是對何謂 prototype 與 constructor 不太瞭解。如果你對如何建立、操作 object 與 function 等基礎語法還不太熟悉,這篇文章恐怕幫不上你的忙。 本篇會在內容附上規格書 ECMAScript® Language Specification(5.1 Edition)對應的 section number(

JavaScript

Type Coercion Rules in JavaScript

由於最近有一些前端開發的需求,不得已(?)只好來好好學一下 JavaScript。其中,JavaScript 略顯隱晦的隱式轉型(type coercion)規則容易使得程式算出一些難以預期的結果,因此特地寫下這篇筆記將這些規則整理出來。 在繼續看下去之前,可以先玩玩看這個 Type Coercion Challenge。假如你對其中的結果感到懷疑,並且對它的原理感興趣的話,這篇筆記或許適合你繼續看下去(:P)。 這篇的內容基本上是參考 ECMAScript® Language Specification 整理出來的。為了方便起見,後面都以 §a.b.c 表示在規格中對應的 section number。

Python

Non-Blocking I/O and I/O Multiplexing

最近花了不少時間在研究 Python concurrency。但大概是以前 OS 沒學好,發現自己對 non-blocking I/O 跟 I/O multiplexing 之類的東西都不是很熟悉。雖然看來都不是太難理解的概念,但在釐清背景知識時還是花了不少時間。為了避免我過一陣子又忘記了,便趁著我記憶還清楚的時候,把我好不容易學會的粗淺知識整理下來。雖然我已經盡可能地多參考一些資料,但由於內容有許多我原本不會或是不熟的東西,如果有任何寫得不正確的部分,還煩請各位不吝指正。 Example: Echo Server 為了方便解釋,就用一個簡單的 echo server 作為例子吧。 首先是

Python

Building Your Own Python Project

最近有同事花了一點時間 survey、並開了個讀書會分享如何建立一個完整的 Python project 環境,乾脆就趁此機會寫篇文章整理一下,希望可以改善我 project 環境一向亂搞的情況(XD)。這篇筆記是基於這場讀書會的內容,略微修改成我自己喜歡的版本。 這篇筆記會包含以下幾個部分: 如何組織一個 Python project 如何建立程式的 unit test 環境 如何用 docstring 生成 document 如何包裝 Python package 但這篇筆記不會教你: 如何寫 Python (? 如何寫 unit

Python

Event Handling with Python

最近工作上常被同事問到的問題:若是現在有許多不同的 events 隨著時間傳進系統,而我們會經常新增或刪除處理這些 event 的 handlers。比較極端的情況,可能會有多個人各自 maintain 多個 modules,每個 module 都定義了一或多個 handlers,但又不希望需要修改到這個 module 以外的 code。應該要怎麼在 Python 中實作這種 event handling 的機制? 在這裡列出我想到的幾種解法,並加上我自己的一些小見解作為參考。 Handler class 一開始,同事的解法是這樣的:

C++

Policy-Based Class Design

《Modern C++ Design》第一章讀書筆記 問題 軟體設計中,常會有所謂的「constraints」(譬如說,你想限制某個 class 無法建立兩個或以上的 object)。理想中,應該要在 compile time 達成大多數的 constraints。 而要將所有的 constraints 一併實作在所謂的 do-it-all interface 則缺乏彈性。譬如說,一個徹底封裝 threading 實作的 thread-safe singleton 到了另一個特殊且不可移植的 threading