• 快速、超低负载的Arsue PHP+NoSQL+Linux全动态博客程序正在开发中 订阅本博客
  • Blog首页关于自由勇Blog存档联系自由勇留言板网站地图友情链接

  • 分类文档:编程 43篇

    Orshu论坛程序最新进度(14)

    2010年12月22日 21:45

    今天Orshu论坛程序做了一个不大不小的调整。今后修改资料需要输入密码,凡是涉及到修改邮箱的地方,都应该要求用户输入密码,这是为了确保用户帐号安全。不安全的因素在于,如果不需要输入密码,盗用帐号者直接修改邮箱,然后使用“找回密码”的功能直接把新的密码发到他的邮箱。用户修改邮箱时需要输入当前的密码,加强了此安全流程。如果您的Orshu帐号曾在公共机房登录过,而没有点击“退出”,回到家后应该修改密码,以确保安全。Orshu帐号存放在数据库里的用户密码,是经过加密变成乱码,无法进行逆转换,这一点用户可以放心使用。

    Orshu帐号“修改资料”里的Cookies新增加了“退出浏览器时清空Cookies”、“2小时”、“5小时”的选择。注册时,也可以选择Cookies,这是在注册页面新增加的选项。因为“退出浏览器时清空Cookies”这个选项与其它的选项不同,其选项对应的数值是0,如果按照原来的程序不变,则Cookies的时间会被程序认为是0,我们需要的是关闭浏览器才清空Cookies,因为时间的关系,这个问题会在明天修正。“修改资料”里,可以关闭“站内短消息”,这是新增加的选项。

    在注册页面、以及“修改资料”里,在过去,当用户没有改变<select>标签的选项而点击提交2次时,<select>标签里的选项会变为第1项,而不是用户选择的选项,刚才用了2个多小时,经过很多次的测试,修正了此问题。

    “国家/地区”目前默认是要求用户必填的,我正在考虑将它列为选填内容,用户可以将它设置为空白,为了保护用户的隐私权。

    固定链接 | 发表评论(0) | Trackback(0)

    帐号的命名

    2010年12月20日 17:32

    大多数的运营商,用户申请的帐号是以字符,或者电子邮箱地址命名。也有很多的运营商帐号是以数字命名,例如银行帐号、QQ号码、手机号码,等等。以数字命名的帐号,方便之处在于对于存储单元可以直接进行分配。例如某个数字段的帐号,统一放在某个目录,或者某台服务器上。用非数字命名的帐号,实现这种分配则会麻烦一些。当一个项目的帐号数量达到一个庞大的数字时,必须将数据进行分配,以提高速度。

    当然,用非数字命名,优点是好记。非数字无法不能进行数据直接分配,需要分配时需要使用间接的方法。所以对于一个不需要填写人名时的帐号开发时,用数字编号作为ID还是有优越之处。

    固定链接 | 发表评论(1) | Trackback(0)

    关于网页时区的设置

    2010年12月15日 13:45

    美国空间与中国的时差,多为15小时,或者12小时、13小时,也有6小时的,这4种时区的美国空间我都用过,国外空间的时区很多是不一样的。有很多人在推荐修改服务器配置文件如php.ini,或者修改.htaccess。较少人推荐修改程序,我觉得修改程序,在程序里设置是相对最好的办法。因为php.ini不是所有的空间都支持;.htaccess放在根目录里做此设置是会增加资源的负担的,放在根目录的.htaccess文件,对整个网站都有效。

    如果.htaccess文件放在需要设置时区的程序的同一目录里,当更换空间时,这些.htaccess文件都需要修改。因为需要用到设置时区的网页,通常是极少数的,占网站的很小一部分,例如发表留言程序,有记录时间的程序,所以我是在数据库里建立一个值,然后在PHP文件里调用这个值。当更换空间时,只要一次修改一下这个值即可,所以用程序来设置时区是相当最好的办法。

    固定链接 | 发表评论(0) | Trackback(0)

    Orshu论坛程序最新进度(13)

    2010年12月02日 15:56

    Orshu认证论坛的程序终于完成了,这一次近期的大调整,大约经历了30多天的全天工作日,改动的地方相当多。原先计划这次的数据合并,在1~6个月完成,经过不断地努力,已经提前完成了。程序与合并之后,ufoaq.com的功能将会逐步更完善。新开通的3个版块:

    http://msg.salusa.net 土星使者论坛(郝先生的论坛)
    http://sirius.salusa.net Salusa信息讨论专区
    http://club.salusa.net 网友俱乐部

    “土星使者论坛”使用二级域名msg,是因为“使者”一词的英文单词是messenger,为了简短好记,我们取其辅音字母为msg。“土星使者论坛”是属于认证论坛,也就是用户需要登录才可以发帖。此论坛是orshu.com的子论坛,ufoaq.com也是orshu.com的子论坛,访问这些论坛时,可以用同一个帐号发言而不用重复注册。欢迎在“土星使者论坛”这个版块讨论外星人信息、扬升、修行、造物者的爱与光等内容。

    今天上午完成了数据的合并,将网站上传之后,出现了2个报错,一个错误是在本地运行正常,上传之后则是空白页没有报错;另一个程序在服务器上出现的报错是500错误,花了几个小时修正了这2个报错。这是这2天完成的程序:

    需要有Cookies才能访问的页面和论坛√
    友情链接√
    留言板显示√
    留言板发表新帖√
    留言板审核√
    修改留言板√
    重新产生论坛列表√
    重新产生认证论坛的列表√

    今天Go Daddy的FTP奇慢无比,所以影响了今天Orshu论坛上传。IX Web Hosting今天的速度反而很快,本来不打算给IX空间续费了、论坛明年用GD的空间,可是经过多方面的考虑,还是决定用IX。今天调试Orshu论坛时,上传了好几次,经过对比,IX的2个独立IP的访问速度不一样,ping值也不一样,76.163.170.*这个IP实际访问速度较慢,96.0.159.*的IP访问速度较快,所以选用后者作为Orshu论坛的IP。

    繁体/简化切换暂时不可用,因为今天网站空间的FTP速度太慢,暂不做调整,我需要休息一下。

    固定链接 | 发表评论(0) | Trackback(0)

    随记:2010-11-29 Orshu论坛程序最新进度(12)

    2010年11月29日 15:53

    终于完成了独立域名公开论坛和独立域名认证论坛管理程序的初步开发。也就是之前提到的修改25个相关的管理程序,因为独立域名论坛的管理程序是新程序,这次是很大的改动而不是小的改动,再加上这几天有其它的事情,所以延长了开发时间。原先计划是2天完成这25个程序的修改,实际用了4天,工作量也不小,也有一定的难度,不过还是终于完成了。这是这3天完成的程序:

    公共程序:独立域名审核回复√
    公共程序:独立域名回复查看√
    公共程序:独立域名添加新论坛√
    公共程序:独立域名重新产生论坛首页列表√
    公共程序:独立域名新主帖审核√
    公共程序:独立域名回复删除√
    公共程序:独立域名批量清除新回复√
    公共程序:独立域名帖子置顶一次√
    公共程序:独立域名批量清除新主帖√
    公共程序:独立域名编辑已审核主帖和回复√
    公共程序:独立域名认证论坛清空新帖查看√
    cr-.php√

    到现在为止,并没有最终完成,还有一些程序需要编写和修改。

    固定链接 | 发表评论(1) | Trackback(0)

    随记:2010-11-26 Orshu论坛程序最新进度(11)

    2010年11月26日 21:07

    如前一篇的《最新进度(10)》,选择模式1和2并存,或者选择模式3,各有优缺点,选择模式3的话程序重新改起来会很复杂,选择模式1和2并存会简单一点。并且如果选择模式3,按照现在的数据库结构,一个顶级域名的子域名,无论是任何二级域名,其论坛路径只能有一个路径名,否则必须使用不同的服务器空间而不能用同一个服务器空间,也就是不能用服务器上的同一个虚拟目录;而模式1和2并存,则允许不同二级域名可以有相同的路径名。经过权衡之后,还是选择了模式1和2并存。

    模式1和2,目前需要改25个程序文件,今天已经改了13个,还剩12个程序文件要改,就可以实现模式1和2并存了。原来的Orshu论坛程序有公开论坛、认证论坛2种,这2种论坛都是属于《最新进度(11)》中提到的模式1。昨天开始新开发的模式2,则突然间增加了2种新的论坛,即独立域名公开论坛、独立域名认证论坛。至此,Orshu程序的4种论坛类型整理如下:

    1. 公开论坛
    2. 认证论坛
    3. 独立域名公开论坛
    4. 独立域名认证论坛

    上面的独立域名特指顶级域名、二级域名。顶级域名例如ufoaq.com或www.ufoaq.com;二级域名例如club.ufoaq.com。因为时间的关系,暂时Orshu论坛程序不支持三级域名例如abc.club.ufoaq.com,因为原来的程序是专为二级域名和二级域名泛域名解析编写的,不作三级域名的判断。如果想使Orshu论坛程序支持三级域名,这30多个程序文件需要重新再做一个大调整,以及其它的几个服务器判断文件也要做修改。这是这两天完成的程序:

    一个域名一个论坛的首页√
    添加论坛:一个域名一个论坛√
    标题太长,减短标题√
    增加字段,使论坛能直接访问,域名下无分论坛√
    修正帖子页顶端链接√
    公共程序:独立域名发表新帖√
    公共程序:独立域名回复√
    公共程序:独立域名公开论坛临时地址√
    公共程序:独立域名公开论坛存档√
    公共程序:独立域名帖子链接√
    公共程序:独立域名认证论坛首页√
    公共程序:独立域名认证论坛帖子链接√
    公共程序:独立域名公开论坛首页√
    公共程序:独立域名编辑主帖√
    公共程序:独立域名编辑回复√
    公共程序:独立域名删除主帖√
    公共程序:独立域名新主帖查看√
    公共程序:独立域名审核认证论坛新主帖√

    注:上面的“公共程序:独立域名”,这里的独立域名特指独立域名公开论坛和独立域名认证论坛,也就是模式2的两种论坛。

    固定链接 | 发表评论(2) | Trackback(0)

    随记:2010-11-25 Orshu论坛程序最新进度(10)

    2010年11月25日 16:38

    论坛首页的网址,程序设计可以有这3种模式供选择:1、可以用http://club.ufoaq.com/group/name/访问;2、可以用http://name.ufoaq.com访问;3、这两者都可以同时访问。这些模式,需要取舍,各有优缺点。初步设计为1、2模式,只能用其中的一种访问。如果使用模式3,优点是如果一个分论坛的访问量大,可以为论坛拆分做预留,这个论坛有一个独立二级域名。缺点是程序要再做相应的调整,如果两者都可以访问,会使链接不唯一。

    现在的论坛数据库结构是使用1、2模式;如果使用3的模式,需要把数据库结构改成与1、2模式一样,然后增加一个字段来实现是否禁止模式1、模式2都可以同时访问,为将来的功能做预留。

    因为是使用泛域名解析,如果使用模式3,需要解决的是禁止http://club.ufoaq.com/group/name/使用其它的二级域名来访问如http://club21.ufoaq.com/group/name/。

    固定链接 | 发表评论(0) | Trackback(0)

    随记:2010-11-25 Orshu论坛程序最新进度(9)

    2010年11月25日 11:45

    如前一篇的《最新进度(8)》,在做ufoaq.com的调整时,为了保持原来帖子的链接不变,整个Orshu论坛程序要做全部的调整,目前一共大约28个程序文件要改,再加上未开发完成的回收站程序及其它的管理程序,约30多个文件要改。昨天在改的时候遇到了一些困难,因为十分花时间,需要很集中精力,所以这个困难是不小的,实在太麻烦了。昨天下午咬紧牙关,已经解决了。最近我家里有一些变故,这些事情最近总是在缠绕着我,再加上论坛程序的开发很麻烦、复杂、繁琐,工作量很大,很花时间,这是现在论坛不能顺利开发的主要原因。咬紧牙关,坚持就是胜利。

    现在只是修改了首页的程序,还有20多个程序需要修改。解决了这个问题,论坛又增加了一个功能,可以用一个独立的顶级域名或者独立的二级域名作为论坛的首页。例如http://www.ufoaq.com和http://talk.ufoaq.com,或者http://abc.ufoaq.com这3个域名都是分别独立的论坛,每个论坛都有完全独立的域名。同时也可以将论坛的地址定为http://club.ufoaq.com/group/name/,或者定为http://name.ufoaq.com,在程序上这两种模式已经可以自动识别。

    我对自己家里发生的变故只想说:上帝要每个人经历一次又一次的磨难,每个人才会听真理,才会相信福音。保持一颗谦卑的心,珍惜自己拥有的。现实的负面能量总是在一波又一波地侵袭每个人,除了沉默,别无选择。

    此时,推荐一首李克勤唱的《无言感激》,可以在youku搜索到现场版,大家一起听,十分动听。

    固定链接 | 发表评论(2) | Trackback(0)

    随记:2010-11-24 Orshu论坛程序最新进度(8)

    2010年11月24日 13:12

    已经开始调整ufoaq.com的数据与Orshu论坛程序合并。ufoaq.com原来的论坛程序是单版块程序,一个域名中只能有一个论坛,每帖子的链接类似于http://www.ufoaq.com/feast/410这样的形式,地址的结构是域名/目录/帖子编号。而Orshu论坛多版块程序,帖子的链接是类似于http://www.ufoaq.com/group/feast/410这样的形式,多了一个group的目录。

    因为多了这一个目录,然后想使原来的链接http://www.ufoaq.com/feast/410这样的形式也能正常使用,整个论坛的所有程序,大约有几十个程序,都要跟着调整,这也是一个不大不小的调整。

    如果不做调整,原来的每个帖子的链接如http://www.ufoaq.com/feast/410,需要更改为http://www.ufoaq.com/group/feast/410这样的形式。如果做调整使原来的帖子链接保持不变,很花时间。

    固定链接 | 发表评论(1) | Trackback(0)

    随记:2010-11-22 Orshu论坛程序最新进度(7)

    2010年11月22日 20:54

    时间总是很紧迫,生活中很多的事情经常在纠缠着我。由于时间的关系,Orshu新版论坛和认证论坛先加紧推出。网友参与管理的回收站整帖删除已经完成,删除回复这个程序只完成了大约80%;回收站的整帖恢复、恢复删除的回复还没有开发。还有多人管理,当帖子被删除时不存在时需要判断,有几个程序需要修改,等等,这些程序的调试可能需要至少3~5个全负荷的工作日。因为时间紧迫,这些程序先放一下,以后再慢慢调整,现在先把论坛开通。这些未完成的功能,处于隐藏的状态,并不会影响论坛的正常使用。

    Orshu论坛的程序说大也不大,说小也不小,是属于中型或小型规模的程序。之所以国内较少人开发论坛程序,是因为需要较高的门槛,这个门槛就是即使有了相关的技术,还要克服很多生活中的困难,还需要高度集中注意力。如果是作为企业内部开发这类程序,是否有人愿意投资做开发;如果是自己做开发,是否有足够的时间和足够的资金。

    如果按照一般网络公司的工资水平,Orshu论坛整个项目的初期开发大约需要投资5~15万元左右,现实情况就是如此,这个项目已经快要完成了。Orshu论坛目前推出的论坛,都是属于公益类论坛,供网友交流,论坛本身没有任何的经济收益。开发这个论坛,真的是艰难的,要克服很多的困难。

    下一步开始将ufoaq.com的数据与此合并,与此同时ufoaq.com的留言板程序也需要合并和重新做测试,预计3~5天内可完成合并。合并完成之后,Salusa论坛就要开通了。

    固定链接 | 发表评论(0) | Trackback(0)

    随记:2010-11-21 Orshu论坛程序最新进度(6)

    2010年11月21日 17:26

    今天开始编写回收站的恢复程序,也就是帖子被删除之后能够从回收站中还原。与删除帖子的程序类似,删除帖子分为删除主帖和删除回复两大程序;恢复帖子也相应地分为恢复主帖和恢复回复的帖子。在编写恢复程序之后,需要先将前几天编写的删除程序多看几遍,因为凡是涉及到新编写发帖程序、回复程序、删除程序、编辑程序、回收站恢复程序等等,这些都会连接多个数据库。主要是在连接多个数据库会复杂一些,最容易出现的错误是少连接一个数据库,因为这些程序不是经常编写,编写完成之后不再开发,所以不会经常去查看这些程序,因此就不会有一个固定的模式,编程序在这方面经常是处于混乱的状态。

    程序处于混乱的状态是必须经历的过程,因为很多程序,或者模块在开发之前都是没有固定的模式,只有开发完成之后才会有模式,然后根据需要再做调整和修改,修改的次数越多、使用的时间越长,程序越完美。

    在昨天提到的,因为我这几天发现论坛数据库还有一点不足的地方,还需要整个论坛数据结构做一个调整,与此数据库相连的很多个程序都需要做修改。今天已经开始调整数据结构了,在编写回收站相关的程序之前,先将数据结构进行调整。因为如果先不调整数据结构,回收站程序在完成之后也要对回收站程序再进行修改。

    前几天也在想等以后有时间再调整数据结构,不如趁热打铁,现在调整肯定比以后调整要轻松不少。再加上如果以后调整,届时必须再次暂停论坛1~3天,因为调整数据结构需要把数据全部下载到本机,然后再调整程序,为了防止调整期间网友发的新数据丢失,所以必须选择暂停发帖、暂停注册新用户。

    因为现在是将多个域名合并在一起,比如ufoaq.com和salusa.net,当每个论坛流量大之后,会互相影响速度。现在合并在一起是为了便于论坛的开发、管理,流量小的论坛可以合并在同一台服务器上。在未来,如果论坛访问量大了,就需要将域名、或者单个论坛拆分出去,单独使用一个主机。为了使平时论坛转移方便,一直在考虑使用远程数据库,这样程序和数据库分为2个服务器。论坛拆分、远程数据库,是Orshu在将来必须做的2个调整。这2个调整,都很繁琐,到时候的工作量会很大。论坛拆分和远程数据库这2项工作都很复杂,很花时间,我现在也没有设想过怎样做。因为只有在准备要去做的时候,才会知道应该怎样做。

    什么是Orshu论坛?我开发论坛至今已经经历7年了,但是一直没有给这个论坛程序命名。orshu.com是我在2005年注册的域名,当时是想作为我的公司网址,这个域名一直没有开通网站,续了4年的费用,直到2009年到期后没有再续费了,后来域名掉了。今年重新注册了orshu.com,将它作为一个论坛产品的网址,于是这个论坛的程序命名为Orshu论坛。在即将上线的ufoaq.com新版程序、salusa.net认证论坛程序,都是Orshu论坛的子论坛。

    因为最近很疲惫,刚才编程时突然很困,眼睛都睁不开了,于是下午睡了一觉。

    固定链接 | 发表评论(0) | Trackback(0)

    随记:2010-11-20 Orshu论坛程序最新进度(5)

    2010年11月20日 18:16

    昨天因为其它的工作忙了一天,Orshu论坛程序昨天几乎没有开发。今天又因为生活上的事情,也是整整一天没有写这个论坛了,现在再打开前几天写的程序,已经有些陌生了。程序有极高的连续性,如前面所说,http://www.auiou.com/relevant/00000500.jsp(第4自然段),比如开发一个网站的程序连续不休息用100个小时可以完成,假如分为每天开发2小时,实际可能却要200天。因为中间如果有其它事情在干扰,会忘记前面的大量思路。间隔时间越长,忘得越多,不久就会忘得干净干净。

    刚刚前天编写的程序,现在看起来已经陌生了,我需要花时间重新先把以前写的程序读懂。因为论坛程序,回收站程序很复杂、十分麻烦,具体怎样复杂和麻烦,编写过论坛程序的朋友会深切体会到。以前我不写开发日记,现在逐渐写开发日记,一方面也能让自己回顾思路,另一方面也能让读者与我共同了解。具体是怎样复杂和麻烦的,一条一条地罗列出来;然后怎样将复杂的事情简单化,大家也共同解决。不然,有一些工作的辛苦就白费了,因为一些复杂、麻烦一条一条地罗列出来,大家才能共同了解。虽然这些开发过程对于大多数的读者,意义并不大。

    各位程序开发者如果也每天将自己的工作写成日记发表出来,可能会是一个庞大的数目。你不把工作情况说出来,别人很难理解其中的环节,无法得知你的辛苦。这个世界上每个人都很辛苦,具体怎样辛苦,怎样困难、麻烦,只有一条一条罗列出来,才能让外界知道。罗列这些复杂、麻烦、辛苦的事情,最终能让人们明白一个真理,无论是多么辛苦、麻烦,最终都是没有分别的,都是不必要的。就像《与上帝对话》中的一个真理,人生没有任何任务,没有任何义务,而是无条件的爱,没有什么是必须做的,http://www.auiou.com/relevant/00000536.jsp。只有当人类经历了无数的麻烦、巨大的麻烦,人类才会明白这一点。是群体意识,强制每个人要必须做什么,强制每个人必须有任务,整个因果顺序被人类颠倒了。群体意识对个人意识有深远的影响,群体意识决定个人意识,是群体意识要强制我们必须不停地工作。

    影响程序开发速度最重要的因素之一,最主要是需要集中精神,减少外界的干扰,如果被生活中的各种事情干扰,也会严重降低开发速度。我最近就是被生活中的一些事情干扰,导致这两天不能开发程序,过几天可能还要出趟远门,大约1个星期回来,导致Orshu论坛程序的调整和开发要被迫中断。有的网友说一边听音乐一边编程序是否可以?我觉得至少要降低一半的开发速度。我本人也是一位多年的音乐发烧友、歌迷,我极热爱音乐。可是听音乐时,会大大降低编程序时的注意力。当然,也需要视程序的复杂程度而定,复杂的程序需要高度集中注意力,编程时不能听音乐;不复杂的程序的编写和调试,听音乐可能不会有大的影响,但是安静的环境对于编程序是十分有益的,只有安静,才能静下心来,才能迸发出灵感。

    Orshu论坛程序这次一方面是做几个大的修改和调整,另一方面是编写新的认证论坛程序,认证论坛程序里包括论坛页面程序、网友管理程序、回收站程序等等。原先计划是大约7天就可以完成了,现在看来远不止这个时间,可能集中精力共需要15~20天左右的时间,也可能更长,因为我这几天发现论坛数据库还有一点不足的地方,还需要整个论坛数据结构做一个调整,与此数据库相连的很多个程序都需要做修改。这个数据结构以后修改也可以,只是现在正赶上大调整,趁热打铁一起全调整。虽然现在这个论坛的开发已经接近尾声了,但是程序不得已越写越多,需要实现的功能不得已越写越多。也有很多人不理解为什么要开发程序、开发软件,因为程序是一个很好的平台,可以实现需要的功能。比如现在的各种电子产品,电脑操作系统、自动柜员机、手机里的程序,包括洗衣机里的程序,各种各样的机器,都需要用相关的语言来编程,会大大提高人们生活中的便利。所以开发程序,当程序完成之后,后面就会轻松许多。对于网站、论坛、博客来说,我觉得PHP语言是相对易用,程序开发速度相对最快的语言之一。ASP与PHP相比,ASP大约比PHP复杂和繁琐3~5倍以上,所以PHP的开发速度是ASP的几倍。

    Orshu论坛程序整个都是我编写的,这次编写并不是全新开发,因为之前已经开发过几次,论坛功能已经比较全了。这个论坛程序没有任何的现金回报,开发程序的时候因为需要高度集中注意力,所以是全负荷连续多天工作的。我的家人对此是不理解的,只有挣到钱,他们才会认可我的忙。技术开发,很艰难,很辛苦,要克服很多的困难,别人无法理解。你每天在电脑前拼命地编写程序代码,可是他们看不到你的工作量,只有挣到钱,他们才会承认你的辛苦,这就是现在现实的第三密度社会的生活。

    Orshu论坛程序因为使用优化的算法编写,所以对于服务器的要求较低,能够降低许多的服务器成本,这也是我一直坚持自己编写程序的原因之一,坚持自己编写程序的另一重要原因是能够进行再开发、扩展新的功能。如果使用别人的程序,再开发、扩展新功能几乎是不可能的,前面也讨论过,因为使用别人的程序来再开发,要远复杂于自己从零编写的程序。

    正因为Orshu论坛程序的效率高,节省服务器成本,所以论坛永远不会要求网友合伙出钱或者捐助来维持网站,我永远不可能这样做。如果有一天网站因为资金不足维持不下去了,我会选择关闭、或者暂停网站和论坛。几年前有位朋友使用某知名的论坛程序建了一个论坛,一年的服务器费是一两千元,当时是大家凑钱出的。我编写的论坛程序,所需的服务器费用比这低许多,所以也永远不可能让网友合伙出钱,也永远不可能向他人求助出钱办网站,因为在维持网站方面已经有稳定的收入来源。

    论坛程序的项目说大也不大,说小也不小。比起单用户的博客程序,论坛程序的复杂程度约是单用户博客程序的5~10倍或以上;如果论坛程序比起一个大型软件,工作量则少了很多。因为论坛是在服务器无穷次地运行,所以为了使论坛程序实现更简洁的程序代码、实现更高的效率,一个人来开发程序也是不错的选择,团队合作反而更加麻烦、增加很多的成本。

    这是前几天完成的程序:

    管理员删除主帖时每个ID的发帖数减少√
    回收站主帖查看√

    固定链接 | 发表评论(2) | Trackback(2)

    随记:2010-11-17 Orshu论坛程序最新进度(4)

    2010年11月17日 22:10

    下列进度情况中,“√”表示已完成,“主帖”指的是楼主的发帖。Orshu新版论坛在开通之后,在功能上有什么需要改进的,欢迎大家提出来。今天第一次开发网友参与论坛管理的程序,也是第一次开发论坛的回收站程序。以前开发的管理程序虽然功能已经比较全,但是那些管理程序没有向网友开放。因为以前已经开发完成了类似的管理程序,所以网友参与论坛管理的程序开发起来的速度会提高很多。网友参与管理的程序,因为是多人管理,所以需要判别帖子是否存在,是否已经被删除。如果帖子不存在,则不执行任何操作。删除主帖和删除回复的程序是不同的,相差很大,也有大约40%的公共部分相同,所以这次删除主帖和删除回复采用公共程序的方式。上个月开发9个程序,也是用类似公共程序的方式,效果十分好。单独部分采用include()的方法,这样减少很多重复的代码编写,节省时间,因为这些代码已经写在公共程序中,也不会增加服务器的负担。这是今天完成的程序:

    管理员删除主帖√
    管理员删除主帖后台提示√
    如果新发的帖被清空则清空后台相关的提示√
    管理员删除回复时提示√
    管理员删除主帖或回复的提示列表√
    管理员删除主帖或回复后论坛首页列表更新√
    管理员删除后帖子编号进入可用的列表√
    回收站中相同编号的帖子不要覆盖,自动重新命名回收站中帖子的ID√

    论坛正在继续加紧开发中。

    固定链接 | 发表评论(2) | Trackback(0)

    随记:2010-11-16 Orshu论坛程序最新进度(3)

    2010年11月16日 08:54

    下列进度情况中,“√”表示已完成。昨天主帖显示的回复数的问题已经解决,新增加了一个字段来统计每个帖子删除数。例如某个帖子的回复数是35,删除数是3,这两个值都会记录,实际的回复数会用35减3,实际显示为32。这是昨天完成的程序:

    为防止Spam,新注册的用户3小时内不能发帖。√
    3个月以上的帖子回复时不能被顶起√
    修正论坛v-.php√
    编辑已审核认证论坛时删除主帖√

    今天开始开发网友管理论坛,删除帖子和回收站的程序。

    固定链接 | 发表评论(1) | Trackback(0)

    随记:2010-11-15 Orshu论坛程序最新进度(2)

    2010年11月15日 11:19

    下列进度情况中,“√”表示已完成。需要说明的是:关于认证论坛的回复数,在主帖中显示的回复数例如35,假如其中删除了3条,仍然暂时会在主帖显示35条,但是在论坛上端的回复数统计、论坛标题列表中会减少3条。之所以不显示为32条是因为需要增加一个数据库的字段来显示删除了多少条,35条是为了统计总页数。回复中,删除的地方不作填充。当然,为了使论坛的显示没有异议,我可能需要增加一个数据库的字段来解决此问题。这是这几天完成的程序:

    认证论坛新帖查看后台:翻页√ 编辑1楼√ 清空查看√ 删除整个主帖√
    认证论坛回复√
    认证论坛回复查看后台 编辑√ 删除√
    修正reply.php√
    认证论坛清空最新回复查看 prev-.php√
    修正sla-.php√
    修正整帖删除√
    修正主帖与回复有重复√
    认证论坛已发表回复的编辑和删除√
    slan-.php统计删除数√
    认证论坛删除或编辑√

    固定链接 | 发表评论(0) | Trackback(0)

    随记:2010-11-09 Orshu论坛程序最新进度

    2010年11月09日 09:41

    为了让关注salusa.net的朋友了解论坛的开发进度,现在改为直播。过去我开发的程序中,都比较少在博客中写开发过程。现在直播,也能让网友共同了解论坛的一些结构,便于大家以后共同的发展和共同的管理。Orshu的整个论坛程序是我从0开始编写的,这一年多经历了几次大的修改。修改的主要过程是,虽然zj7.com是在2009年12月上线,但这个PHP博客的程序大约是我在2009年3月编写完成的,当时的这第一个博客程序是多用户程序。因为博客与论坛的程序、数据库结构有部分相同,所以很快在这个博客程序的基础上修改和调整,大约用了四、五天,编写了第一个PHP列表式论坛程序,应用在ufoaq.com,2009年4月30日上线。

    这个列表式论坛程序是单版块儿,也就是整个网站只能有一个论坛,于是经过大约1周的时间,在2009年7月改为多版块儿论坛,但论坛页面只支持中文。之所以需要花这么多的时间,是因为相应的管理后台的程序都要做修改。2009年底此多版块论坛程序的管理后台每个文件的程序中有一些繁琐之处做了修正,还有一些错误,大约用了几天的时间做了大的修正和调整,由于当时没有作笔记,要改的地方太多了,现在已经记不清修改了哪些项目。今年的7~8月,这个多版块论坛程序再做一次大的修改,改为采用多域名、泛域名解析、预留了中英文的论坛页面,不同域名间只用同一个帐号登录即可。最近做的2次大修改是将主站与论坛程序拆分,以及修改了数据库的路径。

    现在需要开发的是认证论坛。认证论坛首页是采用原来编写的公开论坛的首页程序,在此基础上做修改;认证论坛的帖子页面,也是修改原来编写的帖子程序。昨天已经完成了发表新帖、管理后台查看新帖的翻页程序、编辑1楼的功能。现在需要编写回复、删除主帖、最新回复查看平台、删除回复、回收站、从回收站恢复帖子的程序,这6部分都是全新的程序,结构会稍复杂一些。其中,回收站恢复帖子的程序现在看起来最为复杂。最新主帖查看平台,已经完成。还需要编写永久封闭ID、封闭ID三天、封闭IP、投诉违规帖的程序。

    删除回复现设定为贵宾、版主、管理员可以删除,删除整个主帖设定为版主、管理员可以删除。因为是多人参与管理,删除时需要判别帖子是否存在,如果不存在,则不执行删除。

    将论坛冻结的功能已经测试可以使用,但是管理员执行论坛冻结的程序还没有编写。现暂定为3名管理员或版主投票,可以将论坛冻结,冻结后网友不能发言;3名管理员或版主投票,可以将论坛解冻。冻结论坛是为了避免论坛一时的混乱局面,建议冻结时间为1~3天为佳,等冷静期过后,论坛就可以解冻。ufoaq.com论坛从来没有冻结过,因为气氛一直很好,只有转移服务器的时候必须关闭评论、暂停注册,为了避免用户发的新数据丢失。

    编程序需要很大程度地静下心来,很怕受打扰,十分影响效率。

    固定链接 | 发表评论(0) | Trackback(0)

    Orshu论坛帖子编号的排列规则

    2010年11月08日 10:22

    Orshu的公开论坛,主帖需要审核才能显示。发帖时会产生一个临时的网址如……/pubpre/nepenthes/29,审核后访问之前的这个网址,会自动定向(跳转)为固定的链接如……/pub/nepenthes/15。编号由临时的29变为固定的15,是因为之前有一些主帖没有通过审核,例如spam、垃圾广告等内容。

    认证论坛的编号有所不同,认证论坛不需要审核,发布的帖子的编号是固定的。例如发了一个……/res/nepenthes/18的帖子,这个链接就是永久链接。但如果发布的主帖是spam、垃圾广告、违规内容,管理平台删除此帖后,编号18会成为预留编号。这个预留编号用于新帖,也就是删除原来的编号为18的帖子,新发的帖子的编号也是18,而不是19。用这种方式是为了避免分页中每页显示的帖子数少于设定的每页30帖,目前此论坛只能用这种办法解决。

    固定链接 | 发表评论(0) | Trackback(0)

    又是2次论坛程序大修改

    2010年11月07日 15:17

    Orshu社区的论坛程序再次修改,此程序支持不同域名、泛域名的解析。原来是社区与主站使用同一个空间,这样不利于网站今后的发展,需要拆分。前几天修改之后,主要是把社区与主站分开。需要修改的地方很多,大约花了3天的时间。之后的一次修改在前天完成了,把数据库的目录修改了一下,大约花了半天的时间。

    现在需要开发新的程序是认证论坛,经过多天的思考和筹备,今天已经开始编写了,正在编写和大量的调试、测试中。这个新程序何时能完成,时间不能确定,估计最快要7天。这个认证论坛的功能,在之前的这篇文章,http://www.zj7.com/strive/123,已经有介绍。计划第一个开通的认证论坛将是“土星使者论坛”、“Salusa信息讨论区”,应用于salusa.net。这2个论坛的内容没有限制,“土星使者论坛”可以讨论外星人信息、扬升、修行、造物者的爱与光等内容;Salusa信息可以讨论与此相关的内容。salusa.net的论坛即将开通,届时欢迎各位朋友加入。有论坛这样的一个平台,希望大家可以互相结识朋友。多发帖,混个脸熟也不错。为了满足用户聊天的需要,开通“网友俱乐部”。

    因为Orshu的论坛程序在大修改,所以现在论坛暂停发帖、暂停注册新用户。ufoaq.com的用户帐号、帖子等数据即将与Orshu社区合并,预计需要1天的时间完成合并。合并之后,用户可以用同一个帐号在Orshu社区下所有的论坛登录,例如在ufoaq.com和salusa.net均可以用同一帐号和密码登录。等这次认证论坛程序编写完毕和ufoaq的数据合并完毕之后,才可以正常使用论坛。

    认证论坛首页和帖子的页面、发主帖的程序已经初步完成,接下来是编写回复程序,这3个程序是在我原来编写的公开论坛的基础之上做的修改。认证论坛现暂定为必须是登录用户才能在认证论坛发帖,为防止用户为了访问页面而注册一个临时的帐号,非登录用户第一次访问认证论坛页面会自动跳转至加载Cookies的页面,然后就可以浏览认证论坛。发帖数超过300帖,自动升级为认证用户,这个数值以后可能会变动。此论坛有发图片的功能,为防止不明人士乱发图片,只有认证用户才能上传图片。

    这次编写的程序,有很多是新程序,也有一些是在原来编写的程序上做的修改。认证论坛需要有人管理,需要分配给一些网友管理权限,让网友参与管理。这次的管理程序有些复杂,但还是以最简化的形式。2008年我开发的一个论坛程序,把大量的时间花在了管理程序上,但后来没有发展起来。之后,所有的程序都改为PHP开发,因此都需要重新编写。去年开发的TGF论坛,也是把大量的时间花在管理程序上。

    自己开发论坛的优点是论坛的功能可以改进,可以增加、删除功能。

    固定链接 | 发表评论(2) | Trackback(0)

    计划再次开发认证论坛

    2010年10月25日 18:49

    认证论坛就是需要登录才可以访问的论坛,也就是封闭的论坛。Orshu社区的开发日记,http://www.zj7.com/strive/109,在这个社区的基础上增加认证论坛。TGF是我开发的第一个留言板式的论坛,当时用了大约40天全负荷工作日完成,开发日记,http://www.auiou.com/relevant/00000446.jsp。TGF的功能还是很多的,对于管理员、版主、贵宾,都有不同的权限,当时光是对于管理员、版主、贵宾能够审核新成员的加入,管理员能够增加/删除版主、贵宾,版主能够增加/删除贵宾这方面已经花了很多天的时间,因为这一块儿的程序实际很复杂,越写越多,工作量越来越多,总有做不完的事情。但遗憾的是管理员、版主、贵宾对论坛的管理功能,如删帖、编辑帖子、删除ID、封闭IP等等,还没有来得及开发。

    Orshu社区的功能现在已经比较完善,能够上传图片,管理后台能够审核图片、删除图片。现在计划在Orshu社区开发认证论坛,即用户需要登录才可以留言,游客会有一个链接提示如“游客浏览请点击……”,为防止用户乱发图片,只有认证的用户才能在认证论坛上传图片。认证的用户初定为注册时间超过半年,发帖数超过200帖,自动升级为认证用户。对于乱发广告,或者论坛不欢迎的用户,做删除ID或者论坛建立黑名单的处理。可以分配多名管理员、版主、贵宾参与管理,“举隔开报违隔开规帖”放在比较明显的地方,做严格的管理。如果必要的话,甚至楼主都可以参与删除同一篇帖子里的回复。

    认证论坛一方面可以提高一个群体的隐私,也可以不被搜索引擎收录,而保证服务器的安全,但前提是认证论坛的内容必须是积极健康,有利于大众的,言隔开论隔开自隔开由也是在这个基础之上。

    门户网站很多评论的帖子、以及门户网站提供的博客的评论处的回复没有删除,是因为那些评论是使用JavaScript连接的,没有被搜索引擎收录,如果不删除,不会一下子影响服务器的安隔开全。所谓“服务器的安隔开全”,就是服务器、网站不被关闭。很多公开的论坛、百度贴吧的帖子需要删除,一方面是维护论坛的气氛,另一个很重要的原因也是服务器的安全。这个安全的尺度,是不容易知晓的。上个月,“疫隔开苗”都是敏隔开感话隔开题。

    为了解决这个安全的问题,很多论坛使用了需要登录才可以访问的方式。经过我很多的观察,这类论坛的内容不大可能搜索引擎收录,因此是比较安全的。因为解决了这个安全的问题,认证论坛的管理会灵活许多,也更利于论坛的良好发展。如果论坛的人气很高,使用认证的方式,对论坛的发展也是有好处的,管理会轻松许多。一个人气高的认证论坛,好比是关起门的超市,里面是怎样的,外面的人看不到,这种模式有利于论坛的发展,也是迫不得已才采用这种方式。但认证论坛缺点是不能被搜索引擎收录,会大量减少来自搜索引擎的访客。公开的论坛,在管理上很辛苦,每天都需要打起十二分精神,对帖子需要进行严格地审查,因为稍微不留神,网友的某一个帖子就可能导致整个网站被关闭,相隔开关部隔开门还会罚隔开钱。因此,对于有其它宣传渠道、并且想在管理上更加灵活、节省更多的人力,认证论坛是比较适合的。

    固定链接 | 发表评论(1) | Trackback(1)

    document.body.innerHTML出现“操作已终止”解决一例

    2010年08月27日 19:37

    前几天在调试简体中文/繁体中文的切换程序时,需要用到JavaScript的document.body.innerHTML。document.body.innerHTML在IE或者Firefox下,都能运行,它的作用是读取当前整页的HTML代码,或者给当前整页的HTML代码赋值。

    但是在调试的过程中,IE总是出现“Operation Aborted”(操作已终止)的提示。经过筛选、删除其它的HTML代码,排除法,找到了原因,问题解决。

    有2种情况,使用document.body.innerHTML,IE会出现“操作已终止”的提示:1、<base>标签写在<body>标签中,会出现此提示。解决办法是,将<base>标签写在<body>之外。2、<span>等标签,没有用</span>等相应的标签来闭合,也会出现“操作已终止”的提示。

    固定链接 | 发表评论(1) | Trackback(0)

    日记随笔:论坛程序再次开发完成

    2010年08月26日 09:44

    最近两个月真的很忙,所以有一段时间没有更新博客了,工作上总是有忙不完的事情。经过很多次的大修改,最新版的论坛程序,在昨天上线了,例如这个版块:http://garden.cpfor.com/group/carnivorousplants/。

    cpfor.com的论坛是orshu.com的子论坛,使用同一个数据库,所以用户只需要在cpfor.com或者orshu.com注册一个用户名即可,不需要重复注册。也就是,在orshu.com注册的用户名,在cpfor.com也可以登录;相反亦可。但并不是多域名绑定同一个空间,而是多域名使用同一个数据库。

    这个新版的论坛程序,是采用多域名的泛域名解析、或者二级域名,共同使用orshu.com的程序和数据库。对于用户而言,只要在orshu.com或其它域名的子论坛当中注册一个用户名即可,不需要每个不同域名都注册一个帐号,有些类似于“通行证”,我原先想把这个帐号命名为“Orshu通行证”,现在暂时命名为“Orshu帐号”。

    这个新版的论坛程序,支持多版块、多语言,论坛同时支持中/英文。但是因为时间的关系,orshu.com的论坛目前只用于中文,程序中已包含中/英文语言的切换,预留了此重要的功能。当增加新的语言时,只需增加相应的语言包即可。简体中文/繁体中文的切换,是使用JavaScript的方式,可以节省很多的服务器资源,又减少开发的成本。因为汉字的字符ANSI编码占2个字节,汉字的字符UTF-8编码占3个字节,所以orshu.com的论坛程序语言使用GB2312,编码使用ANSI(936)。而英文字母、数字的的编码,无论是UTF-8还是GB2312,都是占用1个字符,所以使用UTF-8语言和编码的英文的论坛程序需要使用其它的域名。

    ufoaq.com是我开发的第1个PHP标题列表式论坛程序,当时是单版块的。后来改为多域名、多版块、多语言,现在又改成了新的orshu.com程序,最近开发了上传图片、游客不需要注册、认证游客、黑名单等功能。为了用户不需要重复注册帐号,也为了管理方便,ufoaq.com的帐号有可能会合并到Orshu帐号。

    TGF是我开发的第1个PHP留言板式的封闭式论坛程序,用了300多小时开发完成,http://www.auiou.com/relevant/00000446.jsp,程序有一些不足之处,所以那个论坛已经暂时关闭了。今后,可能还会考虑再次编写和修改这个程序。

    这些程序原本在几年前就应该实现,现在刚实现可能有些晚了,但是那时候只能用ASP开发,并且没有现在自己设计的论坛数据库结构和论坛程序结构和思路。这个论坛数据库结构和论坛程序结构是在2008年才设计完成,并且开发完成的。我的PHP起步很晚,PHP学了6年多都没有学会(6年多当中只是偶尔关注一下PHP),直到2009年初需要使用国外空间,才学会了PHP。原来的网站语言,全部转化为PHP,PHP是最为理想的网站编程语言之一,最重要的原因是程序简洁,会减轻不少的工作量。

    今年是我编程生活的第8年,我已经30岁了,编写程序的工作量是十分庞大的,很辛苦,当中有大量的工作细节和大量需要解决的问题,并且每次开发经常会遇到前所未有的新问题,语言是难以形容的。但是好处是一次开发完成,就不用再重复劳动了,只是需要不断地改进,经过多次的小修改、大修改,程序会越来越完美。

    固定链接 | 发表评论(1) | Trackback(1)

    日记:2010-04-05

    2010年04月05日 17:56

    昨天重新写了一个新的分页程序,类似于这样的存档功能:http://www.ufoaq.com/archives/201003/。这个分页程序比较复杂,是打开2组数据库,大约是在2006年完成的ASP程序,后来移植到PHP程序。因为当时写程序的时候,没有记笔记,算法已经记不清了。后来重新写了这个程序大约2次,每次都需要2~4天,都没有成功,失败了,运行的结果总是不正确。这次重新编写成功了,并记录了笔记。因为这个分页的算法太重要了,我需要熟练地掌握它,并且理解它,希望让它有更简单的算法,我以前写的论坛程序www.ufoaq.com、留言板程序http://www.ufoaq.com/cast/wish/,都是使用这样的分页算法,所以才可以支持很大的容量。

    因为当时没有写工作日志,算法已经完全忘记了。直接看程序,无法看出当时打草稿时的数字规律,无法看懂。所以很多程序都直接使用大约2006年推算的算法,经过很多的测试,从未出错。http://www.ufoaq.com/archives/201003/的程序是每页300条记录,分为2纵列。打开2组数据库,然后依次显示每条数据。当显示完第150条数据时,输出一个<li>元素使其分成第2列。现在这个程序重新写,2组数据库提取时,让其合并为1组就方便多了。2组数据库,或者多组数据库合并为1组的好处是后续的操作简便,可以实现更多的功能。例如让其第1页显示100条记录,从第2页开始每页显示300条记录;15条记录×2列为1个区域,即30条记录/区域,每页10个区域,即每页300条,以分区域的方式显示。

    我写的博客程序www.auiou.com和www.zj7.com的分页程序的算法相对比上述简单很多,如首页之后的第2页、第3页的分页程序,分类和按月存档的的分页程序,都是相同的算法,如这里http://www.auiou.com/relevant/00000445.jsp,这个算法任何语言都可以通用。但还可以再简化,例如PHP可以直接用$p=ceil($auf/$w3);一个语句就可以获得总共的页数。所以这个博客的分页程序可以简化为:

    <?//$pa为页数
    $w3=10;
    $p=ceil($auf/$w3);
    if (!$p) $p=1;
    $w1=($pa-1)*$w3+1;
    $w2=$pa*$w3;
    if ($w2>$auf) $w2=$auf;?>

    因为打开多组数据库的分页比较复杂,这2天总是出现很多的错误。每一次程序很乱的时候,就把相应的大片的程序删除,再重新写,反复写了3次。今天调试的时候,发现昨天写的程序中有四、五处错误,逐个排查之后,经过很多测试,程序运行正常。

    这2天运算的一些过程:

    23 4:
    第N页数据组1组数据库的情形2组数据库的情形规律
    131-41-3 1-1
    225-82-52=5-3
    329-126-96=9-3
    4213-1610-10 1-310=13-3
    5117-204-74=17-13
    6121-238-108=21-13

    说明:上面的23 4,表示:23是总共有23条数据,4为每页显示4条记录;其中,每组数据库有10条记录,下述用变量$i3表示。下面的数据与上述的格式相同,因为篇幅的关系,不再打表格,因为我在用数字做演算测试的时候,也没有像上面一样打表格,而是直接用下面的方式来记录:

    23 5
    1 3 1-5 1-3 1-2
    2 2 6-10 3-7 3=6-3
    3 2 11-15 8-10 1-2 8=11-3
    4 1 16-20 3-7 3=16-13
    5 1 21-23 8-10 8=21-13

    23 6
    1 3 1-6 1-3 1-3
    2 2 7-12 4-9 4=7-3
    3 2 13-18 10-10 1-5 10=13-3
    4 1 19-23 6-10 6=19-13

    30 6
    1 3 1-6 1-6
    2 3 7-12 7-10 1-2
    3 2 13-18 3-8 3=13-10
    4 1 19-24 9-10 1-4 9=19-10
    5 1 25-30 5-10 5=25-20

    33 6
    1 4 1-6 1-3 1-3
    2 3 7-12 4-9 4=7-3
    3 3 13-18 10-10 1-5 10=13-3
    4 2 19-24 6-10 1-1 6=19-13
    5 1 25-30 2-7 2=25-23
    6 1 31-33 8-10 8=31-23

    $e4的值表示提取最近一组数据的数据条数:
    <?$pb=ceil($e1/$i3);
    $p=$pb;
    $e4=$e1-($pb-1)*$i3;?>

    通过上述很多数据的反复对比,如23 4这些数据,其规律10=13-3,4=17-13,8=21-13,其中等号左边的值如10、4、8,是2组数据库时提取第1组数据库时的$w1,等号右边的被减数13、17、21,是2组数据库时的$w1,等号右边的减数3、13、13,是我需要重点推算出来的值,这个值很容易出错,假设这个值的变量是$e5。$e5的意义是,在当前的页面中,$e5表示之前显示过多少条数据。最终经过直接观察数字的规律而直接写公式,我并不明白这是为什么,但是根据数字的规律用这个推算出来的公式,就不会出错了。规律如下:

    数据编号需要减去的值$n1
    30
    210
    120

    同样的格式:

    2 0
    1 10

    如果将$n1显示为未乘以$i3前的值,如下:

    3 0
    2 1
    1 2

    4 0
    3 1
    2 2
    1 3

    通过上述的规律,最终,$e5的值可以准确地获得了,如下:
    <?$e5=$e4+($pb-1-$f1)*$i3?>
    其中,$f1表示数据组的编号。用上述获得$p页数同样的方法来获得$f1,如下:

    <$i=$e1+1;
    $j1=$i-$w5;
    $f1=ceil($j1/$i3);?>

    变量$a5表示如上述提到的第1页特定显示的条目数如100条记录,$w5和$w6是最终要获得的2组数据库合并后的起始和结束值,$w5是起始值,$w6是结束值;相当于这页程序http://www.auiou.com/relevant/00000445.jsp的$w1和$w2。为了不造成混淆,必须使用2个不同的变量,因为当$a5存在时,$w5和$w1的值不同。$w5和$w6的获得方法:

    <$w5=$w1;$w6=$w2;
    if ($a5){if ($pa==1){$w6=$a5;$e6=$a5;}
    if ($pa>1){$w5=$w5-($w3-$a5);$w6=$w3+$w5-1;}
    $p=ceil(($e1-$a5)/$i3)+1;}
    if ($w6>$e1) $w6=$e1;?>

    通过对各个部分的反复思考和测试,最终大功告成了。很多程序,以及程序中的变量代表的含义,经常是没有唯一的意义,或者方法,或者思维方法,一会儿这样,一会儿那样;一会儿代表这个含义,一会儿代表那个含义。但最终还是能通过使用不同的方法,实现想要实现的功能、解决问题,殊途同归,有些类似于代数、几何的证明题用不同的方法证明同一个命题。

    固定链接 | 发表评论(0) | Trackback(0)

    可简化改进的业务流程

    2010年03月31日 11:35

    在很大程度上,有些关键的技术,会关系到整个业务流程。如果一个技术能够减少人力,节省时间,就是好的技术。比如在验证域名所有人的业务流程上,程序实现起来比较简单,比如可以让用户在域名中上传一个文件,通过检测此文件是否存在,来验证域名所有人。除此之外,还有很多有效的方法。Google在这方面做得相当好,他们通过上传文件,或者添加CNAME来验证域名所有人,完全由用户来操作,不需要Google的工作人员来人员审核。

    如果我们开发验证域名所有人的程序,通过上传文件,是最节省时间和节省用户人力的方法,十分方便。用户不需要花额外的时间,验证立即就可以完成,由服务器来自动完成。添加CNAME或者A记录,因为域名生效可能需要一段时间,所以这个方法可以需要用户等上几个小时。

    然而国外现在的很多主机商,需要用户将DNS(Nameservers)修改为他们的指定的DNS,才可以在主机中绑定域名,http://www.zj7.com/strive/69。经过我很多次的测试,添加新的A记录,一般在半个小时以内生效;修改A记录,需要3~5个小时生效;如果很久不修改DNS,突然修改,可能会在几分钟内生效,如http://www.zj7.com/strive/72;然后再次修改DNS,估计需要12~24小时生效。可见,修改DNS对于用户是十分不方便的。

    国外很多大的虚拟主机服务商,域名绑定时,则不需要验证域名所有人,就可以直接添加域名。如果万一出现域名绑定已被别人恶意占用,还可以用很多的方法来解决,比如用添加/修改A记录,或者添加CNAME的方法,来验证域名所有人,使服务器自动撤销别人恶意占用的域名绑定。

    国内的域名贝岸系统,如果新注册的域名,已经被别人贝岸过,需要传真身份证复印件、域名证书,费时费力,http://www.auiou.com/relevant/00000538.jsp。如果能够像Google一样,通过上传文件,或者添加CNAME的方法,就不需要花不必要的时间来发传真,人工审核了。并且让服务器来判断域名所有人,100%不会出现错误,因为域名是唯一的。

    固定链接 | 发表评论(0) | Trackback(0)

    我这样统计整个远程网站的大小

    2010年03月30日 10:20

    这几天设计了一套程序,当服务器不支持压缩/解压缩时,为了避免FTP经常中断而不使用FTP,通过本地的PHP程序,可以下载自己的任意网站的所有源程序文件,http://www.zj7.com/strive/76。无论网站是PHP空间,还是ASP,ASP.net,JSP等空间,在远程网站写相应的“接口”程序,本地文件就可以自动下载整站程序。经过测试,程序运行良好。

    当整个网站下载完毕之后,需要检查是否有的文件没有下载,或者下载不完全。在本地建立一个日志文件如info.txt,用来记录服务器上整个网站的大小、文件个数、文件夹个数,整站下载完毕后查看本地目录的整个网站大小、文件个数、文件夹个数,对比info.txt,如果这3个值都分别相同,说明完整地下载了。

    统计整个远程网站的大小需要遍历远程网站的所有子目录。遍历所有子目录,必须建立自定义函数function aa(),以及使用while循环,在while反复调用aa()函数。而PHP中,function **(){}大括号中的变量不能被大括号外调用,这是造成程序设计困难的很大障碍,但最终还是有对策,可是繁琐了很多。如果PHP的function的大括号中的变量能够被大括号外调用,就简单许多了。因为遍历文件夹当中,用while循环多次调用这个aa(),尝试用return来调用大括号中的变量,但还是失败了,因为每一次循环,return的值会被清空,并且不能累加。经过一晚上的思考,每个文件大小用echo语句输出为HTML代码,再被本地程序用file_get_contents()函数获得远程所有的每个文件的大小,然后在本地再累加,就可以解决PHP的这一不便了。思路如:

    远程网站的http://www.zj7.com/aa.php:

    <?function aa(){//$g的值为遍历的每个文件。
    if (!is_dir($g) filesize($g)."\n";
    }?>

    本地程序:

    <?$i=@file_get_contents("http://www.zj7.com/aa.php");
    echo $i;
    $i="";?>

    然后对http://www.zj7.com/aa.php产生的数字,逐行进行累加,就可以统计整个远程网站的大小。

    固定链接 | 发表评论(0) | Trackback(0)

    日记:2010-03-29

    2010年03月29日 23:06

    如果服务器不能压缩/解压缩,我想了远程批量下载文件的办法,并且使其下载后的目录与原来保持一致。程序已经整整写了3天,前两天把ASP和PHP的程序都写完了,前2天编写的程序流程如这里的第2段:http://www.zj7.com/strive/75。

    但昨晚发现了一个问题,如果第1步先将所有文件在远程复制到远程的目录,当文件个数很多,比如几千个文件,短时间内会比较消耗服务器资源。于是今天用了1天的时间,把整个程序改为先在服务器遍历文件夹,产生文件列表,并统计所有文件的大小总和,然后被本地调用。本地的程序一定要只用一种语言编写,而且尽可能将程序写在本地,而尽量不要写在远程,因为本地的Apache和PHP环境配置较好,避免远程服务器不支持某些函数或功能。本地程序相当于一个大的公共程序,或者相当于接口,或者相当于一个软件。

    ASP程序今天做了测试,运行很顺利,可使用XML调用远程数据。有一个PHP空间被关闭了allow_url_fopen,无法使用file_get_contents()函数调用远程数据。于是程序明天要再次做大的修改,因为远程的PHP空间不能使用file_get_contents()函数,但本地的PHP环境可以使用file_get_contents()函数,所以将调用远程数据放在本地的程序中。同时为了保持“接口”相关程序的一致,远程的ASP程序与远程的PHP程序,要尽可能保持一致。我现在已经把它们保持了一致,看起来很舒服。

    在调试的过程中,无意中发现PHP的file_exists()函数的一点不足,确实如此。我的PHP版本是5.2.8,如果file_exists()指定需要判断的值是一个文件夹,当这个文件夹存在时(同名的文件不存在),返回的值是1,如果不存在这一不足、正常的话,返回的值应该是0,或者"",或者False。也就是说,PHP的file_exists()函数会误把文件夹当成是文件。而is_dir()则不存在此问题,所以,当需要判断一个存在的路径是文件还是文件夹,应该使用is_dir()来判断,而不应该使用file_exists(),因为这时候file_exists()会有误判的情形。

    固定链接 | 发表评论(1) | Trackback(1)

    日记:2010-03-27

    2010年03月27日 09:49

    因为大多数ASP空间不支持在线压缩、解压缩;或者少数的PHP空间禁止了gzcompress()函数,不能实现在线压缩。用FTP下载整站进行备份,会经常出现中断,操作十分繁琐。

    经过考虑和测试,还是有解决办法的。在网站上写一些程序,遍历所有文件夹,使整站文件复制到一个文件夹或者多个文件夹,并且复制文件时将文件全部改扩展名,例如aa.php改名为aa.php&au;如http://www.zj7.com/proportion/3355.php,改名为proportion~3355.php&au,改扩展名是为了使PHP、ASP、HTML、JPG、GIF等文件可以直接被本地下载。然后让其产生2个列表,分别是文件列表和文件夹列表。在本地使用PHP编写程序,先获得上述2个列表到本地。然后使用PHP的copy()函数,批量远程下载这些文件,copy时批量改名为原来的名字如aa.php,并使其下载到相应到文件夹。

    因为下载的文件很多,PHP运行超过30秒通常会报错,所以使用get+跳转的方法,让其一个一个下载。如aaa.php?n=1下载完后,跳转到aaa.php?n=2、aaa.php?n=3……这相当于将循环程序拆分。全部下载完毕后,删除服务器上的临时文件,将本地文件打成压缩包进行备份。

    如果服务器空间不能支持在线解压缩,用与上述相反的方法,在本地生成文件列表,在服务器上写一段上传程序,然后使用get+跳转的方法,用程序抓取本地文件,让其一个一个上传,而不使用FTP。

    固定链接 | 发表评论(2) | Trackback(1)

    服务器上的.ftpquota文件

    2010年03月24日 09:02

    最近发现服务器似乎被使用了“缓存”,当一个文件删除之后,刷新、清空本地缓存,仍然可以正常访问这个文件;并且延迟了很多网页的更新。经过很多次的测试,原来是因为我删除了网站根目录的.ftpquota文件。从本地的网站备份中找到.ftpquota文件,重新上传到服务器,问题解决。

    有的服务器有这个.ftpquota文件,有的服务器没有。如果建立网站时,根目录有这个文件,最好不要删除,因为删除之后可能会出现上述的服务器“缓存”的问题。启用服务器缓存,会增加服务器的负面,减慢网站的速度。

    固定链接 | 发表评论(2) | Trackback(0)

    hosts文件修改与重启浏览器

    2010年03月05日 12:10

    今天无意中发现hosts文件修改之后,不需要关闭Firefox浏览器,新的解析就可以直接生效,这方面Firefox对于网站测试是很方便的。过去使用IE 6.0,总是需要关闭所有的浏览器,新的解析才可以生效,十分不便。

    这个文件的路径是C:\WINDOWS\system32\drivers\etc\hosts,可以修改任何域名在本地电脑对应解析的IP,在网站迁移,域名解析修改,新网站空间开通,本地测试等等中经常需要修改。在本地测试中,我也经常需要把域名对应的IP在hosts文件中修改为127.0.0.1。

    当需要频繁地修改hosts文件,例如切换某个域名为远程96.0.158.22/本地127.0.0.1,我会在其它的硬盘文件夹里建立2个文件,一个文件含有远程96.0.158.22 www.zj7.com的解析,另一个文件含有远程96.0.158.22 www.zj7.com的解析,然后分别建立2个.bat文件,a.bat和b.bat,分别写入copy命令。之后分别运行a.bat和b.bat,就可以进行切换了。

    固定链接 | 发表评论(0) | Trackback(0)

    谈技术

    2010年02月18日 09:38

    无论是哪个领域,都需要用到相关的技术,技术中每个人又能够发现和摸索到一些别人所不知道的独特技巧,形成专利。有很多独特技巧没有公开,而成为企业或者个人竞争的优势,因为没有公开,没有被人们广泛应用,所以才能够成为“领先的技术”。保密在商业中很常见,这几千年来,有太多太多的信息被保密着,很多人只说其一,不说其二,所以很多人对一些重要的事情只知其一不知其二,http://www.auiou.com/relevant/00000508.jsp。

    如果现在我们认为的领先、尖端、顶级的技术不能够被分享,那么每个人都需要走很大的弯路,事实上我们一直在走这个很大的弯路,处于低效率的原始阶段。很多尖端的技术,往往是简单的技术,却因为被保密,而使少数人有更多的机会处于更高的位置或者垄断的位置。

    或许在不久的将来,现在这些先进的技术,将会被越来越多地分享,我们将会告别这个原始阶段,因为人们总会有一天会明白,只有互相分享尖端技术,分享信息,才可以更快地整体提高,那一天的到来已经不远了。

    以编程为例。事实上,我们的有些关键的编程技术,使用得过于复杂,而降低程序的效率。有很多程序,如果使用更简单的方法,可以提高30%~80%,甚至数倍的效率。

    未来的第四密度,无论哪个方面,都比现在要高效很多,第四密度是我们需要了解的最重要课题。

    固定链接 | 发表评论(1) | Trackback(1)

    运行PHP,国内的IIS主机太多,Apache主机太少

    2010年02月11日 10:41

    本文提到的主机,均是指虚拟主机。运行PHP,Windows+IIS与Windows+Apache的速度差别如之前的测试:http://www.auiou.com/relevant/00000516.jsp(慎用全能空间,PHP空间使用IIS很慢,应使用Apache)。并且,IIS一定不支持.htaccess。

    我没有做过Windows+Apache与Linux+Apache的对比,比如速度、内存和CPU的占有率,但是Windows+Apache的速度已经很令我满意,并且能够很好地支持.htaccess,所以运行PHP的话,Windows+Apache要比Windows+IIS+PHP优越很多,也能够满足企业网站的需要。

    因为Linux主机的安装比Windows主机繁琐,所以国内的Linux虚拟主机太少,估计不到1%。本文标题提到“IIS主机”,“Apache主机”,是因为本文并不强求Linux主机的普及,如果有Windows+Apache+PHP的专用虚拟主机,要远优越于现在的Windows+IIS+ASP+PHP+ASP.net的全能主机。

    国外的Windows主机比Linux主机价格贵;国内则相反。很可能是因为国外的Windows主机需要交版权费,所以价格贵;国内因为Linux技术不普及,所以价格贵。

    网站的编程语言个人觉得PHP比较好,是更理想的网站开发语言。PHP的优点:语言更简单,程序代码简洁,开发速度比ASP快,PHP可以轻松实现很多功能。ASP语言比较繁琐,PHP的简洁程度,约是ASP的2~5倍。

    固定链接 | 发表评论(3) | Trackback(0)

    1 2

    下一页 | 末页 (共2页)

  • 王志勇(自由勇):网站程序设计。
    公历1980-09-26 天秤座 32岁
    我的联系方式:信息反馈、留言板。

    版权声明:
    本博客所有文章,均符合原创和创作共用的定义,禁止转载,违者将必究。如需引用本博客的文章全文,正确的方法是贴原文的标题和网址即可。

    相关的链接:
    和平海底1 | Auciou | 自由勇专栏

    文章分类 Category:
    编程 | PHP | 互联网 | 真相与UFO | JavaScript
    BBS社区研究 | QQ研究 | Blog的发展 | 生活
    食虫植物
    Gratitude

    Blog存档 Archives:
    2010年12月 | 2010年11月 | 2010年10月
    2010年09月 | 2010年08月 | 2010年07月
    2010年06月 | 2010年05月 | 2010年04月
    2010年03月 | 2010年02月 | 2010年01月
    2009年12月

    近期的主题:
    本博客正在做调整
    Orshu论坛程序最新进度(14)
    随谈:2010-12-22 外星人所处的高度
    帐号的命名
    关于网页时区的设置
    2010-12-12整理 我昨天在QQ群的发言内容
    闲谈:2010-12-10 音乐
    好好珍惜婚姻,好好珍惜家庭
    最近新开通的论坛简介
    如何在Orshu论坛的个人资料里显示年龄?
    今天Go Daddy的速度已经恢复
    Orshu论坛程序最新进度(13)
    随记:2010-11-29 Orshu论坛程序最新进度(12)
    随记:2010-11-26 Orshu论坛程序最新进度(11)
    随记:2010-11-25 Orshu论坛程序最新进度(10)
    随记:2010-11-25 Orshu论坛程序最新进度(9)
    随记:2010-11-24 Orshu论坛程序最新进度(8)
    随记:2010-11-22 Orshu论坛程序最新进度(7)
    随记:2010-11-21 Orshu论坛程序最新进度(6)
    随记:2010-11-20 Orshu论坛程序最新进度(5)


  • Copyright © 2004-2012 zj7.com All rights reserved.
    此Blog程序由王志勇编写