Kindle Paperwhite 亞馬遜電子書閱讀器二代帆布保護套(具自動休眠功能)

這是我從露天拍賣網站上的美國代購賣家那裡購買的 Kindle Paperwhite 亞馬遜電子書閱讀器二代帆布保護套。

原本應該要寫開箱文的,但是最近實在是太忙了,箱子就省略了,直接看主體吧。

這一款帆布保護套一共有四種不同的顏色,我個人是偏好米色的,而這個顏色也是常常缺貨的顏色,當初定的時候,等了一個多禮拜,不過我覺得這樣的時間是可以接受的。

Kindle Paperwhite 亞馬遜電子書閱讀器二代帆布保護套(具自動休眠功能)

[開箱] Amazon Kindle Paperwhite 亞馬遜電子書閱讀器

最近從露天拍賣網站買了一個日本版的 Amazon Kindle Paperwhite 亞馬遜電子書閱讀器,把一些開箱照片順便放上來。

我之所以要買這個閱讀器,主要是因為他的 e-ink 電子紙技術可以讓眼睛在閱讀文章時更舒服,因為它不像一般 LCD 螢幕是自發性的光源,所以基本上看起來的感覺會跟紙本的書籍很像,長時間比較不會對眼睛造成刺激,甚至在室外的陽光下都可以閱讀。

因為日本削價競爭的關係,同樣的 Kindle Paperwhite 在日本的售價比美國低很多,又沒有廣告,所以現在網路上大都是買日本的版本,但其實日本的版本除了包裝之外,內容都是一樣的。

Amazon Kindle Paperwhite 電子書閱讀器開箱

以下是開箱照片。

瑞典阿比斯庫國家公園的北極光

阿比斯庫國家公園位於瑞典的北部,這裡是被大家公認觀賞極光的最佳場所之一,這張照片是在 2013 年 3 月 1 日所拍攝的,當時只有一些稀薄的雲層,天空的極光與星星清晰可見,加上地面上的景色互相襯托之下,讓整個畫面更漂亮。

瑞典的北極光

在 Eclipse 中設定 Java 函式庫(JAR)的 Source 與 Javadoc 檔案,讓寫程式時看說明更方便

在 Eclipse 中若安裝 Jar 函式庫而沒有設定 Source 與 Javadoc,就會無法看到函式庫的說明與程式碼,這裡教大家如何在 Eclipse 中正確設定 Source 與 Javadoc 的 Jar 檔。

在使用 Eclipse 撰寫 Java 程式時,我們常常會需要觀看類別的說明,正常來說在程式碼中,將滑鼠移到一個類別上就會出現類似這樣的類別說明:

程式設計師的生活寫照:經典電影片段

這裡搜集了一些很經典又很幽默的小動畫,反映了程式設計師的生活寫照,如果你也是程式設計師,你應該能體會。:)

以下每個圖都是一個動畫,如果你發現圖沒有在動,可以用滑鼠點下去看。

把一些寫好的東西放上去跑時:


在 Ubuntu Linux 中安裝 Skype 4.2 版(適用 Ubuntu 10.04 至 Ubuntu 13.04)

期待已久的 Linux 版 Skype 4.2 終於釋出了,在這個新版本中微軟修正了許多 bugs,並加入一些新功能。這裡介紹如何在各種版本的 Ubuntu Linux 中安裝新的 Skype 4.2 版。


在新版的 Skype for Linux 中除修正許多上一版的 bugs 之外,也改善了使用 MSN 帳號登入的穩定性,另外也對語音留言做了一些改善,讓使用上更加方便,現在只需要用滑鼠在選項視窗終點一下即可。關於詳細的說明,可以參考 Skype 的官方部落格

因為不同的 Ubuntu Linux 版本的安裝方式有差異,以下介紹個各種版本安裝 Skype 4.2 的作法。

Google Dart 程式語言與 GWT 的發展趨勢 -- Google I/O 研討會發表的最新資訊

