Akawa

ETY001的博客

在PHP脚本中可以使用 set_time_limit 来设置脚本的执行最大时间限制,但是用于网络连接的时间则不会计算在这里面。下面我们看两个例子,来验证一下。

例一:
<?php
set_time_limit(2);
for($i=1;$i<100000000000000;$i++){
    $a = array(12,34,123,3412,1234123,12341234,12341234,123412341,1234123);
    $v = array(‘dfsdfasdfasdfsadf’,’fasdfsadfasdf’,’fasdfasdf’,’fasdfasdfasdfasd’);
    array_merge($a,$v);
}

该例子是一个纯运行的php脚本,执行结果

Fatal error: Maximum execution time of 2 seconds exceeded in /home/ety001/wwwroot/localhost/time.php on line 6

可见,我们设置的set_time_limit(2)生效了,在脚本执行到两秒的时候,虽然没有运行结束,但是php还是强制停止了脚本的运行。

但是我们还需要捕获到这个异常情况,并进行相应的处理。

PHP异常处理中可以通过set_error_handler来捕获.,但是却只能捕获 NOTICE/WARNING 级别的错误, 对于 E_ERROR 是无能为力的。

register_shutdown_function 能解决 set_error_handler 的不足.

阅读全文 »

关于在canvas中的线宽,需要注意的是,线的宽度是以线的起点坐标,向两边各半个线宽值形成的。

简单理解rw就是可以写,前面要加上主机信息或者*表示所以的主机都可以写
ro就是只读的表示
至于权限方面 (就是小括号内的参数) 常见的参数则有:
•        rw:read-write,可擦写的权限;
•        ro:read-only,只读的权限;
•        sync:数据同步写入到内存与硬盘当中;
•        async:数据会先暂存于内存当中,而非直接写入硬盘!
•        no_root_squash:
登入 NFS 主机使用分享目录的使用者,如果是 root 的话,那么对于这个分享的目录来说,他就具有 root 的权限! 这个项目『极不安全』,不建议使用!
•        root_squash:
在登入 NFS 主机使用分享之目录的使用者如果是 root 时,那么这个使用者的权限将被压缩成为匿名使用者,通常他的 UID 与 GID 都会变成 nobody(nfsnobody) 那个系统账号的身份;
•        all_squash:
不论登入 NFS 的使用者身份为何, 他的身份都会被压缩成为匿名使用者,通常也就是 nobody(nfsnobody) 啦!
•        anonuid:
anon 意指 anonymous (匿名者) 前面关于 *_squash 提到的匿名使用者的 UID 设定值,通常为 nobody(nfsnobody),但是您可以自行设定这个 UID 的值!当然,这个 UID 必需要存在于您的 /etc/passwd 当中!
•        anongid:同 anonuid ,但是变成 group ID 就是了!

前提,开启了23.

1
REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f

1、

cl  ==  checklist

增加新的checklist

svn cl [list name] [file lists]

从checklist中删除

svn cl –remove [file name]

2、

列出某版本变动的文件列表

svn diff -r XX:YY –summarize

1
2
3
4
5
6
7
8
9
<?php
$a = array(1,2,3);
foreach($a as $k => &$v){
echo $v;
}
foreach($a as $k => $v){
echo $v;
}
?>

这段程序的最终输出结果是123122.

原因解释:因为第一次foreach的时候使用了引用,所以,$v依次指向了$a[0],$a[1],$a[2]这几个空间,而foreach结束的时候,对于$v引用最后的一个值是不处理的,这个在php官方手册foreach部分有warning。因此这就导致了,第二次没有引用的循环的时候,$a[0]赋值给$v的时候,其实是赋值到了$v在上一次循环结束时引用的空间里的,也就是$a[2]指向的空间,第二遍循环的第一次结束后,数组$a的值就是1\2\1,第二次是1\2\2,第三次是1\2\2。

设计了个小实验,代码如下:

1
2
3
4
5
6
7
8
9
10
<?php
$i=1;
print $i++;
print $i;
print $i%4;
print $i++%4;
print ++$i%4;
print 4%++$i;
print 4%$i++;
?>

