用css实现dedecms新窗口打开链接

dedecms生成的页面打开链接默认是在原先窗口的,这样很不方便,但重新生成页面不现实,可以通过修改css文件来实现。

找到css文件所在/templets/style/dedecms.css,在里面base部分加入一行

a:active {text:expression(target=”_blank”);}

这样重新打开页面就解决问题了。这就是css文件的好处。

网站搬家成功

因为某些原因,网站需要大搬家了。经过一段时间的学习实践,原先的服务器已经算是完成了他的使命。

经过网上介绍,挑选了一个国外的虚拟主机,性价比和中国国内的虚拟主机比起来真是厚道多了。

有过几次网络搬家的经验,这次搬家还算是顺利。由于虚拟主机的mysql搬家不像自己的服务器那样方便,于是首先是打包数据库,然后在家里的虚拟机中解包后备份,确认无误后再导入到新的虚拟主机mysql中(主要是为了保险起见)。然后把原先网站内容上传到新服务器中,修改数据库参数后一切正常。

有了这个经验,搬家dedecms更简单了,先是导出数据库,然后安装新版的dedecms,再上传原先的图像文件、附件及原先生成的html文件。安装一切正常,但访问的时候出了点问题,原来的网页总是提示不存在。查看了一下,估计是时区时间差的问题,而博客网站并没有这类问题,估计是导入数据库的时候时间也有了变化,这个以后再研究。

重新生成html文件,速度很快,看来这家虚拟主机商的确不错。生成之后访问问题解决,搬家成功。

通过搬家发现上传文件过程中,传输大量小文件实在是慢的要死,幸亏新的主机提供解包功能。把要上传的文件打包后再在后台通过文件管理解包,速度极快。

freebsd7.2下安装firebird2.0

原先在freebsd下安装过firebird,但无论是1.5还是2.0都不成功。从周五开始安装测试virtualbox最终失败,失败之余算是一种寻求成果了,于是又试着安装一下firebird。

开始依然不顺利,仍然在安装后期提示不要使用root用户来启动firebird,但是新建了firebird组和用户后安装,又提示权限不足,无奈只好修改安装路径的权限,好歹眼看就要成功了,却最后提示无法转换到root,su失败而告终,丧气之极。

网上关于安装firebird的文章极少,于是按照错误提示搜索,原来freebsd和常用的linux甚至unix不一样,只有wheel组的用户才可以通过su转换为超级用户,于是新建一个wheel组的用户安装,在最后提示输入su密码后终于安装成功了!

安装成功后通过ssh登陆虚拟机建立的freebsd系统,用isql连接本机firebird后,可以通过connect ‘/var/db/firebird/employee.fdb’ user ‘SYSDBA’ password ‘masterkey’;连接数据库(当然路径在没有在alias.conf文件指定前必须输入,否则退出后就找不到新建的数据库了),但是使用第三方软件在windows下无法访问数据库。通过ssh即便使用fb_inet_server命令启动数据库,依然无法驻留,top一下再看就不存在这个进程了。

还是查看相关资料,原来firebird是通过inetd来开启服务的,而freebsd默认是不启动inetd的,所以先修改rc.conf,添加inetd_enable=”YES”,然后修改/etc/inetd.cof文件,添加:

gds_db   stream   tcp   nowait   firebird /usr/local/bin/fb_inet_server   /usr/local/bin/fb_inet_server

重新启动freebsd,这时候就可以通过第三方软件连接firebird数据库了。

白忙了3天,算是小有收获吧。

新建FreeNas,测试iSCSI功能

