分类目录归档:vicalloy的庄家

对自己开源的项目进行休整

和大多不负责任的开源作者一样,我都是将代码发布后就不怎么打理了。不过想来既然博客和wiki重新开张,就顺道将以前开源的项目给打理打理吧。
目前的计划主要将老照片SpringSide2–++调整下。

老照片

老照片是我刚开始使用django时做的一个项目。由于刚开始学习django,里面有不少在现在看来非常糟糕的处理。打算将那些非常糟糕的处理给改掉,其他一些一般糟糕的就算了。目前想到要做的主要有:

  • 重新调整目录结构。
  • 实现Django 0.96迁移到 1.0,修正迁移中产生的问题。
  • 把那些糟糕处理改优雅点。

SpringSide2–++

SpringSide2–++是我在SpringSide2基础上重新定制过的一个项目。在我看来定制过后易用性增加了不少,而且提供了一个还成的代码生成器,对于简单对象只需要将该对象的Model写完就可以自动生成完整的CRUD。目前计划的调整有。

  • 这个项目以前是以zip包的形式发布的,打算调整后放到googlecode上。
  • SpringSide–++这个名字现在看来似乎有些怪异,这次修正的时候顺便想个好听点的名字。
  • 写一些IDE环境初始化的脚本呢,帮助用户用IDE打开后不需做任何配置就可以直接跑起来。
  • 界面美化(我觉得现在的界面有点丑)。
  • 录制个简单的视频教程帮助推广:-)。

