Warning: curl_exec() has been disabled for security reasons in /pub/host/sunboyu/sunboyu/www/wp-includes/http.php on line 1022

Warning: Cannot modify header information - headers already sent by (output started at /pub/host/sunboyu/sunboyu/www/wp-includes/http.php:1022) in /pub/host/sunboyu/sunboyu/www/wp-includes/feed-rss2.php on line 8
一个程序猿 » 其他 http://www.sunboyu.cn 时光不会倒流,脚步总要前进 Tue, 31 Jan 2012 10:50:34 +0000 http://wordpress.org/?v=2.7 en hourly 1 结合逍遥问问讲解如何利用LoadRunner进行性能测试 http://www.sunboyu.cn/2011/01/27/%e7%bb%93%e5%90%88%e9%80%8d%e9%81%a5%e9%97%ae%e9%97%ae%e8%ae%b2%e8%a7%a3%e5%a6%82%e4%bd%95%e5%88%a9%e7%94%a8loadrunner%e8%bf%9b%e8%a1%8c%e6%80%a7%e8%83%bd%e6%b5%8b%e8%af%95.shtml http://www.sunboyu.cn/2011/01/27/%e7%bb%93%e5%90%88%e9%80%8d%e9%81%a5%e9%97%ae%e9%97%ae%e8%ae%b2%e8%a7%a3%e5%a6%82%e4%bd%95%e5%88%a9%e7%94%a8loadrunner%e8%bf%9b%e8%a1%8c%e6%80%a7%e8%83%bd%e6%b5%8b%e8%af%95.shtml#comments Thu, 27 Jan 2011 02:33:44 +0000 admin http://www.sunboyu.cn/?p=1384 最近群里聊到测试,我也拿公司测试部门的一个文档分享。我们测试组4个MM,负责平时的功能测试,性能测试和安全测试。既有很萌的测试主管,又有彪悍的千杯不醉,还有海吃不胖的瘦弱女生,包括由行政转为技术的全才。

PPT主要得靠演讲人的口述才能理解,这里PPT写的也比较详尽,大家可以看出一些功能和流程上的东西。

PPT部分内容删除,包括产品业务流程图,设计敏感账号和我们一些IP信息,不过不影响阅读。

附加一句:得用WPS打开。没装WPS的可以来这里下载 http://www.wps.cn/

顺便宣传我们的产品 逍遥问问

PPT下载

]]>
http://www.sunboyu.cn/2011/01/27/%e7%bb%93%e5%90%88%e9%80%8d%e9%81%a5%e9%97%ae%e9%97%ae%e8%ae%b2%e8%a7%a3%e5%a6%82%e4%bd%95%e5%88%a9%e7%94%a8loadrunner%e8%bf%9b%e8%a1%8c%e6%80%a7%e8%83%bd%e6%b5%8b%e8%af%95.shtml/feed
利用loadrunner做mysql压力测试 http://www.sunboyu.cn/2011/01/06/%e5%88%a9%e7%94%a8loadrunner%e5%81%9amysql%e5%8e%8b%e5%8a%9b%e6%b5%8b%e8%af%95.shtml http://www.sunboyu.cn/2011/01/06/%e5%88%a9%e7%94%a8loadrunner%e5%81%9amysql%e5%8e%8b%e5%8a%9b%e6%b5%8b%e8%af%95.shtml#comments Thu, 06 Jan 2011 15:05:07 +0000 admin http://www.sunboyu.cn/?p=1354 loadrunner下的mysql c api

一个很简单的模拟用户访问论坛帖子的loadrunner测试脚本

最近跟测试组学习loadrunner的使用,测试组的姑娘们习惯用界面进行操作,而习惯linux平台使用的我很多功能都使用代码来实现了。

最近用loadrunner写了一个模拟社区用户压测论坛数据库的一个脚本,进行数据库的压力测试和优化工作。

用户行为分析:

在社区中,看帖的人是发帖人的10倍以上,而看帖人大概80%以上都在看新帖,20以下的用户有挖坟行为。

因此,设定如此的比率:每11个用户,1个发帖,8个看最近30%的帖,两个看老的70%的帖。

我的论坛帖子回复表大概是:973505个帖子的回复,两千多万的回帖。

根据这些数据,配合mysql的c api,写如下脚本:

注:脚本的my_mysql_insert()函数是有问题的,多线程下有一个资源符没处理好,因为还不太了解loadrunner的线程机制,所以留下了一个bug。

