2008-08
19

Perl对YAML的支持很好,著名的Plagger就是用YAML作为配置文件的。

在Perl中读取YAML文件也很简单。常用的模块就是YAML,这是个纯Perl的实现,速度慢,但可以跨平台运行。 如果追求运行速度而不在乎平台问题,可以使用YAML::Syck和YAML::XS,两者都是C语言的实现。 YAML::Syck的C语言部分基于libsyck,而YAML::XS的C语言部分基于libyaml。 两者相比,YAML::XS稍稍快一点,而且它精确地实现了YAML标准1.1版的内容。

阅读全文 »

2008-07
27

这年头BlackBerry 7230的激活已经是老掉牙的话题了。其实原理相当简单, 无非是让BB做个到MDS服务器的连接,连上MDS之后BB就认为自己激活了, 然后就能使用cnwap正常上网了。maxpda上也有高人贴出了 自建MDS服务器进行激活的办法。

简单来说,BlackBerry 7230激活的过程如下:

  1. 导入ServiceBook,其中IPPP的IP地址需要指向MDS服务器。
  2. 在Options->Service Book中恢复删除所有内容。
  3. 设置Options->TCP的APN为空。
  4. 以上的设置是保证BlackBerry 7230能使用ServiceBook中设置的MDS服务器进行连接。
  5. 然后启动任意一款能不通过WAP建立网络连接的程序。QQ3可以,自带的浏览器似乎不行。
  6. 使用该程序建立直接的网络连接(不能走WAP)。
  7. 待BlackBerry 7230连接到MDS服务器之后,激活成功。
  8. 此时在Service Book中删除IPPP,并设置TCP的APN为cmwap,就可以用WAP上网了。
阅读全文 »

2008-07
20
PHP+MySQL八大动态Web应用实战

豆瓣上的介绍, 购买此书: 当当, 卓越, ChinaPub, 蔚蓝

这本书是今年二月份翻译的,两个人合作,用了一个半月的时间翻译+校对,虽然进度安排比较紧,但总算是按时交了稿,翻译的质量也还说得过去。

上周接到博文视点的消息,说这本书已经出版了,样书已经寄出来了。不过我还没收到,估计下周就能收到样书了吧。到网上查了查,发现各大书店已经开始卖了。

这本书的内容主要是面向PHP初学者的,但正如作者在前言中所述,这本书不会教你PHP和MySQL的基础知识,而是通过实际的项目进行讲解,在项目进展的过程中逐步地讲授需要的知识。个人认为这种方法要比教科书的好得多。我们在实际工作中学习也与之类似,不会有人去一步步手把手地教你怎样学习,都是直接将新人投入到项目中,在项目中磨砺。

书中介绍了八个实际可用的项目,除了基本的PHP和MySQL之外,还有较为新颖的Ajax、较高深的PEAR等内容。初学者通过这些项目可以切实地体会到PHP的方便性,而稍有基础的人则可以将书中的例子直接拿来,简单修改后即可直接放在网站上使用。当然,如果你已经是PHP高手,那么能从此书中学到的内容就有限了。

当然,本书自身也有一些不足之处,或许是因为作者精于技术但不善表达的缘故,书中一些概念的解释不太容易理解。加之我们英文水平有限,许多原文中的俗语都无法精确翻译出来,也影响了原文意思的表达。还望读者在阅读的过程中,借助Google、百度等搜索引擎,主动去查找那些难以理解的概念。另外,我们尽最大的努力保持翻译结果符合原意,但难免有疏漏之处,希望读者能够指出。



2008-02
04

这个东西应该是很老很老很老了,不过很奇怪在国内为什么没几个人知道呢?虽然跟本blog的主题——技术——没有太大的关系,但因为实在是太常用了,就在这里贴一下吧。

原文来自Jorma Oksanen’s Origami,版权为非商用免费,但作者要求写出他的名字。另外本文的图和说明文字来自这里:A4用紙1枚で2枚収納できるCDケースをつくる。这篇文章要比原文说明得详细一些。

阅读全文 »


2007-10
31

这两天一直在忙着做一个新的主题,暂且命名为Crystal吧。希望能带来一些新的体验。

做这个主题并没有花多大工夫,由于没有使用透明png图片,因此IE6的透明png问题就不用考虑,减少了很多工作量。而且也没有在Photoshop里打稿子而是直接写的CSS,因此页面设计上感觉有些粗糙,也是一个缺点吧。页面风格参考了awflasher的blog,在此向他表示感谢。


2007-10
28

这两天一直在策划着做一个新的主题,一个看起来更干净些的主题。 风格么,自然还是选择Web 2.0的那些特性了。 首先要做的第一件事儿就是做个logo。

以前做logo都是用photoshop,不过做好的大图缩小之后总是达不到想要的效果,于是斗胆尝试了一下Illustrator。 在网上找了好半天Illustrator,除了一个视频教程之外就没有入门级教程了,而那个视频教程看起来会急死人。 没办法只好自己摸索了,好在Adobe的东西基本操作都差不多,弄了一个晚上也弄了个八九不离十。 在这里诚心请教各位Illustrator高人指点。

