| jimmy's profileJDlogPhotosBlogLists | Help |
|
November 27 实用的Linux命令技巧(升级相关)实用的Linux命令技巧(升级相关)jimmy | 21 十一月, 2006 15:53
获取RPM包的地址: rpm -Uvh xxxxxxx.rpm 经常会遇到提示需要别的包,一般的是xxxxxx-devel.rpm。可以一块儿升级: rpm -Uvh xxxxxx.rpm xxxxxx-devel.rpm AS3起,支持APT模式,可以省很多找包的力气。 先安装APT,例如:apt-0.5.15lorg3.1-4.rh9.rf.i386.rpm 建议,AS4安装AS4附带的APT。 常用命令有: apt-get update 更新资料库 apt-get upgrade 升级 apt-get check 检查依赖性 apt-get install 安装 apt-cache search 查找 比如,需要imagemagick的一个工具: apt-cache search composite 可以看到相关的提示信息。 用 -f 可以强制安装,apt会自动将相关的依赖都安装上,不用自己费力一个一个装了。 apt-get -f install composite apt是根据配置文件指明的地址获取资源的 vi /etc/apt/sources.list 一个参考的配置: rpm http://afs.caspur.it/ afs/italia/project/linux/cern/slc302/i386/apt os updates extras 也可以在公司内部架一个服务,管理一组机器时就更方便了。 rpm http://192.168.1.201 pub/os/Linux/RedHat/enterprise/i386/4AS os updates itc #rpm-src http://server pub/os/LinuxedHat/enterprise/i386/4AS os updates 有的时候可能会需要GPGkey,可以用下述命令导入: #rpm --import TheKey_youDownload ~~呵呵~~ 欢迎转贴,请注明来处。【本帖地址】: http://jimmy.club.sohu.com/blog/post/1/107 实用的Linux命令技巧(查看系统)实用的Linux命令技巧(查看系统)jimmy | 21 十一月, 2006 10:12
(某些系统可能需要安装sysstat包) 查看网络流量 ark -n DEV 2 2 后面两个是取样次数和间隔时间 如果用于snmp,可以这样写: ark -n DEV 1 | awk '/Average.*eth1/ {print $5,$6}' 硬盘IO查看 iostat 内存情况 free vmstat CPU情况 mpstat 硬盘空间 df -h su -sh 查找并删除某目录下过期文件 find /opt/cache -type f -mmin +86400 -exec /bin/ls -lart "{}" ";" -exec rm -f "{}" ";" SAR参数说明: sar [参数选项] ~~呵呵~~ 欢迎转贴,请注明来处。【本帖地址】: http://jimmy.club.sohu.com/blog/post/1/106 Squid工作模式及实例Squid工作模式及实例jimmy | 14 十一月, 2006 16:40
《补充:发现一个较好的文章:Squid 中文权威指南 》 Squid可以工作在两种模式: A,加速模式 B,代理模式 这里重点考虑在网页加速方面的应用。Squid的访问速度比Apache快很多,及时静态内容用Squid进行一次处理也会提高很多效率。 Squid的主要配置及缺省值: #Default: 典型的单网站加速基本配置: http_port 80 tcp_recv_bufsize 4096 bytes 禁止硬盘缓冲: cache_dir null /tmp 访问控制: acl all src 0.0.0.0/0.0.0.0 (注释: http_accel_host 就是被加速的网站地址。如果是同一台机器,可以将apache绑定到8088或其它端口,然后设置为: 参数: half_closed_clients off
对于需要同时加速多个网站,编译时禁止internal_dns,用Host文件来控制被加速网站的真实地址。(其实还有一个方法是用的Proxy模式,对需要加速的网站进行代理缓冲,但是会存在安全风险,配置会更复杂)。 典型配置段: httpd_accel_host virtual (注释:对比上面可以看到,主要变化是: virtual, single_host off) 顺便再提几个可能会有兴趣的点: 1,Squid集群。即,一组Squid,之间互相通讯,分担同样的任务。目前来说基本没有意义。将需缓冲内容更好的分布在多个squid上面会更好。对被加速网站而言,前面架个Squid就是了,集群配置实在是鸡肋。 2,Squid文件的更新。之前曾经写过Purge的用法的。这里再提一下: 3,Squid的snmp控制。这个还算有些意义,但是除了特别专业的应用,一般也用不到。 ~~呵呵~~ 欢迎转贴,请注明来处。【本帖地址】: http://jimmy.club.sohu.com/blog/post/1/105 PHP Cli模式下的注意事项PHP Cli模式下的注意事项jimmy | 10 十一月, 2006 11:44
cli模式与cgi模式最大的不同,是没有多余信息(当然,对Web模式就不是多余了): [@sohu logs]# /usr/local/php5/bin/php analyze.php ............................................................................................................................................................................................................................................................................................ 另外,在传入参数的处理上也会略有不同。 查看当前使用的模式: [@sohu logs]# php -v 说明用的是cli模式。 常见的问题是: 在命令行下可以正常运行的,为什么放到crontab中就不行了呢? 一般原因是没有加路径。比如: #php mytest.php 可以正常运行,放到crontab中要写成: 1 * * * * ( cd /YOURPATH; /PHP_BIN_PATH/php mytest.php) 加了路径,为什么执行结果不一样呢? 可能是,PHP_BIN_PATH用的不对。PHP默认编译的时候,cgi/cli模式是都编译的,放置到不同的路径下。 [@sohu logs]# /usr/local/php5/bin/php -v 经常用whereis,命令行下也尽量用全路径。养成这些好习惯,可以减少很多“诡异事件”。
~~呵呵~~ 欢迎转贴,请注明来处。【本帖地址】: http://jimmy.club.sohu.com/blog/post/1/104 最终走向哪里——PHP程序员之路4最终走向哪里——PHP程序员之路4jimmy | 19 十月, 2006 18:21
随着技术水平的提高,项目经验的积累,也会逐渐赢得别人的尊重,个人待遇水平也会相映提高,提职的机会可能也会到来。当面对这样机会的时候,是我们再次重新审视自己,并调整个人发展定位的时候。更高的职位,领导更大的团队,一定是想要的么? 每个人所追求的东西,是不完全相同的。期待有好的待遇,绝大部分人在这点上是一致的。那么,到底往什么方向发展才能实现自己的追求呢?我的理解,排除掉偶然因素,只要能选择更适合自己的发展方向,能够体现出自己的价值,是一定可以获得回报的。 有的人,更喜欢把技术钻研的更深,更透。他需要的可能不是去领导一个团队,而是有一个空间,有一个平台。很多技术牛人是这样的。单枪匹马,研究出很多高级的技术,从而创造出价值。 更多的人,逐步走向管理,或者侧重需求分析,或者侧重系统设计,或者侧重协调沟通,有一个共性是编码的时间逐渐减少,投入技术细节研究的时间减少。 还有一些人,会更平衡的发展,注重资源的积累,为创业做准备。 后两类,是我们大多数的现实情况,我就这两类发展,尤其是后者,谈一谈我的看法。 首先,是技术水平是不是已经到了足够的高度?通常认为技术已经足够用的,遇到问题的时候才会发现还要补课的。技术是学无止境的。不管管理技巧、沟通技巧或其它对你显得多重要,也不要把技术完全的放下。要给自己留出时间,不断的学习和更新知识。 其次,你现在所处的环境,是不是真的能够学到你需要学的东西。环境和平台是非常重要的,从别人身上学习,从实际项目中学习,比自己闷头摸索会更有效。一方面,前人的经验可以节省大量摸索的时间;另一方面,设计了很复杂的技术,其缺陷在小平台上可能不会暴露出来,从而无法得到真正的经验。从这个角度讲,做一个2、3个人技术团队的负责人,不如到大的平台上从基础做起,把自己的技术真正充实起来。 最后,你是否为你要做出的选择,已经做好了充分的准备。不论是做管理,还是去创业,只有技术能力是远远不够的。比如,说几个点: 1,团队。你是在一个优秀的团队中么?优秀的团队,取得成绩获得成功得可能才会更大。你选择团队,团队也会选择你。如果,你为团队成功并不能增加更多保证的话,那么选择你的这个团队,为你带来成功的保证也不会太多。 似乎说得太拗口了,容易令人费解。直白的讲,就是不要对运气成分抱太多希望,一切要靠自己。当你做出选择的时候,先掂量一下自己。 2,人品。或者说,是价值观,和因之而产生的行为。你愿意有怎样的付出?能够承受怎样的代价?一个成功的团队,一定是具有良好文化的团队,这就要求成员摒弃与文化不符的个性,符合团队价值。你是这样一个团队的贡献者还是破坏者呢?一个典型的例子是:团队要在一起度过艰苦的难关。如果你自己都不具备奉献精神,如何要求别人呢?每个人都不去奉献,那么只会被困难征服而不是征服困难。 3,领导力。这个比较虚,比如个人魅力。但是,我认为有一项非常重要的,就是“给予”。不是说把自己的工资分给大家,或者是别人的工作自己来做,而是给对方真正需要的东西。小处而言,比如发现某个人工作不能完成了,牺牲自己的业余时间去帮助一下;关心其身体健康及其家人;给与技术上的指导和帮助,一起克服技术难题等等。从大处讲,创造良好的氛围,准确判断,带领团队获得成功,给予其事业的荣誉感和成就感;从切身经验出发,去发现他存在的弱点,给予认知的指导,对其个人发展提供有效的帮助。你真正的帮助了别人,获得认可和感激,领导力就会得以体现。从这点上,领导力的培养并不一定要在领导的岗位上。即使你是普通的一员,一样是可以的。 还有一种领导力,我称之为“辅助领导力”,即:你能够通过自己的行为和努力,增强你的上级的领导力,扩大团队的凝聚力。这种能力,无论是中层还是普通员工,都是可以培养的。比如,能够体会领导安排和行为的目的,积极带头引导大家向目的靠拢;再比如,能够冷静分析,发现领导忽视的问题,并给予提醒。俗话说,一个好汉三个帮,这种辅助领导力,对于团队是非常有益的。对自身而言,不断的去想问题,也会逐渐增强对管理技巧和管理艺术的认识,从而最终转变为自身的领导力。 希望以上能够给需要的人一些参考和借鉴。祝大家成功!
~~呵呵~~ 欢迎转贴,请注明来处。【本帖地址】: http://jimmy.club.sohu.com/blog/post/1/103 跨越程序的界限——PHP程序员之路3跨越程序的界限——PHP程序员之路3jimmy | 17 十月, 2006 16:59
很多PHPer都有这样一种言论“PHP学三个月足够了”。 或许有人能用三个月就能把PHP手册背的溜熟,问什么都难不倒;或者,这句话的意思只是说学三个月能够到干活的水平,可以找到一份工作。看怎么理解了。 如果赞同我前文《由熟练走向精通》中的观点,PHP不是独立的技术,还要掌握很多其它的技能。不单如此,即使把PHP、JS、HTML、MySQL…等等的使用技巧都应用的很熟了,还是有很多需要去学习的。 由熟练到精通,由优秀到卓越,是每一个程序员应该去追求的。要成为一个卓越的程序员,要能够跳出程序技巧层面,从更高的层面去考虑问题。 设计系统框架,能够满足扩展性与扩充性 考虑系统性能,解决存储问题 深刻理解需求,在最优、次优的方案中做出权衡判断 指定详细规划,分步分批实现整体项目 在这里意义上,只是知道PHP能做什么、不能做什么还不够,还要知道如何去做PHP不能做的事情。也就是说,你还需要去了解C/C++,了解Java,了解.NET。很多PHP不能做的事情,不是不能,其实是实现代价太大。规划适当的体系结构,选择最有性价比的实现方案,比追求单一语言的唯美更重要。当一个系统足够庞大,将部件设计为相对独立,降低部件间的语言相关度,整体系统才有长久的生命力。 另一方面,语言也是有很多共通性的。很多证明有效的技术,在其它语言上也会有实现。在针对特定需求的设计上,很多时候不同语言最终的实现方案都有相似之处。 编程不是为了炫耀技巧,而是为了实现需求。当设计一个项目或者一个系统的时候,就像是设计一个建筑,哪里用钢、哪里用混凝、哪里设电梯、哪里铺下水…… 每个环节设计不当都会有严重的后果,而所有这些问题一定是交织混杂的。充分掌握编程技巧,可以帮助在解决这些问题时有更多的自由。但是,只有编程技巧,是不足以解决全部问题的。 并不是每一个程序员都可以成长成为分析员或者设计师,但是每一个有进取精神的人都不应该只满足于编程技巧而止步不前。
~~呵呵~~
由熟练走向精通——PHP程序员之路2由熟练走向精通——PHP程序员之路2jimmy | 16 十月, 2006 15:58
当选定成为PHP程序员后,每个人都希望能够尽快的成长。有很多探讨更快更好学习方法的帖子,都很诚恳的进行交流,并且总结出很多有共性的方法: 1,熟读PHP手册。首先要了解PHP的函数,大概知道PHP都能做什么,然后多看里面的例子。 2,一定要多动手,多尝试。已经用While实现过的,下次可以用Foreach来做。不要贪懒Copy&Paste。CP是走向精通的大敌! 3,深刻理解Http协议。看似简单,但是我确实见过2年多的程序员还在问为什么setcookie后$_COOLIE里面的值为什么不变。 4,多看,多思考。现在的开源PHP代码非常多,其中很多都是非常优秀的。别人的代码不一定是最好的,不要简单套用;也不要轻易认为别人的实现很笨,因为可能里面有你没有预见到的障碍。只有了解障碍在那里、知道都有多少种方案、明白最终选择是如何权衡的,这些知识才真正变成你自己的。 5,对新技术采取克制的态度。技术发展太快,常常是一个很好的技术还未来得及推广开,就已经变成过时。不可否认,新技术都有着诱人的光环,需要了解,但是不要盲从。永远跟在新技术浪尖上的,往往不是那些把项目做出来的人。当用传统方式设计出的模型与某个新技术在理念上不谋而合时,你距离精通就更近了一步。 只把PHP语言运用很精通,还是不够的。PHP永远不是一项独立的技术,Apache、MySQL、Linux、HTML、XML是如影相随的。 Apache和MySQL的优化,是很容易学习的。记得在实践中不断的去检验。一个重要提示,还是要思考,不要盲信。我看到很多人把Mysql的配置数值搞得比巨模式还大,认为这样就是优化的。优化的含义,是与当前的配置和应用情况相匹配,而不是简单的把配置数值弄大。当调整某个数值的时候,你是否真的明白为什么默认数值是16而不是你要设置的256呢? Linux系统也是很容易学,同时很重要的。有很多工作,可以交给系统去做。系统命令是很多代程序员修订过来的,效率和稳定性都是值得信任的。另外,项目紧急的时候,线上调试往往可以极大提高工作效率。当系统遇到意外的瓶颈时,也需要靠熟练的技术去找到原因。 相对的,页面技术和数据库设计,是相对较为艰难的。CSS,HTML,JS,Ajax,学习难度常常比掌握PHP还要高。而数据库的设计,更是很难,因为没有绝对正确的答案,就像跳高比赛,只有你失败了,才知道错误在那里。我的建议,就是多向有经验的人请教和学习。
~~呵呵~~ 欢迎转贴,请注明来处。【本帖地址】: http://jimmy.club.sohu.com/blog/post/1/101 你想做一个PHPer么?——PHP程序员之路1你想做一个PHPer么?——PHP程序员之路1jimmy | 13 十月, 2006 14:08
最适合以下人员阅读: 1,在未来2~3年内有将PHP作为主要工作的愿望 2,个人职业尚未定型 3,有长远志向,愿意付出辛苦努力和劳动
当选择PHP的时候,有没有问问自己,为什么要选择它?很多人是因为PHP简单,容易学习容易上手。确实,这是PHP一个很大的优势。那么,经过一段较长时间的学习和应用,掌握并且深入了解了这种语言之后,还会继续坚持使用下去么?我们面对的选择实在太多了。当有了更多项目经验,对其它语言也有了更多了解的时候,会对当初选择PHP而感到后悔么? 这些问题不会困扰我,因为我喜欢PHP。 有太多关于语言的争论了,可以从里面了解很多语言的变化和进步,还是不错的,但是如果整天反反复复的非要弄出个谁比谁好的结果来,就挺无聊的。每种语言都有自己存在的必要,也有其成长的空间,只要看一看身边还有那么多的战友,踏下心来做自己的事情就是了。最重要的问题是:你是不是喜欢它?
“Hi,你能告诉我12345×12345=?么?” DBer: select 12345*12345; Perler:#!/usr/bin/perl nprint 12345*12345 PHPer:echo 12345*12345; 这不仅仅是一个程序员的笑话,它背后潜台词是:你喜欢并且坚持的东西,会改变你的思维方式甚至生活方式。我的机器里面就有很多PHP写的小脚本,来辅助完成一些工作。一个典型的例子,我喜欢看Dvdrip的片子,于是写了一个脚本,配合一个reg文件,只要简单点右键选择“合并字幕”就可以将中英文字幕合并成对照的,我经常会用这个功能。在5年前,我机器里面还有很多Perl、Bash、Bat的脚本,现在基本只剩下PHP了。 其实每种语言都有其精妙的地方。比如,对Dos命令你了解多少?“把这个目录下包括所有子目录的文件都遍历,文件大小超过10k的删除”看似很复杂的任务,但真的可以用一行Dos命令来实现。看一下for /? ,就会知道Dos也很精彩的。但是看着别人在讨论Dos命令的时候,我脑子里不自觉闪现出的是PHP的解决方案。 正是因为喜欢,才会纵容它吞噬自己大把的时间,才会仍义无反顾的为它压榨自己每一分精力,才会为每一次取得的进展而欢欣鼓舞。喜欢,是动力的源泉。 可能有很多人还是为了能够有一份工作而选择PHP的。其实……我觉得还是应该有更自由的选择。现在的社会进步的很快,六零年为了吃饱饭、八零年丢了铁饭碗这些历史,已经不属于我们这一代人,而且从发展上可以预见今后的生活状况和社会福利保障会更好。每个人只要能够为社会贡献出个人价值,就会获得回报的。 所以,我建议每个要成为程序员的朋友,仔细考虑一下,是不是真的喜欢做一个程序员,喜欢PHP,并且愿意为之付出自己的努力。
~~呵呵~~ 欢迎转贴,请注明来处。【本帖地址】: http://jimmy.club.sohu.com/blog/post/1/100 Squid文件手动刷新Squid文件手动刷新jimmy | 30 九月, 2006 16:50
Squid加速是大访问量下的一个常用加速技术。对于动态产品,需要有更新接口才能保证用户体验。 Squid中需调整配置,打开控制权限。 acl manage src THE_IP/THE_MASK 默认状态下,PURGE是Deny的。 重启后,可以在Telnet下测试一下: telnet my_squid 80 PURGE http://video.club.sohu.com/200609/1159196510nagrw.gif HTTP/1.0 Accept: */* 接下来,写一个服务,用于刷新: /** * Need php with --enable-socket * Param: * $ip $port $out * return $in */function socket_service($ip, $port='80', $out=""){ if(trim($ip)=="")return "Error: without dest host!"; if($out=='') $out="GET / HTTP/1.1rnHost: $iprnrn"; // Create a new socket $sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); // An example list of IP addresses owned by the computer $sourceips['internal'] = '192.168.103.53'; $sourceips['external'] = '61.135.151.40'; // Bind the source address socket_bind($sock, $sourceips['internal']); // Connect to destination address socket_connect($sock, $ip, $port); trace($out); // Write socket_write($sock, $out); // Read $return=socket_read($sock,100000); // Close socket_close($sock); // Return return $return; } 在更新内容的PHP程序中,调用这个函数,$url是显示内容的页面地址: [php code] $squid_dv=array("10.10.82.83","10.10.82.87"); 在这里例子里面,是两台Squid服务器,我分别调用了一下。如果Squid服务器很多,可能给服务器造成较大负担,就不合适了。这种Squid群,可以配置成不同的层次。有机会下次再写。
~~呵呵~~ 欢迎转贴,请注明来处。【本帖地址】: http://jimmy.club.sohu.com/blog/post/1/99 实用的Linux命令技巧(备份, NFS)实用的Linux命令技巧(备份, NFS)jimmy | 27 九月, 2006 18:05
备份。经常遇到本地机空间已经不够打包的情况 tar -czf - html | ssh -l root 192.168.0.2 "cd /opt; cat > 133.17_html.tar.gz" 如果需要在目标机上展开: tar -czf - html | ssh -l root 192.168.0.2 "cd /opt; tar -xzf -" NFS。 Server端: vi /etc/exports /opt/video/ 10.10.82.85(rw,async,anonuid=99,anongid=99) 10.10.82.86(rw,async,anonuid=99,anongid=99) [共享的目录] [主机名1或IP1(参数1,参数2)] [主机名2或IP2(参数3,参数4)] 重启服务: /etc/rc.d/init.d/portmap start (在REDHAT中PORTMAP是默认启动的) 快速配置重加载: 查看加载情况: 客户端: mount -t nfs -o rw 10.140.133.9:/export/home/sunky /mnt/nfs 其实参数都可以省略: mount 10.10.82.84:/opt/video/ /mnt/nfs_82.84/ 远程备份: 1,建立信任关系。 cd ~/.ssh/ ssh-keygen -t rsa1 然后一路回车下去, vi identity.pub 复制公钥内容 ssh 192.168.xxx.xxx 连入目标机 vi ~/.ssh/authorized_keys 将复制的公钥内容粘贴进去 (注:如果目标机支持SSH2,可以用: ssh-keygen -t dsa vi id_dsa.pub 复制公钥 ssh 192.168.xxx.xxx vi ~/.ssh/authorized_key2 <-- 注意: 是key2,与RSA1文件不同!) 用如下命令打包远程文件: /usr/bin/ssh 192.168.xxx.xxx "tar -cz /usr/local/apache/htdocs" > /opt/backup/mybak.tar.gz 会有一个路径的警告信息,不用管它。
参考: 常用文件格式Mime表示参考: 常用文件格式Mime表示jimmy | 23 九月, 2006 14:21
实际系统可能与此不同,仅作参考 ".pdf" => "application/pdf", 注意: apache设置的Mime可能与此不同。可以手工修改Apache的Mime文件。 参考 <VirtualHost *> php_admin_value open_basedir /opt/show ErrorLog /dev/null <IfModule mod_dir.c> AddType application/x-httpd-php .php Alias /upfiles/ "/opt/show/upfiles/" Alias /readonly/ "/opt/show/readonly/" </VirtualHost>
~~呵呵~~ 欢迎转贴,请注明来处。【本帖地址】: http://jimmy.club.sohu.com/blog/post/1/97 减少硬盘碎片,让系统运行更快速(原创的哟)减少硬盘碎片,让系统运行更快速(原创的哟)jimmy | 22 九月, 2006 10:28
大多数程序都非常依赖C盘,不管你程序安装到什么位置,都会生成大量碎片到C盘,导致C盘凌乱运行效率降低。尤其是笔记本更会如此。 我的一些经验跟大家分享。
1,建议一个专用的交换分区。 用硬盘分区工具,PQmagic或者其它,分出一个10G的分区。当然,如果能在安装系统的时候就做好也一样。分配盘符,比如我的:T盘 2,将系统的临时目录都转移到T盘。 建立 T:IE_cache 目录。在IE的工具-》选项-》Internet临时文件中,先清除所有缓冲,然后移动文件夹到 T:IE_cache 建立 T:Temp目录。桌面,我的电脑点右键属性,高级-》环境变量,将用户的TEMP、TMP,系统的TEMP、TMP变量值,都修改成T:Temp 3,系统属性-》高级-》性能选项-》高级-》虚拟内存, 将T盘设置1G交换内存,取消C盘的交换内容。重启后生效。(注意:以后还要改回到C盘,因为C盘速度快) 4,清理C盘垃圾箱。将能够搬走的文件,都先转移到其它的地方。比如,D盘,U盘。然后,运行 开始-》所有程序-》附件-》系统程序-》磁盘碎片整理程序,将C盘进行整理。 (BTW:如果用正式版的Diskeeper效果会更好些) 5,按照3的步骤,将交换内存设置回C盘,注意:最小1024M,最大1024M。取消T盘的交换文件。 6,如果你经常下载东西,将下载常用的目录也设置到T盘去。
OK,至此,基本上系统算是比较干净的。然后,是高级应用,针对使用的软件进行。 1,AcdSee。 建立T:Acdsee_cache。运行Acdsee,将其Database目录设置到此目录,然后删除原设置目录里面的内容。 2,Hypersnap。 类似的,将临时抓取目录,指向T盘的某个目录。 3,UltraEdit。 不要小看文本编辑器。我的bak目录里面曾经积累了4千多个文件。 4,Opera & Firefox 这两个比较讨厌,没有提供修改其缓冲的地方。 跟踪一下,发现Opera的缓冲目录在 c:program filesoperaprofilexxxxxcache4 下面。 Firefox在 c:documents and settingsxxxxlocal settingsapplication dataMozllaFirefox 下面。 下载命令行工具 junction.exe (网站忘了,Google一下吧。实在找不到就找我要好了)。 以Firefox为例。 md t:firefox_cache del Firefox /F /Q junction -s Firefox t:firefox_cache Junction的作用,是做一个符号链接,指向实际的目录。如果熟悉Linux下 Ln -s 命令的就会对这个很熟悉了。 类似的,将Opera的Cache目录也可以放到T盘。
OK。运行一段时间看看,是不是C盘的碎片是不是没有太大变化? 当然,如果不是,那就要看一下你用的哪个软件在频繁产生小碎片,然后将这些小碎片的目录放到T盘去。
~~呵呵~~ 欢迎转贴,请注明来处。【本帖地址】: http://jimmy.club.sohu.com/blog/post/1/96 使用PHP5容易忽视的地方-(2)使用PHP5容易忽视的地方-(2)jimmy | 20 九月, 2006 16:22
错误控制机制 PHP4更习惯的是判断返回值,然后进行错误处理。 PHP5应转向try{}catch($e){}机制。 典型示例: try { $dom = new DOMDocument($version); $ab = new DOMElement($element); $ab = $dom->appendChild($ab); } catch (Exception $e) { error_log('Error in file ' . $e->getFile( ) . ' on line ' . $e->getLine( ) . ".n" . 'Error message: "' . $e->getMessage( ) . '" and error code: ' . $e->getCode( ) . '.'); } 特别需要指出的是,当一个错误在函数中发生没有被捕捉,会被返到调用函数一级的捕捉代码中。 更进一步的,可以在函数中进行错误判断,然后抛出异常,由上一级来统一进行异常处理。 注意,在使用try机制时,debug_backtrace 和 debug_print_backtrace 可能无效,应避免使用。
深入理解流(stream)的概念 用stream_get_wappers()可以获取当前可操作流类型。 对文件操作,file_get_contents 和 file_put_contents 可以节省很多代码工作。 Filter在5中得到加强,例子: $html = 'I am <b>bold</b>. I am <i>italic</i>.';
// Stripping HTML tags on data sent to php://output
file_put_contents(
'php://filter/write=string.strip_tags/resource=php://output', $html);
输出结果为: I am bold. I am italic. 其它容易被遗漏的:1,Reflection::export 方法,可以监控类中的细节2,对tidy的支持(好玩,实用度并不高)3,允许为引用型参数设定缺省值:function updateAddress(&$address = 'NULL')4,PHP.ini的error_reporting 新增 E_STRICT 值5,CLI(命令行)得到增强,可以逐行执行代码。$argi $argn表示行号和内容$ php -R 'print "$argnn" ;' < example.txt 6,register_argc_argv 参数不可屏蔽$argv $argc参数~~呵呵~~ 欢迎转贴,请注明来处。【本帖地址】: http://jimmy.club.sohu.com/blog/post/1/94 使用PHP5容易忽视的地方-(1)使用PHP5容易忽视的地方-(1)jimmy | 19 九月, 2006 20:37
当需要将一个实例当作参数进行传递,或者进行复制的时候,需要使用 clone。 $test = new myclass(); $demo=clone $test; 当调试和跟踪时,可以使用: get_class() val_dump() val_export() instanceof 慎用register_shutdown_function( )。程序先执行析构函数,然后才调用收尾函数。
静态函数和常量的使用方法: class t{const pi=10;static function show(){echo self::pi;}t::show();[/php]ç±»ä¸ç??缺ç??å?½æ?°ï¼?__construct; __destruct; __get; __set; __call; __clone; __toString; å??æ?¶åº?注æ??ï¼?PHP5 ä¸?æ?¯æ??å¤?ç»§æ?¿ã??</p><p /><p><strong>æ?´ç?µæ´»ç??循ç?¯æ?§å?¶æ?ºå?¶ï¼?Iteratorï¼?</strong><table cellspacing="0" cellpadding="4" rules="all" width="100%" border="1"><thead><tr><th class="thead"><p class="docText">Method</p></th><th class="thead"><p class="docText">Description</p></th><th class="thead"><p class="docText">Returns</p></th></tr></thead><tbody><tr><td class="docTableCell"><p class="docText"><tt>rewind( )</tt></p></td><td class="docTableCell"><p class="docText">Resets iterator list to its start</p></td><td class="docTableCell"><p class="docText">Void (nothing)</p></td></tr><tr><td class="docTableCell"><p class="docText"><tt>valid( )</tt></p></td><td class="docTableCell"><p class="docText">Says if there are additional items left in the list</p></td><td class="docTableCell"><p class="docText"><tt>true</tt> if additional items; <tt>false</tt> otherwise</p></td></tr><tr><td class="docTableCell"><p class="docText"><tt>next( )</tt></p></td><td class="docTableCell"><p class="docText">Moves iterator to the next item in the list</p></td><td class="docTableCell"><p class="docText">Void (nothing)</p></td></tr><tr><td class="docTableCell"><p class="docText"><tt>key( )</tt></p></td><td class="docTableCell"><p class="docText">Returns the key of the current item</p></td><td class="docTableCell"><p class="docText">Mixed</p></td></tr><tr><td class="docTableCell"><p class="docText"><tt>current( )</tt></p></td><td class="docTableCell"><p class="docText">Returns the current item</p></td><td class="docTableCell"><p class="docText">Mixed</p></td></tr></tbody></table>ä¾?å?ï¼?[code php]</p><pre>$it = new MyIterator; // MyIterator is an class that implements Iterator for ($it->rewind( ); $it->valid( ); $it->next( )) { $key = $it->key( ); $value = $it->current( ); // code inside the foreach starts here: print "$key: $valuen"; } unset($it);</pre><pre> 可用于循环处理的对象:
SQLite和MySQLi允许执行多语句的SQL</pre><pre>$db = mysqli_connect('db.example.org'); $query = >>>_SQL_ DROP TABLE IF EXISTS users; CREATE TABLE users(username VARCHAR(50) UNIQUE, password VARCHAR(50)); INSERT INTO users VALUES('rasmus', 'z.8cMpdFbNAPw'); INSERT INTO users VALUES('zeev', 'asd34.23NNDeq'); SELECT username FROM users; _SQL_; foreach (new MySQLiQueryIterator($db, $query) as $result) { if ($result) { while ($row = mysqli_fetch_row($result)) { print "$row[0]n"; } } } |
|
|