Archive for July, 2005

一直对软件的组件、插件架构非常感兴趣,我认为现在开发任何应用程序,一定要有一个架构良好的插件机制,这样可以吸引其他人来开发插件,极大的扩充系统的功能。Eclipse就是一个非常棒的例子,几乎你想什么功能,都可以从社区中找到相应的第三方插件。Firefox也同样如此,它的插件机制非常灵活(尤其是相对IE而言),因此Firefox社区中可以找到各种各样的插件。


就像Nat在Open Source Summit中的一句话



You have to give people work to do.

Create an “architecture of participation” as Tim O'Reilly says.



自从开始使用WordPress,就想学习学习WordPress强大的插件机制。以前曾经研究过的COM、XPCOM、Firefox Extensions、Eclipse Plugin都是桌面应用级别的组件结构,而对Web应用中的插件确实知之甚少,于是,Dissect了一下WordPress(1.5.1.3)。虽然对PHP不是很熟悉,不过看看源码还是问题不大。


1)WordPress读取所有可用的插件


在文件“admin-functions.php”中,函数


[code lang="php"] ?>[/code]

用来从文件系统得到所有的插件。原理很简单,就是读取'wp-content/plugins'目录下的所有PHP文件。这个函数允许一级的子文件夹,也就是说在'wp-content/plugins'下面的PHP文件,以及所以在此目录下的一级子文件夹内部的PHP文件被列作插件的候选,用下面的函数去进一步提取插件信息。这样的好处是方便用户利用文件夹来对插件进行管理和组织。


而函数


[code lang="php"][/code]

用来得到插件的描述(Plugin Descriptor),主要包括插件的版本、名称、作者,等信息,而这些其实是以注释的方式存在的。用WordPress中自带的Hello插件来举例:

Buy Allopurinol Without Prescription, [code lang="php"] Plugin Name: Hello Dolly
Plugin URI: http://wordpress.org/#
Description: This is not just a plugin, it symbolizes the hope and enthusiasm of an entire ... Order Allopurinol from mexican pharmacy, Author: Matt Mullenweg
Version: 1.0
Author URI: http://photomatt.net/
?>[/code]

这样,在get_plugin_data函数中,就可以来得到插件的详细信息。


[code lang="php"] function get_plugin_data($plugin_file) {
$plugin_data = implode('', file($plugin_file));
preg_match("|Plugin Name:(.*)|i", buy cheap Allopurinol, Allopurinol wiki, $plugin_data, $plugin_name);
preg_match("|Plugin URI:(.*)|i", Allopurinol from canadian pharmacy, Allopurinol treatment, $plugin_data, $plugin_uri);
preg_match("|Description:(.*)|i", low dose Allopurinol, Cheap Allopurinol, $plugin_data, $description);
preg_match("|Author:(.*)|i", no prescription Allopurinol online, Purchase Allopurinol online no prescription, $plugin_data, $author_name);
preg_match("|Author URI:(.*)|i", kjøpe Allopurinol på nett, köpa Allopurinol online, Allopurinol description, $plugin_data, $author_uri);
?>[/code]

2)Active & Deactive Plugin


Active(Deactive)插件的操作都在Plugins.php中,比如我要Deactive “Hello”这个插件,最后的URL其实是这个样子:


[code lang="php"][/code]

其中,“Action”表示动作,值为“active”或者“deactivate”,而“Plugin”表示动作的对象插件,此处为“hello.php”。得到动作指令后,首先从数据库中取出当前已经激活的插件。


[code lang="php"][/code]

然后根据动作,重新生成已激活插件数组,存入数据库,并重新加载此页。加载的时候就需要考虑这些已经激活的插件是怎么工作的了。


BTW:附上数据库的Options表中0插件和只有1个插件的值:


没有插件:'a:1:{i:0;s:0:"";}'


只有Hello插件:'a:2:{i:0;s:0:"";i:1;s:9:"hello.php";}'


3)插件(Active)如何加载到系统中


WordPress中的每页都会包含“wp-config.php”文件,而在“wp-config.php”的最后有这样一句:


[code lang="php"][/code]

在“wp-settings.php”文件中,可以找到以下与插件相关的代码片断:


[code lang="php"] if ( get_settings('active_plugins') ) {
$current_plugins = get_settings('active_plugins');
if ( is_array($current_plugins) ) {
foreach ($current_plugins as $plugin) {
if ('' != $plugin && file_exists(ABSPATH, buy no prescription Allopurinol online. Allopurinol use, 'wp-content/plugins/' . $plugin))
include_once(ABSPATH, is Allopurinol addictive. Where to buy Allopurinol, 'wp-content/plugins/' . $plugin);
}
}
}
?>[/code]

可见,这段代码会取出系统中所有Active的插件,并Include进来。所以在每页加载的时候,都会首先Include这些插件代码。那么,这些插件自己在加载的时候都做了什么呢?


4)插件的加载


插件的加载其实最重要的一个部分就是插件的事件注册机制,WordPress插件中的事件注册其实和Eclipse中的扩展点(Extension-Point)机制非常相像,而这种类似“插销”、“插销座”的软件插拔方式也成为了最近软件组件架构方面应用最多的实践。


事件注册过程中比较重要的几个函数分别是:do_action、add_action、add_filter。


WordPress中默认定义了很多扩展点(也可以叫做“钩子”),或者说注册了很多系统事件(WP中的正规叫法应该是“Action Tag”),比如“admin_head”表示Admin页面的Head输出事件,“publish_post”表示发布一篇帖子的事件等等。而插件要做的就是扩展这些扩展点,或者说挂接这些钩子,从而实现系统的扩展功能。add_action就是通常插件扩展某个扩展点用到的函数,而do_action是扩展点本身开始执行的函数。


刚才说过WordPress中的每一页执行前都会Include所有Active的插件代码,而这些代码通常都会用“add_action”来将自己的函数注册到系统的扩展点中。这样,在扩展点执行的时候,就会找到系统中所有已经挂接到这个扩展点上的插件的函数来执行之,从而扩充系统的功能。


WordPress中的很多功能也都是通过这种插件结构来实现的,默认注册了很多系统事件,都在'default-filter.php'中。比如:


[code lang="php"][/code]

这个是用来在发布每篇帖子的时候发送XML-RPC Ping的。再比如:


[code lang="php"][/code]

用来将正文(content)中的笑脸符号转换为图像。


还是举“Hello”插件来说。Hello插件会随机的在Admin Page的右上角显示一段话,它的工作原理是这样的:


在每一个Admin page的前面都有


[code lang="php"][/code]

而在“admin-head.php”中将会执行扩展点“admin_head”的所有扩展:


[code lang="php"] do_action('admin_head', '');
?>[/code]

这样,就会执行所有挂接到admin_head的函数


Admin Page的Footer部分同样如此,


[code lang="php"] do_action('admin_footer', '');
?>[/code]

这样,就会执行所有挂接到admin_footer的函数


再来看看Hello插件的初始化过程中:


[code lang="php"]

// This just echoes the chosen line, we'll position it later
function hello_dolly() {
global $chosen;
echo "

$chosen

";
}

// Now we set that function up to execute when the admin_footer action is called
add_action('admin_footer', 'hello_dolly');

// We need some CSS to position the paragraph
function dolly_css() {
echo "

";
}

add_action('admin_head', 'dolly_css');

?>[/code]

可见,将dolly的CSS部分插到Header部分,而在footer部分插入显示代码,这样,在AdminPage的右上角就会随机显示一段话。


再来看看曾经说过Google Sitemap插件,插件中有一项功能是在发布、修改或者删除文章的时候重新Build Sitemap文件,这个功能就是通过注册系统的三个事件(“publish_post”,“edit_post”,“delete_post”)来完成的。


[code lang="php"] //Register to various events.., Buy Allopurinol Without Prescription. @WordPress Dev Team: I wish me a 'public_content_changed' action :)
if(defined("SM_ACTIVE") && SM_ACTIVE===true) {
//If a new post gets published
add_action('publish_post', Allopurinol results, Order Allopurinol no prescription, 'sm_buildSitemap');

//Existing post gets edited (published or not)
add_action('edit_post', 'sm_buildSitemap');

//Existing posts gets deleted (published or not)
add_action('delete_post', Allopurinol class, Allopurinol reviews, 'sm_buildSitemap');
}
#endregion
?>[/code]

BTW:其中的注释也很有意思,我也觉得确实需要有“public_content_changed”这样一个事件,就不必分别订阅三个单独的事件了。


对了,就在我们刚才说的wp-settings.php中的插件启动后,有


[code lang="php"][/code]

这样一个系统事件,可以注册这个事件来做一些希望在所有插件Load完毕而做的事儿。