Google 目前已經準備將 Dart 語言的 1.0 正式版本釋出,迎戰 JavaScript,而在 Google Web Toolkit(GWT)明年的 3.0 版中,也會有一些相關的新功能。

Google Dart 語言 Logo

據 Google 工程師 Emily Fortuna 所述,Dart 語言很快就會到達 1.0 版的里程碑,其標榜結構化網頁程式語言,包含 method cascades、具名參數功能與 JQuery 的功能。

然而原生的 Dart 語言目前只有被 Google 自己的 Chrome 瀏覽器支援而已,最近在舊金山(San Francisco)的 Google I/O 研討會上,Fortuna 表示其他的瀏覽器可透過編譯器把 Dart 編譯成 JavaScript 來執行,而 Dart 語言的 VM(virtual machine)是開放原始碼(open source)的,如果其他的瀏覽器有意願想支援它的話,Google 可以免費幫他們的忙。

根據在 Google I/O 中 Ray Cromwell 工程師表示,在未來 3.0 版的 GWT 會加強模組化與速度,最主要會把編譯器的速度加快一倍,也會把現階段綁在一起的 GWT SDK 分割成許多小工具,這樣可以更容易與其他工具整合,而 JavaScript 的輸出則是會轉換成現代 JavaScript 虛擬機器所使用的格式。

Google Chrome 與 Firefox 瀏覽器的高反差功能-- 適合夜間閱讀網頁文字、保護眼睛、減少螢幕對眼睛的刺激

如果你是長時間使用電腦上網查資料的人,一堆網頁文件都是白底黑字,看久了容易造成眼睛疲勞,這裡介紹如何使用 Google Chrome 與 Firefox 瀏覽器的高反差功能(High Contrast),把一般的網頁變成黑底白字,讓越讀起來更舒服,眼睛也比較不會疲累。

Google Chrome

如果是使用 Google Chrome 瀏覽器的話,可以使用 High Contrast 擴充功能:

Google Chrome High Contrast 擴充功能

Google 的搜尋引擎優化 SEO(Search Engine Optimization)線上工具 -- 搜尋趨勢、關鍵字工具、網站管理員、Analytics(分析)

Google 官方提供了很多很好用的搜尋引擎優化 SEO(Search Engine Optimization)線上工具,包含:搜尋趨勢、關鍵字工具、廣告預覽與診斷、網站管理員、Analytics(分析),善用這些工具可以讓你更容易分析目前網站的狀態與網路趨勢。


基本上 SEO 的目的就是要你的網站在各種搜尋引擎(如:Google 或 Yahoo 等)的搜尋排名提高,進而增加網站流量、讓自己的網站曝光率增加,最後達到廣告行銷或其他獲益的目的。

然而以我個人的觀點而言,一個網站如果只是單純依照 SEO 的準則讓網站流量提升,卻沒有實質甚至優質的內容的話,其實是沒有意義的,這也是 Google 一直以來所秉持觀念,只要你的網站寫的夠好,真的讓很多人想看,那麼 Google 也會很樂意把你的網站放在比較前面的排名,這個原因很簡單,如果 Google 把一些使用 SEO 技巧但是沒有什麼內容的網站放在前頭,當一般人看到 Google 搜尋出來的網站是這麼差勁的,久而久之就不會再來用 Google 了,所以一般的搜尋引擎都會很努力的把網路上的優質網站找出來,放在搜尋結果的前頭(這也是 SEO 想要做的),這樣才會有更多人喜歡用這個搜尋引擎。

簡而言之,請記住這個千古不變的 SEO 原則:用心維護你的網站!事實上這一條才是 SEO 的重點。如果你已經很用心寫網站或是部落格了,那麼這時候再來考慮用一些 SEO 手法,來讓搜尋引擎更容易找到你網站上的優質內容。

以下是各種 Google 提供的 SEO 相關工具。在這裡我會以一般部落客的觀點來看這些 SEO 工具對於網站或部落格的幫助,更明確地說,就是如何善用這些 SEO 工具,幫助你的部落格有更多的讀者,甚至讓你的部落格上面的 Google AdSense 廣告收益提升。

