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

一些看似简单却容易被忽视的小技巧

在工作中我总是会发现有些人的程序里有些不妨碍程序正常执行的小问题,并且很多人都常常愿意这样写,下面我列举一下

1.php属于弱语言,所以在使用一个变量的时候,不需要为其指定变量类型和初始化值,但是我强烈建议在使用一个变量前,先为其初始化一个默认值,这样既安全又规范

2.
if (条件表达式1 && 条件表达式2)
//do something
else
//do something
?>

当进行与运算操作的时候,最好把最可能返回"False"的表达式放在操作的前面,这样当if条件遇到false后,就不在执行false以后的运算了,这样加快程序的执行速度,但是要注意一点的是false以后的条件表达式如果是个赋值的表达式,例如:


$a = 1;
$b = 0;
if (($a > 1) && ($b = 2))
?>

这段程序在$a > 1这个地方就执行完了,$b = 2的赋值操作将不再执行,结果$b的值还是0.


3.在使用mysql数据库的时候,执行"select count"操作的时候,尽量使用count(*)而不是count(一个字段),count(*)会直接使用索引文件进行统计(inndb类型的表除外)而不是去遍历整个数据表

4.在使用group by的时候,如果没有必要对返回结果集合进行排序,建议加上"order by null",这样会减少一步排序的操作

5.为table建立复合索引的时候,比如"name-city-age"这个索引,这个索引是由表中的字段name,city,age组成的,虽然我们 只为这张表建立了一个索引,但其实...嘿嘿嘿...这是三个索引,恩,哪三个索引呢...name,name-city,name-city-age这 三个索引,请注意,复合索引遵循的是最左原则,所以name-age,city-age将不会使用索引...

6.在建索引的时候,如果能保证这个(复合)索引的字段(组合)的值肯定是唯一值,那么就把这个(复合)索引建成唯一索引...

取自abetterday的博客:http://www.phpwap.cn/?action=articleContent&articleId=153

Tags: 技巧, 忽略, 简单, php

[备查]宝宝拉肚子原因与治疗

宝宝拉肚子腹泻的原因及治疗

来源:http://blog.ci123.com/yy-bb/entry/25278

婴儿怎样才算拉肚子

  婴儿腹泻是多由饮食不当或肠道内、外感染所引起的一种消化道功能紊乱综合症,多发生在2岁以下婴儿。 婴儿喂食母乳时,正常每天大便次数会比喂食牛奶多一至二次,为黄绿色糊便;而喂食牛奶者,则为黄色成形便。腹泻则是指粪便中水分增加,且大便成分变质而 言。一般而言,腹泻时大便的次数会增加、水分增加、大便颜色变成绿色、气酸臭。
主要症状有: 1、轻症:每天大便五至八次,可能伴随着轻微发烧或呕吐。粪便呈黄绿色,带粘液且呈蛋花汤样,并伴有轻微腹胀,肠鸣音亢进。 2、中度腹泻:每天大便十次,稀水便、气味酸且臭,可能中度发烧。 3、重症:腹泻频繁,每天大便八至十五次,呈水样、量多,有酸臭味,烦躁、嗜睡、萎靡,甚至昏迷、惊厥,血丝黏液便,前囟门凹陷,皮肤及嘴唇干燥等。 4、部分患者可出现明显脱水、酸中毒、电解质紊乱,如低钾或低镁等。

  婴儿拉肚子的原因

  造成拉肚子的原因很多,可能是由于感染引起肠胃炎、吃入不洁的食物和水、奶瓶消毒不当、牛奶浓度不对、饮食过量或精神紧张等等。 一岁以内的婴儿腹泻发病率很高,这是因为婴儿消化功能不成熟,发育又快,所需热量和营养物质多,一旦喂养或护理不当,就容易发生腹泻。 常见的腹泻原因有:进食量过多,或次数过多,加重了胃肠道的负担;喂的质量不当,使食物不能完全被消化;或喂养不定时,胃肠道不能形成定时分泌消化液的条 件反射,使机体消化功能降低;还有母亲喂养期间尽量避免吃凉的食物等。总之,不合理的喂养时婴儿腹泻的主要原因。另外,当小儿着凉,患感冒、肺炎等疾病 时,也可引起消化道功能紊乱而发生腹泻。 如果腹泻严重,伴有呕吐发烧、眼窝凹陷、口渴、口唇发干、尿少,就说明已经引起脱水了,应该去医院输液治疗。为防止脱水,应在腹泻次数较多时,食量减少饮 食,甚至禁食,使胃肠道得到休息。同时口服补液盐或自配糖烟水、盐米汤,少量多次,以防止脱水发生。 患腹泻的孩子要注意腹部保暖,以减少肠蠕动,可以用毛巾裹腹部或热水袋热敷腹部,同时让婴儿多休息。排便后可用温水清洗臀部,防止臀红发生。

  婴儿拉肚子怎么办

  宝宝腹泻以夏、秋季节多见,其发病原因除肠胃道受细菌感染外,主要是由于喂养不当、天气太热或突然着凉等。如果未按时添加辅食或喂养不定时,一旦食物变化 较多,小儿肠道不能适应,也会引起消化不良而使宝宝腹泻。不论哪种原因的腹泻,宝宝每日大便次数可达4、5次乃至十几次,常伴有恶心、呕吐、食欲下降或拒 食的现象。   

  宝宝腹泻时的一般饮食原则是,减少膳食量以减轻肠道负担,限制脂防及碳水化合物,给宝宝以清淡饮食,以利于其肠道修复。   

  用母乳喂养的宝宝,腹泻时不必停止喂奶,只需适当减少喂奶量,缩短喂奶时间,并延长喂奶间隔。母亲也应少食脂肪类食物,每次喂奶前,可喝一大碗开水, 稀释母乳,有利于减轻宝宝腹泻症状。人工喂养或混合喂养的宝宝,在腹泻时,不要添加新的辅助食品。病情较重时,还应暂时停止喂牛奶等主食。禁食时间一般为 6-8小时为宜,最长不能超过12小时。禁食期间,可用胡萝卜汤、苹果泥、米汤等来喂宝宝,以补充无机盐及维生素,这些食物易于消化,能减轻肠胃的负担。   

  目前世界卫生组织向各国推荐口服补液盐,可以按其说明配成液体,根据宝宝的腹泻情况分多次予以添加。只要注意充分补充水分,一般宝宝都可安全度过腹泻 期。   

  如果宝宝腹泻次数较多,或出现口唇干燥、两眼凹陷、面色发灰、尿量减少及皮肤失去弹性等现象时,显示宝宝有脱水迹象,应立即送医院诊治。

  婴儿拉肚子的治疗

  1、及时给腹泻婴儿用口服液补盐。
