Category Description

  有关各种IT技术的心得、翻译、笔记。

November 22, 2004

Zend[ Tech ]

  今天有幸见了 Zend 的销售总监,9 月份新上任的 Yohai Shaked,聊了一下午,大致就是来了解一下国内的 PHP 使用状况,筹划推广中国的 Zend 产品。

  不过从他的 PPT 演示中,感觉出 PHP 会越来越走向商业化、努力来迎合企业级应用,从 Java 及 .Net 手中抢一口饭吃。其实这点从 PHP5 的 ZendEngine2 就看出来了,不过这次感受更深切。祝 PHP 一路走好……

November 20, 2004

Google 的 Firefox 主页[ Tech ]

Get Firefox!

  Firefox 1.0 正式版推出 2 星期,下载量达到 500 万,发布第一天网站根本打不开。如果是新安装 1.0 正式版的话,肯定会发现默认的主页竟然是 Google 为 Firefox 定制的一个页面,就像为 Linux 定制页面一样,Firefox 的成就可见一斑。

  同期,邮件客户端 Thunderbired 也更新至 0.9 版本了,看来历史悠久的 Mozilla 寒窗多年之后终于爆发了,而且其势势不可挡,正应了鲁迅爷爷的那句话……

  我老早把 IE/MyIE/Outlook/Foxmail 扔进回忆里了,不久会做一个 Mozilla 的中文专题站,域名都注册好咯(汗……好多站要做啊……),把好东西推荐并教会大家用最开心了^_^

  有那么优秀的开源软件摆在面前,What are you waiting for...

November 19, 2004

GFans.org[ Tech ]

  长久以来深受 Google 文化影响,前天注册了 GFans.org 的域名,准备做个 Google 的专题站,今天先凑了点 Google 公益广告的资料:

November 18, 2004

还是VeryCD...[ Tech ]

  今天重新配置了两台静态网页服务器,去掉了 NFS,改由 ssh 定时同步目录,关于这个话题,Dash 已经 Blog 掉了……
  哈哈,去掉两台静态页服务器的负担,原本的 NFS 服务器(兼数据库)一下子轻松了,想象原来真笨,都是静态页干吗要 NFS 嘛……汗死了……
  自从 VeryCD 实行推荐注册之后,网友们明显开始珍惜自己的帐号了,而且有一种光荣感和使命感了……想不到学 Google 的这招还真管用~~

November 16, 2004

Apache日志轮巡/合并/分析[ Tech ]

  今天在 VeryCD 服务器上设置了访问日志的轮巡、合并、分析。

VeryCD 目前的网页服务器配置结构

  • 1 台 MySQL 数据库 + NFS 文件服务器,无域名指向,定义为 host1.verycd.com;
  • 2 台静态页 + 资源搜索服务器,域名为 www.verycd.com 及 lib.verycd.com,DNS 轮巡,定义为 host2.verycd.com 及 host3.verycd.com,host3 上还有 emule.org.cn;
  • 2 台论坛服务器,域名为 bbs.verycd.com 及 blog.verycd.com,DNS 轮巡,定义为 host4.verycd.com 及 host5.verycd.com;
  • OS 均为 RedHad Linux 9,Web 服务器均为 Apache 2.0.49

构思

  上个月 VeryCD 使用的是章文嵩博士的 Linux Virtual Server 软件,该系统针对高可伸缩、高可用网络服务的需求,给出了基于IP层和基于内容请求分发的负载平衡调度解决方法,它通过前端一个负载调度器(Load Balancer)无缝地将网络请求调度到真实服务器上,从而使得服务器集群的结构对客户是隐藏的, 客户访问集群系统提供的网络服务就像访问一台高性能、高可用的服务器一样。因此整个网站的访问统计的取样就显得很简单,只要在一台 Web 服务器上分析自己的日志就行了,其他服务器的请求就是它的一个线性分布,系数大致就是硬件的性能比。

  而现在整个网站由多个 Web 服务器 DNS 轮巡构成,网站结构对于用户是透明的,因此不能使用简单的抽样分析方法,分析日志的过程就比单个服务器的情况复杂得多。于是希望构建一套系统,能实现自动综合分析多个 Web 服务器的日志,给出准确直观的网站访问状况报告,而不是某台服务器单个的访问状况报告。

  注:千万不能将日志记录到同一个远程(NFS)文件里。如果使用远程文件系统记录日志,带来的麻烦远比你获得的方便多的多!

Continue reading "Apache日志轮巡/合并/分析"

September 11, 2004

IPB 2.0 PF4 FreeIPB简体中文版VeryCD.com第一时间公测[ Tech ]

  北京时间9月10日 19:15,IPS发布了IPB2.0 PF4版,随后,今天凌晨VeryCD就已完成了PF4所有已知中文支持的Bug修复,所有图片的汉化工作,并将全球IPB应用最大的论坛成功从1.3升级至2.0 PF4。虽然现在仍有很多Bug,但是基本在掌握之中,相信不久就论坛就能基本稳定。到时候FreeIPB就会发布IPB 2.0完全中文版。

September 09, 2004

Google News[ Tech ]

  Google今天推出了中文新闻!以下是我在第一时间的截图——Google News

  不过犯了一个大错误——最底下有“中文版(China)”和“台湾版(Taiwan)”……希望不会有什么麻烦了。

September 07, 2004

Gmail邮箱[ Tech ]

  感谢Windix的推荐,竟然意外地有了Gmail邮箱:—.-b

May 15, 2004

MovableType(MT) 3.0 变收费软件[ Tech ]

  MT因其前卫的功能,静态内容发布,已经最为流行的个人网站的Blog系统。

  但是刚收到MovableType.org寄来的Mail,大致意思是感谢参与3.0版本的测试(我只是提交过想参加Beta测试的表单,但后来并没有回应了)……然后兴匆匆到官方网站上想下载3.0体验一下,却被满页的$吓住了……原来的movabletype.org/download.shtml也转到了Six Apart销售MT的页面,连原先的免费版本都找不到了……还好自己机器上有存档,否则,哎。

  想想也是,现在随便一个服务器提供商都能提供MT的安装环境,甚至帮你全部安装配制好,实在没道理使用Six Apart的TypePad。Six Apart是.com,不是有大把$养着的open source社区。

  看来偶的2.661已经是Final Version了。

