2010年3月31日水曜日

Linux系统下的C语言开发都需要学些什么

  一、工具的使用

  1、学会使用vim/emacs,vim/emacs是linux下最常用的源码编辑具,不光要学会用它们编辑源码,还要学会用它们进行查找、定位、替换等。新手的话推荐使用vim,这也是我目前使用的文本编辑器。

  2、学会makefile文件的编写规则,并结合使用工具aclocal、autoconf和automake生成makefile文件。

  3、掌握gcc和gdb的基本用法。掌握gcc的用法对于构建一个软件包很有益处,当软件包包含的文件比较多的时候,你还能用gcc把它手动编译出来,你就会对软件包中各个文件间的依赖关系有一个清晰的了解。

  4、掌握svn/cvs的基本用法。这是linux,也是开源社区最常用的版本管理系统。可以去试着参加sourceforge上的一些开源项目。

  二、linux/unix系统调用与标准C库

  系统调用应用软件与操作系统的接口,其重要性自然不用说,一定要掌握。推荐学习资料为steven先生的UNIX环境高级编程(简称 APUE)。

  三、库的学习

  无论是在哪个平台做软件开发,对于库的学习都很重要,linux下的开发库很多,我主要介绍一下我常常用到的一些库。

  1、glib库

  glib 库是gtk+和gnome的基础库,并具是跨平台的,在linux、unix和windows下都可以用。glib库对于linux平台开发的影响就像 MFC对windows平台开发的影响一样,很多开源项目都大量的使用了glib库,包括gimp、gnome、gaim、evolution和 linux下的集群软件heartbeat.因为glib库自带有基本的数据结构实现,所以在学习glib库的时候可以顺便学习一下基本的数据结构(包括链表、树、队列和hash表)。

  2、libxml库

  libxml是linux平台下解析XML文件的一个基础库,现在很多实用软件都用XML格式的配置文件,所以也有必要学习一下。

  3、readline库

  readline 库是bash shell用的库,如果要开发命令行程序,那么使用readline库可以减少很多工作量,比如bash里的命令行自动补全,在readline里就已经有实现,当然你也可以用自己的实现替代库的行为。readline库有很多网站介绍的,只要google一下readline就可以找到一堆了。

  4、curses库

  curses 库以前是vi程序的一部分,后来从vi里提取出来成为一个独立的库。curses库对于编写终端相关的程序特别有用,比如要在终端某一行某一列定位输出,改变终端字体的颜色和终端模式。linux下的curses库用的是GNU实现的ncurses(new curses的意思)。

  5、gtk+和KDE库

  这两个库是开发GUI应用程序的基础库,现在linux下的大部份GUI程序都是基于这两个库开发的,对于它们 的学习也是很有必要的。

  四、网络的学习

  网络这个东西太宽了,推荐学习资料steven先生的UNIX网络编程(简称UNP)和TCP/IP协议详解,更进一步的话可以学习使用 libnet编写网络程序。

6款中国自己的操作系统(继承LINUX内核)

总的特点都是继承LINUX内核,原因大家也应该知道吧。中国要想自己写一个操作系统内核,谈何容易,用什么语言来写,怎么写,都得从一开始,并且还的经受各方面的考验,可以说中国要写属于自己的系统内核是完全不可能,毕竟UNIX, MICROSOFT ,NOVELL等发展这么多年了,以说很成熟了,可漏洞依旧。

另一方面linux原代码是公开,而微软软代码是不公开的,性能上某方面LINUX并不比WINDOWS差,比喻LINUX下的编程环境,WINDOWS 就自叹不如在网络构件服务器上,大多数企业都采用LINUX做为服务器,而将WINDOWS做为用户机。如果在办公或学习上,LINUX完全不逊色于 WINDOWS。娱乐方面LINUX就明显显的单薄了些(对图形和音频的支持不是很好)。

因此中国要做自己的操作系统最好的方法,也就是在已公开原代码的LINUX上进一步发展。典型的例子就是中国的RedFlag也就是红旗,经过不段的发展,现在的RedFlag Desktop 4.1个人桌面版,网上评价已有WINDOWS98的水平了,主要表现在全方位的软件集成和在中文支持、视频音频功能等方面的完善;

中国第1款操作系统 opendesktop 1.0 rc版
也是国产的第一个桌面操作系统,有点longhorn又有点linux风味.
(longhorn我装过,硬件配置要求比较高,一般机器装不来)
下载地址:http://soft.netnest.com.cn/down/12/BABY-i386-disc1.iso

中国的第2款操作系统:银河麒麟
我找了N久的东西,终于给我找到了,有兴趣的朋友也请一并安装测试吧。

银河麒麟操作系统由863软件重大专项资助,简称KYLIN操作系统。KYLIN操作系统是参照UNIX操作系统国际主流标准,针对服务器需求,设计并开发的具有自主版权的中文服务器操作系统。它支持多种微处理器和多种计算机体系结构的,具有高性能、高可用性与高安全性,并与Linux应用二进制兼容。
下载地址:http://soft.netnest.com.cn/down/12/BABY-i386-disc1.iso

中国的第3款操作系统:红旗Linux
想必也不需要我介绍了吧,现阶段来说应该是国产操作系统里最好的一个操作系统,强烈推荐!
下载地址:http://www.redflag-linux.com/

中国的第4款操作系统:中软Linux
http://www.cosix.com.cn/

中国的第5款操作系统:XteamLinux就是冲浪
http://www.xteam.com.cn:8080/web/index.htm

第6款操作系统:Linux2005
http://www.ccoss.com.cn/linuxdesk.php

国产OS? 中文CPU?

朋友,你有没有过关于做一个OS的疯狂想法呢?
我的确有过——在6年以前,读高中的时候。当时每天被Windows95的蓝屏折磨得要命,甚至已经厌烦了一周就要重装一次系统的生活。(呵呵,没办法, 当时特别喜欢下载各种新奇的软件玩……结果经常导致系统越来越乱,最后蓝屏不断)另一方面,当时因为对DOS系统已经玩了两三年,自我感觉良好,中断之类的也算熟悉,没事写个TSR之类的小东西,就自以为已经了解操作系统了。所以经常想,Windows这么差,那些电脑高手们干嘛不联合起来,写一个更好的操作系统呢?甚至可以采用稳定安全的Linux内核,让其兼容Win32/DOS的程序不就是了?
然后就正好有了这么一个事情发生:99年5月7日美国轰炸了中国驻贝尔格莱德大使馆。当时愤慨的中国人中,有人开办了一个网站,就是关于建立中国自己的OS的。网站上的慷慨言辞我已经忘记了;只记得该网站正在召集许多电脑高手,要开发中国自己的OS,再也不用M$的产品了。甚至还拿出了一个用C编写的“进入保护模式”的程序。可见,他们的设想是不基于Linux等任何已有操作系统,硬生生的从内核到Shell,开发一个全新的操作系统。
最后的事实证明,他们好像没有成功。
接着,随着Windows2000,XP相继推出,Windows越来越稳定,尤其在XP上已经很难得见到当年的“蓝屏”了;甚至可以说,XP下遇到蓝屏多半是硬件故障。同时我也惊奇的发现,“国产OS”的呼声也随之越来越少了。的确,Windows虽然还有很多不尽人意的地方,但是功能越来越强大,稳定性越来越好,谁还需要一个不成熟的OS呢?
IT168的王少川先生认为,我国不适合开发自主的操作系统,原因有三,一是缺下层——硬件厂商大都国外,不会予以支持新生系统;二是缺上层——应用程序厂商不会给一个没人用的系统开发程序;其三是自身原因,我们没有那么多的熟悉OS开发的人才。同时他建议,与其开发自主产权的国产OS,不如更深入的研究 Linux,以及开发Linux应用。王先生说的非常中肯,也非常实际。如果开发国产OS的理由是抵制垄断,那么Linux应该是最好的选择。关键问题是,当前的Linux版本大多不太适合普通人使用——Windows即使完全不懂电脑的人,拿过来稍稍看一下也能打个字,发个信什么的。用上几天估计就能改个系统配置了。Linux呢?

前些日子在IT网站上盛传一则新闻,叫做《国产操作系统“麒麟”火爆问世 将挑战Windows》,图片上还有模有样的把麒麟和Windows摆在一起。当时看到这个,我的第一反映是,是不是又有哪个公司汉化了某个Linux, 然后拿来炒作?看了内容之后,发现是某著名大学开发的且为863项目,那么应该不是炒作之物,而且要跟联想合作推广,那必然是和 Windows,Linux同样的通用操作系统。
结果看了更多的详细报道,才弄明白——这个麒麟原来是针对政府,军队及国防领域的一个专用操作系统。出于安全的考虑这种场合理所应当不能使用 Windows之类的国外的,或者Linux之类的开源的。可是硬要把专用OS和商业OS扯在一起,不就是“关公斗秦琼”吗?

随后不久,又看见了“中文CPU”的报道。这次文中虽没有提出“挑战Pentium”之类的字样,但是隐约表达着打破世界CPU格局和规范的意思。当时心里就犯嘀咕,要说国产CPU,中科院早就作出来了;要说支持中文,CPU都是运算指令,跟中文英文有啥关系?后来找遍网络,才弄明白所谓“中文CPU”是一只嵌入式系统的芯片,一种单片机系统。在洗衣机,空调,电子显示屏等场合可以支持中文。

国产OS也好,中文CPU也好,其本身都是很不错的产品。可是经过了媒体的如此包装,总让人觉得恶心。外国人看了肯定也纳闷,怎么中国今天挑战OS业界, 明天挑战CPU业界,怎么就没见拿出个东西来着呢?

国产数据库路该怎么走?

达林数据库有限公司经过多年的发展现在仍然处于成长期。“虽然这些年国家在政策上扶持了我们很多,可如果再这样发展下去,我们永远是在庇护下生存,永远无法真正长大……”

在数据库业内流传着一个颇让人悲哀的故事:两位资质相当的大学生,毕业后,A君进了国内一家OFFICE软件公司,B君则进入了某国产数据库管理系统软件公司。都是做SALES,两年过后,A君已经是大区经理,而B君正面临下岗再就业。这个故事虽然有些夸张,但确实反映了国产数据库厂商的生存窘状。

达林数据库有限公司在国产数据库行业内也算是小有名气的企业,但这几年的日子却不怎么好过,公司的技术总监王亿说起一些经历连连叹气。

拿最近的一件事来说吧,武汉九威连锁企业准备实施一个数据采集的平台,来收集市场上热销产品的信息,这需要一个数据库平台支持。

最初该企业咨询电话打过来的时候,王亿感觉比较有把握,毕竟有本地化的优势。另外,用他的话说:“我们的数据库在不少性能上确实比不上国际主流数据库,但它们可以提供完整的数据库功能,并能达到一定的可扩展性、安全性水平,完全能够胜任很多应用。更何况,与昂贵的进口数据库相比,国产数据库还拥有强大的性价比优势。”

接下来,九威公司作为达林的准用户经过一段时间的数据库试用,其对数据库技术颇有研究的CIO张奈对数据库的评价很高,说:“用了一段时间后我发现,在SQL语言符合性、ODBC、JDBC等标准符合性方面,甚至比国外主流数据库做得还要好。”

听了这话,王亿悬着的一颗心比较踏实了,“当时我恨不得不停地打电话联系,张奈和他们的技术人员对我们数据库也比较认可。我认为,这个单子应该是十拿九稳了,我们‘地利’和‘人和’都做到了前面。”

只是过了没多久,九威那边就没了消息,每次拨通张奈的电话,他总是以各种借口推托,不谈主题,到最后,张奈终于说出了缘由,“自从我们把采购达林数据库的计划报上去后,就遭到我们王总的反对,这真是我没考虑到的。”

为此,张奈也和王总多次沟通,而且为王总做数据库应用演示,并没有出现任何技术问题。但领导最后的两句话让张奈无可奈何。王总说:“现在看是没任何问题,但以后我们企业发展了,这个国产数据库在高负载下的系统性能和可靠性方面谁来保证。另外,国产数据库在一些性能如可靠性上还有不足,信誉度如何保证?”

听到这些,王亿长叹道:“这么多年了,看来国产数据库给人们的印象还是没有改变。”

王亿认为,国产数据库目前在技术上面已经做得很好。由于起步晚、没有历史包袱等原因,在SQL语言符合性、ODBC、JDBC等标准符合性方面甚至比国外主流数据库做得还要好。而且可采取产品捆绑、定制等灵活的服务方式,技术支持人员能针对用户实际情况分析和解决问题。但是,国产数据库因为企业实力问题,牌子不硬、渠道不畅的确是最大的缺陷。

达林数据库有限公司经过多年的发展,现在仍然处于成长期。“虽然这些年国家在政策上扶持了我们很多,可如果再这样发展下去,我们永远是在庇护下生存,永远无法真正长大,我真不知道未来的路该怎么走。”

也许这是不少国产数据库企业经常问自己的一句话,国产数据库,未来的路该怎么走?(黄昆)

低价之路走不得

杨洪和

山东德棉集团有限公司信息中心主任

在普遍消费者的心理上,一直认为价格低就意味着假冒伪劣,要么我选好的,花大钱;要么我就不用,干脆放弃,市场也会逐渐萎缩。

文中的案例虽从一则故事引起,但通过A、B君不同的职业命运也折射出国产数据库产品在国内发展的窘境,面对国内如雨后春笋般的需求,感到欣喜、兴奋;面对国外数据库产品以绝对优势的占领,感到无奈、彷徨。国产数据库产品如何让发展?未来的路怎样走?仅靠低价格来打拼就等于束手就擒。

低价格的危机

近几年,国内其他行业出现了很多类似现象,人们的消费意识走向了一个怪圈,就是价格低是正确的,不管是产品还是服务只要价格高,就存在问题,价格高的背后可能隐藏着什么东西,就需要进行整顿。在国家市场经济体制不健全的情况下,确有此状况存在,由价格高引起的联想也不足为奇。

但低价的背后隐藏着很多危机,尤其是长远来看,会影响到企业自身生产力水平的高层次发展,当市场上出现类似产品或同类竞争对手时,我们会输得一塌糊涂。因为企业要生存,也要遵循市场规律降低成本、提高效益。

如果靠低价格占领了市场,容易在盈利为目的的市场规则下放弃质量。低层次的徘徊,总体水平也不会有多大的提高,只注重眼前的局部利益,忽视了企业长期发展的核心要素。

另一方面,在我国普遍消费者的心理上,一段时间以来,一直认为价格低就意味着假冒伪劣,要么我选好的,花大钱;要么我就不用,干脆放弃,市场也会逐渐萎缩。

开发自主产权数据库

数据库产品是一个表现形式,更多地凝聚了软件技术人员的智慧和心血,它不等同于一般的商品或工业产品,其价值表现在产品价格上是微不足道的,更多地体现在对社会的贡献方面。作为信息时代的神经中枢,国内外计算机软件厂商都在争夺数据库研发的先机。

上个世纪90年代初期,我国信息化建设全面展开,但由于缺乏国产数据库的有效支撑,大量涉及安全的数据、图纸、文档等信息,只能使用国外数据库产品进行存储。

由于我们不掌握源代码,国外产品很可能存在某些“隐通道”,一些关键数据就有可能泄露。国内数据库市场约有90%的份额被国外厂商垄断,所以研发自主产权的数据库迫在眉睫。

从标准、规划开始

制定行业标准。现有软件产品或者软件公司,为了在市场上独树一帜,经常是凸显自己的个性化,繁荣了市场,出现了各色各样的产品或者大大小小的公司,大家都围绕着国人的需求忙得不可开交,无暇顾及产品或者服务的系统性发展问题,同时缺乏行业自律和标准规范,最终导致输给国外产品。

做好发展规划。国外的软件产品在功能不太完备时绝对不推向市场,而是加大测试。而国内厂商有了点功能上的突破就急于接单,大面积推广,导致经常有公司的技术骨干,现场去调试那些不应该存在的BUG。

从规划这个角度讲,应该是政府的职能,我们应该看到,科技部在“十五”863计划中专门设立了软件专项,准备在操作系统、数据库管理系统、嵌入式软件等方面展开研究,努力掌握与系统软件相关的战略性、前沿性和前瞻性的关键技术,通过创新较大幅度地增加自主知识产权的拥有量,完善我国自主的软件体系,培育高技术产业生长点,以支撑国民经济和社会信息化及国家信息安全建设。

在数据库领域,将以制造业信息化工程和电子政务工程等应用需求为龙头,研制大型通用数据库管理系统。也需要国内的软件企业从行业角度考虑问题,国家出台了发展纲要,应从这个上面统一到发展民族软件这个宏伟事业上来。

稳步发展。我认为国产数据库的发展可以借鉴开源的模式。第一步,利用自己的核心团队构建出数据库产品的基础架构,产品的平台;第二步,在用户层面上广泛征求意见,经过进一步抽取和分析,制定出适合我国国情的功能化的数据库产品。走免费的路子占领市场,丰富需求,完善产品自身;走收费的路子去推广品牌、运作市场。

另外,应该加强行业自律,将所有厂商的优势资源整合起来,研发出具有一定竞争力的数据库产品。同时进一步加大对研发的投入和奖励,鼓励创新,刺激发展国产数据库产品。增设对应用的政策扶持,凡是利用国产数据库产品的用户在资金、产品自主创新、成果评定方面有所倾斜,营造国产数据库产品生产、销售、应用、发展的各环节的和谐氛围,打造国产数据库产品环境、法律、文化共同促进的新天地。

适合的才是好的

周真志

安徽省电信有限公司安庆市分公司网络建设部副经理

任何一个产业,在刚刚起步阶段,国家的保护是至关重要的,这会促进这个产业的快速发展,但我们不能始终躺在国家庇护的树荫下乘凉,要主动去适应市场。

看完这篇案例,感受还是颇多的。一个快要成功的项目,就是因为怀疑“国产的数据库不能满足企业未来的发展需要”而终止了,其实这种怀疑很大程度是建立在一种假设之上的,正是这种假设的需求使我们的国产数据库失去了一次广泛应用的机会,失去了一次提升自己的机会。