在做完这个脚本后,我发现我们测试机性能都不错,很难在一个5G大小的单表上主键查询造成很大的压力,所以,计划把dz论坛架设,用php+mysql真实环境下进行压测,这样可以顺便练习http函数下的loadrunner编程。

  1. globals.h
  2. #ifndef _GLOBALS_H
  3. #define _GLOBALS_H
  4. #include "lrun.h"
  5. #include "web_api.h"
  6. #include "lrw_custom_body.h"
  7. #include "modal_dialog_callbacks.h"
  8. #define random(x) (rand()%x)
  9. #include <mysql .h>
  10. #include <mysql_com .h>
  11. #include <mysql_time .h>
  12. #include <mysql_version .h>
  13. #include <typelib .h>
  14. #include <my_list .h>
  15. #include <my_alloc .h>
  16. #endif // _GLOBALS_H
  17. </my_alloc></my_list></typelib></mysql_version></mysql_time></mysql_com></mysql>
  1. vuser_init.c
  2. MYSQL *db;
  3. MYSQL_ROW record;
  4. vuser_init()
  5. {
  6. char sql[128];
  7. MYSQL_RES *results1;
  8.     lr_load_dll("libmysql.dll");
  9.     db = mysql_init(NULL);
  10. mysql_real_connect(db, "192.168.8.32", "root", "123456", "sunboyu_test", 3311, "/tmp/mysql3311.sock", 1);
  11.     
  12. sprintf(sql, "show tables");
  13. mysql_query(db, sql);
  14.     results1 = mysql_store_result(db);
  15.     while((record = mysql_fetch_row(results1)))
  16. {
  17.     lr_log_message("table = %s", record[0]);
  18.      }
  19. mysql_free_result(results1);
  20. return 0;
  21. }
  1. vuser_end.c
  2. vuser_end()
  3. {
  4.    mysql_close(db);
  5.    mysql_server_end();
  6. return 0;
  7. }
  1. Action.c
  2. Action()
  3. {
  4. int r1 = 0;
  5. char sql[128];
  6. r1 = random(11);            //10种用户,8种正常访问,两种在挖坟
  7. lr_log_message(" %d", r1);
  8.         if(r1==11)
  9.         {
  10.             my_mysql_insert();
  11.         }
  12.         else
  13.         {
  14.             my_mysql_query( r1 );
  15.         }
  16. return 0;
  17. }
  18.  
  19. int my_mysql_query( int randid )
  20. {
  21. int r2 = 0;
  22. int j = 0;
  23. int count = 0;
  24. int page = 0;
  25. char sql[128];
  26. MYSQL_RES *results2;
  27. if(randid&lt;2)  //老数据,小部分 20%
  28. {
  29. r2 = random(700000);
  30. sprintf(sql, "SELECT COUNT(*) AS count FROM posts_jx3 WHERE tid = %d;",r2);
  31. lr_log_message("%s",sql);
  32.         mysql_query(db, sql);
  33.         results2 = mysql_store_result(db);
  34.         while((record = mysql_fetch_row(results2)))
  35. {
  36.         lr_log_message("count = %d", record[0]);
  37.         }
  38. mysql_free_result(results2);
  39. page = count/10;
  40. lr_log_message("page = %d", page);
  41. for(j=0;j< =page;j++)
  42. {
  43. sprintf(sql, "SELECT *  FROM posts_jx3 WHERE tid = %d LIMIT %d,10;",r2,j);
  44. mysql_query(db, sql);
  45. lr_log_message("%s", sql);
  46. if (j>0) {
  47.   results2 = mysql_store_result(db);
  48.                   while((record = mysql_fetch_row(results2)))
  49.           {
  50.                      lr_log_message("pid = %d", record[0]);
  51.                    }
  52.           mysql_free_result(results2);
  53. }
  54. }
  55. }
  56. else //新数据,大部分 80%
  57. {
  58.         r2 = random(273505);
  59. r2 = r2+700000;
  60. sprintf(sql, "SELECT COUNT(*) AS count FROM posts_jx3 WHERE tid = %d;",r2);
  61. lr_log_message("%s",sql);
  62.         mysql_query(db, sql);
  63.         results2 = mysql_store_result(db);
  64.         while((record = mysql_fetch_row(results2)))
  65. {
  66. lr_log_message("count = %d", record[0]);
  67.         }
  68. mysql_free_result(results2);
  69. page = count/10;
  70. lr_log_message("page = %d", page);
  71.  
  72. for(j=0;j< =page;j++)
  73. {
  74. sprintf(sql, "SELECT *  FROM posts_jx3 WHERE tid = %d LIMIT %d,10;",r2,j);
  75. lr_log_message("%s", sql);
  76. mysql_query(db, sql);
  77. if (j>0) {
  78.   results2 = mysql_store_result(db);
  79.                   while((record = mysql_fetch_row(results2)))
  80.           {
  81.                       lr_log_message("pid = %d", record[0]);
  82.                    }
  83.           mysql_free_result(results2);
  84. }
  85. }
  86. }
  87. mysql_free_result(results2);
  88. return 0;
  89. }
  90.  
  91.  
  92.  
  93. int my_mysql_insert()
  94. {
  95. int t;
  96.     char sql[500];
  97. MYSQL_RES *results3;
  98. sprintf(sql,"%s","INSERT INTO posts_jx3 ( fid, tid, first, author, authorid, subject, dateline, message, useip, invisible, anonymous, usesig, htmlon, bbcodeoff, smileyoff, parseurloff, attachment, rate, ratetimes, status) VALUES ( 12345, 215053, 0, 'fdsafsdfsd', 2265065, '', 1240535917, 'fdsfsdfdsfd', '118.239.49.229', 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0);");
  99. lr_log_message("%s", sql);
  100.     t = mysql_query(db, sql);
  101. if(t)
  102. {
  103. lr_log_message("%s", mysql_error(db));
  104. }
  105. else
  106. {
  107. lr_log_message("%s", "suc");
  108. }
  109. }
]]>
http://www.sunboyu.cn/2011/01/06/%e5%88%a9%e7%94%a8loadrunner%e5%81%9amysql%e5%8e%8b%e5%8a%9b%e6%b5%8b%e8%af%95.shtml/feed
缸炉烧饼 http://www.sunboyu.cn/2010/10/24/%e7%bc%b8%e7%82%89%e7%83%a7%e9%a5%bc.shtml http://www.sunboyu.cn/2010/10/24/%e7%bc%b8%e7%82%89%e7%83%a7%e9%a5%bc.shtml#comments Sun, 24 Oct 2010 08:33:21 +0000 admin http://www.sunboyu.cn/?p=1293

最近做梦,梦见了老家的缸炉烧饼。在北京找了数多地方,没找到卖缸炉烧饼的。流连之际,发现有人跟我一样怀念着家乡不起眼的小吃。遂转载一故乡作家的文章。

土豆网:缸炉烧饼的介绍

缸炉烧饼

  正如到北京不吃全聚德烤鸭就不算到北京一样,如果到了平山不吃缸炉烧饼,那就不能说到过平山。

  说起平山,可能没几个人知道这个小小的县城,但说起革命圣地西柏坡,恐怕用如雷贯耳来形容一点儿也不过分,而这个大名鼎鼎的西柏坡,就是平山县的一个小村庄。从1990年离开家乡平山,到今年已经整整二十年了。二十年间,家乡的很多东西都如过眼烟云,并没有在我心中留下多少印象。倒是这缸炉烧饼,总如儿时那样的亲切,以至于每次回老家,都回吃上一次,甚至于有亲戚朋友回去,都委托他们带回来几个尝尝鲜。

  面食里叫烧饼的并不少,无非是放了油盐,和好面后上面沾上芝麻,用锅烙得金黄。但缸炉烧饼却有它的独特之处,一是方形,据我了解,各地的烧饼样式不少,但大部分是圆的,仅有这缸炉烧饼,便便做成了方形,原因当然不得而知,但这便从形状上与其他的烧饼分开了;二是有细分类,大致可分为;普通、油酥、牛肉罩等;三是制作方式不同,大部分烧饼都是用锅烙,而缸炉烧饼却是像烤红薯一样,做好后放在一个铁筒中烘烤。

  刚出炉的烧饼,表面焦黄,如上中间有一个山包样的大鼓,上面粘着白白的芝麻,咬一口酥中带脆,满口清香,油酥烧饼,更是酥软可口,至于牛肉罩的,是在烧饼的表面放了一层细如肉松的牛肉粒,一口下去,不仅香气四溢,而且烤牛肉的香味久久不散,晚上连牙都舍不得刷了。

  记得很小的时候,每到赶集,总是跟在家长后面缠着要去,其实也没什么东西可买,只是为了2分钱一个的烧饼,但因为家里条件实在不好,就是这样的要求一年也只能实现有限的几次。于是又求了家长在家里做,面和油都不错,但就是做不出那个味道,但有总比没有的好,吃不上买的,自己做的也可以解一下馋。每年年底,姥爷都会来家里看看,对于他带来的其他东西,我们一概不问,只是找他书包里的那几个缸炉烧饼。久而久之,姥爷每次来,也总会带一包缸炉烧饼来。

  后来,缸炉烧饼又长到5分一个,一角一个,两角一个,现在,已经是四角一个了。但我对于缸炉烧饼的情节,不仅没有减退,而是越来越浓重了。

  四个角的缸炉烧饼就像是一座城,一座建在我心中的城,一座没有城门的城。不论走到哪里,我总也无法突破它,也从来没有想过要突破它。

]]>
http://www.sunboyu.cn/2010/10/24/%e7%bc%b8%e7%82%89%e7%83%a7%e9%a5%bc.shtml/feed
使用XDEBUG进行PHP性能分析 http://www.sunboyu.cn/2010/07/22/%e4%bd%bf%e7%94%a8xdebug%e8%bf%9b%e8%a1%8cphp%e6%80%a7%e8%83%bd%e5%88%86%e6%9e%90.shtml http://www.sunboyu.cn/2010/07/22/%e4%bd%bf%e7%94%a8xdebug%e8%bf%9b%e8%a1%8cphp%e6%80%a7%e8%83%bd%e5%88%86%e6%9e%90.shtml#comments Thu, 22 Jul 2010 01:47:49 +0000 admin http://www.sunboyu.cn/?p=1259 最近给论坛做性能优化,写了一个文档,在线编辑器不好用,就写了个wps文档。