2、不要要求医生开很多控制腹泻的药物。因为腹泻原因复杂,用药不当有害无益。
3、注意腹泻患儿的饮食,不一定要禁食,选喂容易消化的食物。
4、腹泻严重者,应及时送医院治疗。 

  婴儿拉肚子饮食调节

  送大便到医院化验,如果是感染性腹泻,用抗感染药物,如果是非感染性腹泻,可:   
①调整及控制饮食:给予消化道适当休息,减轻其负担。可以暂停添加辅食及不易消化的食物。适当减少哺乳量及哺乳次数或延长两次哺乳之间的时间。
②母乳喂养的母亲在婴儿腹泻期间饮食要清淡一些,喂奶前饮用温开水一碗,切勿轻易断母乳。在喂奶时尽量让婴儿吃前部分易消化的母乳,避免吃最后部分含 脂肪较多的母乳。
③人工喂养的婴儿应吃脱脂奶粉或将牛奶烧开冷却后去掉上面的脂肪,如此烧煮反复脱脂3次就成了脱脂奶。腹泻较重者,要减少奶量并用水稀释。可用1份牛 乳加1/2份水或l/2份米汤,必要时可用l份牛乳加l份水或米汤稀释。待婴儿腹泻好转后逐渐增加直至全奶。
④腹泻而脱水者要补充体内丧失的水分,可采用世界卫生组织推荐的“口服补液”(药房有售,其中包括食盐即氯化钠3.5克、氯化钾1.5克、葡萄糖20 克、碳酸氢纳1.5克,加温开水1000毫升,约4玻璃杯)其成分比例合理,有利于吸收,喂服时用茶匙一匙一匙吃,少量多次才能使胃内眼收。
若在偏僻地区买不到“口服补液”时,可以在家庭里自制简易口服液。配方是:食盐1/2茶匙,蔗糖2汤匙,加开水4玻璃杯。口服补液是最经济、最有效的 防治方法。喂服得当,可以使婴儿停止呕吐,减少腹泻,及早康复。
⑤消化不良者如仅有轻度腹泻,不需用药物止泻,只需采用以下几种方法,也可获得痊愈。
服用胡萝卜汤,每日2次~3次,每次2汤匙~3汤匙;服用苹果泥(取苹果一只洗净去皮去核,切成小块,放入碗内加少量白糖隔水蒸,蒸熟后捣拦成泥状服 用)。因胡萝卜和苹果含有果胶,能使大便成形,并且还能吸附肠内的有害物质,帮助治愈腹泻。
鱼蛋白粉加入米汤内服用,每日5克,分1次~2次服用。半岁以上的婴儿可服用鱼蛋白粉粥或烂面条。由于鱼蛋白粉内蛋白质质量高,脂肪量低,而且没有乳 糖,对婴儿腹泻特别有利。轻型腹泻一般服用3日~5日就痊愈。
焦米汤和焦米粥是用米或米粉加水煮成。可以少量多次喂服。由于米内含碳水化合物,最容易消化吸收,而且没有乳糖也不易发酵、胀气,米内所含的蛋白质不发生过敏反应。焦的部分能吸附有害物质,对控制腹泻很有利。
山楂炭或炮姜炭是将山楂去核或炮姜去皮,然后炒成炭,研成细末。服用时每次用0.3克-0.6克,日服3次,用温开水化服,可加少许白糖调昧。山楂能 帮助消化,生姜能解毒,对腹泻的防治有利。
维生素B1、维生素C、乳酶生每日服3次,每次各1片,研碎和水拌匀喂服,可在服“口服补液”的同时加服。因为维生素Bl能促进糖类完成代谢过程,不 使积酸发气,维生素C能增加抵抗力,乳酶生能帮助消化乳类。它们都是控制腹泻时常用的药。
⑥腹泻时大便次数增多,要及时换尿布。每次大便后要用温水洗净臀部,擦干并涂上护肤油脂或爽身粉,以防臀部糜烂发生“红臀”。
⑦注意腹部保暖,以免受凉后肠蠕动更快而加重腹泻。

 婴儿拉肚子的食疗方法   

  婴儿腹泻有伤食型、风寒型、湿热型和脾虚型。只有区别不同症状,选择食疗,才能收到预期效果。