免费的wordpress博客服务推荐

    现在基本上只要是大点的网站都会提供博客服务,要找一个免费的博客空间实在是太容易了,只是大多博客服务都并不是太好用。基本上说来是各有各的不好。就拿我现在用的MSN Space来说速度慢也就算了,界面还不怎么样,可定制性也一般。
    在我看来,博客服务要是能使用目前使用最广泛的wordpress自然是最好的了,只是wordpress的官网被彻底的封死了,国内免费的也不多。国内比较有名的wordpress服务商可能要算是donews了,只是以前有朋友用的时候博客出过好几次问题,还被莫名其妙的删了好几次。这样的服务态度,我是不敢再用了。
    最近想和朋友整个关于widnows mobile的协作博客Hi WM,所以又去找了一圈,发现国内还是有不错的wordpress服务的。
    优博网(http://yo2.cn/)提供了免费的wordpress服务。此外优博网内置了数百个wordpress主题。不过即使这么多主题里都没有让你满意的,你还可以上传自己的主题,或是将内置的主题私有化后再进行编辑(我的就编辑过了)。虽不支持上传自己的插件,但内置的wordpress已经挺丰富的了。yo2会为你的博客提供一个二级域名,不过如果你觉得这还不够帅,可以为自己的博客绑定一个顶级域名(这个服务得收费)。访问速度方面我觉得一般,还成(经过一段时间的使用,感觉速度一般,有时候似乎非常的慢)。至于稳定性嘛,还有待观察,昨天就出现了用IE无法打开的情况。
    虽然我感觉yo2还不错,不过这个博客是不会搬过去了,毕竟要将这些数据倒过去还挺麻烦。将就着用了。
    最后,给我的新博客做个宣传吧。

Hi WM 是一个专门关注 Windows Mobile 手机相关新闻和应用的团队 Blog。

如果你和我们一样,也有一款 Windows Mobile 手机,并愿意分享你对 WM 的感受,可以通过 这个地址 来发表。

老照片换域名了

    lzpian.com还有一个多月就到期了。因为这个站点不打算再进行维护,所以也懒得去给域名续费了。为了防止域名到期后无法访问,今天为老照片新增加了一个二级域名 http://lzpian.haoluobo.com/ ,并将lzpian.com重新重定向到新域名上。
    不过在进行重定向的时候遇到些问题,那些设置了跳过规则的文件都重定向到 lzpian.com 去了。整了半天也没明白是咋回事。估计和虚拟主机的设置有关。考虑过些天等lzpian快到期的时候将lzpian.com去掉看看。

新发布一个Django的脚手架DjangoSide

    前一段时间在邮件列表和limodou讨论django app重用的问题。limodou认为django的app没有对app的配置文件和静态文件的管理提出一个很好的方案。但在我看来在这方面django做的已经算是不错的了,唯一缺少或许只是一个规范而已。对于django,每个人都有各自的认识,而且在书写的时候又很少考虑到重用的问题,所以写出的代码各不相同,重用性很低,完全没有发挥出django app的优势。
    DjangoSide是个演示性质的项目。主要演示如何和第三方的django应用进行整合,简单的注册登陆的实现,以及静态资源的组织等。目前项目还只是将基础的框架目录结构给搭建好了,里面提供了一个blog的整合实例。主工程(djangoside)还未正式的开始开发(其实也没多少需要开发的东西)。

    至于项目的详细可以在项目页面看到,我这里就不多写了。
    项目地址:http://code.google.com/p/djangoside/

Trac的SEO能力实在不怎么样

    本以为wiki不被收录是因为进了搜索引擎的黑名单,于是换了新域名,哪知道还是老样子。google虽然有收录,但权重N低,baidu始终不做理会。为了防止trac自带的wiki页面导致搜索引擎错误的将我打入黑名单,我还特意在robots里将这些页面做了屏蔽。
    我看了下其他的trac站点,似乎也都不太被搜索引擎待见。可能是trac自身的问题吧。
    不去管它好了。

国学阅读网上线了

网站地址:http://guoxue.victsoft.com/

    其实这个网站在很早以前就有开始整了,中途因为一些事情中断了许久。最近在假期就快结束的时候重新启动,花了几天时间做了个收尾工作,正式部署上线了。
    国学阅读网看名字就知道她是做啥的了。目前网站的功能还比较简单,只提供了书签、收藏、好友等基础功能。各书籍的点击次数等虽然也有统计,但目前还并未使用。
    类似豆瓣的网友最新动态,我觉得这是一个挺有意思的功能。他让各个网友都有露面的机会,而且越是活跃的网友露面的机会越大。这对激发网友的活跃度将会很有作用。这个功能的实现也不复杂,不过我目前优先考虑的还是网站的上线。这个功能或许很快就会推出了(说不定写完blog就去整这东西了)。
    如果说“老照片”是我的第一块试验田,那这个网站就算是第二块试验田了。“老照片”基本认定是失败的了。至于失败的原因在早前的blog中已有分析过了。
    主要两点:
    1. 缺乏必要的基础资源,无法引导用户。
    2. 图片网站对搜索引擎并不友好,SEO难度过大。
    “国学阅读网”应当也有不少问题,但至少这这两点上会比“老照片”好些。国学阅读网上的古文典籍,本身就是网站的基础资源。收藏夹、书签等功能可以为用户的阅读带来便利,有一定的实用价值。
    网站的古文典籍,本身是大量的文本信息相比图片,这对搜索引擎要友好得多。
    当然“国学阅读网”在SEO方面也个很严重的问题。古文资料在网络上已经是一大把了,而且资料是从网络上收集来的,很容易被搜索引擎打入黑名单。
    无论如何,看看新网站的表现了。

————————关于Django————————
    Django的开发速度确实挺快,就是修改表结构的时候比较郁闷。Django不能象Hibernate一样自动修改表结构。
    这个工程的项目结构在我看来有些乱。Django提倡各个模块要相对独立,这样可以提供模块的复用性。这样模块想引入新项目的时候,只需要做个简单的url配置就可以。但事实上各个模块之间要做到完全的独立似乎并不是一件容易的事,比较项目本来就是一个整体,完全独立的模块太少。项目的前期我有刻意的将模块独立,但到了后期我舍弃了这个做法。

发布“支持全文检索的大富翁浏览器”

下载地址:
支持全文索引的大富翁浏览器(Delphi盒子)

前言
    已经很久没有去大富翁了,后来想再去转转却发现连密码都已经忘记了。更惨的是密码找回的邮箱在去年被关闭了。这下密码是没办法用正常途径找回了。虽然有些可惜,但也算了吧相见不如怀念。
    前些天看到大富翁07年的离线数据库(非官方)发布了。在我早期玩delphi的时候大富翁的离线数据还是给了我很大的帮助的。我想从离线数据中收益的人应当不只我一个。曾有段时间离线浏览器层出不穷。当然离线数据最受欢迎的方式还是chm方式。只是随着离线数据的增大,要编译成单个CHM的难道增大。在04(03?)年后,chm版的离线数据就变成按年分的了。
    我想chm版的流行和良好的全文索引有很大的关系,目前的离线浏览器都是简单的使用数据库查询,一次无法对帖子内容等信息进行查询,大大限制了离线浏览器的用途。
    其实要增加全文索引的功能并不复杂,我也一直都有给离线浏览器加全文索引的想法(虽然我不用),只是Delphi的全文索引库一直没有出现。在去年(前年)的时候我看到了个lucene的Delphi版本,看似会是一个很有前途的东西,却在后来发现这东西居然需要.NET的支持。我对Delphi4.NET一直不待见。在我看来用Delphi对.NET进行封装完全是历史的倒退。接着说Delphi版本的lucene。虽然有4win32的计划,但似乎进展不大。JAVA和.NET都有垃圾收集机制,且JAVA和.NET的语言特性和delphi也有较大的差别,因此需要进行简单的移植难道并不会太小(c版的clucene也有不少问题,但至少算可用的)。
    虽然delphi自己整不了全文索引,但其实还是有不少办法来完成这个这个工作的。前些天我花了一晚上,用java的lucene给现有的离线浏览器加了个全文索引的功能。如果感兴趣就下了玩玩吧。

正文
    不知道现在是否还有人在用离线浏览器,不过即使没人用也没关系,这个程序更多的是演示如何使用混合语言进行开发。

    该版本是在“孟亚永"的离线浏览器基础上进行修改的,MYY的版本又是修改的左大侠的版本的。
    主要增加了全文索引功能(只支持问题)。
    加了全文索引的是主窗口上的快速搜索,将对所有帖子进行搜索(不包括回复)。
    本希望做成支持对回复也进行全文索引的,但这个数据库有些问题,离线浏览器部分不太好改。

  • 数据库的修改
    这个离线浏览器使用的数据库格式和newsmile的数据库有些不太一样,因此在使用前还得先动点手术。
    先执行
    Select ID, DateTime, UserFrom, Content, Parent into LettersReply from letters where Parent<>0
    生成回复表,然后在letters中删除回复信息
    delete from letters where Parent<>0
    再就是将letters的表名修改为lettersQ
    数据库的修改到这里就已经完成了,不过结果这些操作后数据库的个头大了不少,最好使用Access的压缩功能,压缩下。
    数据库修改后,还需要先建立索引,不然全文索引就无法工作,在bin目录下有个make_index.bat,直接运行这个脚本进行索引的创建。建立索引需要花点时间,我对2007的数据建立索引好像花了近10分钟。
  • JAVA部分
    由于全文索引用的是java的lucene,因此需要机器需要安装JDK。
    java部分全文索引的代码里面也带了。
    由于用到lucene,如果需要编译需要去下载个lucene(http://lucene.apache.org/java/docs/)。
  • 关于全文索引
    目前不少开发语言都有全文索引的支持。Delphi也有个,不过很怨念的是需要.NET的支持。
    虽然没有支持native的delphi全文索引库,但还是有些办法给native的delphi增加全文索引的支持的。
    比较容易做的方法有,将C++版本的全文索引库封成activex或DLL,不过我的C++不灵光,所以pass。
    python可以将类直接导出成activex,导出的方法简单。此外网上已经有人这么做了(doindex?)。但我测试pylucene的时候,中文索引通过不了。而且python导出的com需要启动一个com server,所以也pass。
    剩下最简单,最容易处理的方法就是将将全文索引部分写成一个单独的程序。在delphi里直接对这个程序进行调用,并通过获取控制台信息的方式,同索引服务器进行交互。目前采用的就是这个方式。
  • 关于JAVA的个头
    自从MS和SUN翻脸后,windows就不到jre了。要用户去安装一个1xM的JAVA虚拟机实在是一些让人为难。不过JRE还是可以精简到可以忍受的大小的。JRE1.5的虚拟机用7Zip压缩后大小为6xxK。库部分只对需要的部分打包,应当可以将JRE大小控制在2M内(我本来想精简下,不过今天是没时间了)。

热键助手1.1.1 phoenix版发布

    在沉寂多日之后,热键助手终于又有了次新的更新。其实这对我自己来说都有些难以置信,这个小软件我居然维护了这么多年。不过不管怎么说,有新版本发布总归是好事。
    新版本的增加了一键搜索的功能。也就是你可以给搜索引擎设置一个快捷键,在按下快捷键的时候自动调用搜索引擎搜索当前选中的文字。目前该功能还只支持baidu,如果这个功能真有人用的话就将google也给加上(反正也就几行代码,我主要不想做那个向导窗口)。
    下载地址见我的googlepage

开源项目发布『老照片』

项目地址:http://code.google.com/p/oldphoto/
没有整理发布包,代码直接在SVN中取。
项目的演示地址见:http://www.lzpian.com/
许可协议使用的是MPL1.1。
由于fckeditor有点大,我在开源项目中将fckeditor给去掉了。
虽然网站还有些小bug,不过功能方面还是基本完善的。
希望对学习Django的人能有所帮助。

备注:
本来想将这个web站点作为对web2.0的一次尝试,但目前看来基本上是失败的。
关于这个网站的分析可以见下面的文章。
老照片分析:http://vicalloy.spaces.live.com/blog/cns!96F003C204150CFE!708.entry