May 08, 2004

初识Python[ Tech ]

  记得第一次看到 Python 这个词是 Dash 跟我说编 BT 的语言号称是和 C# 一样完美的,当时也没注意,上个月看《Thinking in Java》Bruce Eckel 也是大力推荐,昨天在找CMS时发现一个很好用的系统:Plone ,也是Python编的。于是花了两天时间捉摸着入门,发现还是很让人吃惊的。

Python.cn 上是这样介绍的:

  1. 是一种解释性的,面向对象的,具有动态语义的程序设计语言
  2. 适合快速开发
  3. 代码具有优秀的可读性
  4. 具有模块和包的概念
  5. 支持各种主流平台,并具有很好的跨平台性
  6. 可以很容易地包装C/C++的代码供Python使用

  经过短暂实践,我个人总结了以下几点,仅供参考:

  1. Python是支持带类和多继承的面向对象程序设计。虽然面向对象,但是和C++/Java的概念不太一样。在Python中“对象”这个词不一定指类实例。Python中并非所有的类型都是类(而Java几乎可以这么认为),然而,所有的Python类型在语义上都有一点相同之处:描述它们的最贴切词语不是“类”,是“对象”。
  2. 代码格式及其前卫,完全抛弃了C系列,包括Java使用的花括号{},改用空格(Space)或制表符(Tab)控制封装块。比如

    def buildConnectionString(params):
        """Build a connection string from a dictionary of parameters.
        Returns string."""
        return ";".join(["%s=%s" % (k, params[k]) for k in params.keys()])

    代码块(函数,if 语句,for 循环,等等)通过它们的缩排来定义。缩排表示块的开始,非缩排表示结束,不存在明显的括号,大括号,或关键字。这就意味着空白是有意义的,并且要一致。在这个例子中,函数代码(包括文档字符串)缩近了4个空格。不一定非要是4个,只要一致就可以了。第一行没有缩近,则不算在函数内。经过一段时间的适应,你将会心平气和地对待它,开始理解它的好处。一个主要的好处是,所有的Python程序看上去差不多,因为缩排是语言的要求而不是风格问题。这样就更容易阅读和理解他人的Python代码。因此Python赢得了最优美代码、最强的可读性的称号。用Phthon做程序设计,你甚至可以不太考虑你的程序的可维护性很差。
  3. 基本的数据类型有变量:数字型(整型,浮点型,复数,无限制长整型),指针(ASCII码和Unicode码),表,字典。

别人总结的其他几点:

  1. 代码可以被集成为模板和包。
  2. 这种语言支持异常处理追踪并能够列出比较清晰详细的错误提示。
  3. 数据类型非常的强大,而且是动态的。混合的数据类型(例如试图将指针与数相加)将被编译器提出一个异常情况信息。
  4. Python包含了一些高级的程序设计特性,例如代码生成器和解释器。自动垃圾收集功能使你从内存管理的争战中解脱出来。
    庞大的标准库支持很多一般的程序设计任务,比如与网络服务器连接,正则表达式,文件操作。
  5. Python的交互式模式使得调试小段的程序非常便捷。当然,处理大型的程序他还具备一个捆绑式的开发环境,叫做IDLE。
  6. Python编译器是很容易扩展的,我们可以将C或者C++编译后的模板作为新的模板加入到其中。
  7. 编译器也可以被嵌入到另外一个应用程序中以提供一个可编程的界面。
    Python可以在很多不同种类的计算机和操作系统上运行:比如Windows, MacOS, OS/2,以及很多作为Unix分支的操作系统。


参考站点:

 

May 07, 2004

PHP之MVC[ Tech ]

  前段时间在学习Java,顺水推舟得学了MVC构架。在网上查阅相关资料的时候,发现对于PHP是否以及怎样套用MVC构架,已经有相当多的探讨。以下给出几个链接:

  这几篇文章(以及相关的评论)几乎包含了所有PHPer对于MVC构架的认识和疑惑。在我实践使用MVC构造了一个站点之后,可以说对于PHP中的MVC有了自己的一些认识:

  MVC是面向对象思想的集中体现。特别是模块(Model)的封装、抽象,运用得好就能将OO的封装、多态性表现得淋漓尽致。至少Web应用上,MVC肯定是先进的,甚至我个人认为小型的PHP站点也应采用MVC的构架。

  中大型站点一定需要MVC架构。PHP在企业级应用上如此至少,除去商业界和开原界在意识形态上有巨大分歧外,PHP本身的极弱面面向对象的缺陷也是最大的原因。道理很简单,不是高度面向对象的项目,越是大型,维护成本越是成几何级数上升。

  那到底该怎么运用MVC呢?应该说对于不同类型,不同规模,不同开发周期,不同维护费用预算,都可以有不同的具体实现。但是有一点是肯定的:并不像《PHP:MVC迷思》所说的“把业务逻辑并入M中,这其实是MVC的思想背道而驰的。”——业务逻辑绝对应该是Model部分的核心,而这篇文章的作者所指出的类似于JSPJava Beans的作用,只是Model部分最底层的抽象,如果就此理解,那MVC的确不应该应用于PHP了(相信作者肯定没使用过structs)。实际上,判断MVC是否强壮,就是看业务逻辑部分的抽象和封装是否到位。Smarty模版引擎的最大特点就是将业务逻辑从视图中分离,因此说他的思想是最前卫的。以我的看法,Smarty就是在PHP中最大程度地实现JSP的自定义标签库(Custom Taglib),当然,两者还是有很大不同的,这个也只是我个人的理解。如果还不能理解业务逻辑为什么是属于Model部分,那还是先看看一些面向对象的教科书吧。

  BTW:4月25日PHP5出了第二个Candidate版本,虽然对于PHP的前景,尤其是php5大量借鉴Java的特点还有很大的争论,但是我认为PHP5无疑会大大延长其寿命,至少让我在做项目的时候会犹豫到底是JSP还是PHP……PHP5也体现了绝大多数程序员对于PHP的最大需求——面向对象。