文件下载:使用XDEBUG进行PHP性能分析

]]>
http://www.sunboyu.cn/2010/07/22/%e4%bd%bf%e7%94%a8xdebug%e8%bf%9b%e8%a1%8cphp%e6%80%a7%e8%83%bd%e5%88%86%e6%9e%90.shtml/feed
新浪微博短URL的意义和实现 http://www.sunboyu.cn/2010/01/03/%e6%96%b0%e6%b5%aa%e5%be%ae%e5%8d%9a%e7%9f%adurl%e7%9a%84%e6%84%8f%e4%b9%89%e5%92%8c%e5%ae%9e%e7%8e%b0.shtml http://www.sunboyu.cn/2010/01/03/%e6%96%b0%e6%b5%aa%e5%be%ae%e5%8d%9a%e7%9f%adurl%e7%9a%84%e6%84%8f%e4%b9%89%e5%92%8c%e5%ae%9e%e7%8e%b0.shtml#comments Sat, 02 Jan 2010 16:40:59 +0000 admin http://www.sunboyu.cn/?p=1141 value型的数据库,这玩意正好用上,支持高并发大负载,逻辑简单还支持分布式,这么实现貌似最好不过。 吃饱没事,大半夜写文章。欢迎大家来讨论。 ]]> 新浪微博,就是迷你博客(废话)。我关心的不是博客,是url。里边的url全部使用了一种很短的url,比如 http://sinaurl.cn/**** 这里猜测了这种url的实现意义:

1:减少url所占的字数,优化排版。微博就是一个小,如果我贴了一个地址就占一半的字数,那作者很不爽,读者很不爽,做页面那哥们(MM)肯定跟不爽。所以,咱弄个短的url,岂不皆大欢喜。

2:排挤灌水广告者。众所周知,很多广告者为了广告,或者为了页面优化,得群发垃圾消息增加反向链接数。而短url跳转这种方式根本无法增加反向链接数。也就是这种方式从根本上掐断了垃圾群发者的命根子,这样也就减少了垃圾信息的量,节约了信息审核的人工成本(这项成本随着严打是越来越高啊)。

3:暂时没想出来。

实现,其实很简单,就是接收个id,然后找到对应记录就行。根据新浪信息的量,不可能用mysql的,成本高(负载和硬件消耗)。不可能用oracle,凭我的了解,不可能用。

新浪在小日本那个ttserver的基础上开发了个支持分布式的key->value型的数据库,这玩意正好用上,支持高并发大负载,逻辑简单还支持分布式,这么实现貌似最好不过。

吃饱没事,大半夜写文章。欢迎大家来讨论。

]]>
http://www.sunboyu.cn/2010/01/03/%e6%96%b0%e6%b5%aa%e5%be%ae%e5%8d%9a%e7%9f%adurl%e7%9a%84%e6%84%8f%e4%b9%89%e5%92%8c%e5%ae%9e%e7%8e%b0.shtml/feed
一段清理系统垃圾的代码(只用于windows) http://www.sunboyu.cn/2009/11/17/%e4%b8%80%e6%ae%b5%e6%b8%85%e7%90%86%e7%b3%bb%e7%bb%9f%e5%9e%83%e5%9c%be%e7%9a%84%e4%bb%a3%e7%a0%81%ef%bc%88%e5%8f%aa%e7%94%a8%e4%ba%8ewindows%ef%bc%89.shtml http://www.sunboyu.cn/2009/11/17/%e4%b8%80%e6%ae%b5%e6%b8%85%e7%90%86%e7%b3%bb%e7%bb%9f%e5%9e%83%e5%9c%be%e7%9a%84%e4%bb%a3%e7%a0%81%ef%bc%88%e5%8f%aa%e7%94%a8%e4%ba%8ewindows%ef%bc%89.shtml#comments Tue, 17 Nov 2009 06:28:47 +0000 admin http://www.sunboyu.cn/?p=1048 clean

]]>
http://www.sunboyu.cn/2009/11/17/%e4%b8%80%e6%ae%b5%e6%b8%85%e7%90%86%e7%b3%bb%e7%bb%9f%e5%9e%83%e5%9c%be%e7%9a%84%e4%bb%a3%e7%a0%81%ef%bc%88%e5%8f%aa%e7%94%a8%e4%ba%8ewindows%ef%bc%89.shtml/feed
discuz的生存之道 http://www.sunboyu.cn/2009/09/29/discuz%e7%9a%84%e7%94%9f%e5%ad%98%e4%b9%8b%e9%81%93.shtml http://www.sunboyu.cn/2009/09/29/discuz%e7%9a%84%e7%94%9f%e5%ad%98%e4%b9%8b%e9%81%93.shtml#comments Tue, 29 Sep 2009 07:44:03 +0000 admin http://www.sunboyu.cn/?p=1013 最近修改UCH,改得头大,对他的东西大概也熟悉个七八。

暂且不用说他的代码质量,逻辑或者完善程度,但说这个产品的发展路子,这肯定是个有市场的东西。

UCH是国内最早搞开源sns的了,而且搭配上discuz这个用户量很大的东西,迅速在国内铺开。

当然要说代码质量,那个惨,bug无数。基本做PHP的程序员,死都不愿意改它。

但是很多项目还是拿来了,为啥?因为他适合中国的用户,为啥适合?抄facebook?当然也有一定关系,关键呢,是因为东西出来的早。

产品迅速抢占市场是老戴在discuz闭源收费到开源免费的一个战略性转变,也正是这个转变,让discuz有了更加快速的成长。

bug?功能的欠缺?每天在discuz官方网站上可以看到无数的抱怨。吵得,骂的,一群一群的,但仍然阻止不了新版本接连不断的发布。

用户就是在这样不断的期望失望再期望再失望中逐渐培养出来的。

ecshop,我自认为做的很好,只可惜推出较晚,被南边的大头抢了先机。老戴的产品肯定会发展好的,因为他已经不是一个程序员。

]]>
http://www.sunboyu.cn/2009/09/29/discuz%e7%9a%84%e7%94%9f%e5%ad%98%e4%b9%8b%e9%81%93.shtml/feed
firefox的cache和http头信息 http://www.sunboyu.cn/2009/09/24/firefox%e7%9a%84cache%e5%92%8chttp%e5%a4%b4%e4%bf%a1%e6%81%af.shtml http://www.sunboyu.cn/2009/09/24/firefox%e7%9a%84cache%e5%92%8chttp%e5%a4%b4%e4%bf%a1%e6%81%af.shtml#comments Thu, 24 Sep 2009 03:05:03 +0000 admin http://www.sunboyu.cn/?p=999 最近调试squid,发现一个很奇异的问题,程序服务器都配置好后,使用ie狂刷,每次都是HIT,而是用firefoxF5狂刷,结果很多都是MISS,google后发现firefox独有的特性:

如果一个页面访问后,在地址栏再次敲入打开,则走cache,而如果点F5,则firefox发送http请求的时候会自动在头上增加 Cache-Control max-age=0 因此缓存失效。不过正常访问下,还是没有问题的。

原文:

I usually post about problems that I’ve solved. But every once in a while, for all my digging around and googling, I come up on something that I can’t solve quickly and thuroughly enough - so I post about it here in the hope someone can help.

To make a long story short - I’ve found out that FireFox 1.5 appends a “Cache-Control: max-age=0″ HTTP header to requests for ASPX files. This header tells the web server and any proxy servers on the way not to respond with cached version of the requested page and to go and run the actual ASPX instead.

For me, this is a big problem. It renders the NetApp NetCache reverse proxy that I’m using quite useless and impacts badly on response times for that particular page.