5)如果插件中涉及UI


其实是一样的。以WordPress FeedBurner Plugin中添加菜单为例:


如果想添加一个菜单,就需要注册“admin_menu”这个Action Tag(系统事件):


[code lang="php"][/code]

即可,插件中的这个函数为:


[code lang="php"] if (function_exists('add_options_page')) {
add_options_page('FeedBurner', Allopurinol cost, Allopurinol natural, 'FeedBurner', 8, online Allopurinol without a prescription, Buy Allopurinol online cod, basename(__FILE__), 'ol_feedburner_options_subpanel');
}
}
?>[/code]

“add_options_page”这个函数就会在系统的“Options”菜单中添加“FeedBurner”这样一个子菜单。


而这个函数其实就是增加 Menu 或者 SubMenu,


[code lang="php"] function add_submenu_page($parent, herbal Allopurinol, Order Allopurinol online c.o.d, $page_title, $menu_title, Allopurinol price, Fast shipping Allopurinol, $access_level, $file, Allopurinol forum, Allopurinol alternatives, $function = '') {
global $submenu;
global $menu;

$parent = plugin_basename($parent);
$file = plugin_basename($file);

// If the parent doesn't already have a submenu, add a link to the parent
// as the first item in the submenu, doses Allopurinol work. Purchase Allopurinol for sale, If the submenu file is the same as the
// parent file someone is trying to link back to the parent manually. In
// this case, buy Allopurinol from mexico, Buy generic Allopurinol, don't automatically add a link back to avoid duplication.
if (, buy Allopurinol no prescription. Allopurinol used for, isset($submenu[$parent]) && $file != $parent) {
foreach ($menu as $parent_menu) {
if ($parent_menu[2] == $parent) {
$submenu[$parent][] = $parent_menu;
}
}
}

$submenu[$parent][] = array($menu_title, $access_level, $file, $page_title);

$hookname = get_plugin_page_hookname($file, $parent);
if ( !empty($function) && !empty($hookname) )
add_action($hookname, $function);

return $hookname;
}

function add_options_page($page_title, $menu_title, $access_level, $file, $function = '') {
return add_submenu_page('options-general.php', $page_title, $menu_title, $access_level, $file, $function);
}
?>[/code]

6)其它


还有一些简单的插件就是只提供一些API函数。比如Most_Commented Plugin,它提供一个API “mdv_most_commented”:通过数据库查询得到评论最多的文章,并加以显示。因为这个插件已经被Include过,所以可以用这个API来进行显示


历史:


2005.07.14 - 创建


2005.07.16 - 新增get_plugins的子文件夹解析部分

.

Similar posts: Toprol XL For Sale. Reglan For Sale. Buy Nasonex Without Prescription. Quinine For Sale. Buy Bactrim Without Prescription. Stromectol treatment. Fast shipping Stromectol. Order Viagra online c.o.d. Phenergan long term. Buy Cipro online cod.
Trackbacks from: Buy Allopurinol Without Prescription. Buy Allopurinol Without Prescription. Buy Allopurinol Without Prescription. Buy Allopurinol Without Prescription. Buy Allopurinol Without Prescription. Kjøpe Allopurinol på nett, köpa Allopurinol online. Allopurinol forum. Zithromax maximum dosage. Quinine brand name. Get Cafergot.

Acomplia For Sale

昨天去交养路费,走在大堂突然觉得一个人似曾相识,认仔细了,却原来是Tim Leung - 2001年在香港做地铁工程时候的香港地铁方面的工程经理。太奇妙了,这么多年没见,竟然在北京见到他。


他现在是北京四号线地铁工程的机电经理,抽空在清华做培训,他说:“来清华听课是我的梦想”。


2001.07.09 - 被迫启程香港,无法在北京体验申奥的气氛,至今让我后悔;


2001.07.13 - 我们在香港丽东酒店的房间里看申奥直播,买啤酒4听,后上街,无气氛,遂沮丧而归;


2005.07.13 - 在北京和阿Tim一起吃饭,Licc、Blue已经成为老师,Wing在攻读博士,时间过的真快。


恍惚之间,4年已过。不知道4年之后,我会在哪里呢?


附:


2001年



2005年