March 30, 2004

如何实现同时访问不同资源使用不同的路由[ Tech ]

  我所在的学校有校园网,我们由于觉得校园网访问公众网资源慢就申请了adsl,同时利用校园的硬件资源实现adsl多人共享上网,同时只要更改一下网络配置,就可以上校园网。详见3月22日G9版的《校园网和adsl宽带两不误》。
能不能同时使用这两种网络呢?例如一打网络游戏(adsl)一边下载(校园网)。后来进过一段时间的琢磨,方法如下(win2000为例):
首先打开本地连接-->属性-->双击internet协议(tcp/ip)-->高级。在ip地址这一栏里点击添加,我原来用的网络配置 ip:192.168.143.173子网掩码:255.255.255.240 默认网关:192.168.143.174 这个是我使用adsl的配置,添上我使用校园网时的ip:192.168.1.1 子网掩码:255.255.255.0在默认网关里我没有添加我使用校园网时要用的网关地址。这样就在我的网卡上绑定了两个ip地址。

http://www.shangda.net/UploadFile/2004329209410158.jpg

  前期工作做好了,现在开始具体的来实现了。在运行里面输入cmd,在命令行中键入route。route是一个添加删除路由的命令,我们将用到route命令的几个参数,现在简单介绍一下:route print显示当前路由表;route add添加一条路由,route delete删除一条路由。
举例如下:我所在学校的内部ip地址用的都是形如:10.x.x.x的地址,我的目的是访问这样形式的ip的计算机是我通过校园网的网关:10.126.9.254路由出去的。添加如下:route add 10.0.0.0 mask 255.0.0.0 10.126.9.254 metric 1 稍微解释一下:route add 是添加路由的命令,10.0.0.0代表学校的网络地址(代表的ip地址从10.0.0.0到10.255.255.255);mask 255.0.0.0 指的是子网掩码,子网掩码和网络地址结合就可以算出其中ip地址块容量(具体的子网划分和子网掩码的意义见相关文章);10.126.9.254是我使用校园网时的网关ip地址 ;metric 1是指跃点数一般使用1。这条命令的意义是:如果访问10.x.x.x这样类型的ip地址的计算机,通过10.126.9.254路由出去。

http://www.shangda.net/UploadFile/20043292094813897.jpg

  route delete 是删除相应路由,如我要删掉刚才添加的路由:route delete 10.0.0.0
好了,通过这样你就可以指定相应网关路由出去,去访问相应的机器了。

March 23, 2004

校园网和adsl二合一(晋级篇)[ Tech ]

  通过前面两篇文章的介绍,估计使用adsl和校园网已经很方便了。

  我前面介绍了netsh写批处理,虽然很方便,但还没有达到我的要求,要是我一边打网络游戏(通过adsl),一边下载校园网内部资源.能不能同时进行呢?

  经过一段时间摸索觉得还是可以的,现在写出来给大家共享:

  我先简单介绍一下路由器作用,简单的说就是把不同的网段连接起来。这也是为什么我们需要网关才能上internet,如果你要访问的机器,和你的机器在同一网段,就不需要路由。好了,我们来实现以上我的功能。

  点击本地连接-属性-internet协议-属性-高级。你会发现里面实际上可以添加很都ip,网关同时也是可以添加好几个好了,添加上你的第二个ip地址子网掩码和网关。填好后,你同时访问你内网的机器(只有校园网可以)和一个国外网站(只有adsl可以)是不是可以^_^

如果是访问一个国内网站呢?是通过哪个网关呢?一般是通过adsl,因为它的连接速度快。即哪个网关速度快,就通过哪个网关到达你要访问的机器。

March 21, 2004

校园网和adsl二合一[ Tech ]

  前面介绍过了如何利用Adsl猫的路由实现多台机器同时上网具体见利用ADSL猫的路由功能实现多台机器同时上网(基础篇)

  现在我们利用校园网的硬件资源来实现免拖线和换线我们只要把Adsl猫接到一个闲置的校园网的端口上其他机器也接到自己的校园网端口上,网段和猫在同一网段,子网掩码相同网关是猫的ip,为了不和其他机器ip冲突,请改到一个觉得不会发生冲突的网段。
还有一点注意,adsl和机器网卡相连的是交叉线,adsl和校园网端口连的是直通线。
这样就可以校园网和adsl切换不用换线了,而且不要拖线了。

  下面我介绍一个win2000和winxp下一个脚本执行命令,netsh。利用这个命令可以
实现校园网和adsl的自动切换。格式如下:

netsh interface ip set address name="用于连接网卡的名称(如本地连接)" source=static  你的ip 你的子网掩码 你的网关 默认网关的跃点数一般为1

例如我网卡连接名称叫本地连结,ip:192.168.1.2 子网掩码:255.255.255.0 网关:192.168.1.1则命令如下:

netsh interface ip set address name="本地连接" source=static 192.168.1.2 255.255.255.0 192.168.1.1 1

注意中间的空格

  校园网的配置也一样,把上面的一段存为批处理文件,使用时只要双击即可。

