JeffHung.Blog

(My smile insists of having nose. :-)

Incomplete AideRSS

最近幾天,喵到了幾篇文章,如天佑的《AideRSS - RSS 篩選服務》,介紹了 AideRSS 這套「有點聰明」的 online RSS reader[1]。簡單講,AideRSS 做了一套叫 PostRank 的方法,收集 feed collection 裡的所有文章,依據其 del.icio.us、digg、technorati、comment# 等數字,丟入某種公式,計算出 rank 值,推薦給使用者作為選擇的參考。就好像 look.urs.tw 是針對「站」做 ranking,AideRRS 則是針對「文章」做 ranking,然後再加上 online RSS reader 的介面,形成一套應該會有效的「個人用資訊篩選排序系統」。
不過,最近我好像比較犯衝,每試用一個新的服務,就會遇上一些「卡點」[2],在沒什麼空閒時間的情況下,通常都只能放棄。
AideRSS 似乎也不甘寂寞,也讓我碰上卡點了。在試用一、兩個 feeds 之後,因為資料量太少,看不出其威力,因此我就 export 出 google reader 的 feeds,餵進 AideRSS,這樣資料量應該就夠多了。但是我沒有想到,結果反而造成資料量太多,內容類型過於分散,一堆其實不需要每天閱覽的 feeds,反而「污染」了 AideRSS 的結果。
然後很不幸地,我找不到「全選」的選項,以便把總共六百多個 feeds 一次刪除。而逐條刪除的介面又很奇怪,刪除完後會跑到 dashboard,還要再切回 feed list 才能繼續刪除。
而且期望中覺得應該會有的,filtering rules、categorization 等功能,也找不到。本來還以為是還沒收 email 將帳號 activate 的關係,結果 activate 之後[3],畫面還是相同,沒有任何改變。
因此,以上種種,造就了「除非手動辛苦地將所有 [...]

Overloading C++ conditional operator for mixing types

有時候,在搭配 conditional operator (?:) 輸出資料時,我們會依據資料的值,來決定輸出什麼東西。例如:

#include <iostream>

using namespace ::std;

