0%

最近把 MacBook Pro 從 OS X 10.7 (aka. Lion) 升級成 OS X 10.8 (aka. Mountain Lion) 之後,大部分的軟體都還蠻無痛升級的,其中 PopClip 在升級之後就開始秀逗秀逗,在 Safari 裡面有時 Work 有時不 Work (就是不太靈敏-偶爾會出現彈出選項,偶爾又沒有),官方有一個解決方法是把原本的設定刪除掉讓她重新產生即可。步驟如下

閱讀全文 »

最近在把敝單位的 Web Server 從原本的 lighttpd 轉換成 nginx,當然除了複雜的 rewrite rule 要寫,還有就是想盡量榨出 nginx 的效能及所有功能,而 nginx 除了很多參數可以調整之外當然也有更多內建的功能有點類似現在的 All-in-One 小巧但是功能完整!

調整了很多參數之後,說實在的也不知道有什麼可以調整了,查一查網路發現:對呀! nginx 有 cache 的模組可以用阿,因為這次轉換的機器有 php 的部分,而且大部分是出圖跟利用 php 來做 javascript 模組的合併(就是所謂的 combo loader),這些幾乎都是做一次就不會在更改結果的,所以就查了一下 nginx 的 fastcgi cache 的設定:

http 的 section 加入

fastcgi_cache_path /dev/shm/cache/ levels=1:1 keys_zone=PHP:8m inactive=60m max_size=256m;

然後在 location ~ \.php$ 的 section 裡面加入

閱讀全文 »

在 nginx 中要啟用 gzip 非常簡單,只要在 http 的段落裡面加入

gzip  on;
gzip_http_version 1.0;
gzip_comp_level 9;
gzip_proxied any;
gzip_min_length 1400;
gzip_types text/css application/x-javascript text/javascript;
gzip_vary on;

但是加了之後,因為我們前端還有先過 squid,結果發現怎麼有的 css 檔就是沒有被 gzip,但是有些 js 檔卻又有,在網路查到原來是還要在 squid.conf 加入

cache_vary on
broken_vary_encoding allow all

這是因為啟用 gzip 後,HTTP Header 也會加入 Vary:Accept-Encoding,加了上面的設定才可以讓 squid 保存 gzip 的內容,不會很自作聰明的解壓縮在傳給 client 端,不過網路另有一說是因為 squid 不是完整的支援 HTTP1.1 的 protocol,所以在面對 gzip HTTP1.0 跟 HTTP1.1 的版本的時候就會有問題,不過我有在 nginx 加了 gzip_http_version 1.0 了還是一樣有問題,加了那兩行才 ok。

閱讀全文 »

前幾天公司同事在問我們的機器出去的 public ip 是多少,突然發現原來大家好像都不知道有一個方便的網站可以查,對於會 Unix 的來說網址是在好記不過了,就是跟 Unix 看 ip 的 ifconfig 同樣的名稱 http://ifconfig.me

ifconfig.me 可以取得你現在 ip 資訊的網站,不過他跟一般顯示 ip 的網站不同的是他功能比較強!

除了會顯示一些基本的資訊

他還支援了不同的網址只顯示需要的部分,比方說我們可以在 Terminal 打 curl ifconfig.me/ip 就會得到 61.219.37.20 ,又或者 curl ifconfig.me/port 就可以知道本地端出去的 port 51081,如果有經過 Proxy 的話 curl ifconfig.me/forwarded 還會顯示 61.219.66.125, 172.30.4.166, 61.219.37.20

甚至更有趣的是他也支援 XML / json ,網址分別是 http://ifconfig.me/all.xmlhttp://ifconfig.me/all.json 詳細的內容可以看 [ifconfig.me](http://ifconfig.me %}

Python Fabirc 是一個類似 Ruby capistrano 的自動化部署跟系統管理工具,安裝指令是 pip install -U fabric 或者 easy_install fabric 都可以。fabric 的使用也非常的簡單,只要寫好一個檔名是 fabfile.py 的檔案,在同一個資料夾底下打 fab --list 就可以看到有哪些參數可以下(就是 fabfile.py 裡面的 function)。

以下是一個簡單的範例 template

閱讀全文 »

