Category Archives: IT: Blog Fun

開機時自動啟動 Go Web 應用程式 – Upstart 設定方式

補上篇,Go Web 應用程式需要在 Command Line 下啟動,在 Production 環境中我們可以在 Ubuntu 中使用 Upstart 設定為開機時自動啟動,設定如下:

file: /etc/init/go-http.conf

# Upstart Configuration
description     "Golang Web App"
author          "xxxxx xxx"

start on (net-device-up
          and local-filesystems
          and runlevel [2345])
          
stop on runlevel [016]

respawn

exec /path/to/http

然後就可以使用這個指令來啟動:

$ sudo service go-http start
go-http start/running, process 12537

Upstart 在 Ubuntu like 系統上是預設安裝的應用程式,在其他的 Linux 下可能需要另外安裝。設定好了之後重新開機時就會像一般的 Daemon 一樣自動啟動應用程式。這個設定會在網路已經啟用的狀況下才啟動你指定的程式,對於 Upstart 有興趣深入了解的朋友可以參考這篇:http://upstart.ubuntu.com/cookbook/

2014/2/15 [補充] Debian 與 Ubuntu 都將支持使用 systemd 而不再用 Upstart, 因此稍晚這篇要改成 systemd 的設定方式。

在 Apache 上使用 VirtualHost 的方式執行 Golang 的 Web 站台

主要是參考網路上的這一篇:http://www.jeffreybolle.com/blog/run-google-go-web-apps-behind-apache

作者給出了一個簡單的 Go Web 程式:

package main

import(
    "http"
    "log"
    "os"
)

const resp = `<html>
    <head>
        <title>Simple Web App</title>
    </head>
    <body>
        <h1>Simple Web App</h1>
        <p>Hello World!</p>
    </body>
</html>`

func handler(w http.ResponseWriter, r *http.Request) {
    w.Write([]byte(resp))
}

func main() {
    http.HandleFunc("/", handler)
    err := http.ListenAndServe(":8080", nil)

    if err != nil {
        log.Println(err)
        os.Exit(1)
    }
}

這個 Web 程式主要是監聽 8080 Port,用 go build 之後得到的執行檔可直接作為 Web Server 運行。然後在 Apache 上安裝幾個 Module 後重啟 Apache。

sudo a2enmod proxy
sudo a2enmod proxy_http
sudo a2enmod rewrite
sudo service apache2 restart

接下來在 /etc/apache2/sites-available/ 目錄下建立 VirtualHost 的設定檔案 (gowebsite):

<VirtualHost *:80>
    ServerAdmin webmaster@example.com
    ServerName www.example.com
    ServerAlias example.com

    DocumentRoot /var/www
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /var/www/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all

        RewriteEngine on
        RewriteRule ^(.*)$ http://localhost:8080/$1 [P,L]
    </Directory>
</VirtualHost>

接著在 Apache 啟動這個設定檔,將此 VirtualHost 設為啟動:

sudo a2ensite gowebsite
sudo service apache2 restart

整個過程就是在 VirtualHost 設定檔中設定此站台資料透過 Proxy Module 來由 localhost:8080 取得,當然這邊也可以同時在很多不同的 Port 中執行很多的 VirtualHost 站台。

讓用戶快速方便的進行付款

SpeedUp-payments

本來在 WebDirectHosting.com 有兩個註冊的域名,先前是因為在它的特價期間看上了便宜的價格 (USD$9.7/Year) 才在上面註冊的,接下來幾年的 Renew Domain 費用變成了 USD$10.28,想想也沒有差多少也就一直用下去了。今年網域即將到期之際他們照例發了電子郵件通知,我的付款動作卻一直卡在信用卡驗證的步驟無法進行下去,發信問了 Support 也沒有回復,只好找到另一個 Sales 帳號發過去問,得到的回復是:

Hello, please verify all information is entered correctly.
If that does not help, please try a different card.