Does anybody know why FireFox adds this header to the request? How can this be circumvented either on the browser’s side or on the proxy server’s side?

It took us a bit to work it out.

If you hit refresh, firefox will ask for the latest copy (max-age=0).

If you type the url into the address bar and hit enter, then type it in again, it’ll cache.

Check it works in about:cache.

See also:

http://developer.mozilla.org/en/docs/Using_Firefox_1.5_caching

]]>
http://www.sunboyu.cn/2009/09/24/firefox%e7%9a%84cache%e5%92%8chttp%e5%a4%b4%e4%bf%a1%e6%81%af.shtml/feed
智联招聘的个人评测系统 http://www.sunboyu.cn/2009/07/16/%e6%99%ba%e8%81%94%e6%8b%9b%e8%81%98%e7%9a%84%e4%b8%aa%e4%ba%ba%e8%af%84%e6%b5%8b%e7%b3%bb%e7%bb%9f.shtml http://www.sunboyu.cn/2009/07/16/%e6%99%ba%e8%81%94%e6%8b%9b%e8%81%98%e7%9a%84%e4%b8%aa%e4%ba%ba%e8%af%84%e6%b5%8b%e7%b3%bb%e7%bb%9f.shtml#comments Wed, 15 Jul 2009 20:56:56 +0000 admin http://www.sunboyu.cn/?p=860 朋友发给我智联招聘一个个人评测系统,进行了职业兴趣,IQ,EQ的测试,经过一中午的测试,我发现这个测试还是蛮有道理的,对我的分析大体如下:

职业兴趣:研究型、社会型。 从小不喜欢学习,但喜欢玩弄点高深的东西,让只看分数的老师们头疼不已。分数不高,难题倒解得非常出色,让我想起了爱因斯坦(狂晕)。中学往后一直在学校担任领导干部,估计是社会型性格的由来。

智商102,平均水平。看来真是一般人。其中对数字的敏感很强,排到了82%,估计我天生是搞计算机的命。不过我更喜欢研究hack。

情商不高,不喜欢研究人,估计长期跟计算机打交道的结构。不过沟通能力语言能力情绪控制能力挺强。在情商分支看来我也偏科。我是很理智的人。

————————————-

人的发展还是取决于个人和环境,测试权当一参考。

]]>
http://www.sunboyu.cn/2009/07/16/%e6%99%ba%e8%81%94%e6%8b%9b%e8%81%98%e7%9a%84%e4%b8%aa%e4%ba%ba%e8%af%84%e6%b5%8b%e7%b3%bb%e7%bb%9f.shtml/feed
蓝芒主机管理系统简析 http://www.sunboyu.cn/2009/05/02/%e8%93%9d%e8%8a%92%e4%b8%bb%e6%9c%ba%e7%ae%a1%e7%90%86%e7%b3%bb%e7%bb%9f%e7%ae%80%e6%9e%90.shtml http://www.sunboyu.cn/2009/05/02/%e8%93%9d%e8%8a%92%e4%b8%bb%e6%9c%ba%e7%ae%a1%e7%90%86%e7%b3%bb%e7%bb%9f%e7%ae%80%e6%9e%90.shtml#comments Sat, 02 May 2009 12:24:01 +0000 admin http://www.sunboyu.cn/?p=684 最近问了下蓝芒的销售,一套全功能的主机管理系统网络版是5000来块,而且现在可以打8折,也就是4000。

蓝芒的软件可以说是国内拔尖的,论技术,可能仅次于创值立信。这个价格多少对我写自己的主机管理系统有点打击。如果只是为了完善我的主机业务,买一套软件比我写可划算的多,而且他们有现成的售后队伍。

不过我还是网上google了一套破解的系统先看看。

昨天的帖子也说了,我弄了PHP DeZend系统去反解他们代码,很顺利,整套代码跃然呈现出来,最新版。5.0,程序注释都是5.1,估计是最新版。

能反解的,只是他的主控端,集成了业务系统。而被控端是一个windows的被控程序,没有反解,因为我没那个能耐。

下边是我阅读代码后分析的其软件架构:

e8939de88a92

主控端可以看出集成了业务平台,管理平台,代理平台等应用,而被控端可以是windows或者linux等操作系统。

主控端无需考虑操作系统,只需要销售产品,而被控端根据主控端传来的参数执行指令,生成产品。

这里蓝芒设计比较巧妙的,就是对windows和linux的一些相似业务做了规整,作出了通用的控制接口,可无缝去对接w或l的操作系统。

经过考虑,我决定还是购买一套蓝芒的系统,不过,我自己的系统依然准备进行开源开发,重新整合。

]]>
http://www.sunboyu.cn/2009/05/02/%e8%93%9d%e8%8a%92%e4%b8%bb%e6%9c%ba%e7%ae%a1%e7%90%86%e7%b3%bb%e7%bb%9f%e7%ae%80%e6%9e%90.shtml/feed
wordpress在不同webserver下的重写规则和配置 http://www.sunboyu.cn/2009/04/07/wordpress%e5%9c%a8%e4%b8%8d%e5%90%8cwebserver%e4%b8%8b%e7%9a%84%e9%87%8d%e5%86%99%e8%a7%84%e5%88%99%e5%92%8c%e9%85%8d%e7%bd%ae.shtml http://www.sunboyu.cn/2009/04/07/wordpress%e5%9c%a8%e4%b8%8d%e5%90%8cwebserver%e4%b8%8b%e7%9a%84%e9%87%8d%e5%86%99%e8%a7%84%e5%88%99%e5%92%8c%e9%85%8d%e7%bd%ae.shtml#comments Tue, 07 Apr 2009 13:22:07 +0000 admin http://www.sunboyu.cn/?p=644 apache下

  1. #.htaccess
  2. RewriteEngine On
  3. RewriteBase /
  4. RewriteCond %{REQUEST_FILENAME} !-f
  5. RewriteCond %{REQUEST_FILENAME} !-d
  6. RewriteRule . /index.php [L]
  7. #httpd.conf
  8. Options ExecCGI FollowSymLinks
  9. AllowOverride All
  10. Order allow,deny
  11. allow from all

nginx下

  1. #nginx.conf
  2. location / {
  3.         if (!-f $request_filename){
  4.             rewrite (.*) /index.php;
  5.         }
  6.     }
]]>
http://www.sunboyu.cn/2009/04/07/wordpress%e5%9c%a8%e4%b8%8d%e5%90%8cwebserver%e4%b8%8b%e7%9a%84%e9%87%8d%e5%86%99%e8%a7%84%e5%88%99%e5%92%8c%e9%85%8d%e7%bd%ae.shtml/feed
虚拟化产品市场分析 http://www.sunboyu.cn/2009/04/04/%e8%99%9a%e6%8b%9f%e5%8c%96%e4%ba%a7%e5%93%81%e5%b8%82%e5%9c%ba%e5%88%86%e6%9e%90.shtml http://www.sunboyu.cn/2009/04/04/%e8%99%9a%e6%8b%9f%e5%8c%96%e4%ba%a7%e5%93%81%e5%b8%82%e5%9c%ba%e5%88%86%e6%9e%90.shtml#comments Sat, 04 Apr 2009 05:13:41 +0000 admin http://www.sunboyu.cn/?p=626 我这里分析的虚拟化产品,主要是和IDC相关的一些虚拟产品。

我们常见的产品,比如虚拟主机(空间),VPS,服务器合租等。这类产品目前在市场上发展比较成熟,而且随着互联网发展,这类产品市场前景逐渐看好。

