blog.Ring.idv.tw

Open Source

CSProxy Alpha 1 released!!

這是今天清晨5點初從家中拍攝的照片... 呃~ 這和CSProxy有啥關係呀...

沒錯!~ 的確是有相關的~ 因為今天有點失眠... 所以「CSProxy Alpha 1」才就此誕生~ 是該高興還是該...XD

我已經上傳至Google Code嚕~ 不過文件方面還沒開始撰寫~ 我想只能等CSProxy論文告一段落後才會產出文件了~

有興趣的人不妨先嚐鮮一下吧!~

期許趕快生一篇paper後~ 然後再設計一個Framework~ 接著發佈beta version~ (想得太美好了~XD)

Google Translate Example

測試網站:Google Translate Example

安裝CSProxy:seamless install CSProxy

2008-05-08 05:38:54 | Add Comment

取得MediaWiki Editable Text

這個小範例主要是用來取得目前最多人用的Wiki架站軟體「MediaWiki」的編輯文字~

筆者使用「HttpClient - a PHP Web Client Class」來當作我的HttpRequest Library,內部程式是直接開啟Socket去連線的~ 且這樣就毋須裝上「cURL」or「Zend Framework」等套件了~ 小巧又好用~ ^^

這裡就拿「Wikipedia - Hadoop」的資料來測試~ 其實程式碼相當精簡~

<?
require_once "HttpClient.php";

$body = HttpClient::quickGet('http://en.wikipedia.org/w/index.php?title=Hadoop&action=edit');
$regex = '/cols=\'80\' >(.*)<\/textarea>/Us';
preg_match($regex,$body,$match);
echo $match[1];
?>

2008-04-24 00:43:49 | Add Comment

安裝MediaWiki-1.12.0

由於未來的工作之一就是要「Trace MediaWiki」整個原始碼及架構,所以在這之前當然要先架個Wiki來測試~

整個安裝過程其實相當容易~ 只要你的LAMP環境設置正確~ 我想幾乎都能無痛上手~ 安裝步驟可參考「mawa/kaurjmeb/KJ'sWikiLife/wiki/安裝MediaWiki」,而環境設置可參考筆者的另一篇文章「Installing MySQL & Apache2 & PHP & PDO on Debian 4.0」,不過請切記「不要安裝PDO」~ 而請改安裝「php5-mysql」,如下述指令:

apt-get install php5-mysql

如果你已經安裝了「PDO」的話~ 那請修改一下「/ect/php5/apache2/conf.d」底下的兩個檔案,它們分別為「pdo.ini」和「pdo_mysql.ini」,將裡面的內容加上「#」先註解起來~ 否則你的Apache在啟動時會出現PDO的錯誤訊息~

其實這應該算是MediaWiki採用以往舊式的資料庫函式寫法的關係~ 如果要驗證的話~ 可以看「mediawiki-1.12.0\includes\Database.php」這個原始檔內部的程式~ 你將會看到「mysql_connect」、「mysql_select_db」等函式的出現,所以筆者強烈建議大家如果要開發PHP、Database相關的應用程式,請務必採用「PDO」來實作~ 如果你了解OOP Polymorphism 概念的話~ 或是寫過Java JDBC的話~ 就會了解為何我如此強烈建議~ 所以我現在不得已必須走回頭路... 還好值得安慰的是~ MediaWiki的開發人員當然也有考量到這一點~ 並自行發展出一套介面~ 只是我必須去熟悉它們所開發的這套介面~ 所以這時候就又顯示出PDO的重要了~ 總之~ 有的瞧了~

相關文章

PHP Data Objects (PDO) 介紹

2008-04-22 00:43:37 | Add Comment

Installing MySQL & Apache2 & PHP & PDO on Debian 4.0

來練習一下該如何在Debian Linux下建立一個LAMP的環境~

安裝MySQL

「libmysqlclient15-dev」要編譯「PDO_MYSQL」時會用到,所以就一併安裝

apt-get install mysql-server libmysqlclient15-dev

裝完成功後~ 記得為你的MySQL root帳號設置一下密碼,假設密碼為「1234」:

mysqladmin -u root password 1234

安裝Apache2

apt-get install apache2

裝好後修改一下設定~

vi /etc/apache2/sites-available/default

將「RedirectMatch ^/$ /apache2-default/」這一行註解起來,如下所示:

# RedirectMatch ^/$ /apache2-default/

讓「/」根目錄不要重導到「/var/www/apache2-default」下

安裝PHP5

「php5-dev」有包含「phpize」這個指令~ 待會要編譯PHP extension會用到~ 所以也一併安裝

apt-get install php5 php5-dev

