Archive for the ‘網路實務’ Category
[筆記] SSL 憑證購買記
[筆記] 在 Ruby on Rails 裡做簡單的 IP 過濾
目的:你應該不希望還在 Development 的時候被人家看光光。
做法如下,加在 app/controllers/application_controller.rb
class ApplicationController < ActionController::Base
# 指定要在 development 才過濾 IP
before_filter :filter_development_ip if ENV["RAILS_ENV"] =~ /development/
# ... 中間可能有其他程式碼
private
# 以下的 method 要加在 private 後面
def filter_development_ip
if request.remote_ip =~ /^127\.0\.0\.1$/
true # allow access
else
head(403) # send 403 Forbidden header
end
end
end
IP 的部份是以 Regular Expression 配對來檢驗的,通過 Regular Expression 的配對,表示合法 IP。以上範例是限定只有 127.0.0.1 這個 IP 可以連線。
這項設定適用於 mod_rails 與 mongrel_rails。
當然你可以設防火牆。
參考:
[攻略] Ruby on Rails 與 SSL (https)
問題:該如何在 Ruby on Rails 導入 SSL (https) 的支援呢
以下分成 Mac OS X 與 Ubuntu Linux 的說明。
另外因為 mod_rails (Passenger) 在設定 SSL 方面格外簡單,因此假設你已經安裝了 mod_rails。安裝方式請參考官方網站。
Mac OS X 請額外安裝這支小程式,讓 mod_rails 的設定更為方便。
注意事項:全世界都可以連到你的 Rails Application,即使它是 development !! 建議在程式裡使用 IP 過濾。
—
[筆記] IPv4 的 unsigned int 表記法
- telnet://2356194315
- telnet://140.112.172.11
- telnet://ptt.cc
其實這也不是什麼新梗啦,就只是把 IPv4 換成 Unsigned Integer 的表示法而已。
只是我用 Yahoo! Pipes 做了兩個轉換器(互轉,IPv4 → Unsigned Int 以及 反過來),所以演算法就請在各別的 pipe 編輯原始檔就可以看到囉。(文末有 C Code)
雖然不是什麼新梗,但還是記一下它的原理好了。
—
如你所知道的,IPv4 是由四組 0 – 255 的數字組成的,表記如 140.112.172.11 這種格式。但這種表記法是為了讓人類易於記憶,真正在電腦裡面是表示成二進位:
| IPv4 | 140 | 112 | 172 | 11 |
|---|---|---|---|---|
| ↓ | ↓ | ↓ | ↓ | |
| 二進位 | 10001100 | 01110000 | 10101100 | 00001011 |
| 接成一條 | 10001100011100001010110000001011 | |||
| 轉成十進 | 2356194315 | |||
原理就這樣,所以 IPv4 可以寫成 unsigned int 表記法。至於 Pipes 裡面用到了幾個偷懶的方法,是從 2 進位 ←→ 10 進位中運用的「位權」概念而來的。
—
沒 code 沒真相,附如下:
[亂寫] Windows Live ID Authentication + Ruby on Rails
最近手邊有兩個 Rails 程式在寫,寫好玩的。其中一個用了 Yahoo! BBAuth ,另一個想用 Windows Live ID Auth。
前者是因為看到 KeyTalks.com 竟然有 Yahoo! ID 登入的功能,所以才開始研究官方的 API ,想說其實不失為取代 OpenID 的另一種選擇。上個星期寫出來了,不過我是直接拿別人寫好的 Yahoo! BBAuth Wrapper,經修改之後放入 Rails Application,同時 XDite 長輩也替我修正了我自己寫的 sample,做了一份含 Sample Code 的教學(感謝 XDite 前輩的指導)。
不過另一個 Rails Application 因為主要的使用者群是大學生(meaning: 幾乎人人都有 MSN 帳號),又因為 Yahoo! BBAuth 有一個很奇怪的點:每次登入都要問同意或不同意該網站存取;OpenID 只會問第一次,Yahoo! BBAuth 每次問,使用者大概會覺得很煩吧。所以才想試試看 Windows Live ID Auth。
可惜微軟官方提供的 Windows Live ID Auth Sample Code for Ruby 很醜,是用 CGI 硬刻出來的。雖然也提供了其他語言的 Sample Code (Perl, PHP, C#, ASP.net etc.),但最容易拿起來 Run 的大概還是 PHP 版本的吧 =..=
好在官方的 SDK Document 寫得很詳細,又現在也有之前改 Yahoo! BBAuth for Ruby on Rails 的經驗,對這種第三方 Web Authentication 也有了一點概念,所以乾脆自己試試看。
[鯖] 用 Apache + mod_proxy + Virtual Host + Mongrel 跑 Ruby on Rails
標題好長 XD
總之是最近開始玩 Ruby on Rails,礙於網路環境,必須在 80 Port 上 (HTTP 的慣用 Port) 同時跑 Apache (為了 PHP) 和 Rails,然而 Rails 基本上是自己有 (HTTP) Server,例如 WEBrick 或 Mongrel,也就是一定得要綁一個 port 的 (預設是 3000)。因此,最近兩天為了研究出怎麼透過 Apache 來做連線轉移(?),搞得七暈八素 XD
一開始是用 Apache + FastCGI,但怎麼搞就是搞不定,而且會開啟一大串的 ruby18 執行緒,把系統資源吃光= =||。後來傑洛說他是用 Apache 的 mod_proxy + Mongrel 實做的,剛剛找到這篇文章,歷經一番寒徹骨後總算是搞定了,寫點筆記吧 XD (其實這篇筆記跟原文大同小異,設定檔也是抄的居多,算是自己的筆記吧)
以下的環境是 FreeBSD 6.1,原本就有裝 Apache 2.2、PHP 5、Ruby、Rails 等套件,FreeBSD 可以參考這篇文章建置 Ruby on Rails 環境 (fcgi 我沒裝)。另外,IP 位址和 metro.yorkxin.org 都是亂寫的 XD
[筆記] Mac OS X 端末大挑戰 (誤): 第 2 話 + Mac OS X 自動連接網路上的芳鄰!
[鯖落] 昨午夜 HiNet DNS 死光光
昨天晚上…應該說今天午夜的事。HiNet 兩台 DNS 伺服器 (168.95.1.1, 168.95.192.1) 都死掉,PTT Hate 板上一片哀鴻…。有鄉民打電話去問 HiNet,證實是『北部機房出事了,得要早上才會好』。那是午夜 00:30 左右的事。
我突然想起,兩年前 Hate 板也因為同樣的事爆炸過,不過那次是小事,只是因為 HiNet 的 DNS 沒更新 google.com 的正解,所有 Google 服務都連不上,並非如這次的全面性 DNS Server down。我記得那次有鄉民在 Hate 板上提供某幾所大學的公開 DNS ,換上之後就可以用了,我則是特別整理成一篇文章。原文在我的無名舊網誌。
[觀察] 交叉查榜: 從統計看使用者行為
話說我的交叉查榜也上線超過 1 個月了,這期間經歷了最辛苦的丟榜單、最刺激的放榜、最心機的功能上線(?),到現在的告一段落,流量及使用者趨勢都在我透過 Google Analytics 所得的統計資料中一一呈現,也發現了一些… 很有趣的事情 xdRZ。
其實我很想把統計資料直接開放,無奈 Google Analytics 只限管理員和開放少數人士能閱讀網站的統計,不然的話,我還比較想要把整個統計資料放出來。
以下是我的觀察,跟大家分享 xdRZ
—
[好爽] Google Apps for My Domain!
一直很哈 Google Apps for Your Domain (中譯為『 Google 應用服務網站版』)。今天終於弄到手了!
故事是這樣的:三個小時前,在 GMail 的右上角發現又有新功能了,打開來一看,原來是現在可以用 POP3 收外部信箱啊(大好!),可以把外部信件吸到 GMail,再改些設定甚至可以用該 E-MAIL Address 寄信給其他人。但其實我最想收的是 Yahoo! Mail 啊,無奈我的 Yahoo! Mail 是免費版的,收不得 (用 Thunderbird 就行了)。目前 GMail 的 POP3 收外部信功能只有英文版 GMail 才有。