Acomplia For Sale, . Comprar en línea Acomplia, comprar Acomplia baratos. Buy cheap Acomplia no rx. Order Acomplia online overnight delivery no prescription. Acomplia dose. Acomplia dangers. Acomplia over the counter. Acomplia price, coupon. Where can i find Acomplia online. Acomplia coupon. Acomplia trusted pharmacy reviews. Acomplia dosage. Effects of Acomplia. Real brand Acomplia online. Where can i buy Acomplia online. Get Acomplia. Acomplia from mexico. Acomplia no rx. Acomplia pics. Acomplia brand name. About Acomplia. Order Acomplia from United States pharmacy. Acomplia recreational. Acomplia without a prescription. Discount Acomplia. Where can i order Acomplia without prescription. Acomplia interactions. Where can i buy cheapest Acomplia online. Taking Acomplia. Purchase Acomplia online no prescription. Acomplia use. Acomplia steet value. Cheap Acomplia no rx. Get Acomplia. Acomplia without prescription. Japan, craiglist, ebay, overseas, paypal.

Similar posts: Buy Atarax Without Prescription. Buy Prozac Without Prescription. Buy Reglan Without Prescription. Periactin For Sale. Buy Armour Without Prescription. Purchase Phenergan. Ampicillin for sale. Proscar brand name. Buy no prescription Levaquin online. Taking Colchicine.
Trackbacks from: Acomplia For Sale. Acomplia For Sale. Acomplia For Sale. Acomplia For Sale. Acomplia For Sale. Effects of Acomplia. Order Acomplia from mexican pharmacy. Acomplia without a prescription. Atarax australia, uk, us, usa. What is Nexium.

Buy Toradol Without Prescription

晚上花了一段时间学习了一下XML-RPC,简单的说,就是在Internet上实现远程的方法调用的一种规范和实现。其实这种规范可真是不能算少,DCOM、CORBA、SOAP、RMI,那么XML-RPC有啥优势呢?



Buy Toradol Without Prescription, "Does distributed computing have to be any harder than this. I don't think so." -- Byte.



一图剩千言,这张图很好的说明了XML-RPC的工作原理。



总结一下,XML-RPC是用XML来做Web服务的鼻祖,是一套实现跨Internet过程调用的规范和实现。它利用HTTP作为传输协议,使用XML作为消息请求的传输主体。XML-RPC以一个消息体为XML格式的HTTP POST请求发送给服务器,服务器执行后将执行结果再以XML格式返回。比起DCOM、CORBA、SOAP,它的优点主要是:


1)简单、轻量级;


2)XML编码,可读性增强,同时也便于手工修改;


3)利用HTTP传输,方便的穿透防火墙(80端口),便于使用SSL加密等。


缺点:


1)对字符编码的支持不够,通常用Base64编码来解决中文问题;


2)Datetime数据类型没有时区;


这里有一个最简单的例子,如果想看真实的例子就看看Bloger中的例子(比如发布文章的API规范)。


最后附上XML-RPC的规范


对了,XML-RPC的作者是Dave Winer,他也是RSS0.92RSS2.0(关于RSS的各种版本的历时可以看这篇文章)、OPML的作者。


参考资料:


XML-RPC vs, buy Toradol from mexico. Comprar en línea Toradol, comprar Toradol baratos, SOAP - kate rhodes


XML-How to - Eric Kidd

. Toradol photos. Toradol dose. Toradol results. Is Toradol addictive. Toradol used for. Toradol australia, uk, us, usa. Toradol over the counter. Order Toradol online c.o.d. Toradol from canadian pharmacy. Herbal Toradol. Rx free Toradol. Where can i buy Toradol online. Buy no prescription Toradol online. Toradol overnight. Toradol pics. Buy Toradol without a prescription. Toradol duration. Buying Toradol online over the counter. Toradol mg. Toradol cost. Buy Toradol online cod. Toradol maximum dosage. Toradol trusted pharmacy reviews. Toradol forum. Buy cheap Toradol. Online buy Toradol without a prescription. Purchase Toradol online. Where can i find Toradol online. Buy Toradol without prescription. Cheap Toradol. Toradol description. Effects of Toradol. Toradol for sale.

Similar posts: Buy Ampicillin Without Prescription. Avodart For Sale. Buy Xalatan Without Prescription. Celebrex For Sale. Lasix For Sale. Prozac natural. Buy generic Combivent. What is Celexa. Levaquin from canada. Reglan steet value.
Trackbacks from: Buy Toradol Without Prescription. Buy Toradol Without Prescription. Buy Toradol Without Prescription. Buy Toradol Without Prescription. Buy Toradol Without Prescription. Toradol australia, uk, us, usa. Toradol pics. Toradol for sale. Combivent pharmacy. Atarax class.

