手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆
浏览模式: 标准 | 列表全部文章

闲话软件业的竞争

本来也想不到谈这些,突然在群里看到石头发牢骚,并且发了链接,于是看了一下,感慨颇多,先贴上他写的东西。。。 

不要用价格拼市场--倒闭时也要站着
  1. 很久没写BLGO了,发篇硬一点的文章,也许要挨骂了。  
  2. 最近做项目,接触了很多企业和团队,感觉在技术市场,价格战已经打的相当的激烈了,一个企业站,简单的文章发布管理功能,一般的界面,价格已经低到1、2 千甚至几百了,这还是北京市场的价格。其实,技术根本不是这么不值钱的,即便没有什么技术含量,单也是相对于技术圈子里面而言,在任何市场里面,对于圈子内的人而言,都是没有什么技术含量的。  
  3. 那最终为何导致,继家电价格战,打倒了一批家电企业后,这种事情又蔓延到软件行业呢,甚至我接触的一些传统行业,竟然也在暗流涌动。  
  4. 我下面穿插着举几个例子,不一定是技术行业的,因为很多数字需要量化,软件项目不好讲清楚,用其他行业的,许是更能说明问题一些。  
  5. 打价格战,其实初衷还是占领市场,可能制定价格战策略时,想的就是降一些价格,然后多拿一些单,利润不会下降,还能形成一定的客户群,即便不赚钱,持平,当把市场占领后,还是可以提价的。  
  6. 这种说法对不对,我不会多说什么,我拿一组数字来说明一下问题吧:  
  7. 我以一般的商品流通行业的利润率距离,通常,一个生产商可以赚到的毛利率在30%-35%,零售商赚到35%-40%,批发商赚到25%-35%,这样,我为了方便计算,把一个产品的毛利率,定为35%,应该是比较合理的。  
  8. 在确定了一般的毛利率后,让我们计算一下,为什么不能降价,  
  9. 比如我们卖100元的商品,会赚取35块钱,那么我们降价10块钱,但是我们的成本65块钱不会变动,也就是我们卖出一件商品,90元,只能获得25元利润,那么我们计算一下:  
  10. 未降价:一件商品,65%的成本,35%的利润  
  11. 降价后:一件商品,72%的成本,28%的利润  
  12. 等于是我们降价10%后,成本上升了7%,也就是利润下降了7%  
  13. 这个数值貌似很小,那么能说明什么呢?就意味着,我们要取得原来的利润,必须要多卖东西,这事所有人都能想象到的,那么我们在计算一下要多付出多少工作才能维持利润:  
  14. X×28%=35  
  15. X=125  
  16. 也就是我们要卖出125块钱的产品,才能获得原来的利润,我们可以看到,我们的付出,可能要达到原来的140%才可以  
  17. 当然,我这是粗略计算,也许事实上,你付出的还要更多,因为会牵扯到人员、物流、售后等成本,我只是用产品举例,其实,在软件外包中,这种降价导致的成本增长和工作量的加大,会更为明显,但是软件不好量化,我只能凭经验说,这种降价很恐怖。  
  18.   
  19. 我不指望能在一篇文章中,说明为什么不能打价格战,只是想引发个思考,也许我后面有时间,会写一些我如何避免价格战的经验,并且阐述一下,其实客户关注的,并不主要是价格,关注价格的客户,自然有其另一套应对的方式,而这么多年我接的项目,也没有一个通过价格战而获得的。  
  20.   
  21. 我再次说明我的观点,即便因为经营不善公司倒闭了,也不要因为价格战不能获利,而把自己累死,而不加入价格战,也未必不能很好存活下去,我希望有时间,我能把这些也写下来。 
  22. 原文网址:http://blog.sina.com.cn/s/blog_507bdaba0100ad65.html

石头是搞过财务的,我是没有搞过,但我对这种情况也是很反感,05年我也就这方面探讨过(用探讨两个字是深了点,不如说是同样的发过牢骚吧)

 

当时的文章地址:http://www.cnitblog.com/neatstudio/archive/2005/07/07/804.html
http://www.cnitblog.com/neatstudio/archive/2005/07/09/841.html