其實在這之前我已經嘗試過 VISA 與 Master Card 了,手上沒有其他的信用卡可以再嘗試,所輸入的資訊也絕對正確,但就是過不了他們網站上信用卡驗證付款的步驟。心急也沒有用,過了幾天再試過也沒有辦法付款,這家公司的服務態度實在讓人不舒服,因此在短暫的調查網路上其他人的使用情況後決定將在上面其他還沒到期的網域名稱轉到 GoDaddy 去了。

轉換的過程也沒那麼順利,發現 WebDirectHosting.com 的轉換機制並不自動,還是透過 Email 詢問才人工把 Transfer Code 發送過來的 (不是完全的 Customer Self-Service)。原來那個待付款的網域平常就沒怎麼在使用,盤算著要放棄了。後來是過期之後有一個月的 Review 期 (這期間沒有付款成功就會被釋放出來讓別人註冊),我剛好在 Review 期再嘗試付款成功了,接下來也準備將它 Transfer 出去。

沒有讓使用者方便的付款,可能就會流失潛在的新客戶,因為購物衝動期會很容易失去。先前在其他網域註冊服務商也發生過付款問題,不過他們很快的發現自身的程式通訊問題也協助我在到期前完成了付款動作,WebDirectHosting.com 的服務則不到位,此狀況易導致現有客群的流失,其實他們可以很容易留下現有客源並將流程自動化躺著賺錢的,若沒有發生這樣的情況我應該會一直在上面 Renew 相同的網域名稱,只不過這已經是『如果』了。

Ubuntu 的企業形象 — 也許與你想的不同

SE-Skulls-1

Ubuntu 警告 電子前哨基金會的 Micah Lee 非法使用他們的商標,Micah Lee 在他的部落格上貼出了這一封信,原只是 Ubuntu Dash 中增加了搜尋功能可能導致隱私泄露,所以 Micah 建立了一個 Fix Ubuntu 的網站教導使用者如何手動移除這個搜索功能,沒想到 Ubuntu 會用這麼有損企業形象的方式來處理,真是打壞了我心中對 Ubuntu 的印象,這作法不僅違背了 Linux 的核心理念,也讓我這個資深使用者不太舒服,你們看完後怎麼想?


Update: [Mark Shuttleworth 道歉了]

摺紙版臨時用 CD Cover

這個簡單的摺紙技術真不錯,公司行號或工作室還可以依照這個製作一個有折線的 Template PDF,這樣就可以在成品上秀出美美的 LOGO 啦!雖然只是臨時用也可以很專業。加個厚紙板會不會好一點?

cd-cover

Reference Link:
http://favmy.com/2013/10/12/photos/1381567607/

只在星期一做備份

Time Machine

資訊人員都應該瞭解到備份的重要,我們經常在網路論壇上看到各種的災情,每每見到其他人的狀況才想到應該要買個大一點的硬碟並養成備份的好習慣。自從開始使用 Mac 之後使用了它內建的 Time Machine 功能,備份變得更簡單了,不過我用的是外接式的硬碟而不是 Apple 的時間膠囊,因此必須接上外接碟時才能備份無法實時進行備份,其實實時地備份不見得完全是好處,再加上價格與易移動的因素而選擇了使用外接碟方案。

我經常看到同事們在不同的時間進行資料的備份,有時候是在專案緊鑼密鼓進行中的時候,這樣容易會拖慢其他做正事的效率。我建議大家可以嘗試只在星期一做資料備份,每個星期一早晨開啓電腦接上外接硬碟後讓 Time Machine 自動運行,一個星期下來通常需要備份幾十 GB 的資料,然後在備份的同時可以做一些星期一早上通常會做的事,如回復信件、當週專案項目的時間規劃,而不要在電腦上做操硬碟、CPU 的工作。至於只在星期一做備份是因為大部份重要的程式碼通常都已經在版本控制系統上了,有良好習慣的團隊應該都會在一個功能完成的時候都已將程式碼簽入,因此我們進行的備份不用太過於頻繁,大資料的備份時間大概需要一個小時左右,在星期一早上處理文書工作的時間差不多就可以完成備份,時間的搭配剛剛好,而不會浪費處理正事的時間。