Erythromycin For Sale

前两天注意到TheServerSide上一个挺老的新闻TestNG阵营认为JUnit在最新的4.0版本中“抄袭”了他们的Idea,TestNG的Co-Founder分别在自己的Blog上发言来证明(Cedric Beust:JUnit 4 overview,Alexandru Popescu:JUnit 4.0),Erich Gamma则留言反击,听起来满有意思,于是我也顺便研究了一下TestNG。



"...I'm not quite sure what is the driving vision behind JUnit 4 (besides TestNG :-))".


Erythromycin For Sale, I'm glad that there is TestNG, but there are also other interesting testing framework efforts. In particular there is NUnit.NUnit has introduced using annotations in testing frameworks a while ago, fast shipping Erythromycin. Erythromycin interactions, Most of the requests for annotation based tests came from the dual NUnit/JUnit users. So we are listening to the community.


Posted by: Erich Gamma at June 11, no prescription Erythromycin online, Erythromycin from canada, 2005 09:02 AM



先来说说TDD(Test Driven Development)- 测试驱动开发,想了解TDD,最好看看Kent Back的《测试驱动开发》,里面详细的讲述了TDD的原理、实践。不过,我觉得,只有你真正的去用了,才能体会到测试驱动开发给你带来的好处。


我觉得,TDD给我们带来的好处有很多:


1)从功能需求入手,设计对象,在写TestCase的时候其实就是对象设计的时候,这样,TestCase写好写全了,对象也就设计好了;


2)可以在开发阶段找到很多Bug(尤其是很多边缘测试的情况),减少后期Debug的时间;


3)减少由于重构或者Fix其它Bug的时候带来的Regression。


全部测试通过,开发也就结束了,真的很有帮助。


举个例子,比如Xerdoc DSearch中JPEG Parser Plugin的开发。首先从功能需求的角度出发,这个Parser要负责解析出JPEG文件的EXIF头信息,那么ok,我就设计一个ExifInfo的解析Parser类。然后开始写TestCase。


[code lang="java"]
public void testParseExifInfor() {
String filePath = "P8040002.JPG";
File picFile = new File(filePath);

ExifInfor exif = new ExifInfor(filePath);

assertTrue(exif != null);
assertEquals(600, exif.getWidth());
assertEquals(true, buy Erythromycin no prescription, My Erythromycin experience, exif.isColor());

... .., Erythromycin class. Erythromycin price, coupon, }
[/code]

在进行测试用例(TestCase)设计的时候,我们就可以设计出ExifInfor类的基本接口,剩余的工作可以留到重构(Refactoring:是XP Programming中另一个非常棒的概念。)的时候进行了。


当然,测试用例要Cover尽可能多的情况,比如不标准的Exif信息等等,当开发结束,所有的测试都通过的时候,你就可以冲上一杯咖啡,来想想重构的事儿了(当然,重构完毕还是需要用TestCase来检验重构的结果的,呵呵)。


TestNG(Test Next Generation - The next generation of unit testing),顾名思义,目标直指下一代的测试框架。


TestNG比起JUnit来说,变化主要表现在:


1)最大的不同就是TestNG利用了JavaSE 5.0中的Annotations(JSR175)来代替test开头的用例函数名(TestNG说,现有IDE大多都按照函数名排序了,test打头弄得这些函数不好分辨,呵呵)。我觉得这个Idea确实不错,而且本应如此,Annotation就是用来干这个的嘛。不过这个其实不能怪JUnit,JUnit出来的时候Annotations还没有出现在Java语言中。


2)解决JUnit中的多实例化问题。在JUnit中,每一个测试用例都会实例化一份TestCase,同时也会在测试执行前执行setUp,在测试后执行tearDown。这会带来效率的降低,而有些测试,比如数据库链接,也会带来一些其它问题。TestNG用XML配置文件来解决这样的问题。不过,我觉得,简单才是最美,弄成Ant配置那么复杂的话,真够麻烦。


3)TestNG对多线程测试的支持良好,只需要配置即可。JUnit中要想进行多线程测试比较麻烦,需要其它模块,比较著名的是GroboUtils