当然,我们不能责怪这些“武汉九威连锁企业”们,因为他们毕竟找到了我们国产数据库的一些不足甚至是软肋,也或者说我们国产的数据库目前还没有能力完全打消他们的疑虑,使企业放心选用,因此我们还没有理由去埋怨人家。

我们知道,在数据库领域,国外公司长期处于垄断地位,市场被其牢牢占据。而国产数据库由于人们固有的观念,目前还没有得到长足的发展和应用,因此,国产数据库未来要走的路还很长,在这漫长的发展道路上,国产数据库究竟该怎么走好? 这需要大家的共同努力。

改变“国产”的老印象

“改变观念,支持国产事业”,或许这句话有人觉得不以为然,但这是我们不得面对的问题。因为不可否认,同样的产品,只要是涉及到国产与国外的比较,大家就总觉得国产的东西要差些,大家的认识依旧停留在原来“国产”的老印象中。

之所以说是老印象,是因为现在我们的好多产品质量已与国外产品不相上下,比如通信行业中华为、中兴公司,海外拓展很有成效,一些发达国家已经选用他们的产品。当然,在某些方面,国产的产品是要差点,但这也是暂时的过程,毕竟我们起步晚,一开始差点是正常的,我们要给他们时间。

因此,对于国产数据库,未来的路该怎么走第一要解决的问题就是希望大家能切实改变观念,支持国产事业,任何事物的发展都不会一帆风顺。

市场化运作

当然,我们的国产数据库跟其他产业一样,一开始都是在政府保护下发展起来的,还没有真正经历过市场的洗礼,没有真正的市场化运作,产品的开发是以技术为驱动的,不是以市场需求为驱动,这是我们国产数据库产业自身的问题,是要切实改变的。任何技术不经过市场的洗礼,是无法获得快速的发展。

任何一个产业,在刚刚起步阶段,国家的保护是至关重要的,这会促进这个产业的快速发展,但我们不能始终躺在国家庇护的树荫下乘凉,要主动去适应市场,因此,国产数据库,要获得快速发展,走好未来的路。

第二要解决的就是市场化运作问题,要树立市场意识,学会营销,要主动走进市场,在市场的应用中不断提升自身技术水平、服务水平。任何没有应用的技术至少是不成熟的技术。

捕捉市场反馈

我们的国产数据库起步晚,和国外主流产品相比较还存在差距,因此,我们要敢于直面与国外数据库的差距,只有认识到差距才可以减少差距,并最终超过他们。所以,作为国产数据库,我们要苦练内功,奋起直追,努力提升自身的技术含量,逐步缩小与国外产品的差距。其实,我们国家许多行业的产品现在已处于世界领先水平了,他们也是一步一步走过来的,因此,希望国产数据库产业也能这样,通过自身的努力,逐步走向世界。

我们在苦练内功的同时,要善于捕捉市场的反馈,善于解决发展过程中的问题,通过应用促进技术的研发,促进功能的提升。

适合的才是正确的

作为国内企业,在上马项目的之前,要做好规划,认真分析自身的实际需求,同时要结合自身的规模来选择数据库产品,盲目贪大求全,就是一种无谓的浪费。

我认为,在满足需求的前提下,国产的数据库优势是非常明显的,价格、服务、本地化等各方面的优势都是国外无法比拟的。更重要的是,我们的国产数据库也会随着我们的企业发展而发展,一些假设的需求是没有必要的。

高性价比赢得信任

赵元旭

中国石油天然气股份有限公司大连石化分公司高级工程师

国产数据库究竟如何打开市场,只有高性价比才能赢得用户信任,过硬的技术、周到的服务、精妙的策划都是不可或缺的。

数据库是信息化过程使用最常用的管理数据工具,其性能好坏直接影响信息系统的性能、效率,因此对数据库的选型是个既严肃认真马虎不得,又不能只讲性能不讲服务及价格。

就目前情况而言,国外数据库无论其性能、服务、品牌都具有明显的竞争力,且90%的市场份额被国外产品所垄断。随着信息经济特征不断深刻影响企业生存发展,企业对信息系统的依赖性及信息安全标准越来越高,数据库作为信息化系统的核心软件,源代码控制在外国人手上,容易造成信息泄露。国外数据库核心技术因为通用性太强而带来的易受攻击容易造成系统破坏,这些都是国产数据库得以生存与发展的基础。

核心技术是基础

数据库的核心技术一直是该领域竞争的焦点,影响数据库系统高性能的高安全性、高可靠性、可扩展性、可移植性都是现代用户关注的核心。

国内数据库在安全机制、数据审计和数据库管理、强制访问控制的功能、通讯加密、存储加密以及资源限制等辅助安全功能,都达到了很高的标准。

高性能方面的并发控制、联机事务处理、查询优化已取得突破。

高可靠性方面的数据完全、增量、在线/离线的备份与恢复,支持主从热备、双机互备、多点互备确保企业信息完整性及服务器运行安全性。

可扩展性方面的64位运算能力、SMP支持能力确保多CPU条件下的高效率。

可移植性方面提供了各种数据库标准通用接口,具有异构数据库访问能力,确保企业现有数据资产的保值增值。

高性能、高服务、高品牌都是以数据库核心技术为基础的,国产数据库在数据库应用领域已经达到了很高的水准,完全有能力在推进国内信息化进程方面发挥推进器、倍增器、发动机的作用。

知识、技术、管理一体化服务

虽然国产数据库的性能已达到了很高的应用水准,但其价值的体现是通过用户的使用实现的,目前而言,国外数据库系统的成熟、稳定、可靠是经过市场考验出来的,给国产数据库系统的推广提出了很大的难题,全方位的用户培训及细致周到的服务是跨越用户认识接受障碍的捷径。

对国产数据库的服务是一个三维的沟通过程,包括知识、技术、管理。用户对国产数据库的接受本身就存在一个畏惧心理,想用而不敢用是不争的事实。因此国产数据库的服务从应用驱动与技术驱动相结合的角度对用户展开培训指导。

知识、技术、管理三位一体的服务有助于用户从对国产数据库的认识延伸到信息化的效果,更好地挖掘国产数据库的潜能组织数据、存储数据、传输数据、处理数据,增强信息系统的实用性。在用户知识、技能、管理得到提升的同时增加国产数据库产品的品牌知名度、市场美誉度。

市场差异化策划

国外数据库在市场策划方面的强大优势高居我们之上,如何调动我们的智力资源以小博大、以弱胜强,在激烈的竞争市场中打出一块我们自己的生存之地,良好的、独到的市场策划起着非常关键的作用。

瞄准自己的优势、找准市场定位是搞好市场策划的前提。国产数据库的优势在于数据库体系的自主设计带来的信息安全优势,自主知识产权带来的成本低廉的价格优势,深悟自己民族文化的本土化服务地域优势。

国产数据库由于数据库体系结构的自主设计,可以为用户量身定做个性化应用方案。国外数据库的高性能、高服务、高品牌带来的企业高成本、高负担,都会随着人们对国产数据库认识的提升而改变。

瞄准个性化应用、细分用户需求、增强数据库系统实用深度,以低成本换取高服务、高技术、高目标赢得用户信赖。

数据库技术是面向应用的实用技术,关键还要看商品可信度,可信度的提升需要过硬的技术、持续地升级去满足用户业务变化的适应性,高负载下的系统性能、复杂查询优化、并发控制机制、故障恢复机制、XML数据管理技术、P2P数据管理技术、数据网格技术等数据库核心技术是国内信息化需求的方向。

总之,国产数据库究竟如何打开市场,只有高性价比才能赢得用户信任,过硬的技术、周到的服务、精妙的策划都是不可或缺的。

读者俱乐部会员评论

保证信誉度

“国产数据库在一些关键性能如可靠性上还是有不足,信誉度如何保证?”我认为这才是根本问题。国产数据库的出路在于如何提高信誉度,关键在服务方式上。

从用户角度讲,一般对技术是不太在意的,只要达到要求就行,关键要有长期保障。这是国产数据库要注意的,信誉度毕竟是建立在用户的口碑上的。

既然国家在政策上扶持了很多,这说明国产数据库也是占有一定天时的。国产数据库未来的路,就在于如何把天时、地利结合起来,争取人和,让用户满意。(白红钢)

考虑系统性能和可靠性

对于具体使用软件的用户来说,产品的系统性能和可靠性是我们的第一考虑,其次才是价格。对于我们国产的数据库来说在第一次投资时可能性价比要比国外的进口数据库来说是好一点,但是在我们决策选用时,第一个还是先考虑系统性能和可靠性。否则即使我们买的东西很便宜,但买来后总是担心出问题,那我们买来又有什么用呢。

我感觉国产数据库软件要想有大的发展需要国家的扶持。

由国家来扶持,免费使用来扩大市场占有率。实际使用中,在最短的时间内在关键技术和可靠性方面有所突破,缩小和国外产品的距离,这才是最务实的。(郭俊杰)

国产数据库的机会少

说实在话,还没见过更没用过国产数据库,我感觉他们的发展前景并不是很好。大的公司在设计信息系统的时候,数据库做为重要的部分肯定会选世界知名的产品,如DB2、Oracle、SQl server等,选国产数据库的机会很少。

参加过一些采购评标,根本没见到他们采购数据库时提到国产产品。(李怀建)

国产数据库如何走

要把自身做强做好,不要让人感到用起来就是不如那些常用的数据库,要有一定的技术优势。

要在国内免费推广一段时间,让他走进高等学院,进入课堂,进入教科书,培养自己的用户群。要与那些常用数据库有一定程度的接轨和互换性。

要形成一个有活力的技术研发队伍。要推广一些成功的案例,让人可以学习模仿。国产数据库进入的门槛要尽可能的低一点。如果你做的有特色,自然有人会用的,你看原来的王码五笔字型,现在用的人就很多,而早期另外一些汉字输入法,估计连名字能想起的也没有。(高峰)

借鉴国产CAD软件的经验

从上个世纪八十年代接触到dBaseII开始,到后来的dBaseIII、 FoxBase、FoxPro……直到现今所广泛使用的Access、SQL Sever等等数据库产品,全都是舶来品,还没有见到国产的数据库。

在如今国际主流数据库产品占有绝对市场份额的情况下,国产数据库要突出重围、赢得一席之地,的确不是一件容易的事。

国产数据库应当借鉴国产CAD软件以及WPS等国产软件发展的经验教训,要贴近本土市场,勇于创新,先瞄准中小企业,以操作简便、安全可靠、兼容性好、价廉物美、具有中国特色取胜,并以此来培育市场。相信功夫不负有心人,只要能够付出努力,耐得住寂寞,总会有收获的。(杨家琳)

软件公司要稳定

在目前国际主流数据库产品已经很成熟的情况下,按现有的数据库模式发展,国内厂商很难竞争过国外数据库厂商,必须改变数据库的竞争方式。

在中国,中小企业数据库的应用是很需要的,但中小企业不可能招聘很多的数据库管理人员。

数据库厂商为什么不可以联合应用软件厂商,为中小企业的信息化提供一揽子解决方案呢?当然,一揽子解决方案不能一下子收费太高,这样会吓跑中小企业用户。

最重要的是软件公司要稳定,要能提供长期的服务,我国的很多软件公司就是太缺乏稳定性,很难提供长期的稳定服务,以致造成了国内用户对国内软件厂家长期服务能力的不信任,要改变国内数据库竞争的不利状态,必须改变中国软件厂家短命的现状。(樊云)

导向不明确

我参加了最近一次采购,我作为采购方,对所有投我标的厂商作了对比。我希望采用中间价作为中标方,但是采购办的领导说必须让最低价中标,否则无法向投标商交待。

由此我联想到国产数据库的发展问题,其实主要还是我们的导向问题,我们不是没有技术人才,我们也不是没有销售渠道,主要是我们的导向不明确。 (李新华)

证明国产数据库的质量

国产数据库的发展路,就像国产操作系统那样,是一条充满艰难困苦的路。我觉得政府、企业都要重视,你看现在的涉及计算机考试的内容,考的都是国外的数据库系统。

国内的数据库企业应该联合起来,打造一个品牌,国产数据库企业可以将国产数据库系统送到大学、中学,让学生学,用国产数据库,从中获得长远的市场,数据库企业可以将数据库与应用软件结合,提供给客户使用。

一个产品要获得用户的认可,一定要有一定量的用户群在用你的产品或了解你的*产品才行。

说实话,我从IT专业的报纸杂志网站上能经常看到国外数据库的产品介绍、广告,但记忆中很少看到过国产数据库的介绍和广告,只依稀记得早几年东大软件做过数据库系统。

政府部门要从政策、资金等方面扶持开发数据库系统的企业。在政府采购中,优先采购国产数据库系统,企业也要在开发数据库系统的同时将自己的数据库系统捆绑在应用软件上销售出去,能有一定的用户用事实说话,证明国产数据库的质量,日子才会好过起来。(徐志宏)

坚持数年,必有好处

从dBASE II起学、用数据库,现在用SQL server。一开始,只觉得这些东西真好,可以那么方便地管理数据,根本就没有想过什么稳定性、安全性、可靠性、扩展性。在使用这些洋产数据库的同时,我一直在想,为什么就没有中国造的数据库?什么时候能用上中国自己的数据库?我想,有这样想法的肯定不只我一个人。

但直至今日,我还真不知道咱们国家已经有了数据库产品,不知道是什么公司研制开发的,有什么性能,有什么成功案例。

dBASE、Access、SQL sever、Oracle已经培养了一批忠实用户。而国产数据库又以什么样的方式和渠道能让这些只信洋产品的用户了解你、爱上你、拥有你呢?建议国产数据库厂商牺牲一些眼前的短期商业利益,发放一些免费版本。

现在的数据库应用对企业来讲,已经是关系到生产经营决策的关键应用,容不得你冒险。你应该做的和可以做的,就是用免费的版本从一些非关键性应用切入,比如企业网站/个人网站。要知道,LAMP是免费的,并且已被广泛接受。

总而言之要搞免费的产品发布会,发放免费的全功能产品,宣传典型的成功案例,出版各种教程。

国产数据库技术陷入尴尬

国家有关部门在2005年确定的16个科技发展重大专项中,数据库技术就是其中之一。但我国拥有自主知识产权的数据库产品,目前仍处于起步阶段。在这一领域,掌握关键技术的软件企业太少,产品难以推广,尤其是技术产品链不完整。目前,国内企业开发的数据库软件大多数在国家部委或保密单位使用,在民用领域应用则比较少。大多数企业开发的数据库技术,必须使用国外企业的关键技术和产品,这直接导致实际利润空间小,产业价值链短。  每个人的生活都是数据生活,每天的收入开支、工作时间表、饮食习惯、出行习惯、电话通讯……都可以化为一系列数据,进而产生商机。如何把数据变成生产力,甚至把数据变成民生,是眼下全球数据库技术领域关注的热点问题。在东华大学昨天承办的第25届国际数据工程大会上,来自30多个国家和地区的400多名数据库领域学者专家,交流了最前沿的数据库技术,而国内数据库技术如何加快国产化应用,成为与会中国专家关注的重点。据悉,这也是该国际顶尖会议首次“落户”中国。
  数据库技术和生活密切相关
  把啤酒与尿布排在一起能促进消费?接受记者采访时,大会组委会主任、东华大学计算机学院院长乐嘉锦教授举了一个例子:“一位专家在进行数据库分析时偶然发现,超市里啤酒卖得好时,尿布的销量也会上升。这一平日里不被认知的小细节,引起了专家的注意。通过实地调查,专家发现这些买尿布的顾客基本上都是‘新爸爸’。因此,他建议超市把这两类商品摆放在临近的地方,果真这两项商品的销量大大增长。”
  大会主席、中国计算机学会数据库专业委员会副主任李建中教授介绍说,手机套餐、客户分析、风险投资等越来越多领域,已经运用到了数据库技术。“以前我们所说的常用词汇,可能是专家们‘拍脑袋’想出来的,有了数据库之后,这个字在一定的时间段内被运用了多少次,马上就能查出来,这是数据库一个最基本的功能。”
  数据和每个人的生活密切相关,比如医院可以从海量的数据中找到合适的治疗方案,企业可以从数据中获得决策支持信息,这些都与数据库技术相关。传统技术在一个30G的硬盘中找到一个数据要花费16小时,而通过新技术,却可以把这个时间缩短为1分钟。不少发达国家每年要投资数百亿美元,对数据库技术进行研究。
  国内产业链短影响技术发展
  虽然国家有关部门在2005年确定的16个科技发展重大专项中,数据库技术就是其中之一。但我国拥有自主知识产权的数据库产品,目前仍处于起步阶段。据与会专家介绍,在这一领域,掌握关键技术的软件企业太少,产品难以推广,尤其是技术产品链不完整。目前,国内企业开发的数据库软件大多数在国家部委或保密单位使用,在民用领域应用则比较少。大多数企业开发的数据库技术,必须使用国外企业的关键技术和产品,比如国产的数据库有不少在国外的操作系统下开发,或者就是针对国外操作系统开发的,这直接导致实际利润空间小,产业价值链短,甚至不少企业处于为外国企业“集体打工”的状况。
  乐嘉锦教授称,在数据库领域的三大顶级会议上,亚洲论文过去的录用率是20%,国内学者所写文章的录用率是零,但是近两年来,已经有一些国内学者的成果在这些顶级会议上露面了。目前只有达梦、金仓等寥寥几家民族企业在数据库技术领域开发有自主知识产权产品,但是也只占很小的市场份额。最关键的是,国产的数据库软件面临着相关配套软件不多和用户信心欠缺的尴尬。不少软件都是针对国外企业开发的操作系统,国内缺少支持的相关操作系统。而有些企业一听说国产的数据库就直接拒绝。
  “据我所知,本市个别社区卫生中心已在开始使用国产的数据库软件系统,计划中的健康档案制作一旦启动,如果上海1600万市民都必须建立健康档案的话,国产数据库还需要经历一个被相信、被接受的过程。”乐嘉锦建议,国内的生产厂家能在个人隐私保护和相关配套产品开发等方面多下工夫,也希望更多中国人能支持民族产业的发展。