单位原先用淘汰下来的机器做了一个使用freenas的“服务器”,不觉已经用了3年。3年来运行稳定,使用的人还觉得满意,最近感觉空间紧张,再加上原先只是为了便于短时间交流备份,并未考虑权限等设置问题,准备在国庆前后重新利用新替换下来机器再建一个“服务器”。这次算是有备而来,通过网上购买了256M的电子盘,2手的HIGHPOINT RocketRAID 454 IDE RAID卡,可接8块硬盘,支持raid5,双口的intel百兆网卡,另外还有新的电源,算是一次大升级了。

 国庆节将到,手头上非常重要的工作完成后终于有时间新建一个freenas的“服务器”了。首先选择了一个使用还算良好的淘汰机器,这个要比原先那个PIII要强上不少。首先安装好4块替换下来的40G硬盘,然后通过数据线连接在raid卡上,开机只听一声长鸣,心中一惊,以为出师不利,再看屏幕,原先是首先进入了raid卡的自检界面,自检硬盘正确后,按ctl–h进入bios设置,创建了一个raid5的阵列,初始化时间不短,估计和硬盘关系比较大。创建完毕后启动机器,安装freenas0.69版本。

开始安装,一切顺利,这次把系统安装在电子盘上面,设置好ip地址后重新启动机器,然后在自己台式机上输入freenas的地址,顺利进入了web管理界面。但当时做了一件傻事,害的浪费大量时间。在修改时区的时候,我看到可以选择语言,就顺手选择了简体中文,当时并没有发现什么不妥,但在按照以往的经验添加磁碟后(一看就是台湾人翻译的),一选择格式化选项,就出现了一个空白页面。不格式化吧,mount更是无法进行。开始以为是raid卡的问题,但以前在raid卡上安装过freebsd6.1,这个nas是基于6.4的,应该没有问题,后来索性又下载了一个0.70rc版本的,问题依旧(习惯问题,又改了中文),而且连系统的常规选项也进不去了,也是空白页面。

我感觉问题出在空白页面上,难道是web服务器有问题?到网上一搜,还真冤枉了freenas,是IE浏览器的毛病!网上一位网友言道:“的确,有的页面变为空白是因为IE比较的傻,在编译HTML时是循序编译的,不象OPERA和FIREFOX是按照语法的优先级来编译的,当制定页面编码的meta语句放在title语句之后时,IE就傻了就不知道本页面所用的编码而显示空白,相反OPERA和FIREFOX则会优先编译meta语句而不管他在页面所处的位置,所以就能正确的显示。”,这已经不是第一次IE犯这个错了,看来以后测试还是用火狐了。

下载火狐安装进入管理页面,果然一切正常,格式化raid阵列硬盘后挂载,开启smb服务,一切正常。白白浪费了但半个上午。

下午开始测试这次的重点iSCSI,由于0.70和0.69的管理界面差别比较大,而网上主要使用的是0.69的示例,所以安装的时候反复了几次,但还算是顺利。过程是首先新建一个Extent,这个需要手工输入名称,然后再建Portal Group,这之后才建立target。保存应用后,freenas服务器端就算是设置完毕了。

我现在用的是xp,需要下载Microsoft iSCSI Initiator,最新版本是2.8的,安装之后配置倒也简单(还没有实验高级的),先在discovery里面设置好后台target Portal的地址,完后在targets选项里面就会发现后台新建的target了,login in后,在电脑里面就会出现一个未识别的硬盘,一如硬盘分区时忘记分区的部分,初始、格式化后就可以正常使用了。放入一个文件,速度尚可。

到了另外一台机器上,安装好iSCSI Initiator,也是同样配置,login in后发现硬盘已经出现在我的电脑里面,倒是不需要再设置。但查看里面,空空如也,但再看体积,明显已经被占用了一部分,于是也拖放了一个文件进去,在我的机器上同样看不到。估计是权限的问题,如何设置,暂且留在以后再研究吧。

通过targets选项里面的login off,和u盘一样可以卸载掉iscsi target盘。

虽然做了不少无用功,今天目的倒是达到了,算是一个好的开始吧。

freenas终于自由了

临近国庆节,准备利用节前空余时间用新替换下来的机器重新搭建一个freenas平台替代原先老设备。

在google里面搜寻freenas,官方网站在第一页已经不显示。这都怪它不会起名字,叫什么不好,非要叫freenas,结果呢?被忧国忧民的有关部门给屏蔽了,谁叫你带free这个词。翻了几页找到了官方主页的链接,随手点击一下,奇迹出现了,居然能够进去了。可喜可贺啊!