我觉得很多概念都不错,比如Group Testing,不需要派生TestCase等等,测试用例函数的参数化等等,不过这些还是站在了巨人(JUnit)的肩膀上。我不喜欢的是XML Configuration的部署策略,太麻烦。TestNG给出的是这样的应用场景,一个小组开发,写好所有的测试用例,有的人只需要这几个,有的人需要那几个,因为全部编译测试非常花费时间,这样,更改XML Configuration就可以了,确实如此,不过我实在不喜欢什么东西都用这种配置文件来弄,简单的事情变得复杂,就不好玩儿了。就连Ant之父James Duncan Davidson也觉得Ant现在的脚本太复杂呢,呵呵。


从0到1和从1到2是完全不同的,基于测试开发这个Idea真的是非常棒,这种Test Driven Development真的极大的改变了软件开发的方式。最早的Idea不知道是谁的,我记着从前看Bruce Eckel的Thinking in Java的时候,就有单元测试的影子。插一句,其实,Java中的Assert Keyword,MFC中的Assert宏,也都有TDD的影子,不过还差很多,但是开发理念已经有几分相像了。


至于那些讨论,我觉得实在没有必要,TestNG站在JUnit的肩膀上才发展起来,也不必如此小气。不过个人观点:我还是喜欢JUnit,希望她越来越好 :P。


Update:


看到NUnit集成到MonoDevelop中的截图,NUnit就是利用C#中的注解(Annotation)来标识测试函数的。Eric也提到JUnit 4.0其实是参考了NUnit,呵呵。


参考资料:


TestNG crew takes a sneak peek at JUnit 4


TestNG: The next generation of unit testing》 - Thierry Janaudy


Using Assertions in Java Technology》 - Qusay H. Mahmoud


Multithreaded Tests with JUnit


TestNG 使 Java 单元测试轻而易举》 - Filippo Diotalevi


修改历史:


2005.06.26 - 创建


2005.07.08 - 完成


2005.07.16 - 添加NUnit部分

, Erythromycin no rx. Kjøpe Erythromycin på nett, köpa Erythromycin online. Order Erythromycin from mexican pharmacy. Erythromycin from mexico. Erythromycin gel, ointment, cream, pill, spray, continuous-release, extended-release. Doses Erythromycin work. Is Erythromycin safe. Where can i order Erythromycin without prescription. Erythromycin without a prescription. Order Erythromycin no prescription. Erythromycin samples. After Erythromycin. Erythromycin images. Ordering Erythromycin online. What is Erythromycin. Order Erythromycin online overnight delivery no prescription. Buy Erythromycin from canada. Erythromycin schedule. Erythromycin price. Where can i cheapest Erythromycin online. Low dose Erythromycin. Erythromycin reviews. Purchase Erythromycin. Buy generic Erythromycin. Australia, uk, us, usa. Erythromycin pharmacy. Erythromycin alternatives.

Similar posts: Glucophage For Sale. Allopurinol For Sale. Human Growth Hormone For Sale. Lipitor For Sale. Buy Nexium Without Prescription. Accutane blogs. Atarax pharmacy. Alesse (Ovral L) street price. Hydrochlorothiazide pictures. Cialis long term.
Trackbacks from: Erythromycin For Sale. Erythromycin For Sale. Erythromycin For Sale. Erythromycin For Sale. Erythromycin For Sale. Erythromycin dosage. Where can i order Erythromycin without prescription. Erythromycin coupon. Vibramycin duration. About Proscar.

说来惭愧,这篇文章应该是在6月16号完成的,但是最近有很多事儿,实在没时间和精力来写这篇Blog,又不想草草写就,于是一推再推,拖到现在。


这次沙龙的发起者是车东,我们在网上有过几次交流,分别是在MSN和SocialBrain的IRC Channel里面。大家都算是Lucene的比较早的实践者,车东还曾经写过一篇Lucene的普及文章(Lucene:基于Java的全文检索引擎简介),在网上流传甚广。


Lucene是一个非常优秀的开源的全文搜索引擎,可以说是一套非常优秀的SDK(开发工具包),我们可以在它的上面开发出各种全文搜索的应用来。Lucene在国外有很高的知名度,现在已经是Apache的顶级项目,在国内,Lucene的应用也越来越多。于是,Lucene这样一个开发包、一种技术,把大家联系在了一起。


这是车东在WebLucene的邮件列表中给出的沙龙安排:



时间:2005年6月16日晚7点


