MySQL server has gone away问题及其解决 (MySQL学习)
发布于 2008-06-16 20:06 1 阅读:27,602 评论:1 标签: away MySQL

    初看这个提示,你可能会发笑,这个mysql的提示真是人性化呢。很快你就会笑不出来了,因为,问题是需要用来解决的。

    看上去,应该是两次mysql操作之间的时间太长了,导致mysql连接自动关闭了。可是根据经验,对同一批数据,此前程序也这么写过,两次操作的时间也同样很长。更何况,同事也同时在操作这个库,间隔的时间比我的更长。

    看了mysql服务器端的wait_timeout和max_allowed_packet的值,绝对的长和大!如下:

以下是代码片段:
mysql> show variables like 'wait_timeout';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| wait_timeout  | 28800 |
+---------------+-------+
1 row in set (0.00 sec)

mysql> show variables like 'max_allowed_packet';
+--------------------+---------+
| Variable_name      | Value   |
+--------------------+---------+
| max_allowed_packet | 1048576 |
+--------------------+---------+
1 row in set (0.00 sec)

   看着这些数据,感觉可以判断出服务器端应该是没有问题的,但是总得用实验说话,编写如下程序:

以下是代码片段:
$link = mysql_connect('...', '...', '...');
mysql_select_db("...", $link);

echo "Start !\n";

sleep(30);

echo "End !\n";

mysql_close($link);
?>

    执行之后,到mysql服务器端show processlist;发现一超过20秒,就没有其连接了。然而再到另一台服务器上执行,却无此问题。top命令了一下,发现两台服务器的空闲内存的确差异很大。而上面又说明了,同事和我在同一服务器上对这个库进行操作却无此问题,真令人诧异。

    而后又发现,我程序有个bug,有一数字变量本意是存储sql语句的记录,然而并没有考虑这个数组在执行时间好几个小时之后的大小会成为天文数字。莫非这个地方有问题?

   既然暂时可以排除服务器的问题,只好从我的程序入手了。

   mysql_ping()是个好东西,但用得也不是很爽。手册中“If it has gone down, an automatic reconnection is attempted. ”。但是,发现它并没有automatic reconnection。

   于是只好,先判断mysql_ping()的返回值,如果false,则mysql_close()本次连接,然后mysql_connect()。

    如果是在类里面实现的话,建议加上mysql_connect()第四的参数为true。这样在实例化的时候避免资源符号只有一个。

    参考资料:

以下是引用片段:
MySQL: 诡异的MySQL server has gone away及其解决
http://www.jimmydong.com/blog/post/1/123

MySQL server has gone away
http://hi.baidu.com/thinkinginlamp/blog/item/8512ad4b6f2e96f482025cf7.html

B.1.2.9. MySQL server has gone away
http://dev.mysql.com/doc/refman/5.0/en/gone-away.html

MySQL server has gone away 解决办法
http://yytcpt.blueidea.com/archives/2007/4280.shtml

mysql_ping
http://cn2.php.net/mysql_ping

展开全文  
收起全文  
加油!北京! (随便说说)
发布于 2008-06-15 16:38 阅读:13,766 评论:0 标签: 奥运 北京 加油

      2008年6月13日傍晚,下雨。摄于海淀黄庄北。

      加油!北京!

展开全文  
收起全文  
5.12四川汶川地震值得一读的文章 (随便说说)
发布于 2008-06-05 19:43 阅读:53,738 评论:0 标签: 512 地震 生命 四川 汶川

    本来想把每个文章串起来说一遍,结果本人很懒很没时间。哎,很多事情都没做完呢。

    我最想说的是:逝者已去,秋后算账;慈善捐款,透明处理。

    先说秋后算帐。记得看新闻报道,印象最深的就是教室楼房缺少钢筋,而政府大楼却是异常坚固。

    绵竹富新二小:垮塌校舍是怎样建成的
    http://news.sohu.com/20080529/n257153644.shtml

以下是引用片段:

一位不愿透露姓名的江苏某高校建筑设计研究院院长,地震后在灾区进行房屋鉴定。他察看富新二小现场后也证实,整个教学楼并没有修建构造柱,这属于房屋的先天性设计缺陷。

  这位专家说,在现场他随手一掰,就能从水泥墙上扒下一块砖头:“这说明,砌筑沙浆的标号不够,水泥成分比较少。”他认为,施工质量肯定存在问题。

      震区垮塌校舍调查:旁边陈旧民宅为何屹立不倒:
      http://news.21cn.com/zhuanti/domestic/08dizhen/2008/06/03/4798189.shtml