执行结果是1222044. 然后我就跟妹子说书上说的对,果然是++优先,然后自己还在茫然的时候,妹纸说,其实问你这个是因为不明白6和9。。。。然后我又一看,果然第9行,又是个++。。。。 我重新看了遍我的代码,发现了我最后的一行其实是错误的设计,最后一行的取值收到了上一行的影响,我重新设计了一下,如下:

1
2
3
4
5
6
7
8
9
10
11
12
<?php
$i=1;
print $i++;
print $i;
print $i%4;
print $i++%4;
print ++$i%4;
print 4%++$i;
$i=4;
print 4%$i++;
print $i;
?>

重新执行,结果是12220405.
问题其实就是出在
4%++$i 执行前,$i==5,导致4%$i++变成了4%5++,这就出现了,4%5和4%6的结果都是4,没法判断到底是%优先还是++优先了。。。修正后的试验就是4%4++,试验说明,先执行了%,然后才是++。

好蛋疼的东西,最后我跟妹纸说,实际开发的时候,都是直接上小括号了,对己对伙伴都有好处,不要埋坑。。

昨天下午花了3个小时,把《DON’T MAKE ME THINK》读完了,收获很多,虽然这并不是一本讲后端开发的书,但是还是对我现在的工作和兴趣很有启发。

最开心的第一件事就是在开篇的导读中,有一点的旁白注释很让我激动。作者在阐述“你不需要面面俱到”这个思路的时候,举了《血字的研究》中一段来当例子,当华生得知福尔摩斯不知道地球围绕太阳旋转时很震惊,而福尔摩斯对华生则说到“这与我有什么关系呢?你说我们在围着太阳转,就算我们事在围着月亮转,对我或我的工作也不会有半毛钱的影响。”这就是我从初中就在坚持的东西,可惜因为中国的教育制度还是要学很多别的东西,但也并不是坏事,只是耽误了很多时间罢了。

关于设计方面,最重要的一点就是作者一直强调的,不要让用户去思考,因为毕竟互联网时代,用户打开浏览器后,要面临的选择太多了。其次还要注意不要轻易去挑战习惯用法。再就是要保持整站的页面风格统一,以及一些必要的元素的位置必须要注意,比如站点ID,页面名称,栏目和下一级栏目,页内导航,“你在这里”指示器,搜索。

最后讲到的就是关于可用性测试。这一部分其实是对我影响最大的地方。主要还是要做到,测试先行,而不是几个开发人员坐在一起争论或者意淫用户的需求。其实作者根据他的经验,表达了这么一个意思,一千个读者就有一千个哈姆雷特。所以说,用户的需求并不是统一的,但是我们可以做的是让大部分用户的体验及格,而不是让大部分用户的体验全都是满分。

另外还有一句话,我很喜欢,“不要太看重人们对新功能的要求”。这一点我是经历过了不止一次,因为我经常做一些大家看来是半成品的小玩意,大家总是再说你应该要有这个功能,你应该有那个功能。就像作者说的,细问一下,的确是他们已经找到了一个很好的网站,能做到他们所谓的我应该添加的功能,而我即使做出了这样的功能,也不大可能会让他们切换到我这里来的。“他们只是在告诉你他们的喜好而已”。这让我想起了另外一句从别的地方看到的话,“有时候用户其实也不知道他自己需要什么”,所以有时候,我们可以听取用户的声音,但是不要被用户的声音带着走。

1、创建PV

pvcreate  /dev/vdb

2、检查是否创建

pvscan

3、在已有的VG中加入新的PV

vgextend   [vg name]  /dev/vdb

4、检查VG

vgdisplay

得到Free PE/Size 中的PE数量

5、放大LV

lvresize  -l  +[PE数量]  [LV的物理地址]

例如:lvresize  -l  +25599   /dev/vg_livedvd/lv_root

6、完整的将LV扩容到整个文件系统

resize2fs  [LV的物理地址]

0%