壓縮 Javascript 和 CSS 檔案 script command

nodejs-light
網站上站前要做的事情非常多,其中一項為大家所知就是壓縮 CSSJavaScript 檔案,減少 Http request 流量,網路上已經有非常多的 Compressor tool,像是 Google Closure CompilerYUI Compressor,都是用來壓縮 JS 或 CSS 檔案,這次寫了 script 來壓縮整個網站目錄裡的 js 或 css 檔案,不過 script 所使用的 Compressor command 是 Node Base 的 tool,分別是 UglifyJSsqwish 這兩套,當然使用 command 之前,請務必先安裝好 Node.js 最新版本啦,不過沒安裝也沒關係,底下有懶人安裝 script command。這些 tool 對於 Embedded System 在 build firmware 相當有用,可以減少不少 code size 阿。 可以直接看專案說明,就可以不必看底下步驟了 Continue reading “壓縮 Javascript 和 CSS 檔案 script command”

HTML5 Boilerplate 不再支援 legacy browser

HTML5 Boilerplate 在 V5.0 版本將不支援舊有瀏覽器,包含 IE6/7. Firefox 3.6 (Mozilla 已經不再維護) 及 Safari 4,詳細資料可以參考 V5.0 的 Milestone (Drop legacy browser support) 下一版本會有哪些改變呢?
  • html tag 將不會出現 conditional comments
  • normalize.css 升級到 2.1.x
  • main.css 移除 IE6/7 Hacks 部份
此次重大改變包含移除 IE conditional classes,因為 IE 10+ 將不再支援 conditional comments,至於 normalize.css 轉換到 2.1.x 版本,如果有用 Sass 的朋友們,可以參考我改的 normalize.scss,非常期待 Version 5 出來,會拿掉很多 legacy code。

Backbone.js event bind 新功能 listenTo and stopListening

backbone
之前寫了一篇 Backbone.js Event 事件介紹,簡介 Backbone.js Events 如何使用 onoff 來處理事件,在升級 Backbone 到 0.9.9 過程中,其中一項重大新功能就是 Backbone listenTo and stopListening,大家來看看 Change logs:
Added listenTo and stopListening to Events. They can be used as inversion-of-control flavors of on and off, for convenient unbinding of all events an object is currently listening to. view.remove() automatically calls view.stopListening().
Continue reading “Backbone.js event bind 新功能 listenTo and stopListening”

在 git Commit 之前檢查 PHP 是否有錯誤

Git-Logo-2Color
在 commit code 之前,程式設計師必須確保程式碼的正確性,包含不要放入 debug message 到 git server,寫了一個簡單的 pre-commit 程式,來確保 PHP 是否有 Parse error,或者是在寫 CoffeeScript 及 JavaScript 時,常常會用到 console.* 來當作中斷點或者是顯示變數資料,這也是需要盡量避免 commit 到伺服器,你可不想要長官 review 的時候看到這麼多 debug 訊息吧。這時候就是需要 git-hookspre-commit 幫忙檢查這些 Syntax 語法,可以直接參考我的 git-hooks 專案。安裝方式很簡單:
$ git clone https://github.com/appleboy/git-hooks.git
$ chmod +x bin/hooks.sh pre-commit
$ ./bin/hooks.sh your_project_path
如果使用 git commit 之前,就會檢查 .js、.coffee、.php 等副檔名。

jQuery Migrate 1.1.0 Released 注意事項

jquery logo
上個月大家可以注意到 jQuery 釋出 1.9 及 2.0 版本,官方團隊也同時推出 jQuery Migrate Plugin 1.0.0 版本,此 Plugin 是跟 jQuery 1.9 或 2.0 一起搭配使用,偵測 jQuey 已移除或者是將被移除的功能,讓您之前開發的 jQuey 功能可以持續使用,但是似乎很多使用者不知道此 plugin 用處,就直接升級 1.9 或 2.0,並未載入 migrate plugin,造成官方收到很多 feed back 都是關於一些舊功能不能使用。半個月後 jQuery 官方收到很多 migrate plugin 回報問題,這次一樣可以透過 jQuuery CDN 載入,程式碼如下。

壓縮版本

Continue reading “jQuery Migrate 1.1.0 Released 注意事項”

CodeIgniter Error Handler 處理

CodeIgniter
CodeIgniter 在處理 PHP Error handler 是直接呼叫內建的 Exceptions Class 顯示在瀏覽器上,如果有打開 log,系統另外會紀錄在 application/logs 目錄。這是 CodeIgniter 預設作法,但是我希望能把這些錯誤訊息都紀錄到 Database,相關 Notice, Error 訊息都一律寫到 DB 裡面,但是如果用 extend 系統內的 Exceptions 是完全做不到的,所以我寫了一個 Library 只要直接 include 系統就可以直接開始紀錄,因為在 PHP 你會遇到無數種 User experience,都會產生相關錯誤訊息,在產品上線都會將 display_errors 設定為 0,不要讓使用者看到任何錯誤訊息,但是我們還是需要全部的錯誤訊息阿,底下來看看如何安裝 Log Library。

建立 log table

可以直接參考連結,或者是複製底下資料貼到 phpMyAdmin。
--
-- Table structure for table `logs`
--

DROP TABLE IF EXISTS `logs`;
CREATE TABLE IF NOT EXISTS `logs` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `errno` int(2) NOT NULL,
  `errtype` varchar(32) CHARACTER SET utf8 NOT NULL,
  `errstr` text CHARACTER SET utf8 NOT NULL,
  `errfile` varchar(255) CHARACTER SET utf8 NOT NULL,
  `errline` int(4) NOT NULL,
  `time` datetime NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Continue reading “CodeIgniter Error Handler 處理”