我论国产数据库之路

很早就听说国产数据库的两大巨头:武汉达梦和人大金仓,无奈项目中要么用国外商业数据库,要么用开源数据库,根本轮不到国产数据库,因为我们是系统集成公司,在数据库选型上还要考虑甲方意见,国产数据库为何不能上位,总结原因如下:
1. 国产数据库没有大家熟知的成功案例,宣传也不足。有心人还在网上看到国产数据库在政府某某行业大规模应用,一般人甚至不知道有国产数据库。
2. 国产数据库给人的感觉是骗国家经费做的东西,验收后大家吃吃饭也就完事了,形象营销不到位。
3. 没有人认真推广国产数据库,只是想着政府采购,反正也没有哪个公司出过资,不存在商业亏损,所以大家都不急。
4. 大系统用国外商业数据库放心,也不在意几万、十几万块钱,再说退一步可以用D版。
5. 如果没钱,也不想用D版,还有开源数据库可用,如Pgsql、MySQL,这些经典开源数据库装机量很大,久经考验,也很成熟稳定,用的也放心。
6. 投标时根本不敢写用国产数据库,怕直接被否决了。
7. 国产数据库又花钱,又没名气,又没人推广支持,还不知在几年甚至十几年的产品生命期中是否会出问题,商业上谁用?

就现在的OS和DB来说,时代不同了,我觉得完全从头开发真是很不划算的,有BSD协议的Unix和PostgreSQL用,真是个宝库,完全可以借用。听说武汉达梦和人大金仓都是完全知识产权的产品,但都靠国家投资花了大价钱,但我觉得国产数据库不妨走另一条路:像EnterpriseDB一样借助开源数据库的名气和实力上位。现在名气和功能比较好的产品有Pgsql、MySQL和Firebird,特别是BSD协议的pgsql,特性非常丰富。国产数据库公司(或政府另组织)在保持现有产品的情况下,努力打入pgsql和mysql开发小组,争取进入core team,研究数据库理论,吃透全部代码,提高在开源数据库中声音和力量,同时在国内提供pgsql和mysql的技术服务,大力推广这些开源数据库,服务费也是研发费用的一种补贴。在研究开源数据库的同时,可以与现有产品互相借鉴,取长补短。据说像Oracle和IBM这些大型商业数据库公司都雇人全职为pgsql工作,了解技术研究的新动向,这样做的好处:
1. 充分利用了pgsql和mysql的名气,推广起来要容易的多。
2. 在国内大量部署开源数据库,一定程度上摆脱国外商业数据库公司的控制,由于掌握源代码,信息安全也好把握。
3. 提高在开源领域的地位和话语权。
4. 加入开源团队提高公司在国内开发者心中的形象。
5. 在完全掌握数据库理论和吃透源代码的情况下,退一步在pgsql发展新国产数据库也是很容易的,甚至可以像BSD Unix一样去除全部旧代码,全部重写,形成完全知识产权的国产数据库。

今年最容易赚钱的九类个人网站

1.下载类站点:优点:很容易拉升人气,不需要很多的宣传,更新也不用像新闻那样.缺点就是太多了,另外,如果不是盗连,你要考虑你的空间能撑多久。所以,个人认为,个人站点最开始不宜做依赖或占用资源(空间、带宽,人力等)过大的项目。

2.影音类:现在正在反盗版,要版税,打官司,小心就会找到你,长期发展潜力不大(个人意见,仅供参考)

3.论坛聊天室类: 如果不是疯狂的爱好或者痴迷,建议不要浪费你得宝贵创业时间

4.文学类:不太清楚后期的盈利模式,不敢乱讲:)

5.网址类:这个还不错,懒人的模式,不用更新,呵呵,怎么盈利就是你得事情了

6.门户类:佩服,身兼采编,记者,技术,作者,ceo,经理。。与一身,牛!

7.地方性专业服务类站点:资料丰富,便于管理,容易成功(很容易被大型站点收购,这是个需要考虑的问题),要注意的是一定要有地方特色!

8.基于网络的应用:假如你非常熟悉网络(废话),又非常热爱服装(假设),你可以做一个网上服饰店,产品就需要到大街上找一个原因和你合作的精品店,他们给出价格,你就可以运作,等着盈利了,当然,你愿意做一个介绍你们那里茶叶的站点,我也不会反对。。。哈哈,我认识一个年仅22岁左右的小伙子,2年前买了个350元的空间,找了一个600元的商店程序,投入不到1000块,做了一个数据线的站点,进货,站长,发货都是自己一个人,现在已经作到每个月收入纯利1万以上.

9.基于WAP无线网络的手机网站:手机的发展势头我都不说了,短短几年,手机已经从单纯的通话设备转为多媒体移动信息终端,最近,WAP手机上网的发展尤其引人注目,相信你也看到周围的朋友们都在用手机上网疯狂的下载图片和铃声、浏览新闻和玩游戏吧,那为什么不自己做个WAP网站,让手机用户来访问浏览,为他们提供服务呢?如果你有很好的资源(注意:一定要最合适在手机上展示的内容),下载一个WAP网站平台系统,创建和管理自己的WAP手机网站,可以做免费先聚集人气,如果你的WAP站能网住个几万手机用户,就等数钱了(呵呵,可以收广告费了),也可以向用户收费(通过移动梦网,比如下载一张图片1 块钱)。好好把握,等3G来了后(明年就要发牌照),移动互联将会有一个质的飞跃,早做准备,到时好出手,呵呵!(新浪论坛)

从仅剩两块到年赚两亿:他用了12年

从口袋里只剩两个1元硬币,到一年赚到2亿元,需要多长时间?深圳市脉山龙信息技术股份有限公司总裁汪书福身体力行之后的答案是:12年。

这不是天方夜谭。尽管他现在食有肉,出有车,挥杆高尔夫球场,高等学府里学MBA,但过往的酸甜苦辣仍历历在目,他依然清楚记得艰难岁月里花的每一分钱,走过的每一条路,遇到的每一个坎。

家贫欠贷优等生难领毕业证 不甘窘迫穷小子南下闯深圳

1991年上半年,在合肥工业大学计算机与信息专业的最后一个学期,汪书福准备考研,因为成绩优秀,一切似乎唾手可得。离考试还剩一个月时,汪书福卧病在床的父亲病情加重,汪书福家在农村,兄弟众多,他深感责任重大,于是放弃考研继续求学,分配到了九江一家军工研究所工作。

汪书福最初为自己设计的人生之路非常平淡,那就是结婚、攒钱、排队分房。第一个月56元的工资,根本无法应对捉襟见肘的家庭困境,除资助正在上大学的弟弟,他还要不时接济其他亲人,此外,汪书福还欠着学校1250元的贷款,并因此没拿到毕业证。

汪书福还记得当时结婚时的情形,借来300元才领到了结婚证,请客只花了6元钱,4元钱买菜自做,2元钱买酒,就这样把自己的终身大事张罗了。结婚后,两口子工资加起来才180元,发工资后的第一件事就是存上150元的定期,只余30元家用,日子窘迫到曾经尝试过连续十天用萝卜干下饭。

安居乐业梦变得遥遥无期,1993年,汪书福决定到深圳闯闯。他和妻子拥有的最大一笔财产就是1800元的定期存款。汪书福给妻子留下100多元,就赶往学校去赎毕业证。他找到了学校领导,磨了三天嘴皮子,终获250元的减免,然后怀揣着毕业证和剩下的600元从合肥直下深圳。

遭偷窃身上只剩两块钱 陷绝望深感无一条出路

汪书福抵深后借住在同事的朋友家。那是黄木岗安置区的一间单身公寓,朋友夫妻俩住在房间里,他和同事就在三四平方米的阳台上栖身。第二天,汪书福和同事就迫不及待地赶到了当时位于华强南路的人才市场,可他发现在这里找工作既费钱又费时,便准备尝试其他的办法。

汪书福打听到只花一块钱就可坐公交车到终点站,就选择了特区内运行线路较长的4路车,从上海宾馆站一直坐到蛇口。下车后,他步行顺着原路折回来向沿途的公司挨家挨户毛遂自荐,一直找到下午5点,总算在一家叫亚奥的公司里参加了面试。

在走回黄木岗的路上,一伙人围住了汪书福,其中一个男人向汪书福哭诉自己的困境,汪书福说自己从来没见过男人会痛哭成这个样子,就好言好语安慰他,可等他醒过神时,才发现精心收藏在背包里的500多元钱已被人用方便面调了包。

这500多元钱可是汪书福准备在深圳度日的全部费用啊,此时他口袋里除了两个一元钱硬币外已经是一无所有了。呆坐在草地上,汪书福的心里翻江倒海,痛苦到连死的念头都有了。他想离开这个“邪恶”的地方到海南去。

当汪书福万念俱灰地回到黄木岗时,同事的朋友却告诉他,亚奥公司已经打来电话,让他明天就去上班。深圳,在汪书福到来的第三天,就给了他这样一个戏剧性的开头,让他在绝望和希望之间跌宕起伏,这让他终身难忘。

好辛苦售出两设备 损老板提成猛缩水

汪书福应聘的是研发工程师,但总裁欣赏他的口才,把他安排在供应部任采购工程师,月薪300元。两个月后,汪书福的妻子也来到深圳。没有钱租房,汪书福夫妇只好住集体宿舍。当时深圳已入盛夏,夫妻俩买了床和席子在宿舍楼顶上过夜,把结婚证压在枕头下以备查验,这样一住就是两个月。其间一遇上刮风下雨,妻子只好到女同事宿舍里打地铺。

汪书福是个细心的人,虽然技术和销售不是他的份内事,但他总是留心学习。未雨绸缪终于使他抓住了发挥的机会,有一天公司来了位客户,可销售人员都不在场。老总一下傻了眼,汪书福主动给客户演示产品,极受客户欢迎,老总随后将其转至销售部工作。

后来,汪书福结识了一家做程控交换机业务的企业老总,其产品全部是进口货,质量好但价格也高,一直没有打开市场。这家企业的老板看中汪书福的才能,给了一个销售经理的头衔,许以诱人的提成,但月薪才750元,但公司的住房月租就收750元。汪书福明白他的收入全部来源只能是卖掉机器的提成。

汪书福了解到江西赣州一个县城有意购买程控交换机,在两个月时间,他四次往返于深圳和赣州之间。坐长途夜车沿路要翻越梅岭山脉,汽车经常半路抛锚。汪书福是江西人,借着乡土牌、口才和可靠的产品质量,成功卖出了两台机器。这个成绩让公司高层吃惊不小,却也让他们生出反悔之意,原本答应的十四五万元的提成,变成了两万元。

面对出尔反尔,汪书福选择了离开。

办公司五万打水漂创业失败 再跳槽奖金狂打折热情不减

这时,汪书福的两位朋友拉他合伙开公司做系统集成,每人出资5万,汪书福借了1万多才凑足自己的股份。三个人的分工为技术开发、销售和管理,汪书福还是跑销售。他出差在外时,另外两位合作伙伴因分歧发生了激烈的争执,汪书福感到这样的合作毫无前途,要求退出,但搭档直言相告,人退钱不退。汪书福毅然选择了退出,他的第一次创业就此告终。

1995年,汪书福重新“为他人做嫁衣裳”,先是被一家做网络设备的香港公司看中,派往上海筹建办事处。办事处只有两个人,汪书福白天跑业务,晚上搞开发,花了半年时间解密国外软件。此前汪书福一直认为技术是自己的软肋,这一次让他彻底打通了技术思维瓶颈。有一次汪书福带着上海的客户来深圳玩,公司方面却要一直等到支票兑现才接待客户,而且礼数不周。这种不通人情的做法让汪书福深感心寒,他自掏腰包打了圆场,这批上海客户自此和汪书福结下深厚交情,直到现在仍保持着业务联系。

汪书福接下来的这一次跳槽也属无意插柳。该公司买了一套产品居然两个月无法应用,而汪书福只花了两个小时便大功告成。他还直言不讳地告诉老板:你所处的市场很好,但只做到了1/10的生意。老板高兴地说:“小伙子,你来我们公司干吧。”汪书福进入该公司后的表现证明他对行业的见解不是妄谈,他领头的系统集成部只有6个人,但创利占了公司的一半。汪书福包揽了洽谈、交流、演示等几乎所有环节,曾经单枪匹马舌辩群雄,打败了那些开着奔驰宝马的竞争者,征服了客户。

到年终发奖金时,历史再一次重演。老总面有难色的告诉他,你们部门盈利了,但公司主业是亏损的,给你5万吧。尽管这笔钱已经相当于其他所有员工的奖金总和,但是离他应得数目还有很大差距。不过,热情高涨的汪书福没有介怀,转年他开始注重培养团队,到年底再次取得了好成绩。由于提成比例下降,汪书福自己的收入大幅下降,给团队的许诺也让他左右为难。

放眼长远涉足系统集成 二次创业当年劲赚150万

1997年初,同乡汪浩拉汪书福合伙开公司,但是曾经的失败合作让他心有余悸。他对汪浩说,开公司如果仅仅是为了挣钱,就太没意思了,还不如到赛格买个柜台就行了。这是一件负责任的事,要为员工负责,要有长期打算。两人达成共识,不卖电脑,不卖打印机,而是做有技术含量的系统集成。两人甚至约定,相互了解,相互信任,初创期间10万元之内开销不必计效去处。当汪书福正式离职时,他所在公司的老板也是早有预感,虽然人才难得,但他也深明大义,支持汪书福实现自己的想法。而汪书福也是一个有情有义之人,承诺所负责的项目还将免费维护一年,公司如果有事还可以找他。

1997年2月,脉山龙实业有限公司正式成立,公司设在统建楼,有员工7名。汪书福有大智慧,也不乏小聪明,名片上他不打总经理,而是标上总工程师。自己当家后,汪书福才发现,竞争同行真不少,光深圳有三十多家,全国有几百家。创业的艰难超出了汪书福和汪浩的预期,开业后不久,他们好不容易拿到了上海郊县的一个项目,派去5位技术人员,有4位嫌条件艰苦、待遇不高而离开。原定3个月完成的项目,花了7个月才通过验收,公司员工人心浮动。但汪书福挺过来了,创业当年,脉山龙经营收入150多万元。

进军证券业营收大增 转战基金坐收七千万

成立初期的脉山龙只要有单就揽,电力、政务各行业都做过。而汪书福认为,系统集成有着很强的物业特性,游击队的做法成不了正规军,应该盯准一个行业,那么,该从哪个行业下手呢?

机会很快来了,1998年初,汪书福去看望一位在证券营业部任经理的同学。当时营业部交易系统出了一点问题,同学正拿着手电筒在乱麻般的线路中寻找出错口。汪书福一眼就看出系统采用的是落后的总线型网络,而且施工质量极差。这个场景启发了汪书福,他意识到应主攻证券行业的系统集成。一方面是因为证券行业正进入新一轮的大发展时期,另一方面智能交换机的出现将促使证券行业对IT系统进行升级换代。

发展方向确定以后,脉山龙便在证券行业首次推出了以高品质进入的策略。汪书福过硬的技术为他在证券业赢得了人气。曾经有一家证券营业部的交易系统在股市开盘后出现了故障,无法正常运行,连负责维护的供货商都没了招,于是供货商直接建议客户找汪书福,汪书福在中午休市的短短一个钟头里就排除了故障。

品质牌是脉山龙公司在经营战略上的第一个转型,这一招在散兵游勇居多、靠关系获得订单的市场上果然奏效,市场份额日渐扩大。到2000年,脉山龙经营收入达到了1500万元。而系统集成行业在随后几年的激烈竞争中进行了品牌整合,到目前为止,上规模的公司全国只有四家,深圳有一家,除了脉山龙外,另一家是专注于证券业的金证。

2000年,汪书福又及时抓住了一次“没有对手”的市场机会。这一年,南方基金管理公司搬迁,脉山龙承揽了它的系统集成项目。当时,同行们都认为基金市场太小而很少涉入,汪书福却意识到了其中的潜力,并抢先进入了这个市场。当2001年基金迎来大发展时,脉山龙已经顺利地圈走了他们想要的项目,取得了近 80%的份额。

汪书福把这个转变看作是脉山龙经营策略上的第二次转型。证券业从2000年来一直萧条至今,如果没有从该行业及时转移的话,公司将可能遭遇灭顶之灾。 2002年,脉山龙把经营收入做到了7000万。

三转型专注共性服务 急充电倾心MBA学习

2001年他参加了思科的供应商大会,在交流中他才发现自己陷入了繁杂的公司具体事务,没能站在更高的角度思索公司的未来,而管理中遇到的种种瓶颈又使他意识到脉山龙的经营战略必须再上一个新台阶。汪书福痛下决心完全跳出工作,于2002年到北大光华管理学院读MBA。在那里,同学们都有着相似的成长的烦恼,大家可以尽情探讨,而又无利害冲突。上课时,汪书福是提问最多的人,因为他有着太多的困惑,系统化的学习拓宽了他的视野,理清了他的思路。

汪书福认为,一次成功只能是巧合,要想不断成功,就必须抽丝剥茧,找到问题的关键。系统集成行业看似卖产品,实质上却是信息整合的过程,每个环节都有具体分工,现在大多数公司都专注于行业应用,但是未来中国系统集成商的整合还会加剧。因此,脉山龙如果不想受限于行业发展,就只有走品牌之路,针对行业的共性部分提供服务,而把个性服务交给金证这样的专业公司去做。

汪书福始终充满了危机感,他认为证券业和基金业的容量始终是有限的。第三次战略调整——以品牌整合资源的商业模式在汪书福的头脑中渐渐清晰起来,从 2002年底,脉山龙的业务拓展到了石化、能源领域。2003年,公司经营收入超过了1亿元;2004年,他们又将“模式移植”到了军工、制造等领域,这一年,公司的营业收入达到了2亿元。