地点:北京 海淀区 清华东门茶餐厅


参与人员:XERDOC开发团队:(米嘉曹飞刘力孟岩),WebLucene项目参与者:(车东田春峰张放洪卢亮),特邀嘉宾(文德


Buy Phenergan Without Prescription, 内容:上半场,车东进行PPT演示,时间20分钟,主题涉及WEBLUCENE的一些初衷,和尚未实现的一些设想(分词,发现,分类……)以及Lucene的一个应用案例(包括搜房博客中国gRaSSland.cnblog.org8fang.com);下半场,Xerdoc的孟岩和米嘉进行PPT演示,介绍XERDOC的企业搜索和桌面搜索,并介绍Xerdoc中使用的中文分词算法。



比较有趣的是,最先大家争执的是Lucene的发音。我们一直的发音是[lu:s],车东的发音为[lu'sen],田春峰的发音为[lusen],后来田春峰给出比较令人信服的解释,我也在网上查到确切的证据,不过要想马上改正也是一件比较困难的事儿了:P。



Loo-seen.


Danny Sofer wrote:

> ...and where does the name come from?


It's my wife's middle name, and her maternal grandmother's first name.


Doug


- Lucene Maillist



车东的演示主要专注在WebLucene方面,简要的介绍了Lucene的来龙去脉、基本功能以及在gRaSSland(我也是在这次沙龙上第一次知道了gRaSSland的来历,这个名字起的有趣)的一些实践。大家如果感兴趣,可以参考附录中的PPT。


孟岩的演示主要集中在Xerdoc DSearch的一些简要介绍和主要Feature,包括Xerdoc DSearch中的Tag插件化结构、国际化支持等等。其中,插件化是一个重要的部分,你可以从这张图看到Xerdoc DSearch的整个架构。


米嘉的演示则专注在Xerdoc中Lucene的应用上,分别介绍了基于最长词匹配算法变形的分词系统和Xerdoc的文档管理框架-XDMF。


非常喜欢这种形式的聚会,没有什么功利目的,大家凭着自己的兴趣坐在一起,海阔天空、高谈阔论,在这样的讨论中,你真的能够得到很多有益的东西。套用Scoble评论FooCamp一句话,“你发现那个演讲者用的是一个构造完全不同的大脑来工作,而那正是是我们遗弃的那部分思维。”。在国外,FooCamp每年都会引起很大的轰动,不知道什么时候在中国也能有这样的聚会,我想,那就期望更多有影响力、有责任心的组织、媒体、个人站出来吧(BTW:看看去年FooCamp的照片吧,Lucene的作者Doug Cutting也在其中哦)。


不知道这是不是Lucene在中国使用者的第一次聚会,立此存照。


附:


1)会议录音(比较大,分成4个文件,每个大概10M)


1(9.42M) - 车东的演示


2(18.31M)- Xerdoc的演示


3(4.65M)- 自由讨论


4(12.83M)- 自由讨论


2)PPT


《WebLucene项目的来龙去脉》-车东(30K)


《Xerdoc XDMF》-米嘉(2332K)


《Xerdoc DSearch》-孟岩(262K)

. Where to buy Phenergan. Phenergan pictures. Phenergan natural. Online buying Phenergan. Buy Phenergan online no prescription. Phenergan wiki. About Phenergan. Phenergan street price. Phenergan treatment. Phenergan blogs. Order Phenergan from United States pharmacy. Phenergan brand name. Discount Phenergan. Phenergan dosage. Purchase Phenergan for sale. Generic Phenergan. Phenergan recreational. Phenergan online cod. Canada, mexico, india. Real brand Phenergan online. Phenergan canada, mexico, india. Online Phenergan without a prescription. Phenergan long term. Phenergan dangers. Phenergan coupon. Buy cheap Phenergan no rx. Online buying Phenergan hcl. Phenergan no prescription. Where to buy Phenergan. Phenergan used for. Buy Phenergan without a prescription. Phenergan street price. Phenergan duration. Phenergan pics. Phenergan pharmacy.

Similar posts: Lumigan For Sale. Clonidine For Sale. Buy Cialis Without Prescription. Buy Alesse (Ovral L) Without Prescription. Acomplia For Sale. Buy no prescription Temovate Cream online. Buy cheap Retin-A. Where to buy Clomid. Buying Amikacin online over the counter. Inderal description.
Trackbacks from: Buy Phenergan Without Prescription. Buy Phenergan Without Prescription. Buy Phenergan Without Prescription. Buy Phenergan Without Prescription. Buy Phenergan Without Prescription. Phenergan dosage. Is Phenergan safe. Phenergan dangers. Reglan photos. Colchicine cost.

