各種產生圓形圖表的 JavaScript 工具

這裡介紹一些可以在網頁上產生圓形圖表的 JavaScript 工具,透過這樣的設計可以讓網頁在呈現數值資料時更生動活潑。

circliful

circliful 是一個以 HTML5 canvas 與 jQuery 為基礎的 JavaScript 工具,可以在不需要使用圖檔的情況下,產生圓形圖表。

JavaScript 記憶體洩漏(Memory Leak)問題

這裡我們將解釋為什麼 JavaScript 會產生記憶體洩漏的問題,並示範會產生這個問題的程式寫法,讓大家知道該如何處理這類的問題。


JavaScript 是一種功能強大的語言,在現今許多的網頁中都扮演著重要的角色,雖然其語法簡單、撰寫容易,但是在某些瀏覽器上會產生記憶體洩漏(memory leak)的問題,卻很讓人頭痛。

本文是假設讀者已經對於 JavaScript 與 DOM 都非常熟悉,如果你是使用 JavaScript 撰寫網頁應用程式的開發者,這篇文章應該會很有用。

Linux 標準串流(Standard Streams)的緩衝區(Buffer)問題

這裡討論在 Linux 系統上標準串流(standard streams)的緩衝區(buffering)時常容易會產生的一些問題。

首先請看下面這個使用 pipeline 的指令:
command1 | command2
在這裡 shell 會 fork 兩個 processes,然後利用 pipe 連起來,整個架構中包含了三個緩衝區(buffer),就像這樣:


