WebSnap – 在 ruby 程式中製作網頁 screenshot

, , , at June 27th, 2010 by 小影

今天發現一個有趣的工具:wkhtmltopdf。它利用 QT4 的 WebKit widget 去把網頁轉換成 PDF 。接著Jared Pace 為它寫了一個 ruby 的 wrapper - PDFKit ,使用它就可以在 ruby 下把網頁轉成 PDF。 wkhtmltopdf 專案下還有另一個產品 -- wkhtmltoimage ,當然它的功能就是把網站轉為圖片檔。我就想如果可以跟 PDFKit 一樣在 Ruby 下應用就好了!於是就照著 PDFKit 做了 WebSnap 。 安裝 安裝 wkhtmltoimage : 在 Linux 下不用安裝,gem 已內置了一個 static 的 i386 build 。在 Mac 或 Windows 下請自行到它們網站研究怎樣 build (花了兩小時還未能 build 好 ...

embed_html – 制作可獨立使用的 HTML

, , , , at June 26th, 2010 by 小影

有天想把有圖有 Stylesheet 有程式的 HTML 封裝到程式中。當然了 HTML 只是一個文字檔案,要加進程式是很簡單。但要同時把所有有關的圖片檔都掛上在管理上有點麻煩 -- 通常解決方法有三: 先把所有東西壓縮,在需要顯示前解壓到適當地方再讀取 把所有連結的圖片、Javascript 和 CSS 都轉用 Absolute Address,或在 HTML 檔中用 base 標記,讓程式懂得在顯示時即時在網路讀取 用 Data URI Scheme 的方法直接用 BASE64 在連結裡封裝附件內容 第一點的難處是它假設有文件系統,在手機上有時這十分困難、麻煩、或者不穩定。 第二點的難處是它假設有網路,然而有些人的手機是沒有網路的,就算有,每次顯示文件時也要讀取網路不是十分好的做法。 第三點是個解決方法,很多公司的電郵通訊早已用這方法直接把圖片加進電郵當中,這樣用戶就不用在開電郵時看見一個個大交叉了。當然要這樣做就要把圖片和附件用 BASE64 編碼加在 HTML 中 -- 我們當然不會用手做這種笨工作 -- 有這樣的工具嗎? 一時之間找不到,於是就動手把它寫出來了。 embed_html 是一個 ruby gems ,首先假設你已安裝 ruby 和 rubygems,那它的安裝很簡單:gem install embed_html 在 Mac/Linux,使用方法如下: eurl <input-url> <output-file> 例如想下載 wikipedia 首頁: ...

On blocks in new Foundations

, , at June 20th, 2010 by 小影

New iOS4 supports blocks, but the syntax ... Hmm... can we just make it simpler like ruby? found = myArray.find { |x| x == "D" }

試驗在 Heroku 中使用 Amazon SimpleDB

, , , , , at September 13th, 2009 by 小影

最近幾個 project 也使用 Heroku,對它的方便和效能也很滿意。只是它的免費帳戶只有 5M 的容量,它的收費帳戶分別為:$15 (美元,下同) 50M ,$50 500M,$200 500G (!),$1600 2T。對於那些沒賺錢又超過 5M 的計劃,這樣的費用也太高了。 看到 Amazon SimpleDB 推出了免費 Tier (每月首 1 G 的 data transfer 和 storage 也免費,之後的收費為 $0.1/G 傳送, $0.25/G 儲存),就想到將 Database 轉到 Amazon 上使用了。 在 Ruby 可以用 gem aws_sdb 去存取 SimpleDB ,也可以自行使用 RestClient 或 Typhoeus 存取 Restful API 。但對於現有使用 ...

Pushr with Twitter Notification

, , , at July 10th, 2009 by 小影

Today morning i discussed using Pushr to send notification in applications. While sending email or growl is cool, how about sending twitter notifications? First add the twitter account @pushrhk. Then create your node (replace "tweet-siuying" with any secret name you like): The message received: Of course if you can send POST to Pushr, ...