以下是引用片段:

     听着群众们的议论,记者再次走到校舍坍塌的地方,随手翻看坍塌下来的建筑废墟,看到在砖墙内部、砖与砖之间,仅有薄薄一层涂抹严重不均的水泥凝固物,用力扳了一下,徒手就将两块由水泥凝固在一起的红砖分开,已经凝固的水泥簌簌落下

  旁边的一位家长气愤地对记者说:“你看看,这是不是豆腐渣工程,水泥标号严重不足,施工还偷工减料。”

  都江堰市向峨乡向峨中学也在此次地震中粉碎性坍塌。

  5月12日深夜,本刊记者赶到向峨乡时,除了见到该乡一位社区支部书记王婉民在组织群众救援以外,还没有其他救援人员到达现场。记者在第一时间零距离接触到这所也是粉碎性坍塌的学校。

  在王婉民的指引下,记者来到已经面目全非的校舍楼梯口,七八张幼小的面孔从废墟的缝隙中映入眼帘;一个十二三岁的男孩匍匐在一根断裂的承重柱上,他的上半身已经跑出来了,但下半身却被另一根断裂的承重柱击中。从承重柱里冒出几根细细钢筋,风一吹就左右飘摇

      关于政府大楼的描写:

      灾后北川残酷一面
      http://www.nanfangdaily.com.cn/Southnews/zmzg/200805220083.asp

以下是引用片段:

  14日,贺一民带着人到县委勘察,爬上县委倾斜下陷到地面的屋顶,隐约听到里面有人呼救。他要求呼救者大点儿声,于是从下面传来了一个清晰的声音,“救救我,我是张书记!”这个人是北川县政法委书记张同凯。这里是县委大楼。

  “你不要跟我说你是哪个,你就说你有多少人!”贺一民说。他喊来了沈阳消防队。消防人员拿来生命探测仪,把摄像头插进废墟,直到从屏幕上看到一只巨大的眼睛。救援随即开始。

  武警战士一共20个人,轮流用铁锤砸楼顶,每人15锤,几轮下来,他们发现这种做法不可行。“钢筋又多,水泥标号又高,砸不开。”江西消防队的10个人赶了过来,带着气锤,不过沈阳消防队拒绝了他们的帮忙。他们花了比较长的时间,用电钻解决了问题。有3名官员获救。

    我不敢肯定这仅仅是个案,但我相信大多数人可以根据自己的生活实践中,愿意相信这个决不是个个案!

    再看慈善捐款,网上盛传,红十字会收取%5-%10的管理费,借以谋利。事后红十字会声明收取管理费是国际惯例,而且本次赈灾不收取任何费用。但是我们知道任何一个行业,如果利润有%5-%10,那必是一个欣欣向荣的产业。如果您还能记得初中政治课上引用资本论里的话:

以下是引用片段:

“如果有100%的利润,资本家们会挺而走险;如果有200%的利润,资本家们会藐视法律;如果有300%的利润,那么资本家们便会践踏世间的一切”。

    尽管没有100%的“挺而走险”,%5-%10的利润可不少了啊,更何况红十字会这种政府机关:

以下是引用片段:
三亚红十字副会长态度恶劣受处分(视频)
http://news.sina.com.cn/c/2008-05-23/121415603649.shtml

  海南省红十字会常务副会长赵国卫在今天的新闻发布会上称,对于王骊同志表现出来的恶劣态度,省红十字会也深感震惊,尽管这段视频与此次抗震救灾无关,但王骊的态度已经严重违背了红十字会核心的价值观,应该受到严厉的谴责,所以省红十字会方面已向三亚市政府提出建议,对王骊进行组织处理,暂停其履行三亚市红十字会副会长兼秘书长职务。

    谨以此文哀悼在天灾人祸中遇难的人民!

    我在关注地震新闻的时候,把一些值得一看的文章记录了下来,如下: (以下文字部分被其网站所删或被和谐,您可以搜索阅读之。)

以下是引用片段:

“你是我妈妈?”
http://blog.qq.com/qzone/954861794/1210986241.htm
汶川地震纪念感人mv《孩子快抓紧妈妈的手》
http://you.video.sina.com.cn/b/13560692-1402754625.html
孩子,快抓紧妈妈的手
http://blog.sina.com.cn/s/blog_4ab16c7b010090wh.html
建议将这张救灾照片制成雕塑,这是中国人的脊梁
http://blog.sina.com.cn/s/blog_4961e47701009bv9.html
震区见闻
http://bbs.news.sina.com.cn/tableforum/App/view.php?bbsid=3&subid=1&fid=49944&tbid=3840

