這篇文章,不是要歌頌 TypeScript,而是小編深入前線報導,告訴你該知道的事實和地雷 XD
JavaScript 因其語言設計性質,並不適合大型應用程式開發,隨著應用程式複雜度提升,更多的元件、更多的介面、更多的函數,你很難透過既有的 JavaScript 語言性質,來協助你呼叫數以萬計的 API。
相信很多人都知道,寫程式的時候,多數的時間,我們都是在想變數名稱、函數名稱、類別名稱。
由於軟體正式開始使用後,不管是內部使用或是開放專案,都有外部依賴,一旦用了不好的名稱,往後修改,是相當不便,而且會破壞外部軟件的穩定度。
2010 年的 jQuery,主張了 Less is more 的概念,從 jQuery 的 API 設計,多少可以學到一些如何設計簡單易用 API 的概念。然而,不同的程式語言、編譯器都有各自適用的設計模式,不見得會通用,需要對其效能、語法限制作斟酌。 所以,Sometimes…
由於有時候會當 DBA,大概整理一下小心得,徵求專家熱心補充更正。 XD
其實,當我們在討論 MySQL,大多不是在討論 MyISAM,而是 InnoDB。 如果有人直言 MySQL 很爛,卻沒辦法說清楚 MyISAM 跟 InnoDB 的差別,那麼,請別相信他。XD
好的 API 設計,缺不了好的建構子 (constructor) 設計,建構子設計得好,基本上這個類別就不會髒到哪裡去。一個骯髒的物件,很可能是:
前一篇文章談到 mysql innodb 處理 clustered index 的機制,所以就來談一下 mysql partition 機制。
由於 innodb 會優先使用 primary key 作為 clustered index 來劃分表格的儲存階層,無法避免的,製作 partition 時,就得將 partition key 加入到 primary key 內,這個時候選擇 primary key 以及 partition key 就變得相當重要,甚至可捨去 primary key 。
在 Maghead ORM/DBAL (由於現在涵蓋的部分越來越廣不知道怎麼稱呼比較適當)的開發中,需要大量針對不同的資料庫做單元測試,因此在內部我們抽象化了一個 Maghead\Testing\ModelTestCase 的類別,讓同一套抽象邏輯可以抽換不同的資料庫連線來做整合的測試。
Maghead\Testing\ModelTestCase
在 Travis CI 上,我們採用帶入不同的環境變數 DB 來換掉測試案例使用的 DataSource ID,如 DB=sqlite, DB=mysql … 等等,如 Build #1889
DB=sqlite
DB=mysql
Chances are, you might want to run tests for both PHP5 and PHP7 on Travis-CI. However, you will need to install different extension version to make it compilable for PHP5 or PHP7.