利用ADSL猫的路由功能实现多台机器同时上网(基础篇)[ Tech ]

  本人在学校利用校园网上internet,浏览教育网资源速度尚可,但是上公众网,打网络游戏等就不敢恭维了。所以就决定申请一个ADSL,几个同学用,费用平摊,很适合我们学生一族。

  开始是利用一台机器作代理服务器,其他机器通过这台机器上网。但这样有很大弊端:一,只有这台机器开机上网了,其他机器才能上网,很不方便,且增加了这台机器的负担。 二,几个寝室网线乱拖,很影响寝室的环境。三,这样还要多投资一台HUB和一块网卡。四,校园网和ADSL互换需要换接口。 后来得知现在一般SDSL猫都有路由功能,打开猫的控制面板一看,果真有,心中窃喜,说干就干。现在我就以我现在用的猫为例,来实现猫的路由功能(各个品牌的猫差不多的)。 首先把猫和我的机器互联,我的猫的ip地址:192.168.1.1子网掩码:255.255.255.0。我把自己机器的ip地址改为192.168.1.2子网掩码相同,然后在IE里输入猫的ip地址,要求输入用户名和密码,输入后进入控制面板(各个品牌的猫的ip地址、用户名和密码可能不同,请查看猫的说明书,或到相关网站查询)。

  这一页是更改密码,根据需要修改吧http://blog.xdanger.com/archives/sorghum/20040321a.jpg

  这里是重点,我详细一点介绍。般猫默认是第一种RFC1483 Bridged方式,我要现在用的猫一般都是PPoE虚拟拨号方式,说一就选第三个。里面要我填上用户名和密码,就是 你ADSL猫拨号上网的用户名和密码。模式默认就可以了,空闲超时如果是包月的话就可以设的长一点,如果是计时的话就短一点。还有就是DHCP Server就是自动分配ip地址一些配置,我觉得没有必要,如果你相用就到后面的高级里面的DHCP里设置。还有上面的VPI和VCI的值,这个也蛮重要的,具体是多少,你要问你本地的电信运营商了。我的是0和32。好了,点击Add,把这个设置添加到当前的ATM PVC列表里。把其他不需要的delete好了。 http://blog.xdanger.com/archives/sorghum/20040321b.jpg

  Lan设置里面就是猫的ip和子网掩码如果怕和别人的ip冲突或者怕别人知道就改一下吧(建议)。 http://blog.xdanger.com/archives/sorghum/20040321c.jpg

  点击进入保存&重起页面,先Save一下,然后点Reboot。http://blog.xdanger.com/archives/sorghum/20040321d.jpg

  本机设置就是在本地连接的属性里面选择internet协议,在里面填上和猫一样网段的ip地址,如果猫的ip地址是192.168.1.1则其他机器ip可以是192.168.1.2到192.168.1.254之间任意一ip地址。子网掩码相同,网关即为猫的ip地址。DNS可以是猫的ip或者是公网的DNS服务器。 好了,这样应该就可以上网了。

March 13, 2004

明天要交的Java作业[ Tech ]

  编类似贪食蛇的小程序,给一个二维数组描述蛇的移动轨迹,按照给定的表示蛇身的字符、蛇身的长度,在屏幕上打印出移动轨迹。

  其中我最疑惑的就是怎么用\b实现清屏,我反复试验后发现\b始终不能移到\n的前面。因此暂时用了个比较傻的办法,一次输出很多换行符把上次输出的内容推到屏幕外面……现在默认的是蛇从上游到下,并且一定从第一行移动到最后一行。暂时没有判断给出的地图是否有效。详细的见源程序&.class

March 11, 2004

MCS-51(8086)的一个汇编[ Tech ]

  到昨天为止,用了一个星期写了一个汇编程序,是这个学期课程设计的作业。这大概是我接触到的最长的一个汇编了吧,感觉真BT。

  目的很简单,就是有八个按钮,分别控制千、百、十、个位的+-(比如按百位的+数字就加100),带进位,在4个7晶体管上显示相应的4位数字,初始值为0000。

Continue reading "MCS-51(8086)的一个汇编"

March 05, 2004

Java版Do24(24点计算工具)[ Tech ]

  这学期上大BT考试总算结束了,好好睡了一觉后温习下SL-275。顺便把Dash引以为豪的处女作Do24改成Java的。不过还有点Bug。

  下载:源码&程序update on 3.8:允许分数计算版本:源码&程序

  哦,今天是学雷锋的日子,大家接过雷锋的枪哦︻┳═一

February 24, 2004

整合多个局域网[ Tech ]

  使用ADSL路由方式实现自动拨号后,还是感觉不方便,至少还要双击下.bat文件。想能不能有种方法可以同时使用两个局域网。没想到竟然那么简单……

  只要在连接的TCP/IP协议对话框内点“高级”,然后再加上另外一个内网的ip地址/子网掩码/网关/DNS服务器就行了(太简单,这里就不截图说明了……)。我测试下来,连接的时候系统会自动选择响应快的路由网段进行连接,就是说你一边能Google/MSN,一边能以6Mb/秒的速度下载电影,哈哈,总算完美了!(2000和XP下没问题,9x就不知道了。)

February 13, 2004

从XP中彻底移除Windows Messenger[ Tech ]

  想必很多人和我一样,在XP上使用MSN Messenger,但是Windows Messenger又始终关不掉,即使在选项中设置不自动启动、不自动登录,他还是会随系统启动,并且关闭进程后还会自动启动自动登录,并注销掉正在运行的MSN Messenger。最可恶的是,我明明没有登录MSN Messenger,突然就会有人冒出来句话……最后只能改掉程序的文件名了事。

  今天Google了一下,想不到有那么多解决办法。其中有一个办法最简单:开始->运行->键入

RunDll32 advpack.dll,LaunchINFSection %windir%\inf\msmsgs.inf,BLC.Remove

  哈哈,整个世界清静了……此方式适应所有XP系统。

February 12, 2004

上海整幅地图下载[ Tech ]

  上次做好了一张上海城区的地图,今天传上来了,6.7Mb的JPEG。打开时建议关掉其他应用程序哦……右键单击以下图片->目标另存为……

上海地图

  这里还有高清晰版的,20Mb(强烈建议不要下载……没512Mb内存的后果自负,呵呵):http://docs.xdanger.com/pics/map.sh.max.jpg

February 11, 2004

