2008年6月13日傍晚,下雨。摄于海淀黄庄北。
加油!北京!
2008年6月13日傍晚,下雨。摄于海淀黄庄北。
加油!北京!
本来想把每个文章串起来说一遍,结果本人很懒很没时间。哎,很多事情都没做完呢。
我最想说的是:逝者已去,秋后算账;慈善捐款,透明处理。
先说秋后算帐。记得看新闻报道,印象最深的就是教室楼房缺少钢筋,而政府大楼却是异常坚固。
绵竹富新二小:垮塌校舍是怎样建成的
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的利润可不少了啊,更何况红十字会这种政府机关:
以下是引用片段: 海南省红十字会常务副会长赵国卫在今天的新闻发布会上称,对于王骊同志表现出来的恶劣态度,省红十字会也深感震惊,尽管这段视频与此次抗震救灾无关,但王骊的态度已经严重违背了红十字会核心的价值观,应该受到严厉的谴责,所以省红十字会方面已向三亚市政府提出建议,对王骊进行组织处理,暂停其履行三亚市红十字会副会长兼秘书长职务。 |
谨以此文哀悼在天灾人祸中遇难的人民!
我在关注地震新闻的时候,把一些值得一看的文章记录了下来,如下: (以下文字部分被其网站所删或被和谐,您可以搜索阅读之。)
昨晚在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开发代码。开发时显示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 |
三:程序中改变
以上所介绍的都是配置文件里面做设置,如果你没有这个权限,或者只想测试一个程序,那么你可以使用两个函数来做到这一点。
它们分别是:
以下是引用片段: 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_* ,所以在使用时需要看清宏定义的可修改范围。在列表的末尾,手册中有提示:
以下是引用片段: |
本文参考资料:
有时候只好坚持。
有时候只需要坚持。
最感动的是小孩子回答的““嗯,我继续唱歌””。
从“做人不能太CCTV”到“做人不能太CNN”。
微软是邪恶的
微软的IE7出来以后,引起了人们的强烈响应。其对人们固有的思维进行了冲突,比如刷新按钮。有一个人在抱怨“I can’t believe I googled on this”。原来,IE7 里面的刷新按钮被移到了地址栏右边,不再和后退、前进按钮在一起了。在微软统治下的人们固有的“后退、前进、刷新”的按钮序列瞬间被打破。
还好,IE7是个新产品。另我郁闷的是,我重装Windows XP系统后,竟然设置不了密码,说是不允许设置。记得以前解决过这个问题,但今天无论如何也找不到设置的地方了。请教了同事,终于找到了地方。
桌面--我的电脑--右键--管理--本地用户和组--用户,找到你要修改的用户,右键--属性,把“用户不能修改密码”的选项去掉。这样就可以修改密码了。也许是公司的统一安装程序设置的吧,不然这么隐蔽的地方,普通用户怎么找得到呢?
另:IE7的英文字体比以前好看多了。
原文: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 Core、Ubuntu和openSUSE的发行套件有着不同的外观,它们适合使用桌面或用作服务器的用户。
如果你问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工作平台、Parallels和Qemu一样,可以让你在Linux下像在处于Windows环境中一样运行程序 -- 所以你可以在Linux下无需修改的运行几乎所有的Windows程序,这就好像在Windows下运行一样。(一些要求3D支持的应用可能在虚拟机无法运行,因为虚拟机不支持3D图形环境)。
在不远的未来,你可能更愿意使用Linux下程序来取代你在Windows下的程序了。下一章中,我们将讨论如何找到Linux下的程序,并安装它们。
循环是个好东西,用循环加几条简单的语言可以实现处理多条数据的功能,充分展示了计算机是为人民服务的。但是如果利用不好,和谐社会便被打破了。现举两个陷阱。
一:双重循环中建立的临时变量。
首先临时变量就是临时的,不能和全局变量起重名,除非这个全局变量是个全局的临时变量(随用随赋值)。这一点在需要临时变量与某个变量做比较操作时尤为重要。现在举一个双重循环的例子:
以下是代码片段: 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溢出的问题。
想从现在开始,每周翻译一篇英语文章。请广大网友监督!
原文: Linux starts here 同时发布:译言
开始了解Linux
Linux(发音:LIH-nuks)是一个类似Windows或Mac的计算机操作系统。一般认为Linux是由芬兰的程序员Linus (发音:LEE-nus) Torvalds于1991年在遍及全球的开发者帮助下起源的。Linux类似早期的操作系统Unix,但与Unix不同的是,Linux是一种自由和开源的软件 -- 也就是说,你不仅可以下载并在你的电脑上运行,而且还可以下载它的源代码。你可以修改或扩展这些源代码以适应你的需求。
Linux广泛运行在多种硬件平台上,从大型的主机到个人电脑,甚至手机上。Linux遵循自由软件基金会下GNU项目的GNU General Public License第二版规定,它允许用户改变和分发这个操作系统。
你可以认为Linux由两部分组成 -- 一个被称为内核,它是连接硬件和系统软件系统的基本接口。二是在内核之上运行的各种程序,比如图形用户界面(GUI)和应用程序。
没有专门的公司销售Linux。因为它是开源的软件,任何人都可以把一些程序和应用与Linux打包为一个整体,并分发它。这种不同的“味道”的Linux被称为分发版。你可以从我们的分发版页面上得到大部分流行的分发版的资料。分发版的一些丰富的资源可以在DistroWatch.com上找到。
许多Linux的分发版被设计成在你电脑的硬盘上安装,它可以作为一个唯一的操作系统,也可以和其它的操作系统共同存在,这样你可以在每次电脑启动时选择使用哪个操作系统。还有一些分发版可以作为Live CD在你的移动媒体上引导运行,典型的如CD,当然也有Live DVD分发版,甚至有一些分发版可以从软盘或者USB上引导启动。Live类型的分发版是非常有用的,因为这样可以让你在不影响目前的硬盘上的东西的基础上运行不同的操作系统。
如果你是一个对Linux完全不了解的Windows用户,请丢弃那些令人听起来对Linux沮丧的声音。为了你们,我们写了另一篇文章,可以让你在不改变你的Windows系统情况下测试Linux,也可以让你保留Windows程序和文件情况下安装Linux,你也可以根据你的需要选择适合你的分发版。
Linux桌面
能让Linux对你电脑有用的一方面是它的图形用户界面(GUI)。这个GUI使用可点击的图标、由屏幕面板、滚动条组成的小窗口让Linux秀色可餐(“look and feel”),而且用户使用的菜单和图标等是可以设置和改变的。这种可视可点击的环境,不依赖于命令行的可视化布局,让操作系统更加的直观可用。如果没有GUI,Linux(或其它任何操作系统)会要求用户依次输入各种命令,也就是命令行模式(CLI)。
当大多数操作系统没有提供能让你选择你想要的用户界面的功能时,Linux却给你很多的选择。这些用户界面中的大多数不仅仅是提供了图形界面 -- 它们提供了一个具有多种工具、应用程序、游戏和其他应用的桌面环境,这样可以让用户的电脑体验可以更丰富一点。Linux下最流行的两种桌面环境是KDE和GNOME。
KDE是K桌面环境的代表。KDE可以运行任何Unix操作系统下,包括Linux。KDE所有的源代码是遵循GNU General Public License的,这也意味着任何人能得到和改变KDE以适应自己的应用。KDE集成在大多数的Linux分发版里,包括一些标准化的菜单、工具条、配色方案,同时提供了完整的帮助系统,网络工具、图形和多媒体应用,以及完整的办公系统解决方案和其他多种软件工具。KDE项目是被自由软件开发社区支持的,对于Linux使用者来说是无需任何费用的。
GNOME (发音:guh-NOME),全称是GNU Network Object Model Environment,是Linux另一种非常普及的GUI或桌面环境。它也是遵循GNU General Public License,这也意味着对于任何Unix操作系统的用户,包括它的源代码都是自由可用的。GNOME集成在每一种Linux分发版上。这也是GNU项目的一部分,GNU项目开发了GNU操作系统,其中的一部分包含在所有的标准Linux分发版中。
正如KDE,GNOME桌面环境包含的不止是工具条、图标和菜单。整套自由软件包里还包括帮助文件、网络工具以及GNOME Office办公套件。其它在Linux下的GUI有:
XPDE desktop environment
“让Windows XP用户更容易的使用Linux”
Xfce
“多种*NIX系统下的轻量级桌面环境。它设计得很有效率,它能快速加载和执行程序,而不耗用太多系统资源”
Enlightenment
“高级的图形库、工具和环境”
IceWM
“IceWM的目标是快速、简单,不阻碍用户使用”
Blackbox
“Blackbox是一种你所寻找的X窗口系统的快速、轻量级的窗口管理工具,而且它不依赖于那些繁琐的资源库”
Window Maker
“Window Maker是一个X11窗口管理工具,最初是为了综合的支持GNUstep桌面环境”
FluxBox
“建立在Blackbox基础上的快速、紧凑的窗口管理工具,它还具有更多的功能”
命令行
这些所有的桌面环境的共同点之一是让用户可以使用Linux命令行;你没有必要使用鼠标去执行每一次操作。输入一条或几条命令可能会让一些操作更为快速和容易,这就好像是用户在20年前使用DOS操作计算机一样。
每个桌面环境进入命令行模式的方式是不一样的。通常会提供一个窗口让你输入命令。在GNOME下,这个窗口叫GNOME终端;KDE下,叫做Konsole。
我们为你准备了一篇文章:命令行基本介绍。一个更进一步学习的网站是LinuxCommand.org。
桌面应用
和所有操作系统一样,Linux也提供了广泛的桌面应用程序的支持。典型的程序包括电子邮件、办公软件、音乐盒电影播放、个人信息处理、诸如即时和聊天室的网络通讯,以及文件共享。
游戏
Linux对游戏并不陌生。Linux的分发版总是包含着游戏;例如,GNOME游戏包里面包含了16款街机游戏和智力游戏;KDE游戏中心包含的游戏有街机、棋、牌、骰子、逻辑推理、谋略游戏,和一些小玩具。如果你的分发版没有你想要的游戏,你可以到一些商业性的网站,如Linux Game Publishing和Tux Games,或者你也可以直接到一些小的公司、独立出版人,个人爱好者手中直接购买。如果这个游戏是为微软的Windows操作系统或者家庭游戏而设计的,那么你可以通过模拟器得到帮助。有关Linux游戏的更多信息,你可以去下面的网站看看:Enjoying games with GNU/Linux。
文章并未结束
不久的将来,我们会提供更多的篇幅来介绍不同种类的桌面和服务方面的应用、编程工具、练习和支持方面的内容。我们非常欢迎你给我们来信提出一个Linux初学者应该知道的内容:editors@linux.com。如果你现在想提问题,可以到这个版面来:http://www.linux.com/forums/forum/1