最牛希望小学震后无恙 网友向建筑商致敬(图)
http://news.sina.com.cn/s/p/2008-05-19/023115567335.shtml
北川邓家“汉龙小学”无一死亡奇迹背后的真相
http://blog.sina.com.cn/s/blog_46e7ba41010091pk.html
地震中的奇迹小学与汉龙集团
http://news2.eastmoney.com/080519,1051,842556.html
汉龙集团留言板
http://www.schanlong.com/guestbook/gb/index.asp

哭了 空15军强行空降牺牲四人?
http://blog.sina.com.cn/s/blog_4cdb2e8301009g42.html

书记回应“最牛官腔”事件:没想以身份享受优待
http://news.qq.com/a/20080526/000152.htm

汶川大地震让日本速推校舍补强计划
http://view.news.qq.com/a/20080519/000022.htm
幼小的身躯,以及悲伤的中国
http://www.yeeyan.com/articles/view/14392/7848
CNN:在中国,地震动摇了人们对教学楼的信心
http://www.yeeyan.com/articles/view/maltose/8026
不该发生的悲剧―华尔街日报
http://www.yeeyan.com/articles/view/24832/7996
英国卫报记者在地震灾区所见
http://www.yeeyan.com/articles/view/billwoods/7780

王石改口:万科急批1亿义务帮助灾后重建
http://money.163.com/08/0520/22/4CE0AF4400251OB6.html
震后企业间捐赠首例 LG向长虹捐款700万元
http://money.163.com/08/0521/03/4CEHL0P8002524SC.html

哀悼与团结的曲线
http://googlechinablog.com/2008/05/blog-post_22.html

网易网络捐赠平台常见问题说明
http://news.163.com/08/0519/21/4CBA6IF10001124J.html
红十字会承诺不提取管理费 接受政府部门审计
http://news.163.com/08/0523/08/4CK7FL2N0001124J.html
被指强收募捐管理费 三亚红十字会副会长被处分
http://news.163.com/08/0523/10/4CKEB7IJ0001124J.html
http://news.sina.com.cn/c/2008-05-23/121415603649.shtml
中国红十字会辟谣网易风波
http://tech.sina.com.cn/i/2008-05-21/09052207694.shtml
中国红十字基金会紧急救援基金财务管理暂行办法
http://crcf.chinajjjy.gov.cn/newsinfo.asp?id=45
中国红十字会募捐和接受捐赠工作条例
http://www.crcf.org.cn/sys/html/lm_20/2007-08-10/162634.htm
(四)根据红十字会与红新月会国际联合会规定和国际惯例,可从募捐款中提取3-5%的管理费支付。

不要动不动就举国暴怒
http://blog.sina.com.cn/s/blog_4701280b01009kdf.html

展开全文  
收起全文  
做难替代性的工作,提高核心竞争力 (随便说说)
发布于 2008-06-03 16:29 阅读:12,211 评论:0 标签: 工作 竞争力 替代性

      昨晚在newsmth worklife潜水,在一群XBT之后终于看见一个好回复,里面说的是技术人员为什么收入不如其他人。“工作的难替代性”说得很好,很值得学习!换而言之就是提高自己的核心竞争力,这个和企业、国家要提高声誉是一个道理。

以下是引用片段:
发信人: qiaomars (新年新气象), 信区: WorkLife
标  题: Re: 中国内地高学历技术工程师十个心酸的瞬间
发信站: 水木社区 (Sun Jun  1 22:49:04 2008), 站内

一看就知道是个搞技术的写的牢骚话
搞技术没错,可是思维总是僵化固话在技术里就很有问题了
我也遇到很多这样的人,热衷于技术,甚至醉心于技术,但是思维习惯固话于技术,觉得世界都得围着技术转,自己还看不到自己的局限性,可悲啊
这个社会的组成形态是很现实的,就是可替代性
你可替代性越小,价值就越高,相应获得的报酬就越多
走了一个技术,只要不是不可替代的,都可以再招一个来顶坑
走了一个销售,可能会带走一批资源,直接影响收入,所以销售给的也高
当然,销售是靠战绩说话的,混饭吃是混不下去的
做销售的,做市场的,做老板的,都在努力
你只看到他们风光的一面,没看到他们强颜欢笑谄媚人的一面,拉关系送礼的一面,追债不成惶惶不可终日的一面…………总陪人洗浴,你以为他们想啊…………
正因为他们工作的难替代性(换个高学历的搞这些说不定一塌糊涂,更不用说抓住生意场上一次次转瞬即逝的机遇),所以最终的社会报酬也高;同样当老板,街头摆馄饨摊的报酬就低,因为有无数人抢着做,可以做
劝诫搞技术的同学,一定要跳出技术看问题,一定要有基本的经济学常识,以经济学的角度去看这个社会,你会理解的更深入一些,路也会更宽一些