這是一個個人時間管理的觀念,因此這邊所指的備份也是針對個人資料,對於伺服器上的資料備份還是要以公司及法律面的政策為準。也許你處理文書工作的時間安排不一樣,你可以試著將備份時間與文書工作時間安排在一起,試試看這樣工作起來是不是更有效率。

不只是備份時間應該要依照需求規劃,許多資訊人員經常在做系統升級、硬碟重整、清除快取類不必要資料等等,其實這些都是造成工作時間碎片化的因素,如果可以好好規劃利用這些時間,就可以將能集中注意力的工作時間節省出來。

PS. 平常沒有備份計劃的朋友可以考慮看看這一篇:Frank 刪除備份檔後的憾事,另外,經常把備份用硬碟與工作機放在一起跟沒有備份是一樣的,整包被偷走的話就知道怎麼哭了。

羽毛球

Share from internet. 我覺得很有笑點… Enjoy~
羽球

好吧,WordPress 又更新了 (3.0.1)

在上次更新版本之後還沒有寫任何一篇新的 Post, 然後就發現又有了更新,據說是更新了 50 個以上的 Issue, 而且是 7/29 的事了,動作慢沒辦法,而且雖然不想一直更新,但是有新的版本 (Security Fix) 就要升級根本就是 IT 人的宿命。

這次順手更新了一下系統,然後關掉 VM 重啟,重啟之前把先前談到的 I/O Cache 功能關掉 (已經在 Windows 7 Host 實驗過,關掉效能不會差很多),看看能不能把上次不正常斷電 .VDI 會壞掉的問題給解決掉。

PS. 如果不是因為 Security Fix 我才不想每個版本都追著安裝最新版,這實在是 IT 人避免不掉的宿命,從 Windows OS 到 Linux OS, 從電腦軟體到電話上的軟體,更新實在是一個浪費生命又不可不為的事。

feSurf – 序號網頁瀏覽服務

有的時候我們會瀏覽到一些網頁,他的方式是使用序列號碼作為網址,像下面這個網址:

http://mySite.com/AA/[001-150]/

就表示 /AA/ 後頭使用 001 到 150 都是可用的網址 (這跟 Tulala Service 可用的方式不同,Tulala 直接是對應到檔案),在這種情況之下,以前在電腦上可能都是瀏覽完一頁,手動修改網址。後來在手機上瀏覽也碰到相同的問題時,就不好用手敲的方法了,因為在手機上面敲網址很不容易呀。所以就產生了做出 feSurf 的念頭,幫助瀏覽時可以很快的在序號網頁中切換,會寫程式的人通常都是由偷懶所得到的靈感呀。

目前 feSurf 只支援兩種簡單的算法,會視需要再增加算法功能,現在對我來說已經可以應付 80% 左右的序號網頁了。使用的時候先敲第一個網址,然後就可以用按上下頁按鈕的方式切換了。

本來想說這樣的功能應該給多一點人使用,使用這種功能最多的應該是 TaiwanKiss 裡的使用者吧 (笑~) 所以在上面貼了一篇,沒想到被當成廣告,兩天就被撤掉了,現在在我自己的 Blog 上貼這一篇,有需要的朋友請自便吧,歡迎推文推廣。

feSurf 的網址為 http://lab.fetag.net/feSurf/

類似這樣的功能可以有很多的用途,線上小說或是線上漫畫之類的,我也打算做出紀錄使用者輸入的網址,進行分類之後再加上其他的好用功能,如動態給址,或是依照分類動態給址之類的,不過這些功能都等到有時間的時候再做吧,任何功能應該能用就先推了,這才是 Time to market 的要旨呀。

Enjoy~

[WP] 語法標記 Plugins 換成 WP-Syntax

由於 iG:Syntax Hiliter 已經很久沒有更新了, 然後在這邊又有一些貼 Code 的需求, 所以找了一下今年八月還有更新的 WP-Syntax, 測試過速度還蠻快的, 接著把幾篇原來用 iG:Syntax Hiliter 的文章更新了一下, 改用 WP-Syntax 所使用的 PRE Tag, 試用一陣子看看有沒有問題吧。

Copyright © 2017. Powered by WordPress & Romangie Theme.