這時候你可以在「/var/www/」下建立一個名為「index.php」,內容如下:

<?
phpinfo();
?>

然後打開你的瀏覽器,輸入「http://localhost/」就可以看到你的PHP相關組態資訊了~

安裝PDO

首先先下載PDO、PDO-MySQL~

wget http://pecl.php.net/get/PDO-1.0.3.tgz
wget http://pecl.php.net/get/PDO_MYSQL-1.0.2.tgz

然後解壓縮兩個檔案~

tar zxvf PDO-1.0.3.tgz
tar zxvf PDO_MYSQL-1.0.2.tgz

先安裝PDO

cd PDO-1.0.3
phpize
./configure
make
make install

在安裝PDO_MYSQL,要先修改「config.m4」這個檔案,然後刪除下述四行,在122行。

ifdef([PHP_ADD_EXTENSION_DEP],
[
  PHP_ADD_EXTENSION_DEP(pdo_mysql, pdo)
])

安裝PDO_MYSQL

cd PDO_MYSQL-1.0.2
phpize
./configure
make
make install

確認PDO有設置成功

vi /etc/php5/conf.d/pdo.ini

內容應該包含下述兩行:

extension=pdo.so
extension=pdo_mysql.so

測試環境

先重新啟動你的「apache2」

/etc/init.d/apache2 restart

然後在「/var/www/」之下,建立一個「test.php」,程式如下:

<?php
set_exception_handler('exception_handler');

$user = 'root';
$pass = '1234';
$db = new PDO('mysql:host=localhost;dbname=mysql', $user, $pass);

foreach ($db->query('SELECT * from user') as $row) {
    print_r($row);
}
$db = null;
function exception_handler($e) {
    die($e->getMessage() . "\n");
}
?>

成功的話應該就會看見一大堆陣列資訊了 ^^

參考資源

【PHP】DebianにPDOをインストール

在 Debian 安裝 Apache + MySQL + PHP

【安裝筆記】Apache, MySQL, PHP, Subversion Installation on Debian Etch

Debian下Apache2+Mysql5+Php5的安装配置

2008-04-19 00:38:05 | Comments (7)

OSDC.tw 2008 心得分享

Open Source Software Foundry

第一天由OSSF的三位成員來開場,主要介紹「OpenFoundry」在一些開發上的應用技巧,由於OpenFoundry主要使用FreeBSD來作為伺服器平臺,所以議題也都圍繞在這上面~ 譬如如何使用FreeBSD jail在同一台電腦安置許多的虛擬伺服器等等…,不過我比較感興趣的反而是「Ruby on Windows」(Ant)這一個議題,作者用Ruby來介紹寫一個USB的防毒軟體,專案的名字還挺長,稱為「Wow! USB VirusKiller 可攜式儲存設備防毒軟體」,主要是利用檔名的判斷方式來偵測是否有病毒存在,有興趣的朋友們可以去玩玩看,而作者還分享了一些Ruby在Windows上開發的相關經驗,例如用Ruby來開發GUI的應用程式時,作者建議使用FXRuby來開發,如果要將Ruby直接轉成Exe的可執行檔,可以使用RubyScript2Exe,不過作者也提到了一個Ruby的問題,也就是執行速度較為緩慢~ 我想這和Java剛推出時是一樣的狀況,不過還是端看開發人員如何取捨,否則為何Hadoop要採用Java來開發呢?這必然有他的考量!!

YUI: The Insider's Tour (Nate Koechley)

Nate Koechley.Yahoo! 前端技術工程師,主要對YUI進行一個大概的介紹與推廣,目前最新的版本為2.5.1,而未來的3.0版將專注於consistent、plugin based、optimized method的改善,而作者還利用了一個動畫介紹了許多目前知名的網站都採用YUI來作為網站前端的開發技術,不過重點的訴求在於目前不同瀏覽器所產生的差異性,而該如何有效率地解決這些差異,所以利用像YUI或jQuery這樣的Library來開發便可較為省時省力。

Google Gears (Ray Chen)

雖然我在去年暑假就曾在meeting報告時介紹過這項技術,不過去當個Listener由Google工程師來介紹Google Gears這項技術,收獲其實也還不少 ^^v

作者主要用local Server的方式,並直接將簡報整合Google Gears技術來Demo,感覺上就挺一致的~ 而且講述到不少的重點~ 例如:

.Google Docs很好用,但沒網路就不能用

.JavaScript 是採用Single Thread的方式來運作,但目前多核心的CPU愈來愈普及 (筆者補充:不曉得Adobe AIR會不會支援thread技術)