我的第一个Java版Hello,World![ Tech ]

  总算暂时放下断断续续弄了3年的PHP,今天开始全面攻克Java!先读3个月的SCJP&SCWD

  不过万万没想到一开始试编经典的Hello,World!竟然遇到那么大的困难……反反复复编译、运行,始终出现各种各样的错误,真的差点心力交瘁……网上类似的文章太多了,不过我还是马上总结一下吧,懂的朋友见笑了:

  1. 设置3个系统环境变量:JAVA_HOME/Path/CLASSPATH:
    • 新增JAVA_HOME:j2sdk的安装路径,结尾没有/,下同。如
      C:\j2sdk_nb\j2sdk1.4.2
    • 编辑Path:加上:
      .;%JAVA_HOME%/bin/;
    • 新增CLASSPATH:
      .;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\bin
    设置方法:
    • Win9x :编辑系统所在盘根目录下Autoexec.bat,加上
      set JAVA_HOME=以上的JAVAHOME
      set path=以上的path
      set CLASSPATH=以上的CLASSPATH
      重新启动。
    • Win2000/xp/2003:我的电脑(My Computer)->属性(Properties)->高级(Advanced)->环境变量(Environment Variables)。保存,重新启动。
  2. 源文件名必须取.java,否则不能正常编译。
  3. 编译时源文件和命令行当前路径可以不一致,如C:\>javac src\HelloWorld.java而执行.class时命令行的当前路径似乎只能是.class文件的路径,这点还没有完全搞清楚,反正像
    C:\>java src\HelloWorld
    不能正常运行,而只能是
    C:\src>java HelloWorld
  4. 执行时不能打完整的文件名,一定是
    C:\src>java HelloWorld
    类似
    C:\src>java HelloWorld.class
    的命令,java可能会寻找
    C:\src\HelloWorld\HelloWorld.class.class
    这样的文件(猜想)。
  5. Java开始的函数必须写成
    public static void main( String args[] ) {}
    必须一字不差,包括大小写。感觉像法国资产阶级革命时的《人权宣言》,“私有财产神圣不可侵犯”……

February 10, 2004

强烈建议PHPer们使用Turck MMCache[ Tech ]

  Turck MMCache是一个类似于Zend Optimizer/Encoder的软件,不过速度要超过后者。而且他是一个开源的软件,可以免费使用。官方网站是:http://turck-mmcache.sourceforge.net

安装方法

  在http://sourceforge.net/project/showfiles.php?group_id=69426根据你的PHP版本下载MMCache解压至任意目录后,在PHP.ini中添加如下内容即可:(C:\PHP\mmcache是MMCache所在的目录,如果是非Windows平台则是 zend_extension_ts=mmcpath/mmcache.so)

zend_extension_ts="C:\PHP\mmcache\mmcache.dll"
mmcache.shm_size="16"
mmcache.cache_dir="C:\PHP\mmcache\tmp"
mmcache.enable="1"
mmcache.optimizer="1"
mmcache.check_mtime="1"
mmcache.debug="0"
mmcache.filter=""
mmcache.shm_max="0"
mmcache.shm_ttl="0"
mmcache.shm_prune_period="0"
mmcache.shm_only="0"
mmcache.compress="1"

  目前多数的虚拟主机都没有安装Turck MMCache,实在是大大的浪费。装了之后几乎可以放多10倍的站点。而且PHP程序员用起来没有任何区别。

  下表是同类软件的比较:

Continue reading "强烈建议PHPer们使用Turck MMCache"

February 03, 2004

上海地图[ Tech ]

  王建硕今天做了个上海市地图查看器:http://home.wangjianshuo.com/scripts/map/,准备和他的“汽车站”计划结合,太好玩了!

  我准备这个星期做一个类似功能的站点,不过肯定是有特色的,呵呵。

January 31, 2004

诺维格(Novarg/Mydoom)病毒及防范邮件病毒注意事项[ Tech ]

  昨天和今天,我的xdanger's E-Mail Address收到好几封病毒邮件,幸好被Norton截杀,杀毒报告如下:

Norton AntiVirus 删除了附件: document.zip。
该附件感染了 W32.Novarg.A@mm 病毒。

  明显地,是这两天风头出尽的诺维格Novarg病毒。在此就顺便将防止病毒邮件必须注意的几点说明一下,电子邮件是计算机病毒最常用的传播途径。

  1. 防范邮件地址搜索爬虫(spider),千万不能让自己重要的邮箱地址在网页上直接出现。如果你在某个论坛的签名有以下内容:
    [URL=mailto:youraddress@domain.com]YourAddress@Domain.com[/URL]

    那么99%你的邮箱已经塞满垃圾,并且很大一部分是有病毒的。如有必要,尽量使用图片来代替文字来显示邮件地址。而且千万不能加上mailto:这种邮件地址超链接。如王建硕的主页,最下方即是采用图片代替文字显示邮箱地址。或者像车东的主页那样,用人看得懂,程序看不懂的方式显示邮件地址:chedong(AT)chedong.com。

  2. 不要在不受信任的网站上提交你主要邮箱的地址。一般地,每个人都应该有几个电邮信箱,并且有主次之分。如将企业邮箱或付费邮箱作为主要的邮箱,而在必须提交邮件地址的网站上使用一些免费的邮箱。我的xdanger's E-Mail Address只有在PassPortPayPal提交过,竟然也有病毒邮件,经分析,是从专业的垃圾邮件程序发出的,可以排除是认识的人发送的。加上我同学有个邮箱从来没使用过,只在PayPal上曾经注册过,这次也同样收到Novarg病毒邮件,所以,初步判断PayPal会泄漏邮件地址,汗……

  3. 千万不能直接打开陌生邮件里的附件,一定要经过最新更新好的病毒软件检查之后才能打开。这里建议使用Norton AntiVirus,病毒库更新非常及时,占用资源少,操作方便,最好的是更新病毒定义时无需验证注册码,就是说……D版的随便用啦。当然,国内的金山毒霸等也很不错,不过一定要买正版的!

  4. 如果使用Outlook(Express)等客户端邮件程序,最好及时更新新版本,或者打好补丁。

