Category: 小小草

IT 技术领域学海无涯。其实任何领域都学海无涯,无非 IT 发展太快了,让我有更多嘘唏。希望我掌握的技术有如小小草,虽然渺小,却有旺盛的生命力。

  • 开源ERP软件的比较

    如何选择适合自己的ERP软件?这个问题困扰我好久。老板一直承认ERP很重要,但就是没有预算做一个ERP project。这倒也好,我有了很充足的一段时间到处试用各种ERP软件,迄今已经颇有心得。这里说说十个开源ERP软件,因为ERP软件的选择已经够多了,不开源的ERP软件我基本不考虑。

    1. 首先要说说compiere和adempiere。我也不能免俗,因为现在一说到ERP,闭源世界里的大哥大是SAP,开源世界里的大哥大似乎就是compiere。我水平有限,一年多以前我就想装一个compiere来试用,但就是装不成功,我就觉得compiere太复杂,后来一直没敢再碰。最近看到一个排名,列了25个最受欢迎的开源软件(不限于ERP),adempiere作为一个ERP软件,排名第三,不容易啊。adempiere是在compiere基础上开发的,这又引起了我的兴趣。于是下载来,费了点周折,花了两天时间,总算装成功了。我一开始没完整阅读安装说明,其实安装并不难。用了一小时adempiere,实在没有兴趣再用下去。因为
      1. adempiere的业务逻辑实在太复杂,我理解不了。比如我想新建一个产品,把它入库或者上架销售,怎么也找不到这个流程。
      2. adempiere的网店功能几乎空白,只有一个店壳。
      3. adempiere没有contact management,甚至连个contact都没有,我只找到client,或是business partner,或是staff。
    2. 接下来要说OpenTaps。它也列在25项开源软件之一,排名23。OpenTaps是目前我最看得上的ERP软件,喜欢上的理由也很简单。因为
      1. 下载1.0.0-preview7下来有349M,功能肯定很齐全,不用我再东找西找找插件了。不过我觉得有点奇怪,一年多前我下载的0.9.2版只有60M,差距如此之大。
      2. OpenTaps是在ofBiz基础上开发的,ofBiz是Apache Foundation的一个project。Apache是让我心旷神怡的open source product,爱屋及乌就到了OpenTaps。
      3. OpenTaps支持而且推荐使用MySQL。
      4. OpenTaps的安装过程也令人惊喜。我在安装adempiere时设置http port: 880, https port 8443,但半途碰到了一些困难,一时解决不了,就转而去装OpenTaps。OpenTaps的安装超简单,一解压就行,还没怎么设置,结果http://localhost:880和https://localhost:8443上竟然没出现adempiere而出现了OpenTaps。
      5. OpenTaps有我想要的contact management。
      6. OpenTaps很注重网店功能,自带的demo shop功能很完整。
    3. postbooks/openMFG/xTuple ERP。名称上就让我很困扰,哪个是哪个啊?唉,不管那么多,下了试用先。安装倒很省心,只是postbooks的contact management无法列示contact recent activities。这个功能是我必需的,所以postbooks还没热身就被我卸了。
    4. openbravo。开源ERP软件琳琅满目,本来openbravo没引起我注意,但后来我搜索MVC+ERP,各种结果都指向openbravo,看在MVC的份上,我试着安装openbravo,发现openbravo安装时的问题特别多,最后还卡在那里,实在折腾不了。我怀疑是数据库环节出现问题,但openbravo只支持oracle和postgres,我知之甚少,只能放弃。
    5. SugarCRM。其实SugarCRM有很多ERP的功能,自称为CRM有点委屈自己。SugarCRM曾评为linux平台下的十大杰作之一,功能和稳定性是有目共睹的,SugarCRM也能在Windows下运行。但SugarCRM只想做个CRM增强版,我不能指望它涵盖ERP的全部功能。
    6. Hipergate。安装也是困难重重,装好以后仍无法登录Demo,换句话说,Hipergate还没真正露脸给我。
    7. WebERP。跟SugarCRM的自谦正好相反,WebERP只能作accounting软件,自称ERP让人觉得有点上当的感觉。因为功能单一,安装和使用也很简单,如果只是寻求accounting功能,WebERP不妨做个候选。
    8. Tiny ERP。如名字所述,太tiny了。
    9. CK-ERP。要求装在Linux下,我没试过,不过看了简介,CK-ERP只是多个开源软件的连接件,没有核心,这跟ERP逻辑背道而驰啊。CK-ERP想整合的都是各个领域有众多用户的开源软件,CK-ERP是否好用完全取决于整合程度。但我对之没有信心,因为CK-ERP开发团队没有给我这个信心。
    10. erp5。也要装下Linux下,没用过。714M的安装文件啊,让人想入非非。

    每个开源ERP软件都说要让SME用得起ERP。看看SME的定义,500名雇员以下的都是SME(SME的定义很多,按人数来定比较简单)。1-500雇员的企业实施ERP区别很大,Tiny ERP不太适用于3人以上的企业,OpenTaps完全适用于1-500人的企业,50人以下的企业不太玩得转compiere/adempiere,openbravo,Hipergate。500人以上的大企业要玩ERP,因为大企业有足够的财力做二次开发,OpenTaps相比compiere/adempiere,openbravo,Hipergate没有特别的优势,当然我也拒绝承认OpenTaps在大企业竞争不过compiere/adempiere,openbravo,Hipergate。

    我承认上述结论有偏颇,因为我完全站在我的需求评价这些开源ERP:我们公司正从Act/Sage Line 50转型中,老板又是目光短浅,总是想零二次开发。然而,请您别指望这个问题有个大众化的结论,因为ERP不能以机械化大生产模式实施,每个公司都是个例,我只能站在我自己的角度说问题。

  • 让环境变量生效不需重启Windows

    很多安装程序在安装完成后并不要求重启Windows,而新的环境变量已经生效了,可见在不重启Windows的情况下让环境变量生效是完全可行的。

    可我搜索如何不需重启Windows让环境变量生效的方法,只找到三类方案:

    1. 下载一个专门的软件
    2. 编个小程序
    3. 修改注册表

    我既然是个懒得重启Windows的人,难道我会不厌其烦按上述三种方法去做吗?没办法,我只有自己摸索。最后找到一个非常简单的在Windows下直接让环境变量生效的办法:

    先到我的电脑>属性>高级>环境变量,添加新环境变量或修改已有的环境变量,然后运行“DOS命令提示符”或run cmd,假设要修改PATH变量,不管PATH的原值是什么,在DOS窗口直接把PATH修改为任意值,关闭DOS窗口,这时,我的电脑>属性>高级>环境变量里PATH已经在Windows全局生效了。

    不用担心在DOS窗口的修改会影响我的电脑>属性>高级>环境变量里的修改,DOS窗口的环境变量只是Windows环境变量的一个副本,副本的改动不会影响正本,但会触发正本的刷新,这正是我想要的——让环境变量生效。

    附注:

    不懂在DOS下修改环境变量?简单得很,如要修改PATH,“SET PATH=C:\”,等号两边不要有空格。PATH环境变量最常用,专门有个DOS命令PATH,用来查看和修改PATH值,这里就不展开讲PATH的语法了。

    想验证一下环境变量到底有没有生效?简单得很,新开一个DOS窗口,如要看PATH值,“ECHO %PATH%”。同上,PATH还可以用PATH命令来查看。

  • WP Shopping Cart Not Support utf-8

    Recommended by WordPress, I installed one of business blogging plugin – WP Shopping Cart. Although I don’t think it’s a good idea to sell anything on this blog, I wanna try the plugin by categorising under WP Shopping Cart my investigation to hundred brands in Bicester Village.

    To my disappointment, this plugin (ver 3.6 beta 7) does not support utf-8. I have to leave the plugin there. I don’t wanna do modification to this plugin by myself.

  • Why Google Analytics Tracking Code Was Not Included In Source Code?

    这个博客从一开始就装了Google Analytics for WordPress,但我在前台页面的源代码里总看不到tracking code,我为解决这个问题陆陆续续花了不少时间找原因,把plugin反复deactivate and activate,甚至卸载plugin再重装、切换theme,都没见source code 包含任何analytics的字眼。

    我在wordpress.org寻求前人的经验,也有人说Google Analytics for WordPress这个plugin无法工作。他最后是放弃了Google Analytics for WordPress,还推荐了另一个google analytics plugin叫sem google analytics。但是我见Google Analytics for WordPress功能远比sem google analytics强大,不舍得放弃。

    试装sem google analytics后,我查看了前台页面的源代码,代码里有一行注释,说sem google analytics不追踪admin登录状态。一语惊醒梦中人!同理,我的Google Analytics for WordPress一直就是正常工作着的,只是我一直在admin登录状态去查看源代码,也就无法看到tracking code,但Google Analytics for WordPress一直没给任何提示说明这一点,导致我瞎折腾,这是Google Analytics for WordPress做得不够好的地方。

    花了很多时间,总算搞明白一个粗显的道理:Google Analytics for WordPress不追踪admin登录状态

  • .png在IE5.5和IE6中的透明背景问题

    IE5.5和IE6中,不能正确处理.png图片的透明背景,该透明的地方变成了灰色。微软有篇文章PNG Files Do Not Show Transparency in Internet Explorer,介绍用IE才能识别的滤镜效果对付这个IE bug。

    如果想更多地了解.png问题,我推荐The PNG problem in Windows Internet Explorer。我从中了解到了.png和.gif尽管都可以做出透明背景,两者的区别是.png可以多色透明,.gif只能单色透明。

  • Outlook Express不能正常发信

    同事的一台计算机发送带附件的邮件时,进行到100%以后,会出现一个错误,对话框中没有错误号,也没有错误描述,但确实有错误,那邮件滞留在outbox里,不肯移到sent items(但邮件能发送出去,对方能收到)。
    对这种莫名其妙的错误,我通常不会去找原因(windows的老年病,也不太可能找到原因),也不会去医治它(太费时间)。既然outlook express发不了邮件,换个软件发不就可以了?各种邮件软件都用一遍,如果全染病了,那只有整个windows重装一下。

    可是,我们另外有个contact management system叫Act,虽然act工作起来错误百出,但新系统还没调试完成,Act还得继续工作,而Act非得跟outlook express才能一起工作,这样就逼得我只有医好outlook express不能发送带附件邮件的毛病(如果不想重装windows的话)。

    因为实在不知道毛病在哪里,我只好乱试一通:

    1. delete outbox.dbx,outlook express启动时会自动重建一个outbox.dbx – 毛病依旧;
    2. 移动outlook express的存储目录到新地方,让outlook express重建所有.dbx文件,然后再导入所有收件箱和已发送邮件 – 毛病依旧;
    3. 创建一个全新的windows user account,把邮件从老帐号导入到新帐号 – 毛病依旧;
    4. 在注册表里更改MTU的dword(这是microsoft support库中一篇文章教的方法) – 毛病依旧;
    5. disable firewall – 毛病依旧。那台机子用的是norton internet security,norton给我的感觉是经常自做主张更改设置,比如,如果网页里含有norton认为是电话号码的地方,norton会在那里插一面国旗和一个电话的小图标;如果网页里有javascript function name里含有ad,如adjust() {},norton会删掉所有javascript代码,而且不给任何提示。因为我对norton印象不佳,所以这次不能怪我滥杀无辜。
    6. system restore to a previous date when outlook express was working properly – 毛病依旧;
    7. uninstall outlook express, then reinstall outlook express – Wow! Finally I solved the problem!

    谢天谢地,如果刚才最后一招不灵,第8招只有重装windows了。

  • wordpress title不见了

    昨天在公司的blog上做搜索引擎优化,做到后来既然把blog homepage的title弄没了,一时没找到原因。

    今天在这个自己的blog上只想要添加一个analytics,我用的是google analytics for wordpress plugin 2.0,当我把track帐号输入以后,发现title又一次消失了。title的消失是不是由这个plugin引起的?这有待进一步试验。可现在头痛的问题是:无论我删除了track account,还是deactivate plugin,title还是不回来。难道我错怪google analytics for wordpress plugin?

  • wordpress在不同域名间的迁移

    忙乎了一天终于把这个blog从另外一个域名、另外一个服务器迁移过来了。迁移的过程是比较痛苦的,因为我一开始把迁移想得太简单了。这怪我想当然,前几天wordpress版本升级给我的印象太方便了,只要把文件一股脑上传就可以,因此我以为迁移也只要把文件一股脑拷贝、数据一股脑导出再导入就可以啦。

    我一股脑做好迁移以后,敲入新网址,满怀信心期待出现的页面没出现,确切地说是一片空白(我原以为最糟的情况也就是出现带有一些broken links的页面再作调整)。费了好久才查出是memory_limit值太低,这时我已经把wordpress那几个table的数据 delete/import了好几个来回了。

    虽然这次迁移费了点时间,但总算有了经验:不要相信那些所谓wordpress data migration插件,甚至连wordpress内置的export/import也不好用(export/import仅适用于给数据做备份和恢复)。wordpress(2.3.1版)内置的export/import至少有以下缺点:

    1. 不能自动转换域名
    2. 不能自动转换document root
    3. 不能导入option
    4. import采用web upload,自然文件大小受到upload_max_filesize限制。
    5. import后个别category出现了两次(原因不明)
    6. manage uploads丢失了thumbnails的链接

    我认为最好的办法是,把原数据库里的数据导出成sql格式,用文本编辑器在这个sql文件里做两次查找和替换,新老域名和新旧document root各做一次(文本格式就是好啊,给人一种看得见摸得着的感觉,踏实)。然后在新数据库导入这个sql文件就可以。只要网站的directory structure保持不变,我相信这就是wordpress blog迁移要做的全部工作。

  • 发现一个wordpress不够体贴的地方

    熟悉以后才知道它/他/她的缺点,这就是为什么离婚总是发生在结婚后。

    我在了解wordpress的过程遇到这么点小麻烦:custom permalink structure为/%post_id%/%postname%/(其实seo并非非得这么设置,但这个设置是我们价值£750每月的引擎优化专家推荐的,姑且采用)。

    我事先知道这个blog所在的服务器目前没加载mod_rewrite,因为这不是我的独立服务器,所以我并不能想加载什么模块就可以加载的。但我暂时不想为了贪图mod_rewrite就把blog转移到另一个服务器,至少在这个blog正式上市之前不想。保持一个主服务器在美国,一个大副服务器在德国,以后再弄一个二副服务器在英国当地,或者把大副二副换一换,这是我理想中的格局,不把鸡蛋放一个篮子里嘛。

    但我有个毛病,明知不可为而为之,就是想看看什么后果。结果我知道了:后果很严重。一旦修改了permalink,wordpress就自动生成一个.htaccess,不管服务器是否支持,也不管blog是否真的需要这个.htaccess。由于服务器没有加载mod_rewrite,所以发生500 server error。于是我删掉了.htaccess,然后在后台想把permalink改回Default,wordpress不够体贴的地方就暴露出来了:只要一提交permalink的值,不管这个新值是什么,wordpress就自动生成.htaccess,这样我的服务器马上就500,php肯定就中止执行了,数据库就无法更新了。这个鸡先生蛋、还是蛋先生鸡的问题,我最后是直接操纵数据库才解决的(wordpress的数据库结构还是挺清晰的,我没看什么资料,凭着直觉找到wp_options table,再找到permalink_structure,删掉option_value就可以了)。

    说了一个wordpress的缺点,作为补偿,我再说一个我感觉到的体贴,总是在细致之处。当初安装wordpress,ftp原码以后,installation要求把wp-config-smaple.php改名为wp-config.php,虽然改名不算麻烦,我还嘀咕它为什么不直接替我做了这件事。最近一次升级才让我理解它的良苦用心——升级时只要一股脑ftp所有文件,不用担心设置文件的备份恢复等等。我以前一直都不太愿意升级,就是怕备份恢复这些琐事,所以wordpress新版本出了很久了,可能新版本的新版本都已经出了n多个了,我才折腾了一下。有了这次无痛升级的过程,我以后一定会升级得很勤快的。

    题外话:wordpress的permalink基于url rewrite,要求服务器服务器是apache+mod_rewrite,适用性小。要是谁能开发一个plugin,基于404错误捕获做permalink,一定会在广大小空间业主群里有市场。不过我不会想着去做这件事,从基于url rewrite到基于404,技术上是种倒退。要向前看,不是向钱看。

  • 流式布局

    自从读了Jakob Nielsen的«Homepage Usability»一书以后,我特别fancy fluid layout,这成了我做任何网站一定要达到的目标之一。经过一段时间的研究,我对fluid layout也算小有所成,最有心得的部分就是不借助table,不依赖javascript,在有不定宽度的图片情况下,做图文混排的fluid layout。

    我也很在于其他层面的usability,因此每遇到user friendly的东西,我总要赞叹一番。新版本的wordpress,堪称website usability的典范,但它的default theme竟然没有采用fluid layout,不禁让我唏嘘。于是我准备发挥一下我的专长,同时也为open source贡献一份绵薄之力,就改掉它的fixed layout。

    我花了点时间看了一下style.css,大致知道要怎么去改进它啦。现在大家看到的页面只是我搞了测试以后的中间产品,四个角都没对齐,莫怪。剩下的事情就是要裁减背景图片,做个拉门,然后就差不多了。但我有个毛病:难题在一团乱麻的状态我的战斗力很强,有了头绪以后反而懒得去落实了。 这个差不多了的style.css何时能变成最终成品,我也不知道。

    要不,你来donate我一下?