不过,汪书福并不满足这样的成绩。他给记者举例说,目前中国IT服务一年的市场需求量高达4000亿元,而且还在以17%至25%的速度上升,而目前提供这类服务的公司产值最大的也不过20亿,前三名加起来也不足40亿。这说明这个市场还没有人胜出,还没有人能够垄断。至于脉山龙的未来,从没有在逆境中丧失过信心的汪书福,现在更是豪情满怀,他希望脉山龙未来5年能跻身中国IT技术服务5强行列。

汪书福妙语
·一个人成功一次是巧合,一个公司的成功不能靠巧合,所以要搞清楚企业的核心竞争力是什么。
·企业的竞争力不在于掌控资源的数量,而在于掌控能力的大小。
·人生需要不断调整定位,但不应设立过高的目标,这样才会看到自己的进步,人生的快乐也会多一些。
·永远不要低估男人肩膀所能承受的力量。
·做企业就像打高尔夫,遇强则强,遇弱则弱。如果对手水平太低,就会随意发挥,甚至打坏几杆也不介意。因此,要选择对手。

2010年3月30日火曜日

如何策划销量突破10万册的计算机图书(转)

我已经很久很久很久很久没有看到销量突破10万册的计算机书了。现今,在计算机图书领域中,销量1万册以上就算好书,2万册以上就算畅销书了。畅销这两个字已经严重贬值了。现在的计算机图书策划人,策划的思路无外乎三种:一种是拼命追求软件新版本(追得真的很累),二种是吐血购买外版畅销书版权(脸一直是肿的),三种是跟貌似畅销书的风(但节奏几乎永远踩不到点上,事实上即使这些被跟风的书本身的销量也是差强人意的)。
按这种思路,销量能突破10万册吗?用脚丫子想想都能知道答案————门都没有。
怎么办?放过这三种方法,换一套尺子和铅笔来建立你的策划思路。
外面天气不错,阴乎乎的下着雨,正适合搞策划。

软件业未来三年快速增长可期

软件业未来三年快速增长可期

  虽然受到国际金融危机的冲击,但在去年不少软件公司还是取得了不错的成绩。同时,机构研究预测,在未来几年中国软件市场将保持一个较快的增长速度,而 一些新趋势的出现也正在影响着行业的发展轨迹。

  从行业龙头业绩来看,东软集团去年收入和净利润同比分别增长12%和31%;用友软件收入和利润同比分别增长36%和52%。部分专业软件细分市场的 领先企业去年也有不同程度增长。远光软件业绩快报显示,去年净利润增长达到56%;恒生电子预计 2009年度净利润同比增长50%以上;久其软件去年净利润同比增长42%。不过,并非所有的软件上市公司利润都实现了增长,个别公司由于业务集中于单个 海外市场,外部经济复苏的滞后和汇率的波动,都影响了企业的业绩。

  随着全球经济逐步地企稳回升,尤其是中国经济强劲的表现,软件行业在今年仍有望保持一个较快的发展速度。根据权威机构预测,2010年中国软件市场的 收入将增长14.8%,首次超过60亿美元,预计将占亚太地区2010年总收入的27%,是该地区最大的软件市场。而到2013年中国在亚太地区软件市场 的份额将达到30%,占全球软件市场总收入的3.3%。

  中国市场的快速发展给国内软件企业提供了巨大机遇,预测指出,中国的企业软件市场在2008年到2013年的复合年增长率将为14.6%,这一数字是 全球最高的市场增长率。这一点在企业报表中也有所体现,2009年东软集团的境内营业收入同比增长达到15.9%,而境外营业收入同比仅增长了 4.9%。

  分析同时指出,中国市场中软件消费排名靠前的四大行业是制造业、金融服务业、通信业和政府,估计这些行业占中国软件总消费的60%。上市软件企业提供 的产品、服务也主要集中于这些行业。

  在市场整体保持较快增长的同时,软件行业也体现出一些新的发展趋势,其中之一就是SaaS的兴起。 SaaS(Software-as-a-service)的意思是软件即服务,它是基于互联网提供软件服务的软件应用模式。SaaS提供商为企业搭建信息 化所需要的所有网络基础设施及软件、硬件运作平台,并负责所有前期后期一系列服务,企业无需购买软硬件、建设机房、招聘IT人员,即可通过互联网使用信息 系统。

  由于SaaS模式能为中小企业在信息化方面节省成本,其发展前景被许多市场人士所看好。近几年,尤其是金融危机发生以来,该业务发展有进一步提速的趋 势。据悉,在国内多个传统管理软件的细分领域中,企业都正在向SaaS市场进军,如用友、金蝶都从所擅长的ERP领域进入,八百客、 Xtools等则从CRM(客户关系管理)领域切入SaaS市场等,而微软、IBM、Oracle等跨国巨头也正在抢滩中国SaaS市场。易观国际就预 测,实现软件服务化、移动网络和基于互联网的软件服务模式将成为2010年一大热点。

http://www.cnsaas.com/Portal/ProjectCenter/ 风云在线,打造中国最大的SaaS资源平台

http://www.800app.com/ CRM客户关系管理软件|云计算CRM-八百客专业的SaaS开发运营商

http://www.saas.com.cn/solutions/prouduct08.asp SaaS(软件即服务)—中小型企业的解决之道

计算机行业书籍销量



有很多朋友关心,一本书能赚多少钱?一本书能卖多少啊?过去的时候,我对这个也很感兴趣。

  今天写了一本如何出书的文章,写了很长时间,很用心去写的,结果被小躺老师给枪毙了,他说我写的这篇文章会给人一种误解,误认为出书就是这么一套流程,这是懂懂出书的流程,并非大众出书的流程,所以不要去误导了别人,我去辩论了,但是还是被枪毙了,我说我们写的教程,多数是一些不走寻常路的思路,我写的并非是说出书的统一教程,而是说一种捷径。

  目前的图书,整体的销售量每年都在上涨,而且出版行业并没有受网络的冲击太大,而且是在持续的增长,但是单种图书的销售量下降了,整体销售量提升的主要原因就是因为图书的种类增加了,作者的营销手段先进了。

  计算机类图书,在卓越上有销售记录的,就有差不多4万种,经管类的图书有8万多种,这是一个庞大的数据量,现在的图书销售,整体销量越来越高,单本的销售量越来越低。

  计算机类图书不同于韩寒类的图书,韩寒类图书,首印就是70万本,版税都是几百万,一般新书都会直接排在销售榜的前3名的,而对于计算机类书来讲,计算机类图书,除了高校教材类的,一般销售量都不会太高,很难突破实现每年几十万本的销量。

  卓越上,计算机类的图书,每天有20本的销量,就能够保持当日销售量的第一名,在刚出书的时候,我问过小躺老师,我问小躺老师这本书能卖多少本啊?小躺老师说2年内争取卖到2万本,很多书一年都卖不到5000本,如果书的定位不好,就会遭到书店退货,退货对于出版社来说就等于投资失败。

  全国有300多家书店,一本书,在一个书店里,一天能够保证一本的销售量,就算很不错的销售量,因为一天就是一个书店平均卖出去1本,还能够有300本/ 天的销售量,计算机类图书比不上经管类图书,是很难被摆放到畅销书区域的,所以只能是等待计算机人去买书的时候,才能够被发现。

  王通前几年出了一本书,卖了几千本,然后就没有再重印,因为王通觉得这个传播速度太慢了,不如自己的电子书被下载的次数高,这是计算机行业图书的特点。

  电子书的优势是便于在同行里进行快速的传播,而实体书的优势是能够将行业外的一些人引进这个行业,并且有可能为作者找寻到朋友和老师,例如有校长看到懂懂的书以后,就对这本书很感兴趣,并且留上一本,做专门的研究。

  电子书更实惠一些,传播起来更便捷一些,实体书更具有影响力一些,不仅仅是一种身份的体现,也是一种对自我的认可,所以电子书要出,实体书也要出。

  计算机类的图书,与名字也有很大的关系,我的那本书,写的一般,名字起的比较好,加上新华书店和卓越等网店的销售,一天也有300多本的销售量。

  计算机类版税一般都不会太高,5%到10%,20元的书给予的版税是每本1~2元,40元的图书给予的是2~4元。

  总之一句话:不要指望通过图书来赚多少钱,出版图书是为自己创造成功阶梯的过程,也是为自己创造朋友的过程,更主要的是让别人认可自己的一个过程。

2010年3月23日火曜日

使用Struts2,Spring2.5,SpringJDBCTemplate 构建小系统快速开发的组合(原创)

○jar包
1.与Struts2和Spring一定可能有关系的jar包(未验证)
activation.jar
commons-beanutils-1.8.0.jar
commons-collections-3.2.jar
commons-dbcp-1.2.2.jar
commons-dbutils-1.1.jar
commons-fileupload-1.2.1.jar
commons-io-1.4.jar
commons-lang-2.4.jar
commons-logging-1.1.1.jar
commons-pool-1.4.jar

2.与Struts2和Spring一定有关系的jar包
freemarker-2.3.8.jar
ognl-2.6.11.jar
spring2.5.5.jar
struts2-core-2.0.14.jar
struts2-spring-plugin-2.0.11.1.jar
xwork-2.0.7.jar

3.proxool数据库连接池关联jar包
proxool-0.9.1.jar
proxool-cglib.jar

4.其他
mysql-connector-java-5.1.7-bin.jar
log4j-1.2.15.jar

○放到WEB-INF下的配置文件
web.xml
applicationContext.xml
context.properties
daoContext.xml

1、web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/daoContext.xml
,/WEB-INF/applicationContext.xml</param-value>
</context-param>

<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.FilterDispatcher
</filter-class>
</filter>

<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

<welcome-file-list>
<welcome-file>login.jsp</welcome-file>
</welcome-file-list>

<session-config>
<session-timeout>30</session-timeout>
</session-config>
<error-page>
<error-code>500</error-code>
<location>/error500.jsp</location>
</error-page>
<error-page>
<error-code>404</error-code>
<location>/error404.jsp</location>
</error-page>

</web-app>

2、applicationContext.xml
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN"
"http://www.springframework.org/dtd/spring-beans-2.0.dtd">

<beans default-autowire="autodetect">

<!-- Dao -->
<bean id="adminListDao" class="jp.co.helios.password.dao.AdminListDao">
<property name="npjt" ref="npjt" />
</bean>

<bean id="volumeDao" class="jp.co.helios.password.dao.VolumeDao">
<property name="npjt" ref="npjt" />
</bean>

<!-- Util -->
<bean id="interceptorUtil" class="jp.co.helios.password.interceptor.InterceptorUtil">
<property name="adminListDao">
<ref bean="adminListDao" />
</property>
</bean>

</beans>

3、context.properties

proxool.driver=com.mysql.jdbc.Driver
proxool.url=jdbc:mysql://192.168.100.83:3306/tf_fsm?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8
proxool.username=root
proxool.password=config
proxool.alias=dbpool
proxool.maximumConnectionCount=5
proxool.minimumConnectionCount=2

4、daoContext.xml
<?xml version="1.0" encoding="gb2312"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">

<beans default-autowire="byName" default-lazy-init="false"
default-dependency-check="none">

<bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location">
<value>/WEB-INF/context.properties</value>
</property>
</bean>

<bean id="dataSource" class="org.logicalcobwebs.proxool.ProxoolDataSource">
<property name="driver">
<value>${proxool.driver}</value>
</property>
<property name="driverUrl">
<value>${proxool.url}</value>
</property>
<property name="user">
<value>${proxool.username}</value>
</property>
<property name="password">
<value>${proxool.password}</value>
</property>
<property name="alias">
<value>${proxool.alias}</value>
</property>
<property name="maximumConnectionCount">
<value>${proxool.maximumConnectionCount}</value>
</property>
<property name="minimumConnectionCount">
<value>${proxool.minimumConnectionCount}</value>
</property>
</bean>

<bean id="npjt"
class="org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate">
<constructor-arg ref="dataSource" />
</bean>

</beans>

○Struts2のStruts.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<constant name="struts.action.extension" value="do" />
<constant name="struts.configuration.xml.reload" value="true" />
<constant name="struts.enable.DynamicMethodInvocation" value="false" />
<constant name="struts.devMode" value="false" />
<constant name="struts.i18n.reload" value="true" />
<constant name="struts.i18n.encoding" value="UTF-8" />
<constant name="struts.ui.theme" value="simple" />
<constant name="struts.objectFactory" value="spring" />

<package name="helios-home" extends="struts-default">
<interceptors>
<interceptor name="loginStack"
class="jp.co.helios.password.interceptor.LoginSessionInterceptor" />
<interceptor-stack name="mystack">
<interceptor-ref name="loginStack" />
<interceptor-ref name="defaultStack"></interceptor-ref>
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="mystack"></default-interceptor-ref>
<default-action-ref name="noAction"></default-action-ref>

<global-results>
<result name="globaluserLogin" type="redirect">gouserindex.do
</result>
<result name="userSideSessionTimeOutResult">/login.jsp</result>
<result name="error" type="chain">exceptionDoAction
</result>
<result name="sql" type="chain">exceptionDoAction
</result>
<result name="nullPoint" type="chain">exceptionDoAction
</result>
<result name="indexOutOfBoundsException" type="chain">
exceptionDoAction</result>
</global-results>

<global-exception-mappings>
<exception-mapping result="error" exception="java.lang.Exception" />
<exception-mapping result="sql" exception="java.sql.SQLException" />
<exception-mapping result="nullPoint"
exception="java.lang.NullPointerException" />
<exception-mapping result="indexOutOfBoundsException"
exception="java.lang.IndexOutOfBoundsException" />
</global-exception-mappings>

<action name="userLoginInterceptAction"
class="jp.co.helios.password.action.UserLoginInterceptAction" />

<action name="exceptionDoAction" class="jp.co.helios.password.action.ExceptionDoAction">
<result>unknownError.jsp</result>
</action>

<action name="noAction">
<result type="redirect">goto404.do</result>
</action>

<action name="goto404" class="jp.co.helios.password.action.CommonAction">
<result name="success">/error404.jsp</result>
</action>


<action name="login" class="jp.co.helios.password.action.CommonAction">
<result name="success">/login.jsp</result>
</action>

<action name="gouserindex" class="jp.co.helios.password.action.CommonAction">
<result>/goIndex.jsp</result>
</action>
<action name="logoutAction" class="jp.co.helios.password.action.LogoutAction">
<result name="usersideLogin">/login.jsp</result>
</action>

<action name="volumeListAction" class="jp.co.helios.password.action.VolumeListAction">
<result name="success">/volumeList.jsp</result>
</action>

</package>
</struts>

○VolumeListAction.java

package jp.co.helios.password.action;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import jp.co.helios.password.dao.VolumeDao;
import jp.co.helios.password.dto.PageParamDTO;
import jp.co.helios.password.dto.SessionDTO;
import jp.co.helios.password.dto.VolumeListDTO;
import jp.co.helios.password.util.CommonUtil;
import jp.co.helios.password.util.PageOperateUtil;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

public class VolumeListAction extends ActionSupport {

private static final long serialVersionUID = 1L;

private Map session;
private SessionDTO sessionDTO = new SessionDTO();
private List list = new ArrayList();
private VolumeDao volumeDao;
public void setVolumeDao(VolumeDao volumeDao) {
this.volumeDao = volumeDao;
}
private int rowCount;
private int currentPage;
private int totalPage;
private int firstpage;
private int endPage;
private int perItemPage;
private int begin;
private int end;
private int perItemsPage;
private String sortName;

public String execute() throws Exception {

ActionContext ctx = ActionContext.getContext();
session = ctx.getSession();
SessionDTO sessionDTO = (SessionDTO)session.get("sessionDTO");
rowCount = volumeDao.getVolumeListCount();
PageParamDTO pageParamDTO = new PageParamDTO();
pageParamDTO.setCurrentPage(currentPage);
pageParamDTO.setPerItemPage(perItemPage);
pageParamDTO.setRowCount(rowCount);
pageParamDTO = PageOperateUtil.pageParamCount(pageParamDTO);
int firstindex = pageParamDTO.getFirstindex();
perItemPage = pageParamDTO.getPerItemPage();
String sortOrder = null;
//sort
if(!CommonUtil.isInvalid(sortName)){
PageOperateUtil.sortCount(sortName,sessionDTO);
sortName = sessionDTO.getSortName();
sortOrder = sessionDTO.getSortOrder();
}
VolumeListDTO volumeListDTO = new VolumeListDTO();
volumeListDTO.setFirstindex(firstindex);
volumeListDTO.setPerItemPage(perItemPage);
volumeListDTO.setSortName(sortName);
volumeListDTO.setSortOrder(sortOrder);
if(rowCount!=0){
list = volumeDao.getVolumeList(volumeListDTO);
}
setFirstpage(firstindex + 1);
setEndPage(firstindex + perItemPage);
setCurrentPage(pageParamDTO.getCurrentPage());
setTotalPage(pageParamDTO.getTotalPage());
pageParamDTO = PageOperateUtil.beginEndCount(pageParamDTO);
begin = pageParamDTO.getBegin();
end = pageParamDTO.getEnd();

return SUCCESS;
}
public Map getSession() {
return session;
}
public void setSession(Map session) {
this.session = session;
}
public SessionDTO getSessionDTO() {
return sessionDTO;
}
public void setSessionDTO(SessionDTO sessionDTO) {
this.sessionDTO = sessionDTO;
}
public List getList() {
return list;
}
public void setList(List list) {
this.list = list;
}
public int getRowCount() {
return rowCount;
}
public void setRowCount(int rowCount) {
this.rowCount = rowCount;
}
public int getCurrentPage() {
return currentPage;
}
public void setCurrentPage(int currentPage) {
this.currentPage = currentPage;
}
public int getTotalPage() {
return totalPage;
}
public void setTotalPage(int totalPage) {
this.totalPage = totalPage;
}
public int getFirstpage() {
return firstpage;
}
public void setFirstpage(int firstpage) {
this.firstpage = firstpage;
}
public int getEndPage() {
return endPage;
}
public void setEndPage(int endPage) {
this.endPage = endPage;
}
public int getPerItemPage() {
return perItemPage;
}
public void setPerItemPage(int perItemPage) {
this.perItemPage = perItemPage;
}
public int getBegin() {
return begin;
}
public void setBegin(int begin) {
this.begin = begin;
}
public int getEnd() {
return end;
}
public void setEnd(int end) {
this.end = end;
}
public int getPerItemsPage() {
return perItemsPage;
}
public void setPerItemsPage(int perItemsPage) {
this.perItemsPage = perItemsPage;
}
public String getSortName() {
return sortName;
}
public void setSortName(String sortName) {
this.sortName = sortName;
}
}