这点,从万网的发展路线就可以看出,中小企业越来越重视自己信息化的建设,而从百度的销售业绩也能看出,企业的投入逐渐从传统媒体转向了互联网。另外,各大IDC机房内,也有相当的托管机器是用在中小网站上。

而这些产品的基础构建,管理,对于不管是企业还是个人,都是一个问题。对于国内做虚拟主机产品的老大们,万网,新网都有自己的管理系统,而对于一些小型用户,一些开源的管理软件足矣,无非是增加点人力。

目前虚拟主机应用主流平台就是windows,linux,freebsd,windows系统首先有自己完善的管理机制和可供开发人员使用的API,对于unix相关系统,开源界更是提供了数不尽的资源。而这些产品更大的问题就是:他们只考虑了去如何管理一个系统,而并没有更多的考虑如何去运营这个系统,如何把产品更快投入商业生产中。

我熟知的成熟商业系统主要有cpanel系统,在整个产业都很出名的,因为美国很多主流虚拟主机提供商都使用这个系统。国内很出名的是创值立信,他们的产品可以算上国内老大了,据说他们的开发团队是从万网跑出来的一伙人,所以在经验和技术积累上很成熟。

但这两个系统都有致命的缺点,就是高昂的价格,不能被大众尤其是中小型的客户甚至个人所接受。