两篇内容如下:

  1. 一直以来,在很多人心里,国产软件的性能比不上国外的同类软件,但是价格上却能低于国外同类软件,因此有部分人一直在鄙视着国内的软件从业人员。  
  2. 可是,事实上呢?国内高性能的软件非常多,但是很多软件在发展到后面都遇上了瓶颈,结果就此停步,终止了软件的开发,造成软件在后续版本上由国外坐大。  
  3. 国内编程人员的素质差!这句话是谁说的?确实有点道理,我指的是个人素质,而不是编程的素质。国内有一小部分程序员,到SF上下载一些OPENSOURCE的软件,稍作改头换面,就当成自己的软件,并进行销售,这类事件曾经电脑报上有报道过。  
  4. 在这里,不得不提的是国内一些对程序员的看法以及所给的待遇。一些大公司都拿程序员当人看,而一些小公司则是把程序员当成挣钱的机器,每天工作时间超长,工资超低,这也就难保程序员在编程时偷懒而直接到网上找现成的代码来拼凑程序。  
  5. 由于自己也经常接触到程序员,听听他们的诉苦得到的结论就是,程序员干的都不是人干的活呀。理由是现在程序员太多了,而且部分程序员的品德也比较差,辛苦接到一个单和人谈好价钱,结果被人横空插入,以绝对低价把单抢走,最后得到的消息是抢单的人拿网上现成的程序改改就交付了,客户在这种情况下又不满意,而抢单的人却消失了。这样的事情发生多了之后,就有了一个现象:程序不值钱,再便宜都有人做;程序员素质低,打一枪换一个地方;对程序员一定要能榨光剩余价值就榨光。  
  6. 梁启超说过:长此以往,国将不国。在这里我只是想说,长此以往,程序员将消失掉。试想,很多人抱着开源的思想在网上公布代码后,后果却是:1、人身攻击,言辞大多是:垃圾程序也好意思拿出来公布这;2、恶意抵毁,这种情况往往是公布的程序与某商业程序产生了冲突,影响了销售。其他情况也不好意思说了,我自己就曾遇到这一点。  
  7.    国产软件究竟该如何走? 
  8.    在经历了种种挫折后,很多软件作者开始把目光投向海外。事实证明,这样的策略是正确的,一来国外对版权比较重视,二来国外的客户把程序员当人看(其实也可 能是国外的消费水平和国内不同罢了)。很多共享软件因此而获得了较高的收益。这种情况造成国内的客户看不到高手,高手也不愿意再兼顾国内。很多人就开始认 为,国内没有编程高手,现有的程序员都是一些水平比较低的人,给他们的项目价钱不能太高,如此循环往复,造成了恶性循环。
  9.     目前,我们这些程序员要做的事情就是:以国外软件开发为主,同时为国内的市场提供一些比较有针对性的软件。不要让国内的客户对程序员失望,同时要清理开发市场,对那些开发水平不高,还要乱报价的程序员应该进行强烈批评并查实后进行通报。
  10.     在这种情况下,程序员的地位可能会得到一定的提高。然而,程序员实在太多了,要好好的洗牌毕竟只是一个构想。
  11.     希望各位有识之士能够认同,并为提高程序员的修养尽一份力。

牢骚也发过了。可惜市场并不因为我们的牢骚而改变。现在,只能多发发牢骚了

 

Tags: 竞争, 软件, 开发, 价格, 市场

国学大师林语堂献宝:英文学习八要诀

