Code School:網頁技術線上學習網站,提供 JavaScript、HTML、CSS 等教學
Code School 是一個提供各種網頁技術教學的線上學習網站,基本的課程可以免費觀看,進階課程則是需要付費。
Code School 中將教學的課程分為四大類,分別為 JavaScript、HTML/CSS、Ruby 與 iOS,另外也有一些其他領域的課程,例如 Git、R 等。
Code School 中將教學的課程分為四大類,分別為 JavaScript、HTML/CSS、Ruby 與 iOS,另外也有一些其他領域的課程,例如 Git、R 等。
CodeCombat:透過玩遊戲學習 JavaScript 程式設計
CodeCombat 是一個開放原始碼的線上戰略遊戲,可以讓你一邊玩遊戲一邊學習 JavaScript 的程式設計。
一般初學者在學習程式語言的時候,通常都要經過一段漫長的時間去習慣程式設計的思維與邏輯,尤其是完全沒有寫過程式的人,會需要更長的時間,而這段時期通常都很枯燥乏味。
CodeCombat 是一個專門設計給初學者(或是小朋友)學習程式語言的戰略遊戲(strategy game),讓學習程式語言的過程可以更輕鬆、更有趣,而且整個學習的過程是真的在玩遊戲。
一般初學者在學習程式語言的時候,通常都要經過一段漫長的時間去習慣程式設計的思維與邏輯,尤其是完全沒有寫過程式的人,會需要更長的時間,而這段時期通常都很枯燥乏味。
CodeCombat 是一個專門設計給初學者(或是小朋友)學習程式語言的戰略遊戲(strategy game),讓學習程式語言的過程可以更輕鬆、更有趣,而且整個學習的過程是真的在玩遊戲。
Codecademy:一個線上互動式程式設計學習網站(JavaScript、jQuery、PHP、Python、HTML/CSS、Ruby 等)
Codecademy 是一個線上互動式程式設計學習網站,它可以讓你在網頁上以互動式的操作,透過逐步的程式語言撰寫練習,很輕鬆的學會各種程式語言。
Codecademy 提供了各種程式語言的線上互動式學習課程,包含 JavaScript、jQuery、PHP、Python、HTML/CSS、Ruby 等程式語言,另外還有許多雲端服務網站的 API 教學。
Codecademy 提供了各種程式語言的線上互動式學習課程,包含 JavaScript、jQuery、PHP、Python、HTML/CSS、Ruby 等程式語言,另外還有許多雲端服務網站的 API 教學。
自定 Google Chrome 網頁開發人員工具(DevTools)佈景主題教學
這裡教大家如何自定 Google Chrome 瀏覽器的網頁開發人員工具(Chrome Developer Tools)佈景主題。
在 Google Chrome 瀏覽器中有提供了一個 DevTools 網頁開發人員工具,它可以讓網頁開發者非常方便的在上面開發網頁或除錯,而這個工具在預設的情況下是使用白底灰字的布景主題,如果你是需要長時間使用這個工具開發的人,這樣的配色可能會讓眼睛很吃力。
這裡提供一些深色背景的布景主題與安裝教學,你可以從中選擇自己喜歡的配色主題來安裝在自己的 Chrome 瀏覽器中。
Google Chrome DevTools 的佈景主題其實就是一個 CSS 設定檔,當找到滿意的佈景主題之後,就把該佈景主題的 CSS 下載下來就可以了。
這裡要注意一點,有些佈景主題可能只會更改部份的程式碼配色或是特定的 panel 顏色,而有些則是會提供完整版面的佈景主題,讓整體感覺一致,在找這類的佈景主題時可以依照自己的需求選擇。
以下是一些不錯的深色佈景主題:
Zero Dark Matrix
在 Google Chrome 瀏覽器中有提供了一個 DevTools 網頁開發人員工具,它可以讓網頁開發者非常方便的在上面開發網頁或除錯,而這個工具在預設的情況下是使用白底灰字的布景主題,如果你是需要長時間使用這個工具開發的人,這樣的配色可能會讓眼睛很吃力。
這裡提供一些深色背景的布景主題與安裝教學,你可以從中選擇自己喜歡的配色主題來安裝在自己的 Chrome 瀏覽器中。
尋找 Google Chrome DevTools 佈景主題
首先第一步就是要找一個自己喜歡的佈景主題,這個通常用 Google 搜尋就可以在網路上找到很多,不會太難,而 DevThemez 這個網站也蒐集了很多很好看的佈景主題。Google Chrome DevTools 的佈景主題其實就是一個 CSS 設定檔,當找到滿意的佈景主題之後,就把該佈景主題的 CSS 下載下來就可以了。
這裡要注意一點,有些佈景主題可能只會更改部份的程式碼配色或是特定的 panel 顏色,而有些則是會提供完整版面的佈景主題,讓整體感覺一致,在找這類的佈景主題時可以依照自己的需求選擇。
以下是一些不錯的深色佈景主題:
Zero Dark Matrix
Codacy:幫助程式設計師測試程式問題的服務平台
Codacy 是一個軟體測試服務平台,專門用來幫助程式開發者自動找出程式中的問題。
Codacy(原名 Qamine)是由 Seedcamp 所出資贊助的一項服務平台,目前的版本為尚未開放的 beta 版,這個平台的主要設計目的在於自動幫程式開發者檢查程式中可能出現的錯誤,降低程式 bugs 的發生率,同時也可以減輕程式設計師的負擔。
Codacy(原名 Qamine)是由 Seedcamp 所出資贊助的一項服務平台,目前的版本為尚未開放的 beta 版,這個平台的主要設計目的在於自動幫程式開發者檢查程式中可能出現的錯誤,降低程式 bugs 的發生率,同時也可以減輕程式設計師的負擔。
C 程式語言相關的面試問題與解答
這裡整理一些 C 程式語言相關的面試問題與解答,除了可以讓你增強 C 程式語言的能力,對於面試可能也有幫助。
答案
這裡的問題出在 gets() 函數的使用,這個函數會從 stdin 中讀取字串,但是卻不會檢查緩衝區的大小,這有可能會造成緩衝區溢位(buffer overflow)的問題,改用標準的 fgets() 函數會是個比較好的方式。
gets() 函數
下面這段程式碼中有一個問題,你能找出來嗎?#include<stdio.h> int main(void) { char buff[10]; memset(buff, 0, sizeof(buff)); gets(buff); printf("\n The buffer entered is [%s]\n", buff); return 0; }
答案
這裡的問題出在 gets() 函數的使用,這個函數會從 stdin 中讀取字串,但是卻不會檢查緩衝區的大小,這有可能會造成緩衝區溢位(buffer overflow)的問題,改用標準的 fgets() 函數會是個比較好的方式。
程式設計師面試時會碰到的十種常見問題
這裡是整理了一般程式設計師面試時會碰到的十種常見問題。
如果你是一個資訊背景的人,在面試程式設計師職缺的時候,通常會跟一般的技術職缺有些不同,這裡整理了十個很常見且應該要避免的問題。
一個只會在電腦上使用 IDE 寫程式的人,突然被要求使用紙筆寫程式,會是一件有困難的事情,再加上這個場合是在面試,不是在自己的家裡,在如此緊張的氣氛中更加深了它的難度,而且在沒有編譯器的情況,面試者無法靠著編譯器幫他除錯,也會讓程式中很容易參雜一些平常不會注意到的錯誤。
第一次使用紙筆寫程式是有些難度的,我自己本身也有類似的經驗,在大學的時候修習系上開設的程式設計課程,平常上機的小考我都是輕鬆拿滿分,結果碰到期中的大考突然要在考卷上寫程式,一時之間還真的不會寫,考出來的成績就不是很理想。
建議如果沒有使用只比寫程式經驗的人,在面試之前可以自己在家練習一下,以免碰到類似的窘境。
如果你是一個資訊背景的人,在面試程式設計師職缺的時候,通常會跟一般的技術職缺有些不同,這裡整理了十個很常見且應該要避免的問題。
沒有在紙上或是白板上寫程式的經驗
這是應徵者常會犯的毛病之一,一般的面試常常會使用紙筆或是白板讓應徵者作答,許多應徵者的程式設計能力很好,但是卻沒有這方面的經驗。一個只會在電腦上使用 IDE 寫程式的人,突然被要求使用紙筆寫程式,會是一件有困難的事情,再加上這個場合是在面試,不是在自己的家裡,在如此緊張的氣氛中更加深了它的難度,而且在沒有編譯器的情況,面試者無法靠著編譯器幫他除錯,也會讓程式中很容易參雜一些平常不會注意到的錯誤。
第一次使用紙筆寫程式是有些難度的,我自己本身也有類似的經驗,在大學的時候修習系上開設的程式設計課程,平常上機的小考我都是輕鬆拿滿分,結果碰到期中的大考突然要在考卷上寫程式,一時之間還真的不會寫,考出來的成績就不是很理想。
建議如果沒有使用只比寫程式經驗的人,在面試之前可以自己在家練習一下,以免碰到類似的窘境。
Linux 系統的內部(Internal)指令與外部(External)指令
這裡介紹 UNIX/Linux 系統中內部(internal)指令與外部(external)指令的差異所在。
一般的 UNIX 或 Linux 系統中的指令可分為兩種,分別為內部(internal)指令與外部(external)指令,對於一般的 Linux 新手而言,可能很少注意到這個問題,而了解它們之間的差異對於撰寫指令搞會有一些幫助。以下我們會說明這兩種指令的定義與其中的差別。
所謂的內部指令就是指內建在 shell 中的指令,也就是說當你執行這類的指令時,系統並不會因為要執行這個指令而產生額外的行程(process),所以內部指令的執行效率非常高,例如最常用的更換工作目錄指令 cd 就是一個典型的內部指令,執行這個指令時,不會產生任何額外的行程,只會單純變更工作目錄而已。除了 cd 之外,也有很多指令都是屬於內部指令,如:source、bg、fg 與 pwd 等。
外部指令就是指那些不是內建於 shell 中的指令,這類的指令通常是一個二進位的執行檔或是一個可執行的指令稿(script),在執行這類的指令時,系統就會產生而外的行程,所以執行效率也就會比較低一些。一些常見的外部指令有:cat、mv、sed 與 perl 等。
一般的 UNIX 或 Linux 系統中的指令可分為兩種,分別為內部(internal)指令與外部(external)指令,對於一般的 Linux 新手而言,可能很少注意到這個問題,而了解它們之間的差異對於撰寫指令搞會有一些幫助。以下我們會說明這兩種指令的定義與其中的差別。
所謂的內部指令就是指內建在 shell 中的指令,也就是說當你執行這類的指令時,系統並不會因為要執行這個指令而產生額外的行程(process),所以內部指令的執行效率非常高,例如最常用的更換工作目錄指令 cd 就是一個典型的內部指令,執行這個指令時,不會產生任何額外的行程,只會單純變更工作目錄而已。除了 cd 之外,也有很多指令都是屬於內部指令,如:source、bg、fg 與 pwd 等。
外部指令就是指那些不是內建於 shell 中的指令,這類的指令通常是一個二進位的執行檔或是一個可執行的指令稿(script),在執行這類的指令時,系統就會產生而外的行程,所以執行效率也就會比較低一些。一些常見的外部指令有:cat、mv、sed 與 perl 等。
Sublime Text -- 跨平台的專業文字編輯器
Sublime Text 是一個跨平台的專業文字編輯器,支援各種程式語言,非常適合程式開發者使用。
Sublime Text 支援 Linux 、Windows 與 Mac OS X 三種作業系統,以一個文字編輯器而言,其在功能上非常強大,可以媲美一般專業的程式開發軟體,像一般的自動完成(autocomplete)、多重選擇、多重視窗分割等功能都有支援。
Sublime Text 支援 Linux 、Windows 與 Mac OS X 三種作業系統,以一個文字編輯器而言,其在功能上非常強大,可以媲美一般專業的程式開發軟體,像一般的自動完成(autocomplete)、多重選擇、多重視窗分割等功能都有支援。
wxHexEditor -- 跨平台的十六進位編輯器
wxHexEditor 是一個開放原始碼且跨平台的十六進位編輯器,除了用來編輯檔案之外,也可以直接編輯低階的硬碟磁區。
一般如果在開發比較低階的程式時,通常都會需要處理一些二進位檔案,而二進位檔案沒辦法以一般的文字編輯器來編輯,這時候就需要一個十六進位的編輯器了。
這裡我們介紹一個小巧好用的 wxHexEditor,它是以一套跨平台的 GUI 函式庫 wxWidgets 來開發的,所以它支援各種常見的作業系統(如 Windows、Linux 與 Mac OS 等)。
下面這個是在 Linux 系統中的使用畫面。
一般如果在開發比較低階的程式時,通常都會需要處理一些二進位檔案,而二進位檔案沒辦法以一般的文字編輯器來編輯,這時候就需要一個十六進位的編輯器了。
這裡我們介紹一個小巧好用的 wxHexEditor,它是以一套跨平台的 GUI 函式庫 wxWidgets 來開發的,所以它支援各種常見的作業系統(如 Windows、Linux 與 Mac OS 等)。
下面這個是在 Linux 系統中的使用畫面。
使用 DATA URI 將圖片以 Base64 編碼並內崁至網頁中,加速載入速度
這裡介紹如何使用 Data URI 的方式減少 HTTP 的請求(Request)數量,讓網頁載入速度變得更快。
有一些網頁設計者會使用 CSS image sprites 的方式來避免產生過多的請求,而 Data URI 也是另一種很不錯的替代方案。
Data URI 是一種檔案格式,其資料全部都是經過 base64 編碼之後,以文字的方式來儲存的,這樣以文字方式儲存的好處就是可以直接寫進 HTML 或 CSS 中,不需要透過外部的檔案儲存。
Data URI 的格式長成這樣:

看起來跟一般的圖片其實沒什麼兩樣,但是因為這樣的方式是直接寫在 HTML 或 CSS 中,可以省去原本抓取該圖檔的請求。
為什麼要使用 Data URI?
網頁的載入速度對於一個網站而言是很重要的,在載入一張網頁時,瀏覽器會針對網頁中的每一個元素都產生一個 HTTP 請求(request),使用這些請求來跟伺服器取得這些元素,而網頁中的圖片就是最常見的例子,如果網頁中包含很多圖片,那麼網頁在載入時就會產生很多的請求,情況就會像這樣:有一些網頁設計者會使用 CSS image sprites 的方式來避免產生過多的請求,而 Data URI 也是另一種很不錯的替代方案。
Data URI 是一種檔案格式,其資料全部都是經過 base64 編碼之後,以文字的方式來儲存的,這樣以文字方式儲存的好處就是可以直接寫進 HTML 或 CSS 中,不需要透過外部的檔案儲存。
Data URI 的格式長成這樣:
data:[<mime type>][;base64],<data>下面這個是一張圖片使用 Data URI 的格式來表示的例子:
data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADoAAAA6CAYAAADhu0ooAAAFP0lEQVR4nO2bX0gcRxzH...[略]後面的資料因為非常長,所以就省略了,下面這張圖就是使用 Data URI 來表示的圖片:
看起來跟一般的圖片其實沒什麼兩樣,但是因為這樣的方式是直接寫在 HTML 或 CSS 中,可以省去原本抓取該圖檔的請求。
Java Servlet 的 HttpSessionListener 的使用方式:監控與統計伺服器的所有 session 狀態
網頁的 session 概念是現在網路應用程式都會使用的技術,而在 Java Servlet 中如果想要監控伺服器所有產生的 session,並做一些統計分析或記錄,可以透過實作 HttpSessionListener 這個介面(interface)的方式來達到。
HttpSessionListener 這個界面中定義了以下兩個函數:
HttpSessionListener 這個界面中定義了以下兩個函數:
- sessionCreated(HttpSessionEvent se):用來處理每個 session 產生後,所要執行的動作。
- 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 時就加一,刪除時就減一。
訂閱:
文章 (Atom)



