再说其他的一些产品。国产的蓝芒主机管理系统,也是行业内的佼佼者,它们的系统支持国内完善的业务流管理,跨平台的系统支持,可谓非常完善的产品。而再有一些小型的产品,基本都工作在windows下,而无法实现对windows/*nix混合集群的支持,这样就造成了部分客户的流失。

而一些开源的虚拟主机管理,其功能之强令人震撼,比如webmin主机管理平台,还有一些windows下的免费软件基本能实现对整个操作系统虚拟化的管理,但一旦涉及商用,就有很大的问题,其欠缺的不仅是支付,业务流,财务等,更难以实现的是对整个运营流程的管理。

而目前国内此市场上,或者产品功能的欠缺,或者价格的昂贵,对于一些初创的公司或者个人都是一个门槛,无法达到成本低廉化。

所以,我认为国内此类虚拟化管理软件还有很大的市场潜力,只要是能够适应市场的产品,会在如此大的市场份额中再分一杯羹。

]]>
http://www.sunboyu.cn/2009/04/04/%e8%99%9a%e6%8b%9f%e5%8c%96%e4%ba%a7%e5%93%81%e5%b8%82%e5%9c%ba%e5%88%86%e6%9e%90.shtml/feed
做完数据库抽象层,可能要做一个通用的缓存层 http://www.sunboyu.cn/2009/03/07/%e5%81%9a%e5%ae%8c%e6%95%b0%e6%8d%ae%e5%ba%93%e6%8a%bd%e8%b1%a1%e5%b1%82%ef%bc%8c%e5%8f%af%e8%83%bd%e8%a6%81%e5%81%9a%e4%b8%80%e4%b8%aa%e9%80%9a%e7%94%a8%e7%9a%84%e7%bc%93%e5%ad%98%e5%b1%82.shtml http://www.sunboyu.cn/2009/03/07/%e5%81%9a%e5%ae%8c%e6%95%b0%e6%8d%ae%e5%ba%93%e6%8a%bd%e8%b1%a1%e5%b1%82%ef%bc%8c%e5%8f%af%e8%83%bd%e8%a6%81%e5%81%9a%e4%b8%80%e4%b8%aa%e9%80%9a%e7%94%a8%e7%9a%84%e7%bc%93%e5%ad%98%e5%b1%82.shtml#comments Sat, 07 Mar 2009 06:17:49 +0000 admin http://www.sunboyu.cn/?p=598 数据抽象层实现了Mysql和SQLite的兼容,基本也就够用了,基本所有的PHP环境现在都支持sqlite(起码我配的环境是),而且扩展的过程证明了这个规则是可以通用的。

低下要做个通用的缓存层,基本就是 key value 这种简单映射的就足够。这种缓存目前实现主要有本地文本,bdb,memcache几大系列。本地文本异常灵活,方便迁移,不依赖其他组件,直接用PHP的文件读写函数就可以。缺点是,未有大规模系统使用,因为PHP本身效率问题。小的应用还是可以使用的,phpx上也有个三德子写的通用文本缓存类。

bdb就非常不错了,嵌入式的数据库,支持简单的key value模式,而且本身非常小,但效率高,支撑非常大的数据量。

memcache就不用说了,太通用了,很多大型的系统都在应用,优缺点不再重复。

抽象层兼容这几个就行了,能实现无缝迁移即可。

计划下周末开工。

]]>
http://www.sunboyu.cn/2009/03/07/%e5%81%9a%e5%ae%8c%e6%95%b0%e6%8d%ae%e5%ba%93%e6%8a%bd%e8%b1%a1%e5%b1%82%ef%bc%8c%e5%8f%af%e8%83%bd%e8%a6%81%e5%81%9a%e4%b8%80%e4%b8%aa%e9%80%9a%e7%94%a8%e7%9a%84%e7%bc%93%e5%ad%98%e5%b1%82.shtml/feed
购买新书两本 http://www.sunboyu.cn/2009/02/22/%e8%b4%ad%e4%b9%b0%e6%96%b0%e4%b9%a6%e4%b8%a4%e6%9c%ac.shtml http://www.sunboyu.cn/2009/02/22/%e8%b4%ad%e4%b9%b0%e6%96%b0%e4%b9%a6%e4%b8%a4%e6%9c%ac.shtml#comments Sun, 22 Feb 2009 12:02:06 +0000 admin http://www.sunboyu.cn/?p=575 http://www.douban.com/subject/2171797/

s3069021

http://www.douban.com/subject/3024665/

s30690211

]]>
http://www.sunboyu.cn/2009/02/22/%e8%b4%ad%e4%b9%b0%e6%96%b0%e4%b9%a6%e4%b8%a4%e6%9c%ac.shtml/feed
我们应该信任谁 http://www.sunboyu.cn/2009/01/22/%e6%88%91%e4%bb%ac%e5%ba%94%e8%af%a5%e4%bf%a1%e4%bb%bb%e8%b0%81.shtml http://www.sunboyu.cn/2009/01/22/%e6%88%91%e4%bb%ac%e5%ba%94%e8%af%a5%e4%bf%a1%e4%bb%bb%e8%b0%81.shtml#comments Thu, 22 Jan 2009 03:03:14 +0000 admin http://www.sunboyu.cn/?p=514 最近几个服务器频频出事,虽然不是自己的服务器,经验还是值得学习的。

在做高可靠性方案的时候,我们应该信任谁,是个问题。

首先是域名。一般域名都是委托给idc,或者专业做dns的,作为网站的入口,交给他们就等于绝对的信任他们,没有备份方案。如果带有些许的不信任,可以设置备用dns为自己的dns服务器。dns一般没太大的问题,但一旦有问题就是大问题,万网新网好像都发生过dns服务器大规模故障,全国各地大面积瘫痪,不能不说,对域名的信任存在问题。

链路,说到链路,这是个大问题,也许也包含了域名的问题。

从dns,网关,路由,响应,各个节点负载,都需要经过详细测试。

一般销售推销带宽,只是简单让测试ping值,但实际是不科学的,因为在用的时候,我选择的带宽ping值的确很好,但实际应用效果缺不理想,没有那个系统是靠ping值来保障的,域名服务器,网关速度,交换,路由的处理能力都是硬指标。很多服务器ping值好,但数据一流起来可就没那么好了。承诺给你大的带宽,可带宽要局限在一个固定的环境中,无异于局域网应用。

我们需要的是优秀的广域网应用,所以,最好的测试还是把服务架上,实际去跑一阵应用服务,才能最终确定带宽和链路的质量。

中间跳了很多环境,涉及了宽带提供商,运营商,代理,现场技术,用户等很多环节,保证每个环境的通路才是最终的通路。任何一个环节都可能成为瓶颈和以后应用的隐患。

但在中国的网络环境中,我们应该信任谁?

]]>
http://www.sunboyu.cn/2009/01/22/%e6%88%91%e4%bb%ac%e5%ba%94%e8%af%a5%e4%bf%a1%e4%bb%bb%e8%b0%81.shtml/feed
传说中的千万数据量优化 http://www.sunboyu.cn/2008/12/30/%e4%bc%a0%e8%af%b4%e4%b8%ad%e7%9a%84%e5%8d%83%e4%b8%87%e6%95%b0%e6%8d%ae%e9%87%8f%e4%bc%98%e5%8c%96.shtml http://www.sunboyu.cn/2008/12/30/%e4%bc%a0%e8%af%b4%e4%b8%ad%e7%9a%84%e5%8d%83%e4%b8%87%e6%95%b0%e6%8d%ae%e9%87%8f%e4%bc%98%e5%8c%96.shtml#comments Tue, 30 Dec 2008 14:10:51 +0000 admin http://www.sunboyu.cn/?p=438 平时看别人招聘,动不动来个“有千万数据量优化经验”。我还的确没有这个经验,中小网站来个几万几十万的数据就了不得,一些涉及数据多的顶多也来个百万,因为超百万我就分表了,而且设计的时候尽量使用主键索引,避免使用模糊搜索和一些复杂的搜索。
基本百万数量级以下的简单应用,一般的服务器没什么问题,只要程序够不垃圾就行。
今天突然奇想,尝试下千万数据什么样子,花半个小时生成了一堆随机的数字,一千万整,当然还有其他的一些数据,主要测试从千万级的数据中捞少量数据是什么样子。
我用的MSSQL2005,使用存储过程生成数据,半个小时,Mysql没实验过。结果,从千万数据用where捞几万条数据,用单一的where条件,果然很慢,能达到20几秒。后仔细查看索引和语句,发现没有很好的索引供sql语句使用,根据where语句建立索引,速度提升到10秒左右。因为只是取出几个字段,后又想使用覆盖索引,加上那几个字段,速度大为提高。
经过跟踪测试,在覆盖索引的使用后,取数据已经达到了相当迅速,但大量的时间消耗在了数据库连接和数据的传输上。因为本系统必须操作大量数据,而拆分数据后又增加了创建数据库连接的成本,速度反而变慢。其实,只要php不超时,已经达到了可用的程度。
总结:索引这玩意真的不错,但设计数据表要尽量简单,简单不是指字段简单,而是使sql语句取数据简单,必要时中间要增加矢量的冗余数据,用空间换取时间。

]]>
http://www.sunboyu.cn/2008/12/30/%e4%bc%a0%e8%af%b4%e4%b8%ad%e7%9a%84%e5%8d%83%e4%b8%87%e6%95%b0%e6%8d%ae%e9%87%8f%e4%bc%98%e5%8c%96.shtml/feed
购得一本新书:《Python网络编程基础》 http://www.sunboyu.cn/2008/12/08/%e8%b4%ad%e5%be%97%e4%b8%80%e6%9c%ac%e6%96%b0%e4%b9%a6%ef%bc%9a%e3%80%8apython%e7%bd%91%e7%bb%9c%e7%bc%96%e7%a8%8b%e5%9f%ba%e7%a1%80%e3%80%8b.shtml http://www.sunboyu.cn/2008/12/08/%e8%b4%ad%e5%be%97%e4%b8%80%e6%9c%ac%e6%96%b0%e4%b9%a6%ef%bc%9a%e3%80%8apython%e7%bd%91%e7%bb%9c%e7%bc%96%e7%a8%8b%e5%9f%ba%e7%a1%80%e3%80%8b.shtml#comments Mon, 08 Dec 2008 15:04:44 +0000 admin http://www.sunboyu.cn/?p=416 过分迷信PHP是不行的,做事还得找专长

]]>
http://www.sunboyu.cn/2008/12/08/%e8%b4%ad%e5%be%97%e4%b8%80%e6%9c%ac%e6%96%b0%e4%b9%a6%ef%bc%9a%e3%80%8apython%e7%bd%91%e7%bb%9c%e7%bc%96%e7%a8%8b%e5%9f%ba%e7%a1%80%e3%80%8b.shtml/feed
IIS安全机制详解 http://www.sunboyu.cn/2008/11/04/iis%e5%ae%89%e5%85%a8%e6%9c%ba%e5%88%b6%e8%af%a6%e8%a7%a3.shtml http://www.sunboyu.cn/2008/11/04/iis%e5%ae%89%e5%85%a8%e6%9c%ba%e5%88%b6%e8%af%a6%e8%a7%a3.shtml#comments Tue, 04 Nov 2008 10:11:33 +0000 admin http://www.sunboyu.cn/?p=371 2005年前后曾经风靡过一阵旁注入侵,其利用的原理是所有的iis站点使用了统一的进程账户,而对所有站点设置了同样的权限,因此,当你有一个站点的权限的时候,就等于拥有了所有站点的权限。

在虚拟主机上,这么设置,那生意真的是没法做了,因此,基于iis的虚拟主机都用了独立的iis进程账户进行权限的隔离。

现简述安全原理:

现有 site1,site2,site3 三个站点,三个站点目录结构如下

D:\WWW\site1  D:\WWW\site2   D:\WWW\site3

默认会使用 IUSR_SUN 这个账户作为Internet来宾账户,而 IIS_WPG作为IIS工作进程组。那么会在D:\WWW 这个文件夹上使IUSR_SUN有用读写执行脚本的权限,而三个站点的的匿名访问用户均为IUSR_SUN。这样,虽然脚本(asp,php等)运行在D:\WWW\site1目录下,但对D:\WWW\site2   D:\WWW\site3都是有读写权限的。

如果服务器上的站点是一个公司的,那样还好,如果是给不同的用户来用,问题不言而喻。

因此,我们要用独立的账户和权限来运行三个站点。

我们设置三个用户 IUSR_SUN_1  IUSR_SUN_2   IUSR_SUN_3 ,只归入guests组(如果属于多个组,windows会按照权限的交集来计算)三个用户分别作为 D:\WWW\site1  D:\WWW\site2   D:\WWW\site3的匿名访问用户。然后分别给 D:\WWW\site1 IUSR_SUN_1用户读写等权限,依次设置。

这样,每个网站的用户权限被禁锢在自己的文件夹(站点)下,就保证了站点权限的隔离。

------附录------

在设置一个站点的时候,我按照最严格的权限进行设定,但发现一个问题,有些PHP的脚本不能执行。后来发现,当使用require(”./a.php”),这种linux风格的路径的时候,会出问题。后查资料发现,这样访问的时候,脚本需要对本层目录的上一层拥有读的权限,所以,我们在独立设置对上层有个读的权限,这样问题就可以解决。

这个问题发生在ThinkSNS程序中,他们大量使用了linux风格的路径包含方式,因此在权限严格的iis上就跑不动了。而discuz的程序大都不使用这种方式,在兼容性上下了很大功夫。

]]>
http://www.sunboyu.cn/2008/11/04/iis%e5%ae%89%e5%85%a8%e6%9c%ba%e5%88%b6%e8%af%a6%e8%a7%a3.shtml/feed
UML2.0学习指南 http://www.sunboyu.cn/2008/10/21/uml20%e5%ad%a6%e4%b9%a0%e6%8c%87%e5%8d%97.shtml http://www.sunboyu.cn/2008/10/21/uml20%e5%ad%a6%e4%b9%a0%e6%8c%87%e5%8d%97.shtml#comments Tue, 21 Oct 2008 01:11:44 +0000 admin http://www.sunboyu.cn/?p=356

书还不错,虽然有点看不懂。中小型公司很少有做项目前期建模的,我来试试。

]]>
http://www.sunboyu.cn/2008/10/21/uml20%e5%ad%a6%e4%b9%a0%e6%8c%87%e5%8d%97.shtml/feed
CSS注释兼容性测试 http://www.sunboyu.cn/2008/08/28/css%e6%b3%a8%e9%87%8a%e5%85%bc%e5%ae%b9%e6%80%a7%e6%b5%8b%e8%af%95.shtml http://www.sunboyu.cn/2008/08/28/css%e6%b3%a8%e9%87%8a%e5%85%bc%e5%ae%b9%e6%80%a7%e6%b5%8b%e8%af%95.shtml#comments Wed, 27 Aug 2008 16:21:34 +0000 admin http://www.sunboyu.cn/?p=289 调试CSS差点调吐了,ff说啥都不认。后来起到html注释有兼容性,进行了一下测试。

风格1:手误的一种注释  <!– *** –>这本是html的注释,一不小心写了出来,结果,firefox不认,差点没调吐。

风格2:标准的注释 /* &&&&&   */ ie6,firefox都兼容的。