伤食型
伤食型腹泻有腹胀腹疼、泻前哭吵、大便酸臭如蛋花状、口臭、不思食等症状,可采用以下食疗:
荠菜汤:取鲜荠菜30克,加水200毫升,文火煎至50毫升,1次服完,每日2~3次。
苹果汤:取苹果1只洗净,连皮切碎,加水250毫升和少量食盐,煎汤代茶饮。适用于1岁以内的儿童,大于1岁者,可吃苹果泥。
风寒型  
风寒型腹泻有大便稀薄如泡沫状、色淡、臭气少、肠鸣腹痛,或伴有发热、鼻塞流涕等症状,可采用以下食疗:
姜茶饮:取绿茶、干姜丝各3克,放在瓷杯中,以沸 水150毫升冲泡,加盖温浸10分钟代茶随意饮服。
糯米固肠汤:糯米30克(略炒),山药15克,共煮粥,熟后加胡椒末少许、白糖适量调服。
湿热型

湿热型
腹泻有大便如水样伴有不消化食物、呈草绿色或黄色、有少量粘液,小便黄少等症状,可采用以下食疗:
乌梅汤:乌梅10只,加水500毫升煎汤,酌加红糖,以之代茶,每日服数次。
橘枣茶:取红枣10只,洗净晾干,放在铁锅内炒焦,取洁净橘皮10克,二味一起放入保温杯内,用沸水浸泡10分钟,饭后代茶饮,每日分2次服。
脾虚型
  脾虚型腹泻有时泻时止,或久泻不愈、大便稀薄或带有白色奶块、食后便泻、面色苍白等症状,可采用以下食疗:
胡萝卜汤:取鲜胡萝卜250克洗净,连皮切成块状,放人锅内,加水适量煎烂,去渣取汁钦.每日分2~3次。
栗子汤:取栗子3~5枚,去壳捣烂,加适量水煮成糊状,再加白糖适量调味,每日分2~3次。

  医生建议
  1、母乳喂养,不宜在夏季断奶。
2、合理安排饮食,讲究卫生、消毒食具。
3、添加辅食时,每次只限一种且渐渐加量。
4、将病人隔离。
5、勤换尿布,观察病情,做好呕吐及腹泻的处理。

  家庭护理经验
1、平时常加用肥皂洗手,养成良好的个人卫生习惯及环境卫生。
2、不使用没有消毒过之地下水、井水或山泉水。
3、不吃生冷食物,食物应充分煮熟并以热食为宜。
4、注意奶瓶消毒及食物保存方式。
5、给予安静舒适的环境。
6、注意宝宝体温变化,测量体温时宜用腋下测温或量耳温,避免由***测温以减少刺激。
7、观察宝宝脸部表情、皮肤紧张度及干燥度、排尿情形、意识状态。
8、观察大便的颜色、性质、量、气味、次数。
9、注意排泄物及换洗衣物的处理,预防传染他人。
10、常换尿布、大便后用温水洗净,保持臀部清洁干燥,避免红臀产生。
11、补充水分及电解质。
12、可
将最近一次的大便带来给医师看,以帮助医师论断。
13、配合医师的指示服药、禁食及饮食指导。

另有一剂偏方(不适合每一个人):

  我生宝宝时,医院的医生曾告诉我宝宝拉肚子时熬萝卜水给他喝,后来女儿拉肚子只要不严重我都给她喝萝卜水,很管用,而且没有副作用.记住不能用胡萝卜,用青萝卜或红萝卜都行,熬出来有点甜,小孩喜欢喝.

Tags: 拉肚子, 治疗, 原因, 宝宝, 婴儿

利用imageMagicK制作有背景色的缩略图

原文如下:附本人翻译(翻译水平其差,可以忽略直接看英文)

原文网址:http://valokuva.org/?p=92
  1. I know, it's been a while since I last blogged. This is because a lot of things are happening in my personal life. I recently relocated to London from Finland and started a new job. Things are quite busy but I will try to post an example now and then. In the meanwhile I would like to hear about sites using Imagick, so if your project is not super secret please post an url and maybe a small explanation what you're doing with Imagick on the site. This is purely for my personal interest.
  2. Anyway, to the point. Today's example originates from a question asked by a user. How do I thumbnail the image inside given dimensions proportionally and fill the "blank" areas with a color? Well, the answer is here :)
  3. The code is for Imagick 2.1.0 but adapting to older versions should not be hard.

 

翻译如下:

我知道现在离我的博客更新有一段时间了,这主要是因为最近发生了很多事。最近我找了份新工作,使我从芬兰搬到了伦敦,工作也非常忙,所以我在这里仅仅只发一个示例。同时我很高兴听到很多网站使用了imagick,我也希望如果您的项目不是很保密的话,是否能够发个链接及少量的注释以说明您的站点是如何使用Imagek的。顺便说一声,这完全是我个人的兴趣。

OK,上重头菜。今天的例子起源于一个用户的问题,那就是如果在为一张图片按比例做缩略图的时候,怎么为留空的地方用其他颜色填充。这个例子就是我的回复。

代码是FOR ImagicK 2.1.0版本,当然要改成以前的老版本代码也不是件难事。

下面就是代码了:

PHP代码
  1. <?php  
  2. /* Define width and height of the thumbnail */ 
  3. /* 定义缩略图的长宽*/
  4. $width = 100;  
  5. $height = 100; 

  6. /* Instanciate and read the image in */ 
  7. /*创建一个对象,同时读回源图*/
  8. $im = new Imagick( "test.png" );  
  9. /* Fit the image into $width x $height box 
  10. The third parameter fits the image into a "bounding box" */ 
  11. /*按照比例进行缩放*/
  12. $im->thumbnailImage( $width$height, true );  
  13. /* 按照缩略图大小创建一个有颜色的图片 */  
  14. $canvas = new Imagick();  
  15. $canvas->newImage( $width$height'pink''png' );  
  16. /* 取得缩图的实际大小 */  
  17. $geometry = $im->getImageGeometry();  
  18. /* 计算高度 */  
  19. $x = ( $width - $geometry['width'] ) / 2;  
  20. $y = ( $height - $geometry['height'] ) / 2;  
  21. /* 合并图片  */  
  22. $canvas->compositeImage( $im, imagick::COMPOSITE_OVER, $x$y );  
  23. /* 输出图片*/  
  24. header( "Content-Type: image/png" );  
  25. echo $canvas;  
  26. ?>  

 膘叔,上图片