○VolumeDao.java
package jp.co.helios.password.dao;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import jp.co.helios.password.dto.VolumeListDTO;

import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;

public class VolumeDao {

private NamedParameterJdbcTemplate npjt = null;

public void setNpjt(NamedParameterJdbcTemplate npjt) {
this.npjt = npjt;
}

public int getVolumeListCount(){
StringBuffer sb = new StringBuffer();
sb.append("select count(1) ");
sb.append(" from folder_list fl, ");
sb.append(" (select fl.src_helios_volume_id, CONCAT(hv.path,',', hv.AFPName,',',hv.SMBName) as srcVolume ");
sb.append(" from folder_list fl ,helios_volume hv ");
sb.append(" where ");
sb.append(" fl.src_helios_volume_id = hv.helios_volume_id) t1, ");
sb.append(" (select fl.dst_helios_volume_id, CONCAT(hv.path,',', hv.AFPName,',',hv.SMBName) as dstVolume ");
sb.append(" from folder_list fl ,helios_volume hv ");
sb.append(" where ");
sb.append(" fl.dst_helios_volume_id = hv.helios_volume_id) t2 ");
sb.append(" where fl.src_helios_volume_id = t1.src_helios_volume_id ");
sb.append(" and fl.dst_helios_volume_id = t2.dst_helios_volume_id ");
return npjt.getJdbcOperations().queryForInt(sb.toString());
}

public List getVolumeList(VolumeListDTO volumeListDTO){

Integer firstindex = volumeListDTO.getFirstindex();
Integer perItemPage = volumeListDTO.getPerItemPage();
String sortName = volumeListDTO.getSortName();
String sortOrder = volumeListDTO.getSortOrder();

StringBuffer sb = new StringBuffer();
Map paramMap = new HashMap();
sb.append(" select t1.srcVolume as srcVolumeName,t2.dstVolume as dstVolumeName," +
"fl.src_folder as srcFolder,fl.operation as operation,fl.dst_folder as dstFolder ");
sb.append(" from folder_list fl, ");
sb.append(" (select fl.src_helios_volume_id, CONCAT(hv.path,',', hv.AFPName,',',hv.SMBName) as srcVolume ");
sb.append(" from folder_list fl ,helios_volume hv ");
sb.append(" where ");
sb.append(" fl.src_helios_volume_id = hv.helios_volume_id) t1, ");
sb.append(" (select fl.dst_helios_volume_id, CONCAT(hv.path,',', hv.AFPName,',',hv.SMBName) as dstVolume ");
sb.append(" from folder_list fl ,helios_volume hv ");
sb.append(" where ");
sb.append(" fl.dst_helios_volume_id = hv.helios_volume_id) t2 ");
sb.append(" where fl.src_helios_volume_id = t1.src_helios_volume_id ");
sb.append(" and fl.dst_helios_volume_id = t2.dst_helios_volume_id ");
sb.append(" limit :firstindex,:perItemPage ");
paramMap.put("firstindex", firstindex);
paramMap.put("perItemPage", perItemPage);

List volumeList = new ArrayList();
List rows = npjt.queryForList(sb.toString(), paramMap);
Iterator it = rows.iterator();
while(it.hasNext()) {
Map userMap = (Map) it.next();
VolumeListDTO dto = new VolumeListDTO();
dto.setSrcVolumeName(userMap.get("srcVolumeName").toString());
dto.setSrcVolumeName(userMap.get("dstVolumeName").toString());
dto.setSrcFolder(userMap.get("srcFolder").toString());
dto.setOperation(userMap.get("operation").toString());
dto.setDstFolder(userMap.get("dstFolder").toString());
volumeList.add(dto);
}
return volumeList;
}
}

2010年3月18日木曜日

谈谈我的海外创业经历

我是 2004 年初月第二次来新西兰的。之前一直做技术工作。 04 年回到新西兰以后,我发现我以前认识的一些朋友,原来在新西兰的大学毕业很久都找不到工作的人,他们做装修,搞房地产发了。有人开电脑店,开网吧的人也赚了很多钱。而那些找工作比较顺利地朋友,还在作他原来的工作,可能工资上涨了一点点,但不会太多。老板给他们的涨的工资刚刚好保障他们不会跳槽。 这些事情,让我感触很深,看来还是要做一点生意才有好,但不知道从何下手。

刚开始 , 我在 Auckland 家具店搬过家具,去 Hasting 果园摘过苹果, 后来 在 Hamilton 一个很小的电脑公司做了几个月。在这段工作期间,我发现新西兰的中小企业,非常需要经验丰富的网络技术人员给他们提供优质的网络咨询和服务。很多小公司的网络都有安全或者性能等方面的问题。许多小老板对公司的网络很头疼。我觉得我如果利用自己的技术优势,搞一个网络咨询公司,专门给中小公司做网络服务。会有较大的成功机会。就这样,我在 2004 年 7 月注册成立了一个自己的网络服务公司。

公司注册以前,我就把我的客户瞄准洋人市场。很多华人只做华人的生意,而且打价格战打得狠厉害。我想在奥克兰华人只占 由 5% 的比例,我应该把主要目标瞄准更广的 95% 的客户市场。所以我从来没有在华人的报纸上登过广告。刚开始时在 North Shore Time 等报纸上做广告。开始两个星期,一个客户的电话也没有,心里也是很担心。慢慢的,生意就起来了。由于我所提供的服务远远超出我的竞争对手的水平,我的许多客户后来都成了我的市场推广员。在这个同时,我花了许多时间已经研究市场营销,特别是利用网络营销的手段宣传我公司的服务,取得了非常很好的效果。大约在一年以前,我就停止的了任何的市场推广,新的客户还是源源不断的打电话找我。收费从刚开始的 $40/ 小时到现在的 $90/ 小时 +GST 。花了不到 1 年时间,我就把这个生意做起来了。尽管我的生意还是个小生意,但我觉得还是比较成功的。自由,在家上班,每周工作 20 小时,就可以保证我的家庭在新西兰过上一种小康的生活。

差不多一年前,在我的生意稳定以后,我就开始思考新的问题了。我现在的这个生意是出卖我的时间换取金钱, 如果我工作时间长一点,我是可以做赚一点钱,但我 们每天只有 24 小时, 永远不会多一点时间。我一天不工作就一天没有收入。我觉得这样下去还是不行。

我开始思考做电子商务。一个成功的网络商店,在你睡觉的时候,你的网上商店也在为你赚钱。而且不受时间地点的限制,你可以在全世界任何地方运作你的网上生意。于是,我在去年 8 月份,化 $5000 参加了一个如何做电子书网上生意的培训。我的老师叫 Tom Hua 。也是一个华人,现在墨尔本,十几年也前从中国大陆到澳大利亚去的留学生。他现在是全球最大的电子书出版商,也是全球最大的网络营销论坛 world internet summit 的创始人。

我觉得我们华人在新西兰创业的有很多优势,也有一些劣势。如果我们能够发挥我们的优势,而尽量避免自己的劣势,在新西兰创业其实是很容易成功的。我们的优势是勤奋,聪明,重视教育,基础扎实; 我们的劣势是 语言障碍 ,观念不同, 不能站在洋人客户的角度去思考。

下面给你举两个例子:

1) 每个人来自海外的华人都会认为大多数 KIWI 很懒。 在一个大多数人都很懒的社会里,勤奋的人是比较容易取得成功的,因为竞争少,对不对?但是我们很多华人朋友做生意还是在华人的生意,竞争也是在更同样很勤奋的华人竞争,这样的竞争当然会很惨烈!所以我的做法就是,避开锋芒,跟那些比较懒的 KIWI 竞争。 很多 KIWI 在下班后或者周末给客户服务是要加收 50%-100% 的服务费的。 但我正好相反,尽量把一些大项目比如电脑服务器安装等安排在周末作。因为如果服务器安装在正常时间上班时间进行,必然会影响客户的正常业务。我站在客户的角度,安排工作尽量不影响他的生意,而且我在周末干活不加收服务费。客户当然对我的服务很满意,而且会向他认识的人推荐我的服务;

2) 很多华人不敢去开拓洋人市场是觉得自己英语不行,觉得他们不会接受自己。如果你这样想的话,你自己就已经不接受自己了。这个观点一定要转变过来。我认为如果你在新西兰上过大学,或则在国内大学毕业,在这里生活了 1-2 年,你的英文能力绝对可以去开拓洋人市场了!上周末,我给 30 多个 KIWI 上了一天的网络营销的培训课程,这是我第一次正式用英文给 KIWI 上课,准备的时候也是有点担心他们是否接受我不太流利的英语以及很重的口音。培训结束时,学员们给了我两次热烈的掌声,只少有 10 个人上来对我的培训表示感谢。搞得我非常感动。我问我的不太标准的发育是否影响培训效果?他们的回答是: We don’t come for English class, we come for learning knowledge ”

不管你是想在新西兰创业,还是只是想找一份工作,都需要有一个正确的心态。经常听到有人抱怨说找工作被歧视,或则说不敢去开拓 KIWI 市场。很多时候别人并没有歧视你,而可能是你自己在歧视自己。如果我没有做错什么事情,而有人真的“歧视”我的话,我会觉得那个人素质太差,我不会觉得被人“歧视”。 2004 年初来新西兰的时候,我搬过家具,摘过苹果。 Hamilton 的电脑公司老板就是了解到我在摘苹果,觉得我的心态很好,才放心让我去他的电脑公司修电脑。当然在这个小电脑公司的工作经历,对我后来自己创业有很大的帮助。如果在一个大公司打工,我想很难明白这个公司的运作流程,也不会有胆量这么快就自己开业了。

关于开拓洋人市场,如果你的产品或者服务是洋人市场需要的,根本不必担心自己英语不行而被别人拒绝。特别是,你可以借助互网络,先用 email 等工具你的客户联系。你觉得自己 email 也写得不好的话,可以找一个洋人朋友帮你修改修改。这样你就可以扬长避短。 3 年前我来新西兰的时候,英文也不行。但我从来没有英文英语不行而丢掉一个客户过。

如果你想知道两年下来,我有一点什么经验心得。我愿意在这里跟各位分享一下:

1) 不要担心自己是华人,而不敢去开拓洋人市场。其实洋人的排外心理没有你想象的那么厉害;

2) 你必需提高很好的服务,或者很好的产品。如果你做不到这一点,我觉得你还是花心思在质量上下功夫;

3) 互联网作为新型的媒体手段,对那些新成立的公司,更应该充分加以利用, 可以达到事半功倍的效果;

4) 免费试用是最强有力的市场推广手段,客户无法拒绝, 这一点对新客户特别有效;

5) 与竞争对手比服务质量,而不是服务价格。好的客户关心质量的程度超过对于价格的计较。对价格很计较的客户也不是好的客户。

6) 提供最好的服务,让你开心满意的客户去为你做义务推广。

在加拿大上班乐趣多

 去加拿大之前我还很是担心,在资本主义的企业里,是否会是一派老板高高在上、员工低声下气的景象,而且会受到“无情的剥削”。然而来了后才发现,不是那么回事。我所在的这家美国软件公司加拿大分公司,老板是位女性,说起话来和风细雨的,没半点“拿摩温”的影子。在这样的氛围里,每个成员都在愉快地工作,而且都把工作作为有趣的事情。   
  在许多人看来,上班总是件苦差事。那么,在加拿大上班,为何成为一件有趣的事情?弹性工作制,是最有趣的地方。虽然只是一个小小的制度,却寓有很深的哲学道理。弹性就是收放自如,员工身心放松了,工作效率自然就大大提高。特别是像我这样搞软件咨询工作的,干的是“脑力活”,有时候碰上个紧急项目,或要编个大些的程序,脑子不能停下来,而要连续工作好几个小时;而有时候却特别空,需要好好休息一下,或是上图书馆“进补”些新知识。因此,这种弹性工作制给了我相当大的活动空间,能把工作安排得滴水不漏而又游刃有余。   
  有属于自己的小空间,这是第二个有趣的地方。在国内的时候,十几个人挤一间大办公室,吵吵嚷嚷的很难安静下来。这里就不太一样,搞技术的大多是两人一间办公室,部门经理有单独的办公室,行政人员即使在一起办公,也都有隔板隔开,有自己的一方天地。公司上班时还播放背景音乐,据说老板是受日本公司利用音乐提高奶牛产奶率的启发。虽然被当作了“奶牛”,但我们看在工作环境的“面子”上还是照单全收。为了照顾我这个公司里唯一的中国人,每周还会播放俞丽娜的小提琴独奏曲《梁山伯与祝英台》。每次当熟悉的音乐缓缓地响起,我都会感动不已。   
  第三个有趣的是地方就是沟通方式。同事之间的沟通方式以电子邮件为主,工作上遇到什么问题,发个电邮咨询一下,有时甚至连远在法国分公司的素未谋面的同事也会帮着解决问题。员工和老板间的沟通也是如此,偶尔也有电话沟通,那只是让员工去签一些文件,其它的事大多在网上解决,而不占用员工太多的时间。也出于这个原因,公司里的会议不多,每周的早会定了10分钟,但一般情况下,老板检查一下员工的工作进度,问问有何新问题,言简意赅,3分钟就搞定了。我印象中较大规模的会议只有一次,因为老板要宣布公司开发部和美国公司合并的重要决定,并回答员工的问题。那么大的事,会议也只开了半个小时,没有长篇大论,大家都拣精要的说,说完了就散伙。与国内一些企业文山会海的场景相比,真是有天壤之别。   
  此外,公司的文化氛围也十分有趣。公司里各色人种都有,不同的人代表着不同的文化背景,因此看上去就像个小联合国。中国人在加拿大还是很受欢迎的,每逢中国的农历新年,很多同事都会赶来祝我新年快乐。公司的产品中有不少采用中文系统,我就理所当然地成了“特级顾问”,同事们纷纷拜我为师,令我好不得意。但得意就会忘形,有一次同事问我一个怪字,《新华字典》查了半天也没有,想来得查《康熙字典》才行。同事们在惊叹中国文化博大精深之时,我却暗自惭愧功夫不到家。   
  外面的世界的确很大,而且有着迥然不同的风景。我觉得,无论是出国留学,还是出国发展,领略不同的风土人情,同时增长自己的人生阅历,这才是最大的收获。

2010年3月4日木曜日

易经和五术

五术的(山、医、命、相、卜 )基本构成,都是源自易经,易经涵盖时空,宇宙的万事万物,都阴阳相互对立又能相互转化,如冬去春来,夏去秋来,月升日落,老死少生等等。

《山》

所包含的是修心养性、锻炼身体的秘术,是最深奥、最神秘的,也是最容易被人误解为"迷信"的一种。"山"包含《玄典》、《养生》、《修密》三部分的修习。

玄典--一切可以修身养性的好书都可以用来修习,如《老子》、《庄子》、《列子》、《孙子》、《太公阴符经》、《黄帝内经》、《道藏》甚至《西游记》等一切书籍都被拿来充实思想、参悟宇宙道理。

养生--追求健康长寿的吐纳法--气功。道家的炼丹法,称之为天丹、人丹、地丹。

修密--符咒法、压镇法、祈星法、武术等,利用运动以及精神、意念的统一来提高身心境界的方法。 也有秘术门派将"山"分为仙、道、幻、灵、兵五种方法。而其范围不离上述三部分。山是秘术中最不容易达到的境界,严格地说,它是凡人修仙道的工夫,是求超脱的形而上之追求,只有"命、卜、相、医"流在江湖凡尘济世了。


《医》

医包括三部分。

方剂--使用药物,根据表里、虚实、寒热,再应用古老的周易八卦来治疗各种疾病一种方法。如易经的阴极生阳,阳极生阴。

针灸--以《黄帝内经》、《难经》辩奇经八脉、穴道,用铜针刺穴道治疗疾病的方法。

灵疗--以催眠术、暗示法及集中精神意念,利用《祝由十三科》做药引来治疗疾病的方法。


《命》

"命"是以时间、空间的磁场来判断人的命运的一种方法。其重要的方法有:

占星术--在占星术所包含的有《七政四余》、《紫薇斗数》、《五星术》。

干支术-- 以人出生时间,年月日时以天干地支排列成命,四柱中命的部分典籍最多,重要的古籍有:《果老星宗》、《星平会海》、《渊海子平》、《鬼谷遗文》、《孙膑遗书》、《三命通会》、《穷通宝鉴》(又名栏江纲)、《滴天髓》、《神峰通考》、《铁板神数》、《河洛理数》、《子平真诠》、《子平粹言》……等等。现代人的命学著作更是汗牛充栋,不胜枚举。


《卜》

所有数术玄学以卜术最为渊源流长,历史朝代中的军事家大多精通此术,汉朝的诸葛亮、唐朝的李淳风、宋朝的邵康节、明朝的刘伯温、清朝的曾国藩……诸术以卜派最为渊源流长,从古老的周易演化而来,如《梅花易数》、《纳甲断易》、《六壬神课》、《太乙神数》、《奇门遁甲》等数术学。有的门派在卜的这一部分还包括预言、克应占梦、测字解字、签贴、姓名学等方术。


《相》

相的部分包括两种:

人相--手相、面相、体相、摸骨、痣相等,代表著作有《观人于微》、《相理衡真》、《神相铁关刀》、《水镜神相》、《麻衣神相》、《金铰剪》等。

