蟑螂窩

優雅地重開 Apache

| Comments

Apache 在更動設定檔以後,如果要套用新設定,一般都會下 restart 來重新啟動 Web server:

1
$ /etc/init.d/httpd restart

這個指令會立即關掉所有的子進程,然後再重新讀取設定。但是在 production 伺服器,這樣可能會造成使用者的 request 被中斷。

比較少人知道還有一個 graceful 的指令:

1
$ /etc/init.d/httpd graceful

發出這個指令以後,每個子進程都會處理完目前的 request 後,再套用新的設定。在 production 伺服器更改設定,使用 graceful 才能避免造成使用者的困擾。

參考資料:Apache Stopping and Restarting

VirtualBox Apache Sendfile

| Comments

之前在 VirtualBox 的 Shared Folder 進行開發,在寫 PHP 的時候都沒問題, 但是只要碰到靜態檔案,例如 Js 檔,明明修改了,看到的還是舊的版本。

這時候只要重開 Apache 就好了,但是每次這樣重開也不是辦法,於是 Google 一下是哪裡出了問題。 發現是 Apache 的 sendfile 在做怪,這是一個利用 Kernel 的 sendfile 來加速靜態檔案發送的功能。

但是 sendfile 在目錄是網路掛載的情況下會出問題,所以在開發環境,把這個功能關掉,才不會出現檔案沒更新的錯誤。

打開 httpd.conf,找到 EnableSendfile ,並設成 off:

httpd.conf
1
2
3
4
5
6
7
8
#
# EnableSendfile: Control whether the sendfile kernel support is
# used to deliver files (assuming that the OS supports it).
# The default is on; turn this off if you serve from NFS-mounted
# filesystems. Please see
# http://httpd.apache.org/docs/2.2/mod/core.html#enablesendfile
#
EnableSendfile off

更多有關 Apache Sendfile 可以參考:Apache Documentation

Bower JavaScript 套件管理器

| Comments

Bower

Bower Official Site : http://twitter.github.com/bower/

什麼是 Bower ?

Bower 是一個 JavaScript Package Manager,類似 node.js 的 npm 、 PHP 的 composer。

在開發 Web 前端時,常常需要很多套件來輔助開發,例如需要 jQuery、Backbone、Bootstrap 和 Require.js 等等, 在沒有套件管理的情況下,通常有幾種方式:

  • 從舊專案複製,但常常這樣做的話,會一直使用舊版本的 Library,如果新版的有修正一些 Bug,常常無法 follow 到。
  • 到官網抓,不過一個專案需要很多 Library,一個一個找連結會花非常多時間。
  • 使用 Git,同上,如果沒有 Repository 位置的話,一樣很花時間。

不管用上面哪種方法,如果想要更新套件,一樣的事情又得重做一次。如果需要特定版本的套件,又要花時間找。

而 Bower 就是用來解決這個問題的,只要列好所需的 Library 就可以一個指令全部抓回來,更新的時候也一樣快速。

使用 Vagrant 管理虛擬機器

| Comments

Vagrant

Vagrant Official Site : http://vagrantup.com/

什麼是 Vagrant ?

以往在建立 VM 的時候,就算 Guest Machine 都已經安裝好了,在部屬 Share Folder 、 Port Forwarding 時也會花非常多的時間,如果是在一個團隊裡,要求大家開發的環境都一樣,而 Server 內要有 Apache 2.2 、 PHP 5.4 、 Redis 和 MongoDB,設定檔也都要一樣,光想到這些就令人頭痛。

而 Vagrant 就是用來解決這個問題的,它能將你配置好的 VM 封裝起來,以後,如果其他開發者進來, 只要一個指令,就可以把開發環境建立起來,開發環境一起來,馬上就能進入狀況,可以節省非常多的時間成本!

投向 Mac 的擁抱 QQ

| Comments

apple

自己向來是 Windows 的忠實使用者,即便我其實不太喜歡微軟的東西,但是在 Windows 我可以發揮最大的開發速度。

然而,最近找工作,跑了很多家公司面試,發現,千篇一律的都是 mac!!實機操作的時候也是 mac,導致環境不熟悉, 操作的速度非常緩慢,本來一個小時內可以搞定的題目,居然花了兩個小時以上。 甚至有公司還規定,他們公司只用 mac,禁止 Windows..XDD

一年前的小作品 - XP 踩地雷

| Comments

上面這張,不是圖片XD,可以直接玩!

這是一年前的作品,因為那時候剛當完兵,腦袋被重灌,只好寫一些東西來回復記憶。而當時我最想學的東西是 JavaScript 和 HTML5 ,所以就從這邊開始下手! 使用的技術是 HTML5 的 Canvas,用 JavaScript 來控制各種行為和畫面的呈現。

本來的目標是做得跟原本的 XP版 一模一樣,後來的成果差了左右鍵同時按,和一些自訂功能,大概花了兩天的時間完成。

因為是恢復記憶用的作品,所以原始碼非常可怕,如果想要學習的千萬不要XD。

下面這張是真的踩地雷,可以看到實際遊戲的部分,跟做出來的成品,一個 Pixel 都不差

winmine

DIY 空中花園 1.0

| Comments

garden_1.jpg

很久以前就很想把陽台改造成空中花園,不太喜歡一盆一盆的盆栽,感覺很雜亂的感覺。 剛好最近沒工作在家太無聊,於是就開始了空中花園 DIY,以前完全沒有經驗,完全都靠網路上找資料、做功課。

使用 APC 加速你的 PHP!

| Comments

apc_plus_php

PHP 是 Script 語言,在程式被執行的時候才會開始編譯,所以和其他預先編譯好的語言比起來速度會比較慢。 而如果 code 沒有變更,每次的編譯其實是多餘的,如果能將重複編譯的時間和資源省下來,就可以讓 PHP 加速不少。

市面上有很多 PHP 加速的外掛,可以用來達成這個目的,APC 就是其中一個。APC 會將編譯的結果暫存起來,省去每次需要重新編譯的時間。

新作品 Lovey 完成開發上市!

| Comments

Lovey

http://lovey.tw/

Lovey 是我跟同事千千一起合作完成的專案。是一個 Pinterest Like 網站,以女性服飾和配件為主要經營方向。

在做這個網站之前,也做了一個類似 Pinterest 的網站,但是因為圖片太雜,網站沒有一個主軸,使得客源非常不穩定。 做足功課以後,發現不少女生停留在網拍和 PTT e-shopping 的時間非常得長!於是考慮到在女性導購的方面,應該會有很多商機, 於是結合了女性導購和 Pinterest 的網站就誕生了!

恐怖的 Nesting if Statements

| Comments

在上一家公司裡,公司自行開發了一套 Framework,工程師都必須 Follow 這套 Framework 和設計標準, 而這套 Framework 是由其中一個有十年經驗的工程師所開發。他跟我說這套程式碼的開發流程後,給了我一個 Sample Code, 一看之下,讓我馬上決定離開這家公司。

先不論這個 Framework 好不好用,光看裡面的 Coding Style,我就覺得無法從這家公司學到高深的技術了。 在那個 Sample Code 中,我看到最噁心的東西就是,不斷的 if else if else,少則三四層,多則五六層。 他跟我說程式碼可以維護是很重要的,結果我看到他的寫的東西卻是這樣…這種東西可以維護嗎(怒)?