int main()
{
int delay_time = -1; // negative for "random" delay time.

cout << "delay: ";
if (delay_time < 0) {
cout << "random";
}
else [...]

移除 SiteMeter

(舊文)
看到 Max.Taiwan 的這篇《sitemeter加入第三方連結》,我決定也把 SiteMeter 也關掉。可惜這陣子渡蜜月去了,所以拖了十來天才有反應,在此向本站的訪客致歉。
雖然說在 SiteMeter 的 Privacy Statement 裡面有這麼一段:

Third Party Advertisements
The advertisements appearing on our website from time to time are provided by a variety of our third party advertising partners. We only share website usage information about our users with reputable third party advertisers for the sole purpose of better targeting our website [...]

ISO C++ conformant _read()? XD

因為在 porting 某支程式,所以用 MSDN 找 read(),想要確定該 include 哪個 header,link 哪個 library,結果 MSDN 的 read() 頁面,僅僅顯示這麼一行:

This POSIX function is deprecated beginning in Visual C++ 2005. Use the ISO C++ conformant _read instead.

這真是活見鬼了,什麼時候 ISO C++ 裡有以底線開頭的 API 了?更別提 _read() 根本不是 ISO C++/POSIX 的 function。
好吧,他說的是 conformant,所以不是在說 _read() 是 ISO C++ 的標準,而是說用 _read() 的方法呼叫 read(),才符合 ISO C++ 的一些規定。但即使如此,這個解釋,還是怎麼聽來就怎麼怪。
勉強為其解釋,我記得 Microsoft 平台有一種 [...]

98 分的 Subversion 1.5 新功能:changelist

剛剛看到這篇《Upcoming Subversion 1.5 Feature: Changelists》,介紹了 Subversion 1.5 新增加的功能:changelist。簡單講,就是可以替 working copy 裡尚未 commit 的 changes,標上 tag (label),以區分出不同的 groups。
文章的前半段講的我心有戚戚焉,這正是開發生活的寫照啊。為了能夠同時解多個不同的 issues (bugs),而不會把事情混在一起搞得一團亂,開發者通常可以有兩種作法:

使用多個不同的 working copies,每個 working copy 負責一個 issue,也許都對應到同一個 branch,也許對應到不同的 branch。
使用一個 working copy,但在要解不同的 issue 時,利用 svn switch 切換到不同的 branch。

我通常的作法,是兩者混和,準備個兩、三個 working copies,輪流使用。因為專案太大,光是 checkout 就要好久,再加上執行時會需要一些 intermediate files,因為不會放在 repository 裡,重新產生耗時更久,所以必須得事先備好多個 working copies 使用[1]。可惜因為專案架構還不夠好的關係,runtime 目錄不能共用[2],所以無法進 repository 的 runtime 目錄下的 intermediate files 的同步問題,就有些麻煩。
可惜的是,這樣的 changelist 還不完全,要扣兩分。
要扣的第一分是,只能以路徑為單位標註 tag [...]

同一目錄下檔案數目對效率的影響

看到這篇《Tree-structured FSFS repositories》真的必須記錄一下。不過還是先前情提要一番,再來記錄重點,與自己的想法好了。
Subversion 的 FSFS 原本是把每個 revision 存成一個檔案,放在同一個目錄下。所以,如文中舉例的 Apache Software Foundation (ASF) 的 repository clone,如果總共有 500k 個 revisions,就會有 500k 個檔案,塞在同一個目錄裡。而即將推出的 Subversion 1.5,會改進 FSFS,將檔案以 1000 為單位,分散在不同的子目錄下。
本篇文章值得記錄的有以下幾點:

"Macro-benchmarks using a clone of the ASF repository (about 500k revisions) showed that the new scheme might be slightly (<1%) slower than the old scheme for reads"
"VFAT exhibits roughly O(N) behaviour, and [...]

加裝 google-code-prettify

看到這篇《網頁程式碼美化程式 Google Code Prettify》的介紹,我也試裝了一下。果然所有程式碼的列表,自動有了 syntax highlighting。
Google Code Prettify 的特色是,用的時候不需要指定語言,會自動偵測。我們「唯三」需要做的,就是:

在 <header> 引入 google-code-prettify 的 css 與 javascript 檔。
將你要做 syntax highlighting 的程式碼,寫在 <pre> 裡,並賦予 prettyprint 的 CSS class。
在文件全部載入之後,呼叫 prettyPrint() 函式。

由於我有一堆文章,已經把程式碼放在 <pre>,使用 code 這個 CSS class 標示,因此,我需要做一些額外的處理,把這些 <pre class="code"> 找出來,再多加上 prettyprint 的 CSS class。
將 google-code-prettify 抓下來解開後[1],會有兩個檔:prettify.css 與 prettify.js,一起放到 theme 目錄下即可。因為 Y!UI 很好用,所以我就偷懶直接依靠 Y!UI。修改 wordpress 佈景主題的 header.php 檔[2],在 </head> [...]

不求甚解 2

第一集《不求甚解》還在撰寫中[1],今天又上演第二集了。
某人宣稱,若用 C# 寫 COM 包 C 寫的 library,因為 C# 有記憶體管理機制,記憶體會自動 free,所以就可以不用呼叫 C library 提供的 uninit() 了喔。
最好是這樣啦,這回我不跟你玩了,出問題不要怪我沒提醒過。
老毛病,寫著寫著,就會想要把技術細節寫清楚,以便以後自己可以查閱,都忘了文章的主要目的了。 ↩

升級到 wp-footnotes 1.4

自從啟用 footnotes plug-in 以後,我在編輯時,就方便了許多。不過,原本的 footnotes 0.91 版,還是有一些小問題,讓我有些困擾。所以,剛剛我找了一下官方的 wordpress plug-in directory,發現 footnotes 已經更名為 wp-footnotes。測了一下,並照著原本的改法,將 <span class="footnote"> 的標示法修正進去,再加上修了一些小 bug 後,順利升級到了 wp-footnotes 1.4 版。
在原本的 footnotes 0.91 版裡,是使用 while 迴圈搭配 strpos() 尋找註腳,也許是因為這樣,有時候在後台編輯時,會發生程式陷入無窮迴圈的錯誤。新版的 wp-footnotes 改用 preg_match_all() 搜尋註腳,希望效果會好一些。
不過,也許是因為改用了 preg_match_all(),原本只要修改 $footnote_open 與 $footnote_close 兩個常數變數的技法[1],反而失效了。因此我鑽了一下,發現這兩個常數,在丟給 preg_match_all() 之前,有先用 preg_quote() 先處理過。這本來是件好事,但壞就壞在,preg_quote() 預設會替很多 delimiters 前面加反斜線,包括 < 與 > 等。然而,在 preg_match_all() 這行的 regular expression 裡,FOOTNOTE_OPEN 與 FOOTNOTE_CLOSE 所在的部份,其實式不需要替 [...]

文章被抄.啼笑皆非

剛剛發現,我的這篇《Detect & post-build for Intel C++ Compiler》,被一個中國人全文抄錄到他的 blog 裡。由於整個排版,仍然是原來的樣子,甚至連裡面的 footnotes,連結也都是連回到我的 blog,因此可以合理推斷,是被直接「複製/貼上」全文抄錄的。
被全文抄錄不打緊,因為反正我用的授權模式是 CC:by,也就是只要有明確標示出,原作者是我,即可全文抄錄,任意使用。事實上,被抄其實是我的榮幸。
不過,在看到對方甚至連「轉載自」的字樣都沒寫[1],卻剛好得以符合 CC:by 的規定的原因是,因為直接使用「複製/貼上」,所以連文章標題下面那一小塊,標示分類、作者以及發表日期的區塊,也一併複製,因而恰好符合了,須標示原作者的條件。這不禁讓我感到,啼笑皆非。

2007-09-05 更新:又被另一個中國人無視著作權規定地全文抄錄。這次他忘記把「posted by」這段也抄到,所以明確地違反了 CC:by。
2007-09-06 更新:Kenneth 已經加上來源說明了。

2007-09-26 更新:
再兩例:《練習寫 TracMacro - [[TicketStatus]]》與《Implementing dprintf() with __VA_ARGS__》。一樣因為是直接「複製/貼上」全文抄錄,含作者資訊,所以符合 CC:by。該 blog 許多文章看起來也都是「複製/貼上」來的,其他的來源,不一定允許這種全文抄錄,就看那些被抄的作者,決定怎麼反應了。
又,訪客留在我的 blog 的留言,也被抄錄了。理論上我站上的訪客留言並沒有做任何版權宣告,故應被視作是 copyright reserved,這部份因為也被抄錄了,所以請敝站也被抄襲的訪客留言作者,自行向該 blog 聲討囉[2]。

要到對方 blog 的首頁,才會發現「本空间文章,未经原作者同意,请勿做商业用途。未注明的文章均为转载。」的字樣。又,就算對方有註明「未经原作者同意,请勿做商业用途」,但該篇文章「真正的原作者」其實是我,而我用 CC:by,允許商業使用。所以有需要的人,請隨意,不必理會抄錄者的授權宣告。 ↩我不擁有訪客留言的智慧財產權,故無法代為聲討。 ↩

 Prev 1 2 3 4 5 6 7 8 ...17 18 19 Next