以 RabbitMQ 實作 Publish/Subscribe 模型(Python 版本)

這裡我們使用 RabbitMQ 來實作 publish-subscribe pattern,將訊息一次傳送給多個 consumers。

前一個範例中,我們實作的工作佇列都是假設一個工作只會配送給一個 worker,現在我們要改變一下這個規則,讓一個訊息可以同時傳送給多個 consumers,而這樣的設計模式就稱為 publish/subscribe

RabbitMQ Logo

Linux 系統 xargs 指令範例與教學

這裡提供 xargs 這個 Linux 指令的使用教學,並搜集一些常用的範例程式以供參考。

在 UNIX/Linux 系統中,xargs 這個指令跟其他的指令結合之後,將會變得非常有用,這裡我們整理了一些常見的 xargs 使用範例與教學,透過這些簡單的範例可以很快的了解 xargs 的各種使用方式。

終端機(terminal)

Blogger 部落格自定網域名稱(Domain Name)與網址教學(使用 Godaddy)

這裡介紹如何自己設定 Google Blogger 部落格的網域名稱,讓部落格使用自己的網址。


如果是使用一般性的部落格架站,通常網站都會掛在這些部落格的網域底下,例如 Blogger 就會是 *.blogspot.com,原本的網址就已經不短了,加上自己的部落格名稱之後,整個網址就顯得非常長,對於一般的使用者來說要記那麼長的網址實在不容易。

GoDaddy 申請購買網域名稱(Domain Name)教學

這裡介紹如何在 GoDaddy 網站上申請與購買網域名稱(Domain Name),並介紹優惠碼的取得與使用方式。




如果你想要架設一個較正式的網站或部落格,通常申請一個比較正式的網址會比較好,如果有一個簡短、具有代表性的網址,可以讓使用者更容易記住,而且可以創造自己的品牌。

製作 Wireframe 設計圖的免費工具整理

這裡整理了許多繪製 wireframe 與 diagram 設計圖的免費工具與資源,包含線上畫圖的工具與各種設計用的素材。

Vundle:Vim Plugin 自動下載、安裝、更新與管理工具(Vim Bundle)

Vundle 是一個可以自動下載、安裝與管理 Vim plugins 的工具,讓 Vim 的使用者可以很方便的使用各種 plugins。

Vim Logo

Vim 編輯器可以透過各種 plugin 來增加各種功能,在 Vim Scripts 網站上收錄了非常大量的 Vim 指令稿,使用者可以自己下載後安裝在 Vim 中使用。雖然這些 plugins 可以加強 Vim 的功能,但是如果安裝了太多的 plugins,在管理上就會比較麻煩,這時候就可以使用 Vundle 來幫忙管理所有的 Vim plugins。

Code Studio:線上編輯音樂演算法,設計聲音波形

Code Studio 是一個「音樂演算法」設計工具,使用者可以在瀏覽器中使用 JavaScript 來設計聲音的波形,寫好之後馬上就可以播放出來聽。


Code Studio 內部是使用 baudio 這個工具來產生聲音,使用者在設計音樂時,要撰寫一個跟時間相關的函數,產生的值要介於 -1 到 1 之間,例如:
return function(t) {
  return sin(441);
  function sin(x) { return Math.sin(2 * Math.PI * t * x); }
}
這個例子會產生一個固定頻率的聲音,在 Code Studio 終有提供示波器的功能,使用者可以直接看到產生的聲音波形。

Vim 使用 g 指令快速搜尋變數或文字

這裡介紹如何在 Vim 編輯器中使用 g 指令,快速搜尋游標所在的文字。


在使用 Vim 撰寫程式時,時常會需要在整個程式碼檔案中搜尋某個變數或函數的定義,或是尋找某個變數在哪些地方出現過,在 Vim 中最基本的搜尋方式是使用 / 向後搜尋,或是使用 ? 向後搜尋,不過每次使用這些搜尋功能時都要自己手動輸入要搜尋的字串,但是如果要搜尋的變數名稱很長的時候,要這樣自己打就很麻煩了。

Vim 搜尋名稱較長的變數

這裡我們介紹一個 Vim 中很實用的 g 指令,它可以讓使用者不必輸入那麼多文字就可以進行快速的搜尋與移動。

在使用之前,先將游標移動至要搜尋的變數上(這裡假設我們搜尋 immediate_callback_sym):


接著就可以使用下面幾種方式來搜尋指定的變數:
  • g*:向後搜尋游標所在位置的變數(或任何文字)。
  • g#:跟 g* 一樣,但是向前搜尋。
  • gd:移動到區域性(local)變數的宣告(declaration)位置。
  • gD:移動到全域性(global)變數的宣告位置。
