Fix broken UTF8 encoded RSS feeds in php,RSS出现“Input is not proper UTF-8, indicate encoding !”的解决方法。
Php/Js/Shell/Go jackxiang 2014-3-19 10:14
背景:输出xml提示:error on line 323 at column 23: Input is not proper UTF-8, indicate encoding !<username><![CDATA[*这儿有一个隐藏字符*執↘著]]></username>,去掉就好了,但是这个是用户的输入。
RSS出现“Input is not proper UTF-8, indicate encoding !”的解决方法:
This page contains the following errors:
error on line 402 at column 25: Input is not proper UTF-8, indicate encoding !
Bytes: 0×07 0×43 0×68 0×61
Below is a rendering of the page up to the first error.
搜索一下,说是内容中有不完整的utf8字符导致xml解析器出错。
根据提示的错误位置,把附近的文字复制到Emeditor中,那个隐藏的不完整字符出现了,Emeditor中是用一个大黑点表示的,删除后把文本复制回去,搞定。
上面这个不是长久办法,最后一老外有一篇文章:
http://www.mybelovedphp.com/2009/07/03/fix-broken-utf8-encoded-rss-feeds-in-php/
RSS出现“Input is not proper UTF-8, indicate encoding !”的解决方法:
This page contains the following errors:
error on line 402 at column 25: Input is not proper UTF-8, indicate encoding !
Bytes: 0×07 0×43 0×68 0×61
Below is a rendering of the page up to the first error.
搜索一下,说是内容中有不完整的utf8字符导致xml解析器出错。
根据提示的错误位置,把附近的文字复制到Emeditor中,那个隐藏的不完整字符出现了,Emeditor中是用一个大黑点表示的,删除后把文本复制回去,搞定。
上面这个不是长久办法,最后一老外有一篇文章:
http://www.mybelovedphp.com/2009/07/03/fix-broken-utf8-encoded-rss-feeds-in-php/
MD5数值大小写有关系吗?无!php-md5变换算法之大小写变换干涉代码。
Php/Js/Shell/Go jackxiang 2014-3-14 17:11
背景:外包对下一个客户端的MD5值里的字母是大小写敏感,说道:你的md5怎么给成大写的了?之前不是给的小写的?我是想问一下你们 这个值确定是大写还是小写 还是不确定?我的回答是:我想说的是你得兼容。
C++也有PHP这样的类似函数:http://www.zedwood.com/article/cpp-strtoupper-function
Continuing on with our efforts to replicate the php string manipulation with C++ and the STL, I have implemented strtoupper() and strtolower();
由于PHP所提供的md5()函数返回的密文中的英文字母全部都是小写的,因此我们可以把它们全部转为大写,然后再进行一次MD5运算。
来自:
http://zhidao.baidu.com/question/54522503.html
http://www.oschina.net/code/snippet_59519_2946
C++也有PHP这样的类似函数:http://www.zedwood.com/article/cpp-strtoupper-function
Continuing on with our efforts to replicate the php string manipulation with C++ and the STL, I have implemented strtoupper() and strtolower();
由于PHP所提供的md5()函数返回的密文中的英文字母全部都是小写的,因此我们可以把它们全部转为大写,然后再进行一次MD5运算。
来自:
http://zhidao.baidu.com/question/54522503.html
http://www.oschina.net/code/snippet_59519_2946
[实践OK]PHP去除连续的空格和换行符,PHP中替换换行符。
Php/Js/Shell/Go jackxiang 2014-3-7 14:41
一、PHP去除连续的空格和换行符:
PHP去除连续的空格和换行符:
http://www.zzsky.cn/build/content/1538.htm
php:去掉多余的空行:
http://blog.sina.com.cn/s/blog_a3b9b9040101gvb5.html
二、PHP中替换换行符:
实践OK如下:
//php 有三种方法来解决
//1、使用str_replace 来替换换行
$str = str_replace(array("\r\n", "\r", "\n"), "", $str);
//2、使用正则替换
$str = preg_replace('//s*/', '', $str);
//3、使用php定义好的变量 (建议使用)
$str = str_replace(PHP_EOL, '', $str);
// 转为前台可显示的换行, nl2br 的方向函数参考php手册
$str = "a
b
e
f
c";
echo nl2br($str);
From:http://blog.csdn.net/zgmu/article/details/54574772
PHP去除连续的空格和换行符:
http://www.zzsky.cn/build/content/1538.htm
php:去掉多余的空行:
http://blog.sina.com.cn/s/blog_a3b9b9040101gvb5.html
二、PHP中替换换行符:
实践OK如下:
//php 有三种方法来解决
//1、使用str_replace 来替换换行
$str = str_replace(array("\r\n", "\r", "\n"), "", $str);
//2、使用正则替换
$str = preg_replace('//s*/', '', $str);
//3、使用php定义好的变量 (建议使用)
$str = str_replace(PHP_EOL, '', $str);
// 转为前台可显示的换行, nl2br 的方向函数参考php手册
$str = "a
b
e
f
c";
echo nl2br($str);
From:http://blog.csdn.net/zgmu/article/details/54574772
[实践Ok]PHP里的basename函数不支持中文名的解决
Php/Js/Shell/Go jackxiang 2014-2-25 18:40
今天用到basename 函数获取文件名称时,发现如果是中文的文件名返回只有后缀的空文件名(如:.pdf)
string basename ( string path [, string suffix] )
说明
给出一个包含有指向一个文件的全路径的字符串,本函数返回基本的文件名。如果文件名是以 suffix 结束的,那这一部分也会被去掉。
方法一:按照网站上找到说法是此函数依赖于区域设置,如果是多字节名称返回为空可以通过setlocale函数如下设置
最好是修改服务器的区域设置来整体解决!
来自:http://www.vtcrm.cn/2011/01/27/vtigercrm%EF%BC%9Alinux%E4%B8%8B%E9%9D%A2phpbasename%E4%B8%8D%E6%94%AF%E6%8C%81%E4%B8%AD%E6%96%87%E7%9A%84%E8%A7%A3%E5%86%B3/
方法二:php自带的basename函数不支持中文,下面这个方法是最简单的实现。
http://www.thinkphp.cn/code/75.html
string basename ( string path [, string suffix] )
说明
给出一个包含有指向一个文件的全路径的字符串,本函数返回基本的文件名。如果文件名是以 suffix 结束的,那这一部分也会被去掉。
方法一:按照网站上找到说法是此函数依赖于区域设置,如果是多字节名称返回为空可以通过setlocale函数如下设置
最好是修改服务器的区域设置来整体解决!
来自:http://www.vtcrm.cn/2011/01/27/vtigercrm%EF%BC%9Alinux%E4%B8%8B%E9%9D%A2phpbasename%E4%B8%8D%E6%94%AF%E6%8C%81%E4%B8%AD%E6%96%87%E7%9A%84%E8%A7%A3%E5%86%B3/
方法二:php自带的basename函数不支持中文,下面这个方法是最简单的实现。
http://www.thinkphp.cn/code/75.html
通过awk杀进程的问题:awk实现Kill掉进程,特别是有时进程不存在时的判断,否则容易退出。
Php/Js/Shell/Go jackxiang 2014-2-12 14:10
背景:写了个shell出现,killed,最后发现原来是shell名和C的二进制名一样的,加参数 -x后发现是shell一起来把shell自己给杀死了,出现:killed的情况。
于是得过滤掉shell的sbin路径就好了:ps aux|grep xiyouHttpInterfaceAnalyse|grep -v grep|grep -v sbin|awk '{print $2}'
结果:
—————————————————————————————————————————————————————
法一:
[root@test ~]# nohup /data/htdocs/tools.xiyou.cntv.cn/http_pcap_codes/xiyouHttpInterfaceAnalyse >> /dev/null 2>&1 &
[1] 18274
[root@test ~]# AA=`ps aux|grep MyHttpInterfaceAnalyse|grep -v grep|awk '{print $2}'`;
[root@test ~]# echo $AA;
18274
或法二:
来自:http://bbs.chinaunix.net/thread-1664631-2-1.html
于是得过滤掉shell的sbin路径就好了:ps aux|grep xiyouHttpInterfaceAnalyse|grep -v grep|grep -v sbin|awk '{print $2}'
结果:
—————————————————————————————————————————————————————
法一:
[root@test ~]# nohup /data/htdocs/tools.xiyou.cntv.cn/http_pcap_codes/xiyouHttpInterfaceAnalyse >> /dev/null 2>&1 &
[1] 18274
[root@test ~]# AA=`ps aux|grep MyHttpInterfaceAnalyse|grep -v grep|awk '{print $2}'`;
[root@test ~]# echo $AA;
18274
或法二:
来自:http://bbs.chinaunix.net/thread-1664631-2-1.html
[实践OK]清理VPS上eaccelerator_cache的缓存内容及设置
Php/Js/Shell/Go jackxiang 2014-2-11 14:42
清理VPS上eaccelerator_cache的缓存内容及设置背景:
有时测试机也好线上也好,代码变了,smarty缓存、memcache缓存都删除了,运行代码也是最新的,但就是不变,这时有可能会考虑到删除eaccelerator_cache。
阅读全文
有时测试机也好线上也好,代码变了,smarty缓存、memcache缓存都删除了,运行代码也是最新的,但就是不变,这时有可能会考虑到删除eaccelerator_cache。
阅读全文
[网站注入] 本博客被注入,本想关闭Bo-blog评论及留言部分的地址和邮箱栏。应该是PHP的SQL注入攻击的技术实现注入,后预防措施是打上补丁,修改了bo-blog的密码。
Php/Js/Shell/Go jackxiang 2014-1-14 16:38
背景:是哪个高人,给我sql注入了,我看了下面这篇文章,但没看明白,请在留言里指出,Thanks。
http://blog.csdn.net/phpfenghuo/article/details/18178519
_____________________________________________________________________________
一、我试着想关闭bo-blog里的评论功能(以防止注入):
如何关闭Bo-blog评论及留言部分的地址和邮箱栏
修改当前模板的elements.php文件,推荐用editplus。
1、查找并删除以下两处。
{replieremail}
{replierhomepage}
2、查找到
{$lnc[170]} <input name="v_repurl" id="v_repurl" type="text" size="12" class="text" value="{repurl}" />
{$lnc[248]} {if_neednopsw_end}{additional}<input name="v_repemail" id="v_repemail" type="text" size="12" class="text" value="{repemail}" />
将其中两处type=”text”改为type=”hidden”,并去掉{$lnc[170]}和{$lnc[248]}{repurl},{repemail},及{if_neednopsw_end}{additiona }。
附:去掉密码栏的方法
修改当前模板的elements.php文件,查找到
{$lnc[133]} <input name="v_password" id="v_password" type="password" size="12" class="text" value="{ password}" {disable_password}/> {$lnc[247]}
去掉:{$lnc[133]} 和 {$lnc[247]}还有{password},将type=”password”改为type=”hidden”
参考资料:http://www.18hao.net/archives/611
_____________________________________________________________________________
二、但是想了一下,有可能是通过[ubb]注入的,于是先打一下补丁,暂不关评论:
http://www.bo-blog.com/weblog/security--notice-20110312/
2.1.1正式版用户请下载附件中的补丁程序,解压后上传、覆盖原先的文件。打完补丁后,请检查后台页脚的版本号是否为2.1.1.3626.3。
三、修改登录密码:
后台->用户管理->用户管理->搜索自己的用户名->找到后再修改一下密码混入数字字母大小写符号等即可。
Bo-Blog SQL注入漏洞
Bo-Blog是一套基于PHP和MySQL的免费博客系统软件,该软件包括留言本、表情、天气等。本周,该产品被披露存在一个综合评级为“高危”的SQL注入漏洞。由于程序未能正确过滤用户提交的输入,攻击者利用漏洞可控制应用程序,访问或修改数据。目前,互联网上已经出现了针对该漏洞的攻击代码,厂商尚未发布该漏洞的修补程序。CNVD提醒广大用户随时关注厂商主页以获取最新版本。
参考链接:http://www.cnvd.org.cn/flaw/show/CNVD-2013-12867
http://www.cnvd.org.cn/webinfo/show/3289
http://blog.csdn.net/phpfenghuo/article/details/18178519
_____________________________________________________________________________
一、我试着想关闭bo-blog里的评论功能(以防止注入):
如何关闭Bo-blog评论及留言部分的地址和邮箱栏
修改当前模板的elements.php文件,推荐用editplus。
1、查找并删除以下两处。
{replieremail}
{replierhomepage}
2、查找到
{$lnc[170]} <input name="v_repurl" id="v_repurl" type="text" size="12" class="text" value="{repurl}" />
{$lnc[248]} {if_neednopsw_end}{additional}<input name="v_repemail" id="v_repemail" type="text" size="12" class="text" value="{repemail}" />
将其中两处type=”text”改为type=”hidden”,并去掉{$lnc[170]}和{$lnc[248]}{repurl},{repemail},及{if_neednopsw_end}{additiona }。
附:去掉密码栏的方法
修改当前模板的elements.php文件,查找到
{$lnc[133]} <input name="v_password" id="v_password" type="password" size="12" class="text" value="{ password}" {disable_password}/> {$lnc[247]}
去掉:{$lnc[133]} 和 {$lnc[247]}还有{password},将type=”password”改为type=”hidden”
参考资料:http://www.18hao.net/archives/611
_____________________________________________________________________________
二、但是想了一下,有可能是通过[ubb]注入的,于是先打一下补丁,暂不关评论:
http://www.bo-blog.com/weblog/security--notice-20110312/
2.1.1正式版用户请下载附件中的补丁程序,解压后上传、覆盖原先的文件。打完补丁后,请检查后台页脚的版本号是否为2.1.1.3626.3。
三、修改登录密码:
后台->用户管理->用户管理->搜索自己的用户名->找到后再修改一下密码混入数字字母大小写符号等即可。
Bo-Blog SQL注入漏洞
Bo-Blog是一套基于PHP和MySQL的免费博客系统软件,该软件包括留言本、表情、天气等。本周,该产品被披露存在一个综合评级为“高危”的SQL注入漏洞。由于程序未能正确过滤用户提交的输入,攻击者利用漏洞可控制应用程序,访问或修改数据。目前,互联网上已经出现了针对该漏洞的攻击代码,厂商尚未发布该漏洞的修补程序。CNVD提醒广大用户随时关注厂商主页以获取最新版本。
参考链接:http://www.cnvd.org.cn/flaw/show/CNVD-2013-12867
http://www.cnvd.org.cn/webinfo/show/3289
Linux下telnet 如何退出
Php/Js/Shell/Go jackxiang 2014-1-1 21:24
背景:在Linux进行socket等编程,或对某些应用telnet时会出现直接quit退出无反应的情况,折腾了半天还没有退出telnet,于是有一个退出回话的键至关重要。
很简单:ctrl+],然后再输入q就可以退出了。.
root@192.168.137.128:~# telnet localhost 1987
Trying ::1...
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
你好
。。。//无反应
quit //也无法退出
^] //此时的退出方法:ctrl + ] 回车
telnet>
quit //退出会话了,再quit即可退出,也可直接输入q简写。
telnet> quit
Connection closed.
来自:http://www.cnblogs.com/hnrainll/archive/2012/02/04/2337928.html
参考:
http://blog.csdn.net/wei801004/article/details/4531664
http://www.baidu.com/link?url=qvpA6iPv82k_sInhXaU6hSCj45rQAQDfhmnNqZXhOduSeGwtk2yRu4H_Ee0zXMWT
很简单:ctrl+],然后再输入q就可以退出了。.
root@192.168.137.128:~# telnet localhost 1987
Trying ::1...
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
你好
。。。//无反应
quit //也无法退出
^] //此时的退出方法:ctrl + ] 回车
telnet>
quit //退出会话了,再quit即可退出,也可直接输入q简写。
telnet> quit
Connection closed.
来自:http://www.cnblogs.com/hnrainll/archive/2012/02/04/2337928.html
参考:
http://blog.csdn.net/wei801004/article/details/4531664
http://www.baidu.com/link?url=qvpA6iPv82k_sInhXaU6hSCj45rQAQDfhmnNqZXhOduSeGwtk2yRu4H_Ee0zXMWT
PHP的Session数据同步问题
Php/Js/Shell/Go jackxiang 2013-12-27 14:21
近来公司某个域名流量大涨,发现一个外部QQ登录的接口经常失败,用户登录总是不成功。经过排查发现是登录的第一步需要保存一个token_secret。当时的程序员编写此代码时直接用了$_SESSION来保存token_secret。这里在并发量小时问题不大,并发大了之后极有可能会出问题。
假设A,B两个请求同时出发,A,B同时session_start,读取到了一个$_SESSION的值。当A完成请求写入$_SESSION,但B还没有完成请求,B完成请求后再写$_SESSION,就会覆盖A所设置的值。
类似的数据同步问题其实很多的,比如file_put_contents写PHP的Cache文件,如果不加LOCK_EX就可能会存在同步问题,当一个进程写file时,只写到一半有另外的进程去require此文件,这时就会因为文件不完整,导致PHP语法错误。所以涉及到同时读写同一个文件或数据时一定要加锁,否则在高并发的情况下会产生严重错误。
来自韩天峰兄弟的博客:http://rango.swoole.com/archives/74
假设A,B两个请求同时出发,A,B同时session_start,读取到了一个$_SESSION的值。当A完成请求写入$_SESSION,但B还没有完成请求,B完成请求后再写$_SESSION,就会覆盖A所设置的值。
类似的数据同步问题其实很多的,比如file_put_contents写PHP的Cache文件,如果不加LOCK_EX就可能会存在同步问题,当一个进程写file时,只写到一半有另外的进程去require此文件,这时就会因为文件不完整,导致PHP语法错误。所以涉及到同时读写同一个文件或数据时一定要加锁,否则在高并发的情况下会产生严重错误。
来自韩天峰兄弟的博客:http://rango.swoole.com/archives/74
Kiss - 用Php扩展实现的简单框架
Php/Js/Shell/Go jackxiang 2013-12-27 14:20
http://blog.chinaunix.net/uid-380521-id-2412387.html
PHP实现Cookie共享及负载均衡的探讨。---From:PHP低级码农群
Php/Js/Shell/Go jackxiang 2013-12-19 16:43
PHP运行模式
Php/Js/Shell/Go jackxiang 2013-12-8 17:40
背景:群里有兄弟问PHP到底有几种运行模式,想在apache下运行fastcgi来运行PHP,guisu写的博客是4种,百度知道里采纳的是5种。
一、百度知道:
php一共分为五大运行模式:包括cgi 、fast-cgi、cli、isapi、apache 模块的 DLLCGI
CGI即通用网关接口(Common Gateway Interface),它是一段程序,通俗的讲CGI就象是一座桥,把网页和WEB服务器中的执行程序连接起来,它把HTML接收的指令传递给服务器的执 行程序,再把服务器执行程序的结果返还给HTML页。CGI 的跨平台性能极佳,几乎可以在任何操作系统上实现。阅读全文
一、百度知道:
php一共分为五大运行模式:包括cgi 、fast-cgi、cli、isapi、apache 模块的 DLLCGI
CGI即通用网关接口(Common Gateway Interface),它是一段程序,通俗的讲CGI就象是一座桥,把网页和WEB服务器中的执行程序连接起来,它把HTML接收的指令传递给服务器的执 行程序,再把服务器执行程序的结果返还给HTML页。CGI 的跨平台性能极佳,几乎可以在任何操作系统上实现。阅读全文
打开zend for eclipse 10.5出现failed to create the java virtual machine的处理。
Php/Js/Shell/Go jackxiang 2013-11-26 09:52
打开zend for eclipse 10.5时报了个错:
failed to create the java virtual machine
google了一下,解决的办法如下:
找到zend目录下的ZendStudio.ini,配置为如下内容:
-startup
plugins/org.eclipse.equinox.launcher_1.3.0.v20120522-1813.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.1.200.v20120913-144807
--launcher.XXMaxPermSize
126m
--launcher.defaultAction
openFile
-showlocation
-name
Zend Studio
-vmargs
-Xms256M
-Xmx512M
-XX:MaxPermSize=512m
-DGIT_SSL_NO_VERIFY=true
-Dsvnkit.http.sslProtocols=SSLv3
说明:PermSize和MaxPermSize指明虚拟机为java永久生成对象(Permanate generation)等这些可反射(reflective)对象分配内存限制,这些内存不包括在Heap(堆内存)区之中。
-Xms128m
表示JVM Heap(堆内存)最小尺寸128MB,初始分配
-Xmx512m
表示JVM Heap(堆内存)最大允许的尺寸256MB,按需分配。
-XX:PermSize=64MB 最小尺寸,初始分配
-XX:MaxPermSize=256MB 最大允许分配尺寸,按需分配
过小会导致:java.lang.OutOfMemoryError: PermGen space
failed to create the java virtual machine
google了一下,解决的办法如下:
找到zend目录下的ZendStudio.ini,配置为如下内容:
-startup
plugins/org.eclipse.equinox.launcher_1.3.0.v20120522-1813.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.1.200.v20120913-144807
--launcher.XXMaxPermSize
126m
--launcher.defaultAction
openFile
-showlocation
-name
Zend Studio
-vmargs
-Xms256M
-Xmx512M
-XX:MaxPermSize=512m
-DGIT_SSL_NO_VERIFY=true
-Dsvnkit.http.sslProtocols=SSLv3
说明:PermSize和MaxPermSize指明虚拟机为java永久生成对象(Permanate generation)等这些可反射(reflective)对象分配内存限制,这些内存不包括在Heap(堆内存)区之中。
-Xms128m
表示JVM Heap(堆内存)最小尺寸128MB,初始分配
-Xmx512m
表示JVM Heap(堆内存)最大允许的尺寸256MB,按需分配。
-XX:PermSize=64MB 最小尺寸,初始分配
-XX:MaxPermSize=256MB 最大允许分配尺寸,按需分配
过小会导致:java.lang.OutOfMemoryError: PermGen space
深入理解javascript引擎对于脚本的处理
Php/Js/Shell/Go jackxiang 2013-11-25 22:18
背景:在做项目时常常因JS太多太长,导致如:取cookie时偶出现XXX is not defined(获取不到这人cookie函数XXXX),我想如果能知道Js的一行处理方式,可能会有一下程序的深入理解后,再编码可能会好一些。
脚本处理模型
javascript的基本特点
脚本处理模型
源码处理
函数解析
代码执行
脚本处理模型
javascript的基本特点
js是一门相当简单的运行时解释语言。
对象模型很直接也没有类的概念。
有自动垃圾回收。
弱数据类型。
动态类型(dynamic typing):运行的时候才确定对象的类型。
javascript没有内置的I/O机制。
扩展:javascript程序与宿主环境进行交互,是通过一系列预定义的方法和属性实现的,这些方法和属性会再映射成浏览器的内部原生代码,所以与其他很对常规的编程语言不同,浏览器开放的这些借口往往受限且有针对性。
脚本处理模型
首先,无论是独立的窗口还是在框架里面,每个展示在浏览器里面的html文档,都被赋予了一个独立的javascript执行环境实例,在这个环境里面加载的脚本的所有全局变量和函数都拥有一个独立的命名空间。
然后,同一个文档的所有脚本都运行在同一个执行环境里面,共享同一个沙箱,并且能够通过浏览器提供的API与其他上下文环境交互。
最后:在特定的执行上下文里面,每段javascript代码块都是自成体系处理的,顺序也基本确定。每段代码块都是由若干符合语法格式的独立单元组成,处理的过程包括清晰而且连续的三个步骤:源码处理,函数解析,代码执行。
源码处理
源码处理阶段会检查脚本代码块里面的语法,通常会先把代码转换成中间层的二进制映像,这样才能或得到令人满意的执行速度。在彻底完成这一步骤之前,这些二进制代码对全局并无影响。如果源码处理阶段出错,整个有问题的代码块都会被弃用;然后解析器会继续处理下一段代码块。
函数解析
完成了上一步骤之后,接下来就是解析器对当前代码块里所有具名的全局函数进行识别并注册。在这一阶段完成之后,这些函数才能被执行代码所调用。
对于代码
因为javascript在执行前会额外预处理,因此上面的写法会成功执行。
而对于代码
阅读全文
脚本处理模型
javascript的基本特点
脚本处理模型
源码处理
函数解析
代码执行
脚本处理模型
javascript的基本特点
js是一门相当简单的运行时解释语言。
对象模型很直接也没有类的概念。
有自动垃圾回收。
弱数据类型。
动态类型(dynamic typing):运行的时候才确定对象的类型。
javascript没有内置的I/O机制。
扩展:javascript程序与宿主环境进行交互,是通过一系列预定义的方法和属性实现的,这些方法和属性会再映射成浏览器的内部原生代码,所以与其他很对常规的编程语言不同,浏览器开放的这些借口往往受限且有针对性。
脚本处理模型
首先,无论是独立的窗口还是在框架里面,每个展示在浏览器里面的html文档,都被赋予了一个独立的javascript执行环境实例,在这个环境里面加载的脚本的所有全局变量和函数都拥有一个独立的命名空间。
然后,同一个文档的所有脚本都运行在同一个执行环境里面,共享同一个沙箱,并且能够通过浏览器提供的API与其他上下文环境交互。
最后:在特定的执行上下文里面,每段javascript代码块都是自成体系处理的,顺序也基本确定。每段代码块都是由若干符合语法格式的独立单元组成,处理的过程包括清晰而且连续的三个步骤:源码处理,函数解析,代码执行。
源码处理
源码处理阶段会检查脚本代码块里面的语法,通常会先把代码转换成中间层的二进制映像,这样才能或得到令人满意的执行速度。在彻底完成这一步骤之前,这些二进制代码对全局并无影响。如果源码处理阶段出错,整个有问题的代码块都会被弃用;然后解析器会继续处理下一段代码块。
函数解析
完成了上一步骤之后,接下来就是解析器对当前代码块里所有具名的全局函数进行识别并注册。在这一阶段完成之后,这些函数才能被执行代码所调用。
对于代码
因为javascript在执行前会额外预处理,因此上面的写法会成功执行。
而对于代码
阅读全文
php “mkdir -p” 递归创建
Php/Js/Shell/Go jackxiang 2013-11-25 11:28
For some reason however I expected it to behave like `mkdir -p` on the command line which succeeds if the directory already exists.
上面来自PHP手册老外的回复:
http://cache.baiducontent.com/c?m=9f65cb4a8c8507ed4fece763105392230e54f7216695c7150888c40e8e3b081d0035bda66f780d5094992d215af2154bea87692b615860a09bbfca109fafd7756fde28762a5e9141638c40f9900632c151875a9fb81897f8&p=882a9543d2b112a05afcc665540883&newp=8b2a9712a49111a058eb9029164ccb231610db2151d1d11128a6c1&user=baidu&fm=sc&query=PHP+mkdir+-P&qid=&p1=1
下面来自网友没实践:
http://hi.baidu.com/hevensun/item/d28a0c08c68d98e0ff240d85
阅读全文
上面来自PHP手册老外的回复:
http://cache.baiducontent.com/c?m=9f65cb4a8c8507ed4fece763105392230e54f7216695c7150888c40e8e3b081d0035bda66f780d5094992d215af2154bea87692b615860a09bbfca109fafd7756fde28762a5e9141638c40f9900632c151875a9fb81897f8&p=882a9543d2b112a05afcc665540883&newp=8b2a9712a49111a058eb9029164ccb231610db2151d1d11128a6c1&user=baidu&fm=sc&query=PHP+mkdir+-P&qid=&p1=1
下面来自网友没实践:
http://hi.baidu.com/hevensun/item/d28a0c08c68d98e0ff240d85
阅读全文
Zend studio 10.5今天出现failed to create the java virtual machine的解决办法。
Php/Js/Shell/Go jackxiang 2013-11-20 10:43
昨天还是好的,最后修改了下-Xms125为256好像就好了,奇怪:
ZendStudio.ini -Xms256M好了。
ZendStudio.ini -Xms256M好了。
php setcookie时value为null或空字符串,会删除此cookie
Php/Js/Shell/Go jackxiang 2013-11-15 11:58
背景:Set Cookie时出现两个相同的cookie的key和一样value值 送出,用Cookie::delete('language1');出现第一个给删除了,第二个送出,删除了会在浏览器上提示:值为”deleted”, 过期时间为 Thu, 01-Jan-1970 08:00:01 CST 或者说是 Thu, 01-Jan-1970 00:00:01 GMT
看实现:
上面用的是NULL,于是找到一篇文章讲这个的:
php setcookie时value为null或空字符串,会删除此cookie:
http://www.zhaokunyao.com/archives/4346
看实现:
上面用的是NULL,于是找到一篇文章讲这个的:
php setcookie时value为null或空字符串,会删除此cookie:
http://www.zhaokunyao.com/archives/4346