測試 wkhtmltoimage 的效果

在「FreeBSD 上使用 wkhtmltopdf 做網頁擷取」看到有人在 FreeBSD 上用 Linux emulator 跑 wkhtmltopdf 成功,那麼 Linux 上當然更沒問題啦...

同一個計畫裡有 wkhtmltoimage,可以直接輸出成 PNG 格式,不過輸出的 PNG 沒有壓縮過 (應該吧,下面這張測試的原始輸出是 ~10MB,處理後是 ~500KB),要用 pngcrush 處理後才會比較小。

不過 PIXNET 的網頁都會 segmentation fault 是怎樣 XD

Update:在「Segmentation fault while generating http://www.pixnet.net/」這邊回報後,trunk 版修正了。

wkhtmltoimage 輸出結果在這,點下去會出現原圖:

之前透過 Firefox 的方法的輸出結果,點下去會出現原圖:

可以看出來字體的部份有差... 不過處理的速度與方便度比 Firefox 好太多了。

在 Linux 上架設 Screenshot Service (2010 年了?)

在 2008 年的時候 xdite 寫過一篇「在 Linux 上架設 Screenshot Service」,不過現在是 2010 年了,不少當初有問題的地方都已經改善了,現在要架比之前方便不少...

測試的平台同樣是在 Linode (referral code 是 fdbacc96dbddafce9ba444dd678357416d0323d5) 上跑 Debian lenny (也就是 5.0 版),為了避免 Adobe Flash PlayerLinux amd64 上會出問題,我在 Linode 上用 32bits 版。

Linode 把預設的 Debian 裝完後,先把整個系統升級到 Debian squeeze 並且重開,然後先裝「locales」這個套件,再用 dpkg-reconfigure locales 把 en_US.UTF-8 以及你自己會用到的 locale 勾起來。

接著開始裝必要的套件:

  • flashplugin-nonfree
  • iceweasel
  • ttf-arphic-bkai00mp
  • ttf-arphic-bsmi00lp
  • ttf-arphic-gbsn00lp
  • ttf-arphic-gkai00mp
  • ttf-arphic-ukai
  • ttf-arphic-uming
  • ttf-wqy-zenhei
  • xvfb

Iceweasel 其實就是 Firefox,因為商標問題而在 Debian 上有不同的名字。在英文版維基百科的「Mozilla Corporation software rebranded by the Debian project」這篇文章裡把前因後果講得很清楚,這邊就不提了...

除了必要的套件外,接下來裝 TightVNC server,準備透過 VNC 設定 Iceweasel。設完後可以移除掉或是留下來,我自己是留下來 (反正檔案不大),有時候可能要進去 about:config 調整參數...

TightVNC server 用 tightvncserver :0 跑起來,然後遠端連進去把 Iceweasel 跑起來測試看看有沒有問題 (可以透過 PuTTY 的 tunnel 將傳輸過程加密),沒有問題的話就裝「torisugari: Command Line Print」這個套件,裝好後再把 Xvfb 跑起來,用這個指令抓圖:

DISPLAY=:2.0 iceweasel -print http://zh.wikipedia.org/ -printmode png -printfile ~/zh.wikipedia.org.png -printdelay 10

抓出來的 screenshot 就會像這樣:(點這裡看原大小圖片)

Flash 也沒問題:(點這裡看原大小圖片)

比起之前的方法,現在的方案有兩個好處:首先是 plugin 是照正規方法裝進去,而不是直接丟 xpi,可以避免遇到奇怪的靈異現象時懷疑是不是安裝時硬塞造成的。再來是 Iceweasel 會在抓完就 shutdown,所以在網路速度夠快的時候可以提前結束,而網路不夠快時也不用擔心抓到未完成圖...

當然剩下有很多細節要處理啦,不過那是另外一回事了...

Mozilla 官方的 Firefox 套件相容性回報程式

順便可以拿來取消版本檢查...

我桌機的 Firefox 雖然是跑 3.6 系列,但筆電上還是跑 Minefield。之前一直都是靠 Nightly Tester Tools 強制套件不要檢查版本,但在 4.0 beta 後一直沒更新,於是 Nightly Tester Tools 就失效了... XD

後來在 comment 的地方看到有人說 Mozilla 官方自己跳出來弄了一個「Add-on Compatibility Reporter」,一樣可以做到這件事情,除此之外還可以回報套件在新版上是否正常...

於是 Minefield 的套件就都跑起來了,測了一下,果然一堆套件在 4.0b3 上爛掉... XD

WordPress 3.1 將不考慮 PHP 4 與 MySQL 4

WordPress 宣佈從 3.1 版開始將不再支援 PHP 4 與 MySQL 4:「PHP 4 and MySQL 4 End of Life Announcement」。

PHP 4 與 MySQL 4 官方都已經停止支援很久了,WordPress 總算是想起來了?

另外,在 WordPress 3.2 版後 (預定在 2011 年的上半年發行),對 PHP 的最低需求會再提高到 5.2 版,這是因為目前使用非 5.2 以上的數量只有 ~11%,所以他們希望半年後可以再把需求更新...

HTTP Redirect Response Cache