另外写注释,注释跟两边边界空出一点,会好点,降低错误率。

]]>
http://www.sunboyu.cn/2008/08/28/css%e6%b3%a8%e9%87%8a%e5%85%bc%e5%ae%b9%e6%80%a7%e6%b5%8b%e8%af%95.shtml/feed
静态分页算法解决方案收集 http://www.sunboyu.cn/2008/08/14/%e9%9d%99%e6%80%81%e5%88%86%e9%a1%b5%e7%ae%97%e6%b3%95%e8%a7%a3%e5%86%b3%e6%96%b9%e6%a1%88%e6%94%b6%e9%9b%86.shtml http://www.sunboyu.cn/2008/08/14/%e9%9d%99%e6%80%81%e5%88%86%e9%a1%b5%e7%ae%97%e6%b3%95%e8%a7%a3%e5%86%b3%e6%96%b9%e6%a1%88%e6%94%b6%e9%9b%86.shtml#comments Thu, 14 Aug 2008 03:36:13 +0000 admin http://www.sunboyu.cn/?p=278 曾经看过动易CMS的代码,曾经在官方论坛上也讨论过分页算法的问题。主要的瓶颈在于,如果一个分类页数过多,那么每更新一个文件,需要生成 count/pagesize 个静态页面,这样再算上分发的话,消耗了大量的cpu,io,带宽。因此门户级的网站,设计一个好的分页算法或者说新闻组织结构是非常必要的。

这里考虑的是全静态网站,并且使用分发形式更新的,也就是在前端只有html静态文件。首页,板块首页,分类首页,这样当然就是由编辑即时更新并且分发。

而子分类,无下级的时候,就得考虑分页,对照以下门户级网站,看他们如何解决。

http://news.sina.com.cn/china/gd/2008-08-13/index.html

可以看出,新浪按照每天的新闻为一页,分页自然容易解决,使用天做为页数,这是天然纯净的算法。另外新浪新闻的实时性比较好,流量集中在当天新闻,这样也比较容易做负载的均衡和过期资源的回收。

http://news.163.com/special/00011SG2/shList.html

网易的每个分类只显示10页,这样就不会有大量分页列表的问题,顶多10页,我感觉比新浪少次。

http://news.cctv.com/china/index.shtml

cctv用的是TurboCMS,这个分页挺有意思,一个模板,但从数据库取500条记录,生成静态。因为记录只是一个标题,一个链接,字节数不会太大,那么用js去用这个大数组进行分页,貌似不错。很节约带宽的做法。赞一个!

sohu的100个分页,暂没看出他怎么做的,反正sohu有钱,大不了加机器。

]]>
http://www.sunboyu.cn/2008/08/14/%e9%9d%99%e6%80%81%e5%88%86%e9%a1%b5%e7%ae%97%e6%b3%95%e8%a7%a3%e5%86%b3%e6%96%b9%e6%a1%88%e6%94%b6%e9%9b%86.shtml/feed
常见文件http中content-type头值-(MIME类型) http://www.sunboyu.cn/2008/08/12/%e5%b8%b8%e8%a7%81%e6%96%87%e4%bb%b6http%e4%b8%adcontent-type%e5%a4%b4%e5%80%bc%ef%bc%8dmime%e7%b1%bb%e5%9e%8b.shtml http://www.sunboyu.cn/2008/08/12/%e5%b8%b8%e8%a7%81%e6%96%87%e4%bb%b6http%e4%b8%adcontent-type%e5%a4%b4%e5%80%bc%ef%bc%8dmime%e7%b1%bb%e5%9e%8b.shtml#comments Tue, 12 Aug 2008 05:37:38 +0000 admin http://www.sunboyu.cn/?p=276 .ppt - application/mspowerpoint
.ai - application/postscript
.aif - audio/x-aiff
.aifc - audio/x-aiff
.aiff - audio/x-aiff
.asc - text/plain
.au - audio/basic
.avi - video/x-msvideo
.bcpio - application/x-bcpio
.bin - application/octet-stream
.c - text/plain
.cc - text/plain