Continue reading "诺维格(Novarg/Mydoom)病毒及防范邮件病毒注意事项"

January 26, 2004

music.xdanger.com[ Tech ]

  http://music.xdanger.com 刚刚做的,完全免费的音乐搜索引擎哟:-)

  使用sogua的VIP搜索服务哦,呵呵,阴险了点点。。。

January 23, 2004

实现MT多级分类的Plugin[ Tech ]

  如果说MT还有什么不足的话,最让人遗憾的可能就是文章还不支持多级分类。

  网上已经有很多人在尝试编写多级目录的分类的插件,如今最流行的好像就是David Raynes写的SubCategories。1月21日发布了0.3版。刚才试用了一下,非常小巧简洁,安装方便而且效果很好。

  但是反复斟酌之后,我还是观望态度……原因:

  1. 我的Blog刚开始,内容还比较少,多级分类之后反而很尴尬。而且感觉现在这样就可以了。
  2. 这个Plugin似乎还是早期开发阶段,有些地方稍显凌乱。就像他的版本号0.3,对于一般的正式程序来说,只开发了30%,还只能算一个Beta版本。
  3. 官方开发的MT3.0已经呼之欲出了,虽然并没有加上多级分类的版本,但是确定会开发全新的Plugin的API,到时候Plugin Developer们肯定会有更科学更有效的解决方案。

  国内,也已经有人在开发此类插件了。

January 19, 2004

PmWiki安装全攻略[ Tech ]

pmwiki   昨天说到已经将我的主页改为PmWiki的构架,刚才忙活了一晚上,终于全部搞定了,于是写下来。

  PmWiki简介:PmWiki是一个不需要数据库的以PHP为主要语言编写的wiki,遵循General Public License (GPL)协议,小巧方便,很适合个人网站用来制作规模不大的互动资源平台。

  我的安装平台:Windows XP Pro SP1 + Apache-1.3.* + PHP-4.3.*
  理论上可拖宽为:Windows + Apache/IIS + PHP
  本文不讨论PmWiki的使用问题,几乎任何使用上的问题都可以在其帮助文档中找到详细的说明,并且已经有人开始汉化这些文档了,还可以参见zhengPmWiki学习笔记

Continue reading "PmWiki安装全攻略"

January 17, 2004

使用Google工具栏显示PageRank[ Tech ]

  以下文字的原文:http://pr.efactory.de/e-pagerank-implementation.shtml

  多数人通过Google工具栏开始了解PageRank。Google工具栏是Microsoft Internet Explorer的一个浏览器插件,可以在Google网站上下载到。Google工具栏提供的一些功能使搜索Google变得更为方便。

Google Toolbar  Google工具栏以0-10的刻度显示PageRank值。从显示栏中绿色部分的长度可以估计出当前正在访问的页面的PageRank值。如果用户将鼠标放于显示栏上,就是显示PageRank值。

  注意:显示PageRank值是Google工具栏的一个高级功能。如果高级功能被打开,Google就会收集用户信息。另外,工具栏会自动升级,用户无需关心。所以,Google可以访问用户的硬盘。

  如果我们进行一下计算,PageRank理论上拥有最大值(Nd+(1-d)),这里的N为互联网网页总数,d为通常被设为0.85,计算出的PageRank值和工具栏显示出的数值成一定的比例关系。普遍认同的是,它们之间的比例并非线性的,而是成对数关系。如果设阻尼系数d0.85而PageRank的最低值为0.15xdanger注:因为0.15+0.85=1),并且对数的基数为6,我们得到以下的比例关系:

Toolbar PageRank Real PageRank
0/10 0.15 - 0.9
1/10 0.9 - 5.4
2/10 5.4 - 32.4
3/10 32.4 - 194.4
4/10 194.4 - 1,166.4
5/10 1,166.4 - 6,998.4
6/10 6,998.4 - 41,990.4
7/10 41,990.4 - 251,942.4
8/10 251,942.4 - 1,511,654.4
9/10 1,511,654.4 - 9,069,926.4
10/10 9,069,926.4 - 0.85 × N + 0.15

  现在还不确定工具栏所显示的数值和实际的PageRank值是否严格遵循对数关系。看上去的确像遵循了对数关系,因此Google工具栏仅用了一个范围的刻度值就能显示所有页面的PageRank值。对数的基数被定在6-7之间,这一点可以由一个工具栏PageRank值大于4的页面的入链数量举例演算得出,这个连接数量可以从Google那用指令式的链接得到。

Continue reading "使用Google工具栏显示PageRank"

January 16, 2004

PageRank在Google搜索中的实现[ Tech ]

  以下文字的原文:http://pr.efactory.de/e-pagerank-implementation.shtml

  关于PageRank的实现,首先,重要的是PageRank怎样被Google综合考虑进网页的排序。Lawrencec Page和Sergey Brin在公开发表的文章中阐述了这个过程。最初,Google搜索引擎对于网页的排序由三个因素决定:

  • 页面的特定因素
  • 入链锚的文字内容
  • PageRank

  页面的特定因素包是指:网页内容、标题内容和文档的URL。根据Page和Brin公开发表的文章,很有可能有更多的因素已经影响到了Google的排序方式。但是这里我们并不关心。

  为提供搜索结果,Google根据网页的特定因素和入链锚的文字计算出网页的IR值,这个值被检索项在页面中的位置和重要性加权。用这个方法确定文档和搜索语句的相关性。然后此IR值结合PageRank值表示网页的基本重要程度。为了结合IR值和PageRank值,这两个值被相乘。很明显不可能是相加的,否则的话如果页面拥有一个很高的PageRank值,即使和搜索语句无关,也会在搜索结果中排在前面。

  尤其对于2条以或更多的关键词所构成的搜索语句,内容相关性对于评级标准的影响更大;相反地,PageRank主要对于非特定性的单个词作为搜索语句时造成显著的影响。如果webmasters的期望搜索短语有2个或更多的单词组成,那么可以使用传统的搜索引擎优化可以使他们的结果排在高PageRank的页面之前。

  如果网页需要为高竞争的搜索条件做优化,即使页面已经在传统的搜索引擎优化方案下很好地被优化了,要得到好的排名基本上还是需要一个高的PageRank值。由于为了避免受广泛重复关键词的垃圾页面干扰,IR值取决于文档中关键词出现的次数和入链锚的文字。因此,传统搜索引擎优化的作用就被限制了,而PageRank成了在高竞争的搜索条件领域内的决定性因素。