一直让我最郁闷的就是自己的英文水平了,看吧,能看得懂一点点,听吧,一点点也听不懂,连哑巴英语也算不上。
看到新东方上有林语堂老先生的心得,不禁摘录下来,也可以多学习一些前辈的先进经验吧。

        林语堂先生(1895-1976),现代文学家、翻译家和英语大师。他一生共出版中文集3种,英文著作36种。他从中国人学习英语的实际出发,提出了一系列的英语教学方法和英语学习方法,至今仍然值得我们借鉴。

  一、学英文时须学全句,勿专念单字。学时须把全句语法、语音及腔调整个读出来。

  二、学时不可以识字为足。识之必然兼用之。凡遇新字,必至少学得该字之一种正确用法。以后见有多种用法,便多记住。

  三、识字不可强记。得其句中用法,自然容易记得。

  四、读英文时须耳目口手并到。耳闻、目见、口讲、手抄,缺一不可。四者备,字句自然记得。

  五、“四到”中以口到为主要。英语便是英国话,如果不肯开口,如何学得说话?

  六、口讲必须重叠练习,凡习一字一句必须反复习诵十数次至数十次,到口音纯熟为止。学外国语与学古文同一道理,须以背诵为入门捷径。每谋取一二句背诵之。日久必有大进。

  七、口讲练习有二忌。

  (一)忌怕羞。学者在课堂上怕羞,则他处更无练习机会。

  (二)忌想分数。一想到分数,便怕说错,怕说错,便开口不得。最后的胜利者,还是不怕羞、不怕错、充分练习的学生。若得教员随时指正,自然可由多错而少错,由少错而纯正,由纯正而流利,甚至由流利而精通。此是先苦后甘之法。

  八、读节要精。读音拼写,皆须注意。马马虎虎,糊涂了事,不但英文学不好,任何学问也学不好。   

原文:http://www.neworiental.org/Default.aspx?TabID=1130&InfoID=241419&SettingModuleID=2483

 

Tags: 英语学习, 林语堂, 技巧

好东西,不得不贴,继续上传两个文件

今天看到一个好东西,是jquery的API,这次的API不是象以前那样用XML的,也不是那种根据官方的数据简单的汉化而来的,这次。。。。阿健同学编译成了CHM文件(虽然以前的也是CHM文件),并且有索引和搜索功能哦。只是由于编译方式的问题吧?不支持中文搜索,不过也总比以前那种纯粹的一个页面来的爽。OH YEAH。。。

剩下一个嘛,就是传统的CSS手册了,这个手册估计只要是WEB开发人员就会人手一份,苏沈小雨同学实在是太让人尊敬了,估计国内开发人员提到CSS手册,都会说,哦,就是那个苏沈小雨的呀。。。

不多说,放上链接。黑黑
注意:jqueryApi文件打开后会生成一个chw的文件,如果你看不顺眼可以每次删掉

附件: jqueryapi_chm.chm (210.1 K, 下载次数:5986)

附件: cascading style sheet 2.0 中文手册.chm (258.56 K, 下载次数:3325)

Tags: chm, css, style, jquery, api

IIS 6 下的 PHP 最佳配置方法

虽然 LAMP 组合很不错,但是如果想要架设一台同时支持 PHP、ASP、ASP.NET、JSP、Perl 的 Web 虚拟主机服务器,还是用 Windows 2003 的 IIS 6 最好。网上有很多介绍在 IIS 6 上配置 PHP 的文章,但是那些方法不是性能不好,就是升级麻烦。下面的方法可以让你在第一次配置好后,能够非常方便的进行升级。

这里所说的升级,是指从某个 php4 版本升级到另一个 php4 版本,或者从某个 php5 版本升级到另一个 php5 版本,而不是指从 php4 升级到 php5。

准备:

一台安装好的 Windows 2003 服务器,并且已经安装了 IIS 6。

下载 Windows 版的 PHP 二进制压缩包

安装:

解压缩 PHP 二进制压缩包到 C:\php 目录下(这里假设 C: 盘是系统盘,即安装了Windows 系统的盘,如果系统盘是 D: 盘,则解压缩到 D:\php 目录下,以此类推,下同)。

然后打开“我的电脑”->“属性”->“高级”->“环境变量”->“系统变量”->“path”,编辑其值,在前面增加下面的路径地址:

C:\php;C:\php\dlls;C:\php\extensions;C:\php\sapi;

将 php.ini-dist 或 php.ini-recommended 复制到 C:\Windows 目录下,并改名为 php.ini,一般正式发布网站的服务器用 php.ini-dist,而作为调试用的服务器用 php.ini-recommended 更好。当然一般情况下,这个 php.ini 还是需要根据实际情况来修改的。

