开源软件的盛宴

Open Source

偶得一张很有意味的图片,拿来共赏。这是由各种开源项目的 logo 等为原型设计的作品,作者不可考。看看你能说出他们各自代表哪个项目吗?^_^

WordPress JS Quicktags 编辑器升级

WordPress JS Quicktags 1.2前不久,为了提高后台速度我禁用了可视化编辑器 TinyMCE,但是仅有的 Quicktags 编辑器功能稍显薄弱。在网上搜寻一番后总结一下自定制 Quicktags 编辑器按钮的方法,并为大家介绍原作者最近推出的升级版 JS Quicktags!

修改 Quicktags 按钮

Quicktags 是一款基于 Javascript 的在线编辑器,其所有代码都存储在“quicktags.js”(../wp-includes/js/quicktags.js)文件中。
首先备份原有的 quicktags.js。
分析源代码可得,添加按钮的函数为“edButton”,函数定义为:

function edButton(id, display, tagStart, tagEnd, access, open) {
this.id = id; // 按钮所在input对象的id,不可为空;
this.display = display; // 按钮所显示的文字,不可为空;
this.tagStart = tagStart; // 起始标签,可为空;
this.tagEnd = tagEnd; // 结束标签,可为空
this.access = access; // 如不需要额外的按钮“/close”进行闭合,-1
this.open = open; // 如不需要额外的按钮“/close”进行闭合,-1
}

Quicktags 按钮操作分三类:

  1. 普通按钮:点击按钮插入起始标签,输入内容,点击原按钮/close按钮闭合标签;
  2. 普通按钮:选定内容,点击按钮自动插入其实标签和结束标签;
  3. 高等按钮:无论使用以上哪种方法插入标签,自动弹出窗口提示输入参数值,如填写图像的地址和描述。

普通按钮如:标题(<h1>-<h6>)、粗体(<strong></strong>)、有序列表(<ol><li></li><ol/>)等;
高等标签如:图像(<img … />
)、链接()、Footnote脚注标签(稍后介绍)。
如果添加普通标签,可以参照粗体按钮代码:

edButtons.push(
new edButton(
‘ed_bold’
,’B’
,’
,’

,’b’
)
);

如果添加高等按钮,可以参照超级链接按钮代码:

edButtons.push(
new edButton(
‘ed_link’
,’Link’
,”
,’‘
,’a’
)
); // special case

function edInsertLink(myField, i, defaultValue) {
if (!defaultValue) {
defaultValue = ‘http://’;
}
if (!edCheckOpenTags(i)) {
var URL = prompt(’Enter the URL’ ,defaultValue);
if (URL) {
edButtons[i].tagStart = ‘‘;
edInsertTag(myField, i);
}
}
else {
edInsertTag(myField, i);
}
}

注意:你也可以不使用所谓的高等按钮,直接插入一段代码后,手动填写诸如href、url、src、art、title 等参数值。例如我编写的“话题性插图按钮”,意在为一篇日志插入一幅的插图,自定义居左或者居右,自定义边距:

edButtons.push(
new edButton(
‘ed_topicimg’
,’Top-img’
,’
,”
,’m’
,-1
)
); // special case

升级版的 Quicktags

访问了原作者Alexking的Blog之后,我找到了 JS Quciktags Editor 最新版(版本号:1.2)。除了代码的优化之外,作者丰富了可用标签,值得提及的是“Footnote”按钮。
Footnote 可以在光标处插入上角标(如:WordPress[1]是一种Blog[2]文章发布系统。),并且链接到文末的条目,这是对 HTML 语言中锚点的应用。对于严谨的博客文章排版者来说这是一个很便捷的功能。虽然 Footnote 并不能完成自动排序、排序纠错之类的复杂功能,但是我们又能对一款定位为“快速、轻量级”的编辑器苛求多少呢。

  1. [1] [back]WordPress是一种使用PHP语言和MySQL数据库开发的开源、免费的Blog(博客,网志)引擎,用户可以在支持PHP和MySQL数据库的服务器上建立自己的Blog.
    WordPress是一个功能非常强大的博客系统,插件众多,易于扩充功能.安装和使用都非常方便.目前WordPress已经成为主流的Blog搭建平台.
  2. [2] [back]blog的全名应该是Web log,中文意思是“网络日志”,后来缩写为Blog,而博客(Blogger)就是写Blog的人。从理解上讲,博客是“一种表达个人思想、网络链接、内容,按照时间顺序排列,并且不断更新的出版方式”。