【 在 wengforever (没有) 的大作中提到: 】
: http://cache.tianya.cn/publicforum/content/develop/1/154871.shtml#Bottom
: 这是一个不需要工程师的年代,官员、老板、商人大行其道。
:   瞬间一:春节回家,经商富裕的二叔笑问:“隔壁的小王(中专毕业)当经理了,你什么时候当呢?还在搞技术?实在不行回来跟叔做生意”
: ...................

--

※ 来源:・水木社区 newsmth.net・[FROM: 222.131.89.226]

      原帖如下:

以下是引用片段:
发信人: wengforever (没有), 信区: WorkLife
标  题: 中国内地高学历技术工程师十个心酸的瞬间
发信站: 水木社区 (Sun Jun  1 17:02:00 2008), 站内

http://cache.tianya.cn/publicforum/content/develop/1/154871.shtml#Bottom
这是一个不需要工程师的年代,官员、老板、商人大行其道。
  瞬间一:春节回家,经商富裕的二叔笑问:“隔壁的小王(中专毕业)当经理了,你什么时候当呢?还在搞技术?实在不行回来跟叔做生意”
  瞬间二:某豪华办公室写字楼,西装革履、英气勃发的市场人员小张刚签了一大单,“提成估计够技术部的工程师们干一年多的”,美女秘书们这样议论到;远方一个角落,穿着过时T恤的白头发不少的工程师正在找一个客户强烈投诉的程序bug,苦不堪言,老板每5钟问一句:“什么时候能搞定?不就是几行代码么,那么难?我当年写程序的时候。。。”
  瞬间三:一个项目,需要8个工程师,但狡猾的老板只招聘5个,一个研究生(工资6000),2个本科生(工资3000),2个专科生(工资1500),让这位研究生当项目组长,这位研究生同学欣然答应,项目进入高峰,明显人不够,但是这位研究生同学为了对得起老板给他高于另外两个兄弟的工资,基本上是天天疯狂加班,老实的他、毫无怨言,黑心的老板、得意在心,时而找他谈话:“我很看好你的!”。半年后,研究生病倒了,老板赚大钱了!
  瞬间四:美女秘书旁边议论:“小张才中专毕业,现在已经是小刘的领导了,小刘还是研究生呢,现在读书真的没用了啦”,说完,美女们发出一阵夸张的笑声。。。“小陈也不错啊,也混得蛮快”,“他呀,没什么前途,读这么多书才混成这样,一般般”
  瞬间五:一位04年毕业的研究生,正在挤公汽上班,忽然后面有人拍了一下肩膀,一看是01年毕业的本科(没读研)老同学,开着小车,说:“我送你。。。”,其实这位研究生也不差,不过他买的是12000/平米的房子,所以经济紧张,而他的本科老同学3年前买的是5000/平米,少供他80多万贷款,于是买了车还有不少存款。
  瞬间六:32岁的博士(某公司技术总监)去相亲,美丽时髦的女孩子可爱地问道:“你是做什么生意的?”
  瞬间七:市场部工作两年的小张提升了,因为两年他签了不少大单,工程师小赵想到:“我工作四年了,写程序数万行,什么时候提我啊?写程序真的好累。。。”,晚上,老同学打来电话:“还没转市场和管理?”
  瞬间八:从事技术工作的研究生毕业的小王只要一跟老婆吵架,有一句话老婆是必骂的:“我看你是读书读傻了,或者是搞技术搞傻了,看楼上的XXX,你就那点死搞技术的出息。。。”
  瞬间九:某博士下海经商,精神压力异常大,跟客户交流时候只敢说自己是专科毕业,他说:“如果我说我是博士,可能会把他们吓跑,另外,要是圈里人都知道我是博士,我只要犯一点错误,会被他们嘲笑很久,但说是专科毕业,犯错误就不会被笑话”
  瞬间十:父母生病,在家里经商的弟弟一下子拿出了XX万治病,而研究生毕业的哥哥只能拿出一点点,被亲戚们数落不孝,老家的亲戚们不会知道大城市的房价,他们也不需要知道。

--

※ 来源:・水木社区 http://newsmth.net・[FROM: 222.68.181.*]

展开全文  
收起全文  
PHP显示出错提示的三种方法 (PHP心得)
发布于 2008-05-16 20:04 1 阅读:25,521 评论:1 标签: php 出错提示 方法

  PHP在页面上显示出错消息并让用户看见是开发人员怎么样也不愿意面对的,但是谁都不想在一台没有配置成显示出错消息的服务器上用PHP开发代码。开发时显示PHP的错误消息对开发人员来说是个明智的选择,所谓工具是使人方便的,就是如此。

  下面来说说显示PHP错误提示消息的三个方法。

  一:php.ini配置

  php.ini配置中与此相关的有两个配置变量。下面是这两个变量及其默认值:

以下是引用片段:
display_errors = Off
error_reporting = E_ALL & ~E_NOTICE

  display_errors 变量的目的很明显 ―― 它告诉PHP是否显示错误。默认值是 Off。现在我们的目的是显示错误提示,那么:

以下是引用片段:
display_errors = On

  E_ALL,这个设置会显示从不良编码实践到无害提示到出错的所有信息。E_ALL 对于开发过程来说有点太细,因为它连变量未初始化也显示提示,而这一点正是PHP“高级”的一个特征。幸好,error_reporting的默认值是“E_ALL & ~E_NOTICE”,这样就只看到错误和不良编码了,对程序无不利的提示则不会显示。

  修改php.ini后需要重新启动Apache,这样才可以在apache中生效,当然你如果只在命令行下测试程序,是不需要这一步的。

  二:Apache的httpd.conf和.htaccess配置

  如果要在.htaccess 文件中的指令来修改 PHP 的配置设定。需要有“AllowOverride Options”或“AllowOverride All”权限才可以。 请参见:AllowOverride 指令http://lamp.linux.gov.cn/Apache/ApacheMenu/mod/core.html#allowoverride

  AllowOverride指令确定允许存在于.htaccess文件中的指令类型,它仅在不包含正则表达式的配置段中才是有效的。

  如果此指令被设置为None ,那么.htaccess文件将被完全忽略。事实上,服务器根本不会读取.htaccess文件。

  当此指令设置为 All时,所有具有".htaccess"作用域的指令都允许出现在.htaccess文件中。

  例如以下指令只允许在.htaccess中使用AuthConfig和Indexes组的指令:

以下是引用片段:
AllowOverride AuthConfig Indexes

  .htaccess里的设置和httpd.conf是一样的。

  要在做在httpd.conf实现这一功能,需要把下列各行添加到 httpd.conf,以覆盖php.ini文件做出的配置:

以下是引用片段:
php_flag  display_errors        on
php_value error_reporting       2039

  这会覆盖在 php.ini 文件中为 display_errors 已经设置的标志,以及 error_reporting 的值。值 2039 代表 E_ALL & ~E_NOTICE。如果愿意采用 E_ALL,请把值设为 2047。同样,还是要重启 Apache。

  httpd.conf对php宏定义设置的具体用法可以参见:http://www.php.net/manual/zh/configuration.changes.php

  你可以注意到,上面我们没有使用“E_ALL & ~E_NOTICE”这样的宏定义。这是因为这些宏定义都是php的变量,apache是不认识的,所以我们使用与其等同的值来设置。相关的信息和说明请见:http://www.php.net/manual/zh/ref.errorfunc.php#errorfunc.constants

  下面给出一个简单的对应值:

以下是引用片段:
值 宏定义
1 E_ERROR 
2 E_WARNING 
4 E_PARSE 
8 E_NOTICE 
16 E_CORE_ERROR 
32 E_CORE_WARNING 
64 E_COMPILE_ERROR 
128 E_COMPILE_WARNING 
256 E_USER_ERROR 
512 E_USER_WARNING 
1024 E_USER_NOTICE 
6143 E_ALL 
2048 E_STRICT 
4096 E_RECOVERABLE_ERROR

  三:程序中改变

  以上所介绍的都是配置文件里面做设置,如果你没有这个权限,或者只想测试一个程序,那么你可以使用两个函数来做到这一点。

  它们分别是:

以下是引用片段:
string ini_set ( string $varname , string $newvalue )

int error_reporting ([ int $level ] )

  两个函数大同小异,error_reporting()看上去是ini_set()的error_reporting功能版。事实上我认为也的确如此。

  在ini_set()中你可以设置display_errors和error_reporting的值,而在error_reporting()中你只能设置error_reporting的值,也就是说,如果服务器默认不显示错误提示,你在error_reporting()中怎么变换都是不管用的。两个函数的参数都可以参见上面提到的数字--宏定义对应值。

  需要注意,以上两个函数的适用用时间为该函数起,一直到程序结束。它们不会影响到其他的程序。

  最后:关于PHP的宏定义

  最后,仍需要说明一点:无论httpd.conf还是ini_set()所设置的宏定义并不是无限的,更多的宏定义值请参看手册中的“php.ini 配置选项列表”:http://www.php.net/manual/zh/ini.php

  在里面列表中有一列为“可修改范围”,里面的值为PHP_INI_* ,所以在使用时需要看清宏定义的可修改范围。在列表的末尾,手册中有提示:

以下是引用片段:
PHP_INI_* 常量的定义
常量 值 含义
PHP_INI_USER 1 配置选项可在用户的 PHP 脚本或 Windows 注册表中设置
PHP_INI_PERDIR 2 配置选项可在 php.ini, .htaccess 或 httpd.conf 中设置
PHP_INI_SYSTEM 4 配置选项可在 php.ini or httpd.conf 中设置
PHP_INI_ALL 7 配置选项可在各处设置

  本文参考资料:

以下是引用片段:

PHP 程序员的调试技术
http://www.ibm.com/developerworks/cn/opensource/os-debug/

AllowOverride 指令
http://lamp.linux.gov.cn/Apache/ApacheMenu/mod/core.html#allowoverride

怎样修改配置设定
http://www.php.net/manual/zh/configuration.changes.php

php.ini 配置选项
http://www.php.net/manual/zh/ini.php

运行时配置
http://www.php.net/manual/zh/ref.errorfunc.php#ini.error-reporting

ini_set()
http://www.php.net/manual/zh/function.ini-set.php

error_reporting()
http://www.php.net/manual/zh/function.error-reporting.php

display_errors
http://www.php.net/manual/zh/ref.errorfunc.php#ini.display-errors

预定义常量
http://www.php.net/manual/zh/ref.errorfunc.php#errorfunc.constants

展开全文  
收起全文  
“嗯,我继续唱歌” (随便说说)
发布于 2008-04-30 14:51 1 阅读:90,709 评论:1 标签: 坚持

  有时候只好坚持。

  有时候只需要坚持。

  最感动的是小孩子回答的““嗯,我继续唱歌””。

展开全文  
收起全文  
2008 China Stand Up! (随便说说)
发布于 2008-04-18 15:36 阅读:17,514 评论:0 标签: China 奥运

  从“做人不能太CCTV”到“做人不能太CNN”。

http://vhead.blog.sina.com.cn/player/outer_player.swf?auto=1&vid=12417440&uid=1401913474

展开全文  
收起全文  
Windows XP 设置管理员密码和IE7的刷新按钮 (随便说说)
发布于 2008-04-17 13:11 阅读:15,469 评论:0 标签: IE7 Windows 密码 刷新

  微软是邪恶的

  微软的IE7出来以后,引起了人们的强烈响应。其对人们固有的思维进行了冲突,比如刷新按钮。有一个人在抱怨“I can’t believe I googled on this”。原来,IE7 里面的刷新按钮被移到了地址栏右边,不再和后退、前进按钮在一起了。在微软统治下的人们固有的“后退、前进、刷新”的按钮序列瞬间被打破。

  还好,IE7是个新产品。另我郁闷的是,我重装Windows XP系统后,竟然设置不了密码,说是不允许设置。记得以前解决过这个问题,但今天无论如何也找不到设置的地方了。请教了同事,终于找到了地方。

  桌面--我的电脑--右键--管理--本地用户和组--用户,找到你要修改的用户,右键--属性,把“用户不能修改密码”的选项去掉。这样就可以修改密码了。也许是公司的统一安装程序设置的吧,不然这么隐蔽的地方,普通用户怎么找得到呢?

  另:IE7的英文字体比以前好看多了。

展开全文  
收起全文  
[翻译]What is Linux? -- 什么是Linux (Linux/Unix)
发布于 2008-04-15 18:18 阅读:58,591 评论:0 标签: Linux 翻译

  原文:What is Linux?   同时发布:译言

  也许你已经听过很多关于Linux的事情,而且决定体验一下它。如果你是个Linux新手,或者你对电脑都是陌生的,那在最开始的的可能会有点迷惑。但是不要当心这个,事实上这是相当简单的事情。放松一下继续阅读下去吧,我们会为你解释所有的问题。

  在本文中,“Linux”这个单词描述的是一组东西。精确地讲,“Linux”代表着一个操作系统内核 -- 也就是说,它是一个操作系统的底层,所有的艰苦的工作,如与计算机的硬件对话,管理内存和驱动程序,都是由它完成。除非你是一个计算机高级用户,或者你要深入进去解决一些硬件或软件问题,否则你将永远不会接触到它,甚至不需要考虑到它的存在。

  尽管它对于计算机系统来说是非常重要的,但是对用户来说是不会直接接触到它的。相反的是,你会工作在一个被称为“用户平台”的程序中 -- 如此称呼是因为用户是直接工作在这些程序之上的。当一个发行商或项目组把Linux内核和一些对用户有用的用户平台上的程序捆绑在一起,我们将之称为Linux分发版,或简称为“Linux” -- 因为Linux在其中处于核心地位,而且每次称作“Linux分发版”会使人喘气太困难了。一般来说,当有人和你说“我使用Linux”,或“你用过Linux吗?”,他们不仅是在说内核,他们说的是整个Linux分发版。