虚拟机使用笔记三:安装FreeBSD应用软件

安装完毕Freebsd,本来以为就万事大吉了,谁知道第一次安装apache22的时候就出现了问题,先是系统无法启动,提示:

No such file or directory: Failed to enable the ‘httpready’ Accept Filter

从网上查了查据说是apache22的一个bug,按照网上所说的#kldload accf_http并在 /boot/defaults/loader.conf 中加入下面 2 行,以便下次启动自动装载模块
accf_data_load=”YES”
accf_http_load=”YES”问题解决了,但接着虽然没有提示错误,但httpd却还是没有起来,查看了一下日志文件,提示:

httpd: apr_sockaddr_info_get() failed for apache

这个是为每个请求生成唯一的标识以便跟踪,网上有的建议在httpd.conf 里注析掉 unique_id_module,的确有效,但去除警告而禁用掉有效的功能模块的方法不是上策,后来看网上说主要是域名和ip地址设置的问题,但我的没有问题啊。

后来发现原来问题出在hosts文件里面,由于这个虚拟机我是通过拷贝复制的,虽然修改了ip地址,但却忘了修改hosts文件里面的信息,修改完毕,并将httpd.conf里面ServerName修改为本机的ip地址,问题解决,

然后安装php、mysql5(再也不用那该死的4.1版本了),感觉比较麻烦的还是需要手动添加AddType application/x-httpd-php .php,怎么安装php的时候不自动安装呢,估计是httpd配置文件各种系统版本不一样的缘故吧。

好了,一个完整的Freebsd系统算是准备好了,看看体积,略微清理后仍然将近3g,看来以后新建虚拟机的时候空间不能只留4G了。

虚拟机使用笔记二:安装FreeBSD折腾记

虚拟机平台搭建好了,首先安装的是自己最喜欢娥FreeBSD。

安装一切顺利,在此之前用vmware server 2的时候就已经安装过很多次了。安装之后重新编译内核,安装必要的服务之后发现问题来了,那就是安装完毕重新启动的时候感觉“死机”了!

如果直接通过虚拟机关闭Freebsd,重新启动后开机慢的要命,比当初的vmware server还要慢,而且每次都要重新检测硬盘。开始以为是安装的问题,于是重新安装,问题依旧。又以为是vmware不支持Freebsd7版本,于是换成6.3,无效。

整整折腾了一天,到了晚上实在是没有办法了,于是只好重新reboot,准备吃饭之后先安装debian,然后就出去买饭去了。回来发现在虚拟机的客户端上已经显示了Freebsd的待机login了。于是忙再次reboot,在等待了近5分钟之后系统终于开始重新启动。原来已经习惯Freebsd快如闪电的开关机,所以把这个漫长的等待当成死机了。

估计还是vmware对Freebsd支持不好(虚拟机类型里面归入其他),只不过2.0要好一点,所以原先感觉不那么明显的缘故吧。

于是安装编译内核,安装ports(通过网络安装速度也可以接受),一个基本的Freebsd系统就安装完毕了。

vmware server不支持复制虚拟机,免费的嘛。但这也难不倒我等,登陆虚拟机的主机,将Freebsd虚拟机的目录复制了一份,命名为Freebsd1,然后通过虚拟机的客户端软件选择打开虚拟机,找到Freebsd1的目录,打开相应的虚拟机文件,一个新的虚拟机就建成了,改个名字与原先的虚拟机以示区别。

OK,Freebsd系统已经算是大功告成了!

虚拟机使用笔记一:架设虚拟机

原先的时候安装、测试系统一直使用的是自己淘汰下来旧机器,但如果测试局域网的话单位里倒还好说,但回到家里的确就很无能为力了,后来看到网上一篇《搭建一个大型网站架构的实验环境(虚拟机篇)》,真是大开眼界,马上就动了学习实践的念头。