地相--地相就是古时的《堪舆术》,分为看门井灶的阳宅相法与看龙穴砂水向的阴宅相法,一般称为风水术。其主要的流派有《三元法》、《三合法》、《九星法》等。

2010年3月3日水曜日

男人最害怕的妻子类型排行榜

美国的一些心理学家调查了夫妻不和的心理,在统计了庞大资料,汇整后制作了一个丈夫最怕的妻子排行榜:

(1) 妻子整日喋喋不休的唠叨。

(2) 夫妻俩缺乏共同兴趣。

(3) 妻子个性自私、不知体贴和体谅。

(4) 妻子老是批评老公的嗜好,并且加以干涉。

(5) 妻子常常衣着不整,不重视自己的门面装扮。

(6) 妻子的脾气急躁,常口不择言。

(7) 妻子老是干涉他对子女的管教。

(9) 妻子的情感太过脆弱、不堪一击,需要时时呵护,令丈夫备感疲累。

(10) 妻子的心胸狭窄,喜欢斤斤计较。

(11) 妻子疏于理家,甚至不理家务,任凭家中一团乱。

(12) 妻子生性好争辩,喜欢鸡蛋里挑骨头,对丈夫吹毛求疵。

(13) 妻子对丈夫不忠实。

(14) 妻子企图妨碍丈夫的事业。

(15) 妻子生性骄纵,对子女缺乏管教、过度放纵。

(8) 妻子老爱在他人面前自夸、逞能。

京东商城刘强东:10年10亿才能做好电子商务

在中国,没有10年时间,10个亿的资金投入,谁也别想做成一个像样的电子商务公司

  文|刘强东

  3年前,每当我看到各大媒体发表文章,纷纷声称视频网站是烧钱大户、烧钱机器等诸如此类的报道时,我都是无奈且冷然一笑。如果他们知道在互联网里面还有一个叫电子商务的细分行业的话,那么他们就绝不会去说视频公司烧钱如何如何了。可以这么说:在电子商务公司面前,它们的烧钱速度和金额简直是小巫见大巫。

  电子商务不仅注定是互联网中烧钱最多的行业,而且发展周期也最长的。当然,本处所指的电子商务主要指的是自主经营型的电子商务公司,如京东商城、亚马逊等,并不包括平台型电子商务,如eBay、淘宝等。我有一个最保守的观点就是:想做成一个成功的电子商务公司,至少需要10年时间,最少也要烧掉10个亿现金。请注意,我说的是最保守的观点。也就是说,绝大多数电子商务公司,如果想要成功,实际需要的时间将大大超过10年,资金投入也会远远高于 10个亿。

  一、时间长

  简单来说:一条完整的供应链,包括从设计、研发、原材料供应管理、生产、推广、销售、支付、配送,最终到达终端消费者手中,自主经营型电子商务公司几乎承担了整条供应链中一半以上环节:从厂商的生产线下线开始,一直到到达消费者手中,所有环节都涉及了。由此造成了所有自主经营型电子商务公司都无法绕过的门槛:庞大复杂的信息系统开发(包括UI/UE、BI、订单系统、采销系统、仓储系统、配送系统、财务系统、支付系统、呼叫中心系统、CRM系统、售后服务系统等等,这些系统的研发没有五年时间是根本无法建立起来的)和广告、采购、销售、库存管理、配送、支付、售后服务等众多环节,这些环节无一不需要大量的时间积累才能够逐步地协调和完善。

  供应链的管理是一种学习曲线很长的能力,是典型的J型曲线。越过这条J型曲线的弯钩,没有10年时间的知识积累几乎不太可能。

  二、烧钱多

  根据上面的介绍,大家基本可以算出,仅是信息系统的开发这一项,没有2~3个亿是做不出来的;市场费用最保守的算法:每年5000万,10年的时间,也需要5个亿;而大型物流中心的建造,更是需要巨额的费用。根据京东商城目前的测算,一个10万平方米左右的大型物流中心,包括土地、建筑、库内设备以及其他附属设施,至少需要花费6个亿。中国国土幅员辽阔,没有4个大型物流中心,很难覆盖全国市场,也就意味着仅仅库房就需要总共花费24亿。算上各类二级库房和配送站,没有30个亿根本建立不起来覆盖全国的物流体系。

  另外,各类财务费用,如税费和各种管理费用:如人力资源成本等等每项也都是以亿为单位计算。如此庞大的开支,即使有很好的毛利,没有10个亿以上的外来资金作为支持是一项绝不可能完成的任务。

  在中国,没有10年时间,10个亿的资金投入,谁也别想做成一个像样(本文所指像样是指年销售200亿以上,净利5亿以上,这是对比线下零售商的规模得出的)的电子商务公司。大家赶紧抓图留存,老刘敢跟任何人打赌。

  (本文作者为京东商城创始人)

日本宽带速度测试(附图)


这是在日本用Firefox浏览器下载Oracle 11g时候的贴图,看看就知道了吧!普通家庭100M光纤!!!

2010年3月2日火曜日

Mysql日期和时间函数不求人

以下正文:
对于每个类型拥有的值范围以及并且指定日期何时间值的有效格式的描述见7.3.6 日期和时间类型。

这里是一个使用日期函数的例子。下面的查询选择了所有记录,其date_col的值是在最后30天以内:

mysql> SELECT something FROM table
WHERE TO_DAYS(NOW()) - TO_DAYS(date_col) <= 30;

DAYOFWEEK(date)
返回日期date的星期索引(1=星期天,2=星期一, ……7=星期六)。这些索引值对应于ODBC标准。
mysql> select DAYOFWEEK('1998-02-03');
-> 3

WEEKDAY(date)
返回date的星期索引(0=星期一,1=星期二, ……6= 星期天)。
mysql> select WEEKDAY('1997-10-04 22:23:00');
-> 5
mysql> select WEEKDAY('1997-11-05');
-> 2

DAYOFMONTH(date)
返回date的月份中日期,在1到31范围内。
mysql> select DAYOFMONTH('1998-02-03');
-> 3

DAYOFYEAR(date)
返回date在一年中的日数, 在1到366范围内。
mysql> select DAYOFYEAR('1998-02-03');
-> 34

MONTH(date)
返回date的月份,范围1到12。
mysql> select MONTH('1998-02-03');
-> 2

DAYNAME(date)
返回date的星期名字。
mysql> select DAYNAME("1998-02-05");
-> 'Thursday'

MONTHNAME(date)
返回date的月份名字。
mysql> select MONTHNAME("1998-02-05");
-> 'February'

QUARTER(date)
返回date一年中的季度,范围1到4。
mysql> select QUARTER('98-04-01');
-> 2

WEEK(date)
 
WEEK(date,first)
对于星期天是一周的第一天的地方,有一个单个参数,返回date的周数,范围在0到52。2个参数形式WEEK()允许
你指定星期是否开始于星期天或星期一。如果第二个参数是0,星期从星期天开始,如果第二个参数是1,
从星期一开始。
mysql> select WEEK('1998-02-20');
-> 7
mysql> select WEEK('1998-02-20',0);
-> 7
mysql> select WEEK('1998-02-20',1);
-> 8

YEAR(date)
返回date的年份,范围在1000到9999。
mysql> select YEAR('98-02-03');
-> 1998

HOUR(time)
返回time的小时,范围是0到23。
mysql> select HOUR('10:05:03');
-> 10

MINUTE(time)
返回time的分钟,范围是0到59。
mysql> select MINUTE('98-02-03 10:05:03');
-> 5

SECOND(time)
回来time的秒数,范围是0到59。
mysql> select SECOND('10:05:03');
-> 3

PERIOD_ADD(P,N)
增加N个月到阶段P(以格式YYMM或YYYYMM)。以格式YYYYMM返回值。注意阶段参数P不是日期值。
mysql> select PERIOD_ADD(9801,2);
-> 199803

PERIOD_DIFF(P1,P2)
返回在时期P1和P2之间月数,P1和P2应该以格式YYMM或YYYYMM。注意,时期参数P1和P2不是日期值。
mysql> select PERIOD_DIFF(9802,199703);
-> 11

DATE_ADD(date,INTERVAL expr type)
 
DATE_SUB(date,INTERVAL expr type)
 
ADDDATE(date,INTERVAL expr type)
 
SUBDATE(date,INTERVAL expr type)
这些功能执行日期运算。对于MySQL 3.22,他们是新的。ADDDATE()和SUBDATE()是DATE_ADD()和DATE_SUB()的同义词。
在MySQL 3.23中,你可以使用+和-而不是DATE_ADD()和DATE_SUB()。(见例子)date是一个指定开始日期的
DATETIME或DATE值,expr是指定加到开始日期或从开始日期减去的间隔值一个表达式,expr是一个字符串;它可以以
一个“-”开始表示负间隔。type是一个关键词,指明表达式应该如何被解释。EXTRACT(type FROM date)函数从日期
中返回“type”间隔。下表显示了type和expr参数怎样被关联: type值 含义 期望的expr格式
SECOND 秒 SECONDS
MINUTE 分钟 MINUTES
HOUR 时间 HOURS
DAY 天 DAYS
MONTH 月 MONTHS
YEAR 年 YEARS
MINUTE_SECOND 分钟和秒 "MINUTES:SECONDS"
HOUR_MINUTE 小时和分钟 "HOURS:MINUTES"
DAY_HOUR 天和小时 "DAYS HOURS"
YEAR_MONTH 年和月 "YEARS-MONTHS"
HOUR_SECOND 小时, 分钟, "HOURS:MINUTES:SECONDS"
DAY_MINUTE 天, 小时, 分钟 "DAYS HOURS:MINUTES"
DAY_SECOND 天, 小时, 分钟, 秒 "DAYS HOURS:MINUTES:SECONDS"

MySQL在expr格式中允许任何标点分隔符。表示显示的是建议的分隔符。如果date参数是一个DATE值并且你的计算仅仅
包含YEAR、MONTH和DAY部分(即,没有时间部分),结果是一个DATE值。否则结果是一个DATETIME值。

mysql> SELECT "1997-12-31 23:59:59" + INTERVAL 1 SECOND;
-> 1998-01-01 00:00:00
mysql> SELECT INTERVAL 1 DAY + "1997-12-31";
-> 1998-01-01
mysql> SELECT "1998-01-01" - INTERVAL 1 SECOND;
-> 1997-12-31 23:59:59
mysql> SELECT DATE_ADD("1997-12-31 23:59:59",
INTERVAL 1 SECOND);
-> 1998-01-01 00:00:00
mysql> SELECT DATE_ADD("1997-12-31 23:59:59",
INTERVAL 1 DAY);
-> 1998-01-01 23:59:59
mysql> SELECT DATE_ADD("1997-12-31 23:59:59",
INTERVAL "1:1" MINUTE_SECOND);
-> 1998-01-01 00:01:00
mysql> SELECT DATE_SUB("1998-01-01 00:00:00",
INTERVAL "1 1:1:1" DAY_SECOND);
-> 1997-12-30 22:58:59
mysql> SELECT DATE_ADD("1998-01-01 00:00:00",
INTERVAL "-1 10" DAY_HOUR);
-> 1997-12-30 14:00:00
mysql> SELECT DATE_SUB("1998-01-02", INTERVAL 31 DAY);
-> 1997-12-02
mysql> SELECT EXTRACT(YEAR FROM "1999-07-02");
-> 1999
mysql> SELECT EXTRACT(YEAR_MONTH FROM "1999-07-02 01:02:03");
-> 199907
mysql> SELECT EXTRACT(DAY_MINUTE FROM "1999-07-02 01:02:03");
-> 20102

如果你指定太短的间隔值(不包括type关键词期望的间隔部分),MySQL假设你省掉了间隔值的最左面部分。例如,
如果你指定一个type是DAY_SECOND,值expr被希望有天、小时、分钟和秒部分。如果你象"1:10"这样指定值,
MySQL假设日子和小时部分是丢失的并且值代表分钟和秒。换句话说,"1:10" DAY_SECOND以它等价于"1:10" MINUTE_SECOND
的方式解释,这对那MySQL解释TIME值表示经过的时间而非作为一天的时间的方式有二义性。如果你使用确实不正确的日期,
结果是NULL。如果你增加MONTH、YEAR_MONTH或YEAR并且结果日期大于新月份的最大值天数,日子在新月用最大的天调整。

mysql> select DATE_ADD('1998-01-30', Interval 1 month);
-> 1998-02-28

注意,从前面的例子中词INTERVAL和type关键词不是区分大小写的。
TO_DAYS(date)
给出一个日期date,返回一个天数(从0年的天数)。
mysql> select TO_DAYS(950501);
-> 728779
mysql> select TO_DAYS('1997-10-07');
-> 729669

TO_DAYS()不打算用于使用格列高里历(1582)出现前的值。

FROM_DAYS(N)
给出一个天数N,返回一个DATE值。
mysql> select FROM_DAYS(729669);
-> '1997-10-07'

TO_DAYS()不打算用于使用格列高里历(1582)出现前的值。

DATE_FORMAT(date,format)
根据format字符串格式化date值。下列修饰符可以被用在format字符串中: %M 月名字(January……December)
%W 星期名字(Sunday……Saturday)
%D 有英语前缀的月份的日期(1st, 2nd, 3rd, 等等。)
%Y 年, 数字, 4 位
%y 年, 数字, 2 位
%a 缩写的星期名字(Sun……Sat)
%d 月份中的天数, 数字(00……31)
%e 月份中的天数, 数字(0……31)
%m 月, 数字(01……12)
%c 月, 数字(1……12)
%b 缩写的月份名字(Jan……Dec)
%j 一年中的天数(001……366)
%H 小时(00……23)
%k 小时(0……23)
%h 小时(01……12)
%I 小时(01……12)
%l 小时(1……12)
%i 分钟, 数字(00……59)
%r 时间,12 小时(hh:mm:ss [AP]M)
%T 时间,24 小时(hh:mm:ss)
%S 秒(00……59)
%s 秒(00……59)
%p AM或PM
%w 一个星期中的天数(0=Sunday ……6=Saturday )
%U 星期(0……52), 这里星期天是星期的第一天
%u 星期(0……52), 这里星期一是星期的第一天
%% 一个文字“%”。

所有的其他字符不做解释被复制到结果中。

mysql> select DATE_FORMAT('1997-10-04 22:23:00', '%W %M %Y');
-> 'Saturday October 1997'
mysql> select DATE_FORMAT('1997-10-04 22:23:00', '%H:%i:%s');
-> '22:23:00'
mysql> select DATE_FORMAT('1997-10-04 22:23:00',
'%D %y %a %d %m %b %j');
-> '4th 97 Sat 04 10 Oct 277'
mysql> select DATE_FORMAT('1997-10-04 22:23:00',
'%H %k %I %r %T %S %w');
-> '22 22 10 10:23:00 PM 22:23:00 00 6'
MySQL3.23中,在格式修饰符字符前需要%。在MySQL更早的版本中,%是可选的。

TIME_FORMAT(time,format)
这象上面的DATE_FORMAT()函数一样使用,但是format字符串只能包含处理小时、分钟和秒的那些格式修饰符。
其他修饰符产生一个NULL值或0。
CURDATE()
 
CURRENT_DATE
以'YYYY-MM-DD'或YYYYMMDD格式返回今天日期值,取决于函数是在一个字符串还是数字上下文被使用。
mysql> select CURDATE();
-> '1997-12-15'
mysql> select CURDATE() + 0;
-> 19971215

CURTIME()
 
CURRENT_TIME
以'HH:MM:SS'或HHMMSS格式返回当前时间值,取决于函数是在一个字符串还是在数字的上下文被使用。
mysql> select CURTIME();
-> '23:50:26'
mysql> select CURTIME() + 0;
-> 235026

NOW()
 
SYSDATE()
 
CURRENT_TIMESTAMP
以'YYYY-MM-DD HH:MM:SS'或YYYYMMDDHHMMSS格式返回当前的日期和时间,取决于函数是在一个字符串还是在数字的
上下文被使用。
mysql> select NOW();
-> '1997-12-15 23:50:26'
mysql> select NOW() + 0;
-> 19971215235026

UNIX_TIMESTAMP()
 
UNIX_TIMESTAMP(date)
如果没有参数调用,返回一个Unix时间戳记(从'1970-01-01 00:00:00'GMT开始的秒数)。如果UNIX_TIMESTAMP()用一
个date参数被调用,它返回从'1970-01-01 00:00:00' GMT开始的秒数值。date可以是一个DATE字符串、一个DATETIME
字符串、一个TIMESTAMP或以YYMMDD或YYYYMMDD格式的本地时间的一个数字。
mysql> select UNIX_TIMESTAMP();
-> 882226357
mysql> select UNIX_TIMESTAMP('1997-10-04 22:23:00');
-> 875996580

当UNIX_TIMESTAMP被用于一个TIMESTAMP列,函数将直接接受值,没有隐含的“string-to-unix-timestamp”变换。

FROM_UNIXTIME(unix_timestamp)
以'YYYY-MM-DD HH:MM:SS'或YYYYMMDDHHMMSS格式返回unix_timestamp参数所表示的值,取决于函数是在一个字符串
还是或数字上下文中被使用。
mysql> select FROM_UNIXTIME(875996580);
-> '1997-10-04 22:23:00'
mysql> select FROM_UNIXTIME(875996580) + 0;
-> 19971004222300

FROM_UNIXTIME(unix_timestamp,format)
返回表示 Unix 时间标记的一个字符串,根据format字符串格式化。format可以包含与DATE_FORMAT()函数列出的条
目同样的修饰符。
mysql> select FROM_UNIXTIME(UNIX_TIMESTAMP(),
'%Y %D %M %h:%i:%s %x');
-> '1997 23rd December 03:43:30 x'

SEC_TO_TIME(seconds)
返回seconds参数,变换成小时、分钟和秒,值以'HH:MM:SS'或HHMMSS格式化,取决于函数是在一个字符串还是在数字
上下文中被使用。
mysql> select SEC_TO_TIME(2378);
-> '00:39:38'
mysql> select SEC_TO_TIME(2378) + 0;
-> 3938

