Google Search Within opentiss.uk

2009-12-17

个人简介:关于Linux OpenGL工程师

早上有匿名网友咨询Linux工程师,要有OpenGL经验的,不知大家谁在兴趣。
另外,我之前做有过一年的OpenGL项目经验,是在2001至2002年间,用的C++ Builder,不知是否合乎这位网友的需要,如果可以的话,我可以兼职,如果待遇足够好的话,可以全职,我的谷歌邮箱账号是opentiss,可以直接联系我,我现在是离职状态。

2009-12-08

有线通突然增速奇遇:20091207

昨天早五点到下午五点半停了一天的电,原计划停到晚上七点的,但刚一天黑,电就来了,还比较照顾老百姓的实际需要。来电后就开电视、开电脑,谁知电视信号很快就没有了,因为用的是有线通,所以电脑也不能上网了。
过了一段时间,有线恢复正常后,突然发现aMule表现极其异常,下载速度竟然达到了100多kb/s,真是太神奇了,没想到因祸得福呀,其后,就顺利下载完成了久未完成的七个文件之多,有下图可证速度奇迹:

不过,今天再开机后,似乎速度就没有昨天那般神奇了,这次事件的原理尚不清楚,极有可能是上海东方有线通出现了灾难性故障,把一些限速的数据给丢失了吧,哈哈,这些宽带接入提供商有时真是太没天良,竟然连我访问51job找工作都给我频繁重置,这次好好利用其下载些资源真是太过瘾了。不过也有个不太好的地方,aMule下载速度快时,连接Web网站及其他资源时也会降速,还是带宽太小了呀 :(
另外一个关于openSUSE 11.2的好消息是susestudio已经开通了openSUSE 11.2的软件源,现在可以制作openSUSE 11.2的Live CD/DVD了。消息来源:Build openSUSE 11.2 appliances in SUSE Studio

2009-12-06

openJDiary 0.0.3最终候选版发布

一个初步的openJDiary(中文名今天确定为:开源 Java 日记本)今天终于进入版本0.0.3最终候选版了,您可以至sf.net项目网站openJDiary下载,也可以至本站点下载。
这周五的确是个好日子,是我拿到上海永久居留权的三周年,也是从今天七月以来面试公司最多的一天,共有三家。当然结果是预料之中的,均无最终合适的,不过也学习到了很多东西,认识到如果要再继续C/C++之路,就必须要将socket、TCP/IP编程搞熟练,如果要切入LAMP,就必须要实际从需求、设计、实现多学习与实践,至于现在用的最多的Java,就需要多熟悉相关的开发框架,如果没有这些基础,面试官根本就不会过多地去考虑你了。
昨天我更新了我的NVidia显卡驱动到版本173.14.22,为了成功更新,我先在文字界面命令行下从YaST中卸载了nvidia的包,在命令行中执行安装包并配置SAX2即可:
sh NVIDIA-Linux-x86-173.14.22-pkg1.run -q
sax2 -r -m 0=nvidia
现在发现虽然已经在了Google Wave,却不知道能用这个工具做点什么,真是感觉有些苦恼,也许是期待越高失望越大吧。

2009-11-30

喜获Google Wave邀请

今天收到了Google Wave的邀请,虽然有很多选择,比如Facebook等,但可惜都不太支持https访问,所以经常无法正常使用,期望Google Wave能够保持基本稳定,能够一直保持可以访问得到。当然,至于怎么用与如何使用Google Wave,我还在学习之中。不过,这几天,我发现Dropbox的可以应用的场合了,我把openJDiary 0.0.3运行程序及数据放在Dropbox共享目录中,这样就可以间接性地实现openJDiary 0.0.3数据在不同地点的同步了,最可行的是办公室与家里的同步,在公司做的事情,可以下班后回到家里接着做,这就是Dropbox的好处。
openJDiary 0.0.3候选版已于2009-11-28发布了,主要功能已经添加完毕,下面的工作是增加一些辅助功能,如应用程序运行选项的设置及基础功能的完善与改进。计划每年至少更新一个版,比如今年的版本是0.0.3,那么明年同一时间(12月17日)就应该出下一个版本0.0.4,每6个版本后升级一个次/主版号,如0.0.6版的下一个版本是0.1.0,之后,第三位的版本号就会不做重要版本更新版本号了,比如,0.1.0后是0.2.0,而如果有小的更新,可以命名为0.1.1等等。
另外,对Vim感兴趣的网友可以到linux,com阅读Vim的系列文章:Vim 101: A Beginner's Guide to VimVim 201: An Intermediate Guide to Vim,中文翻译工作我正在空闲时缓慢地进行。
另外,我的Google Wave还有4个邀请可用,如果有谁感兴趣,请邮件联系我,我的谷歌邮箱名为opentiss。我会尽快与您分享这几个宝贵的邀请名额。




2009-11-22

Linux生存:Java程序与scim问题解决之道

openJDiary在我的SLED 11 KDE桌面中使用时存在一个问题,当打开一个外部文件进行了修改后,直接关闭,会弹出一个确认是否保存的对话框,当点击了否之后,openJDiary的其他编辑窗口就无法输入内容了,确切地讲是键盘就无法输入了,不过鼠标依然能够正常操作。
今天主要通过升级KDE桌面至4.3.3和升级X11到7.4-61.4(xorg-x11-7.4-61.4)尝试解决此问题。顺便有一个KDE的问题,就是选中的文本(如在Kate打开的窗口中),当切换到其他窗口,再返回时,刚才选中的文本会被删除掉,可能跟openSuSE 11.1/SLED 11的发行版本有关系,但不知道涉及的是哪个模块,也是通过升级这两部分来尝试解决。升级的结果是这两个问题跟KDE似乎都没有直接关系,问题都没有等到真正解决,依旧存在,但当升级了X11后,openJDiary无法编辑文本的问题的确不存在了,真是非常幸运呀。我使用的KDE 4.3.3源为:
http://mirror.leaseweb.com/opensuse/repositories/KDE:/43/SLE_11/
使用的X11源为:
http://mirror.leaseweb.com/opensuse/repositories/X11:/XOrg/SLE_11/
另外,在查找X11源时,还意外发现SLE 11 sp1正在研发中,有源为证:
http://download.opensuse.org/repositories/X11:/XOrg:/sle11sp1/SLE_11/i586/
看来,在不远的将来,也许是SLE 11发布一周年之际(大约是2010年3月下旬),SLE 11 sp1就会发布了,如果有可能,我会升级我的系统;但还有一个问题,如果KDE版本比较低,有可能还得再用非Novell官方的源升级到最新版本,不过问题并不大,由于openSuSE社区比较完善,届时肯定有相应的源可以使用的,倒不必担心。
之所以加快openJDiary的开发进度,其中一个原因就是Kate不能非常正常地使用,所以期望使用自己编写的小软件来打开纯文本文件,一方面可以提高开发技能,一方面可以解决Kate缺阵造成的不便。
就像有些系统的出现是之前的系统不能满足单个人的需要一样,开源软件也有些是因为类似的需求才应运而生的,openJDiary也是这样的,如果当初JDiary能够不出现断电丢失大量数据,并能够保持版本不断更新与功能不断完善,也就不会促使我编写openJDiary了,开源的好处之一就是,当你不能维护一个软件时,完全可以由其他爱好者来继续你的工作,而不是一切从头开始。
经过在谷歌上搜索发现,似乎是scim的问题,参考:KDE Bug Tracking System Bug 188533 Selection is deleted if a window is selected/pops up/maximized/focused。使用的rpm包来自:
http://download.opensuse.org/repositories/home:/hujq:/input_methods/SLE_11/i586/
但仅升级了scim-bridge包后,问题并未解决 :(
只好再安装以下相关包:
scim-bridge-gtk-0.4.15-123.1.i586.rpm
scim-bridge-qt-0.4.15-123.1.i586.rpm
期望能够完全解决此问题。安装完成后重启,在Konversation中输入文本并选中,然后切换到其他窗口,再返回,文本不再消失了,再使用Kate进行测试,结果仍然是非常理想的,想不到问题就这么解决了,原来是scim的问题导致了这个KDE的问题,所以,即便是我升级了KDE到最新稳定版本,也没能解决,并且要安装的包起码应该包换scim-bridge-qt,最好把scim-bridge的这三个包全部都安装上。
看来,开源软件的使用完善是一个多么艰辛而又有趣的过程呀,如果把大家解决问题的经历都记录下来,简直都可以书就一大部故事书了,哈哈。
Linux生存,你准备好了吗?


2009-11-21

openJDiary 0.0.3预发布版发布

openJDiary这个小工具软件终于快要与大家正式见面了,经过这些天的努力,openJDiary已经基本可用了。openJDiary的主要功能就是每天自动生成一个纯文本文件,用于记录当天的日志/日记,还有一个实用功能是创建备忘录,用于记录一些常用的信息。软件截图如下:

openJDiary的第一个真正的用户实际上就是我的爱人,今天她正在看恒星英语上的文章,说要找个地方存储文章内容,同时要把网站上的音频资料下载下来听,我就用openJDiary来管理她的这些英文文章,并且记录下音频资料的位置,对于这个实际用户,还是有很大培养空间的,哈哈(但她实际上并不知道自己是第一个openJDiary用户)。
openJDiary的发布计划:
1.预发布。20091121
2.候选版本发布。20091128
3.最终候选版本发布。20091206
4.0.0.3最终版发布。20091217,为项目在sf.net注册提交一周年纪念日。

2009-11-13

Linux生存:openSuSE 11.2发布与SLED 11 KDE升级

今天继续下载openSuSE 11.2的DVD iso,aria2c下载过程中五个连接逐渐断线于上午11:07就停止了,再续传时已经无法连接到主机了,就突发奇想,升级SLED 11的KDE到4.3版本玩玩,从openSuSE资源网站找到了KDE4在SLE 11上稳定版本的链接:http://download.opensuse.org/repositories/KDE:/KDE4:/STABLE:/Desktop/SLE_11/i586/。然后就开始了安装升级,可用的是KDE 4.3.1,首先删除kate 4.1.3,然后选择安装kate的4.3.1版本,之后就是对依赖的处理,解决依赖时选择安装新版本的包即可。刚一开始安装是用的自动镜像,结果用的是台湾的镜像网站(twaren.net),很快就出现kdm-branding-openSUSE-11.1.2-67.1.i586.rpm校验码重试若干次无法通过,最终都无法连接到镜像网站了,只好中止,重新更换上德国的王牌镜像:http://ftp5.gwdg.de/pub/opensuse/repositories/KDE:/KDE4:/STABLE:/Desktop/SLE_11/。结果一切顺利,kdm-branding-openSUSE包校验码也没出现问题,KDE升级基本可行了。

升级完成重启后,基本正常,就是Mozilla Firefox启动后不知道怎么就没有了,再次启动后未发现异常。一个不好的地方就是kate还是存在被选中的文本在切换输入焦点返回后会被删除掉,也不知道这具体是什么原因,也许跟KDE 4.3没有直接关系吧。另外一个比较好的地方是kchmviewer能够查看以前一个关于CMMI的chm文件了,原来只能看到目录,点击目录后,不能显示页面内容。

一直以来,不知道什么原因stardict无法正常启动,“XDXF数据解析插件加载成功。”后就不动了。直到今天经过不断的尝试,才找到了解决的办法,将“Espeak”插件移除,因为通过在另外一台电脑上发现第二步就是加载“Espeak”插件,执行以下命令:
mv /usr/lib/stardict/plugins/stardict_espeak.so .
然后再启动stardict就能够正常使用了。看来是stardict在加载插件时闹了小脾气了,哈哈,只要移除出问题的相应插件即可,看来也没有什么太大的问题了,只是害得我这么长时间没有电子词典用,真是不方便呀。可以跟qstardict说再见了:
rpm -e qstardict

2009-11-12

Linux之路:写在openSuSE即将发布之际

今天早上做梦,竟然梦见openSuSE 11.2推迟发布了,网站公布的是18日发布,还有一条最新消息说是24日发布,在梦里,我还真想迫不急待地看看新闻的内容呢,当然,那时候我就梦醒了。看来真是本人对openSuSE项目担心过度了,哈哈。
昨天光棍节,去一家在招聘网站上仅肯透露是一家知名企业的单位面试。说是面试,也许因为现在经济不景气的原因吧,所有单位都免不了先笔试一番,其实也没什么,找工作都得要经历这些折腾。这家单位是做电子白板的,面试过程非常枯燥,不论笔试还是面试,都驳斥着大量的MFC、多线程、Socket编程等,而我本来投的是软件开发主管,没想到要问这些我并不擅长的内容,结果是两个人轮番问了一通图像处理、绘图方面的问题,我也是答得非常勉强,毕竟离我用OpenGL做绘图库已经七年有余了。也没办法,现在想找个理想的工作还真挺不容易的,越发感觉到要想找个开源相关的工作就更加不容易了。
今天比较奇怪,竟然收到两条关于国产藏文版Office(办公软件)的博客留言,最离奇的是用英文书写,很是神秘,不过第二条评判我这个每月不过几百独立IP流量的网站“really very good”,如果真是那样的话,真是应了一句老话了,失去了才懂得珍惜,我现在已经离开原单位,再也不接触OOo开发很久了,现在突然出现这么一条莫名其妙的博客留言,也不知道是福是祸呀。
再说说国产基础软件吧,搞了这么多年民族软件,有一批还是基于开源的,但现在“核高基”这个极具决定性的项目还没看到有消息说具体各专项花落谁家了,可见国家的为难了,据说,办公软件专家组曾经明确给申请单位放话说,你们实力太弱了,如果某知名电信设备制造商来申请,我们都不用审查他们的资质,肯定让他们来做这个专项,会毫不犹豫地把专项资金划拨给他们的。但这也是一个悖论,如果实力已经足够强大了,那国家就没必要再特意拿出百亿圆人民币给予资金支持了,本来“核高基”就是对民族软件的一个扶持政策嘛。其实说得更清楚一些,国家之所以要搞“核高基”,也是想摆脱一些大软件公司近似于垄断地对中国软件领域地控制,可说实在的,中国的确还没有足够的工程实力来达到这一目的,最根本的原因就是国人的懒惰,拿来(在这一领域确切地说应该是“盗来”)习性浓重。就拿开源软件来说吧,所谓的基础软件也基本就是国外开源软件的本地化,而且有些领域竟然就是拿人家的发行版本来rebrand一下,并且这还不算,还要对人家优化改进一番,然后就会跟原发行版本相比性能下降、兼容性问题严重,这样其实就造成了客户的恐惧,本来用开源就很冒进,出了问题当然会想到盗版的好处,因为毕竟盗版大家还都习惯,出了问题不会有人笑话,大家都是中毒很深嘛,还会得到无微不至的同情;而用开源就不同了,大家会觉得你自命清高,如果你遇到问题,大家好的话会齐力把你拉回,有毒同享,如果不幸地话,被痛扁一通是常有的事。所以,有时感觉用开源是件偷偷摸摸的事,千万都不能拿到台面上去出丑,否则轻得身心压力剧增,重得赶快打加原形。
这几天把openJDiary小程序完善了一下,可以书写默认分类的备忘录了,下一步是要把用其打开编辑纯文本文件予以实现,这样,这个个人记事用的小程序就算功能基本完备了。openJDiary的设计思路很简单,用最简单的存储格式记录文本内容,方便使用与迁移,即使这一程序出现了问题,任何一款文本编辑器都能够打开与编辑其中的内容,而不会因主程序故障导致的数据灾难性毁灭;最近一直在读《Unix编程艺术》,其中对纯文本的失宠真是与我一直的想法不谋而合呀。
最后再回到openSuSE上来吧,我一直使用的是SLED 11,感觉挺稳定挺好的,所以近期还真没有尝试甚至替换的想法,但肯定会马上下载下来保存好的,以备想安装时能够及时使用。其中最吸引我的是其KDE版本的提升,以及KDE功能及工具的完善,当然,如果有必要的话,我会翻译release notes后放在维勘翻译网站上的。
最后祝openSuSE 11.2能够更加贴近用户,系统更加稳定,界面更加吸引大众,为更多人所使用。


Linux之路:写在openSuSE即将发布之际

今天早上做梦,竟然梦见openSuSE 11.2推迟发布了,网站公布的是11月18日发布,还有一条最新消息说是11月24日发布。看来真是本人对openSuSE项目担心过度了,哈哈。
昨天光棍节,去一家在招聘网站上仅肯透露是一家知名企业的单位面试。说是面试,也许因为现在经济不景气的原因吧,所有单位都免不了先笔试一番,其实也没什么,找工作都得要经历这些折腾。这家单位是做电子白板的,面试过程非常枯燥,不论笔试还是面试,都驳斥着大量的MFC、多线程、Socket编程等,而我本来投的是软件开发主管,没想到要问这些我并不专长的内容。也没办法,现在想找个理想的工作还真挺不容易的,越发感觉到要想找个开源相关的工作就更加不容易了。
祝openSuSE 11.2能够更加贴近用户,为更多人所使用。

2009-10-30

Unix哲学:K.I.S.S. 保持简洁质朴

最近在读一本电子书,叫做Unix编程艺术,其中阐述的观点Unix哲学最根本的一条就是K.I.S.S.,即“保持简洁质朴”。Unix哲学被总结为十七条原则,阐述了Unix能够延续到现在的制胜法宝。不过这本书有五百多页,还得多研究些日子了。
openSuSE 11.2 RC2已经发布了,参见:Final openSUSE 11.2 Release Candidate Available。此版本有几个软件版本更新了,如下:
  • Linux kernel 2.6.31.5
  • SeaMonkey 2.0
  • Firefox 3.5.4
  • Samba 3.4.2
  • xorg-x11-server 1.6.5
如无特殊意外,最终发布版应该不会有软件版本的更新了,主要是影响最终版本发布的bug的处理。

因为工作没有着落,现在只能续租下现在的房子了,也只能用这可恶的有线通宽带了,因为有线通的是1200元一年,其他的诸如电信的E8,附加了诸多对无产阶层的歧视性条款后,还要年付近两千元,外加初装费一笔,长城宽带比较离奇,两年1560元,但从未用过这东西,从网上查了一下,据说国外的网站访问存在障碍,像我这样非国外网站不访问的开源软件爱好者,那简直等于没有网络,也就没勇气去尝试了。有线通宽带最大的一个特点就是经常“连接被重置”:

也不知道具体什么原因,反正就是如果我在求职网站上多点几次下一页,肯定就会“连接被重置”,然后需要重新尝试无数次才能连接上。有线通的帐单也很腐败,明明是包年的,还会每个月邮寄个形式帐单过来,感觉太浪费纸张了,非常不节能环保,不过还好的一点是,到营业厅续费可以刷卡,省去了一点儿携带现金的麻烦。

很想将维勘翻译网站做得更好点,提供一些有用的开源软件信息及技术文档的中文翻译,但苦于自己英语能力太差,爱人又不肯以此为实践其英语能力的锻炼,所以,现在是停步不前,真期望能够早点想办法利用好我这个租用的香港虚拟主机。
希望明天会更美好吧,虽然知道那是很难的,但总得一点一点的努力吧,天上是不会掉馅饼的,即使真的掉了,也会因为被地上的脏东西污染而无法食用了。

2009-10-22

Eclipse插件CDT中Boost.Signals编译连接问题的解决

著名的C++库Boost中有若干个库需要在生成可执行文件时进行库文件的连接,这些库包括Regex、Signals等,详见Boost Getting Started on Unix Variants。国庆节前在家里学习Boost库时,其中的Signals例子始终编译未获通过,错误信息显示有类的代码没有实现析构函数,实际上就是在连接时没有找到正确的可连接的库,正确的库为:/usr/lib/libboost_signals.so.1.36.0。今天又试着编译了一下,经过几次尝试,终于顺利通过了,其实主要是在项目设置中连接器的参数加上“ /usr/lib/libboost_signals.so.1.36.0”即可。如下图所示:

即在C/C++ build->Settings->Tool Settings->GCC C++ Linker的Command line pattern的最后加上“ /usr/lib/libboost_signals.so.1.36.0”。

2009-09-07

初战告捷,准备回家过节了:20090907

今天爱人开的淘宝网店收到了买家的评价,通过上周的两单交易,我们获取了3个好评,正好为我们中秋节回家带上了一份好心情。国庆中秋节期间,所有商品将下架,如有购买意向的,请中秋节后再关注我们的淘宝网店,再次感谢大家的关注。
今天爱人去七浦采购回家给小孩子们的衣服,没什么收获,倒是给她自己添置了许多衣服,只给小孩子们买了些袜子和少量的衣服。我们定于明天(2009年9月8日)下午坐汽车回山东临沂,大概第二天凌晨到县城或乡里。无论如何,回家的心情非常好。不过,有一点点遗憾,下午的时候爱人告诉我有单位发来了通知,已经转发到我邮箱了,我查看后发现刚好是我们原定的到家的日子面试,所以没办法,只好回复邮件,解释了一下现实情况,并对他们的面试通知表示了谢意。让我深感意外的是,那家单位回复说可以在中秋国庆节后安排初试,真是非常让人感动,但愿能在缘份吧。

2009-09-05

幸福在继续:20090904

今天我爱人让我跟淘宝店的顾客联系,请求顾客的谅解,如果有可能,我们给予其退货、退款,因为顾客需要大一号的童装,而我们最大号的也比他的需要小一号,真是很让人烦心的事情呀,爱人是对的,经商就是要靠诚信的,尤其是网店。一大早我奉命起来值班,准备跟顾客说明情况,但顾客却非常平静,竟然一直没有上线,爱人最后决定,发短消息告知其具体情况,但令人惊讶的是短消息也无回音,最后只好打电话直接解释。真是功夫不负有心人,顾客说他家孩子穿这一号的今年刚刚好,只是想让孩子能多穿一年,所以才想买个大一号的,可以接受我们所提供的商品,当然此消息非常令人振奋,我们就赶快准备发货,向申通快递下单。刚过了一会,淘宝旺旺竟然突然来了一条商品已经卖出的通知,我们赶快查看,发现果然又有一商品卖出了,真是幸福来敲门,让人很振奋呀。最终我们成功在这一周做成了两单生意,虽然业绩不怎么令人满意,但毕竟是一个良好的开端,明天会更好。今天的美中不足是我们跟申通采用的是现金结算,快递费高了些,如果以后能月结的话,费用会便宜些,努力、加油,就会有所收获。
今天我还在继续学习PHP与MySQL应用开发的相关知识,今天想用PHP跟MySQL数据库交互,看了Mambo及Mediawiki的相关源代码,感觉都是直接用SQL语句进行数据操作,因为数年前,我在速达上海分公司做产品时大量采用了存储过程,所以也就想应用一下MySQL的存储过程,经过查看MySQL及PHP相关文档,我用mysqli及mysqli_stmt_bind_param进行了验证,以下是MySQL创建数据库及生成表与存储过程的命令:
create database `openshop` default character set utf8 collate utf8_general_ci;
GRANT ALL PRIVILEGES ON openshop.* TO 'os'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;

use openshop;
CREATE TABLE /*_*/users (
  user_id int unsigned NOT NULL PRIMARY KEY AUTO_INCREMENT,

  user_name varchar(255) binary NOT NULL default ''
);

delimiter //
CREATE PROCEDURE insert_user(IN name varchar(255))
BEGIN
insert into users(user_name) values(name);
END
//
然后使用了以下PHP验证代码:
<?php
$mysqli = new mysqli("localhost", "os", "password", "openshop");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

$city = "hah'a";

/* create a prepared statement */
if ($stmt = $mysqli->prepare("call insert_user(?)")) {
    
    /* bind parameters for markers */
    $stmt->bind_param("s", $city);

    /* execute query */
    $stmt->execute();

    /* close statement */
    $stmt->close();
    echo $city;
}

/* close connection */
$mysqli->close();
?>
通过MySQL客户端查询结果如下图所示:

其实这么做大家也知道,只有一个好处,那就是可以避免使用PHP生成表插入数据时对特殊字符“'”的处理。今天真是一切顺利,明天继续。

幸福在继续:20090904

今天我爱人让我跟淘宝店的顾客联系,请求顾客的谅解,如果有可能,我们给予其退货、退款,因为顾客需要大一号的童装,而我们最大号的也比他的需要小一号,真是很让人烦心的事情呀,爱人是对的,经商就是要靠诚信的,尤其是网店。一大早我奉命起来值班,准备跟顾客说明情况,但顾客却非常平静,竟然一直没有上线,爱人最后决定,发短消息告知其具体情况,但令人惊讶的是短消息也无回音,最后只好打电话直接解释。真是功夫不负有心人,顾客说他家孩子穿这一号的今年刚刚好,只是想让孩子能多穿一年,所以才想买个大一号的,可以接受我们所提供的商品,当然此消息非常令人振奋,我们就赶快准备发货,向申通快递下单。刚过了一会,淘宝旺旺竟然突然来了一条商品已经卖出的通知,我们赶快查看,发现果然又有一商品卖出了,真是幸福来敲门,让人很振奋呀。最终我们成功在这一周做成了两单生意,虽然业绩不怎么令人满意,但毕竟是一个良好的开端,明天会更好。今天的美中不足是我们跟申通采用的是现金结算,快递费高了些,如果以后能月结的话,费用会便宜些,努力、加油,就会有所收获。
今天我还在继续学习PHP与MySQL应用开发的相关知识,今天想用PHP跟MySQL数据库交互,看了Mambo及Mediawiki的相关源代码,感觉都是直接用SQL语句进行数据操作,因为数年前,我在速达上海分公司做产品时大量采用了存储过程,所以也就想应用一下MySQL的存储过程,经过查看MySQL及PHP相关文档,我用mysqli及mysqli_stmt_bind_param进行了验证,以下是MySQL创建数据库及生成表与存储过程的命令:
create database `openshop` default character set utf8 collate utf8_general_ci;
GRANT ALL PRIVILEGES ON openshop.* TO 'os'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;

use openshop;
CREATE TABLE /*_*/users (
  user_id int unsigned NOT NULL PRIMARY KEY AUTO_INCREMENT,

  user_name varchar(255) binary NOT NULL default ''
);

delimiter //
CREATE PROCEDURE insert_user(IN name varchar(255))
BEGIN
insert into users(user_name) values(name);
END
//
然后使用了以下PHP验证代码:
<?php
$mysqli = new mysqli("localhost", "os", "password", "openshop");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

$city = "hah'a";

/* create a prepared statement */
if ($stmt = $mysqli->prepare("call insert_user(?)")) {
    
    /* bind parameters for markers */
    $stmt->bind_param("s", $city);

    /* execute query */
    $stmt->execute();

    /* close statement */
    $stmt->close();
    echo $city;
}

/* close connection */
$mysqli->close();
?>
通过MySQL客户端查询结果如下图所示:

其实这么做大家也知道,只有一个好处,那就是可以避免使用PHP生成表插入数据时对特殊字符“'”的处理。今天真是一切顺利,明天继续。

2009-09-04

让人高兴的一天:20090903

Google AdSense产生了一点点收入,我们的淘宝网店迎来了第一笔生意,不过由于备货规格方面的原因,我爱人准备取消这一单了,因为我们主要是针对婴童的,而客户想要尺码大一点儿的,可我们最大只有130尺码的,真是万事开头难呀。
今天还主要学习了些PHP实用技术:stripslashes函数的应用,主要是用于CKEditor的POST数据处理。
期望明天更美好。
喜迎国庆六十周年本淘宝网店特价推出25元、28元婴童装,欢迎选购。

2009-09-01

新的一个月又开始了:20090901

今天是学校开学的日子了,祝愿学生们都身体好、学习顺利。
今天主要是大致做了一下九月份的计划,试验性项目openShop(暂定名)准备采用CKEditor做富文本编辑器、采用TCPDF将内容的导出为PDF文档。另外,今天还尝试了一下Joomla!和Drupal,感觉Joomla!跟Mambo有几分相似。
感觉这段时间有线通宽带下载速度实在是太慢了,而且最让人气愤的是,每次下载个软件包什么的,总要转到211.167.112.15:9203的相关链接去下载,但这个网址下载速度实在是不尽如人意,我用Firefox的扩展Downthemall下载的真实链接截图如下:
感觉有线通真是太恶心了,我准备适时更换宽带了,如果确认我这边能够安装电信的ADSL 2M宽带,我肯定再也不用这个破有线通了,万恶的上海有线通。
另外,昨天将八月份最后一篇预定的翻译文章BugZilla alerts using GMAIL发布到维勘翻译上去了。

2009-08-29

PHP学习与openShop研发及tidy使用

一直以来,我都想好好学习PHP,开发一个在线商店管理系统(暂定名为),可一直都没有太深入地去做这个事情,现在我计划依托opentiss.net,除了想办法提供一些开源CMS等LAMP软件的服务之外,可以尝试研发一个小系统,通过这个小系统验证与加深学习效果,为自己的能力提高及将来的发展打好基础,只通过C/C++谋求一份像样的工作真的有些不太容易,尤其是现在经济形势不明朗的情况下。
研究了一下Mambo系统,现在开始构建大致的框架,首先我选择使用xhtml 1.1来展示web内容,不过发现似乎使用这一标准的网站比较少,比较明显的一个例子就是w3c的官网都是xhtml 1.0,只有其xhtml 1.1标准文档采用的的确是xhtml 1.1。不过还是有个不小的收获,通过查看xhtml 1.1标准文档的源代码,发现了一个可以验证xhtml的工具Tidy。随即我便在SLED 11上安装了tidy,安装时,会自动将依赖库libtidy安装上。tidy的使用也很简单,例如,对用wget命令下载到本地的php网站输出index.html文件进行xhtml验证,只需在终端输入以下命令即可:
opentiss@tiss:~/Documents/tmp> tidy -asxhtml -utf8 < index.html > index.tidy.html
Info: Doctype given is "-//W3C//DTD XHTML 1.1//EN"                             
Info: Document content looks like XHTML 1.1                                    
No warnings or errors were found.                                              


To learn more about HTML Tidy see http://tidy.sourceforge.net
Please send bug reports to html-tidy@w3.org
HTML and CSS specifications are available from http://www.w3.org/
Lobby your company to join W3C, see http://www.w3.org/Consortium
如果输出信息为“No warnings or errors were found.”,就表示您的xhtml文档没有与标准相冲突的问题存在。如果需要了解如何使用这一工具,只需在终端输入以下命令查看帮助即可:
opentiss@tiss:~> tidy -help
tidy [option...] [file...] [option...] [file...]
Utility to clean up and pretty print HTML/XHTML/XML
see http://tidy.sourceforge.net/                   

Options for HTML Tidy for Linux/x86 released on 31 October 2006:

File manipulation
-----------------
 -output <file>, -o  write output to the specified <file>                      
 <file>                                                                        
 -config <file>      set configuration options from the specified <file>       
 -file <file>, -f    write errors to the specified <file>                      
 <file>                                                                        
 -modify, -m         modify the original input files                           

Processing directives
---------------------
 -indent, -i         indent element content                                    
 -wrap <column>, -w  wrap text at the specified <column>. 0 is assumed if      
 <column>            <column> is missing. When this option is omitted, the     
                     default of the configuration option "wrap" applies.       
 -upper, -u          force tags to upper case                                  
 -clean, -c          replace FONT, NOBR and CENTER tags by CSS                 
 -bare, -b           strip out smart quotes and em dashes, etc.                
 -numeric, -n        output numeric rather than named entities                 
 -errors, -e         only show errors                                          
 -quiet, -q          suppress nonessential output                              
 -omit               omit optional end tags                                    
 -xml                specify the input is well formed XML                      
 -asxml, -asxhtml    convert HTML to well formed XHTML                         
 -ashtml             force XHTML to well formed HTML                           
 -access <level>     do additional accessibility checks (<level> = 0, 1, 2, 3).
                     0 is assumed if <level> is missing.                       

Character encodings
-------------------
 -raw                output values above 127 without conversion to entities    
 -ascii              use ISO-8859-1 for input, US-ASCII for output             
 -latin0             use ISO-8859-15 for input, US-ASCII for output            
 -latin1             use ISO-8859-1 for both input and output                  
 -iso2022            use ISO-2022 for both input and output                    
 -utf8               use UTF-8 for both input and output                       
 -mac                use MacRoman for input, US-ASCII for output               
 -win1252            use Windows-1252 for input, US-ASCII for output           
 -ibm858             use IBM-858 (CP850+Euro) for input, US-ASCII for output   
 -utf16le            use UTF-16LE for both input and output                    
 -utf16be            use UTF-16BE for both input and output                    
 -utf16              use UTF-16 for both input and output
 -big5               use Big5 for both input and output
 -shiftjis           use Shift_JIS for both input and output
 -language <lang>    set the two-letter language code <lang> (for future use)

Miscellaneous
-------------
 -version, -v        show the version of Tidy
 -help, -h, -?       list the command line options
 -xml-help           list the command line options in XML format
 -help-config        list all configuration options
 -xml-config         list all configuration options in XML format
 -show-config        list the current configuration settings

Use --blah blarg for any configuration option "blah" with argument "blarg"

Input/Output default to stdin/stdout respectively
Single letter options apart from -f may be combined
as in:  tidy -f errs.txt -imu foo.html
For further info on HTML see http://www.w3.org/MarkUp
使用tidy可以随时验证文档,在访问w3c的The W3C Markup Validation Service比较慢的时候,这就是一个比较便捷的选择了。
使用Eclipse+PDT创建的PHP项目源代码中,xml的文件类型标识会被认为错误:
<?xml version="1.0" encoding="UTF-8"?>
其实,解决的方法也很简单,将其作为PHP文本输出即可:
<?php echo '<?xml version="1.0" encoding="UTF-8"?>'; ?>
这几天JavaEye访问不了了,一直在升级中,也不知识什么原因,期望能够早点恢复正常。

2009-08-28

SLED 11更新了ALSA模块,重启后声卡变为静音问题解决了

今天收了一下Novell SLE更新列表邮件,发现ALSA模块更新的说明,现在重启后声卡变为静音的问题解决了,问题描述原文
Some problems and bugs of ALSA are fixed by this update.
This update includes a fix for the bug, "mute after reboot" happening on desktops using pulseaudio. Also a useless "sudo" in alsasound init script is removed for terminating pulseaudio properly.
译文(简体中文):
这次更新修复了ALSA的一些问题和bug。
这次更新包含以下bug的解决,在使用pulseaudio的桌面中“重启后静音”。并且,为了终止pulseaudio属性,alsasound初始化脚本中一个无用的“sudo”操作被去除了。
如此说来,之前我所遇到的KDE重启后声卡无声问题解决了,之前我为此将相应的用户配置文件设置为只读,以保留重启之前对声卡音量的设置。

昨天将openSUSE News的文章openSUSE 11.2 Milestone 6 Released翻译成了中文,以供大家参阅:维勘翻译中文译文:openSUSE 11.2里程碑版本6发布。在发布译文的过程中也发现了Mambo所见即所得编辑器及本地化组件编辑器(其实都是)的一个问题,从OpenOffice.org字处理复制粘贴过来的内容会出现不必要的段落嵌套,需要手动更改html源代码后才能解决此问题。
淘宝网发布通知说明天(2009-08-29)凌晨三点到四点要对网站进行更新,也不知道是例行维护还是软件升级,不过基本可以肯定,不要对国内的网站及软件有什么期望,他们都是些即官僚又懒惰的无能之辈,一般能够行动迅速、跟上Web标准更新及用户多样性需要的服务提供商只点少数,参阅:网上银行-非Windows平台兼容性列表,排名分先后

2009-08-27

忙碌的淘宝一天,竟然突然断网了:20090827

昨天去厂家代理进了一批童装,回来后就一直忙着弄淘宝网店,结果没想到,今天凌晨零点二十八分,有线电视网竟然全网性断掉了,有线电视没有信号,有线通网络无法连接,只好上床就寝,准备天明后再发布商品信息。
早晨起来后,我就确认了有线网络的修复情况,发现已经修好了,本来爱人还威协我说,如果网络不通,就要去网吧发布商品信息的,这下终于没有后顾之忧了。现在把部分童装照片给大家欣赏一下:

可爱的儿童秋装

欢迎到我的淘宝网店留言选购、指正。


2009-08-23

淘宝店开张:20090823

今天老婆的淘宝店正式上线了,店名暂定为热风
今天一大早我就骑自行车出门子了,先去交电费,然后去东方路的招商银行营业厅,结果出现了个意外情况,那个营业厅的物业在装修那橦建筑物的外墙面,这下我的担心就由之前的银行里人多等待时间长变成了这个营业厅是否在营业了,经过仔细观察,好不容易才找到正门,但在正常营业,真是谢天谢地,我从几公里之外过来总算没有扑空,安顿好自行车,赶快咨询工作人员能否把我那一卡通金卡原工资卡销户,因为我这个卡是在浦西开的户,要到原开户的营业厅销卡可就太不人道了。结果还真是不错,工作人员给出了肯定答复,还给了我一个销户的表格,甚至把电脑叫号的纸都给准备好交给了我,我就赶快填写那个表,顺便看了一眼前面有多少人,真没想到,是0,天呀,更令我惊讶的是,电脑叫号这时就叫我的号了,没二话,赶快去找那个一号窗口,还真费了点劲,我是金卡,虽然是销户,但仍然是金卡的待遇,不在大厅,在一个个人理财室的里头,当然,还是窗口形式的。没办法,只好向营业员申明,要办个新的普卡,把销掉的金卡里的钱转存过来,一边跟营业员解释,一边填表,最终还算顺利,销卡开卡用了一些时间,也就十分钟左右吧,期间我突然想到这几个月的明细还是有必要拿一份的,营业员也帮忙给打印了。因为此行的主要目的是开通支付宝的网上支付,所以就请教开通个人网上银行大众版的问题,结果一不小心,发现开通的是专业版,不过也无所谓了,反正是免费的,反正也是准备收钱用的,所以就这样了。办理结束,打分就照顾了他们一下,给了个非常满意,其实顺利就好了,也不管那么多了。
回家后在Windows下弄了一两个小时,总算把支付宝和店开起来了,我爱人也把商品先放上去了,反正是先试试,如果碰巧网友看中了哪个商品,小店就算正式营运了。我们会诚信经营,努力给大家提供尽量好的服务的。

昨天弄了半天的Eclipse+PDT,就是不能创建PHP项目,老是报错:
Creation of element failed.

Reason:
Build path contains duplicate entry: ...

今天下午又试了一下,在创建PHP项目时,发现只要填好项目名的那个窗口按结束就可以了,千万不要再按下一步,一旦按了再按结束就不行了。

2009-08-21

SuSE的zypp缓存

今天登录gmail邮箱,发现Novell SLE 11已经发布了kernel 2.6.27.29的升级包,有线通的宽带缓慢升级了一阵子,爱人的电脑如果也在线升级,那将是一件很麻烦的事情,自己动手,去找zypp的缓存,直接复制过去手动升级,节省宝贵的带宽与流量。一般情况下,zypp的缓存存放在如下位置:
/var/cache/zypp/packages/
而kernel的rpm包缓存在如下目录:
/var/cache/zypp/packages/nu_novell_com:SLED11-Updates/rpm/i586
先将需要的文件复制到我的用户目录下:
cp kernel-pae-2.6.27.29-0.1.1.i586.rpm /home/opentiss/Documents
cp kernel-pae-base-2.6.27.29-0.1.1.i586.rpm /home/opentiss/Documents
cp kernel-pae-extra-2.6.27.29-0.1.1.i586.rpm /home/opentiss/Documents
cp kernel-source-2.6.27.29-0.1.1.i586.rpm /home/opentiss/Documents
用FileZilla以sftp登录爱人的主机,上传上述文件,然后ssh登录,用以下命令升级:
cindy:~ # rpm -Uivh kernel-*rpm
整个过程也不过几分钟,很顺利的就完成了。当然,此办法仅适用于有多台相同系统主机的情况,但可以节省很多的时间,在宽带网速受限的环境中还是很实用的。
另外,今天发现爱人笔记本的磁盘空间有些不足,删除了一些文件之后,不经意间到/tmp文件夹看看了,结果惊奇地发现,以前一直在寻找的Mozilla Firefox视频(主要是Flash)缓存竟然赫然以Flashx7Nr74的形式存储在这里,于是我赶快予以备份,这样就能把之前所欣赏过的视频网站的内容方便地转存过来了,再也不需要什么DownloadHelper之类的Firefox扩展手动下载了。不过,也有个小问题,就是这些名字与实际内容无法对应上,需要自己一点一点地予以验证与重新命名,不过,有了这个缓存,已经能够很好地解决网站视频回放占用带宽的问题了,已经相当有用了。
Pidgin 2.6.0已经正式发布了,但现在还没有可用于SLED 11的更新包可用,还需要等待一段时间。还有一个问题就是现在QQ总是让你激活账号,要不然就不能用Pidgin登录,万恶地麻花疼,脆弱的Tencent QQ for Linux,如果不想真支持Linux,也就别弄个Beta版出来,难道久经考验的Pidgin就没你安全、没你好用么?国人这种又想拿偷来的东西活命,又假装自己很有本事、可轻松跨平台的思想真是让人不齿,Pidgin同一主机连续登录你两次就要重新激活,还号称人家不安全了云云,真不知羞耻,更可恨的是,动不动就推送个广告链接到Pidgin客户端,还时不时发个消息,说你经常收到其他QQ用户发来的不明链接吗?那样是不安全的,不要轻易点击,这简直不就是强奸犯强奸了别人之后,再告诉别人说你可要小心呀,现在强奸犯比较多,一定要注意安全。
珍爱网络,远离QQ。珍爱生命,远离Windows。珍爱汉字,远离MS宋体(传闻说:中国政府是微软的中国区总代理)。

今天收到了Google AdSense 支持小组的如下邮件通知:
*** 如果您的AdSense广告没有投放在Discuz!平台或其他论坛平台上面,请忽略此邮件,由此给您带来的不便,敬请谅解,谢谢!***

尊敬的发布商,

您好!

这几天我们发现一些使用Discuz!论坛平台的发布商的AdSense广告无法正常展示,您可以到Discuz官方网站下载最新的版本以解决此问题。

经过和Discuz!团队以及AdSense产品部门的沟通,我们确认下面的方案可以解决AdSense广告展示的问题。如果您的网站是使用了Discuz!论坛平台或者采用了其他的论坛平台并遇到了同样的广告展示问题,
请按照如下步骤进行操作:
请进入Discuz!安装目录,在include\js目录下的common.js文件内删除以下语句:
 Array.prototype.push = function(value) {
this[this.length] = value;
return this.length;
}
如果调整以后,您的Discuz!论坛依然不能正常展示AdSense广告,
请通过AdSense帮助中心和我们联系。

感谢您对我们工作的理解与支持,祝您一切顺利!
Google AdSense 支持小组
看来谷歌还是很注重用户的反馈的。我觉得谷歌如果能在Google docs的Edit菜单中加入类似于OpenOffice.org的“选择性粘贴”功能就好了,省得每次我总要把带格式的文本先复制到openJDiary,然后再重新复制到Google docs中。
这些天在学习Perl与CSS、PHP等,同时也在尽量帮爱人筹备淘宝的网店,由此我也想做个在线商城的软件出来,也验证一下web应用开发学习的效果,名字还没想好,可能类似于openshop、ishop或openchoose之类的吧,总之应该是LAMP平台的了。

2009-08-07

sf.net:2009年8月月度项目简介中文翻译就绪

2009年8月sf.net月度项目eyeOS,其简介文章维勘翻译上已经发布。








eyeOS是一款紧跟云计算概念的免费web桌面软件,主要使用PHPXML
JavaScript编写。其扮演着为用eyeOS工具箱,包括一个带有67种应用与系统工具的桌面环境编写的web应用程序提供平台的角色。eyeOS项目通过构建开源软件替代大量的云计算服务,尤其是那些将数据保留在他们服务器上的服务。使用eyeOS数据一直保留在本地服务器。

...

2009-08-06

openJDiary预发布版发布

openJDiary预发布0.0.2版将按计划于2009年8月7日准时发布,此版本现在还仅包含基本的一些功能及就地计算功能,欢迎大家下载试用。另外一个小项目openCIIP也已经进入界面实现阶段,如果有时间,可能于近期发布。
openJDiary的源代码暂时还未提交至sf.net,按计划将从0.0.3版本开始提交。

2009-08-02

Bugzilla 3.4.1发布

自Bugzilla 3.4发布后,发现了一个安全问题,所以昨天修复版本Bugzilla 3.4.1很快发布了,以下为升级Bugzilla的简单过程。
首先下载最新版本Bugzilla 3.4.1的tar.gz包:
dws:/srv/www/htdocs # wget http://ftp.mozilla.org/pub/mozilla.org/webtools/bugzilla-3.4.1.tar.gz
也许因为宽带线路问题,第一次下载的压缩包解压缩出现问题,经过两次不同机器的下载后,得出相同校验码,经过解压缩无异常后,证明校验码基本无误,如下:
43e978463799a75e54c628d7e4c326b3  bugzilla-3.4.1.tar.gz
确定要升级Bugzilla之后,需要先暂时关闭Bugzilla,以避免出现升级前后数据不一致。可以通过系统管理员操作参数(Administration->Parameters)中的Required Settings选项shutdownhtml设置来实现,只要给参数shutdownhtml录入文本即可,例如:
Updating to Bugzilla 3.4.1.
升级前,为确保安全,请先将Bugzilla数据库备份。根据您使用的后台数据库模块不同,可能不一定是MySQL。
然后执行以下脚本完成升级过程:
dws:/srv/www/htdocs # cd bugzilla-3.4.1/
dws:/srv/www/htdocs/bugzilla-3.4.1 # cp -p ../bugzilla/localconfig* .
dws:/srv/www/htdocs/bugzilla-3.4.1 # cp -p -R ../bugzilla/data/ .
dws:/srv/www/htdocs/bugzilla-3.4.1 # cp -p -R ../bugzilla/lib/* lib/
dws:/srv/www/htdocs/bugzilla-3.4.1 # cd ..
dws:/srv/www/htdocs # mv bugzilla bugzilla.old
dws:/srv/www/htdocs # mv bugzilla-3.4.1 bugzilla
dws:/srv/www/htdocs # cd bugzilla
dws:/srv/www/htdocs/bugzilla # ./checksetup.pl
dws:/srv/www/htdocs/bugzilla # cd data
dws:/srv/www/htdocs/bugzilla/data # vi params
最后两步是将参数shutdownhtml重新置为空字符串(params文件的第82行),至此Bugzilla升级完毕,可以恢复运行了。
在Novell SLES 11.0上Bugzilla的升级非常简便,总共不到十分钟就全部完成了。

2009-07-29

SLES 11之安装配置Bugzilla 3.4

昨天著名的Bug跟踪管理工具Bugzilla 3.4正式发布了,因为openJDiary项目管理的内部需要及其他一些必要的用途,我就在我的小机器上配置了一个bugzilla系统。
首先下载Bugzilla 3.4,解压缩到相应的虚拟主机目录:
dws:/srv/www/htdocs # tar xzf bugzilla-3.4.tar.gz
将目录bugzilla-3.4更改为需要的名称,如:
dws:/srv/www/htdocs # mv bugzilla-3.4 bugzilla
进行安装之前,需要检查一下是否具备了所有需要的模块及perl工具包:
dws:/srv/www/htdocs # cd bugzilla
dws:/srv/www/htdocs/bugzilla # ./checksetup.pl
一般情况下,是缺少一些软件包的,不过没有问题,按照提示,只需要运行以下命令自动下载安装所需的软件包即可,过程中可能需要若干次确认操作:
dws:/srv/www/htdocs/bugzilla # /usr/bin/perl install-module.pl --all
顺利完成后,再次执行以下命令:
dws:/srv/www/htdocs/bugzilla # ./checksetup.pl
此时如果安装条件均具备,会自动生成localconfig,提示您对MySQL数据库参数进行设置,如果建立全新的bugzilla数据库,可参考以下MySQL数据库脚本建立数据库并进行相应权限设置:
create database `bugzilla` default character set utf8 collate utf8_general_ci;
GRANT SELECT, INSERT,UPDATE, DELETE, INDEX, ALTER, CREATE, LOCK TABLES,CREATE TEMPORARY TABLES, DROP, REFERENCES ON bugzilla.* TO bugzilla@localhost IDENTIFIED BY 'password';
FLUSH PRIVILEGES;
另外,因为SLES 11.0使用的Apache用户组名为www,还需要更改第25行的参数$webservergroup,由apache更改为www。
一切就绪后,再次执行以下命令,结束安装:
dws:/srv/www/htdocs/bugzilla # ./checksetup.pl
安装的最后阶段,会提示你输入系统管理员的Email,真实名字,以及登录密码。
Bugzilla 3.4安装结束后,就需要配置Apache的相应参数了,我采用了虚拟主机方式,配置文件(/etc/apache2/vhosts.d/yast2_vhosts.conf)参考如下:
<VirtualHost 10.15.76.105>
 DocumentRoot /srv/www/htdocs/bugzilla
 ServerName bugzilla.dws.cn
 ServerAdmin opentiss@gmail.com
 <Directory /srv/www/htdocs/bugzilla>
    AddHandler cgi-script .cgi
    Options +Indexes +ExecCGI
    DirectoryIndex index.cgi
    AllowOverride Limit
 </Directory>
</VirtualHost>
重启Apache,就可以使用刚才安装的Bugzilla了:
/etc/init.d/apache2 restart
Bugzilla的主页如下图所示:

以系统管理员账号登录后,请先在Parameters->Required Settings中将参数urlbase修改为正确的值。
最后,如果你想以gmail的smtp做为Bugzilla通知邮件服务器的话,可以参照BugZilla alerts using GMAIL进行如下配置:首先安装Perl模块Email::Send::SMTP::TLS,采用CPAN SHELL:
perl -MCPAN -e shell
cpan[1]> install Email::Send::SMTP::TLS
因为安装过程中需要两个模块perl-Test-Pod和perl-Test-Pod-Coverage,所以需要先在YaST中事先安装好。在安装过程中可能需要自动安装一些其他有依赖的包,直接确认安装即可。
安装完成后,备份Bugzilla/Mailer.pm,然后对其进行如下修改:
176a177,186
>     if ($method eq "SMTP::TLS") {
>         my ($smtp_server,$smtp_port) = split /:/,Bugzilla->params->{"smtpserver"};
>         push @args, Host  => $smtp_server,
>                     User => Bugzilla->params->{"smtp_username"},
>                     Password => Bugzilla->params->{"smtp_password"},
>                     Hello => $smtp_server,
>                     Port => $smtp_port,
>                     Debug => Bugzilla->params->{'smtp_debug'};
>     }
>
即添加针对SMTP::TLS的处理代码,然后以系统管理员账号登录,在Parameters->Email中修改如下设置:
mail_delivery_method > SMTP::TLS
mailfrom > username@gmail.com
smtpserver > smtp.gmail.com:587
smtp_username > username@gmail.com
smtp_password > userpassword
保存以上设置之后,您就可以通过gmail发送您的Bugzilla通知邮件了。
以上参考文章将会在维勘翻译中有中方参考译文发布(对原文perl代码错误有所修正),敬请关注。

2009-07-28

Piwik使用及推介

最近不但使用Mambo将个人网站opentiss.net进行了升级改造,而且还从sf.net寻到一个非常好的开源网站访问统计分析软件Piwik,用于对opentiss.net诸站点的访问统计分析。为了更好地宣传这一可以于Google Analytics不相上下的开源软件,还将sf.net本月月度推荐的专题文章翻译于维勘翻译(Wikan Translation)相应专题之中,大家有兴趣的话,可以阅读指正。现在将Piwik的安装过程简述如下,以供大家参考。
首先下载Piwik的安装文件,解压缩在指定的目录,我放在Apache主目录(DocumentRoot)的子目录piwik中:
dws:/srv/www/htdocs # 7z x ../latest.zip
然后在浏览器中直接安装即可,如果一切正常,应该如下图所示:
一般可能会遇到目录的写权限未正确设置的情况,如下图所示:
此时只需执行类似如下命令,将写权限设置正确即可:
chmod 777 /srv/www/htdocs/piwik/tmp
chmod 777 /srv/www/htdocs/piwik/tmp/templates_c
chmod 777 /srv/www/htdocs/piwik/tmp/cache
安装过程大概需要八个步骤,写权限正确后,刷新页面点击next进入下一步,如果需要的系统模块配置均符合要求,应该如下图所示:


一般情况下,如果默认安装的Apache和php,可能还需要安装一下php5-gd模块,安装如下图高亮选中的项即可:

点击next进入下一步,设置所使用MySQL数据库的参数:


设置好后点击next,如果一切正常,会显示数据库安装结果:


点击next,设置piwik的通用设置:

设置完成后,点击Go,安装第一个需要进行访问统计分析的网站:

设置完成后,点击Go,就可以获取到JavaScript Tag了:

最后,一切安装完成,你就可以正常使用Piwik来管理与查看您网站的访问统计分析数据了:

查看统计分析数据的界面如下图所示:

最后,需要说明的是,Piwik软件的升级非常方便,如果有软件更新了,会直接在管理界面予以提示:

点击Please update now之后,总共只需三步即可完成升级:

这一步主要是告诉你在线升级程序会如何进行升级,点击Continue to Piwik进入下一步:

这一步主要是告知数据库也需要升级,点击Upgrade Piwik以完成整个升级过程:

最后,升级成功完成。

如果大家要体验完全控制Web统计分析软件,并且不受免费Google Analytics访问量的限制,那么现在你可以试一试开源软件Piwik了。

2009-07-21

SLES 11的Ruby开发框架Rails配置

今天在我的小服务器上配置了一下Ruby的Rails开发框架,发现Ruby的确非常好用。
我的小机器上安装的是Novell SLES 11.0,参考Configuring Ruby Rails for Apache on SUSE Linux Enterprise ServerRuby on Rails 2.1.x ScaffoldingRails, Apache2 and SUSE,采用Apache的fastcgi模块访问实验虚拟主机www.dws.cn。
首先通过YaST安装必要的软件包,主要是以下几个:
FastCGI
ruby
ruby-devel
ruby-fcgi
ruby-mysql
rubygem-rails
rubygem-rake
rubygems
另外,还需要通过下载rpm安装apache2-mod_fastcgi,下载链接为:apache2-mod_fastcgi-2.4.2-39.1.i586.rpm。下载完成后直接安装即可:
rpm -ivh apache2-mod_fastcgi-2.4.2-39.1.i586.rpm
一切就绪后,准备运行第一个Rails应用:
dws:~ # cd /srv/www/htdocs/
dws:/srv/www/htdocs # rails www.dws.cn               
      create                                         
      create  app/controllers                        
      create  app/helpers                            
      create  app/models                             
      create  app/views/layouts                      
      create  config/environments                    
      create  config/initializers                    
      create  db                                     
      create  doc                                    
      create  lib                                    
      create  lib/tasks                              
      create  log                                    
      create  public/images                          
      create  public/javascripts                     
      create  public/stylesheets                     
      create  script/performance                     
      create  script/process                         
      create  test/fixtures                          
      create  test/functional                        
      create  test/integration                       
      create  test/unit                              
      create  vendor                                 
      create  vendor/plugins                         
      create  tmp/sessions                           
      create  tmp/sockets                            
      create  tmp/cache                              
      create  tmp/pids                               
      create  Rakefile                               
      create  README                                 
      create  app/controllers/application.rb         
      create  app/helpers/application_helper.rb      
      create  test/test_helper.rb                    
      create  config/database.yml                    
      create  config/routes.rb                       
      create  config/initializers/inflections.rb     
      create  config/initializers/mime_types.rb      
      create  config/initializers/new_rails_defaults.rb
      create  config/boot.rb                           
      create  config/environment.rb                    
      create  config/environments/production.rb        
      create  config/environments/development.rb       
      create  config/environments/test.rb              
      create  script/about                             
      create  script/console                           
      create  script/dbconsole                         
      create  script/destroy                           
      create  script/generate                          
      create  script/performance/benchmarker           
      create  script/performance/profiler              
      create  script/performance/request               
      create  script/process/reaper                    
      create  script/process/spawner                   
      create  script/process/inspector                 
      create  script/runner                            
      create  script/server                            
      create  script/plugin                            
      create  public/dispatch.rb                       
      create  public/dispatch.cgi                      
      create  public/dispatch.fcgi                     
      create  public/404.html                          
      create  public/422.html                          
      create  public/500.html                          
      create  public/index.html                        
      create  public/favicon.ico                       
      create  public/robots.txt                        
      create  public/images/rails.png                  
      create  public/javascripts/prototype.js
      create  public/javascripts/effects.js
      create  public/javascripts/dragdrop.js
      create  public/javascripts/controls.js
      create  public/javascripts/application.js
      create  doc/README_FOR_APP
      create  log/server.log
      create  log/production.log
      create  log/development.log
      create  log/test.log
如果一切正常,第一个Rails应用就成功布置完成了,运行以下命令运行这个应用的服务器脚本:
dws:/srv/www/htdocs/www.dws.cn # ruby script/server
=> Booting WEBrick...
=> Rails 2.1.2 application started on http://0.0.0.0:3000
=> Ctrl-C to shutdown server; call with --help for options
[2009-07-21 12:31:22] INFO  WEBrick 1.3.1
[2009-07-21 12:31:22] INFO  ruby 1.8.7 (2008-08-11) [i586-linux]
[2009-07-21 12:31:22] INFO  WEBrick::HTTPServer#start: pid=3547 port=3000
可以通过http://localhost:3000/来访问示例页面,如果不是从服务器本机访问,请先暂时停止SLES 11.0的防火墙,否则通过其他主机无法验证刚才创建的Rails应用是否已经能够正常运行。下图为通过ip由其他主机访问刚才创建的示例页面的屏幕截图:
通过Yast启用Apache的rewite、vhost_alias服务器模块:
上图显示默认这两项是禁用的,将其状态转换为启用即可。
服务器模块fastcgi可能无法直接通过YaST启用,可以直接在配置文件/etc/sysconfig/apache2的第103行的最后添加fastcgi来启用:
上图显示添加后的结果。
可以通过YaST来添加vhost,也可以手动添加,配置文件(/etc/apache2/vhosts.d/yast2_vhosts.conf)的内容如下:
<VirtualHost 10.15.76.105>
 DocumentRoot /srv/www/htdocs/www.dws.cn/public
 ServerName www.dws.cn
 ServerAdmin opentiss@gmail.com
 AddHandler fastcgi-script .fcgi
 AddHandler cgi-script .cgi
 <Directory /srv/www/htdocs/www.dws.cn/public>
  RewriteEngine On
  RewriteRule ^$ index.html [QSA]
  RewriteRule ^([^.]+)$ $1.html [QSA]
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteRule ^(.*)$ dispatch.fcgi [QSA,L]
  ErrorDocument 500 "<h2>Application error</h2>Rails application failed to start properly."
  Options ExecCGI FollowSymLinks
  Order allow,deny
  Allow from all
 </Directory>
</VirtualHost>
为使手动添加的虚拟主机选项生效,重启Apache:
/etc/init.d/apache2 restart
修改浏览主机的/etc/hosts文件,添加如下内容,以使其能够通过域名访问虚拟主机:
10.15.76.105    www.dws.cn
如果一切正常,浏览器的显示应该如下图所示:
这就表明通过Apache的服务器模块fastcgi访问Rails应用已经配置成功了。
下面我们来创建一个简单的MySQL数据库交互应用。首先,创建MySQL数据库脚本文件dws.sql,内容如下:
create database `dws` default character set utf8 collate utf8_general_ci;
grant all privileges on dws.* to 'dws'@'localhost' identified by 'dws' with grant option;
use dws;

create table websites (
  id int(8)  not null auto_increment,
  siteName varchar(128) ,
  domainName varchar(128) ,
  onlineDate date ,
  introduce text ,
  primary key(id)
);

insert into websites values(0, 'opentiss', 'opentiss.net', '2007-9-2',  'Opentiss\'s website.');
insert into websites values(0, 'Wikan translation', 'wikan.opentiss.net', '2009-7-11', 'Wikan translation - 维勘翻译');
insert into websites values(0, 'openJDiary', 'openjdiary.opentiss.net', '2009-7-18',  'Project page of openJDiary.');
执行此脚本文件:
mysql -u root < dws.sql
为测试方便,将原来的Rails应用更名,以生成一个自动配置好的MySQL数据库交互应用:
dws:/srv/www/htdocs # mv www.dws.cn dws
dws:/srv/www/htdocs # rails -d mysql www.dws.cn
将/srv/www/htdocs/www.dws.cn/config/database.yml中的development配置更新为刚才创建的数据库,例如:
development:
  adapter: mysql
  encoding: utf8
  database: dws
  username: root
  password:
  socket: /var/lib/mysql/mysql.sock
主要是更改了数据库名称设置database。然后创建对表websites查看、修改、删除的示例页面(scaffold操作):
dws:/srv/www/htdocs # cd www.dws.cn
dws:/srv/www/htdocs/www.dws.cn # ruby script/generate scaffold website siteName:string domainName:string onlineDate:date  introduce:text
此时在浏览器中看到的效果如下:
点击第二条的Edit,你就可以修改内容并保存到数据库了:
Ruby是一种动态的、面向对象的开源编程语言,简洁易学,如果你想到Ruby Forum注册一个用户,会被问及一个简单的Ruby问题,例如:
What does the following ruby code print out?
puts (('11' * 2).to_i/2)
Please type the answer:
其实这是Ruby Forum在确认您是否真的是Ruby爱好者,故意考考你的,这也不难,只需要将以上puts语句写入到文件rf.rb中,例如:
puts (('11' * 2).to_i/2)
然后执行:
ruby rf.rb
结果是什么呢?相信如果你是Ruby爱好者的话,已经知道结果了。Ruby就是这么简单,爱好学习新技术的你赶快加入到Ruby的行列中来吧。

2009-07-17

Mambo安装及使用简介:20090717

这几天找工作没有什么结果,就学习使用网站内容管理系统(CMS)工具了,发现Mambo挺好用的,试用了几天,建立了自己的翻译网站Wikan Translation - 维勘翻译,现将安装及使用简介分享给大家:Mambo
配置完成后,不知为什么系统管理员登录(administrator目录)出现了内部错误:

Internal Server Error


The server encountered an internal error or
misconfiguration and was unable to complete
your request.
谷歌了一下,才发现解决办法其实很简单,只需要将目录权限由775更改为755就可以了,真是神奇呀,看来还有很多内容需要学习与加强。


2009-07-14

转载:Unix-Center.Net需要您的帮助

Unix-Center.Net需要您的帮助

今天收到了unix-center.net发来的信件,觉得有必要告知一下大家,如果有能够提供帮助的,尽管伸出援手,谢谢。

...
我于2000年底硕士毕业之后,在美国工作了三年,
又在中国工作了六年。在过去的两年半中,这个系统烧掉了我大部分的工资和积蓄。购买各种服务器设备的费用,大概是70万人民币;北京赛尔机房的服务器托管和带宽费用,大概是每年30万人民币。(由于Unix-Center.Net对于推广我的雇主的操作系统有很大的帮助,我的雇主曾经在我的游说之下为Unix-Center.Net提供了半年的带宽费用。但是考虑到Unix-Center.Net同时提供其他种类的操作系统,我的雇主后来中止了对Unix-Center.Net的支持。)和我同年龄的人,现在大部分都有车有房了吧。而我最值钱的资产,是在保安严密的机房中的三个机柜。



我曾经和国家负责推广Linux和开源技术的机构取得联系,也曾经和某些教育部门取得联系,希望能够得到他们的支持。但是“有关部门”的负责人听取了我的陈述之后,不约而同地摇摇头,说:“你这个事情做得很好。很遗憾我们不能够给你提供任何帮助。”我也曾经考虑过将这个网站用商业化的模式来运作,但是这个公益性平台所服务的对象大部分是穷学生和穷教师,暂时并没有盈利的空间。并且,我自认为我是一个做事的人,而不是一个做生意的人。让我自己来运营一家公司的话,赚钱的可能性并不大。



中国是一个发展中国家,我们有很多教师、学生和工程人员希望能够学习Unix/Linux系统,却又苦于没有合适的环境和条件。Unix- Center.Net存在的目的,就是给这些爱好Unix/Linux的人一个学习和练习的条件。用一个简单的数据来说,到2009年6 月底,Unix-Center.Net的注册用户接近9 万人。我不知道这么多人都在这些服务器上做什么事情,但是我相信这些服务器对他们有用。譬如说,清华大学教授操作系统课程的一位教授告诉我说他让学生们到 Unix-Center.Net来对不同的操作系统进行比较。又譬如说,我收到中国科技大学一位博士生的电子邮件,说是他利用这些服务器完成了毕业论文中比较关键的一些计算。这些有限的证言,让我坚信这个系统是有其存在的意义的。尽管没有获得“有关部门”的支持,我从来都没有想过要放弃。



坦率地说,我现在遇到了一些困难。我所在的公司,在这次经济危机中被收购了。我不能够确定将来我是否还有能力将这个系统支持下去。但是我非常希望能够维持这个系统的运行,因为它确实对很多人有用。如果您也相信这一点的话,我希望您能够帮助我将这个系统维持下去。不管是10元、100元还是1000 元,对于Unix-Center.Net的用户来说都是莫大的帮助。



如果您在中国,您可以将您的捐款通过转帐支付给我的个人银行账号:



中国银行北京市分行清华园支行

蒋清野

4563-5101-0088-4741-228



招商银行北京市分行清华园支行

蒋清野

6226-0901-0156-8117



支付宝账户

13511026844



如果您在国外,您可以将您的捐款通过PayPal支付给我的个人账号(qjiang@ieee.org),或者是通过转帐支付到我在CitiBank的个人账号:



CitiBank

FDIC Routing #: 321171184

Account Name: Qingye Jiang

Account #: 40038862963

Debit Card #:5262-2519-8546-8207



我还恳请您在捐款之后给我发一封电子邮件(电子邮件地址qjiang@ieee.org),详细说明您的个人姓名以及捐款数目,以便我定期地整理和公布捐款情况。



如果您希望进一步了解关于我个人的情况,欢迎您访问我个人的博客http://www.qyjohn.net/



如果您希望进一步了解关于Unix-Center.Net的情况,欢迎您访问Unix-Center.Net的网站http://www.unix-center.net/?page_id=2



如果您愿意进一步帮助Unix-Center.Net,请您将这篇文章转贴到您认为合适的论坛、社区,或者是转发给您的同事和朋友。



这一件事情,纯粹是我的个人行为。但是我仍然希望我能够代表Unix-Center.Net的用户对您说一声:谢谢您的爱心,谢谢您的支持。



蒋清野

2009年7 月13日
祝愿Unix-Center.Net能够保持良好地发展,能够得到大家的有力支持,谢谢。

2009-07-10

susestudio使用及分享

正处于测试阶段的Novell susestudio已经可以构建SLE 11的Hard disk / USB image了,最近几天尝试一下,发现这个构造网站非常好用,而且非常重要的一点是可以不用登录就能够下载生成的安装文件,例如,我构造的一个SLED 11 KDE4的安装文件包opentiss_SLED_11_KDE_4.i686-0.1.0.oem.tar.gz(此链接的最新版本),大家就可以直接点击链接进行下载(注意,如果使用闪存盘安装这一Linux版本,至少需要4GB的闪存盘)。
首先介绍一下susestudio的基本功能(之前已经有一篇文章也简单介绍过了),如果要建立自己的一个appliance,首先需要选择一个模板,也就是基于哪个Novell suse的发行版本,主要的选择包括openSUSE 11.1系列(Just enough OS (JeOS)、Server、KDE 4 desktop、KDE 3 desktop等)、SUSE Linux Enterprise 10/11系列,再有就是在模板中要选择32位版本还是64位版本,最后命名你的appliance。新建完成之后,在软件选择中可以添加安装源,选择需要的软件,而且还可以上传rpm包或从链接上传rpm包(我的smplayer等软件就是直接从链接上传后添加的),如果存在依赖错误,也有相应的提示,补充需要的包即可。接下来就是进行系统配置了,第一项就是通用设置,如默认区域、时区,网络配置、防火墙及用户与组设置(可以添加自己的桌面用户、设置用户密码等)。第二项是定制系统的启动界面,第三项是设置启动的运行级别及授权文件(注意,授权在安装完系统启动后会让用户确认接受,在看完授权文件后,按q键就会出现询问你是否接受授权协议的提示,如果同意,按y回车即可)。第四项服务器设置,例如是否配置mysql数据库等(我这里就这一项内容)。第五项桌面配置,其中包括设置自动登录的账号及自动启动的程序等。第六项是存储和内存设置,主要是内存大小、虚拟磁盘大小以及是否启用大于4GB的扩展内存支持等。第七项设置客户脚本。配置完成以上各项后,下面就是上传用户文件了,如果没有,忽略即可。最后,一切准备就绪,就可以构建了(Build),这一步需要设置格式及版本号,设置完成后直接点击Build按钮构建即可。格式主要有以下几项:
Disk image (hard disk, USB stick)
Live CD/DVD (.iso)
VMware virtual machine
Xen virtual machine
版本号默认设置为0.0.1,用户可以自己进行更改。
那么这个oem disk image如何使用呢,其实很简单,下载完成后,只需要解压缩,得到一个raw文件,例如:
opentiss_SLED_11_KDE_4.i686-0.1.0.raw
然后将这一raw文件用dd命令写入闪存盘即可,例如:
dd if=opentiss_SLED_11_KDE_4.i686-0.1.0.raw of=/dev/sdb
注意:用户密码默认都是linux,有一个非root用户,用户名为tux。这些都是susestudio的默认设置。
参考资料:SUSE Studio - openSUSE


2009-07-08

Gmail转正了:20090708

Gmail终于转正了,真是千呼万唤始出来呀。
Gmail leaves beta, launches "Back to Beta" Labs feature
2009年7月7日 23:03
Posted by Keith Coleman, Gmail Product Director

We get asked all the time why Google keeps its products in beta for so long. And Gmail, five years after launch, is consistently a subject of this questioning, even of jokes.

Some people thought that once we opened sign-ups, Gmail should have come out of beta.

Others said that once we integrated chat, developed new anti-spam technology, expanded to 53 languages, shipped a mobile app, added group chat, launched an iPhone UI, added a vacation autoresponder, launched Gmail Labs, subsequently modified the vacation autoresponder with a Gmail Lab, launched 48 other Labs, launched video chat, enabled open protocols and APIs (POP, auto-forwarding, IMAP, and the Contacts Data API), let you POP mail in from other accounts, added a delete button, rearchitected our entire javascript code base, and added key functionality to get large companies, startups, universities, and many other organizations (in addition to Google itself) running on Gmail, we should have come out of beta.

Some people think we should wait until we launch < one of ongoing secret projects >.

Others say that, over the last five years, a beta culture has grown around web apps, such that the very meaning of "beta" is debatable. And rather than the packaged, stagnant software of decades past, we're moving to a world of rapid developmental cycles where products like Gmail continue to change indefinitely.

The end result (many visible and invisible changes later) is that today, beta is a thing of the past. Not just for Gmail, but for all of Google Apps — Gmail, Calendar, Docs, and Talk.

However, we realize that after five years, this leaves some of you wrestling with some tough questions. How will you ever get used to using Gmail without that familiar grey "BETA" text greeting you when you log in everyday? What example will you cite the next time you make an internet joke about perpetual betas? Don't despair... for those of you long-time Gmail-ers who might feel some separation anxiety, we've got a solution. Just go to Settings, click on Labs, turn on "Back to Beta," and it'll be like Gmail never left beta at all.



2009-06-28

新机遇新挑战:20090628

本月14日,一次似乎匆忙的决定,下月15日我就将加入到金融危机洪流中的再就业大军了。
回顾在公司这四年多的工作经历,似乎跟之前没多大改进,只是年薪名义上现在超过了80k而已,其他的工作能力基本没有多大增长。公司之前勉强是通过了CMM3认证,甚至在去年还信誓旦旦地要在当年年底通过CMMI5认证,但最终似乎无疾而终了。不过也好,这样倒可以保证认证的可信度,如果一个根本不把软件开发过程标准化放在心上的公司真的通过了CMMI5,那么真是民族软件的一大奇观了。当然,对于个人成长来讲,这其实是一个挺大的损失,本来在一个较大的软件公司供职,本可以学到项目管理方面挺多知识的,但最终真正学到并落实的竟是少得可怜,这样求职时就少了太多推销自己的资本了,虽然我是企业管理专业科班出身的学生,但没有较多有说服力的实践,只有自己切身总结出了一些个人想法,终归是无法真正创造价值的。
四年多来,我主要是研究OpenOffice.org的源代码,而且主要还是侧重于演示文稿(Impress)模块,C/C++的知识是巩固了不少,但纵观网上招聘的岗位,几乎没有这方面的需求,现在的主流似乎已经都偏重于Java语言了,前几天给一个老朋友打电话,想寻求他的一些指点与帮助,他更是告诉我,现在C#似乎是最火的语言了,让我在剩下的这几天多关注与学习一下,C/C++几乎已经没什么市场了,似乎只有一些老项目的维护及驱动开发还在用。
虽然我也对Linux兴趣很浓,但毕竟没有专门搞过相关的项目研发,如果真要做Linux下的C/C++开发又有诸多欠缺,而且所研究的主要是openSuSE系列,对其他发行版本关注与了解甚少。在Linux下主要做也都是Mediawiki服务器配置与维护、vsftp服务器配置与维护、shell简单脚本的书写等,并没有太多的技术含量,仅是一些兴趣爱好而已。
再说一下其他知识的积累吧。Java方面没有实际的项目经验,有的只是使用Eclipse给OpenOffice.org写了几个OfficeBean的示例小程序等,再有就是自己实际使用的openIDiary小软件的编程,现在这个小软件的功能简单,最终的jar包也不过才30多kb,毕竟也没什么大多的技术含量,功能只是简单的按天自动生成一个文本文件,在这个文本文件中记录一下每天的工作内容与想法等,虽然在sf.net上已经注册了这个小项目,但苦于没时间专门把这个小软件写好,甚至还没有勇气提交源代码与最终jar包(如果有需要或感兴趣,可下载试用:openJDiary)。最近参与了公司UOF转换器的一些工作,主要是进行测试,验证有无缺陷,然后查找原因予以解决,就用到了一些xlst方面的知识,顺便略微学习了一点点,这其中解决了一些问题,也提出了一些有建设性的想法,当然,还是主要集中在演示文稿方面,现在来看,这对自己知识的丰富有一定的作用。
其实针对未来的发展方向,我还有一些其他的想法。我爱人因为全球金融危机对外贸的影响,虽然是专业英语八级的商务英语专业毕业,但已经有很长一段时间在家待业了,我一直想利用她的聪明才智,两个人一块儿在业余时间做点事情,就是为开源事业做些文档翻译方面的工作,顺便也能有些额外的收入,但苦于没有比较良好的规划,一直未能实施,既然我马上就要离职了,也就有专门的时间了,如果能够夫妻合作做些事情,也应该是会有些收入的,起码可以在经济向好之前做些知识的积累与能力的储备,到合适的时候,可以谋求更好的发展。当然,如果能够利用网络资源做些商业活动,也许能够有比较可观的收入,也就不必整天给别人打工了,那样也应该是不错的一件事情。
无论如何,不断努力,希望明天更美好吧。

2009-06-10

值得纪念的日子:20090610

就啥也不说了:遇上你是我们的缘,信任相守到永远;愿心想事成、平平安安,天天在一个碗里吃饭。

2009-06-05

世界环境日:20090605

新华网专题世界环境日:你的星球需要你前言:

又到6月5日世界环境日,今年的主题可以用几个关键词表述:气候、联合、行动。但戏剧的是,在世界环境日之时,联合国2009年第二次气候变化国际谈判却向
人们传递出另外几个关键词:瓶颈、博弈、较量。翻看世界环境日历年的主题,如果用一个词归纳,那就是:责任ff。作为地球的主人,环保正是我们的责任。如果人
们能把利益淡化,博弈、较量也许就会转向联合、行动,今天是世界环境日,让我们为地球做一点事吧。

下班后回到家,边吃饭边看电视,纪实频道的专题节目也在讲这个主题,告诫大家不要吃鱼翅,这样可以少捕杀鲨鱼,保护生态平衡等等。其实今天最大的一件事情是上海下了暴雨、冰雹,下午上班时跟同事在窗前观看时,竟然有一个大冰雹直接打在了玻璃窗的铝合金框上,个头接近一厘米。联系到前天死了二十七人之多的豫皖飑线,简直就是地球在向人类发出严正的声讨:你们这些人类呀,老实点吧,你的小腚就要不保了。随之而来的就是农业受灾,虽然咱们国家现在不缺粮,可面对那么大的人口基数和世界性的气候异常,有谁敢说粮食将来不会成为问题呢?如果大家能够做些力所能及的事情,请大家珍爱生命、保护环境,劝大家少吸烟,这样也有利于身体健康。
还有个不幸的消息就是央视新闻联播中大家最喜爱的男播音员去世了,其病因就是癌症,而大家知道,这一类病症有很大一部分原因是环境变化引起的,这又从另外一个侧面告诫大家,一定要时时刻刻不忘环境保护,没了可持续发展的环境,留给人类的只有世界末日--死路一条。

2009-05-25

Use google docs to publish my blogger: 20090525

OK. I use google docs to publish my blogger.
My wiki is update the article OpenOffice.org.
If publish is OK, you will read this article.
Good luck to us.

2009-05-02

sle离线升级包的查询与下载:20090502

最近比较频繁地升级SLED 11,将相应的一些基本方法记录一下,以供大家参考。
首先,如果只是查询离线升级包的信息,可以不登录进入Customer Center,直接进入Downloads页面,选择patches->Patch Finder进行查询,如下图所示:
Novell SLE patch finder
如果要下载SLE产品的离线升级包,请先登录再进行查询与下载(Login to access Premium and restricted files. )。
查询的选项有产品(Select a product)、版本(All Versions)、CPU架构(Any Architecture)等可供选择,还可输入关键字(Keywords (optional))进行直接查询,如下图所示:
Novell SLE patch finder
选择必要的过滤条件后,可以得到类似下图所示的查询结果页面:
Novell SLE patch finder
注意其中的提示(Icon Legend),即:
Icon Legend
其中,如果升级包被标记为“Restricted Patch”,免费注册用户是无法下载到的。其它的都可以下载rpm文件安装到需要的机器上。
点击查询结果,进入详细说明与下载页面,您可以获取详尽的升级包信息,如下图所示:
Novell SLE patch finder: yast ...
点击“proceed to download”可以下载升级包文件,同时,您可以查询到相应rpm文件的md5sum信息,如下图所示:
Novell SLE patch finder: yast ...
Novell SLE patch finder: yast ...
总之,只要你下载安装并激活了Novell SLE产品(包括免费评估),你就可以查询与下载升级包了,当然,您通过yast在线升级功能也可以在线获取并安装升级包,此处讨论的是当您有不止一台同类型的SLE部署机器时,为节省下载带宽与时间而离线升级的情况,这种方法尤其在部署了SLE产品的机器不能连接互联网的情况下更为必需,另外,如果您经常重新安装系统或安装SLE产品到多台电脑,此方法也很实用,省去了重复联网更新的宝贵等待时间。

2009-04-24

SLE/Eclipse/openJDiary

昨天晚上整理了一下SLED 11的升级包,但到libpcap时,不能直接下载了,还是报权限不够的错误,今天研究了一下,发现其实很简单,刚推出的升级包被标记为“Restricted Patch”,是受限制的,只能通过在线升级来升级,如果超过一定天数的,会被标记为“Unlocked Accessible File”,只有这样的升级包才能从Novell网站下载,然后离线安装。所以,大家只能等升级包发布后几天再下载并离线安装了。
一直用Eclipse写Wiki,没有太多用来学习其他的工具,今天下午适逢每周五的例行技术交流时间,也是制定这一制度以来的第一次技术交流,一个东北小伙讲了一下MyEclipse+Struts+Hibernate的基本使用方法,感觉确实应该好好多学习一下了。
现在我主要用Eclipse编写一个小软件openJDiary,遇到的一个技术问题是,想取得jar包所在的路径,当然,如果jar包是在当前工作目录,直接用System.getProperty("user.dir")就可以了。但如果不在jar包所在的目录调用,就不管用了,谷歌了一下,也没找到合适的办法,所以我自己想了个办法获取jar包所在的路径,仅供大家参考:
File tmpf = new File(System.getProperty("java.class.path"));
tmpf = new File(tmpf.getCanonicalPath());
String Root = tmpf.getParent();

字符串Root即是获取的jar包所在的路径了。

2009-04-21

Sun raising

Oracle to Buy Sun
今天从OpenOffice.org Planet文章Oracle to buy Sun上获悉在IBM收购Sun未果后,Oracle与Sun达成了收购意向,文章说:
Well, I always believed that Sun would be able to survive without being bought by another company.

We have great products, hardware as well as software, and we only have done poorly in making money with the products, or with service contracts for our (open source) software products...

Now it seems I will never figure it out, since Oracle will by Sun.

We have just been informed about this some hours ago, and its in all news now.

Right now, I don't know enough about Oracle to make me a picture whether or not this is (for me) better than IBM buying us. IBM is interested in OpenOffice.org, so probably also in Sun's OOo team here in Hamburg.

What about Oracle?

不论如何,我觉得总比之前传言的DELL会收购Sun要好,毕竟Oracle跟IBM一样是技术类公司,而DELL则基本跟Lenovo差不多,属于贸工技工厂,没什么技术含量,期望Sun背靠Oracle能够多多making money,也期望MySQL、OpenOffice.org等开源软件能够因此受益,这就要看Oracle的智慧了,祝Sun每天照常升起。

前些日子安装了SLED 11后,一直没怎么安装eclipse的最新版本,这几天就找机会折腾了一下,参考一些网上的资料,如使用 Equinox p2 简化 Eclipse 插件的安装,终于把plog4u、WTP、PDT、CDT等安装妥当了,其中WTP、PDT采用了安装在Eclipse V3.4.2的 dropins 文件夹中的方式,plog4u则采用了传统的方式,安装在Eclipse的features与plugins目录了,CDT不能采用以前两种方式,除了在线升级安装,只能下载了CDT的zip文件后离线安装了,在SLED 11中安装时,不是每次都能成功,我就先安装三部分中的一部分,分三次安装成功的,先安装CDT Main Features,再安装CDT Optional Features,最后安装未分类的CDT插件。相关内容可参考我的Wikitiss条目Eclipse,Wikitiss条目均采用plog4u插件上传至网站。

最近提交至OpenOffice.org的patch issue有Issue 99867Issue 100179Issue 100307Issue 100825,一般像我这样的OOo爱好者提交的issue官方处理得比较缓慢,所以不要期望很快能够进入代码主干,但还是期望广大OOo爱好者能够多多使用、反馈,让开源软件能够更好地为开源爱好者们服务。

不知道为什么,现在已经不能正常从Novell网站下载SLED 11的升级包了,在线更新可用,但下载rpm包就报错:
Novell Downloads
Error: we are unable to complete the download at this time. Please try submitting your download request again or try again later.
You do not have the correct privileges to download the file.

我看了一下下载的SLES 11升级包,好像大小与SLED 11的一个字节也不差,为了保险起见,我还做了md5sum检验(跟/var/cache/zypp/packages/nu_novell_com:SLED11-Updates/rpm中有缓存的文件进行比较),结果也是一样的,看来只要用下载到的SLES 11升级包就差不多,等有空去单位的机器上做个测试,安装一下这些rpm包,如果没什么问题,也就没有必要相同的内容下载两份了。

2009-04-01

Google推出用户兴趣定位广告,本网站采用了AdSense的相关广告,请注意保护你的隐私

接Google的相关邮件通知,Google推出用户兴趣定位广告:
您好!

谨在此通知您,Google 即将推出针对用户兴趣投放广告的服务,为此请查看一下您网站的隐私政策并进行任何必要的修改。此外,您还会在“帐户设置”页上看到一些新的选项。

通过投放针对用户兴趣的广告,广告客户不仅可以根据以前与用户互动的方式(例如用户对其网站的访问)来展示广告,还可以根据用户的兴趣爱好(例如“运动爱好者”)来吸引他们。为了了解兴趣类别,我们会识别用户访问的 Google 内容联盟网络网页的类型。例如,如果用户访问了大量体育类网页,我们就会把他们添加到“运动爱好者”的兴趣类别中。要了解您的相关帐户设置的更多信息,请访问 AdSense 帮助中心的以下文章:http://www.google.com/adsense/support/bin/topic.py?topic=20310&hl=zh_CN

为了保证您能使用此项服务,您可能需要修改隐私政策,告知用户您在网站上投放了针对用户兴趣的广告。有关更新隐私政策的详情,请访问 https://www.google.com/adsense/support/bin/answer.py?answer=100557&hl=zh_CN,并确保于 2009 年 4 月 8 日之前对您网站的隐私政策进行任何必要的修改。由于发布商网站以及各个国家/地区的法律都各不相同,因此我们无法提供具体的隐私政策用语建议。

要详细了解针对用户兴趣的广告,您还可以访问 AdSense 中文博客,网址为:http://adsense.googlechinablog.com/2009/03/blog-post_12.html

非常感谢您的参与以及对这项即将推出的增强服务的大力支持。

此致

Google AdSense 小组敬上

电子邮件首选项:我们向您发送这封要求您必须阅读的电子邮件服务通告,目的是让您了解 AdSense 产品或帐户的重大变化。

Google Inc.
1600 Amphitheatre Parkway
Mountain View, CA 94043

本网站采用了Google AdSense的相关广告,请注意保护您的隐私。谨此通知。
提示:投放了Google AdSense广告的网站:Wikitissopentiss's Blog

2009-03-27

SLES11安装感想

您敢想像在一台仅有392MB内存的PIII 650机器上安装服务器操作系统么?回答是一切皆有可能,这就是Novell最新推出的SLES 11,今天晚上,我在我的这台老机器上成功安装了SLES 11,准备用其做个人学习用Web服务器、文件服务器、svn服务器、OpenOffice.org编译服务器等。
我的这台主机配备的是一块120GB的西部数据硬盘,还有一块40GB的硬盘做为后备数据存储硬盘。现在正在安装,因为主机CPU主频实在太低,整个安装过程大概需要一个多小时,不过,能够充分利用这台一个朋友赠送的机器,我还是很兴奋的。
因为我的120GB硬盘已经存在硬件故障,经过将近二十四小时的折腾,终于在原来的40GB硬盘上顺利安装成功了SLES 11,因为老婆生病了,我需要照顾她(做饭、陪打扑克等),没时间多做试验了,不过,来日方长嘛。
针对有网友咨询60天评估期后的更新问题,做为个人学习之用,我觉得基本也够用了。我现在的想法是这样的,我在Novell有三个注册账号,针对SLED 11,我是先注册一台机器(我家里共有三台机器),通过这一注册,手工下载rpm更新包(Novell会及时发邮件通知您更新的),用rpm命令安装更新,我这台机器与ThinkPad X60就都能更新了,过期后,我再通过X60激活一个账号,同样方法再延长一个更新周期(SLED一般为180天一个评估周期,60天期满后会自动延长一两个评估期的)。我觉得SLES 11也应该能够使用类似的方法获得更新包。以前想法仅供参考,如有不当,请相关权利人指正,我会做相应更正,谢谢。

2009-03-09

开心的一天:20090309

今天一打开谷歌邮箱,就发现The SUSE Studio Team给我发来了参与SUSE Studio Alpha Test的邀请:
Thank you for your interest in SUSE Studio, a new service that makes
it quick and easy to create and test software appliances from your web
browser. We are pleased to invite you to try the alpha version of
SUSE Studio.

To accept this invitation and take SUSE Studio for a spin, please
visit this link:

http://susestudio.com/account/invitation?token=n***************

Alternatively you can go to http://susestudio.com/account/invitation and manually
enter your invitation code there. Your invitation code is:

n***************

We hope that you will enjoy using SUSE Studio. If you encounter bugs,
have general feedback or want to discuss SUSE Studio you can reach us
at feedback@susestudio.com.

Have fun using SUSE Studio!

Best Regards,
The SUSE Studio Team

哈哈,真是功夫不负有心人呀,这可是我2008年9月3日申请的,已经半年多了。在单位只是接受了一下邀请,今天晚上一回到家,我就登录体验一下了。用Mozilla Firefox刚一登录,主菜单显示:
My Appliances > Select template

提示:
Create a new appliance from a template

The templates below are minimal systems that contain only the basics you need to get started. Select the template that best matches your needs.

看来需要选择一个模板,openSUSE 11.1有如下六个模板可供选择:
openSUSE 11.1, Text Only
openSUSE 11.1, Minimal X
openSUSE 11.1, KDE 3
openSUSE 11.1, KDE 4
openSUSE 11.1, GNOME
openSUSE 11.1, JeOS

作为KDE 4的爱好者,我当然选择openSUSE 11.1, KDE 4了 :-)
初始情况下,我的空间使用情况如下:
You are currently using 0MB (0%) of your 15GB.

还是比较充足的,就是不知道这个空间是如何让我利用的,那就看看下面操作的结果吧(My Appliances > Appliance Editor):
* Disk image
* based on openSUSE 11.1
* Used space: 1.91 GB
* Download size: 503 MB
* 3 patterns selected
* 17 packages selected
* 402 total packages

一下子就用了近2GB的空间,看来15GB也不是那么太多嘛。
Welcome to SUSE Studio!

Configure your appliance using the tabs above.

When you're finally done making everything the way you want, visit the Build tab to generate your appliance.

But first, give your appliance a name! It will be used in the boot screen, and in several other places.

我的Appliance nameopentiss's openSUSE 11.1, KDE 4
Appliance Editor共有五个标签页:
* Start
* Software
* Configuration
* Overlay files
* Build

在最后的Build标签页Create appliance就行了,哈哈,我的第一个版本(Version (?): Create appliance)压缩后空间为553 MB。生成的过程分为Installing software、Copying filesystem into appliance、Running build、Compressing appliance、Saving finished appliance等,总共用过5分14秒,速度挺快的。最后在页面底部系统提示:
Builds older than seven days may be deleted to free up space on our servers — but don‘t worry; you can rebuild them at any time.

我定制的这个KDE 4系统占用空间1.2 GB(413 MB zipped),准备明天去公司下载下来,用于制作Live USB系统了。
今天从Planet SUSE获悉:New KDE Four Live-CDs,在公司下载了一个,准备留做应急系统盘了。
今天真的不错,获得了一个这么宝贵的邀请,今后就不用在家里弄Live USB了,如果大家有需要帮忙的,可以联系我,SUSE Studio除了提供Live USB格式外,还提供CD/DVD ISO格式。

2009-02-27

近期开源学习心得总结:20090227

过了个春节,回家结婚了,一共连续休了二十几天的假,2月9日才坐火车回到上海,一直没时间记录更新自己的学习心得,今天才抽空写一写。
先说说KDE 4.1 live CD吧,在公司机器严重老化,Windows系统时时出现故障时,我一直把它当应急盘来用,这不,这周二吧,一个同事在新购进的机器上安装软件,也不知道是遇到什么问题了,这个所谓的萝卜家园的Windows XP好像不能满足他们的要求,从我这里拿了WIndows XP SP3的补订包,结果安装完成后重启就进不了系统了,这种给人家擦屁股的事情总少不了要找我的,我只好上网搜索解决办法。问题是这样的,一登录Windows XP,提示说“一个问题阻止Windows正确检查此机器的许可证。错误代码:0x80070002”之类的,谷歌了一下,说是安装了SP3的补订包,导致缺失文件了,可以在安全模式下复制相应的文件到windows\system32目录去,可惜的是,这台机器连安全模式也进不去,我当然就想到了我预备的应急盘了,我先用KDE 4.1 live CD启动机器,然后通过yast挂载Windows XP的安装盘,把缺失的四个文件复制到相应的位置,还好,一切顺利,给这位同事解决了问题。以下是四个缺失的文件及其来源(均来自Windows XP安装盘i386目录下):
PIDGEN.DLL
dpcdll.dll(源文件为DPCDLL.DL_,需要通过7-zip解压缩得到)
licwmi.dll(源文件为LICWMI.DL_,需要通过7-zip解压缩得到)
oembios.bin(源文件为OEMBIOS.BI_,需要通过7-zip解压缩得到)
下面一件关于openSuSE社区的事情似乎就比较令人失落了,Ben Kevan : Feb 24, 14:28 : Novell to layoff openSUSE Personnel。怎么也没想到会发生这种事情,原本还盼望着能早点出个openSuSE 11.2的版本呢,一直也没有动静,因为去年十二月份发布11.1时已经草拟过一个openSuSE 11.2版本路线图的,前些日子就应该出版本的,现在看来充满太多变数了,Novell说少于一百人(Joe Brockmeier : Feb 25, 19:29 : Addressing the layoffs),但外界说多于一百人,总之期望这次裁员不要太影响openSuSE社区的正常运作,祝openSuSE顺利发展。
These current financial times have hit Novell as Novell announced today that another round of layoff’s will affect some openSUSE contributors. However, they reiterate the point that they are fully committed to openSUSE development.

openSUSE board members Pascal Blesser and Bryen Yunashko announced the lay offs.”As you may know, recently Novell made the decision to reduce the workforce in their organization in the wake of our current economic outlook which is affecting everyone globally in all sectors of life,” they wrote, “Unfortunately, this has also impacted some members of the openSUSE Community who were employed by Novell when, earlier this week, they were laid off.”

Still can’t wait for openSUSE 11.2..


不过,做为SuSE的爱好者,还是有好消息值得庆祝的:
SUSE Linux Enterprise in the Americas : Feb 25, 02:11 : SUSE Linux Enterprise 11 Sneak Preview is Live!

SUSE Linux Enterprise 11 delivers interoperability and mission-critical support for your complete computing environment—desktop to data center, physical and virtual. Get your Sneak Preview today and see how it can help you reduce cost, complexity and risk.

Get yours today!

我几乎在第一时间就下载了,不过我是昨天晚上才安装上的,现在我就是用SLED 11预览版发布博客文章的,总体感觉不错,桌面默认安装的是Gnome 2.24,作为KDE的爱好者,我又选择安装了KDE 4.1.3,并且昨天晚上费了点劲儿才弄成默认KDE登录。内核版本为2.6.27.15-2,今天openSuSE 11.1内核已经发布了2.6.27.19-3的升级包,不知道正式版的SLED 11是否也会做相应的升级。先说一个软件吧,k3b在我的机器上能够正确检测光盘并刻录了,就冲这一点儿,我也短期内不会再回到openSuSE 11.1了,实用为先嘛,我可能还要用kdenlive把春节回家结婚的录像编辑整理一下,再重新刻录一张DVD,这刻录也只能用SLED 11上的k3b了。
今天晚上还安装了smplayer等软件,现在正在用smplayer播放Vitas的音乐给老婆听,没办法,她非得让我跟她早点休息,可我还想着早些把这段时间的一些有意义的信息记录下来,就只好放她喜欢的音乐,让她好能安静地让我写东西了。
哦,对了,还有一件事情要向大家报告一下,不知道前几天谁点击了一下我网站上的谷歌广告,竟然一下子收到了$0.24的广告费,真是一笔不菲的收入呀,先谢谢抽时间浏览我网页的网友了,非常感谢你们的支持,我会尽量发布些有意义的内容到网站上来的,也算是不辜负大家对我的支持了。
祝愿大家天天有个好心情,祝愿开源软件明天会更好。

2009-01-15

写在即将登记结婚休假之际:20090115

买好了17号下午六点的汽车票,准备明天登记结婚后回家完婚休假了,下个月9号后见了。
非常幸运还能给大家一个最新OpenOffice.org 3.0.1 m15的开发版安装程序,请至opentiss.net/ooo下载试用(官方版本在以下网址可以下载:http://ftp5.gwdg.de/pub/openoffice/extended/3.0.1rc2/)。
祝大家春节快乐,万事如意。