先秀一下新做的图标吧。这是大图:

idv2-logo-big.png

将图标应用到页面上的效果。背景加了些黑色条纹。

idv2-logo-2.png

Update:被fcicq说那个图标和网址放在一起不太协调。的确,自己也觉得图标上的衬线字体与网址的无衬线字体不般配。 但图标中若使用无衬线字体,那么一个简单的“i”字母又显得过于单薄。干脆重新设计图标吧。

阅读全文 »

2007-10
15

响应realazy的号召努力学习算法中。 这个莱文斯坦算法(Levenshtein Distance)还是比较好理解而且很实用的,放在这里做个备份吧。

原文请见 http://www.merriampark.com/ld.htm

什么是莱文斯坦距离?

莱文斯坦距离(LD)用于衡量两个字符串之间的相似度。 以下我们称这两个字符串分别为 s (原字符串) 和 t (目标字符串)。莱文斯坦距离被定义为''将字符串 s 变换为字符串 t 所需的删除、插入、替换操作的次数''。

例如:

  • s="test", t="test", 那么 LD(s,t)=0,因为不需要做任何变换两者已相等;
  • s="test", t="tent", 那么 LD(s,t)=1,因为s变换为t只需做一次替换(将"s"替换为"n")。

莱文斯坦距离越大,字符串的相似程度越低。

莱文斯坦距离以俄国科学家Vladimir Levenshtein命名,他于1965年发明了这个算法。 如果你对Levenshtein这个词的发音有问题,也可以称这个距离为编辑距离

莱文斯坦距离被应用于以下领域:

  • 拼写检查
  • 语音识别
  • DNA分析
  • 剽窃检测

算法

  1. 设 s 的长度为 n,t 的长度为 m。如果 n = 0,则返回 m 并退出;如果 m=0,则返回 n 并退出。否则构建一个数组 d[0..m, 0..n]。
  2. 将第0行初始化为 0..n,第0列初始化为0..m。
  3. 依次检查 s 的每个字母(i=1..n)。
  4. 依次检查 t 的每个字母(j=1..m)。
  5. 如果 s[i]=t[j],则 cost=0;如果 s[i]!=t[j],则 cost=1。
  6. 将 d[i,j] 设置为以下三个值中的最小值:
    1. 紧邻当前格上方的格的值加一,即 d[i-1,j]+1
    2. 紧邻当前格左方的格的值加一,即 d[i,j-1]+1
    3. 当前格左上方的格的值加cost,即 d[i-1,j-1]+cost
  7. 重复3-6步直到循环结束。d[n,m]即为莱茵斯坦距离。

代码

代码请参考原文网站。 该网站给出了 Java、C++、Visual Basic三种语言的实现, 又在页面最下方的链接中给出了Perl、PL/SQL、TSQL、C#、Delphi、PHP 等数十种语言的实现方式。

所以我在这里就不献丑啦~。



2007-10
11

下面是 tech.idv2.com 上推荐阅读的技术文章,按照主题分类。其中标有★的为强烈推荐阅读的文章, 通常都是原创教程,也有翻译的优秀文章。

阅读全文 »

2007-09
27

最近看到一个Tag丢失事件,想到最近随着Wordpress的不断升级, 各位blogger或许都在考虑着将自己的blog升级吧。但是又有几人考虑到自己数据的安全性呢?

相信okevin就是因为太过于自信而直接在正式服务器上运行升级程序而造成的惨剧吧。 插件本身没有错,自由软件免费提供的前提就是“as-is”,作者不需承担责任的。 当然,作者肯定会尽力让自己的程序没有bug,但谁都不能保证程序不出错。 所以在对你的blog进行改造或升级之前,请务必要备份,备份,再备份。

我采用的方法是:

  1. 在自己的电脑上安装Apache、PHP和MySQL,并搭建好blog程序,数据也要和正式blog相同。在升级blog或安装插件之前,要先在本机上测试并验证没有错误之后才能上传到正式服务器上。
  2. 在自己的电脑上安装subversion来管理blog的代码。这样万一升级导致代码错误,能够轻松地恢复到升级之前的内容。
  3. 修改插件、模板时,先在自己的机器上调试通过后再传到服务器上。不要使用wordpress的模板在线编辑功能。
  4. 服务器上要定期备份数据库,可采用phpMyBackupPro,设置每天自动备份并将备份文件发送到自己的信箱里。
  5. 写个php脚本每个月备份当月的 wp-content/uploads 下的文件。
  6. 如果在正式服务器上有shell权限,上面的备份就可以通过cron来进行。

如果你能做到上面这几点,你的blog的程序和数据基本上就万无一失了。不过它的缺点也是显而易见的——升级一次程序会花掉你几天的时间。所以,没事儿就不要去无休止地升级啦。



2007-09
26

常用的那些技巧,论坛的帖子上都有,相信也是众所周知的内容了,就不再多说。 这里介绍一些不常用的技巧——虽然比较偏僻,但记住之后能让你事半功倍。

本文的部分内容参考了《BlackBerry Hacks》这本书,其他的都是作者自己的使用经验。

阅读全文 »