如果這時候輸入 g*,Vim 就會向後搜尋 immediate_callback_sym


如果輸入 gd,就會移到 immediate_callback_sym 變數宣告的位置:


這裡的 g** 作用很相似,如果在 rain 這個文字上使用 g*,則連同 rainbow 這樣的字也會被納入搜尋,相當於使用 /\<rain\> 的效果:


但若使用 * 的話,就只會搜尋 rain 這個字而已,不會包含 rainbow,相當於使用 /rain


另外 g 指令還有兩個常見的用法:
  • gg:移動至檔案的第一行。
  • Ngg:移動至檔案的第 N 行,其中 N 可以是任何數字,例如 35gg 就是移動至第 33 行。
  • G:移動至檔案的最後一行。

參考資料:wikia

ZenMate:避免瀏覽的網頁被監控的 Chrome 瀏覽器翻牆外掛(Plugin)

ZenMate 是一個可以加強上網安全性的 Google Chrome plugin,可以保護自己所瀏覽的網頁不被本地端的 ISP、駭客或政府單位所監控,亦可達到「翻牆」的功能。

現在的網際網路非常發達,幾乎每個人都會上網,但是一般人通常在上網時,不會去注意資訊安全的問題,其實當你在瀏覽網頁時,網管、ISP 或是駭客都有機會可以竊取到你所有看過的網頁內容,簡單說就是你的螢幕上可以看到的東西,他們都可以看到,而你螢幕上看不到的(例如未加密的密碼等),他們也可以看到。

天然環保的手工檸檬蘆薈清潔劑製作方法

這裡介紹天然環保的手工檸檬蘆薈清潔劑的製作方法。

本站已經搬家了,請至 G. T. Wang 新網站閱讀最新的文章。

本篇的介紹的是 20 公升桶子的配方,如果您是小家庭,怕這樣的量太多的話,可以參考適用小家庭的 6 公升礦泉水瓶配方

準備材料

  • 檸檬 8 斤
  • 95% 酒精 3 瓶
  • 蘆薈白肉(去綠皮)3碗
  • 鹽 1 包
  • 椰子油起泡劑 1 公斤
  • 純淨水 15 公升(最多)

檸檬8斤(皮越青越厚好,精油越多)
檸檬8斤(皮越青越厚好,精油越多)

Eclipse 安裝與設定 GlassFish 伺服器教學(Java EE 7 Application Server)

這裡介紹如何在 Eclipse 中安裝 GlassFish Application Server,建立 Java EE 開發環境。

GlassFish 是一個開放原始碼的 Java EE Application Server,這裡以 Eclipse Kepler 為例,示範如何在 Eclipse 的環境下安裝 GlassFish,作為開發 Java EE 應用程式的伺服器。這裡所使用的作業系統為 Mac OS X,不過不同的作業系統在安裝上應該都差不多。

VideoGL:3D HTML5 影片播放器 jQuery Plugin(支援特效濾鏡)

VideoGL 是一個 jQuery 的 plugin,藉由 HTML5 的技術讓影片在 3D 的互動環境下播放,而且支援各種特效濾鏡。

VideoGL

VideoGL 將 HTML5 標準的 video 轉換為支援 3D 互動的影片播放器,讓使用者可以產生互動式的 3D 動畫、並且還可以加上一些影像的後處理,例如灰階與模糊等特效濾鏡。在 VideoGL 的官方網站上有實際的 demo 範例,下面這短影片則是實際操作的錄影:

以 RabbitMQ 實作工作佇列(Work Queues)(Python 版本)

這裡介紹如何使用 RabbitMQ 實作工作佇列(work queues),將耗時的工作分配至多個 works 來處理。


在上一個 RabbitMQ 訊息佇列教學中,我們實作一個可以透過 queue 傳送與接收訊息的簡單架構,這裡我們將繼續修改之前的範例程式碼,加入工作處理的功能。

讓原始碼放在自己伺服器中的各種免費的 GitHub 替代方案

這裡整理了一些免費的 Github 替代方案,讓開發者可以將專案的原始碼放在自己的伺服器中,避免原始碼洩漏的風險。

GitHub

GitHub 對於許多的開發者而言是一項很有用的資源,它可以讓不同的程式設計師一起合作開發一項專案,也提供很好的程式碼管理與 code review 等功能。

HTML5 的 Server-Sent Events 串流使用教學