首先组装设备,本来主板从网上淘了一块泰安的am2接口的主板,但却遭受了淘宝以来的第一次挫折,主板拿来就是坏的,无奈只能退货。沮丧之余还是到科技市场买了一块微星的780V,价格不贵只是可惜只有两个内存插槽,扩展性差了一点,又衬着内存当时价格够低,买了两条2g的金士顿内存。开始的时候硬盘使用的是自己原先的ide80G硬盘。

操作系统使用的是ubuntu 8.10,虚拟机软件是用的vmware server2.0.当时参照的网上一篇文章,当时安装非常顺利。但通过客户端维护系统和最初使用1.x版本的情况不一样,是通过web管理。速度慢不说,而且非常不稳定。而虚拟机中的系统运行的时候在初始阶段也是非常慢,和死机差不多。换成1.x版本,安装的时候问题不少,但运行起来要比2.0稳定和快捷不少。(最近从网上看到之所以出现这种情况是因为vmware在开发2.0的时候在支持amd k8cpu的方面出现问题所以索性去除了这部分功能,不知是真是假)

恰巧今年冬天家里没有集中供暖,只能靠烧电暖气取暖,用电调度真是小心翼翼,唯恐哪一路电超负荷跳闸,所以虚拟机就暂且搁下了。

终于渡过了这个超长的冬天。于是又开始未完成的工作。同时也新添了一些新的装备准备好好学习一场,硬盘换成500G的,机箱也换成一个新的,这样虚拟机主机也可以同时作为家里的视频、照片的服务器。

这次安装的是vmware server1.09,1.x的安装问题不少,但参照2.0的安装,首先安装编译环境:

1、sudo apt-get install linux-headers-`uname -r` libx11-6 libx11-dev x-window-system-core x-window-system xspecs libxtst6 psmisc build-essential,linux-headers-`uname -r`这个避免出现新内核识别问题。

2、sudo apt-get install ia32-libs这个是避免后面输入授权码的时候不能识别

3、sudo apt-get install xinetd 这个是1.x里面必须的

4、下载vmware server最新版,后开始安装,开始肯定会失败的,因为对linux的新内核不能识别,要打一个vmware-update-2.6.27-5.5.7-2.tar.gz 补丁,所以先正常安装到Do you want this program to try to build the vmmon module for your system?到这里要输入 “no”退出安装,再安装补丁程序,到了这一步再选择yes就可以了。

5、这次安装的时候出现了新问题:

Unable to get the last modification timestamp of the destination file
/etc/vmware/ssl/rui.key.

这在之前是从来没有遇到的,估计是原先安装的时候ssl已经解决了这个问题,安装网上的介绍

sudo touch /etc/vmware/ssl/rui.key
sudo touch /etc/vmware/ssl/rui.crt

如此下来就可以顺利完成安装了。

安装完毕后,使用VMware Server Console连接虚拟机,新建了一个freebsd7.1的虚拟机,一起顺利,算是一个比较完美的一个开始了。

Turbo Delphi+Firebird内嵌服务器版的发放

使用免费的Turbo Delphi开发程序虽然不能使用第三方控件,但是连接Firebird数据库可以使用Dbexpress中的ib控件连接,这样也足够了。

在默认的情况下编写程序完毕需要发放到其他机器上的时候需要下载Firebird的内嵌服务器,解压之后得到一个文件包,先把里面的doc文件夹删除(里面是一些鸡肋文档),然后将fbembed.dll文件改名为gds32.dll,如果在程序中已经修改过,那么这一步也可以省略。这样Firebird内嵌服务器就设置好了。但如果程序要正常运转,还需要拷贝dbexpress的驱动程序dbxint30.dll到该目录下。

这样一个Firebird内嵌服务器的环境就设置好了,10M的体积在现在的硬盘状况下真是微不足道了。

delphi中数组的上下标的应用

delphi中数组应用起来很灵活,自定义的数组下标也可以自己根据需要定义,不一定从0开始。

有的时候数组中的数据获取后的数量是不一定的,比如题库的多项选择的答案等,这时候可以使用low(数组名)获取下标值,而用high(数组名)得到上标值,这样就可以明确数组中有效数据。