TIME_TO_SEC(time)
返回time参数,转换成秒。
mysql> select TIME_TO_SEC('22:23:00');
-> 80580
mysql> select TIME_TO_SEC('00:39:38');
-> 2378

Mysql数学函数不求人

以下正文:
所有的数学函数在一个出错的情况下返回NULL。

-
单目减。改变参数的符号。
mysql> select - 2;

注意,如果这个操作符与一个BIGINT使用,返回值是一个BIGINT!这意味着你应该避免在整数上使用-,那可能有值-2^63!
ABS(X)
返回X的绝对值。
mysql> select ABS(2);
-> 2
mysql> select ABS(-32);
-> 32

该功能可安全用于BIGINT值。

SIGN(X)
返回参数的符号,为-1、0或1,取决于X是否是负数、零或正数。
mysql> select SIGN(-32);
-> -1
mysql> select SIGN(0);
-> 0
mysql> select SIGN(234);
-> 1

MOD(N,M)
 
%
模 (类似C中的%操作符)。返回N被M除的余数。
mysql> select MOD(234, 10);
-> 4
mysql> select 253 % 7;
-> 1
mysql> select MOD(29,9);
-> 2

这个函数可安全用于BIGINT值。
FLOOR(X)
返回不大于X的最大整数值。

mysql> select FLOOR(1.23);
-> 1
mysql> select FLOOR(-1.23);
-> -2

注意返回值被变换为一个BIGINT!
CEILING(X)
返回不小于X的最小整数值。
mysql> select CEILING(1.23);
-> 2
mysql> select CEILING(-1.23);
-> -1

注意返回值被变换为一个BIGINT!

ROUND(X)
返回参数X的四舍五入的一个整数。
mysql> select ROUND(-1.23);
-> -1
mysql> select ROUND(-1.58);
-> -2
mysql> select ROUND(1.58);
-> 2

注意返回值被变换为一个BIGINT!

ROUND(X,D)
返回参数X的四舍五入的有D为小数的一个数字。如果D为0,结果将没有小数点或小数部分。
mysql> select ROUND(1.298, 1);
-> 1.3
mysql> select ROUND(1.298, 0);
-> 1

注意返回值被变换为一个BIGINT!

EXP(X)
返回值e(自然对数的底)的X次方。
mysql> select EXP(2);
-> 7.389056
mysql> select EXP(-2);
-> 0.135335

LOG(X)
返回X的自然对数。
mysql> select LOG(2);
-> 0.693147
mysql> select LOG(-2);
-> NULL

如果你想要一个数字X的任意底B的对数,使用公式LOG(X)/LOG(B)。

LOG10(X)
返回X的以10为底的对数。
mysql> select LOG10(2);
-> 0.301030
mysql> select LOG10(100);
-> 2.000000
mysql> select LOG10(-100);
-> NULL

POW(X,Y)
 
POWER(X,Y)
返回值X的Y次幂。
mysql> select POW(2,2);
-> 4.000000
mysql> select POW(2,-2);
-> 0.250000
SQRT(X)
返回非负数X的平方根。
mysql> select SQRT(4);
-> 2.000000
mysql> select SQRT(20);
-> 4.472136

PI()
返回PI的值(圆周率)。
mysql> select PI();
-> 3.141593

COS(X)
返回X的余弦, 在这里X以弧度给出。
mysql> select COS(PI());
-> -1.000000

SIN(X)
返回X的正弦值,在此X以弧度给出。
mysql> select SIN(PI());
-> 0.000000

TAN(X)
返回X的正切值,在此X以弧度给出。
mysql> select TAN(PI()+1);
-> 1.557408

ACOS(X)
返回X反余弦,即其余弦值是X。如果X不在-1到1的范围,返回NULL。
mysql> select ACOS(1);
-> 0.000000
mysql> select ACOS(1.0001);
-> NULL
mysql> select ACOS(0);
-> 1.570796

ASIN(X)
返回X反正弦值,即其正弦值是X。L如果X不在-1到1的范围,返回NULL。
mysql> select ASIN(0.2);
-> 0.201358
mysql> select ASIN('foo');
-> 0.000000

ATAN(X)
返回X的反正切值,即其正切值是X。
mysql> select ATAN(2);
-> 1.107149
mysql> select ATAN(-2);
-> -1.107149
ATAN2(X,Y)
返回2个变量X和Y的反正切。它类似于计算Y/X的反正切,除了两个参数的符号被用来决定结果的象限。
mysql> select ATAN(-2,2);
-> -0.785398
mysql> select ATAN(PI(),0);
-> 1.570796
COT(X)
返回X的余切。
mysql> select COT(12);
-> -1.57267341
mysql> select COT(0);
-> NULL

RAND()
 
RAND(N)
返回在范围0到1.0内的随机浮点值。如果一个整数参数N被指定,它被用作种子值。
mysql> select RAND();
-> 0.5925
mysql> select RAND(20);
-> 0.1811
mysql> select RAND(20);
-> 0.1811
mysql> select RAND();
-> 0.2079
mysql> select RAND();
-> 0.7888

你不能在一个ORDER BY子句用RAND()值使用列,因为ORDER BY将重复计算列多次。然而在MySQL3.23中,你可以做: SELECT * FROM table_name ORDER BY RAND(),这是有利于得到一个来自SELECT * FROM table1,table2 WHERE a=b AND c
LEAST(X,Y,...)
有2和2个以上的参数,返回最小(最小值)的参数。参数使用下列规则进行比较:
如果返回值被使用在一个INTEGER上下文,或所有的参数都是整数值,他们作为整数比较。
如果返回值被使用在一个REAL上下文,或所有的参数是实数值,他们作为实数比较。
如果任何参数是一个大小敏感的字符串,参数作为大小写敏感的字符串被比较。
在其他的情况下,参数作为大小写无关的字符串被比较。
mysql> select LEAST(2,0);
-> 0
mysql> select LEAST(34.0,3.0,5.0,767.0);
-> 3.0
mysql> select LEAST("B","A","C");
-> "A"

在MySQL 3.22.5以前的版本,你可以使用MIN()而不是LEAST。

GREATEST(X,Y,...)
返回最大(最大值)的参数。参数使用与LEAST一样的规则进行比较。
mysql> select GREATEST(2,0);
-> 2
mysql> select GREATEST(34.0,3.0,5.0,767.0);
-> 767.0
mysql> select GREATEST("B","A","C");
-> "C"

在MySQL在 3.22.5 以前的版本, 你能使用MAX()而不是GREATEST.
DEGREES(X)
返回参数X,从弧度变换为角度。
mysql> select DEGREES(PI());
-> 180.000000
RADIANS(X)
返回参数X,从角度变换为弧度。
mysql> select RADIANS(90);
-> 1.570796

TRUNCATE(X,D)
返回数字X,截断为D位小数。如果D为0,结果将没有小数点或小数部分。
mysql> select TRUNCATE(1.223,1);
-> 1.2
mysql> select TRUNCATE(1.999,1);
-> 1.9
mysql> select TRUNCATE(1.999,0);
-> 1

女人的经典蠢话

1.“你在想什么?”
  
  这个问题恰当的回答当然应该是:“对不起,亲爱的,沉思使我冷落了你!不过我在想,遇见你是多么幸运,你那么温柔、漂亮、聪明。”显然这种表白跟实际所想的问题风马牛不相及,不过若能博得爱人一笑也未尝不可。
  
  郑重提醒对于该问题,绝不可以回答:“如果我想让你知道我在想什么,我就会告诉你而不是思考了。” 此时男人应答的指导原则是:绝不可以想什么说什么,绝不可以诚实。
  
2.“你爱我吗?”
  
  最好的回答是“是的。”若想更一进步地表示,您可以说:“是。亲爱的。”
  
  郑重提醒该问题的错误表述包括:a:我想是吧。b:如果我回答是,你会感觉好点吗?c:这取决于你所说的“爱”指的是什么。d:这有什么关系吗?e:谁?我?
  
  3.“我看起来胖吗?”
  
  男人回答这个问题时应该是肯定且断然地说“不,当然不!”然后迅速扭转话题。
  
  郑重提醒错误的回答包括:a:我不会说你胖,但也不会说你瘦。b:要看和谁比了?c:你稍微胖点儿好看。d:比你胖的人我见得多了。e:你说什么?再说一遍好吗?
  
  4.“你认为她比我漂亮吗?”
  
  这里的“她”可能是您从前的女朋友,您的同事或者您的异性朋友,无论什么场合无论对谁,最好的反应是:“不,你比她漂亮多了。”
  
  郑重提醒错误的回答包括:a:不比你更漂亮,你属于另一种漂亮。b:我不知道什么标准才是美。c:是的,但你性格更好。d:她只是比你年轻。e:你说什么,我没听清楚。
  
  5.“如果我死了,你怎么办?”
  
  正确的回答是:“亲爱的,如果你死了,我也没有什么好活的了,我也会投身于经过身边的第一辆卡车轮下。”
  
  或许您认为这个回答太过愚蠢,那么说一则笑话给您听。
  
  ——“亲爱的。如果我死了,你会怎么做?”
  
  ——“哦,亲爱的,我会极度伤心。为什么这么问?”
  
  ——“你会再婚吗?”
  
  --—“当然不会。”
  
  ——“你不喜欢婚姻生活吗?”
  
  ——“当然不是,亲爱的。”
  
  ——“那你为什么不再婚?”
  
  ——“好吧,我再婚。”
  
  ——“什么?你再婚?”
  
  婚后多年的夫妻对话
  
  女:你真的背熟了我的一切吗?我的身高、体重,最喜欢的和最讨厌的,你说说看!
  
  男:身高.穿平底鞋到我下巴,穿高跟鞋到我耳朵。体重?边思索边计算?,我用自行车驮你,勉强可以上30°斜坡;抱着你的话,估计走不出两米。你最喜欢用尖指甲掐我,讨厌我看足球和别的女孩儿。
  
  女:你说我和你从前的女朋友有什么区别?说呀你!
  
  男:她?是一盘没下完的棋,你呀,是一盘下不完的棋。
  
  女:你最难忘的和我有关的事儿是哪一件?
  
  男:肯定是结婚!爱情终于进行到底了嘛!
  
  女:对你来说,我还不如你的狗重要吗?
  
  男:假如你不再讲话,又能吃剩饭,当然还是你重要。
  
  女:你说我戴红宝石好还是戴钻戒好?
  
  男:戴.毛线手套最好。
  
  女:你能一辈子只爱我一个吗?
  
  男:当然能!?浮想:在后面加上“一个小时”哈哈!?
  
  女:现在,你是不是还想着别的女人?
  
  男:你妈呗!她老人家爱喝鲫鱼汤,今晚给她买几条送去。
  
  女:你最想跟我说的三个字是.给你一次机会哟!
  
  男:别———问———了!

java日期比较

第一种:数据库中的日期和当前日期比较,数据库中是日期格式,但是显示的字符格式,要进行比较先把数据格式一下。

Calendar cpcalendar = new GregorianCalendar();
java.util.Date date = null;
try {
java.text.SimpleDateFormat parseTime = new java.text.SimpleDateFormat("yyyy-MM-dd");

//可以把数据库中查询的日期放在这里,需要格式一下
date = parseTime.parse("2008-12-23");
} catch (ParseException e) {
e.printStackTrace();
}
cpcalendar.setTime(date);
//得到系统当前日期
Calendar c2 = Calendar.getInstance();
//得到日期的毫秒数,转换成long类型的
long i = c2.getTimeInMillis() - cpcalendar.getTimeInMillis();
System.out.println(i);

第二种
DateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm");
try {
Date dt1 = df.parse(DATE1);
Date dt2 = df.parse(DATE2);
if (dt1.getTime() > dt2.getTime()) {
System.out.println("dt1 在dt2前");
return 1;
} else if (dt1.getTime() < dt2.getTime()) {
System.out.println("dt1在dt2后");
return -1;
} else {
return 0;
}
} catch (Exception exception) {
exception.printStackTrace();
}
return 0;
}

2010年3月1日月曜日

弟兄们:创业,也许并没有那么难!

创业前必须多问自己几个为什么?自己创业的优势在哪? 创业后会面临什么样的问题等等?
瞧,你被我忽悠进来了……创业其实是件很简单的事情,Just do it! 哪有这么多的为什么为什么? 哪会有什么“ 十万个为什么” 哇? 你要是对创业有这么多的问号,那我劝你别问别想别创业,你没那创业的IQ。
还是说说吧,别太自命不凡。好吧,耐心一点也好。  

  1. 问:我应不应该辞职去创业?

  回答这个问题最合适的人应该不是我,而是你伟大的母亲。不知道她当年怀你的时候有没有去庙里求过签,有没有替你修过创业这条命。但是如果一定要我来回答的话,那我劝兄弟你千万不要去冒险创业......听上去你根本还不到创业的火候。你还是多看些书,多找几个朋友求教求教,掂量掂量,到时候再看看你是否还有创业的决心。
  创业是人生的一个选择,在人生的岔道口,向东走、还是向西走,这个时刻你既充满 “独上高楼,望尽天涯路” 的惆怅、又神往 “到中流击水,浪遏飞舟” 的那种激情。实话告诉你,你成为下一个Google的可能性微乎甚微,你极有可能摔得头破血流,但愿你、但愿你,即使碰了一鼻子灰,撞得鼻青眼肿,你还是开怀大笑,觉得这段创业的人生经历铭心刻骨,一个字:值!

  2. 问:我有一个Idea,不需要很多钱,就缺一点启动资金,我应该找去天使,还是找VC?

  嘿嘿,让我点穿你的心思吧,你是想搞一笔钱来交你的创业学费,对不? 这问题最好还是再去问问你妈,相信她最了解你,看看她是不是能看好你这个宝贝儿子,能够有信心来为你投下第一笔赌注。
  你有个idea,想找个人出钱让你去做试验,这件事的难度不比你从平地上跳起来摘到了天上的星星更加容易。当然,我们在书上报纸上天天读到某某人有天使解囊而助、某某人和孙正义侃了5分钟搞到2000万,没错,但那都是特别案例。下面是两个“标准答案”,供你做参考,如果你的创业Idea也已经到了这个地步,再出去敲VC的大门,也绝对不会为时太晚。
  案例一:Apple
  乔布斯,“胡子” 和Ronald Wayne 三个小伙子在车库里创立Apple。他们自己动手组装电脑到 “街道科普展览” 上去兜售,这和你自己动手用铁皮敲成个炭炉子到路口叫卖羊肉串儿也差不了上下,Apple那时的穷酸相没多久就让Ronald Wayne实在看不下去了,他第一个决定撒手不干了,把自己所有的Apple股份以800块钱卖给了小乔和胡子,扬长而去。(创业者们,真正的、死不回头的创业者们,让我们一起在大碗里兑满白酒,一饮而尽,然后对着远走的Ronald Wayne他渺小的背影,彻彻底底地放声大笑10分钟:你这没出息的小子,滚吧!!)
  创业最低谷的时候,小乔和胡子都有些撑不住了,他俩精心装配了两台“极品”苹果山寨机 (手工木板钉在一起的电脑应该叫山寨机了吧?) 去HP总部敲门兜售,其实心底里是希望HP的项目经理们能看上他们二位的才华,把他们俩招进HP去打工,结果被嗤之以鼻,赶出门去。创业艰难,心酸事情莫提起,提起泪水满江湖。
  后来Apple生意有所好转,进来了些小批量订单,小乔的车库里居然每周出货量达到了50台,小小的车库已经实在容纳不下这个随时可能爆炸的苹果,逼得这两个“剩男”不得不出门找钱。小乔和胡子的运气还不算坏,撞上了一位天使名叫Mike Markkula,牛人一个,32岁就从Intel退休了。Mike出了25万买了Apple的1/3股份。嘿嘿别急,这25万区区小钱还不全是投资款,其中8万是投资,亏了不用还,17万是借款,搞砸了小乔和胡子得去找工作打工还债的啊!!
  千万千万别说天使抠门,千万千万别和你的第一个女朋友计较,那会遭天打的。
  案例二:Google
  听好了啊,创业者弟兄们,以后别老是再扛着Google的股价来和我攀比你公司的估值,你们可知道Google曾经的估值是多少吗?告诉你们吧:一文不值!
  赖利和谢尔盖这两个斯坦福大学的穷学生,在Google诞生之后的将近四年中,求爷爷告奶奶也没少敲投资人的大门,结果是无一例外的统统吃了闭门羹。即使到了Google的用户流量三天两头把斯坦福大学的校园网都档瘫痪了,也没有引起任何投资人的兴趣,大学里三番五次勒令他俩把网站从学校的服务器里搬出去,差点儿把两位年轻人给逼良为娼。有一天赖利破罐子破摔,对谢尔盖说 “俺俩他妈的别再硬撑了,干脆,把这没有人要的破玩意儿给卖了得了吧!” 于是两人跑遍了AOL、微软、Yahoo,开价60万美元,但心理价位仅仅是30万,结果呢,统统都被嗤之以鼻,竟然无人问津。
  上天无门、入地无缝,正在痛不欲生的绝望时分,天上飘下来了一片洁白的羽毛,天使来了。
  天使是位可爱的老头儿,名字叫安迪?贝托尔斯海姆,他曾经是Sun公司的共同创始人。安迪没有多吭声,递给了两小伙子一张支票:10万美金。于是,靠着这张10万美元支票起家,两个人一步步打造出了今天的Google,而安迪?贝托尔斯海姆的那10万美元呢,后来变成了将近3个亿,翻了三千倍!

  3. 问:我如何与VC讨价还价? 拿了VC的钱,是不是会被他们控制住?

  创业公司融资,等于是在向投资人兜售亏钱公司的股票,这是一件非常狼狈和尴尬的事情,哪里会像卖iPhone那样风光,出现大家抢购、一时间洛阳纸贵。别以为你找一份VC名单挨家挨户忽悠就可能引起热销现象,千万别让我打击了你的自信心、自尊心和火焰一般的创业热情,提醒你一句,在和VC的接触中,你如果能筛选出那么两、三个愿意和你第二次、第三次再见面的VC,这已经可以说是初战大捷了。
  你和VC “讨价还价” 的秤砣恐怕分量没有你想象的那么重,公司初创的阶段,是你不得不忍声吞气的时候,权当你是下一个 “乔布斯” ,我是又一个“Mike Markkula”。你要250万,我只肯出25万块,其中8万是投资,亏了不用还,17万是借款,搞砸了你得赔我。你拿或不拿,别无其它选择。
  至于什么叫被 “控制” ? 你的界定又是什么?
  你本来从不做预算,凭着自己的感觉干,干得也相当不错,现在VC进来了,要求你每月做预算,这算“控制”吗?
  你本来用的都是盗版软件,VC要求你改用正版,把你幸幸苦苦融来的钱去白白地朝贡给了比尔盖茨,其实他多了你这两个小钱又有什么用呢? 这是不是也算“控制” ?
  你本来独来独往,现在每个月要开董事会,要向诸位董事大人汇报业务进展,投资人管这叫 “知情权”,你是不是认为这也是“控制”?

  4. 问:我准备给整个团队股份,请问一般要给多少?

  先问你:你准备给整个团队股份,这件事到底是出于真心,还是附庸风雅想去迎合VC啊? 如果你出于真心,俺也就给你讲讲真心话:咱中国人很实际,看重现金,搞不懂什么股份啊、期权啊,你自己在几张破纸上打印的无限期的股票有个屁用! 别给、少给、省了那些麻烦事儿。
  你如果还是坚持要给团队股份,那我建议你最好不要 “白给”,让团队成员们自己掏出钱来买,天下哪有免费的午餐啊,何况你是在卖下一个Apple、下一个Google的原始股票! 当然,按什么价钱买是可以商量的。建议给你的秘书和前台小姐开价一分钱一股,你把她们的工资压得这么低,她们哪里还会有钱买你的股票?对于你的高层管理团队,建议你抬高价格忽悠他们,告诉他们大牌的VC马上要砸大钱进来了,公司的股值马上要10倍、100倍地往上翻,现在买公司的股票是个千载难逢的好机会。也许通过这一招,你还能看出手下哪几个弟兄死心塌地和你创业干革命,哪几个可能在关键时刻会变成动摇分子。创业,是不是先从自己的腰包里掏出钱来,这是一块试金石。创业公司的股票是张废纸,只有相信奇迹的人,才会相信它的价值,信则灵。
  至于说持股比例,在初创的时候还是集中一些为好,建议你不要轻易放弃你的绝对控制权,在中国,有时候 “权威” 是必要的,“中央集权”,才能统一江山。

  5. 问:VC进来之后,我的工资如何计算?

  以为天下的CEO是有统一工资标准的,你也是CEO,你的工资应该和比尔盖兹、乔布斯、巴菲特、唐骏也不相上下?
  理性的方法是,在董事会里设一个薪酬委员会,由薪酬委员会来决定团队高层的薪资标准。为了避嫌,在讨论你自己工资的时候,你要主动站起来走到门外去,等别人讨论决定好了再进来。
  工资也不是死的、不是一成不变的,可涨可减。你作为公司的股东,又是核心管理团队,公司大笔大笔赚钱了,那是应该的、天经地义的,是否要发给你奖金并不一定。但是如果公司业务屡出波折,长期亏损,第一个应该降薪扣工资的绝对就是你。

  6. 问:董事会? 不就是你,外加我和我的搭档,我们占两席,代表多数,你占一席,是少数,不对吗?

  对,也不太对。
  董事会里少数服从多数是众所周知的常识。但这个多数是以股权来代表,用钱来表决,而不是人头。  
