<?xml version="1.0" encoding="UTF-8"?><!-- generator="WordPress/2.5.1" -->
<rss version="0.92">
<channel>
	<title>Fwolf's Blog</title>
	<link>http://www.fwolf.com/blog</link>
	<description>随心·随意·随缘·努力～</description>
	<lastBuildDate>Mon, 12 May 2008 15:30:40 +0000</lastBuildDate>
	<docs>http://backend.userland.com/rss092</docs>
	<language>en</language>
	
	<item>
		<title>升级WP旧模板，让它支持Widgets</title>
		<description>正如大家所见，我使用的WordPress模板已经是很旧很旧的了，是以前在WordPress 1.5还是1.0系列的默认模板之上，简单修改而来的。没有选用三栏布局，因为我喜欢用稍微大一点的字体，三栏布局对我来说侧边栏东西太多，加上文章长了以后侧边栏的下面空白很大。不过旧模板自然也就没有Widgets：

	No Sidebars Defined

	You are seeing this message because the theme you are currently using isn’t widget-aware, meaning that it has no sidebars that you are able to change. For information on making your theme widget-aware, please follow these instructions.

刚开始我还能忍受，Sidebar上没有的东西俺自己[手工加上](366)，不过用上[Simple Tags](http://wordpress.org/extend/plugins/simple-tags/)插件之后，感叹到了插件和Tags的强大，Relate Post很方便，可Relate Tags就是出不来，探查一番，原因应该就是我的模板不支持Widgets。所以忍不住了，模板可以不变样，但不能不升级，我就动手把它改成支持Widgets的吧。

刚才的提示中已经给出了[修改指引的链接](http://automattic.com/code/widgets/themes/)，首先把模板中的Sidebar改成`ul`形式的，`Theme Editor -> Sidebar (sidebar.php)`，第一行的`ul`换成`div`即可：

	
	......中间的很多内容
	

看了一下，对外观没有太大影响，css应该是用id来引用的，不过还是需要调整一点css：

	/* 启用Widgets后Sidebar样式有些变化，在这里修正 */
	#sidebar {list-style: ...</description>
		<link>http://www.fwolf.com/blog/post/402</link>
			</item>
	<item>
		<title>新的广告交换、51.la统计和web标准</title>
		<description>标题又有点风牛马不相及，不过还是有那么一点点关联的，再说了，一篇文章的内容相对广泛，不仅有利于SEO，而且还会给胡乱转载者以困惑，同时还不会干扰正常转载、引用的朋友，嘿嘿。

首先说今天我第一次见到的网站广告交换--[BlogUpp](http://www.blogupp.com/)，感觉很新颖，很方便，就顺手也弄了一个，放在右边的广告下面，感觉特点如下：

1. 不用注册，直接输入网址，就得到一段代码，扔网站页面上就行了。
2. 交换广告是竖向排列的两个，固定的大小和布局，至少目前没得选择，不过适合blog这种右边大条空白的情况。
3. 加载的时候，先显示文字，然后加载图片，当然文字和图片都是从每个网站上攫取出来的，中文支持良好。
4. 正常显示广告的情况下，一般是显示图片，鼠标滑过的时候，切换为文字内容，既用图片吸引了眼球，又能让读者根据文字内容来了解是否真的需要打开浏览，应该说这一点我觉得是它设计最好的地方。
5. 提供两种形式的代码，一种是`iframe`另外一种是`style+div`，我鸡蛋里挑点骨头：第二种里面的`target="_blank"`这种用法是不符合w3c标准的。

之所以对w3c标准如此敏感，是因为下午刚刚为51.la统计代码无法通过w3c验证而头疼（验证的不是本blog的页面，选用dtd是`XHTML 1.0 Strict`）。先来看一下这段代码吧：

	
	

用[w3c的validator](http://validator.w3.org/)一检查，错误就出来了，主要有两处，一处比较简单：

	document type does not allow element "a" here; missing one of "p", "h1", "h2", "h3", "h4", "h5", "h6", "div", "pre", "address", "fieldset", "ins", "del" start-tag . 

就是说a不应该出现在这里，它属于inline元素，应该被包含在block元素中云云，img也是一样，解决方法是用p或者div元素来包含他们就可以了。

而第二个不兼容就比较棘手了：

	there is no attribute "target" . 

也就是`target="_blank"这种用法是标准不允许的，这个问题着实难解决了点。

有朋友说了，你不会用js来实现么？的确，网上有解决方式是先赋予a链接`rel=xxx`属性，然后用js判断属性再脚本运行时添加`target="_blank"属性，或者直接用js打开脚本的也算一种方法。

可是各位，你们没有发现，这个链接是在``标签中么？这个标签中的代码只有在浏览器不支持js的时候才会显示，试问，在不支持js的浏览器中，刚才的js解决方案还能用么？

最终，我也没有更合适的解决方案，只有把`target="_blank"去掉，然后在旁边注上一行字：

	
		
			
				
				Tips: 在新窗口中打开链接，浏览更方便（点鼠标右键）。
			
		
	

我想，目前也只能用这种方式解决了吧，好在不支持js的浏览器、又是人在用的（非机器人），应该不多。

其实，51.la代码的兼容性之所以被发现，之所以不得不改，也不是我吹毛求疵，而是用了eclipse之后，它的语法检查给发现的（够强大的），实在是不习惯看到一对error和warning在下面待着，“被迫”修改代码使它们更加“标准”，我想这也是eclipse的一个优点吧。

PS: 在[BlogUpp](http://www.blogupp.com/)缩图中我网站的首页太难看了，一个图片也没有，hmm...，有没有好一点的wordpress两栏布局模板，突出文章内容的？偶也换换？

#### Update @ 2008-05-12

看到[妖精](http://blog.newchen.com/)把[BlogUpp](http://www.blogupp.com/)的上下布局给横过来了，猜测是自己手工改的，官网上好像没这个功能啊。。。
 </description>
		<link>http://www.fwolf.com/blog/post/401</link>
			</item>
	<item>
		<title>选择Eclipse PHP Development Tools(PDT)作为PHP开发工具</title>
		<description>vi虽然轻巧，但一来在图形界面下没有必要一定用纯cli的东东，二来在项目开发的环境中vi有些吃力。Zend Studio呢一直用着他的keygen也挺不好意思的，功能上我只能说是一般，再一般不过了，就是个图形化的编辑器，带代码提示什么的辅助功能，最有用印象最深的居然是选择多行然后用TAB整体缩进。

所以，尝试着把开发工具更换为[PHP Development Tools(PDT)][pdt]，eclipse的大名早有耳闻，只是从来不用java，也就没有摸过。早在2004年底作项目的时候见同事用过，慢就一个字，强也是一个字。至于为何不选[PHPEclipse](www.phpeclipse.de/)，倒也不是听到网上一边倒的声音，而是我实在是有点不习惯它的复杂，相比之下刚出炉不久功能不全的[PHP Development Tools(PDT)][pdt]正和我意。

我是从[官网](http://download.eclipse.org/tools/pdt/downloads/)下载的pdt-all-in-one-R20080103-linux-gtk.tar.gz，有点像懒人包，直接解压就能用了，功能基本上都配置好了。额外装了几个插件，都是用系统自带功能`Help -> Software Updates -> Find and Instal`安装的：

* SimpleTest, ，单元测试工具
* Subclipse, 
* WordWrap, , 自动折行，不过不太好用，每自动折一行行号也会随之增加，[作者说](http://ahtik.com/blog/eclipse-word-wrap/)这个问题还比较麻烦，暂时无法解决呢。还是养成手工断行的好习惯吧。
* ZendDebugger, 

基本上就够我用了。这种安装方式实在是很方便，能够后台运行更方便。

配置Debug的时候麻烦一些，其实到后来我也没弄太明白，本来想用XDebug的，不过上官网一看基本上只有for windows的二进制包，linux下的多半还得自己编译（网上的例子也多半是基于windows的环境，很无奈），就转向Zend了。谁知Zend官网上这个Debugger的链接也不好找，产品列表里根本就没有，现在这个更新/安装地址已经忘记是从哪里搞来的了，不过能用。

Debug能用了，不过只限于PHP Script运行方式，如果要完整的web测试的话，还得去修改php.ini加Zend Debugger的扩展，懒得弄了，处理得当的话需要debug的时候不多，一般print_r/var_dump也基本够用了。

[PHP Development Tools(PDT)][pdt]的编辑区比Zend Studio要“小”一些，因为界面的边框太“厚”了，Tab也有点大，可以在界面设置中取消圆角，能省点地方。编辑区小的问题不要紧，Ctrl-M能放到最大，加上其它窗口可以缩起来，用的时候调出来，用完自己还会缩回去，所以总体界面上还是要比Zend Studio要好用。

功能上，最喜欢的就是Eclipse无时无刻不在的语法检查，可以迫使我们摒弃掉一些坏毛病。不过这个功能和Smarty模板合不来，像我原来smarty模板文件都是.html扩展名的，这下可遭殃了，一大堆无法处理的错误信息。中间试过[PHPEclipse](www.phpeclipse.de/)，它支持Smarty模板，不过是另外分配了一个编辑器，同样也只能认.tpl扩展名，模板编辑功能几乎没有，就剩下一个模板语法高亮显示，居然还不像其它编辑窗口一样能够调整背景（我习惯把编辑区背景设置为#CCE8CF，节省眼力），索性不用了。费点功夫把所有模板都改成.tpl扩展名的，然后当一般纯文本处理，也没有什么不爽的，js和css基本上都是在单独的文件中，有相应的编辑器，手工写点html code也无妨。

不过还是推荐一个[PHP Development Tools(PDT)][pdt]中的for Smarty的插件[smartypdt](http://code.google.com/p/smartypdt/)，主意虽好，但程序非常不成熟，在[PHP Development Tools(PDT)][pdt]的eclipse 3.3上基本上没法用，先关注一下，期待以后能成熟起来吧。

最后，总体感觉Eclipse虽然速度依然不快，尤其是启动速度，尤其是我调用远程主机上的项目文件，但其强大的功能足以掩盖这些缺点，还是那句话，谁用谁知道~~这几乎是我用过的可操作性最强的Java软件了。

[pdt]: http://www.eclipse.org/pdt/

#### 参考

* [在Zend Studio for Eclipse 6中自动换行](http://www.gaobo.info/read.php/498.htm)
* [Eclipse项目的编码设置](http://www.v-sky.com/blog/?p=17)

#### Update @ 2008-05-03

eclipse的配置都保存在workspace目录下，比如设置了php的文件模板，就保存在`$workspace/.metadata/.plugins/org.eclipse.core.runtime/.settings/`目录下的`org.eclipse.php.ui.prefs`文件中。

快捷键的设置保存在`org.eclipse.ui.workbench.prefs`中。

隐藏得好深，找了半天。

#### Update @ 2008-05-04

字体方面，建议选择英文等宽字体`Bitstream ...</description>
		<link>http://www.fwolf.com/blog/post/400</link>
			</item>
	<item>
		<title>Gregarius编辑feed时中文乱码的解决</title>
		<description>Gregarius编辑feeds的时候，中文总是乱码（版本r1787），其实解决方法很简单的：

找到`admin/channels.php`这个文件，找到第900行，修改为：

	//$title = htmlentities($title,ENT_QUOTES);
	$title = htmlspecialchars($title, ENT_QUOTES);

这个是feed标题乱码的修正，再向下翻到Description部分，大概在988行左右，修改为：

	// Description
	//$descr = trim(htmlentities(strip_tags($descr), ENT_QUOTES));
	$descr = trim(htmlspecialchars(strip_tags($descr), ENT_QUOTES));

这样就ok了。

原因很简单，htmlentities这个函数在转义到html标记的时候，会吧中文字符中一些字节也进行了转义，形成了乱码，而htmlspecialchars这个函数只转义特定的5个字符，不会存在这种情况。

hack之后，单引号和双引号都能输入了，但是反斜杠`\`仍然是不能输入的，应该是在输入处理的时候过滤掉了，或者进行了其他的转换，不过一般也用不到，就不改了。西文环境用户的处理习惯就是和我们不大一样啊。

#### 参考

* [PHP中htmlentities跟htmlspecialchars的区别](http://blog.fesite.com/2007/08/23/php-htmlentities-htmlspecialchars/)
 </description>
		<link>http://www.fwolf.com/blog/post/399</link>
			</item>
	<item>
		<title>Firefox3书签中的Tags存哪儿了？</title>
		<description>电脑岁数大了是不行，即使装上了号称速度有很大改观的Firefox3，我的老爷机也没快到哪儿去，这还是在一大票插件都由于不兼容被咔嚓了之后，唉。

不过Firefox3还是有些不错的新功能的，比如网址栏中的“星星”，和Gmail里面的哪个很像吧，不知道是谁家的专利，这个星星挺有意思，当你浏览到觉得不错的网站时，点一下星星就可以收藏起来了，默认是在书签的`Unfiled Bookmarks`文件夹中，以后可以慢慢整理；点两下星星会弹出窗口让你选保存位置，并可以输Tag。

Tag可以说是Web 2.0的标志性特征了，也是组织和查找信息的一种有效方式，所以我就很感兴趣，这个Tags被Firefox3存到哪个文件里去了？Tag的存储方式和Tag Cloud的算法我很感兴趣，也想看看FF的解决方式。

一般Firefox会把书签保存在bookmarks.html文件当中，不过Firefox3改进了，把书签放到了sqlite数据库中，文件名就叫做`places.sqlite`。这个文件在Firefox3运行时会以独占方式打开，关闭FF后才能用sqlite3打开。

起初没想到有什么难处，直接看schema，结果仔细的读了一遍也没发现哪些地方有tag的踪影：

* moz_anno_attributes 注释的属性，没几行数据，不知道干啥的
* moz_annos 目前是空的，应该是什么的注释
* moz_bookmarks 书签项目
* moz_bookmarks_roots 书签项目的根网站集合，新安装FF的还没数据呢
* moz_favicons 网站图标favicon的位置
* moz_historyvisits 哪个网站你浏览了多少次，偶的隐私啊。。。
* moz_inputhistory 输入历史？暂无数据
* moz_items_annos 书签的注释，也就是那个“Description:”
* moz_keywords 关键字，和“Description:”在一个界面输入，没啥用处
* moz_places 所有浏览的地址历史

看吧，没哪个表是和tag有什么关联的，可用grep一查，我标记的tag确实是在这个文件中，只好出绝招：

	sqlite3 places.sqlite ".dump" > t.sql

然后在t.sql里面一查找，终于明白了：

	INSERT INTO "moz_bookmarks" VALUES(346,2,NULL,4,2,'testtag',NULL,'',1208788891265751,1208788891362043);
	INSERT INTO "moz_bookmarks" VALUES(347,1,638,346,0,NULL,NULL,NULL,1208788891361294,NULL);

tag就是存在了`moz_bookmarks`这个表中，和书签的记录混在一起。像上面这种情况，每个tag除了自身占一行记录之外，如果有几个书签被标记了这个tag，那么就还会多出几条记录tag-书签关联关系的记录。

窃以为这并不是存储tag的最佳方式，而且FF在tag的使用上也太简单了，目前看到的就是一个`Smart Bookmarks`里能按常用tag查网站，连Tag Cloud也没有。一是不知道以后的tag数据格式是否会改变，二是应该会有扩展来完善这块功能，期待吧。
 </description>
		<link>http://www.fwolf.com/blog/post/398</link>
			</item>
</channel>
</rss>

<!-- Dynamic Page Served (once) in 0.383 seconds -->
