http://blog.sina.com.cn/yangzht2008[订阅][手机订阅]
个人资料
评论
读取中...
友情链接
好友
读取中...
音乐播放器
分类
    内容读取中…
图片幻灯
访客
读取中...
博文
地盘转移(2008-10-17 11:04)
首选欢迎前来到访的朋友,此博本人很少进入,到访朋友可以去本人的常驻地盘小屋http://yangzht2008.blogcn.com闲逛,最后祝大家开心每时每刻
1. 尽量采用大量的PHP内置函数。
2. echo 比 print 快。
3. 不要把方法细分得过多,仔细想想你真正打算重用的是哪些代码?
4. 在执行for循环之前确定最大循环数,不要每循环一次都计算最大值。
5. 注销那些不用的变量尤其是大数组,以便释放内存。
6.  并非要用类实现所有的数据结构,数组也很有用。
7.   $row[‘id’]的效率是$row[id]的7倍。
8. 在包含文件时使用完整路径,解析操作系统路径所需的时间会更少。
9. 如果你想知道脚本开始执行(译注:即服务器端收到客户端请求)的时刻,使用$_SERVER[‘REQUEST_TIME’]要好于time()。
10. 检查是否能用strncasecmp,strpbrk,stripos函数代替正则表达式完成相同功能。
11. str_replace函数比preg_replace函数快,但strtr函数的效率是str_replace函数的四倍。
12. 如果一个字符串替换函数,可接受数组或字符作为参数,并且参数长度不太长,那么可以考虑额外写一段替换代码,使得每次传递参数是一个字符,而不是只写一行代码接受数组作为查询和替换的参数。
13.  使用选择分支语句(
$_FILES: 经由 HTTP POST 文件上传而提交至脚本的变量。类似于旧数组 $HTTP_POST_FILES 数组(依然有效,但反对使用)。详细信息可参阅 POST 方法上传。
$_FILES数组内容如下:
 $_FILES['myFile']['name']   客户端文件的原名称。
 $_FILES['myFile']['type']   文件的 MIME 类型,需要浏览器提供该信息的支持,例如'image/gif'。
 $_FILES['myFile']['size']   已上传文件的大小,单位为字节。
 $_FILES['myFile']['tmp_name']   文件被上传后在服务端储存的临时文件名,一般是系统默认。可以在php.ini的upload_tmp_dir 指定,但用 putenv() 函数设置是不起作用的。
 $_FILES['myFile']['error']   和该文件上传相关的错误代码。['error'] 是在 PHP 4.2.0 版本中增加的。下面是它的说明:(它们在PHP3.0以后成了常量)
  UPLOAD_ERR_OK             值:0; 没有错误发生,文件上传成功。
  UPLOAD_ERR_INI_

iconv — Convert string to requested character encoding(PHP 4 >= 4.0.5, PHP 5)
mb_convert_encoding — Convert character encoding(PHP 4 >= 4.0.6, PHP 5)

用法:
string mb_convert_encoding ( string str, string to_encoding [, mixed from_encoding] )
需要先启用 mbstring 扩展库,在 php.ini里将; extension=php_mbstring.dll 前面的 ; 去掉


string iconv ( string in_charset, string out_charset, string str )
注意:
 第二个参数,除了可以指定要转化到的编码以外,还可以增加两个后缀://TRANSLIT 和 //IGNORE,
其中:
 //TRANSLIT 会自动将不能直接转化的字符变成一个或多个近似的字符,
 //IGNORE 会忽略掉不能转化的字符,而默认效果是从第一个非法字符截断。
Returns the converted string or FALSE on failure.

使用:
1. 发现iconv在转换字符'-

更广义的字符集转换:iconv
在先前的章节中,我们已见到了两组 mbs 与 wcs 互转的函式,第一组对于有「状态改变」的编码系统 mbs 无法做到字符串的状态控制,故不适合做该 mbs 的转换工作;而第二组则可以直接做字符串的状态控制,故使用范围就更广了。然而,这两组字符串转换函式在某些使用场合下都有很大的限制,广义而言,它们都属于「字符集转换函式」,然而它们都直接与 I18N、locale 机制绑在一起,也就是说在使用它们之前,程序都必须设好正确的 locale 才行。故在以下的情况使用它们就会很不方便,甚至根本行不通:
       如果程序中需要做 A 字集编码与 B 字集编码的转换时,不幸的是这两种字集 编码都不是目前程序所处的 locale 所采用的。若使用前述的 wcs 与 mbs 转换函式,唯一的办法只有先呼叫 setlocale(),将程序的 LC_CTYPE locale 先切换到使用字集编码 A 的 locale,把字符串 A 转成 wcs 字符串后,再呼叫一次 setlocale(),将程序的 locale 切换到使用字集编码 B 的 locale,最后才把 wcs 字符串转成字符串 B。万一 都找不到任何 locale

PHP共享内存的使用(2008-03-31 09:20)
php有两套使用共享内存的函数,一套是System V IPC函数的封装,另一套是shmop。这两个都无需安装外部库文件。前者只能在linux下使用,而且要使用它的话,在安装php的时候要加上–enable-sysvshm选项;而后者在linux和windows(win2k之后的系统,win98不支持)都可以使用,但在windows的时候,只有在php是ISAPI运行模式才能正常工作,在安装php的时候要加上–enable-shmop。

这两套函数的使用相当简单,下面分别给出简单的用法,更详细的信息可以参考php手册。

一、System V的共享内存使用:
 <?php
  // 创建内存块
  $key = 12345; // 共享内存的key,注:类型为int
  $memsize = 100; // 共享内存的大小,单位byte
  $perm = 0666; // 共享内存访问权限,参考linux的权限
  $var_key = 345; // 共享内存的某变量的key,注:类型为int
  $shmid = shm_attach( $key, $memsize, $perm ); // 创建一个共享内存

■ 框架概念 :
所谓框架便是网页画面分成几个框窗,同时取得多个 URL。只需要 <frameset> <frame> 即可,而所有框架标记需要放在一个总起的 html 档,这个档案只记录了该框架 如何划分,不会显示任何资料,所以不必放入 <body> 标记,浏览这框架必须读取这档案而不是其它框窗的档案。
<frameset>是用以划分框窗,每一框窗由一个 <frame> 标记所标示,<frame>必须在 <frameset> 范围中使用。如下例:
    <frameset cols='50%,*'>
        <frame name='hello' src='up2u.html'>
        <frame name='hi' src='me2.html'>
    </frameset>
此例中 <frameset> 把画面分成左右两相等部分,左便是显示 up2u.html,右边则会显示 me2.html 这档案。
注:<frame> 标记所标示的框窗永远是按由上而下、由左至右的次序。


■ <frameset> <frame> :
<frameset&

 

综述:PHP程序也不是固若金汤,随着PHP的广泛运用,一些黑客们也在无时不想找PHP的麻烦,通过PHP程序漏洞进行攻击就是其中一种。在此,我们将从全局变量、远程文件、文件上载、库文件、SESSION文件、数据类型和容易出错的函数这几个方面分析PHP的安全性。

一、如何通过全局变量进行攻击?
    PHP中的变量不需要事先声明,它们会在第一次使用时自动创建,它们的类型根据上下文环境自动确定。从程序员的角度来看,这无疑是一种极其方便的处理方法。一旦一个变量被创建了,就可以在程序中的任何地方使用。这个特点导致的结果就是程序员很少初始化变量。
    很显然,基于PHP的应用程序的主函数一般都是接受用户的输入(主要是表单变量,上载文件和Cookie等),然后对输入数据进行处理,然后把结果返回到客户端浏览器。为了使PHP代码访问用户的输入尽可能容易,实际上PHP是把这些输入数据看作全局变量来处理的。
    例如:
        <FORM METHOD='GET' ACTION='test.php'>
 &nb

    “项目(project)”是新工作完成交付的方式。“项目管理(project management)”指的是用来创造产品或者对产品进行加强的过程。

    而另一方面,“产品(pro duct)”是项目生产出来的有形的物体。(如果你购买了某个厂商的产品,那么这个厂商就是通过项目生产出了的产品。)如果产品是临时的或者生命周期短暂,我们一般都不把它当作产品。通常产品这个术语指的是我们创造出来并能够维持一段时间的东西。

    产品管理是一种方法,用于集中协调与开端、业务案例、开发和长期支持,以及产品的增强相关的活动。你可以把产品管理当作是完成产品的一个完整生命周期。负责执行这些任务的人叫做产品经理(Product Manager)。

    产品经理的职责根据产品在产品生命周期所处的位置而有所不同。下面这些领域描述了产品经理(负责内部和厂商开发的产品)所担负的具体职责。
    开端
        把握想法,这样它才能

英文的PM缩写很多是指项目经理的

在国内可以说没有明确的产品与项目之分的职位(一定要分,也是在名词解释字典里的:)
本身这两个名词背后实际职责的交集是大于非交集的,
是在某一特定时刻需要职责相互转换的。
就像产品可以立为项目,可以衍生多个项目;
项目也可以成就一个或多个产品。

传统行业里 PM 指 project manager 多,新兴行业里,比如 google, ebay等指 product manager 多些。 microsoft 好像叫 program mgr.

有一句话说的很精辟:
    产品经理——靠想。产品经理是做正确的事,其所领导的产品是否符合市场的需求,是否能给公司带来利润的。
    项目经理——靠做。项目经理是把事情做正确,把事情作得完美,在时间,成本和资源约束的条件下完成目标。

一、从管理的角度讲,项目经理是纵向的,而产品经理是横向的。
    例如我们姑且理解项目经理是一个开发部门的项目经理,那么他一定是对某个产品进行开发