董事会除了按股份比例设置的席位以外,你应该学习把董事会打造成为你的超级智囊团、顾问团、高端公关团、粉丝团、财团……
  可以考虑在董事会里再增加设立:
  “独立董事”:独立董事通常是由和公司没有直接利益关系的人来担当的。
她不持有公司股票,得到了各位董事的一致认可,他/她的中立观点有助于保持董事会中矛盾的平衡。
“顾问委员会”:邀请一些资深的业界人士来当顾问,他们不仅可以扩展你在行业中的视野和耳目,也可以通过他们的关系渠道搞订单、搞合作,有人帮你从高层引荐,比你自己拿砖头去敲门有效率得多。
“薪酬委员会”:核心团队的薪酬和奖励。
“纪律检查委员会”:无限制的权利是可怕的权利,防止独裁、腐化和滥用职权,必须有集体确认的“公司管理纪律”和独立的“纪律检查委员会”。
不是常说“团队是无价之宝”嘛,其实你的董事会也可以带来巨大的无形价值。团队和董事会是两个不同层面的资源和财富,就看你能不能成为四两拨千斤的杠杆支点,古希腊科学家阿基米德有这样一句名言:“假如给我一个支点,我就能把地球撬动!”

  7. 问:有投资人的钱进来了,我们就可以请职业经理人来管理了吧?

请谁? 请唐骏? 做梦啊你? 即使唐骏本领再大,也不知道他能不能管好你的企业,但是有一点是很肯定的,那就是你公司里的钱加在一起,还不够支付他的工资。
一般来说,初创的公司请高级白领职业经理来管可能死得更快。创业是没有固定配方的,书本里是学不到的,MBA教授从来没有碰见过的问题一大把。再说,职业经理人是按时间计酬的,而初创的公司需要有人来没日没夜地卖命苦干,所以你休想溜走,你得去扛大梁,背负十字架,带头冲锋陷阵、出生入死。
总之,我们VC要把你创业者和你创立的公司死死地捆绑在一起,只有在下面两种情况下你才有被松绑的可能:

A. 你干得出色,为公司赚进来大把大把的银子,公司上市、被收购……VC因你而发大财,你因为自己的努力也发了大财。那时候VC跟在你屁股后面还想来巴结你,你有钱了眼里哪还看得起那些烦人的VC? 你自己走自己的路了,没人拦得住你。

B. 你实在是窝囊没出息,公司烧钱火旺、流血不止,产品一迟再迟,员工人心涣散,翻船的时刻就在眼前,那样的话,乔布斯的道路也摆在了你的面前,虽然公司是你创立的,喧闹的宾客照样可以在董事会里夺了你的饭碗,请你出门,撒哟娜拉。

  8. 问:财务计划怎么做? 你有模板提供一份给我吗?
这个问题我没法再和你浪费时间了。答案全在我的博文《创业者的鞭刑》里,再要问的话,只有皮鞭一根。

  9. 问:你问我投资人的钱将来怎么退出? 不就是上市、被收购、管理层回购嘛?
对……也不太对,有必要让我们来刨根问底搞搞清楚。

  “上市”人人都懂,不用多费口舌了。

  “公司被收购”,也就是说你要把公司以高价卖给别的大公司,这必须有一个先决条件:你创建了一家优秀的公司。如果你连产品都卖不出去,你还有能耐把你的公司卖出去? 和与消费者打交道一样,买卖公司也是有它的一套学问。一家优秀的公司想要出售,那不用你担心,愿意来效力的人比比皆是; 要是你把公司搞砸了,把钱烧光了,也忽悠不到新的投资人,明天就要关门大吉了,你还说可以找人把你公司给收购了,这叫什么话? 这叫大言不惭、自欺欺人。废铜烂铁是会有人来上门收购的,但一家行将就木的烂公司还可以卖出大钱来,请举几个例子来听听,让俺也开开眼界。

  “管理层回购”,说实在的,这句话我从来就没有把它当真过,也懒得去寻求真正答案,权当它是我们生活中的笑料。我从来都不明白这“管理层回购”的内在逻辑,如果管理层将来有钱来回购,那么你们何必现在不自己投资呢? 3年5年以后我把股份卖回给你们是要溢价的,少则翻几倍,多则几十倍,不管是家好公司还是烂公司,反正那时候回购的价格会比现在高很多。既然你现在都没钱投资这家公司,将来怎么会有更多钱来回购?! 除非有个亿万富翁加入到你们团队里来打工。

  别浪费时间幻想如何退出了,先把手头的事情做好。只要是一家好公司,有核心技术、有具有竞争力的产品、有健康的现金流和利润,才能永远立于不败之地。在此情况下,你分分钟都可以退出,因为分分钟都有人想收购你的股权。

  10. 问:假如我创业成功赚了很多钱,我应该如何去花这些钱?
问得好啊,太好了,我最喜欢干的事情就是花钱! 给美女们大把大把地买正版LV,Dior,Gucci,Victoria’s Secret,香车宝马……嗨,那都是些小钱。我还有几个更好的选择供你考虑:

  a. 投资我们的创业基金,和我们一起去支持更多年轻人创业。

  b. 别在北京上海老呆着了,咱们一起到戈壁沙漠、青藏高原、塔里木盆地去办大学,办两所地球上最好最好的大学,一所理工学院,比斯坦福好许多倍;一所音乐学院,让皇家音乐学院黯然失色。在没人的荒原里挖出一湾清泉,在白纸上画出一幅最美的图画,把苦命的穷孩子们一个个培养成博士,把荒凉贫困的西部变成世人向往的“硅谷”。

  c. 咱们一起再创一次业,玩玩心跳,每分钟100跳、1000跳……把什么“电子商务”、“手机游戏”、“Web2.0”这类Idea留给一年级二年级的小弟弟小妹妹们吧,咱们来玩点儿大腕级的大游戏,反正这辈子钱已经花不完了,再也不必在投资人面前低三下四受控制,搞砸了也不就是一阵心跳而已。比如咱们可以来设计制造山寨机航天飞船,绝对比国营企业制造的成本低、效率高、质量好、功能更齐全、服务更能让旅客满意……别笑俺啊弟兄们,千万别像前面提到的那个没出息的臭小子Ronald Wayne,要有信心、要死心塌地、一意孤行、大胆地往前走。到那时候,带上你的天使们、带上你的第一个女朋友们,让她们在公司里请长假,一起去“越土越火十日游”吧:先到月亮上扎营,然后“月亮—土星”,“月亮—火星”,好好玩上10天!

  弟兄们,创业,也许并没有那么难!

创业者的鞭刑 [一个VC的自白]

手好痒,我真想借《夺宝奇兵》中印第安纳琼斯的那根皮鞭去抽打那些异想天开、心比天高、自以为是、好说懒做、懵懵懂懂的创业者们

鞭刑之前,先数落一下创业者的罪状,尤其是那些初次创业的创业者们。

初次创业的创业者中,有勇气的、有脑子的、有技术的、能在别人看不到机会时而直觉到大任已经飘飘从天而降临于斯者,大有人在。但是,不知道由于什么原因,早期的创业者当中普遍缺乏的,是他们对财务“数字”的热爱 -- 简直就像是中国人当中普遍存在的先天性缺钙现象,或者可以称之为弗洛伊德的“集体无意识沉淀”!

这里所谓的“数字”,并不是说创业者们没想过要去赚它个百万千万什么的数字,也不是当他们在网上又读到了谁谁谁搞到几千万、几个亿而由衷的热血沸腾、心花怒放的那些个数字......这里的数字是指一个早期创业公司内部必不可少、生死交关的财务数字。说得更加具体一点,创业公司的财务计划不是费用清单,不要罗列一堆服务器和电脑的价格,外加几十个人的两年工资就宣称这是你的财务计划了。财务预测的核心是要看到你有多少钱流进,多少钱流出,什么时候公司收支打平、产生利润。创业者们既然都如此自信可以赚大钱,你能不能1+1=2,2+2=4,一分钱就是一分钱、一块钱就是一块钱,白纸黑字算出来给我看看?至少这样可以让我也胸有成竹地、放心地和你一起去蹦极、一起去发大财。

向VC乞讨,如果你没有令人信服的财务预测是很难跟蒙混过关的。事实上,最让VC最头痛的,也常常是早期创业团队的财务预测能力。另一方面,永远有那么一批又一批懵懵懂懂的创业者,他们自信能赚到大钱,梦想VC们会大胆地掏出钱来砸进去跟他们走,于是千方百计地找理由逃避做作业、拒绝对财务预测下功夫,就好像他们不愿意花时间搞定一个女朋友,宁可整天沉湎于自慰,也许这是创业者们身上的原罪。

随便抽几封我今天收到的“自慰”邮件,尽管发件人是诚实的,但都应该抽上几鞭:

“我们目前还无法测算收入,但是可以向您保证,今天的市场占有率,等于未来的收入规模......”

“因为自己学的不是金融......财务报表(收入预测表之类的),实在是没有办法写下去,知道能赚大钱但是实在无法’瞎掰’这些数字......”

“说实话(我们)目前还不到做财务预测的地步,我们希望能先融一、二轮资,先生存、先积累一大批用户以后再谈发展。请您相信,我们所处的行业是需要先有大量投入、才可能讲收入的......要拼到最后才是最大的赢家......”

“您是这方面的专家,建议在你们基金进来了之后,可以帮助我们做(财务预测)......”

......

来人哪,帮我把衣服裤子给扒了,往死里抽!

我只能以身作则,第一鞭先打自己,然后我才有资格来骂人、训人。如果谁愿意上来剥光衣服被鞭打一顿,品尝一番皮开肉绽的滋味,同样也可以获得说话的资格。否则,就在下面好好听着、看着,不准插嘴,不得喧哗。总之,不受一点大苦大难,人是不会大彻大悟的。

好,开始鞭鞑我自己:许多年前,我第一次向VC讨钱。我那时心里想的和你们完全一模一样,我也曾认为,VC、VC,不就是维他命C嘛,你们要我做的那些个财务预测中的数字有个鸟用啊,你们不给我钱,我拿什么去点火呀,火不熊熊烧起来,我怎么能知道会不会赚钱呢......

不过,我那时的胆子还没你们大,至少表面文章我比你们做得好多了。我通过关系结识了我第一个财务顾问(此人现住北京),请他来帮我做财务预测去给VC交差。他是出自名牌大学的MBA,在华尔街高就,座驾是宝马、身披阿玛尼、签字用万宝龙......西装革履,风度翩翩,有品味、有见识、有学问,满口都是我第一次听说的专业用语,什么“multiples”,“forward looking”,“growth curve” ......我听不懂的还多着哪!他的这副架势多少让我创业者的寒碜相形见拙,我的失落感也油然而生,唉,下辈子再也不当这种讨饭的创业者了,还是努力考试进个好学校好好学习,将来老老实实当个Banker吧。

他问我,你要找多少钱呀?我实在是连自己都不清楚我到底需要多少钱,我递给他几页业余选手写的商业计划书草稿,试探的问:“几十万吧,能搞到吗?”他大吃一惊“才要几十万?那有什么搞头哇,要搞就搞多一点嘛,我看你先弄它个五百万吧(后来计划做到了2000多万)。”天哪,到底是搞专业的本领大哦!我茅塞顿开,相见恨晚,他的每一个字都说到了我的心坎里去了,天下居然还有这么理解和体贴我的人呀?!我当即拿了一大块公司的股份奖赏给他,重赏之下必有勇夫,我深深地懂得这个道理。

重赏之下,他工作还算努力,他搞来了一些可以做参照的上市公司的报表,帮助把我这个小小的初创公司的收入预测大大地提高了几十个级数,使劲的在预算中给我加了几级工资,除了公司需要的投入资金和运营流转金以外,他还专门为我设计了一个公司的“对外投资部”,因此很快融资的金额又从500万上升到了两千多万......我看在眼里乐在心底,钱当然进来得越多越好,贪婪是人的天性嘛......他还引荐了凯雷基金、德州太平洋基金这样的巨无大的基金朋友给我,我本以为,在这么多的钱堆子里搞出它个两千万来,岂不是太小菜一碟了。

直到碰得鼻青眼肿,我才明白,他奶奶的,即便是这样的高手,即便下了这么大的猛药,也没有药死一只VC,找钱真是不容易滴。无论你是闭着眼睛瞎忽悠、还是自以为是地拼命包装拔高,都不一定能真正骗到钱。没有一个VC会瞎砸钱,即使瞎砸,你也得先要提交一个逻辑清晰的财务预测。这次创业融资经历了一场拉锯战,我拿了厚厚一叠商业计划书和财务预测到处招摇,不知道见了多少VC,磨破了多少层嘴皮,还差点儿翻船。

最后,2000万没融到,融到的是其中很小一部分,而且融到钱所用的财务预测也不是他写的那份,而是我自己后来笨手笨脚在油灯下硬着头皮重新做出来的。

不过,天助我也!被迫自己亲手做了一次财务预测,我却有了意外的发现和惊喜,反而尝到了甜头。我突然对自己的业务刮目相看了,有了全新的认识和把握,像是一个1800度的近视眼者突然戴上了新配的眼镜,眼前的一切突然地变得清楚起来。我顿时领悟到了作为一个创业者,必须时刻牢牢地把命运掌握在自己的手中;不知道如何做财务预算的CEO是不合格的,是VC投资的最大风险。

财务预测使我清晰了自己的方向,知道了自己什么时候必须进钱否则就会翻船,知道了什么时候必须束紧裤带、什么时候可以奢侈一下搞场员工大餐;什么时候可以偷偷乐、什么时候要暗地里发愁;什么时候可以试试铤而走险、什么时候会发大财......财务预测是创业公司(其实也包括成熟的公司)CEO们手中的命运罗盘。

即使到了现在,我的团队里有了一个个的职业财务高手,我还是会像个不识字的老红军那样,在决定做任何一个项目投资之前,自己找个安静的角落,把项目财务预算中最基本的数据抽出来,自己重新做一遍测算。你们知道我是个在枪林弹雨里都不怕死的人,但是在“数字”上我是个保守、保守再保守的胆小鬼,我一定会将你给我的成本预算翻倍,再把你的收入预测打成一折,看看这项目是否还有胜算的可能,如果有,那兄弟你我满怀信心地套上绳子蹦极吧!