在 Ubuntu Linux 中安裝 HP 印表機驅動程式(Driver) -- 適用於各種型號如 LaserJet 雷射印表機等

這裡介紹如何在 Ubuntu Linux 中使用 HP 所提供的印表機安裝程式,來安裝 HP 的印表機。

這理我們使用的系統是 Ubuntu Linux 13.04,而所安裝的印表機型號是 HP LaserJet 1020,而這個安裝流程該也適用於各種 HP 的印表機。

HP 的 Linux Imageing and Printing 官方網站 提供 HP 各種印表機需要的驅動程式,而且也打包成一個可執行的安裝檔,安裝上很方便,目前自動安裝檔適用於以下的 Linux 發行版:
  • SUSE Linux (12.2, 12.3)
  • Fedora (17, 18)
  • Linux Mint (13, 14)
  • Ubuntu (10.04, 11.10, 12.04, 12.10, 13.04)
  • Debian (6.0, 6.0.1, 6.0.2, 6.0.3, 6.0.4, 6.0.5, 6.0.6, 6.0.7, 7.0)
原則上只要你的系統有在上述的清單中,都可以使用接下來講述的方式來安裝,以下介紹如何使用 HP 官方所提供的 HPLIP 安裝工具來安裝印表機。

Java Servlet 的 HttpSessionListener 的使用方式:監控與統計伺服器的所有 session 狀態

網頁的 session 概念是現在網路應用程式都會使用的技術,而在 Java Servlet 中如果想要監控伺服器所有產生的 session,並做一些統計分析或記錄,可以透過實作 HttpSessionListener 這個介面(interface)的方式來達到。

Java Logo

HttpSessionListener 這個界面中定義了以下兩個函數:
  1. sessionCreated(HttpSessionEvent se):用來處理每個 session 產生後,所要執行的動作。
  2. sessionDestroyed(HttpSessionEvent se):用來處理每個 invalidated 或 expired 之後的 session 所要執行的動作。
以下是實際的範例程式:
package com.sealmemory;

import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;

public class SessionCounterListener implements HttpSessionListener {

  private static int totalActiveSessions;

  public static int getTotalActiveSession(){
        return totalActiveSessions;
  }

  @Override
  public void sessionCreated(HttpSessionEvent arg0) {
        totalActiveSessions++;
        System.out.println("sessionCreated - add one session into counter");
  }

  @Override
  public void sessionDestroyed(HttpSessionEvent arg0) {
        totalActiveSessions--;
        System.out.println("sessionDestroyed - deduct one session from counter");
  }
}
這裡我們除了實作 sessionCreated(HttpSessionEvent se)sessionDestroyed(HttpSessionEvent se) 之外,也令另外建立一個 totalActiveSessions 變數,記錄目前的 session 個數,在 session 時就加一,刪除時就減一。

使用 Tomcat 7 與 Java Servlet 3.0 API 實作 Asynchronous Servlets:提升伺服器效率的方案

在 Java Servlet 3.0 標準推出之前,如果想要實作 asynchronous 的 servlet 必須使用像 Comet 這樣的架構,而現在 Servlet 3.0 API 直接支援 asynchronous 與 synchronous 兩種模式,而因為這是公開的標準,所以寫好的 Servlet 可以很方便的移植到各種符合 Servlet 3.0 的 app server 中(例如 Tomcat 7 或是 GlassFish 3.x)。

在使用 synchronous servlets 時,處理 client HTTP request 的執行序(thread)會跟處理 request 的過程綁在一起,而在處理工作量比較大、等待時間比較久的 request 時(通常在等待外部的 IO 或是其他耗時的動作),該執行序就只能等待工作完成,才能執行下一步,這樣的狀況如果在 request 數量很多的時候,就有可能會造成伺服器的執行序不足的問題,進而影響伺服器整體的效能。

這種情況主要是由於伺服器上的執行序都在等待外部的工作完成(其實這時候它們都在休息),但是從 client 來的 request 數量又太多時,就會很容易把有限的執行序都佔滿,造成伺服器滿載的狀況,但是其實伺服器的執行序都在休息!