下面来介绍一下几个必要的修改选项:

extension_dir = "C:\php\extensions"

这个是 PHP 扩展所放置的目录,请确保跟你实际安装的目录相同。

PHP常用扩展
  1. extension=php_mbstring.dll  
  2. ;extension=php_big_int.dll  
  3. extension=php_bz2.dll  
  4. extension=php_cpdf.dll  
  5. extension=php_crack.dll  
  6. extension=php_curl.dll  
  7. extension=php_db.dll  
  8. extension=php_dba.dll  
  9. extension=php_dbase.dll  
  10. extension=php_dbx.dll  
  11. extension=php_domxml.dll  
  12. ;extension=php_exif.dll  
  13. ;extension=php_fdf.dll  
  14. ;extension=php_filepro.dll  
  15. extension=php_gd2.dll  
  16. extension=php_gettext.dll  
  17. extension=php_hyperwave.dll  
  18. extension=php_iconv.dll  
  19. ;extension=php_ifx.dll  
  20. ;extension=php_iisfunc.dll  
  21. extension=php_imap.dll  
  22. ;extension=php_interbase.dll  
  23. extension=php_java.dll  
  24. extension=php_ldap.dll  
  25. ;extension=php_mcrypt.dll  
  26. extension=php_mhash.dll  
  27. extension=php_mime_magic.dll  
  28. extension=php_ming.dll  
  29. extension=php_mssql.dll  
  30. extension=php_msql.dll  
  31. ;extension=php_oci8.dll  
  32. extension=php_openssl.dll  
  33. ;extension=php_oracle.dll  
  34. extension=php_pdf.dll  
  35. extension=php_pgsql.dll  
  36. ;extension=php_printer.dll  
  37. extension=php_shmop.dll  
  38. ;extension=php_snmp.dll  
  39. extension=php_sockets.dll  
  40. ;extension=php_sybase_ct.dll  
  41. extension=php_w32api.dll  
  42. extension=php_xmlrpc.dll  
  43. extension=php_xslt.dll  
  44. extension=php_yaz.dll  
  45. extension=php_zip.dll  

上面这些,开头没有加分号的是打开的扩展,加了分号的是没有打开的扩展。上面的设置包含了在 Windows 2003 上默认安装情况下可以打开所有扩展(这里列出的是 php 4 的)。

session.save_path = b:\sessions

这个是 session 文件默认保存的目录,这个目录必须是一个存在的目录,不然默认的 session 功能会无效。我这里设置的是一个 ramdisk 上的一个目录。将 session.save_path 设置在 ramdisk 上可以加快 session 处理的速度。如果你没有安装 ramdisk,你可以把它指定到其他盘的任何一个目录下,如 C:\sessions 目录、C:\Windows\Temp 目录等。

OK,基本工作作完了,现在该配置 IIS 了。

打开“ Internet 信息服务(IIS)管理器”,在“ Web 服务扩展”里,选择“添加一个新的 Web 服务扩展”,扩展名可填写“PHP ISAPI 扩展”,要求的文件选择:C:\php\sapi\php4isapi.dll(如果安装的是 PHP5,则此处是 C:\php\sapi\php5isapi.dll,下同),并设置扩展状态为允许。

打开“网站”->“属性”->“主目录”->“应用程序设置”->“配置”->“应用程序扩展”->“添加 ”,可执行文件还是选择 C:\php\sapi\php4isapi.dll。扩展名填写“.php”,动作限制为“HEAD,GET,POST”。

打开“网站”->“属性”->“文档”->“启用默认内容文档”->“添加”,可以将 index.php 添加为默认内容文档。

然后选择“服务器机器名”->“所有任务”->“重新启动 IIS”来重启 IIS。

测试

在默认网站发布目录下,建立一个测试页面:

PHP代码
  1. <?php  
  2. phpinfo();  
  3. ?> 

 

如果打开这个页面能够看到 php 安装配置信息,就算是安装成功了。

