2006/8/30

AP server上重要的Cache機制

Hibernate現在可說是ORM的代言人,但其中的cache機制直接影響到Hibernate的效能表現,目前 Hibernate 內建支援 EHCache, SwarmCache, OSCache, and JBoss Cache,不知道什麼原因Apache的JCS並沒有納入Hibernate,但JCS Usage in Hibernate這篇文章也提到,Apache提供的JCS也可以透過製作Hibernate Cache plugin的方式用在Hibernate裡面。

Cache可說是一種以空間換取時間的機制,利用local的memory或是disk,將AP使用的資料暫存起來,以供後面AP的使用,舉例來說,一個取所有文件列表的查詢,事實上就可以放入cache機制當中,因為每一位登入的使用者,沒有必要重複向資料庫查詢所有的文件列表,只要將資料放入cache,就可以讓其他使用者節省向DB查詢的時間,減少DB系統與網路資源的浪費。

在真實的AP使用上,cache也要分成不同等級,例如AP等級、使用者等級,甚至可以加上單位等級,不同等級的cache有不同的作用,也需要對應不同的cache策略。

Apache JCS提供LRU Memory Cache, Indexed Disk Cache, TCP Lateral Cache, RMI Remote Cache四種region,前面兩種是以memory與disk作為cache的儲存處,後面兩種分別是以UDP與RMI的方式將local cache傳送到其他server上。

JBoss Cache機制是以Tree為出發點,在cache機制中加入Tree的概念,所有的Key/Object的cache pair都要再加上一層樹狀節點,事實上這種機制很適合用在樹狀階層架構中,區分出不同等級的cache。另外JBoss的cache可以加上transaction的概念,在操作資料物件的同時,針對物件裡的資料commit或rollback,這樣的機制就跟Hibernate的概念一樣,可直接將操作物件的結果,即時反應到cache與DB上。

Hibernate 性能提升(Improving Performance), Chapter 19. Improving performance,在Hibernate效能提升中,把外部的cache當作The Second Level Cache,要把Hibernate用得更精純,顯然得把cache機制搞清楚。

2006/8/12

PmWiki All-in-One Notes from help page

1. 大多數的 Wiki 頁面是用 WikiWord (由兩個以上、單字間不含空白、且字首皆為大寫的英文單字,連在一起組合而成)來作為頁面標題的。
在頁面內容中出現的 WikiWord 會自動被 PmWiki 轉換成為頁面連結,讓你點下它就可以連到用它做為標題的頁面。
如果這個頁面還不存在,就會在其後緊跟著一個問號「?」。只要點下問號「?」便能夠讓你開始建立新的頁面。

2. 如果你撰寫的頁面無法找到具有清楚文義的 Wiki Word 可供使用(可能硬要組合起來會太醜陋雜亂),可以使用 自由連結 來代替。
自由連結:使用雙大括號
[[text]] 會連結到名稱為 Text 的網頁。
[[longer form]] 則會替實際名稱為 LongerForm 的網頁建立連結,但是這時會顯示成 longer form 的連結文字。

每個頁面的標題名稱(WikiWord)都是唯一不變的,但是透過使用 free links,便能夠讓頁面擁有許多別名。