.ccad - application/clariscad
.cdf - application/x-netcdf
.class - application/octet-stream
.cpio - application/x-cpio
.cpt - application/mac-compactpro
.csh - application/x-csh
.css - text/css
.dcr - application/x-director
.dir - application/x-director
.dms - application/octet-stream
.doc - application/msword
.drw - application/drafting
.dvi - application/x-dvi
.dwg - application/acad
.dxf - application/dxf
.dxr - application/x-director
.eps - application/postscript
.etx - text/x-setext
.exe - application/octet-stream
.ez - application/andrew-inset
.f - text/plain
.f90 - text/plain
.fli - video/x-fli
.gif - image/gif
.gtar - application/x-gtar
.gz - application/x-gzip
.h - text/plain
.hdf - application/x-hdf
.hh - text/plain
.hqx - application/mac-binhex40
.htm - text/html
.html - text/html
.ice - x-conference/x-cooltalk
.ief - image/ief
.iges - model/iges
.igs - model/iges
.ips - application/x-ipscript
.ipx - application/x-ipix
.jpe - image/jpeg
.jpeg - image/jpeg
.jpg - image/jpeg
.js - application/x-javascript
.kar - audio/midi
.latex - application/x-latex
.lha - application/octet-stream
.lsp - application/x-lisp
.lzh - application/octet-stream
.m - text/plain
.man - application/x-troff-man
.me - application/x-troff-me
.mesh - model/mesh
.mid - audio/midi
.midi - audio/midi
.mif - application/vnd.mif
.mime - www/mime
.mov - video/quicktime
.movie - video/x-sgi-movie
.mp2 - audio/mpeg
.mp3 - audio/mpeg
.mpe - video/mpeg
.mpeg - video/mpeg
.mpg - video/mpeg
.mpga - audio/mpeg
.ms - application/x-troff-ms
.msh - model/mesh
.nc - application/x-netcdf
.oda - application/oda
.pbm - image/x-portable-bitmap
.pdb - chemical/x-pdb
.pdf - application/pdf
.pgm - image/x-portable-graymap
.pgn - application/x-chess-pgn
.png - image/png
.pnm - image/x-portable-anymap
.pot - application/mspowerpoint
.ppm - image/x-portable-pixmap
.pps - application/mspowerpoint
.ppt - application/mspowerpoint
.ppz - application/mspowerpoint
.pre - application/x-freelance
.prt - application/pro_eng
.ps - application/postscript
.qt - video/quicktime
.ra - audio/x-realaudio
.ram - audio/x-pn-realaudio
.ras - image/cmu-raster
.rgb - image/x-rgb
.rm - audio/x-pn-realaudio
.roff - application/x-troff
.rpm - audio/x-pn-realaudio-plugin
.rtf - text/rtf
.rtx - text/richtext
.scm - application/x-lotusscreencam
.set - application/set
.sgm - text/sgml
.sgml - text/sgml
.sh - application/x-sh
.shar - application/x-shar
.silo - model/mesh
.sit - application/x-stuffit
.skd - application/x-koan
.skm - application/x-koan
.skp - application/x-koan
.skt - application/x-koan
.smi - application/smil
.smil - application/smil
.snd - audio/basic
.sol - application/solids
.spl - application/x-futuresplash
.src - application/x-wais-source
.step - application/STEP
.stl - application/SLA
.stp - application/STEP
.sv4cpio - application/x-sv4cpio
.sv4crc - application/x-sv4crc
.swf - application/x-shockwave-flash
.t - application/x-troff
.tar - application/x-tar
.tcl - application/x-tcl
.tex - application/x-tex
.texi - application/x-texinfo
.texinfo - application/x-texinfo
.tif - image/tiff
.tiff - image/tiff
.tr - application/x-troff
.tsi - audio/TSP-audio
.tsp - application/dsptype
.tsv - text/tab-separated-values
.txt - text/plain
.unv - application/i-deas
.ustar - application/x-ustar
.vcd - application/x-cdlink
.vda - application/vda
.viv - video/vnd.vivo
.vivo - video/vnd.vivo
.vrml - model/vrml
.wav - audio/x-wav
.wrl - model/vrml
.xbm - image/x-xbitmap
.xlc - application/vnd.ms-excel
.xll - application/vnd.ms-excel
.xlm - application/vnd.ms-excel
.xls - application/vnd.ms-excel
.xlw - application/vnd.ms-excel
.xml - text/xml
.xpm - image/x-xpixmap
.xwd - image/x-xwindowdump
.xyz - chemical/x-pdb
.zip - application/zip

够全的,以后就用这个了

]]>
http://www.sunboyu.cn/2008/08/12/%e5%b8%b8%e8%a7%81%e6%96%87%e4%bb%b6http%e4%b8%adcontent-type%e5%a4%b4%e5%80%bc%ef%bc%8dmime%e7%b1%bb%e5%9e%8b.shtml/feed
在windows在安装FreeTDS,让mssql支持UTF-8 http://www.sunboyu.cn/2008/07/22/%e5%9c%a8windows%e5%9c%a8%e5%ae%89%e8%a3%85freetds%ef%bc%8c%e8%ae%a9mssql%e6%94%af%e6%8c%81utf-8.shtml http://www.sunboyu.cn/2008/07/22/%e5%9c%a8windows%e5%9c%a8%e5%ae%89%e8%a3%85freetds%ef%bc%8c%e8%ae%a9mssql%e6%94%af%e6%8c%81utf-8.shtml#comments Tue, 22 Jul 2008 07:27:47 +0000 admin http://www.sunboyu.cn/?p=209 本人有个项目使用php+mssql,而mssql只支持gb2312和utf-16编码,而php又要求使用utf-8编码,想到了freetds.而freetds是个在unix下开发的工具,我下载freetds最新版后,发现里边有windows下的编译脚本,在DEV-C++里进行编译后,不支持,后又从鬼子论坛里找到达人编译好的组件,安装配置后,正常,大喜。

; Specify client character set.
; If empty or not set the client charset from freetds.comf is used
; This is only used when compiled with FreeTDS
mssql.charset = “UTF-8″

在php.ini里设置这里,即可让FreeTDS生效。This is only used when compiled with FreeTDS。mssql默认是不支持设置字符集的,只有安装freetds的时候才能生效。

其实,PHP官方早就在系统里留出了freetds的接口,windows下的PHP.INI文件就为freetds留出接口参数。

在linux下,编译php的时候,有这样的日志

configure:68696: checking whether to enable pcntl support
configure:69264: checking whether to enable PDO support
configure:69689: checking for PDO_DBLIB support via FreeTDS
configure:70399: checking for Firebird support for PDO

在linux下,同样为php留出了接口

]]>
http://www.sunboyu.cn/2008/07/22/%e5%9c%a8windows%e5%9c%a8%e5%ae%89%e8%a3%85freetds%ef%bc%8c%e8%ae%a9mssql%e6%94%af%e6%8c%81utf-8.shtml/feed
白盒测试与黑盒测试 http://www.sunboyu.cn/2008/06/24/%e7%99%bd%e7%9b%92%e6%b5%8b%e8%af%95%e4%b8%8e%e9%bb%91%e7%9b%92%e6%b5%8b%e8%af%95.shtml http://www.sunboyu.cn/2008/06/24/%e7%99%bd%e7%9b%92%e6%b5%8b%e8%af%95%e4%b8%8e%e9%bb%91%e7%9b%92%e6%b5%8b%e8%af%95.shtml#comments Tue, 24 Jun 2008 13:34:51 +0000 admin http://www.sunboyu.cn/?p=142 所谓白盒,指透明的盒子,你知道盒子里的内容,可以针对具体的内容进行测试。

黑盒,就是封闭的盒子,你不知道盒子的内容,只能知道这是个盒子,我只能猜测,或者根据盒子的外形,特征,去研究我该怎么用它。

程序开发中,白盒测试,一般是根据程序的功能进行有针对性的测试。

针对具体功能模块进行测试。首先,软件基本完成后,程序不能有研究bug,就是功能性的缺陷,这是必须的。

针对一些逻辑进行测试。程序走通后,针对不同的逻辑进行测试。尽量去测试逻辑的每一个分支,比如,用户上,测试管理员跟普通用户的不同权限下程序的使用。

数据准确性的测试。数据在程序中经过重重计算,输入数据跟最终表现数据未必是一致。这样就得测试数据在各个环节进行传递是否正确。

数据合法性测试。合法性主要在于各个模块中数据输入的合法性。比如数据类型,字段长度,范围等。

而黑盒,一般是指功能基本完成后,交付给测试部门进行业务的测试。测试人员不知道程序是如何构建,而只是根据功能说明或者一些模块测试说明书进行测试。黑盒测试人员要求对业务比较熟练,能够考虑多种实际发生的业务数据进行测试。

]]>
http://www.sunboyu.cn/2008/06/24/%e7%99%bd%e7%9b%92%e6%b5%8b%e8%af%95%e4%b8%8e%e9%bb%91%e7%9b%92%e6%b5%8b%e8%af%95.shtml/feed