Server-Sent Events 是一個已經被 W3C 納入 HTML5 標準的 API,它可以讓伺服器透過一般的 HTTP 協定主動更新瀏覽器的資料。

HTML5

傳統的網頁架構下,如果瀏覽器要持續接收來自於伺服器端的新資料時,通常都是透過 Polling、Long-Polling 或 Streaming 等方式來達成,而後來出現的 WebSocket 徹底解決了這個問題,不過除此之外,在 HTML5 標準中還有一個 Server-Sent Events 也可以處理這類型的問題。

JSHint:自動檢查 JavaScript 程式碼,偵測錯誤的線上工具

JSHint 是一個可以自動檢查 JavaScript 程式碼的工具,讓程式設計者在專案開發初期就可以即時修正潛在的錯誤。

HSHint

由於 JavaScript 這個程式語言的語法與結構非常彈性,不像 Java 或 C 語言那樣嚴謹,對於程式設計者而言,一開始會感覺很方便,不管怎麼寫都可以執行,但是當整個程式發展到一定規模的大小之後,JavaScript 這樣鬆散的結構會讓程式很容易出現一些 bugs,而且除錯與修正的工作也會變得非常困難。

explainshell:解釋 Linux 指令與參數意義的線上工具

explainshell 這個線上工具可以將一串 Linux 指令分解,並依照 man pages 解釋每個指令與參數的意義,讓你快速了解整行指令的運作方式。


有時候為了在 Linux 系統上處理一些問題,上網搜尋找到一些比較長的指令時,通常要在 man pages 中查詢指令中每一個參數的意義是很費時的,尤其是很多指令以管線(pipe)串在一起時,更是麻煩。

免費的伺服器或網路監控工具整理

這裡介紹幾個免費的伺服器或網路監控工具,可以讓管理者更容易掌控整個系統的狀態。

伺服器

如果可以在系統發生任何異常狀況時就立即察覺,對於一個網站或網路的管理者而言會是非常有用的,以下有許多開放原始碼的工具可以幫助系統管理者進行各項監控工作,你可以依照自己的需求選擇適合自己的來使用。

Slides:免費線上簡報製作工具

Slides 是一個免費的線上簡報製作工具,註冊之後就可以享有 250MB 的免費簡報空間,製作完成的簡報還可以直接在線上分享。

Slides 線上簡報製作工具

一般的使用者只要在 Slides 網站上註冊之後,就可以立即享有 250MB 的免費簡報儲存與分享空間,而他的簡報製作介面雖然不像 Power Point 那像強大,但是基本文字與圖片排版等功能都有,對於一般性的技術簡報,應該都沒有問題。

Zed : 以 Google Chrome 為基礎的開放原始碼編輯器

Zed 是一個以 Google Chrome 為基礎的一個開放原始碼編輯器,可以直接開啟本機或是遠端的程式碼檔案進行編輯。

Zed 編輯器

Zed 這個編輯器跟 Atom 類似,都是使用單純的網頁技術(HTML5、CSS 與 JavaScript)所打造的,雖然使用的技術單純,但是他的功能卻很強大:
  • 語法突顯(syntax highlighting):支援各種程式語言,包含:C、Clojure、CoffeeScript、C#、CSS、Dart、Erlang、Go、Haml、Haskell、HTML、ini files、Java、JavaScript、JSON、LogiQL、Lua、Markdown、Nix、PHP、Plist、Protobufs、Python、Ruby、Shell、XML。
  • 程式碼自動補齊(code completion):可自動補齊程式碼的關鍵字或是自訂的程式碼片段。
  • 自動檢查程式碼(linting):對於某些特定語言,可以自動檢查程式碼是否有錯誤,支援的程式語言有:JavaScript、CoffeeScript、JSON、Lua、CSS。
  • 多重視窗(split-view)編輯:可以將編輯器分割成多個子視窗來同時編輯不同的檔案。
  • 佈景主題(themes):可選擇 light 或 dark 主題,而使用者也可以使用 CSS 自訂佈景主題。

定義 JavaScript 函數(Functions)的各種方式

這裡介紹各種 JavaScript 函數的定義方式,有些方式很常見,但是有一些你可能沒看過。


以下是在 JavaScript 中四種建立函數的方式:
// 四種建立函數的方法
function declaration () {};
var funcExpression = function () {};
var namedFuncExpression = function named() {};
var fnConstructor = new Function ();
這些都是可以用來建立函數(Function)物件的方法,但是其中有些差異,以下我們將討論這些作法之間有什麼差別。