其它的例子包括:
* 連字符號,像 {[[post-modern music]]。
* 名詞複數,像 [[wiki group]]s 顯示為 PmWiki/wiki groups (英文)。
* [[WikiWord]]s 的名詞複數,顯示為 PmWiki Zh Tw/WikiWords 。
* 連結到其它群組中的網頁,像 Main/{{home page}} 或 {{Main/home page}},會顯示為 Main/{{home page}} 。

3. 一個頁面標題的全名是群組名稱.頁面標題,例如 Main.HomePage。在當前的群組中連結頁面,單單使用它的頁面標題即可。想要連結別的群組中的頁面,務必完整寫出它的全名。

************Editing*************************

4. 文字段落
* 每行文字的開頭,一般來說不能有任何空格。
* 請勿用空格或定位符號(按下 Tab)來縮排文字段落。
* 使用空白行來作為段落分隔。
* 在每行的開頭縮進一個或更多的空格(或按下 Tab),表示保持原來的文字排版(即 HTML 標記裡頭的
)。
* 在每行的末尾使用 \(反斜線),將把下一行接在一起。
* 在每行的末尾使用 \\(雙反斜線),將強迫斷行。

5. 段落縮排(常用在引用別人的文章內容)
在段落的開頭使用箭頭 ->,可以產生段落縮排,連字符號 ---> 越多,縮得越深。

6. 強調文字語氣
* 斜體:用兩個單引號 '' 加在文字前後,例如,''two apostrophies''。
* 粗體:用三個單引號 ''' 加在文字前後,例如,'''three apostrophes'''。
* 粗斜體:用五個單引號 ''''' 加在文字前後,或是雙引號加上三個單引號,例如,"'''five apostrophes'''"。
* 使用兩個 at 字元 @@ 加在文字前後,例如 @@monospace@@,表示使用等寬字型(monospace)。
* 夾在 [+ 和 +] 之間的文字,表示 文字放大 ,夾在 [- 和 -] 之間的文字,表示 文字縮小
* 文字語氣的強調,在一行中可任意使用多次,但是文字中間不得斷行。
* %red% 會讓跟隨在其後的文字顯示為紅色,這個改變顏色的效果將會一直持續到行尾,或是到下一對百分號「%%」出現為止(%black%、%white%、%red%、%green%、%blue% )
* 把 color、bgcolor 或 target 等 HTML 屬性術語,放在一對百分號裡面,就可以改變跟隨在其後的文字顯示效果,這個顯示效果將會一直持續到行尾,或是到下一對百分號「%%」出現為止。
ex: %color=red% This text is red and %color=blue% this text
is blue %% but this text is normal.

使用 bgcolor 屬性,可以改變背景顏色,例如:
%color=white bgcolor=green% This text is white

使用 target 屬性,可以讓連結開啟到新的視窗,例如:
%target=_blank% Any links on this line like http://www.pmichaud.com
will open in a new window.

%height=50% http://www.example.com/some.gif
將會顯示圖片 some.gif,並縮放到 50 像素的高度。

7. 標題
在每行的開頭使用驚嘆號 !,表示本行是標題,感嘆號越多,標題層次越減。
ex:
! Level 1 Heading
!! Level 2 Heading
!!! Level 3 Heading
!!!! Level 4 Heading
!!!!! Level 5 Heading
!!!!!! Level 6 Heading

8. 項目列表
在每行的開頭使用星號 *,表示本行是項目列表,星號越多,層次越深。
ex:
* First-level list item
** Second-level list item
** Another second-level item
* A first-level item

9. 編號列表
在每行的開頭使用井字號 #,表示本行是編號列表,井字號越多,層次越深。
ex:
# Prepare the experiment
## Unwrap the pop-tart
## Insert the pop-tart into the toaster
# Begin cooking the pop tart
# Stand back

10. 定義列表
在每行的開頭使用冒號 :,表示本行是定義列表,冒號越多,層次越深。
ex:
:term:definition of term
::second-level item: definition of 2nd-level item

11. 水平線
在每行的開頭使用至少四個或更多的連字符號 ----,可以產生水平線。

12. 不做格式化(常用於顯示程式代碼)
放在 [= 和 =] 當中的任何文字不會被 PmWiki 格式化。例如,[=WikiWords=] 將不會自動建立連結,而是顯示成一般的文字 WikiWords。

[= 和 =] 之間可以跨行,這會讓整個段落不被格式化。

例如,每行開頭的 [= 會讓到下一個 =] 中的文字顯示為等寬字型(monospace)的純文字。

13. 表格
在每行的開頭使用 『||』,表示這是表格,』||』 後面可以設定整個表格的 HTML 顯示屬性。

表格欄位也是使用 『||』 來隔開,每個欄位前後都留有空格,表示文字置中;只有前面留有空格,表示文字向右對齊;沒有特別設定,則一律是向左對齊。

完全空白的欄位將會自動合併前一個欄位(目前還沒有辦法合併多行)。

使用範例:

||align=center border=1 width=50%
||Left || Center || Right||
||A || B || C||
|| || single || ||
|| || multi span ||||

14. %comment% 樣式,可以用來在文章中撰寫註釋。
例如,%comment%註釋文字…%%,「註釋文字…」將不會顯示在頁面上。

*****************************
15. Wiki Structure
Wiki Word - 關鍵字
Wiki Page - 頁面
Wiki Group - 群組
要建立一個連結到其他群組的連接,你可以用 GroupName.WikiWord 或者 GroupName/WikiWord
WikiTrails - 導覽目錄
free links - 自由連結

在Windows上安裝PmWiki

1. Install Apache 2.0.59 using apache_2.0.59-win32-x86-no_ssl.msi
2. Download and Unzip php-5.1.4-Win32.zip
3. 將 php.ini-dist 檔案名稱更改為 php.ini
register_globals = Off
register_globals = On
;include_path = ".;c:\php\includes"
include_path = ".;d:\Programs\Apache2\include"
doc_root =
doc_root = "d:\Programs\Apache2\htdocs"
extension_dir = "./"
extension_dir = "d:\Programs\php-5.1.4\ext"
;extension=php_mbstring.dll
extension=php_mbstring.dll
;extension=php_mysql.dll
extension=php_mysql.dll
;session.save_path = "/tmp"
session.save_path = "d:\Programs\Apache2\temp"
開新資料夾 d:\Programs\Apache2\temp

4. 將 d:\Programs\php-5.1.4\libmysql.dll 與 php5ts.dll 複製到 c:\WINNT\system32

5. 修改 httpd.conf
DirectoryIndex index.html
DirectoryIndex index.html index.php
# 增加下列幾行
# For PHP 5 do something like this:
LoadModule php5_module "d:/Programs/php-5.1.4/php5apache2.dll"
AddType application/x-httpd-php .php

# configure the path to php.ini
PHPIniDir "d:/Programs/php-5.1.4"

6. 環境變數 path 增加
d:\Programs\php-5.1.4;d:\Programs\php-5.1.4\ext

7. Restart Apache

參考網站 http://phpbb-tw.net/phpbb/viewtopic.php?t=45056

8. 到 http://www.pmwiki.org 下載 pmwiki.2.0.1.2.zip 與 i18n.zip

9. 由於i18n.zip的中文部分是大陸朋友處理的,zhtw的網頁的附檔名卻是簡體中文的,所以要配合使用applocate才能解壓縮。

10.修正檔案名稱 PmWikiZhTw.文字格式、PmWikiZhTw.建立新頁面、PmWikiZhTw.頁面編輯入門、PmWikiZhTw.密碼設定、 PmWikiZhTw.插入圖片、PmWikiZhTw.測試沙箱、PmWikiZhTw.搜尋Wiki,然後把檔案複製到適當的位置。

11.把docs/sample-config.php改成config.php,移動到local資料夾。然後修改並增加里面的內容:
$EnablePathInfo = 1;
$EnableGUIButtons = 1;
$EnableUpload = 1;
#$UploadDir = "d:\Programs\Apache2\htdocs\pmwiki\uploads";
$DefaultPasswords['upload'] = crypt('aa1234');
$UploadMaxSize=100000;

XLPage('zhtw','PmWikiZhTw.XLPage');
$UploadNameChars = "-\\w. \\x80-\\xff";

12. 安裝 PublishPDF,下載http://www.pmwiki.org/pmwiki/uploads/Cookbook/wikipublisher.tar.gz
然後根據http://www.pmwiki.org/wiki/Cookbook/PublishPDF網頁的說明,把檔案放到正確的位置

在config.php中加上
include_once("cookbook/wikipublisher/extensions.php");
$MarkupEnabled['titledictindex'] = 0;

注意:
1. Apache 只能用2.0版,最新的2.2版,在設定php時都會出問題
2. 我還沒有仔細測試過詳細的功能,可能要一邊用,一邊測試看看ba

2006/8/10

Engine 飆風引擎 到底是好 還是爛?

最近緯來日本台在播映木村拓哉的Engine 飆風引擎,在網路上的評價褒貶不一,在日本上映時,贏得超高收視率。

我個人很喜歡這種故事,因為故事裡的人物之間的互動,不僅只於饒富深度的台詞對話,還有角色間的互動反應,整體營造出每一位人物活靈活現的真實個性。這跟其他以台詞攻防為主的電視劇截然不同,觀眾需要多用一點心思體會劇中人物的感受。

雖然我很喜歡這部電視劇,但還是明顯看出次郎這個人物,是專門為木村拓哉量身打造的,也只有他才有這種特殊的表情與習慣動作。家裡其他人希望看到多一點愛情故事的描寫,而不是像木村與小雪這種淡淡淺淺,帶有隱喻的愛情暗示。

像這樣有褒有貶的電視劇似乎並不多,我認為劇本在描寫育幼院孩童的心情,每一位角色在故事進行過程中的感受,都是很完美的,但顯然有些觀眾並不希望這麼「辛苦地」看電視劇,故事太沈重了,下班回家尋找休息的觀眾,也許不希望看到這麼沈重的故事。


飆風引擎
Engine 引擎
《引擎/Engine》分集介紹
木村拓哉淪為「金酸莓影帝」 贏了收視輸了人氣

2006/8/1

Javascript Web Server Scan

SPI Dynamics提供一個測試網站,可以在打開網頁的時候,以類似IP Port Scan的方式,指定範圍內的所有電腦進行web server掃描。

根據該網站提供的技術資料JSportscan.pdf,還有該網頁使用的scanner3.js可以知道,他是利用Image的物件,對範圍內的電腦的web server,配合一般web server該有的圖片網址,來判斷該IP是否有設立網站,還有該網站可能使用了那一個server。

JavaScript開啟瀏覽器攻擊之門
SPI Dynamics JavaScript Scanner