vGhetto 是一個由社群主導的專案,主要的目的當然是簡化管理 VMware 的工作,不用使用最原始的 vmrun 這個指令或者 Perl SDK 做管理,整個專案放在 SourceForge,到 專案頁面 下載,抓下來的目錄長這樣 (或者直接用 svn co https://vghetto.svn.sourceforge.net/svnroot/vghetto vghetto 也可以)

.
./INSTALL
./TODO
./bitmaps/
./build/
./demo/
./installers/
./other/
./scripts/
./vGhetto.pl*
./wbin/

其中的 scripts 資料夾就是放置管理用 script 的地方,裡面是一堆 .pl 的 perl 檔案

閱讀全文 »

部門最近有架 Mail Server 的需求,要架 Mail Server 首先要搞定不讓自己寄出去的信被當作 Spam,參考 Google 的 電子郵件驗證 中說的,要可以被 驗證和識別,通常就是 Domain 要發佈 SPF 跟簽署 DKIM(DomainKeys Identified Mail) 或最古老的 DomainKeys,不過有了 DKIM 後原本單純 DomainKeys 就被廢棄了(當然目前還是可以用的)。我們單位用的 mail server 是 Postfix 而 DNS 則是 tinydns (djbdns %}

設定 SPF

SPF 只是簡單的 DNS TXT 發佈而已,可以利用 easySPF 製作。於是在 tinydns 的設定檔加入下列資訊:

'foo.bar:v=spf1 ip4\07211.22.33.44/32 ~all:600

這裡用 foo.bar 當作 domain,而 11.22.33.44 則是 Server 寄信出來的 public ip,這樣子就完成啦~

我們用 dig TXT foo.bar @8.8.8.8 +tcp 可以觀察到

;; ANSWER SECTION:
foo.bar.        600     IN    TXT    "v=spf1 ip4:11.22.33.44/32 ~all"

設定 DKIM

閱讀全文 »

這是最近管發生的怪現象,就是公司某個單位一直跟我們說他們的 Server 要連我們的 Server,結果我們這邊時好時壞,… 什麼?! 我們這邊時好時壞? 從沒有聽過用戶說我們的 Server 連不上阿,於是就跟他們一起 Debug,開了 tcpdump 來看,發現我們這邊的確有時候收到 SYN 結果就不回 SYN/ACK kernel 直接 drop 封包 XD 這是什麼鬼,kernel 也太不聽話了,不過我們這邊 kernel 沒有打開 iptables 也沒有什麼 drop 封包的規則,於是就 Google 了一下,原來有人跟我們遇到一樣的狀況 Why would a server not send a SYN/ACK packet in response to a SYN packet

簡單的來說跟我們一模一樣,隨機的不回 SYN ,根據那篇文章說的,解法有下列兩種:

  • 關掉 client 的 tcp window scaling

不過這個顯然不是什麼好的方法,因為我們不能限制 client 阿

  • 關掉 server 的 tcp window scaling 跟 tcp timestamps

看起來是因為 client 送的 tcp window size 不被 server 接受所以就 drop 掉,可是為什麼是 SYN 就被 drop 實在是不可得知。不過我們的 Server 後來加了以下設定後的確就好了:

net.ipv4.tcp_tw_reuse = 0
net.ipv4.tcp_tw_recycle = 0
net.ipv4.tcp_window_scaling = 0
net.ipv4.tcp_timestamps = 0
net.ipv4.tcp_sack = 0

參考資料:

When I met Octopress

Octopress 是一個之前(應該是兩年前吧 XD)很流行的 Static Blog Generators 的產物,Based的語言是 Ruby,底層依賴 Jekyll,由於 Jekyll 支援很多其他有的沒的,像是 Markdown Engine 支援很多種(包含了 Maruku 或者 Kramdown ),另外也有 Syntax Highlight (可以使用 Pygment 或者 Coderay),加上 Octopress 作者自己的延伸讓 Octopress 常見的功能(甚至是不會用到的功能XD)都有提供了。

之前公司的學弟就使用 Markdown 在寫工作日誌,其實滿不明所以然

閱讀全文 »

原本都是使用 TextMate 後來實在受不了不能好好支援 cjk 的輸入。

加上 TextMate 已經過了好久都沒有更新,原本說好在 Mac OS X 10.5 出來的時候就要改用 CoreText 改寫,結果也跳票了。不然實在是離不開 TextMate 的 snippet 。

不過雖然 TextMate 在前一陣子推出 TextMate 2 beta 但是很多功能還是沒有完整,而且不時還會當機,所以前陣子原本就想說找個替代品,一路搜尋下來就發現了 Sublime Text 2 (beta)。

可以說 TextMate 該有的他都有,而且支援了更多的功能,加上跨 Windows, Linux, OS X 所以可以預料到未來應該會有更多人力加入寫 Sublime Text 2 packages 的行列。

閱讀全文 »