Asynchronous servlets 基本上就是為了處理這樣的狀況而設計的,它讓處理 request 的執行序要等待外部工作的時候,可以去處理其他的 request,等到外部工作完成之後,伺服器會找另外一個執行序來把處理完成的外部工作結果送回 client,在這種架構下,client 不會感覺有任何不同,因為這些執行序與工作的分配都是在伺服器上面發生的,也只跟伺服器本身有關,所有的 request 資料還是跟以前一樣。

要達到這樣的工作處理流程,最關鍵的部分就是在外部工作完成時,要如何通知伺服器來領回處理完成的結果,這裡是它所使用的方式是透過 callback 函數的方式(這個 callback 函數是由伺服器本身提供)。

Linux Shell 指令長度限制問題與解決的替代方案

在 Linux 中的指令通常都有一些參數可以指定,而在 Shell 中一行指令的長度是有上限的,在大部分的狀況下,這個限制通常是不會造成什麼問題的,不過在某些參數特別多的狀況下,可能就會碰到這個限制,例如要用 rmmv 指令刪除或搬移很多檔案的時候,如果指定的檔案數量太多,有可能就會發生參數過長的錯誤,就像這樣:
Argument list too long


在不同的系統中,命令列的長度上限是不同的,這裡介紹如何找出自己系統的命令列長度上限,並且教大家在撰寫指令稿時,如何使用一些替代方案避開參數過長的問題。

在 Mac OS X 中製作用來安裝 Ubuntu Linux 的 USB 隨身碟

這裡介紹如何在 Mac OS X 中製作用來安裝 Ubuntu Linux 的 USB 隨身碟,讓你可以不需要燒錄光碟就可以直接安裝 Ubuntu Linux,省錢又環保。


在開始製作 USB 安裝隨身碟之前,當然是要準備一個隨身碟,請確定隨身碟裡面的資料都是不要的,因為製作成安裝隨身碟之後,原本在隨身碟中的資料都會被刪除,所以製作之前,請先做確認。

Step 1
首先下載 Ubuntu Linux 官方的 ISO 安裝影像檔,這裡以 Ubuntu Linux 13.04 為例,下載下來的 ISO 檔是 ubuntu-13.04-desktop-amd64.iso。

然後開啓終端機,進入 ISO 檔的所在目錄,如果是用瀏覽器下載的,通常就會在 Downloads 目錄下:
cd Downloads
接著使用 hdiutil 指令將 ISO 檔轉為 Mac OS X 的 DMG 檔:
hdiutil convert -format UDRW -o ubuntu-13.04-desktop-amd64.dmg ubuntu-13.04-desktop-amd64.iso
輸出為
正在讀取Driver Descriptor Map(DDM:0)⋯
正在讀取Ubuntu 13.04 amd64 (Apple_ISO:1)⋯
正在讀取Apple(Apple_partition_map:2)⋯
正在讀取Ubuntu 13.04 amd64 (Apple_ISO:3)⋯
..............................................................................
正在讀取EFI(Apple_HFS:4)⋯
..............................................................................
正在讀取Ubuntu 13.04 amd64 (Apple_ISO:5)⋯
..............................................................................
經過時間: 7.989s
速度:98.3Mbyte∕秒
節省:0.0%
created: /Users/seal/Downloads/ubuntu-13.04-desktop-amd64.dmg

在 Mac OS X 中安裝與使用 LibreOffice 4(免費的 Office 軟體)

LibreOffice 是一套開放原始碼的辦公室套裝軟體,可以算是免費版的微軟 Office,可以在各種平台上使用,例如 Windows、Linux 與 Mac OS X。

這套軟體有六種應用程式,可用來製作文件、處理資料等,包括:Writer(類似 Office Word)、Calc(類似 Office 的 Excel)、Impress(類似 Office 的 Power Point)、Draw、Math、Base。