Continue reading "PageRank在Google搜索中的实现"

January 15, 2004

PayPal帐户注册记录[ Tech ]

PayPal  PayPal是全球最大的在线付款平台,使用网络刷卡方式,支持几乎所有国际通行信用卡,实现即时付款,是网上跨国交易最普遍的形式。同时又是收取服务费用最少的一个。

  要使用PayPal实现信用卡在线消费,必须注册一个PayPal帐号,并且验证你的信用卡。

注册帐号步骤:

  1. 登陆PayPal主页:http://www.paypal.com
  2. 点击右上角Sign Up进入注册页
  3. 选择Personal Account in:China,然后Continue。
  4. 然后就是常常看到的一些表单,出了一个Work Telephone之外都是必填项。
  5. 在你所填的邮箱中查收验证邮件,点击其中的一个验证连接激活你的邮件地址。PayPal虽然使用电邮地址登陆,但却支持邦定多个邮件地址,每注册一个都需要验证。

  这样就完成了帐号注册,不过要使用信用卡消费,还必须注册你的信用卡。

Continue reading "PayPal帐户注册记录"

January 12, 2004

主页PageRank猛涨到5[ Tech ]

  前两天还刚从0涨到2,今天所有子站点PR普遍猛涨,可惜Blog主页只有3。我会再接再厉,绝不辜负PR5的荣誉!

January 07, 2004

爱因斯坦的思考题[ Tech ]

Einstein

  昨天报纸上看到个有趣的逻辑推理题,爱因斯坦声称世界上只有2%的人能解出:

  • 有五个具有五种不同颜色的房间排成一排;
  • 每个房间里分别住着一个不同国籍的人;
  • 每个人都在喝一种特定品牌的饮料,抽一特定品牌的烟,养一特定的宠物;
  • 没有任意两个人在抽相同品牌的香烟,或喝相同品牌的饮料,或养相同的宠物。

问题:谁在养鱼作为宠物?

爱因斯坦给出如下线索:

  1. 英国人住在红色的房子里;
  2. 瑞典人养狗作为宠物;
  3. 丹麦人喝茶;
  4. 绿房子紧挨着白房子,在白房子的左边;
  5. 绿房子的主人喝咖啡;
  6. 抽Pall Mall牌香烟的人养鸟;
  7. 黄色房子里的人抽Dunhill牌香烟;
  8. 住在中间那个房子里的人喝牛奶;
  9. 挪威人住在第一个房子里面;
  10. 抽Blends牌香烟的人和养猫的人相邻;
  11. 养马的人和抽Dunhill牌香烟的人相邻;
  12. 抽BlueMaster牌香烟的人和啤酒;
  13. 德国人抽Prince牌香烟;
  14. 挪威人和住在蓝房子的人相邻;
  15. 抽Blends牌香烟的人和喝矿泉水的人相邻。
Continue reading "爱因斯坦的思考题"

January 06, 2004

google.xdanger.com的源码[ Tech ]

  非常高兴,最近经常有朋友问我要这个http://google.xdanger.com的源码。其实早就想把代码帖出来了,只是一来不好意思,二来代码并不规范,必要的注释也没有,不利于理解。不过还是先贴出来再说吧,以后有空慢慢改。

  放寒假有空的时候可以做成标准XML接口供大家使用,虽然这种Meta Search是违法的,汗啊……

  这里/search/index.php的PHP部分,经过内容分析,最后将结果储存于一个$search->result的多维数组,供后面显示部分程序调用。

  以后会在http://google.xdanger.com/code/发布更新。

December 31, 2003

ADSL路由方式实现自动拨号 彻底方便校园网使用ADSL[ Tech ]

  我平时住校,虽说有校园网,但上大的校园网,多数情况下时候网络相应速度实在那个……由于工作的需要,还是毅然装了ADSL,虽说是校园版ADSL,每个月80RMB帐单来的时候还是非常头痛的,于是决定让兄弟们一起扛——大家一起用。

  于是想都没想,楼下教育超市就背了个Hub和一大坨网线再买了块网卡,我做主机,这样连起来用了几个月。

  时间长了之后发现很麻烦:

  • 每天最早开机最晚关机不要说,一大早就被吵醒(大学里总有N个网游狂男子),而且绝对不能随意重起,实在必要要事先跑一圈打招呼,否则万一人家穿着一身能卖¥Xxxx.00的装备在PvP……-.-b
  • 楼面里不止我一个装,每个Hub拖8 台机器,所以走廊里网线就是蜘蛛网,管理员阿姨简直痛恨死了。:-)
  • 校园网内部是100MbBit/s级的,我买的120RMB的Hub只有10MbBit/s,互相之间传东西只有校园网的1/10。
  • 要切换ADSL与校园网及不方便,我根本不能换不去说,其他人也要拔线插线改IP……校园网内还是有很多FTP的,总不能放着高速局域网不去利用。

  经过几天的试验,今天终于将所有问题都解决了!不设主机,ADSL的Modem开启路由,只要通电就自动拨号;省去一块Hub一块网卡一根网线,各自只要将网线插在自己台子地下的校园接口即可;理论上最多能拖254台PC;使用校园网线路,速度100MbBit/s;自编批处理文件双击即可转换ADSL/校园网!我的ADSL Modem为南京斯威特新技术创新有限公司生产,型号为SLA800D。以下步骤均仅限于此型号的Modem,其他型号的设备的参数可能不同,大体思路是一致的。

