感謝東門學長。
Stellarium是一個星空軟體,可以用來看星星、星座、行星,能依照全球的位置順時虛擬觀測。
感謝東門學長。
Stellarium是一個星空軟體,可以用來看星星、星座、行星,能依照全球的位置順時虛擬觀測。
COREBlog 支援 MetaWeblog 協定,Flock 偵測出來,於是我來從 flock 貼個一篇。說實話,真用不慣專門的 Blog Editor,沒辦法寫 rst。
Flock on Gnome 2.10:
目前 Flock 版本為 0.5pre,所以我預期會像我寫的程式一樣來一個 segmentation fault,不過沒有 :) 啊,可以放心使用。
因為新架的 Plone 會濾掉 object, meta, embed 等一大堆的 tags,所以我找了找資料。
CMFDefault 1.5 以上的版本預設關掉了一些 tags,因此網頁在呈現的時候,這些 tags 就出不來。到 $PRODUCT_ROOT/CMFDefault/utils.py,對 VALID_TAGS 和 NASTY_TAGS 這兩個字典的內容進行調整。
我把 NASTY_TAGS 清成空的字典,再把 flash 會用到的 object, embed 與 param 加進 VALID_TAGS。活跳跳的 flash 恢復。
喔喔,不妙了 :)
柴田先生似乎準備提昇 COREBlog 的 major version,製作一個在 Plone 2.1.1 + Zope 2.8 環境裡執行的 Blog 系統。
文章裡沒有提到「要求」Plone 2.1.1,不過我看不懂日文,很害怕偉大的柴田先生把純 Zope 的支援拔掉。COREBlog 自從 1.11 版出現 plonified skin 之後對 Plone 愈來愈友善,好棒;但完全 "Plonified" 的話就讓我苦惱啦。Plone 慢哪,為了 blog 裝 Plone?噢,不。
應該是我多慮了,再看一遍 announcement,好像沒有相關的「ない」和「ません」。
還算不錯,但比起生日當月優惠的話 (第二道主餐免費,週末可用),就不是那麼吸引人了。這個不怎麼吸引人的 coupon 內容是:
25% DISCOUNT ON ALL FOOD ITEMS! 所有食物品項75折 (Available from Mondays to Thursdays / 限星期一至星期四) From now till 30 November, visit Tony Roma's for an irresistible offer that should never be missed! Simply print and present our e-voucher to enjoy the 25% Discount! 即日起至11月30日止,到Tony Roma's 用餐千萬別忘記這誘人的優惠! 只要列印並出示本電子優惠券則可享有食物品項75折優惠!
Fat food.
為何您還在使用 Microsoft Office?。因為別人也在用。
我已經很久沒有用 Office 了,至少很久沒有用 Work 和 Excel。今天接到一通電話,催我趕快把對方要求的表格填一填寄回去,他已經等了五天了。這五天來我一直沒有動作的原因是:給我兩個 .doc 檔,我懶得回 Windows 去開呀。
Debian 愈用是愈好用,所以我非常樂見,甚至渴望藉由開放文件格式的發展,進一步促成 Unix-like 系統的廣泛應用。我愛 bash、我愛 pipe、我愛 X11 forwarding、我愛 Python;我希望能儘快敉平 Unix-like 系統與 Windows 之間的鴻溝,讓我寫的 .bash.opt 能在我的每一台電腦裡設定環境。
當然這只不過是身為科技人員小小的一廂情願罷了。
MS Office 深植於社會上下各界之中,形成了一般強大的互通性壓力。尤其,對一般人來說只是一兩封信件無法開啟的問題,到了大型組織之中就會變成攸關運作的大事;想改變整個應用環節之中的任何一個軟體都需要深思而後行。
對公營機構來說,除了一般組織會遇到的問題之外,還有複雜的保守心態作祟。在這些機構裡採用任何一種關乎組織運作的資訊技術都是不容易的事情;玩玩可以,實際運用再說。主管多半寧可外包給廠商執行,也不想因為一時的爽快讓自已和手下陷入層出不窮的規定地獄;新技術、新模式會引來的公文往返和文書作業,真是讓人想到就怕。封閉文件格式所產生的文件持續性的風險,很難認真地被當作評估的重點。
這種情況不太能歸咎於任一單位或主管,而是一種結構上的問題;追求組織穩定一向是公家單位經營的主要目標 (雖然不會列在願景裡面),效率不太重要。因此「若有一天 Microsoft 決定放棄支援那個版本的 Word,那麼那些重要資料要嘛全部重作,要嘛就得全數報廢。」的確很缺乏效率,會讓納稅人覺得很生氣。啊,不過現實可能就是這樣。無奈。
「這次麻省事件,就像在山洞裡轉了個彎,讓我們這些長期談論資訊人權等等問題的人,看到隧道口的微弱光線,對於資訊人權受到重視這一天的到來,更加有信心。」。雖然僅僅依奉「公開散佈 .doc 檔是不道德的行為」此一原則並不夠,但我們要對得起自己的良心,然後才能尋求進一步的發展。
至少不應該讓 .doc 愈變愈多 :) 不然真是沒得混了。
不查則已,一查驚人。
PEP 333 點出了這個問題,進而定義 WSGI 規範,希望 web application framework 和 web server 之間能有一套共同運作的準則,允許同一套 framework 在大多數的 web server 上運作。
整理這份資料的起因是對於 Twisted 的好奇。Twisted 是一個 Python-written 的 event-driven networking framework,twisted.web 是其中的 web server,可以被 web application framework 使用。nevow 是採用 twisted.web 的 templating system。
nevow 有趣的地方在於 Stan,Stan 讓使用者以這種方法來產生 XML 資料:
import random from nevow import rend, tags class Greeter(rend.Page): def greet(self, context, data): return random.choice(["Hello", "Greetings", "Hi"]), " ", data docFactory = loaders.stan( tags.html[ tags.head[ tags.title[ "Greetings!" ]], tags.body[ tags.h1(style="font-size: large")[ "Now I will greet you:" ], greet ] ])
twisted 真正吸引人的地方是能以非同步的方式,讓程式同時擁有各種網路通訊的能力,並且不限於 IP 網路。如果我要寫一個能開啟 TCP/IP 通訊介面的程式,twisted 是非常好的選擇。
Quixote 則是一個完整的 web application framework,forecastwatch.com 是用 Quixote 開發的。
PythonPaste 是另一個 web application framework,還在開發中。看來它對 server management 和 application framework 作了一些結合。
TurboGears,這個很紅,因為 slashdot 上有人拿它來和 ROR 相提並論 (然而在 Python 裡有 Zope, mod_python,程式庫又多得不得了,想不透在人氣上怎麼是 Python 反過來在追 ROR)。它除了有話題性之外,也是一個很有趣的 "MegaFramework",由 CherryPy: 主要的 framework, SQLObject: 物件化 SQL 資料庫存取程式庫, Kid: 模板語言, MochiKit: JavaScript 程式庫等要項所組成。
TurboGears 雖然仍在 alpha,但 CherryPy 則是已經活了三年的計畫,整套 megaframework 完整且強大,相當地吸引人。
昨天還玩了玩 snakelets。這套 application server 比較沒有意思,但在上面有 frog (blog system) 可以用,算是特色。然而我用了一下最新版,不知道是否時區設定不同,syndication 頁面竟然跑出 traceback; COREBlog 究竟還是成熟得多。
差太多了。
嚴格說來是 Plone 2.1 非常不一樣。從 CMF content type 改成 AT content type,許多內容型態的預設行為都與前不同。WYSIWYG 編輯器從 epoz 改成 kupu,犬太郎說是精進了不少;我不知道,我喜歡 reStructuredText 和 VIM。
Plone Desktop (Enfold Desktop) 2.1 運作得很好,一如預料;nautilus 用 dav 連起來會卡卡的,但 konqueror 很順,Gnome 得再加加油。navTree portlet 現在有了很多可調整的選項,非常棒,能夠很有彈性地控制導覽 portlet 的呈現。
然而,從 CMF content type 到 AT content type 的轉換打破了我一些習慣,還得研究解決的辦法。從舊的 2.0.5 匯出來的 zexp 也無法匯回 2.1.1,唯一想到的解法是 dav out, dav in;難看而且需要手動微調。不過,是的,我明白這很正常,我只是不爽。
軟體昇級真的很痛苦,而當可用的時間愈來愈少,這種痛苦也愈見明顯。
軟體昇級雖然痛,但若什麼也沒學到就更難過了。
不記下來我不甘願。
如果用 Listen ip:port 的格式指定 apache2 監聽的 IP,那麼就不能用 <VirtualHost *:80> 這種寫法來指定 name-based virtual host,而要改成 <VirtualHost ip:80>;同樣地,NameVirtualHost 後面也不能只寫 *:80 或 *,得改成 NameVirtualHost ip:port。
很久以前就想裝裝看 ZEO 了,這次總算找到一個機會。實際使用 ZEO 之後的 ab 測試數據還是只有三個 conn/sec 左右,但,的確比較酷。
plone.org 有一篇很好的介紹。照著裝好了之後,我在 zeo instance 的 runzeo 和 zope instance 的 runzope 裡都加上了 export TZ="Hongkong-8",讓時區顯示正常。
這次終於想通了!以前每次都是手動 tar xfz blah.tgz 安裝 product,其實根本就應該用 script 來紀錄安裝動作,像編譯一樣。否則光回想有哪些 product 要裝,就得想好久。
先寫一個 install.sh 紀錄 product tarball 存放的位置 (我們一定都有一個目錄專門放這些 tarball 吧 ;):
#!/bin/sh ACHV=/secret/place/to/Zope
在每次安裝新 product 的時候,建一個 install-nn.sh,裡面寫:
#!/bin/sh . ./install.sh tar xfz $ACHV/Plone-2.1.1.tar.gz mv -f Plone-2.1.1/* . rmdir Plone-2.1.1 tar xfz $ACHV/cjksplitter-0_7_3.tgz tar xfz $ACHV/zopechinapak-0_5.tgz tar xfz $ACHV/mxmCounter.1.1.0.tar.gz tar xfz $ACHV/plone-desktop-server-2.1-2918.tar.gz tar xfz $ACHV/PloneArticle-3.18.tar.gz
把這兩個檔案放到 $INSTANCE/Products 裡面,然後 ./install-01.sh 就把所有的 product 一次裝好。以後要昇級或重建 instance 的時候就方便了。
蠻久以前寫的Zope 自訂安裝,現在還是有點參考價值。
Zope 2.7.8 也可以動。
最近在編譯 FOSS 軟體的時候都會建一個 build.sh,寫法像這樣:
#!/bin/sh OPTS="" OPTS="--prefix=/home/yungyuc/opt/python-2.4-parallel $OPTS" OPTS="--enable-shared $OPTS" ./configure $OPTS > configure.log 2>&1 make > make.log 2>&1
省下了不少尋找錯誤訊息的時間和螢幕畫面。編譯結束後再 make install 安裝。
很多人都知道了,bloglines 今天實作出來 browser hotkeys:
Hotkeys: j - next article k - previous article s - next sub f - next folder A - read all r - refresh left pane
本來覺得沒什麼,但在應該要上床睡覺的當下卻發現它真好用!以往在 bloglines 裡要用滑鼠捲捲捲的作法被鍵盤按鈕 j 取代以後,「每個標題我都看得到了」。如此一來就能在最短的時間裡瀏覽所有的項目。
雖然我的訂閱只有少少的 135 個,但因為閱讀時間甚少,還是非常需要繼續減少訂閱的數量。hotkey 在提供快速瀏覽能力之後,更能讓我識別出比較不重要的訂閱。 :)