.SyncEngine 採用連續Ping網路的方式來偵測,利用十秒的時間間隔進行polling

.WorkerPool 是利用IPC溝通的

GearsMonkey: Google Gears + Greasemonkey to take Wikipedia offline

.HTML 5.0 規格將包含Database的功能,重點在於Google Gears也有包含SQLite,只是Gears走的比較前面

.Google Gears - Full Text Search

聽完之後~ 對Google Gears有更為紮實就是了 ^^

Ubuntu Mobile Edition (Jouston)

感覺作者是來介紹貴公司的XD~ 沒捕捉到什麼重點~

如果硬要說的話~ 可能就是作者建議採用Clutter來開發GUI應用程式吧~ 別使用X Window API...

Introduction to BerkeleyDB (pixnet) (jnlin)

主要介紹Pixnet採用BerkeleyDB(已被Oracle買下)的一些經驗談,譬如說為何要採用BerkeleyDB這樣的key-value based的資料庫,其實還是效率上的考量~

試想~ 如果採用關聯式資料庫,並且用一堆join statement的話~ 那當然毫無效率可言,所以用空間換取時間的作法是比較妥當的~

作者也提到說pixnet目前每秒有將近2000次的insert操作以及近3500次的Query操作~

投影片下載:Introduction to BerkeleyDB (pixnet)

Hadoop (Vivek Ratan)

終於輪到我最想聽的議題了 ^^

不過可能是自己抱持的期望太大~ 因為只有一小時的時間能對Hadoop做概略性的介紹,我想也算不錯了~

這項技術對我來說有相當程度的重要,因為我想要做的Flash動畫搜尋引擎,就打算架構在Hadoop上面來運作,所以不管有沒有順利上博班,研究這項技術對我來說是必然的工作~

後來發覺原來facebook也採用Hadoop這項技術~ 我想接下來會愈來愈多人投入這項領域之中,尤其是NLP這種需要大量統計資訊的工作... 如果採用資料庫的方式來處理Google Web 1 Trillion,那不曉得要跑到民國幾年了~ XD 所以工欲善其事.必先利其器~ 而這個器就是「Hadoop」~

BTW, 當天下午下「hadoop」關鍵字找到我的文章「一個值得研究的領域 - Hadoop」突然變多了 XD~

Open Source Tools, Open Data, and Daily Tasks of Handling Natural Languages (Lukhnos)

這場聽下來~ 感覺作者對於NLP的領域有深入研究~ 譬如一些斷詞的處理~ 就像是「研究生活動中心」,比較理想的斷詞應該是「研究生」、「活動」、「中心」,不過也有可能是「研究」、「生活」、「動」、「中心」,其實這讓我想到我去清大旁聽老師所舉的一個例子「土地公有政策」,該如何斷詞呢?比較理想的應該是「土地」、「公有」、「政策」,但中研院的CKIP系統就將這樣的例子斷成「土地公」、「有」、「政策」,所以作者蠻推崇使用蔡志浩先生所提出的「MMSEG」,其它的相關重點請參閱投影片 ^^

作者網站:Lukhnos

投影片下載:Open Source Tools, Open Data, and Daily Tasks of Handling Natural Languages

DOM manipulation by Wii Remote - the future of media (Kawasaki)

作者是一位日本人~ 這場帶給我的收獲反而不是這個議題的內容,而是作者設計簡報的功力以及現場的臨場反應,讓我學到了一些技巧~

作者一開始利用「預測使用者行為」的方式來帶領大家進入這個議題,這的確是一個不錯的方式,很值得學習與效法~ 而且簡報中還利用了「Google AJAX Language API」~ 蠻讚的~

而這場演講其實主要就是利用我之前所po過的「WiiremoteJ - 用Wii來做互動」這項技術來達到用WiiRemote控制機器人的技巧~ 還包含了一些JavaScript處理3D的運作範例~ 來瞧瞧吧~ ^^ Animation.Cube - Rotating Cube Animation Effect

相關資源:GAINER

我的戰利品

.7-11 禮券 100元 (填研究問卷得到的)

.Yahoo! T-Shirt (L-size)

.Yahoo! 筆記本和筆

.Google Map 筆記本和筆

.Ubuntu 光碟

.每個人都有的胸章 XD~

唯一的遺憾是沒拿到Google的帽子...>"<

2008-04-15 01:26:44 | Comments (5)

Next Posts~:::~Previous Posts
Copyright (C) Ching-Shen Chen. All rights reserved.

::: 搜尋 :::

::: 分類 :::

::: Ads :::

::: 最新文章 :::

::: 最新回應 :::

::: 訂閱 :::

Atom feed
Atom Comment