Continue reading "ADSL路由方式实现自动拨号 彻底方便校园网使用ADSL"

December 27, 2003

Google的PageRank算法(三)[ Tech ]

PageRank特性

  PageRank的特性可以通过以下范例用插图表示。 

  假设一个小网站由三个页面A、B、C组成,A连接到B和C,B连接到C,C连接到A。虽然Page和Brin实际上将阻尼系数d设为0.85,但这里我们为了简便计算就将其设为0.5。尽管阻尼系数d的精确值无疑是影响到PageRank值的,可是它并不影响PageRank计算的原理。因此,我们得到以下计算PageRank值的方程:

(A) = 0.5 + 0.5 PR(C)
PR(B) = 0.5 + 0.5 (PR(A) / 2)
PR(C) = 0.5 + 0.5 (PR(A) / 2 + PR(B))

  这些方程很容易求解,以下得到每个页面的PageRank值:

Continue reading "Google的PageRank算法(三)"

December 21, 2003

Google的PageRank算法(二)[ Tech ]

  Lawrence Page和Sergey Brin在不同的刊物中发表了2个不同版本的PageRank的算法公式。在第二个版本的算法里,页面A的PageRank值是这样得到的:

PR(A) = (1-d) / N + d (PR(T1)/C(T1) + ... + PR(Tn)/C(Tn)) ——算法2

  这里的是整个互联网网页的总数。这个算法2,并不是完全不同于算法1。随机冲浪模型中,算法2中页面的PageRank值就是在点击许多链接后到达这个页面页面的实际概率。因此,互联网上所有网页的PageRank值形成一个概率分布,所有RageRank值之和为1。

Continue reading "Google的PageRank算法(二)"

December 19, 2003

Google的PageRank算法(一)[ Tech ]

  继续。以下文字翻译自http://pr.efactory.de/e-pagerank-algorithm.shtml


  Lawrence Page和Sergey Brin在个别场合描述了PageRank最初的算法。这就是

PR(A) = (1-d) + d (PR(T1)/C(T1) + ... + PR(Tn)/C(Tn)) ——算法1

式中:

  • PR(A) :网页A页的PageRank值;
  • PR(Ti) :链接到A页的网页Ti的PageRank值;
  • C(Ti) :网页Ti的出站链接数量;
  • d :阻尼系数,0<d<1。
Continue reading "Google的PageRank算法(一)"

December 18, 2003

Google的PageRank概述[ Tech ]

Google Logo  前段时间看了 hedong对于PageRank算法学习的文章http://hedong.3322.org/archives/000199.html,参考了PageRank的英文原始资料,感觉hedong写的内容稍微少了点,能有原版译文就更好了!Google了一下,没任何资料……还是自己开金山词霸看吧-.-

  想想反正都看了,索性再花点时间写成文字记下来,方便今后的同道者。可是……555,偶e文实在太Poor了,因此将原文一段段附上,如有严重错误,请一定留言指正!

  这是第一段,译自:Google PageRank Introduction - http://pr.efactory.de/

Continue reading "Google的PageRank概述"

December 16, 2003

彻底冒牌的google.net.cn![ Tech ]

  今天我MSN联系人名单里有一个人改名叫“XXX|google.net.cn|让Google一直在线”(XXX为此人平时网名)。我顿时有点兴奋,Google终于进入中国了?马上打开http://google.net.cn ……

  但我立即感觉完全不是这样,疑点众多,并且经过严密推断,我断言:google.net.cn是完全没有经过Google任何授权的假冒站点,对此我可以负法律责任!以下是论据:

Continue reading "彻底冒牌的google.net.cn!"

December 15, 2003

Windows记事本的一个Bug[ Tech ]

  打开记事本->输入“联通”->保存->关闭->打开,结果如图所示。

Continue reading "Windows记事本的一个Bug"

December 13, 2003

Win32的cronolog不能用:([ Tech ]

   看了车东关于AWStats分析Apache日志的文章:http://www.chedong.com/tech/awstats.html,最令人感兴趣的就是可以使用一个简单的工具cronolog来自动分割Apache日志,然后使用AWStats定时更新工具自动更新一定日期格式的日志文件,生成静态页面。我的系统为WindowsXP,总结步骤如下:

Continue reading "Win32的cronolog不能用:("

December 08, 2003

Google效率太高了[ Tech ]

  我这个页面是昨天更新的,Google搜索到的时候可能是昨天晚上或今天凌晨,但是早上9点我的页面已经在搜索结果中了。与以前页面要被缓存很长时间完全不一样。并且所有列出的字站点也被搜索出了。

Continue reading "Google效率太高了"

December 07, 2003

今天看到VeryCD PR4了[ Tech ]

恭喜 Dash ~~那么多时间努力终于得到了公正的待遇。(千万别再作弊了……)

Googlebot每天都住在VeryCD,连快照都是很新的。

December 05, 2003

Google的PageRank已死[ Tech ]

  今天不知从哪里点到这篇文章:Jeremy Zawodny's blog: PageRank is Dead

  仔细阅读了一下,很有道理……
  粗粗翻译了一下,水平有限……

Continue reading "Google的PageRank已死"

December 04, 2003

终于把MovableType安装好了[ Tech ]

  昨天费了半天才把MT装好,真是历经劫难……

  全部弄好的时候已经要熄灯了,所以这第一篇留到了今天来写。因为装的时候费了不少劲,赶快把还记得的过程写下来,生怕年久失修忘记怎么搞的了。

  我使用的是Windows XP(Professional+SP1)+Apache 1.3.*+ActivePerl 5.8.*+MySQL 4.*

Continue reading "终于把MovableType安装好了"

November 26, 2003

学soaso自己也做了一个[ Tech ]

  忍不住自己动手做了个Google的“皮肤”(虽然不是很确切,暂且这么叫吧)

  读者试试看咯:http://google.xdanger.com