顯示具有 雲端 標籤的文章。 顯示所有文章
顯示具有 雲端 標籤的文章。 顯示所有文章

Live.Pics.io:支援語音的即時線上照片分享服務平台

Live.Pics.io 是一個支援語音的即時線上照片分享服務,可以讓你馬上透過麥克風跟任何網路上的朋友分享自己的照片。

Live.Pics.io 支援語音的即時線上照片分享服務平台

Live.Pics.io 是一個可以讓用者不需要任何準備就可以跟網路上的任何人分享圖片與進行對話的服務平台,當然這樣的服務除了跟親朋好友聊天之外,也適用於商業的簡報,而對方也可以透過麥克風跟簡報者即時的對話。

Codacy:幫助程式設計師測試程式問題的服務平台

Codacy 是一個軟體測試服務平台,專門用來幫助程式開發者自動找出程式中的問題。


Codacy(原名 Qamine)是由 Seedcamp 所出資贊助的一項服務平台,目前的版本為尚未開放的 beta 版,這個平台的主要設計目的在於自動幫程式開發者檢查程式中可能出現的錯誤,降低程式 bugs 的發生率,同時也可以減輕程式設計師的負擔。

Face Your Manga:製作卡通大頭貼(漫畫風個人頭像)的線上工具

Face Your Manga 是一個可以讓你線上製作漫畫風個人頭像好用工具,非常有趣!

如果你的 Facebook 或 Google+ 的大頭貼不想放個人的實際照片,那麼就可以考慮用 Face Your Manga 這個線上工具製作一個屬於自己的大頭貼。

雖然它是一個卡通造型大頭貼設計工具,但是可用的組件超乎想像的多,每個人都可以依照喜好自由設計,也不用太擔心製作出來的大頭貼會跟別人一樣。

Face Your Manga -- 製作卡通大頭貼

進入 Face Your Manga 的網站後,直接點選左上角的「Create」就可以開始動手設計了。首先選擇性別。

Lucidpress -- 免費且專業的線上排版軟體

Lucidpress 提供了一個專業的線上排版服務,你可以用這個免費的雲端服務製作出各式各樣專業的版面。


在以往的專業排版多半都是使用一些專用的軟體來進行,例如微軟的 Publisher 等,而這類的軟體通常都是設計給專業人士使用的,操作方式比較複雜,一般人若要使用不是那麼容易,而此類軟體的價格通常也不低。

現在 Lucid Software 這家以雲端服務為主的公司推出一項免費的線上排版服務 Lucidpress,比起傳統的排版工具,他更適合一般的使用者來使用,甚至只需要使用滑鼠的拖拉就可以設計出專業的排版效果。

近年來關於雲端運算(Cloud Computing)的發展狀況

這裡整理了一些近年來關於雲端運算(Cloud Computing)的發展狀況。

從 2008 年到 2012 年企業花費在雲端運算上的經費一直持續在上升,根據 IDC 市調公司的研究,雲端運算不只在未來幾年的獲利會增加,連同其形式也會不斷轉變。

在選擇網頁空間時應該注意哪些重點?

現在網路上有許多免費或付費的網頁空間,這裡列出在選擇的時候,應該要考慮的一些重點。


網頁空間最基本的就是伺服器不能老是當機或是故障,這個部分就要看它的 uptime。

所謂的 uptime 就是指伺服器正常運作的時間比例,一般 uptime 最低的要求依該要有 99% 以上,而如果有 99.9% 會更好。

直接看這種比例可能你沒有特別的感受,如果把他換算成實際的時間的話,99.5% 的 uptime 相當於一個月當機 3.5 小時(其實已經很久了),而 99.9% 的話則是一個月 40 分鐘。

如果網頁空間有提供備份的伺服器(即鏡像站),檔機時還有備援機可以撐著,那這個影響可能會小一點。

使用 DATA URI 將圖片以 Base64 編碼並內崁至網頁中,加速載入速度

這裡介紹如何使用 Data URI 的方式減少 HTTP 的請求(Request)數量,讓網頁載入速度變得更快。

為什麼要使用 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 中,可以省去原本抓取該圖檔的請求。

在 Ubuntu 安裝 Broadway Backend,在 HTML5 瀏覽器中操控 GTK3 應用程式(遠端桌面)

GTK+ 從 3.2 版開始加入 Broadway backend,這個功能可以讓 GTK3 的程式直接顯示在支援 HTML5 的瀏覽器中,不需要任何 VNC client 或 plugin 就可以達到遠端桌面的功能。


傳統上 GTK 的應用程式都是顯示在 XWindow 的環境下,若是要在瀏覽器中操控遠端的應用程式或桌面,大都是使用 VNC 或是 NX 這類的方式,但是現在 GTK+ 從 3.2 版之後,增加了 broadway 這個 backend,讓應用程式可以直接顯示在支援 HTML5 的瀏覽器中,不需要像以前一樣還要透過別的通訊協定來達成。