源图:

大小: 320.67 K
尺寸: 300 x 198
浏览: 1602 次
点击打开新窗口浏览全图

缩图:

大小: 35.55 K
尺寸: 100 x 100
浏览: 1647 次
点击打开新窗口浏览全图

 

Tags: php, imagemagick, magicwand, thumbnail

PHP5.30的更新列表

啥也不说了。自己看列表吧。。原来,更新了这么多啊。。。。。。现在还是alpha,等到了stable,那我应该不应该更新呢》》》

更新列表(请看第44行哦)
  1. PHP NEWS  
  2. |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||  
  3. ?? ??? 200?, PHP 5.3.0 Alpha 2  
  4. - Removed shebang line check from CGI sapi (it is checked by scanner) (Dmitry)  
  5.   
  6. - Fixed bug #45696 (Not all DateTime methods allow method chaining). (Derick)  
  7. - Fixed bug #45545 (DateInterval has a limitation of 4 chars for ISO  
  8. durations). (Derick)  
  9. - Fixed bug #45406 (session.serialize_handler declared by shared extension  
  10. fails). (Kalle, oleg dot grenrus at dynamoid dot com)  
  11. - Fixed bug #44100 (Inconsistent handling of static array declarations with  
  12. duplicate keys). (Dmitry)  
  13. - Fixed bug #43008 (php://filter uris ignore url encoded filternames and can't  
  14. handle slashes). (Arnaud)  
  15.   
  16. 01 Aug 2008, PHP 5.3.0 Alpha 1  
  17. - Upgraded bundled PCRE to version 7.7. (Nuno)  
  18. - Upgraded bundled PDO sqlite to version 3.5.9. (Scott)  
  19.   
  20. - Moved extensions to PECL (Pierre):  
  21. . ext/fdf  
  22. . ext/ncurses  
  23. . ext/sybase (not maintained anymore, sybase_ct has to be used instead)  
  24.   
  25. - Removed the experimental RPL (master/slave) functions from mysqli. (Andrey)  
  26. - Removed zend.ze1_compatibility_mode. (Dmitry)  
  27. - Deprecated ticks support. (Felipe)  
  28.   
  29. - Changed PCRE, Reflection and SPL extensions to be always enabled. (Marcus)  
  30. - Changed md5() to use improved implementation. (Solar Designer, Dmitry)  
  31. - Changed HTTP stream wrapper to accept any code between and including  
  32. 200 to 399 as successful. (Mike, Noah Fontes)  
  33.   
  34. - Improved PHP syntax and semantics:  
  35. . Added lambda functions and closures. (Christian Seiler, Dmitry)  
  36. . Added "jump label" operator (limited "goto"). (Dmitry, Sara)  
  37. . Added NOWDOC syntax. (Gwynne Raskind, Stas, Dmitry)  
  38. . Added HEREDOC syntax with double quotes. (Lars Strojny, Felipe)  
  39. . Added support for using static HEREDOCs to initialize static variables and  
  40. class members or constants. (Matt)  
  41. . Improved syntax highlighting and consistency for variables in double-quoted  
  42. strings and literal text in HEREDOCs and backticks. (Matt)  
  43. . Added "?:" operator. (Marcus)  
  44. . Added support for namespaces. (Dmitry, Stas, Gregory)  
  45. . Added support for Late Static Binding. (Dmitry, Etienne Kneuss)  
  46. . Added support for __callStatic() magic method. (Sara)  
  47. . Added forward_static_call(_array) to complete LSB. (Mike Lively)  
  48. . Added support for dynamic access of static members using $foo::myFunc().  
  49. (Etienne Kneuss)  
  50. . Improved checks for callbacks. (Marcus)  
  51. . Added __DIR__ constant. (Lars Strojny)  
  52. . Added PHP_MAJOR_VERSION, PHP_MINOR_VERSION, PHP_RELEASE_VERSION,  
  53. PHP_EXTRA_VERSION, PHP_VERSION_ID, PHP_ZTS and PHP_DEBUG constants.  
  54. (Pierre)  
  55. . Added new error modes E_USER_DEPRECATED and E_DEPRECATED.  
  56. E_DEPRECATED is used to inform about stuff being scheduled for removal  
  57. in future PHP versions. (Lars Strojny, Felipe, Marcus)  
  58. . Added "request_order" INI variable to control specifically $_REQUEST  
  59. behavior. (Stas)  
  60. . Added support for exception linking. (Marcus)  
  61. . Added ability to handle exceptions in destructors. (Marcus)  
  62.   
  63. - Improved PHP runtime speed and memory usage:  
  64. . Substitute persistent constants by their values at compile time. (Matt)  
  65. . Optimized ZEND_SIGNED_MULTIPLY_LONG(). (Matt)  
  66. . Removed direct executor recursion. (Dmitry)  
  67. . Use fastcall calling convention in executor on x86. (Dmitry)  
  68. . Use IS_CV for direct access to $this variable. (Dmitry)  
  69. . Use ZEND_FREE() opcode instead of ZEND_SWITCH_FREE(IS_TMP_VAR). (Dmitry)  
  70. . Lazy EG(active_symbol_table) initialization. (Dmitry)  
  71. . Optimized ZEND_RETURN opcode to not allocate and copy return value if it is  
  72. not used. (Dmitry)  
  73. . Replaced all flex based scanners with re2c based scanners.  
  74. (Marcus, Nuno, Scott)  
  75. . Added garbage collector. (David Wang, Dmitry).  
  76. . Improved PHP binary size and startup speed with GCC4 visibility control.  
  77. (Nuno)  
  78. . Improved engine stack implementation for better performance and stability.  
  79. (Dmitry)  
  80. . Improved memory usage by moving constants to read only memory.  
  81. (Dmitry, Pierre)  
  82. . Changed exception handling. Now each op_array doesn't contain  
  83. ZEND_HANDLE_EXCEPTION opcode in the end. (Dmitry)  
  84. . Optimized require_once() and include_once() by eliminating fopen(3) on  
  85. second usage. (Dmitry)  
  86. . Optimized ZEND_FETCH_CLASS + ZEND_ADD_INTERFACE into single  
  87. ZEND_ADD_INTERFACE opcode. (Dmitry)  
  88. . Optimized string searching for a single character.  
  89. (Michal Dziemianko, Scott)  
  90. . Optimized interpolated strings to use one less opcode. (Matt)  
  91.   
  92. - Improved php.ini handling: (Jani)  
  93. . Added ".htaccess" style user-defined php.ini files support for CGI/FastCGI.  
  94. . Added support for special [PATH=/opt/httpd/www.example.com/] and  
  95. [HOST=www.example.com] sections. Directives set in these sections can  
  96. not be overridden by user-defined ini-files or during runtime.  
  97. . Added better error reporting for php.ini syntax errors.  
  98. . Allowed using full path to load modules using "extension" directive.  
  99. . Allowed "ini-variables" to be used almost everywhere ini php.ini files.  
  100. . Allowed using alphanumeric/variable indexes in "array" ini options.  
  101. . Added 3rd optional parameter to parse_ini_file() to specify the scanning  
  102. mode of INI_SCANNER_NORMAL or INI_SCANNER_RAW. In raw mode option values  
  103. and section values are treated as-is.  
  104. . Fixed get_cfg_var() to be able to return "array" ini options.  
  105. . Added optional parameter to ini_get_all() to only retrieve the current  
  106. value. (Hannes)  
  107.   
  108. - Improved and cleaned CGI code:  
  109. . FastCGI is now always enabled and can not be disabled.  
  110. See sapi/cgi/CHANGES for more details. (Dmitry)  
  111. . Added CGI SAPI -T option which can be used to measure execution  
  112. time of script repeated several times. (Dmitry)  
  113.   
  114. - Improved streams:  
  115. . Fixed confusing error message on failure when no errors are logged. (Greg)  
  116. . Added stream_supports_lock() function. (Benjamin Schulz)  
  117. . Added "ignore_errors" option to http fopen wrapper. (David Zulke, Sara)  
  118. . Added context parameter for copy() function. (Sara)  
  119. . Added "glob://" stream wrapper. (Marcus)  
  120. . Added "params" as optional parameter for stream_context_create(). (Sara)  
  121. . Added ability to use stream wrappers in include_path. (Gregory, Dmitry)  
  122.   
  123. - Improved hash extension:  
  124. . Changed mhash to be a wrapper layer around the hash extension. (Scott)  
  125. . Added hash_copy() function. (Tony)  
  126. . Added sha224 hash algorithm to the hash extension. (Scott)  
  127.   
  128. - Improved mbstring extension:  
  129. . Added "mbstring.http_output_conv_mimetypes" INI directive that allows  
  130. common non-text types such as "application/xhtml+xml" to be converted  
  131. by mb_output_handler(). (Moriyoshi)  
  132.   
  133. - Improved OCI8 extension (Chris Jones/Oracle Corp.):  
  134. . Added Database Resident Connection Pooling (DRCP) and Fast  
  135. Application Notification (FAN) support.  
  136. . Added support for Oracle External Authentication (not supported  
  137. on Windows).  
  138. . Improve persistent connection handling of restarted DBs.  
  139. . Added SQLT_AFC (aka CHAR datatype) support to oci_bind_by_name.  
  140. . Fixed bug #41069 (Seg fault with query over DB link).  
  141. . Fixed define of SQLT_BDOUBLE and SQLT_BFLOAT constants with Oracle  
  142. 10g ORACLE_HOME builds.  
  143. . Changed default value of oci8.default_prefetch from 10 to 100.  
  144. . Fixed PECL bug #12431 (OCI8 ping functionality is broken).  
  145. . Allow building (e.g from PECL) the PHP 5.3-based OCI8 code with  
  146. PHP 4.3.9 onwards.  
  147.   
  148. - Improved OpenSSL extension: (Dmitry)  
  149. . Added support for OpenSSL digest and cipher functions.  
  150. . Added access to internal values of DSA, RSA and DH keys.  
  151.   
  152. - Improved pcntl extension: (Arnaud)  
  153. . Added pcntl_signal_dispatch().  
  154. . Added pcntl_sigprocmask().  
  155. . Added pcntl_sigwaitinfo().  
  156. . Added pcntl_sigtimedwait().  
  157.   
  158. - Improved SOAP extension:  
  159. . Added support for element names in context of XMLShema's <any>. (Dmitry)  
  160. . Added ability to use Traversable objects instead of plain arrays.  
  161. (Joshua Reese, Dmitry)  
  162. . Fixed possible crash bug caused by an uninitialized value. (Zdash Urf)  
  163.   
  164. - Improved SPL extension:  
  165. . Added SPL to list of standard extensions that cannot be disabled. (Marcus)  
  166. . Added ability to store associative information with objects in  
  167. SplObjectStorage. (Marcus)  
  168. . Added ArrayAccess support to SplObjectStorage. (Marcus)  
  169. . Added SplDoublyLinkedList, SplStack, SplQueue classes. (Etienne)  
  170. . Added FilesystemIterator. (Marcus)  
  171. . Added GlobIterator. (Marcus)  
  172. . Added SplHeap, SplMinHeap, SplMaxHeap, SplPriorityQueue classes. (Etienne)  
  173. . Added new parameter $prepend to spl_autoload_register(). (Etienne)  
  174. . Added FixedArray. (Etienne, Tony)  
  175. . Added delaying exceptions in SPL's autoload mechanism. (Marcus)  
  176. . Added RecursiveTreeIterator. (Arnaud, Marcus)  
  177. . Added MultipleIterator. (Arnaud, Marcus, Johannes)  
  178.   
  179. - Improved Zend Engine:  
  180. . Added "compact" handler for Zend MM storage. (Dmitry)  
  181. . Added "+" and "*" specifiers to zend_parse_parameters(). (Andrei)  
  182. . Added concept of "delayed early binding" that allows opcode caches to  
  183. perform class declaration (early and/or run-time binding) in exactly  
  184. the same order as vanilla PHP. (Dmitry)  
  185.   
  186. - Improved crypt() function: (Pierre)  
  187. . Added Blowfish and extended DES support. (Using Blowfish implementation  
  188. from Solar Designer).  
  189. . Made crypt features portable by providing our own implementations  
  190. for crypt_r and the algorithms which are used when OS does not provide  
  191. them. PHP implementations are always used for Windows builds.  
  192.   
  193. - Added new extensions:  
  194. . Added fileinfo extension as replacement for mime_magic extension. (Derick)  
  195. . Added intl extension for Internationalization. (Ed B., Vladimir I.,  
  196. Dmitry L., Stanislav M., Vadim S., Kirti V.)  
  197. . Added mysqlnd extension as replacement for libmysql for ext/mysql, mysqli  
  198. and PDO_mysql. (Andrey, Johannes, Ulf)  
  199. . Added phar extension for handling PHP Archives. (Greg, Marcus, Steph)  
  200. . Added SQLite3 extension. (Scott)  
  201.   
  202. - Added new date/time functionality: (Derick)  
  203. . date_parse_from_format(): Parse date/time strings according to a format.  
  204. . date_create_from_format()/DateTime::createFromFormat(): Create a date/time  
  205. object by parsing a date/time string according to a given format.  
  206. . date_get_last_errors()/DateTime::getLastErrors(): Return a list of warnings  
  207. and errors that were found while parsing a date/time string through:  
  208. . strtotime() / new DateTime  
  209. . date_create_from_format() / DateTime::createFromFormat()  
  210. . date_parse_from_format().  
  211. . support for abbreviation and offset based timezone specifiers for  
  212. DateTime::getOffset() and DateTime::getName().  
  213. . support for selectively listing timezone identifiers by continent or  
  214. country code through timezone_identifiers_list() /  
  215. DateTimezone::listIdentifiers().  
  216. . timezone_location_get() / DateTimezone::getLocation() for retrieving  
  217. location information from timezones.  
  218. . date_timestamp_set() / DateTime::setTimestamp() to set a Unix timestamp  
  219. without invoking the date parser. (Scott, Derick)  
  220. . date_timestamp_get() / DateTime::getTimestamp() to retrieve the Unix  
  221. timestamp belonging to a date object.  
  222. . two optional parameters to timezone_transitions_get() /  
  223. DateTimeZone::getTranstions() to limit the range of transitions being  
  224. returned.  
  225. . support for "first/last day of <month>" style texts.  
  226. . support for date/time strings returned by MS SQL.  
  227. . support for serialization and unserialization of DateTime objects.  
  228. . support for diffing date/times through date_diff() / DateTime::diff().  
  229. . support for adding/subtracting weekdays with strtotime() and  
  230. DateTime::modify().  
  231. . DateInterval class to represent the difference between two date/times.  
  232. . support for parsing ISO intervals for use with DateInterval.  
  233. . date_add() / DateTime::add(), date_sub() / DateTime::sub() for applying an  
  234. interval to an existing date/time.  
  235. . proper support for "this week", "previous week"/"last week" and "next week"  
  236. phrases so that they actually mean the week and not a seven day period  
  237. around the current day.  
  238. . support for "<xth> <weekday of" and "last <weekday> of" phrases to be used  
  239. with months - like in "last saturday of februari 2008".  
  240. . DatePeriod class which supports iterating over a DateTime object applying  
  241. DateInterval on each iteration, up to an end date or limited by maximum  
  242. number of occurences.  
  243.   
  244. - Added array_replace() and array_replace_recursive() functions. (Matt)  
  245. - Added ReflectionProperty::setAccessible() method that allows non-public  
  246. property's values to be read through ::getValue(). (Derick)  
  247. - Added msg_queue_exists() function to sysvmsg extension. (Benjamin Schulz)  
  248. - Added Firebird specific attributes that can be set via PDO::setAttribute()  
  249. to control formatting of date/timestamp columns: PDO::FB_ATTR_DATE_FORMAT,  
  250. PDO::FB_ATTR_TIME_FORMAT and PDO::FB_ATTR_TIMESTAMP_FORMAT. (Lars W)  
  251. - Added gmp_testbit() function. (Stas)  
  252. - Added icon format support to getimagesize(). (Scott)  
  253. - Added LDAP_OPT_NETWORK_TIMEOUT option for ldap_set_option() to allow  
  254. setting network timeout (FR #42837). (Jani)  
  255. - Added optional escape character parameter to fgetcsv(). (David Soria Parra)  
  256. - Added an optional parameter to strstr() and stristr() for retrieval of either  
  257. the part of haystack before or after first occurrence of needle.  
  258. (Johannes, Felipe)  
  259. - Added xsl->setProfiling() for profiling stylesheets. (Christian)  
  260. - Added long-option feature to getopt() and made getopt() available also on  
  261. win32 systems by adding a common getopt implementation into core.  
  262. (David Soria Parra, Jani)  
  263. - Added support for optional values, and = as separator, in getopt(). (Hannes)  
  264. - Added lcfirst() function. (David C)  
  265. - Added PREG_BAD_UTF8_OFFSET_ERROR constant. (Nuno)  
  266. - Added native support for asinh(), acosh(), atanh(), log1p() and expm1().  
  267. (Kalle)  
  268. - Added inet_pton() and inet_ntop() also for Windows platforms. (Kalle)  
  269. - Added mcrypt_create_iv() also for Windows platforms. (Pierre)  
  270.   
  271. - Fixed html_entity_decode() incorrectly converting numeric html entities  
  272. to different characters with cp1251 and cp866. (Scott)  
  273. - Fixed an issue in date() where a : was printed for the O modifier after a P  
  274. modifier was used. (Derick)  
  275. - Fixed exec() on Windows to not eat the first and last double quotes. (Scott)  
  276.   
  277. - Fixed PECL bug #12794 (PDOStatement->nextRowset() doesn�t work). (Johannes)  
  278. - Fixed PECL bug #12401 (Add support for ATTR_FETCH_TABLE_NAMES). (Johannes)  
  279.   
  280. - Fixed bug #45622 (isset($arrayObject->p) misbehaves with ArrayObject::  
  281. ARRAY_AS_PROPS set). (robin_fernandes at uk dot ibm dot com, Arnaud)  
  282. - Fixed bug #45614 (ArrayIterator::current(), ::key() can show 1st private  
  283. prop of wrapped object). (robin_fernandes at uk dot ibm dot com, Arnaud)  
  284. - Fixed bug #45571 (ReflectionClass::export() shows superclasses' private  
  285. static methods). (robin_fernandes at uk dot ibm dot com)  
  286. - Fixed bug #45540 (stream_context_create creates bad http request). (Arnaud)  
  287. - Fixed bug #45430 (windows implementation of crypt is not thread safe).  
  288. (Pierre)  
  289. - Fixed bug #45345 (SPLFileInfo::getPathInfo() returning dir info instead of  
  290. file info). (Etienne)  
  291. - Fixed bug #45179 (--with-mysql-sock fails to compile & work). (Andrey)  
  292. - Fixed bug #45038 (Crash when using DateTimeZone object returned by  
  293. Date::getTimezone). (Joe Orton, Derick)  
  294. - Fixed bug #44769 (declaring private magic methods should throw error).  
  295. (Felipe)  
  296. - Fixed bug #44913 (Segfault when using return in combination with nested loops  
  297. and continue 2). (Dmitry)  
  298. - Fixed bug #44899 (__isset usage changes behavior of empty()). (Etienne)  
  299. - Fixed bug #44897 (failed to prepare statement). (Andrey)  
  300. - Fixed bug #44849 (imagecolorclosesthwb() is not available on Windows).  
  301. (Kalle)  
  302. - Fixed bug #44805 (rename() function is not portable to Windows). (Pierre)  
  303. - Fixed bug #44779 (filter returns NULL in CLI when it shouldn't). (Arnaud)  
  304. - Fixed bug #44742 (timezone_offset_get() causes segmentation faults). (Derick)  
  305. - Fixed bug #44660 (Indexed and reference assignment to propery of non-object  
  306. don't trigger warning). (Dmitry)  
  307. - Fixed bug #44648 (Attribute names not checked for wellformedness). (Rob)  
  308. - Fixed bug #44414 (Incomplete reporting about abstract methods). (Dmitry)  
  309. - Fixed bug #44390 (mysqli_bind_param/bind_result and Object member variables).  
  310. (Andrey)  
  311. - Fixed bug #44352 (mysqli_connect_error() false negative for host errors).  
  312. (Andrey)  
  313. - Fixed bug #44336 (Improve pcre UTF-8 string matching performance).  
  314. (frode at coretrek dot com, Nuno)  
  315. - Fixed bug #44301 (Segfault when an exception is thrown on persistent  
  316. connections). (Martin Jansen)  
  317. - Fixed bug #44257 (timelib_tz_lookup_table must use float for gmtoffset).  
  318. (Derick, iuri dot fiedoruk at hp dot com).  
  319. - Fixed bug #44214 (Crash using preg_replace_callback() and global variable).  
  320. (Nuno, Scott)  
  321. - Fixed bug #44034 (FILE_IGNORE_NEW_LINES in file() does not work as expected  
  322. when lines end in \r\n). (Ilia)  
  323. - Fixed bug #43960 (strtotime() returns timestamp in the future when given a  
  324. bogus string). (Derick)  
  325. - Fixed bug #43832 (mysqli_get_charset() doesn't expose charset comment).  
  326. (Andrey)  
  327. - Fixed bug #43808 (date_create never fails (even when it should)). (Derick)  
  328. - Fixed bug #43527 (DateTime created from a timestamp reports environment  
  329. timezone). (Derick)  
  330. - Fixed bug #43452 (strings containing a weekday, or a number plus weekday  
  331. misbehaved if the current day-of-week was same as the one in the phrase).  
  332. (Derick)  
  333. - Fixed bug #43426 (crash on nested call_user_func() calls). (Dmitry)  
  334. - Fixed bug #43323 (Wrong count abstract methods). (Felipe, Dmitry)  
  335. - Fixed bug #43261 (Use ^ as the escape with escapeshellcmd() on Windows).  
  336. (Scott)  
  337. - Fixed bug #43075 (Support 2007-11-01T24:00:00+00:00). (Derick)  
  338. - Fixed bug #43003 (Invalid timezone reported for DateTime objects constructed  
  339. using a timestamp). (Derick)  
  340. - Fixed bug #43143 (Warning about empty IV with MCRYPT_MODE_ECB). (Derick)  
  341. - Fixed bug #43136 (possible crash on script execution timeout.  
  342. The EG(function_state_ptr) is completely removed,  
  343. EG(current_execute_data)->function_state must be used instead). (Dmitry)  
  344. - Fixed bug #42952 (soap cache file is created with insecure permissions).  
  345. (Dmitry)  
  346. - Fixed bug #42868 (Floats cast to integer produce unpredictable results).  
  347. (Zoe Slattery)  
  348. - Fixed bug #42848 (Status: header incorrect under FastCGI). (Dmitry)  
  349. - Fixed bug #42773 (WSDL error causes HTTP 500 Response). (Dmitry)  
  350. - Fixed bug #42737 (preg_split('//u') triggers a E_NOTICE with newlines).  
  351. (Nuno)  
  352. - Fixed bug #42736 (xmlrpc_server_call_method() crashes). (Tony)  
  353. - Fixed bug #42663 (gzinflate() try to allocate all memory with truncated  
  354. data). (Arnaud)  
  355. - Fixed bug #42657 (ini_get() returns incorrect value when default is NULL).  
  356. (Jani, Scott)  
  357. - Fixed bug #42637 (SoapFault : Only http and https are allowed). (Bill Moran)  
  358. - Fixed bug #42548 (mysqli PROCEDURE calls can't return result sets). (Hartmut)  
  359. - Fixed bug #42509 (gmp leaks memory when gmp_init() not used). (Stas)  
  360. - Fixed bug #42499 (PDO_MYSQL: multi-statement execution via PDO::exec() makes  
  361. connection unusable). (Johannes)  
  362. - Fixed bug #42443 (PDO SQLite driver binds integers and booleans as strings).  
  363. (Scott)  
  364. - Fixed bug #42284 (duplicate of #39700). (Lars W)  
  365. - Fixed bug #42203 (Clear SQLite result sets before closing database). (Scott)  
  366. - Fixed bug #42190 (Constructing DateTime with TimeZone Indicator invalidates  
  367. DateTimeZone). (Derick)  
  368. - Fixed bug #42069 (parse_ini_file() allows using some non-alpha numeric  
  369. characters). (Jani)  
  370. - Fixed bug #41997 (pdo_mysql: stored procedure call returning single rowset  
  371. blocks future queries). (Johannes)  
  372. - Fixed bug #41996 (Problem accessing Oracle ROWID). (Martin Jansen)  
  373. - Fixed bug #41599 (setTime() fails after modify() is used). (Derick)  
  374. - Fixed bug #41522 (PDO firebird driver returns null if it fails to connect).  
  375. (Lars W)  
  376. - Fixed bug #41135 (PDO SQLite driver binds blobs as strings,  
  377. use sqlite3_bind_blob() to stop errors with null bytes). (Scott)  
  378. - Fixed bug #39822 (new PDO() doesn't work with firebird). (Lars W)  
  379. - Fixed bug #39700 (NUMERIC error when result precision are 7,8 or 12-14 ).  
  380. (Lars W)  
  381. - Fixed bug #39457 (Multiple invoked OO connections never close). (Andrey)  
  382. - Fixed bug #39397 (invalid statement handle in Unknown on line 0). (Lars W)  
  383. - Fixed bug #39346 (Unsetting a static variable inside a destructor causes  
  384. segfault later on). (Dmitry)  
  385. - Fixed bug #39127 (Old-style constructor fallbacks produce strange results).  
  386. (Tony)  
  387. - Fixed bug #39056 (Interbase NUMERIC data type error). (Lars W)  
  388. - Fixed bug #39018 (Error control operator '@' fails to suppress "Uninitialized  
  389. string offset"). (Felipe)  
  390. - Fixed bug #38468 (Unexpected creation of cycle). (Dmitry)  
  391. - Fixed bug #37964 (Reflection shows private methods of parent class).  
  392. (Felipe, Marcus)  
  393. - Fixed bug #37911 (preg_replace_callback() ignores named groups). (Nuno)  
  394. - Fixed bug #37076 (SimpleXML ignores .=). (Felipe, Marcus)  
  395. - Fixed bug #36128 (Interbase PDO - timestamp columns return NULL). (Lars W)  
  396. - Fixed bug #35386 (firebird: first row is null). (Lars W)  
  397. - Fixed bug #35163 (Array elements can lose references). (Dmitry)  
  398. - Fixed bug #32330 (session_destroy, "Failed to initialize storage module",  
  399. custom session handler). (Gwynne)  
  400. - Fixed bug #32143 (ibase_query() causing IBserver 7 crash with NULL param as  
  401. link-id). (Lars W)  
  402. - Fixed bug #30907 (ibase_query() crashes (same bug as #32143). (Lars W)  
  403. - Fixed bug #30690 (Resource handle from ibase_execute becomes invalid after  
  404. return). (Lars W)  
  405. - Fixed bug #29044 (compact() does not have infinite recursion protection).  
  406. (Tony)  
  407. - Fixed bug #27372 (parse error loading browscap.ini at apache startup).  
  408. (Jani)   

Tags: php, upgrade, namespace

闲话软件业的竞争

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

不要用价格拼市场--倒闭时也要站着
  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: 竞争, 软件, 开发, 价格, 市场