其中的 kernel buffer 會由 shell 所呼叫的 pipe system call 來建立,這個 buffer 的大小我們並沒有辦法直接控制,但基本上也不用擔心,因為 kernel 會在接到資料之後,立刻將資料送出去,通常效率都不是問題。(參考資料:circular pipes

Code School:網頁技術線上學習網站,提供 JavaScript、HTML、CSS 等教學

Code School 是一個提供各種網頁技術教學的線上學習網站,基本的課程可以免費觀看,進階課程則是需要付費。


Code School 中將教學的課程分為四大類,分別為 JavaScript、HTML/CSS、Ruby 與 iOS,另外也有一些其他領域的課程,例如 Git、R 等。

各種免費與付費的 CDN 服務整理

這裡整理了網路上常用的免費與付費的 CDN 服務,透過這樣的服務可加速網頁載入速度,適用於各種網站與部落格。


內容傳遞網路(content delivery network,簡稱 CDN)是指一種藉由分散在世界各地的伺服器,減低封包傳遞的路程與時間的一種架構(其觀念可參考網路延遲與頻寬的說明文章)。

一般的 CDN 都會用來放置一些靜態的檔案,例如圖檔、影片檔、聲音檔、CSS 檔或 JavaScript 檔,一些常見的 JavaScript 函式庫、HTML5 shims、CSS resets、網頁字型等通常都可以在一些公用的 CDN 中找到。

HINT.css:以 CSS3 與 HTML5 實作的提示訊息方塊(Tooltip)工具

HINT.css 是一個使用 CSS3 與 HTML5 實作的 tooltip 函式庫,可以在網頁中呈現漂亮的提示訊息方塊。

HTML.css Logo

一般在網頁中若要顯示提示訊息,可以使用 title 這個 HTML 屬性,像上面這張圖將 title 設定為 "HTML.css Logo",所以當你將滑鼠移到圖片上面時,停留一段時間他就會顯示這行提示訊息。

WebSocket 通訊協定簡介:比較 Polling、Long-Polling 與 Streaming 的運作原理

這裡介紹 HTML5 的 WebSocket 概念,並且跟傳統的即時性網頁技術 Polling、Long-Polling 與 Streaming 做比較。


HTML5 的 WebSocket 是一種建立在單一 TCP 連線上的全雙工(full-duplex)通訊管道,可以讓網頁應用程式與伺服器之間做即時性、雙向的資料傳遞。

WebSocket 跟以往實作全雙工的技術比起來,改進了非常多,不但減低網路頻寬的使用,有降低了網路延遲的時間。(關於網路的頻寬與延遲可參考這裡

紙本書籍至今依然屹立不搖,未來也是如此!

隨著各種資訊的數位化,電子書也跟著越來越普及,雖然紙本書籍的市場受到擠壓,但是依然屹立不搖。


我個人非常喜愛看資訊類的書籍,在大學時代花在買資訊圖書上的錢就超過三萬塊,不過後來因為書實在太多了,就改用電子書的方式,一來省錢,二來不佔空間,攜帶方便,許多資訊類的圖書出版商都有推出電子書(像歐萊禮就很多),還特別買了一台 Kindle Paper White 來看。

在 Ubuntu Linux 中安裝與使用 RabbitMQ 訊息佇列

這裡介紹如何在 Ubuntu Linux 中安裝 RabbitMQ 這個訊息佇列,並且以範例程式說明如何使用 RabbitMQ。


RabbitMQ 是一個訊息仲介(message broker),它所做的事情就是接收訊息,然後再把訊息發送出去,就好像郵局一樣,發信者將信件交給郵差,透過郵局的郵務系統將信件送給收信人,而 RabbitMQ 跟郵局的不同點只在於它不處理實體的信件,而是處理數位化的資料。

Autoprefixer:最佳的 CSS 供應商前綴(Vender Prefixes)後處理器

Autoprefixer 是一個 CSS 供應商前綴(Vender Prefixes)的後處理器,這裡告訴你這個工具如何使用以及它的優點在哪裡。

既有問題

在之前的文章中我們介紹過好幾種處理 CSS 供應商前綴的問題,但是各種工具都有其優缺點,像 Prefixr 這類的工具在處理比較大量的程式碼時,老是要將程式碼複製與貼上,就會很累。

在任何的牆壁上玩貪食蛇!

這裡的貪食蛇遊戲可以讓你可以在任何的牆壁上玩,而且根據不同的場地產生各種不同的關卡。


MPU 利用攝影機與投影機加上一些影像處理技術,將傳統手機上的貪食蛇遊戲改造成一個可以依照不同的牆面,產生不同關卡的遊戲。

萊特幣(Litecoin)採礦(Mining)賺錢!?

這裡分享我個在練習開挖萊特幣(Litecoin)時所搜集到的資料,給大家參考一下。


什麼是萊特幣(Litecoin)?

萊特幣(Litecoin,符號為 Ł,縮寫為 LTC)是一種以點對點(peer-to-peer)技術為基礎的網路虛擬貨幣,它是將原有的比特幣(Bitcoin)加入了一些改良後,所產生的新的電子貨幣,其與比特幣相比,有三項特點:
  1. 萊特幣網路每 2.5 分鐘(而不是 10 分鐘)就可以處理一個 block,因此可以提供更快的交易確認。
  2. 萊特幣網路預期產出 8400 萬個萊特幣,是比特幣網路發行貨幣量的四倍之多。
  3. 萊特幣在其工作量證明演算法中使用了由 Colin Percival 首次提出的 scrypt 加密演算法,這使得相比於比特幣,在普通計算機上進行萊特幣挖掘更為容易。每一個萊特幣被分成 100,000,000 個更小的單位,通過八位小數來界定。
萊特幣是以 MIT/X11 的許可下發佈的免費軟體專案,其軟體的原始碼都可以從 GitHub 上取得。

使用 speedtest-cli 指令在終端機中測試 Linux 網路連線速度

這裡介紹如何使用 speedtest-cli 指令在終端機中測試 Linux 網路連線速度,主要適用於各種 Linux 伺服器。


一般會影響網路速度的原因有很多(例如網路的延遲與頻寬),而在網路很慢的時候,大家通常都會使用 Speedtest.net 或 Hinet 連線速率測試工具來檢測自己的 ISP 網路速度是否有問題。

使用 iTunes 製作與燒錄音樂 CD 或 MP3 光碟

這裡介紹如何使用 iTunes 製作與燒錄音樂 CD 或 MP3 光碟。

如果想要將自己電腦中的音樂燒錄成一般家用音響可以播放的 CD 光碟,可以使用 iTunes 來幫忙。

首先在 iTunes 中建立一個音樂播放列表,把要燒錄的音樂都放進來。

建立一個 iTunes 音樂播放列表

然後在播放列表上按下右鍵,選擇「燒錄播放列表至光碟」。

Share Button:jQuery 社群分享按鈕 Plugin

Share Button 是一個 jQuery 的社群分享按鈕 plugin,並且可以依照自己的網站風格自訂分享按鈕的樣式。


目前許多社群網站都有提供分享按鈕的功能,但是這類的分享功能有一些缺點:
  • 通常會附帶載入一些不必要的 JavaScript 程式碼,讓網頁載入的速度變慢。
  • 預設的按鈕可能會部符合網站的整體設計風格,造成畫面產生突兀的感覺,而使用者也無法任意更改樣式。
  • 每次需要在網頁中加上按鈕時,都要使用 Google 查詢像「facebook like button」這樣的關鍵字,找到官方網站的程式碼產生工具,產生程式碼後再複製回自己的網頁中,不僅讓整個網頁程式碼顯得很雜亂(尤其是在加入好幾種社群的分享按鈕的時候),而且也不方便。
  • 分享按鈕本身會佔去過多的網頁版面,不是很好看。
Share Button 這個 jQuery 小工具可以提供一個解決方案,並且有下面幾項優點:
  • 不需要使用任何的 iframe 或是載入多餘的 JavaScript,可讓網頁的載入速度變快。
  • 預設的版面很清爽,使用者也可以自行更改樣式。
  • 使用上很簡單,只要引入它的 JavaScript 檔,再呼叫 .share() 函數就可以了,程式碼只需要兩行。
  • 按鈕很簡潔,當使用者按下時,才會顯示所有的分享按鈕。
Share Button 的官方網站有 Demo 可以看它實際的效果。

CodeCombat:透過玩遊戲學習 JavaScript 程式設計

CodeCombat 是一個開放原始碼的線上戰略遊戲,可以讓你一邊玩遊戲一邊學習 JavaScript 的程式設計。


一般初學者在學習程式語言的時候,通常都要經過一段漫長的時間去習慣程式設計的思維與邏輯,尤其是完全沒有寫過程式的人,會需要更長的時間,而這段時期通常都很枯燥乏味。

CodeCombat 是一個專門設計給初學者(或是小朋友)學習程式語言的戰略遊戲(strategy game),讓學習程式語言的過程可以更輕鬆、更有趣,而且整個學習的過程是真的在玩遊戲。

自製中文網頁字形(Web Font)並內崁至網頁中(使用 CSS @font-face)

這裡教大家如何自己製作中文的字形檔,並轉為網頁用的字型格式,藉由 CSS 的 @font-face 功能在網頁中使用。


現在大部份的瀏覽器都可以支援 @font-face 這樣的自定網頁字型功能,但是到目前為止這項技術大部份都是應用於英文的字型上,而中文的字型檔由於大小通常都很大,如果讓使用者在看網頁文字時還要再下載好幾 MB 的字型檔,通常都會讓整個網頁效率大幅下降,所以大部份的網頁中的中文字都比較少使用自定的字型。