提高伺服器系統與資料庫擴充性(Scalability)與效能(Performance)的方法(二)

避免累積太多的 Technical Debt

Technical debt 是指一個專案或程式開發工作在真正完成前,所有應該做完的工作,如果一個專案中所累積的 technical debt 太多而沒有適時消化,到最後這個專案就容易出現問題,甚至可能因此終結。

這裡舉個簡單的例子,在一般的專案的發展過程中,有時候程式設計師會有一些新的想法,這時候他會想要在程式中加入這個新的程式,但是因為程式還在開發,很難一次把所有該更新或改寫的地方一次補齊,例如當程式加入一個新功能時,卻沒有更新對應的說明文件等等,而這些說明文件以及其他該更新的地方,就是常見的 technical debt。

這時候如果很不幸的,原本這個開發團隊因為某些原因離開了,專案交由令一個團隊繼續開發,那些新增之後卻沒有文件的功能就是個大問題,新團隊要花費更多的時間搞清楚它是什麼,如果它裡面還有 bug 的話那就更慘了。

Technical Debt

提高伺服器系統與資料庫擴充性(Scalability)與效能(Performance)的方法(一)

Slow Traffic – Penguin Crossing
擴充性專家 Sean Hull 整理了幾項對於系統擴充性(Scalability)與效能(Performance)的致命傷,如果你的系統或程式想要有好的擴充性,請避免這幾種狀況。

不要用 RAID 5 與 Multi-tenant EBS

硬碟是伺服器中一個很基本的硬體設備,而它與伺服器的整體效能息息相關,縱使現在記憶體價格低廉,你可以在伺服器上裝載非常大容量的記憶體,藉以提升系統的執行速度,但無可避免的,系統還是常常需要從硬碟讀取資料或將資料再寫回硬碟中儲存,因此硬碟在伺服器的效能(performance)與可擴充性(scalability)上扮演舉足輕重的角色。

磁碟陣列是一般伺服器中常用的資料儲存方式,透過這樣的方式可以提高儲存的讀寫速度、增加資料的可靠度。磁碟陣列分為好多種,但不是每一種都那麼適合你的伺服器來使用,像一般常聽到的 RAID 5 磁碟陣列就有一些問題。

Guacamole 簡介 -- 透過瀏覽器以網頁介面遠端操控電腦,支援 VNC 與 RDP 協定

Guacamole 是一個以 HTML5 為基礎的遠端桌面 gateway,讓你只需要使用瀏覽器就可以操控遠端的電腦,功能就像傳統的 VNC 與 RDP 一樣。


Guacamole 是一個以 HTML5 為基礎的網頁應用程式(web application),使用者可以透過這個網頁應用程式並配合遠端桌面的傳輸協定(例如 VNC 或 RDP)來操控遠端的電腦。

除了網頁應用程式之外,Guacamole 也是一個專案名稱,這個專案的內容就是發展一套 API 提供給 Guacamole 網頁應用程式使用,而這個 API 亦可用於其他類似的應用程式或服務。

在 Ubuntu Linux 12.04 安裝 Guacamole 網頁遠端桌面教學(使用 Tomcat 7)

這裡我們以 Ubuntu Linux 12.04 的環境示範如何安裝 Guacamole,在 Guacamole 官方的教學中所使用的 Tomcat 伺服器版本為 6,而這裡我們改用 Tomcat 7,安裝上有些小差異。

Guacamole Logo

以下是安裝步驟教學。

Step 1
安裝 Tomcat 7:
sudo apt-get install tomcat7 tomcat7-admin tomcat7-docs tomcat7-examples tomcat7-user libservlet3.0-java-doc libservlet3.0-java
其實如果沒有特別需求,只要安裝 tomcat7 這個套件就可以了,我個人是喜歡把相關的套件一次全部安裝好,免得以後要用的時候還要再裝一次。

使用 MathJax 把 LaTeX 或 MathML 數學式子放進網頁

MathJax 這個 JavaScript 工具可以讓你直接使用 LaTeX、MathML 或 AsciiMath 的語法把數學式子寫進網頁中,它會自動幫你排版並產生 HTML、SVG 或是 MathML 的方程式,讓各種瀏覽器都可以看,效果幾乎跟傳統上的 LaTeX 一樣,非常厲害。


傳統上如果要在網頁上顯示專業排版的數學式子,大概都只能靠 LaTeX 排版之後,透過一些編譯工具把 LaTeX 轉成圖片檔,再放進網頁中,雖然有很多線上編譯 LaTeX 的工具可以使用,但是最終還是需要自己內崁圖檔,並不是很方便。