什么是分发版,哪一个是我应该选择的?

  谈及Linux分发版,你可能会奇怪的觉得究竟什么是分发版。这个是相当简单的。在我们上面的讨论中,我们知道这个Linux内核本身对终端用户是很难有用的。你不能用它玩俄罗斯方块、写文档、开通网页服务,或者发送邮件 -- 如果你不能做这些事情,它怎么能称之为计算机呢?

  所以,很多的发行商和项目组们决定把Linux内核和一些有用的软件整合在一起,于是你就可以很有亲切感的做很多事情了。同时,他们也提供了安装步骤,这样你就可以在电脑上安装Linux了和管理应用程序:如添加和管理驱动、管理用户、无需在命令行环境下使用文本编辑器和指令工作。当你把Linux内核和有用的软件、安装程序、软件管理工具整合在一起,你就拥有一个Linux分发版了。

  下一个问题是,哪一个分发版 -- 或发行套件 -- 是你该选择的?不幸的是,这个问题不像分发版那样好解释。基于很多的因素,我们无法告诉你该选择哪个分发版,这完全取决于你的个人经历,和你想用来做什么。

  一些发行套件,像Rad Hat企业版SUSE企业版主要是为一些使用Linux作服务器的企业使用的。一些如Fedora CoreUbuntuopenSUSE的发行套件有着不同的外观,它们适合使用桌面或用作服务器的用户。

  如果你问20个Linux的使用者他们该选择那个发行套件,你可能会得到很多不同的答案 -- 而且他们都是对的,至少对他们自己而言。

  非常好的是大多是Linux分发版都是免费的,你可以下载每一种,然后试试看哪一种能满足你的需要。可以看看我们的套件中心来得到最流行的发行套件和更多信息。

它们都是免费的吗?

  这个消息是真的吗?微软、苹果以及其他的公司都对他们的软件进行收费,你能够免费下载与Windows或Mac  OS  X旗鼓相当的软件,这听起来有点奇怪。这是怎么回事呢?

  简而言之,一些人认为这些软件应该自由和开源的分发,这样软件就可以自由的分享了 -- 而且你甚至可以修改它!这个行动已经存在很长时间了。GNU项目于1984年由Richard Stallman创建,这个时间早于微软公司发行他的第一版Windows操作系统,同年,苹果公司发布他第一版经典的Mac OS操作系统。

  这个项目一直在聚集着力量,在1991年的时候Linus Torvalds发布了Linux的第一个公开的发行版。Linus Torvald也把Bash Shell和GCC加进了Linux,以使它更有使用价值。最终Torvalds决定采用GPL作为内核的许可协议。

  GPL,是由GNU组织发展起来的,他允许你根据GPL把软件分享给你任何你愿意的人。你可以依据GPL修改这些软件,并分发出新的版本。一旦你在这些许可协议下分享了这些软件,你就接受了这个协议。

GNU/Linux包含了什么?

  一些人乐意把Linux称作GNU/Linxu,因为他们想用这种方式来强调GNU组织对Linux分发版的贡献。Linxu内核在任何Linux分发版都扮演着巨大作用,而这离不开GNU组织所贡献出的软件。例如,如何没有GNU Compiler Collection (GCC),你如何编译内核或者其它运行在Linux下的程序?大多数Linux分发版把GNU Bash作为默认的Shell,GNOME、GTK+使用着GNU glib,还有其它很多的程序在Linux全天候运行着。

  没有必要列出所有的由GNU组织开发运行在Linux的软件,这实在是太多了。没有GNU,我们将错过许多精彩的软件。

  从Linux的分发版中,GNU组织获得了很大影响力的认可。但是,GNU组织并不是唯一的主要贡献者。值得记载的是,Linux分发版所的软件来自许多其他的组织--比如GNOME、KDE、OpenOffice.org、Mozilla基金会等等。

  Linux还是GNU/Linux,这就取决于你了。