雖然這套軟體的功能可以媲美微軟的 Office,但是它是完全免費的,其所採用的授權條款為 LGPL3(GNU Lesser General Public License v3.0),該授權方式賦予一般大眾自由使用、分享、散布軟體的權利。

以下介紹如何在 Mac OS X 中安裝與使用 LibreOffice。

DjVuLibre -- DjVu 電子書閱讀與轉檔軟體(可用來轉換為 PDF 檔)

DjVu(發音為 deja-vu)是一種比較少見的文件格式,與 PDF 檔案格式類似,是由 AT&T 實驗室於 1996 年開發出來的開放性電子文件檔案格式,在某些掃描文件轉換成電子檔的過程中,效果會優於 PDF 格式。


DjVu 是一種開放性的檔案格式,檔案格式規範與函示庫的原始碼都完全公開,而商業開發的所有權幾年來被轉給了不同的公司,包括 AT&T 和 LizardTech,但是原來的作者還是維護一個 GPL 的實作,稱為 DjVuLibre

DjVuLibre 是一個跨平台的 DjVu 工具,除了可以讓你看 DjVu 文件之外,還可以幫你把 DjVu 檔案轉換為大家常用的 PDF 檔,畢竟現在 PDF 還是最普及的檔案格式之一,在網路上使用 PDF 通常還是比 DjVu 方便。

這裡示範如何在 Mac OS X 下安裝與使用 DjVuLibre。

用 Python 的 SimpleHTTPServer 模組快速建立一個臨時網頁伺服器(Web Server)

如果你需要一個簡單的 Web 伺服器做一些臨時性的工作,但又不想花很多時間去安裝像 Apache 這樣完整的網頁伺服器,那你可以試試看 Python 的 SimpleHTTPServer 模組,使用這個模組可以讓任何的目錄中的資料立即放上網路,而且不需要安裝其餘任何軟體,只需要 Python 就夠了。


就實際的應用來說,這樣的方式可以讓你很方便的在區域網路(local network)中分享資料,而要使用這個迷你的網頁伺服器也非常簡單,只要一行指令就可以了。

假設你的電腦 IP 位址為 192.168.0.1,而想要分享 /home/seal 中的資料,則先切換到該目錄中:
cd /home/seal
再啟動 Python 的網頁伺服器:
python -m SimpleHTTPServer
就這樣一行指令就完成了!非常方便。執行這行指令應該會看到這樣的輸出訊息:
Serving HTTP on 0.0.0.0 port 8000 ...
這個訊息是告訴你網頁伺服器所開啟的 port 是 8000,這時候你可以開啟瀏覽器測試一下,再瀏覽器上輸入以下的網址:
http://192.168.0.1:8000/
這樣就可以看到分享的網頁了。如果是在自己的電腦上要看自己的伺服器所分享的網頁,也可以輸入這樣的網址:
http://127.0.0.1:8000
如果被分享的目錄中有 index.html 這個網頁檔,則開啟這個目錄時,預設就會顯示這個網頁檔,而如果這個檔案不存在,則會自動顯示該目錄中的檔案列表。

不會影響 Apache 連線卻可以重新啓動並載入設定檔的方法

一般在更改 Apache 的設定檔之後,都會重新啓動 Apache 的服務(service),但是如果你的 Apache 網頁伺服器有很多人在用,這樣重新啓動會造成使用者的連線中斷等問題,這裡介紹如何在 Debian/Ubuntu 或是 CentOS 等 Linux 中不會影響 Apache 連線卻可以重新啓動並載入設定檔的方法。


一般 Apache 伺服器不管版本是 v1.x 或是 v2.x 都會有以下的指令可以使用:
  • start
  • restart
  • graceful
  • stop
  • graceful-stop
系統管理者可以利用這些指令控制 Apache 伺服器的啟動或停止等動作。

智慧型手機處理器(CPU)可能將改變伺服器的硬體架構市場

現在一般的網路伺服器所使用的處理器(CPU)大概都是 x86 架構,但是在未來有可能會因為智慧型手機處理器的崛起而改觀。