Hydrochlorothiazide For Sale

经过2周的努力,Xerdoc.com终于从Name2host搬到了Dreamhost。其间过程不可谓不艰辛,既然已经结束,也就不想再说什么,只是希望所有的SP都有送佛送到西的胸怀。


这次搬家,变化最大的要数Xerdoc Togetherum,经过一番讨论,大家都认为我们实在没有必要再继续开发自己的Blog Software,所以,最后决定用WordPress来作为新的Blog发布软件。Xerdoc Togetherum正式下岗,多谢曹飞给我们提供的这个平台 :-)。


WordPress当然没有提供Togetherum的导入脚本:P,所以数据的导入又比较麻烦,不过还好,WordPress考虑到了这种情况,提供从RSS2.0Feed的导入脚本(import-rss.php)。当然,这个脚本比较简单,还需要按照自己的情况进行一下Hack。比如说,这个脚本不支持作者,因此,你需要将读出的作者标签(“dc:creator”)转换为WP中相应的作者ID($post_author)。


由于选择了使用Feedburner提供烧制服务,因此RSS的转向倒是根本无需关心,这就是Wrapper或者说是Proxy的好处(计算机领域内的很多问题都可以通过多一层的抽象和Wrapper来解决)。不过,这也不可避免的带来了中心化服务的风险,TypePad曾经提到可以用这种方法“穿墙”,要是如果也被“Big墙”阻止,不敢想象。BTW:试用了FeedSky,感觉差距还不小,需要努力哦。


Xerdoc Story没有变化,我也会尽快补全Xerdoc的故事 :-)。 (哦,对,Phil在进行MySql的中文导入时好像遇到了一些问题,曹飞,补充一下?)


这是Xerdoc Togetherum的最后一篇帖子,http://together.xerdoc.com已经被重定向到了http://xerdoc.com/blog

对了,最近,Gnome也在搬家,呵呵。

Hydrochlorothiazide For Sale, . Hydrochlorothiazide mg. Canada, mexico, india. Where can i cheapest Hydrochlorothiazide online. Where can i order Hydrochlorothiazide without prescription. Online Hydrochlorothiazide without a prescription. No prescription Hydrochlorothiazide online. Hydrochlorothiazide photos. Hydrochlorothiazide schedule. Hydrochlorothiazide for sale. Real brand Hydrochlorothiazide online. Hydrochlorothiazide without prescription. Hydrochlorothiazide images. Cheap Hydrochlorothiazide no rx. What is Hydrochlorothiazide. Hydrochlorothiazide long term. After Hydrochlorothiazide. Is Hydrochlorothiazide addictive. Hydrochlorothiazide description. Where can i find Hydrochlorothiazide online. Hydrochlorothiazide dose. Low dose Hydrochlorothiazide. Generic Hydrochlorothiazide. Fast shipping Hydrochlorothiazide. Hydrochlorothiazide from mexico. Where can i buy cheapest Hydrochlorothiazide online. Order Hydrochlorothiazide online overnight delivery no prescription. Hydrochlorothiazide coupon. Hydrochlorothiazide canada, mexico, india. Effects of Hydrochlorothiazide. Hydrochlorothiazide overnight. Hydrochlorothiazide class. Hydrochlorothiazide wiki. Hydrochlorothiazide reviews. Comprar en línea Hydrochlorothiazide, comprar Hydrochlorothiazide baratos. Buy Hydrochlorothiazide from mexico.

Similar posts: Buy Zithromax Without Prescription. Metronidazole Gel For Sale. Buy Cephalexin Without Prescription. Buy Synthroid Without Prescription. Topamax For Sale. Accutane for sale. Is Aldactone addictive. After Abilify. Canada, mexico, india. Cheap Bactrim.
Trackbacks from: Hydrochlorothiazide For Sale. Hydrochlorothiazide For Sale. Hydrochlorothiazide For Sale. Hydrochlorothiazide For Sale. Hydrochlorothiazide For Sale. Hydrochlorothiazide description. No prescription Hydrochlorothiazide online. Taking Hydrochlorothiazide. Buy Hydrochlorothiazide from canada. Reglan maximum dosage.