QQ 邮箱也搞 RSS 订阅服务

今天打开QQ邮箱,在信息栏中发现“QQ邮箱‘阅读空间’内测”的更新提示。显然QQ邮箱也开始支持RSS订阅了。
点击该提示进入激活页面,信息如下:

QQ Reader 界面
QQ邮箱最新推出“阅读空间”,让您在第一时间看到朋友Qzone、博客的更新内容。
此功能正在试运行,目前部分邮箱用户已经开通服务。
如果您有兴趣试用此服务,请点击这里开通
(开通时必须重新登录您的QQ邮箱)

开通服务,重新登录邮箱直接进入“我的阅读空间”界面。

功能特点:

  • 支持OPML文件导入导出
  • 支持订阅分类
  • 填写博客地址添加好友博客
  • 通过邮件推荐给好友
  • 视图模式(列表、摘要、全文)
  • 填写QQ号码添加好友Qzone
  • QQ  Reader 订阅源管理


不足之处:

  • 界面不够简洁
    首页冗余信息过多,我们订阅RSS本身就是为了便捷,设置那么多友情提示在首页是对QQ用户能力的低估……直接显示更新条目最好
  • 阅读流程太繁琐
    列表视图下需要“点击标题-进入条目-阅读内容”,而且还需要点击返回按钮才能回到列表。相比QQ邮箱的邮件列表的展开功能,这样的操作很繁琐
  • 不能便捷设置“已读”状态
    不能直接在列表中直接标记某一条目为已读。必要吗?这涉及到下一个问题“显示未读条目”
  • 不能单独显示未读条目
    进入某一个订阅之后不能过滤以陈列未读条目。当然如果你觉得这一点无所谓的话那么前面提到的“不能便捷的设置某一条目‘已读’状态”也就无所谓了
  • “已读”“未读”区分不明显
    如图,某条目的状态是靠前面的蓝色/灰色图标进行区分的。这在列表视图下还算有效,但是在“摘要”和“全文”视图下就显得力不从心了。建议用粗体标题、标题色彩或标题背景色进行区分。
    QQ Reader 条目 列表模式
  • 浏览器支持
    在IE下使用时显示没有问题,但是在Firefox下却不够好。翻页链接在Firefox下无论何时都显示为蓝色可激活状态,容易误解为还有其他内容在下一页/上一页;列表模式下长标题不能完整显示。如下图,
    QQ Reader Firefox bug

其他期待:

  • 流行的“加星标记”、“Tag标记”等功能
  • 在Qzone选择性的显示订阅
  • 和QQ邮箱记事本结合起来(QQ邮箱已经可以将邮件导出到新记事)

HTML 及 XML 语言的转义字符

在生成html文档或xml文档时要注意一下特殊字符,否则会出错。
HTML中的转义字符
HTML中<, >,&等有特殊含义,(前两个字符用于链接签,&用于转义),不能直接使用。使用这三个字符时,应使用它们的转义序列,如下所示:
转义字符 1
前者为字符转义序列,后者为数字转义序列。数字转为字符对应的ASCII码值。例如 & lt; font >显示为,,若直接写为则被认为是一个链接签。

需要说明的是:

  • 转义序列各字符间不能有空格;
  • 转义序列必须以”;”结束
  • 单独的&不被认为是转义开始
  • 区分大小写
  • 另一个需要转义的字符是引号,它的转义序列为”" “或”"”

    HTML使用的字符集是ISO &859 Larin-1字符集,该字符集中有许多标准键盘上无法输入的字符。对这些特殊字符只能使用转义序列。
    XML转义字符
    不合法的XML字符必须被替换为相应的实体。
    转义字符 2
    如果在XML文档中使用类似”<” 的字符, 那么解析器将会出现错误,因为解析器会认为这是一个新元素的开始。所以不应该像下面那样书写代码:

    if salary < 1000 then

    为了避免出现这种情况,必须将字符”<” 转换成实体,像下面这样:

    if salary < 1000 then

    下面是五个在XML文档中预定义好的实体:

    实体必须以符号”&”开头,以符号”;”结尾。

    注意: 只有”<” 字符和”&”字符对于XML来说是严格禁止使用的。剩下的都是合法的,为了减少出错,使用实体是一个好习惯。