之前在 debug 時為了 HTTP Redirect Response 的 cache 問題測過一些,發現結果很亂,後來找到一些 workaround 避開 redirect response 後就沒有再研究太多。今天在「Redirect caching deep dive」這篇看到在討論 HTTP Redirect Response 時的 cache 問題,作者把幾個常見的瀏覽器都測過一次作成表格...

可以看出來情況還蠻複雜的,雖然 RFC 有定義 cache 的時機,但沒有一家完全照 "SHOULD" 的規矩來 XD

不過既然有人提出來而且整理成表格了,之後應該會修正...

Dell 伺服器內管理軟體內含木馬...

Slashdot 上看到 Dell 所售出的伺服器中,主機板上內建的管理軟體有木馬:「Dell Ships Infected Motherboards」。

原文是在 Dell 的支援論壇上面,苦主提到他的 PowerEdge R410 被 Dell 通知要更換主機板,因為裡面的管理軟體包含木馬:「PowerEdge R410 replacement motherboard contains malware?!」。

這個厲害,繼續看會發生什麼事...

Python 2 與 Python 3 的相容性

前幾天 Python 2.7 正式釋出 (2010/07/03),預定是 Python 2 最後一個 major release,於是又有人再討論要怎麼寫出 Python 2 與 Python 3 都能夠跑的程式碼,以維持單一 codebase。

在「The real problem with Python 3 - no business case for conversion (was "I strongly dislike Python 3")」這篇提到了一些語法及模組技巧 (基本上就是用 Python 2 與 Python 3 都可以跑的方式寫),以及當無法避免寫兩次時要怎麼做。

Python 3.0 釋出到現在也一年半了 (2008/12/03),Python 3.1 也一年了 (2009/06/27),而 Python 3.2 alpha1 預定在 8/7 發布... 該準備把現有的 code 丟進 Python 3 測試看看了。

Amazon Web Services (AWS) S3 可以透過 AWS Management Console 管理了...

大約是兩個禮拜前的消息了。

不過因為用到 Flash,所以使用 Flashblock 的人要把 console.aws.amazon.com 這個 site 加到白名單內 (頁面上沒出現 Flashblock 提供的 active button)。另外因為 flash policy 用到 port 843,所以連外 port 843 必須是通的。官方的公告可以參考「AWS Management Console adds support for Amazon S3」這篇。

不過這東西問題還不少,跑一跑就讓我的 Firefox 當掉... 無論如何,畢竟是多了一種選擇,如果要透過網頁管理 S3 內的資料,不用再透過第三方的網站處理,而是改由本來就存取的到的 Amazon 來提供,會比較放心一點。

WebM 以及 VP8 將成為下一代影音標準

經過這半個月的發展,看起來 WebM 以及 VP8 會是下一代影音的新標準。

去年 Mozilla (Firefox) 及 Opera 因為 H.264 的軟體專利問題而不願意支援 H.264,所以大家都很注目比較可能沒有專利問題的 Theora。這是基於 On2 Technologies 在 2001 年所 open source 的 VP3 而發展出來的。也因此大家對於是否可以用 Theora 取代 H.264 一直很有疑問 (參考二月時寫的「Theora 與 H.264 的畫質差異」)。

首先是 Google 在 2009 年八月的時候買下 On2 Technologies (在 2010 年 2 月的時候完成收購),有不少人希望 Google 可以授權 On2 在 2008 年所發表的 VP8 給大家使用,FSF 甚至利用 YouTube 的影響力,並且主動提供 VP8 格式的影片,大力推廣 VP8:「Open letter to Google: free VP8, and use it on YouTube」。

上個月 Google I/O 2010 的時候,Google 公開 WebM Project,其中包括了 VP8 的使用權,並且提供免費的專利使用權。雖然有些人對於 VP8 還是覺得不夠好 (像是「The first in-depth technical analysis of VP8」這篇分析),但由於 Mozilla、Opera、Google 在當天都已經宣佈會支援 WebM,微軟也宣佈會在 IE9 內支援 WebM 檔案格式 (至於 VP8 codec 則是在系統內安裝),所以 WebM 很快就變成大家注目的焦點,而在 ffmpeg 的 mailing list 上也很快就有人把將 libvpx 整合到 ffmpeg 內。

接下來看看能不能更直接將 WebM 直接納入 HTML5 的 spec 內...

Amazon S3 的分級儲存以及 RDS 跨區 Replication

Amazon Web Services 上星期公佈了 S3 不同等級的服務:「Announcing Amazon S3 Reduced Redundancy Storage」。

先前 S3 的系統是設計成一年內有 99.999999999% (1-10-11) Durability,這是靠比較高的 replication 數量,以及將資料放在不同機房。而 RRS (Reduced Redundancy Storage) 則是放在單一機房內,replication 數量也比標準的 S3 少,所以成本會比較低,但資料的可靠度也會比較低,只有 99.99% (1-10-4)。

這個新的設計對於比較不重要的資料 (尤其是可以從原始資料再運算得到的,像是縮圖) 可以考慮丟到 RRS。在前 50TB 的部份是標準儲存 2/3 的價錢。

另外 RDS 的部份則是支援跨區 replication 了,可以藉由這種方式提昇一部分的服務可靠度:「Announcing Multi-AZ Deployments for Amazon RDS」。