自由软件和开源软件的区别

  自由软件和开源软件是有区别的。需要注意的是,所有的自由软件都是开源软件 -- 因为它符合Open Source Initiative (OSI)对开源的定义,其简称为OSI

  然而,并不是所有的开源软件符合GNU组织或Debian组织自由软件的定义。那他们有什么区别呢?基本上,他们存在哲学上的差异。在GNU组织的世界中,自由软件事关自由,而不是价钱。

  而另一方面,开源软件最初起源于它的开发模式。它的开源软件模式 -- 分布式的开发,透明的开发过程,可修改的代码 -- 比私有软件开发模式要好点。因此,开源许可协议可能在某些方面对用户有所限制,而自由软件却不一定会。

  并非所有运行在Linux的软件都是自由或者免费的。很多公司为Linux开发了私有性的软件,你可以付出一点钱来得到它。例如,Oracle有产品运行在Linux上,但他们并没有开放它 -- 他们出售运行在Linux上的Oracle数据库和其它软件来获取利益。

  尽管GPL和其他许可协议要求其下的衍生产品执行相同的许可协议,但他们没有要求非其衍生的产品执行相同的许可协议,所以很多公司可以出售运行在Linux上的软件,这不会破坏任何规定和许可协议。

  事实上,的确有一些公司在出售Linux并做售后服务,而且做得也很不错。红帽子分发版、红帽子企业版,它们包含了自由和开源软件(FOSS),他们从中获取利益已经一段时间了。他们并不是依靠出售许可协议而获取利益,而是在对分发版的技术支持上得到收益,因为很多公司愿意在遇到问题或需要新的功能时付出酬劳。

我可以在Linux下运行Windows程序吗?

  如果你曾经是一个Windows用户,当然大多数人都是这样的,你可能在使用Linux时也能支持你所需要的Windows程序。原本上,Windows程序是不能运行在Linux上的,但是你在Linux上找到替代方法,或者你的确需要的话,你可以使用一些Linux插件来帮助你。

  Wine就是这样的一个选择。Wine是一个开源的软件,它可以让Windows程序运行在Linux或Unix操作系统上。它对Windows程序是兼容的,所以你可以不改变程序的前提下在Linux运行它。另一个选择是CodeWeavers CrossOver,它是基于Wine的,但并不是完全开源的。它拥有一些Wine不具备的功能,使得其在Linux下更加容易安装和运行Windows程序。

  还有一个选择是虚拟机。虚拟机和VMware、VMware工作平台、ParallelsQemu一样,可以让你在Linux下像在处于Windows环境中一样运行程序 -- 所以你可以在Linux下无需修改的运行几乎所有的Windows程序,这就好像在Windows下运行一样。(一些要求3D支持的应用可能在虚拟机无法运行,因为虚拟机不支持3D图形环境)。

  在不远的未来,你可能更愿意使用Linux下程序来取代你在Windows下的程序了。下一章中,我们将讨论如何找到Linux下的程序,并安装它们。

展开全文  
收起全文  
循环中的逻辑陷阱 (PHP心得)
发布于 2008-04-10 18:42 1 阅读:8,122 评论:1 标签: 陷阱 循环

  循环是个好东西,用循环加几条简单的语言可以实现处理多条数据的功能,充分展示了计算机是为人民服务的。但是如果利用不好,和谐社会便被打破了。现举两个陷阱。

  一:双重循环中建立的临时变量。

  首先临时变量就是临时的,不能和全局变量起重名,除非这个全局变量是个全局的临时变量(随用随赋值)。这一点在需要临时变量与某个变量做比较操作时尤为重要。现在举一个双重循环的例子:

以下是代码片段:
foreach($arr0 as $k0 => $arr1)
{
     foreach($arr1 as $k1 => $v1)
     {
          $total +=$v1;
     }
 
     if($total > 1000)
     {
          echo "No !\n";
     }
}

  如果你只是想单独分析数据$arr1,那很遗憾这个程序的结果是失败的。因为$total的值会被下一次循环继续累加,然后在判断大小的时候会一路报错。如果你在第二次循环前把$total置0就OK了。

  二:有序值查漏的陷阱。

  我想,这是思维严谨的问题。

  但一个有序排列的数组,我们可以简化为一个数字为键的数组$arr。原始数组是否有序是无所谓了,因为有ksort()函数,可以帮助我们排序。这个数字有序但不连续,例如键为:1、2、6、7,中间漏了3、4、5,现在弄个程序找出来。

  假定数组的键起点为0,终点以$arr为准。我一拍脑袋,写下如下程序:

以下是代码片段:
$i = 0;
foreach($arr as $k => $v)
{
     if($i++ != $v)
     {
          echo "$v | ";
     }
}

  此程序的恶果为,一旦遇到不连续的键,以后的键值都被认作不连续了,原因在于$i的自增方式有问题。你可以自己实践一下加强体验。

  有效的程序如下,用while我们可以避免风险。

以下是代码片段:
$i = -1;
foreach ($arr as $k => $v)
{
     while(++$i != $k)
     {
          echo "$i | ";
     }
}

  当然,实际程序中还得考虑$i溢出的问题。

展开全文  
收起全文