Facebook 公司內部最近進行了一項實驗,工程師們拿平常用來提供 Facebook 網頁服務的伺服器,作為實驗品,開始亂搞它的 CPU。


CPU 中有一塊 cache 記憶體,它是用於暫時儲存 CPU 計算用的資料的地方,藉由 cache 記憶體的幫助,CPU 在計算時就可以不需要每次都去存取系統記憶體的資料,而 Facebook 的工程師則是要測試如果把部份的 cache 記憶體關閉,會發生什麼事情。

在 Mac OS X 的 Eclipse 中更改 Java 註解 @author 作者資訊的預設值

在使用 Eclipse 開發 Java 程式時,通常會加入 @author 的標注,著名程式的作者,在 Mac OS X 的系統中,Eclipse 預設會用登入的帳號作為 @author 的預設值,就像這樣:


這樣雖然堪用,但是通常正式的程式註解,都會放置自己的姓名與 Email,如果只是放像這樣的登入帳號是不夠的。

雖然我們可以自己手動更改 @author 的值,但是這樣還是很麻煩,要自己輸入一長串每次都一樣的姓名與 Email,像我在寫程式的時候最討厭被這種無聊又惱人的事打斷思緒。

其實我們可以更改 Eclipse 的預設值,讓他自動填入我們指定的 @author 資訊,以下是在 Mac OS X 中的操作步驟教學:

[開箱] 羅技 Webcam C170 網路攝影機:用 Skype 視訊聊天的好幫手

現在這個時代拜 Skype 這類的軟體所賜,網路電話很普遍,只要有網路,打電話都不用錢,如果又有網路攝影機,還可以視訊通話。

因為家裡的電腦沒有網路攝影機,每次跟小阿玄講 Skype 都看不到他,再加上用耳麥的小麥克風,小朋友又拿不穩,聲音常常斷斷續續聽不清楚,最後決定買一個便宜的 Webcam 來給他用,省去拿麥克風的麻煩,又可以看到影像。

這是從 PCHome 線上購物買的羅技 Webcam C170 網路攝影機,一支 399 元,解析度為 XVGA(1024x768),定焦式鏡頭,可以拍攝五百萬像素的照片,且內建抗噪式麥克風。

羅技 Webcam C170 網路攝影機

這支 Webcam 是所有羅技網路攝影機中最便宜的,之所以選這支有幾個考量,第一個當然是價格,再來就是因為家裡的 ADSL 頻寬也不是很夠,買個 HD 的網路攝影機如果影像傳不出來也沒什麼用,而且我對於視訊的要求也不高,可以看得到就好了。

另外還有一個特別的原因,就是:這是給兩歲的小朋友用的,你很難預料他會如何「使用」這隻網路攝影機,所以就當是給他買個高級玩具囉,這樣玩壞了也不會太心疼。

[開箱] TP-LINK TL-WN722N 150Mbps 高增益 USB 無線網路卡(高通晶片)

這是我在 PCHome 買的 TP-LINK TL-WN722N 150Mbps 高增益 USB 無線網路卡,採用高通的晶片,一支不到四百元,外觀看起來質感很不錯,而且在我的 Ubuntu Linux 13.04 系統上直接插上去就可以抓的到驅動程式,馬上就可以使用了。

TP-LINK TL-WN722N 150Mbps 高增益 USB 無線網路卡(高通晶片)

因為我家的 ADSL 的上網速度只有 3Mbps,所以選這隻 150Mbps 的就已經很夠用了。

我之前用的無線網卡是好久以前的 3COM 3CRUSB10075 54Mbps 的 USB 無線網路卡,雖然在 Linux 中也抓的到,但因為家裡的無線 AP 離很遠,這一支舊的網卡收訊似乎不是很好,上網感覺都很吃力。現在換這一支有增益天線的無線網路卡,感覺差很多,訊號品質有明顯提昇,上網也順多了,而我用 Linux 的 iwconfig 指令來看 Link Quality,從原本的二十多一下跳到四十多,果真是差很多。