現在有了 MathJax 這個工具,使用起來既方便效果又好,下面這個就是使用 MathJax 所排版出來的效果:

When \(a \ne 0\), there are two solutions to \(ax^2 + bx + c = 0\) and they are
$$x = {-b \pm \sqrt{b^2-4ac} \over 2a}.$$

A Cross Product Formula:

$$\mathbf{V}_1 \times \mathbf{V}_2 = \begin{vmatrix}
\mathbf{i} & \mathbf{j} & \mathbf{k} \\
\frac{\partial X}{\partial u} & \frac{\partial Y}{\partial u} & 0 \\
\frac{\partial X}{\partial v} & \frac{\partial Y}{\partial v} & 0
\end{vmatrix}$$

An Identity of Ramanujan:

$$\frac{1}{\Bigl(\sqrt{\phi \sqrt{5}}-\phi\Bigr) e^{\frac25 \pi}} =
1+\frac{e^{-2\pi}} {1+\frac{e^{-4\pi}} {1+\frac{e^{-6\pi}}
{1+\frac{e^{-8\pi}} {1+\ldots} } } }$$

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 虛擬機器所使用的格式。

使用 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 函數是由伺服器本身提供)。

Monte Perdido -- 西班牙比利牛斯山脈,類似托爾金的奇幻世界

這張照片是在西班牙比利牛斯山脈中的 Monte Perdido 北面所拍攝的,這座山被雲霧繚繞足足有三天的時間,偶爾會露出其中的冰川。

在那裡非常的寒冷,加上強風,給人非常深刻的印象,讓人聯想到托爾金的世界,這個地方可能是一些古老的神祇或巨龍的居所。

各種免費 RSS 新聞訂閱軟體與雲端服務 -- Google Reader 閱讀器的替代品

Google 官方對外宣佈將在今年的 7 月 1 日關閉 Google Reader 閱讀器的服務,而許多習慣使用 Google Reader 閱讀器人對於這個消息應該很煩惱,不過其實除了 Google Reader 閱讀器之外,網路上也有許多其他類似的替代品,以下為大家一一介紹。


Feedly

適用平台:iOS、Android、Web

Feedly 是 RSS 閱讀軟體,使用者介面設計的很好,閱讀起來很舒服。而如果是 Google Reader 閱讀器的使用者,可以直接用 Google 的帳號登入 Feedly,這樣 Google Reader 中的資料就會自動複製過來,不需要自己設定,很方便。

Feedly RSS Reader

SymPy:使用 Python 幫你導煩人的數學公式(一)

SymPy 是一個可以進行數學代數運算的 Python 模組,他的發展目標是一個完整的電腦代數系統,而此模組完全都是使用 Python 寫成的,所以不需要依賴其他的函式庫。

準備 SymPy 環境

在 Ubuntu 或 Debian Linux 中若要安裝 SymPy,可以直接使用 apt 安裝:

sudo apt-get instlal python-sympy

裝完之後,接著就可以執行 Python 了:

python

進入 Python 的互動式模式(interactive mode)之後,就會看到三個大於符號(>>>),這就是 Python 的主要命令提示字元(primary prompt)。


SymPy:使用 Python 幫你導煩人的數學公式(二)

符號(Symbol)與代數運算

SymPy 與其他的 CAS(Computer Algebra System)不同,在 SymPy 中所有的變數都要經過宣告才能使用:

>>> from sympy import Symbol
>>> x = Symbol('x')
>>> y = Symbol('y')

第二行是將 Python 變數 x 指定為 SymPy Symbol。

在 sympy.abc 中有預先定義一些 Symbol(包涵一些以希臘字母命名的 Symbol)。

>>> from sympy.abc import x, theta

若要建立多個 Symbol 可以使用 symbols 與 var 兩個函數,兩個函數作用相同,都可以接受 range notation,但 var 會自動將建立的 Symbol 加入命名空間(namespace)。

>>> from sympy import symbols, var
>>> a, b, c = symbols('a,b,c')
>>> d, e, f = symbols('d:f')
>>> var('g:h')
(g, h)
>>> var('g:2')
(g0, g1)


SymPy:使用 Python 幫你導煩人的數學公式(三)

微積分(Calculus)

SymPy 也可以用於微積分的計算,這裡介紹在微積分中常用的運算。

SymPy 提供了ㄧ個 limit(function, variable, point) 函數可以計算函數的極限值。下面的這個指令可以計算 sin(x) 函數在 x 趨近於零的極限值。

>>> from sympy import limit, Symbol, sin, oo
>>> x = Symbol('x')
>>> limit(sin(x)/x, x, 0)
1


亦可計算無限大的極限值:

>>> limit(x, x, oo)
oo

>>> limit(1/x, x, oo)
0

>>> limit(x**x, x, 0)
1