如果想要更优化的执行 php 程序,可以安装 ZendOptimizer-3.0.1-Windows-i386.exe,这个东西安装非常简单,这里就不介绍了。

升级

现在升级就非常简单了。只需要将新版本的 PHP 二进制压缩包下载下来,将原来的 C:\php 目录删除,将新版本解压缩到 C:\php 目录中,然后重新启动一下 IIS 就可以了。不需要修改任何配置,也不需要往 System32 目录中复制任何文件。是不是很方便啊?


膘叔的小技巧:
由于在IIS下面建立站点和关闭站点都比较方便,但是象上面说的升级就不是很方便了。我是指启用站点,虽然直接点击控制台上的restart按钮很方便,但。。。WINDOWS有时候会突然卡死,那时候是关也不能关,开也不能开,只能注销,在这里,我提供一个小小的批处理文件,只要放在桌面上,想重启的时候运行一下就行了。。
文件内容如下:

XML/HTML代码
  1. net stop w3svc  
  2. net start w3svc  

是不是很简单?但不要小看这两行,WINDOWS好象是对命令行的处理有一定的优先级,而且用命令行不会被卡死。

 

Tags: iis, php, setup, config

关于 PHP 中的 iconv 函数的一点小问题[转]

作者:andot,来自:www.coolcode.cn,出处:http://www.coolcode.cn/show-41-1.html

原文如下
  1. 昨天在调试 WAP 网站时发现,在增加了 GB2312 到 UTF-8 转化以后,有些页面显示不正常了——有些页面只有一半的内容,另一半被截掉了。因为被截掉的部分包含了<p>的后半个标签</p>,因此整个页面都显示不出来,而报告错误。经过猜测、尝试,最后终于把问题集中在了 iconv 函数上。在经过高人指点以后,发现这个函数的第二个参数,除了可以指定要转化到的编码以外,还可以增加两个后缀://TRANSLIT 和 //IGNORE,其中 //TRANSLIT 会自动将不能直接转化的字符变成一个或多个近似的字符,//IGNORE 会忽略掉不能转化的字符,而默认效果是从第一个非法字符截断。但是我尝试了//TRANSLIT 和 //IGNORE 这两个后缀,效果还是不对。于是我想问题可能不是出在这里。从 GB2312 到 UTF-8 转化应该不会有不能转化的字符,因为 UTF-8 的字符集完全包含了 GB2312 中的字符,所以我想大概是前面要转化的字符集指定错了,于是我尝试着把 GB2312 改成 GBK,问题解决!虽然那两个后缀在这里没派上用场,不过也算学了一招,以后肯定会用到的。补记:改成 GBK 后,发现仍然有一封邮件的内容解析不正确。在另一位高人指点下,先换成 GB18030,问题依旧,然后改用 mb_convert_encoding 进行转换,问题解决!不知道是 mb_convert_encoding 问题,还是我的系统问题,我用 mb_convert_encoding 时不支持 GB18030 编码。另外,用 GBK 或者GB18030 作为输入编码,并在输出编码中加上 //IGNORE 后缀,用 iconv 函数也能解决那封含有错误编码的邮件内容解析不正确的问题。不过用 mb_convert_encoding 可以指定多种输入编码,它会根据内容自动识别,这个比 iconv 要好的多。  

其实,同事在生成图片文字水印的时候也遇到了这种问题,同事最初用的是GB2312字符集,结果直接报错,说是字符串的offset有问题,但仔细检查后却没有这种问题。后来才发现是直接调用的这个iconv转换出错了。
原来的转换是从gb2312往 UTF8转换,表面上确实没有什么问题,然而,现在的人特别爱装酷,受影响的那位同志,用的是繁体字,繁体字的字库大多情况是属于GBK的,所以后来换成GBK后就正常了。
估计以后再遇上用火星文的朋友,就真的只能使用andot提出的这种方法了。转换成18030,再使用ignore参数。哈哈

mbstring好象最初的版本里没有使用,如果换成这个,估计代码工作量非常大,先将就着点了

Tags: 字符转换, php, iconv, mbstring, convert