fn+left
command+上光标键
command+上光标键
[实践OK]linux/FreeBSD/macbook 中文乱码以及tree指令的用法,查看目录结构着色和用tree看目录时显示颜色的参数 -C,CentOS下的Tree命令显示文件绝对路径tree -pf ~+|grep -v "[d"
Unix/LinuxC技术 jackxiang 2016-3-17 18:01
macbook下的tree加上中文显示不乱码加-N :tree -N -L 2 .
-N Print non-printable characters as is instead of as escaped octal numbers.
打印不可打印的字符,而不是AS ESCAPATED八进制数字。
背景:有时查看目录结构,这个tree非常有用,yum -y install tree安装就能使用。
tree -L 2 -ugpshC
parameter explain:
-u Print the username, or UID # if no username is available, of the file.
-g Print the group name, or GID # if no group name is available, of the file.
-h option rounds to the nearest whole number unlike the ls implementation of -h which
rounds up always.
-f Print the full path prefix for each file.
-p Print the protections for each file.
tree -f ~+ #只显示目录和文件的绝对路径,注意加上这个: ~+。
tree -pf ~+ #显示目录和文件的绝对路径以及Chmod的权限,注意加上这个: ~+。
tree -pugf ~+ #显示目录和文件的绝对路径以及Chmod的权限,注意加上这个: ~+,u用户,g群组。
==============================================================
FreebsD: Have you tried installing tree with: pkg install tree ,cd /usr/ports/sysutils/tree make install
来自:https://www.reddit.com/r/freebsd/comments/4kxyx1/newbie_having_trouble_using_tree_command/
相关参数说明及常用参数说明:
要想目录和文件有颜色,或是用Tree看有颜色,得用那个SecureCRT做下配置:
Session Options->Terminal->Emulation->Terminal [Linux/Xterm] [V]ANSI Color @老武用的是Linux可以,我用的是Xterm也行,颜色可调一下即可。
常常加 -C,表示颜色,-L表示层级。 如:tree -C -L 2。
-C Turn colorization on always.
阅读全文
-N Print non-printable characters as is instead of as escaped octal numbers.
打印不可打印的字符,而不是AS ESCAPATED八进制数字。
背景:有时查看目录结构,这个tree非常有用,yum -y install tree安装就能使用。
tree -L 2 -ugpshC
parameter explain:
-u Print the username, or UID # if no username is available, of the file.
-g Print the group name, or GID # if no group name is available, of the file.
-h option rounds to the nearest whole number unlike the ls implementation of -h which
rounds up always.
-f Print the full path prefix for each file.
-p Print the protections for each file.
tree -f ~+ #只显示目录和文件的绝对路径,注意加上这个: ~+。
tree -pf ~+ #显示目录和文件的绝对路径以及Chmod的权限,注意加上这个: ~+。
tree -pugf ~+ #显示目录和文件的绝对路径以及Chmod的权限,注意加上这个: ~+,u用户,g群组。
==============================================================
FreebsD: Have you tried installing tree with: pkg install tree ,cd /usr/ports/sysutils/tree make install
来自:https://www.reddit.com/r/freebsd/comments/4kxyx1/newbie_having_trouble_using_tree_command/
相关参数说明及常用参数说明:
要想目录和文件有颜色,或是用Tree看有颜色,得用那个SecureCRT做下配置:
Session Options->Terminal->Emulation->Terminal [Linux/Xterm] [V]ANSI Color @老武用的是Linux可以,我用的是Xterm也行,颜色可调一下即可。
常常加 -C,表示颜色,-L表示层级。 如:tree -C -L 2。
-C Turn colorization on always.
阅读全文
php7 memcache 扩展和php7 的redis扩展 。
Php/Js/Shell/Go jackxiang 2016-3-17 17:03
php7 memcache 扩展你们用哪个版本安装成功的?
https://github.com/php-memcached-dev/php-memcached/tree/php7
php7 的redis扩展 有吗?
https://github.com/phpredis/phpredis/tree/php7@tru
https://github.com/php-memcached-dev/php-memcached/tree/php7
php7 的redis扩展 有吗?
https://github.com/phpredis/phpredis/tree/php7@tru
PHP反射类带参数执行反射对象方法传入参数函数示例解析。
Php/Js/Shell/Go jackxiang 2016-3-17 09:05
背景:对于kohana早期框架对类里面的before after以及controller和action的函数均可以用反射类来灵活按既定顺序执行,而在执行的时候假如异常,可以通过PHP提供的异常捕获进行捕获输出,这就涉及到类变对象后其参数的传递问题了,怎么给反射类里面的函数传递多参数乃至引用参数,这个PHP也提供了对应的反射类里函数传入的方法ReflectionMethod::invokeArgs。
使用代码片段如下:
参考更多相关反射的文章:
http://flandycheng.blog.51cto.com/855176/326021/
http://www.phperz.com/article/14/0809/17371.html
自己研究:http://jackxiang.com/post/2090/
ReflectionMethod::invokeArgs
(PHP 5 >= 5.1.0)
ReflectionMethod::invokeArgs — 带参数执行
说明
public mixed ReflectionMethod::invokeArgs ( object $object , array $args )
使用数组给方法传送参数,并执行他。
参数
object
调用方法的对象,如果是静态对象,设置为 null
args
使用 array 传送的方法参数。
返回值
返回方法返回值
错误/异常
如果 object 指定的实例无法执行方法,那么产生 ReflectionException 异常。
如果方法调用失败,产生 ReflectionException
范例
Example #1 ReflectionMethod::invokeArgs() example
<?php
class HelloWorld {
public function sayHelloTo($name) {
return 'Hello ' . $name;
}
}
$reflectionMethod = new ReflectionMethod('HelloWorld', 'sayHelloTo');
echo $reflectionMethod->invokeArgs(new HelloWorld(), array('Mike'));
?>
以上例程会输出:
Hello Mike
注释
Note:
如果函数有参数需为引用,那么它们必须以引用方式传入。
参见
ReflectionMethod::invoke() - Invoke
__invoke()
call_user_func_array() - 调用回调函数,并把一个数组参数作为回调函数的参数
来自:http://help.bitscn.com/php/reflectionmethod.invokeargs.html
使用代码片段如下:
参考更多相关反射的文章:
http://flandycheng.blog.51cto.com/855176/326021/
http://www.phperz.com/article/14/0809/17371.html
自己研究:http://jackxiang.com/post/2090/
ReflectionMethod::invokeArgs
(PHP 5 >= 5.1.0)
ReflectionMethod::invokeArgs — 带参数执行
说明
public mixed ReflectionMethod::invokeArgs ( object $object , array $args )
使用数组给方法传送参数,并执行他。
参数
object
调用方法的对象,如果是静态对象,设置为 null
args
使用 array 传送的方法参数。
返回值
返回方法返回值
错误/异常
如果 object 指定的实例无法执行方法,那么产生 ReflectionException 异常。
如果方法调用失败,产生 ReflectionException
范例
Example #1 ReflectionMethod::invokeArgs() example
<?php
class HelloWorld {
public function sayHelloTo($name) {
return 'Hello ' . $name;
}
}
$reflectionMethod = new ReflectionMethod('HelloWorld', 'sayHelloTo');
echo $reflectionMethod->invokeArgs(new HelloWorld(), array('Mike'));
?>
以上例程会输出:
Hello Mike
注释
Note:
如果函数有参数需为引用,那么它们必须以引用方式传入。
参见
ReflectionMethod::invoke() - Invoke
__invoke()
call_user_func_array() - 调用回调函数,并把一个数组参数作为回调函数的参数
来自:http://help.bitscn.com/php/reflectionmethod.invokeargs.html
背景:这玩意是感觉把rpc的生成变成他自己的了,有点意思,不知底层是不是还是xdr交换统一数据结构,还是php的unpack实现客户端的。
http://www.tuicool.com/articles/NV3Yni3
http://www.tuicool.com/articles/NV3Yni3
背景:对于ip限定缩小范围,最好是采用出口IP通过公司的所有进行放行,而获取用户Ip地址通用方法常见安全隐患(HTTP_X_FORWARDED_FOR)的,所以最好是nginx在代理时就限定死:
deny *.*.*.66;
deny *.*.*.79;
deny *.*.*.80;
deny *.*.*.77;
Nginx的日志的最后一个IP并不安全:
*.*.*.57 - jackxiang.com [15/Mar/2016:18:02:33 +0800] "GET /h5ds/themes/common/mobile/js/maps/swiper.min.js.map HTTP/1.0" 404 20 "-" "Mozilla/5.0 (iPhone; CPU iPhone OS 7_0 like Mac OS X; en-us) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11A465 Safari/9537.53" 202.*.*.78
分析过程
这个来自一些项目中,获取用户Ip,进行用户操作行为的记录,是常见并且经常使用的。 一般朋友,都会看到如下通用获取IP地址方法。
function getIP() {
if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$realip = $_SERVER['HTTP_X_FORWARDED_FOR'];
} elseif (isset($_SERVER['HTTP_CLIENT_IP'])) {
$realip = $_SERVER['HTTP_CLIENT_IP'];
} else {
$realip = $_SERVER['REMOTE_ADDR'];
}
return $realip;
}
这个是网上常见获取,ip函数,用这些值获取IP,我们首先要弄清楚,这些数据是从那个地方传过来的。
IP获取来源
1.’REMOTE_ADDR’ 是远端IP,默认来自tcp 连接是,客户端的Ip。可以说,它最准确,确定是,只会得到直接连服务器客户端IP。如果对方通过代理服务器上网,就发现。获取到的是代理服务器IP了。
如:a->b(proxy)->c ,如果c 通过’REMOTE_ADDR’ ,只能获取到b的IP,获取不到a的IP了。
另外:该IP想篡改将很难实现,在传递知道生成php server值,都是直接生成的。
2.’HTTP_X_FORWARDED_FOR’,’HTTP_CLIENT_IP’ 为了能在大型网络中,获取到最原始用户IP,或者代理IP地址。对HTTp协议进行扩展。定义了实体头。
HTTP_X_FORWARDED_FOR = clientip,proxy1,proxy2 所有IP用”,”分割。 HTTP_CLIENT_IP 在高级匿名代理中,这个代表了代理服务器IP。既然是http协议扩展一个实体头,并且这个值对于传入端是信任的,信任传入方按照规则格式输入的。以下以x_forword_for例子加以说明,正常情况下,这个值变化过程。
来自:http://blog.chacuo.net/98.html
deny *.*.*.66;
deny *.*.*.79;
deny *.*.*.80;
deny *.*.*.77;
Nginx的日志的最后一个IP并不安全:
*.*.*.57 - jackxiang.com [15/Mar/2016:18:02:33 +0800] "GET /h5ds/themes/common/mobile/js/maps/swiper.min.js.map HTTP/1.0" 404 20 "-" "Mozilla/5.0 (iPhone; CPU iPhone OS 7_0 like Mac OS X; en-us) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11A465 Safari/9537.53" 202.*.*.78
分析过程
这个来自一些项目中,获取用户Ip,进行用户操作行为的记录,是常见并且经常使用的。 一般朋友,都会看到如下通用获取IP地址方法。
function getIP() {
if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$realip = $_SERVER['HTTP_X_FORWARDED_FOR'];
} elseif (isset($_SERVER['HTTP_CLIENT_IP'])) {
$realip = $_SERVER['HTTP_CLIENT_IP'];
} else {
$realip = $_SERVER['REMOTE_ADDR'];
}
return $realip;
}
这个是网上常见获取,ip函数,用这些值获取IP,我们首先要弄清楚,这些数据是从那个地方传过来的。
IP获取来源
1.’REMOTE_ADDR’ 是远端IP,默认来自tcp 连接是,客户端的Ip。可以说,它最准确,确定是,只会得到直接连服务器客户端IP。如果对方通过代理服务器上网,就发现。获取到的是代理服务器IP了。
如:a->b(proxy)->c ,如果c 通过’REMOTE_ADDR’ ,只能获取到b的IP,获取不到a的IP了。
另外:该IP想篡改将很难实现,在传递知道生成php server值,都是直接生成的。
2.’HTTP_X_FORWARDED_FOR’,’HTTP_CLIENT_IP’ 为了能在大型网络中,获取到最原始用户IP,或者代理IP地址。对HTTp协议进行扩展。定义了实体头。
HTTP_X_FORWARDED_FOR = clientip,proxy1,proxy2 所有IP用”,”分割。 HTTP_CLIENT_IP 在高级匿名代理中,这个代表了代理服务器IP。既然是http协议扩展一个实体头,并且这个值对于传入端是信任的,信任传入方按照规则格式输入的。以下以x_forword_for例子加以说明,正常情况下,这个值变化过程。
来自:http://blog.chacuo.net/98.html
背景:目前虚拟机和云的兴起,对一些应用的封装啥的还没有火起来,比如:FreeBSD的jail啥的,目前出了一个叫docker的,可以了解了解。
基本概念
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上。
Docker是一个重新定义了程序开发测试、交付和部署过程的开放平台,Docker则可以称为构建一次,到处运行,这就是docker提出的“Build once,Run anywhere”
备注:java提出的是” compile Once,Run Anywhere”
Docker与linux内核的关系
docker与linux内核的关系
Cgroup: 对资源进行限制(如对物理资源CPU、内存、I/O的限制)
Namespace:对进程进行隔离
Chroot: 能改变当前运行的进程和子进程的根目录
AUFS:联合文件系统,Docker利用AUFS将不同的Layer结合到1个image中去
Docker架构
Docker采用C/S架构,客户端与服务器端不一定要在一起。客户端可以运行在windows、linux等机器上,然后服务器端必须运行在linux 64bit的操作系统上。
Docker“组件间”关系
ü 主机:运行容器的机器
ü 镜像:文件的层次结构,以及包含如何运行容器的元数据, Dockerfile中的每条命令都会在文件系统中创建一个新的层次结构,文件系统在这些层次上构建起来,镜像就构建于这些联合的文件系统之上
ü 容器:一个从镜像中启动,包含正在运行的程序的进程
ü Registry(镜像仓库):存放镜像的地方,如Docker Hub
ü Volumn(卷):将物理机的文件夹挂载到容器内部.与openstack的volumn不一样,openstack中的卷是块存储,不能共享。而这里的volumn可以共享。
ü Dockerfile:用于创建镜像的脚本
Docker应用场景
面向开发人员:快速开发、交付应用程序
主要体现在三个方面:
ü 代码一致:
在没有docker之前,开发、测试、生成环境可能不一样,如发布某个服务的端口时,开发是1000,而生产是2000,这就导致配置文件不一致。然而使用docker后,我在容器内的端口都是一样的,而容器对外暴露的端口可能不一样。
ü 开发环境与生产环境的一致性
我们知道,在生产环境的部署比较复杂,服务非常繁多。通过docker,我们可以单机版上通过容器来模拟生产环境的分布式环境。从而让开发人员的开发更有效率。
ü 快速部署
可以将docker理解为轻量级的虚拟机,启动docker容器速度很快,启动虚拟机很慢。
面向运维人员:降低运维成本
ü 节约安装各种软件的时间。
在没有docker之前,在部署程序之前,势必要搭建环境,而搭建环境很花费时间,还要解决环境的各种依赖,而docker通过镜像机制,将你的代码和运行环境直接打包成镜像,扔到容器启动即可。
ü 降低运维成本。
在没有docker之前,由于技术不断发展,运维也要不停的学习各种软件的使用技能,如Node.js、redis等。有了docker,根本不用关系这些技术(或者少关心),只需要关注容器就可以了,能够正常的发布容器,停止容器、删除容器、迁移容器就可以了。
面向企业: Paas层的实现
Coding.net、Oschina这些代码托管平台,有个功能即提供给用户程序的演示环境,我不知道他们底层到底采用的什么技术,但是如果Iaas层的openstack,给用户直接提供虚拟机,先得太“笨重”,因为虚拟机本身对物理机的开销就比较大,如果采用Docker,我1台物理机可以部署多个容器,可以降低企业的采购物理机的费用,而且运行效率上应该比采用Iaas层的方案快。
Docker基本命令
Docker安装相关命令
参考: https://docs.docker.com/installation/ubuntulinux/
摘自:http://blog.csdn.net/opensure/article/details/46490749
基本概念
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上。
Docker是一个重新定义了程序开发测试、交付和部署过程的开放平台,Docker则可以称为构建一次,到处运行,这就是docker提出的“Build once,Run anywhere”
备注:java提出的是” compile Once,Run Anywhere”
Docker与linux内核的关系
docker与linux内核的关系
Cgroup: 对资源进行限制(如对物理资源CPU、内存、I/O的限制)
Namespace:对进程进行隔离
Chroot: 能改变当前运行的进程和子进程的根目录
AUFS:联合文件系统,Docker利用AUFS将不同的Layer结合到1个image中去
Docker架构
Docker采用C/S架构,客户端与服务器端不一定要在一起。客户端可以运行在windows、linux等机器上,然后服务器端必须运行在linux 64bit的操作系统上。
Docker“组件间”关系
ü 主机:运行容器的机器
ü 镜像:文件的层次结构,以及包含如何运行容器的元数据, Dockerfile中的每条命令都会在文件系统中创建一个新的层次结构,文件系统在这些层次上构建起来,镜像就构建于这些联合的文件系统之上
ü 容器:一个从镜像中启动,包含正在运行的程序的进程
ü Registry(镜像仓库):存放镜像的地方,如Docker Hub
ü Volumn(卷):将物理机的文件夹挂载到容器内部.与openstack的volumn不一样,openstack中的卷是块存储,不能共享。而这里的volumn可以共享。
ü Dockerfile:用于创建镜像的脚本
Docker应用场景
面向开发人员:快速开发、交付应用程序
主要体现在三个方面:
ü 代码一致:
在没有docker之前,开发、测试、生成环境可能不一样,如发布某个服务的端口时,开发是1000,而生产是2000,这就导致配置文件不一致。然而使用docker后,我在容器内的端口都是一样的,而容器对外暴露的端口可能不一样。
ü 开发环境与生产环境的一致性
我们知道,在生产环境的部署比较复杂,服务非常繁多。通过docker,我们可以单机版上通过容器来模拟生产环境的分布式环境。从而让开发人员的开发更有效率。
ü 快速部署
可以将docker理解为轻量级的虚拟机,启动docker容器速度很快,启动虚拟机很慢。
面向运维人员:降低运维成本
ü 节约安装各种软件的时间。
在没有docker之前,在部署程序之前,势必要搭建环境,而搭建环境很花费时间,还要解决环境的各种依赖,而docker通过镜像机制,将你的代码和运行环境直接打包成镜像,扔到容器启动即可。
ü 降低运维成本。
在没有docker之前,由于技术不断发展,运维也要不停的学习各种软件的使用技能,如Node.js、redis等。有了docker,根本不用关系这些技术(或者少关心),只需要关注容器就可以了,能够正常的发布容器,停止容器、删除容器、迁移容器就可以了。
面向企业: Paas层的实现
Coding.net、Oschina这些代码托管平台,有个功能即提供给用户程序的演示环境,我不知道他们底层到底采用的什么技术,但是如果Iaas层的openstack,给用户直接提供虚拟机,先得太“笨重”,因为虚拟机本身对物理机的开销就比较大,如果采用Docker,我1台物理机可以部署多个容器,可以降低企业的采购物理机的费用,而且运行效率上应该比采用Iaas层的方案快。
Docker基本命令
Docker安装相关命令
参考: https://docs.docker.com/installation/ubuntulinux/
摘自:http://blog.csdn.net/opensure/article/details/46490749
Linux bashrc和profile的用途和区别
Unix/LinuxC技术 jackxiang 2016-3-11 00:41
Linux bashrc和profile的用途和区别
Unix/LinuxC技术 jackxiang 2016-3-10 18:53
聚贤庄中原各路英雄围攻乔峰,主要矛盾是因为乔峰不是汉人。而乔峰使太祖长拳战尽天下英雄而不败就是为了讽刺这些人。
太祖长拳是宋开国皇帝赵匡胤发明的拳术,又名三十二势长拳、宋太祖拳、太祖拳、赵家拳、赵门、太祖门,有的地方也叫红拳、洪拳、炮捶、赵门炮拳。其精神偶像是赵匡胤。明代,该拳法已名闻天下。并对戚家拳、太极拳、洪洞通背拳等拳种产生了重要影响。因此,又有“百拳之母”的称谓。
林,而少林功夫又发源于西域,那些所谓的英雄围攻乔峰是因为他不是汉人,而他们却都用西域功夫,只有乔峰用本朝太祖的长拳,绝妙的讽刺
阅读全文
太祖长拳是宋开国皇帝赵匡胤发明的拳术,又名三十二势长拳、宋太祖拳、太祖拳、赵家拳、赵门、太祖门,有的地方也叫红拳、洪拳、炮捶、赵门炮拳。其精神偶像是赵匡胤。明代,该拳法已名闻天下。并对戚家拳、太极拳、洪洞通背拳等拳种产生了重要影响。因此,又有“百拳之母”的称谓。
林,而少林功夫又发源于西域,那些所谓的英雄围攻乔峰是因为他不是汉人,而他们却都用西域功夫,只有乔峰用本朝太祖的长拳,绝妙的讽刺
阅读全文
Comments starting with '#' are deprecated in Unknown on line 1是因为php-fpm.ini里有#号注释引起的。
Php/Js/Shell/Go jackxiang 2016-3-8 23:25
总之,这种情况主要还是因为php-fpm.conf或php.ini里有#号引起的,我发现尽管php-fpm.conf里用#号能注释,但是会有影响,
我之前安装的是PHP 5.6.18,在运行程序时往往运行nginx请求出现:Comments starting with '#' are deprecated in Unknown on line 1,
后来我再次安装低版本时默认启动没有问题,再将PHP 5.6.18里的php/etc/php-fpm.conf挪动回来后再启动就发生:Comments starting with '#' are deprecated in Unknown on line ,原来里面有一些以#号的中文注释导致的,如:
结论:尽量别用#号注释,php.conf和php-fpm.conf两个,一个是;注释,别用#号,另一个是尽量别用#号,一个#都不要留更好。
===========================================================================
ErrorException [ 8192 ]: Comments starting with '#' are deprecated in Unknown on line 1
find /usr/local/php/ -name "*.ini" -exec sed -i -re 's/^(\s*)#(.*)/\1;\2/g' {} \;
来自:http://stackoverflow.com/questions/29211550/track-down-php-error-comments-starting-with-are-deprecated-in-unknown-on-li
8192 E_DEPRECATED (integer) 运行时通知。启用后将会对在未来版本中可能无法正常工作的代码给出警告。 since PHP 5.3.0
错误码来自:http://www.jb51.net/article/47793.htm
应该是新版本的PHP出现的一个mysql推荐用mysqlli和pdo提示的问题,把错误关掉,再打开就好了,这块儿可能PHP还是有点问题:
error_reporting(E_ALL ^ E_NOTICE ^ E_DEPRECATED);//解决Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future:
ini_set('display_startup_errors', 0);
ini_set('display_errors', 0);
阅读全文
我之前安装的是PHP 5.6.18,在运行程序时往往运行nginx请求出现:Comments starting with '#' are deprecated in Unknown on line 1,
后来我再次安装低版本时默认启动没有问题,再将PHP 5.6.18里的php/etc/php-fpm.conf挪动回来后再启动就发生:Comments starting with '#' are deprecated in Unknown on line ,原来里面有一些以#号的中文注释导致的,如:
结论:尽量别用#号注释,php.conf和php-fpm.conf两个,一个是;注释,别用#号,另一个是尽量别用#号,一个#都不要留更好。
===========================================================================
ErrorException [ 8192 ]: Comments starting with '#' are deprecated in Unknown on line 1
find /usr/local/php/ -name "*.ini" -exec sed -i -re 's/^(\s*)#(.*)/\1;\2/g' {} \;
来自:http://stackoverflow.com/questions/29211550/track-down-php-error-comments-starting-with-are-deprecated-in-unknown-on-li
8192 E_DEPRECATED (integer) 运行时通知。启用后将会对在未来版本中可能无法正常工作的代码给出警告。 since PHP 5.3.0
错误码来自:http://www.jb51.net/article/47793.htm
应该是新版本的PHP出现的一个mysql推荐用mysqlli和pdo提示的问题,把错误关掉,再打开就好了,这块儿可能PHP还是有点问题:
error_reporting(E_ALL ^ E_NOTICE ^ E_DEPRECATED);//解决Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future:
ini_set('display_startup_errors', 0);
ini_set('display_errors', 0);
阅读全文
php __call()方法实现数据库连贯操作
Php/Js/Shell/Go jackxiang 2016-3-8 11:11
背景:对的jquery有一种叫链式操作的dom的,而PHP在写sql时也可以使用类似的方法,如:
这种写法有点类似Jquery的链式写法,如下:
__call函数相关介绍:http://jackxiang.com/post/2834/
=================================================
使用__call()方法来实现数据库连贯操作
---------- 调试PHP ----------
SELECT sex, count(sex) FROM user where sex in ("男","女") group by sex
having avg(age) > 25
Output completed (0 sec consumed) - Normal Termination
来自:http://blog.sina.com.cn/s/blog_6109978501017154.html
这种写法有点类似Jquery的链式写法,如下:
__call函数相关介绍:http://jackxiang.com/post/2834/
=================================================
使用__call()方法来实现数据库连贯操作
---------- 调试PHP ----------
SELECT sex, count(sex) FROM user where sex in ("男","女") group by sex
having avg(age) > 25
Output completed (0 sec consumed) - Normal Termination
来自:http://blog.sina.com.cn/s/blog_6109978501017154.html
(技术分享) 解决 Firefox 显示“已阻止载入混合活动内容”的问题
Unix/LinuxC技术 jackxiang 2016-3-3 15:37
背景:自己是https的,想调用别人的一些华东解锁验证码的一些js不是https的,于是被阻止了,怎么办?
从 Firefox 18 开始,如果 HTTPS 页面中包含非加密的 HTTP 内容,浏览器会在控制台输出警告,记录 Mixed Active Content 请求。而从 Firefox 23 开始,浏览器会默认阻止 HTTPS 页面中可能影响网页安全的 HTTP 请求(即阻止 Mixed Active Content)。这样做会牺牲一些网站的兼容性,但对安全性的提高是很有帮助的。
获取 Mixed Content 相当于发起部分加密的连接,其中未加密的部分存在被中间人攻击的可能。不同类型的 Mixed Content 所产生的危害程度也有所不同,Mixed Passive Content 可能会使中间人获取到用户的设备信息,或让用户看到不正确的图片、音频等信息。而 Mixed Active Content 则可能导致用户的敏感数据被窃取,比如账号密码等。
解决问题
解决方案一 (一劳永逸)
避免在 HTTPS 页面中包含 HTTP 的内容。
解决方案二 (让 Firefox 暂时不阻止)
mixed_content_01
解决方案三 (配置本地 Firefox,让其不再阻止)
打开新标签页,在地址栏输入 about:config,进入配置页面。
mixed_content_02
为什么 Mixed Content Blocker 不是阻止所有的 HTTP 请求?
Mixed Content 可以分为两类:
Mixed Passive Content
Mixed Active Content
Mixed Passive Content (a.k.a. Mixed Display Content)
Mixed Passive Content 是在 HTTPS 页面中一些对安全性影响不大的 HTTP 内容,比如 Image、Audio、Video 等。即使这些内容被中间人篡改,所产生的影响也只是 —— 中间人得知了用户的浏览器信息 (through user-agent included by HTTP headers)、用户看到了一张不正确的图片,这些被篡改的内容无法修改 DOM 树,也无法执行。另外,Mixed Passive Content 在 Web 上普遍存在。因此 Firefox 默认不会阻止 Mixed Passive Content。
Mixed Active Content (a.k.a. Mixed Script Content)
Mixed Active Content 是在 HTTPS 页面中一些能够修改 DOM 树的 HTTP 内容,如 JavaScript、CSS、XMLHttpRequest、iFrame 等。这些 HTTP 内容被中间人修改以后,可能会影响原有 HTTPS 内容的安全性,导致敏感的用户数据被盗。因此 Firefox 会默认阻止 Mixed Active Content。
深入思考
为什么 Frame 应该是 Mixed Active Content?
Frame 之所以不能被分类为 Mixed Passive Content 主要有以下几个原因:
一个 frame 可以将外层可靠的 HTTPS 页面跳转到恶意盗取信息的仿造页面。
如果一个 HTTPS 页面嵌套着 HTTP frame,而这个 frame 包含表单用以输入用户信息,那么用户信息将会以 HTTP 方式传送,有被中间攻击者窃取的危险,而用户却毫不知情,还以为一切都在安全的 HTTPS 里。
如何判定 Mixed Content 是 Active 还是 Passive?
该 Mixed Content 是否会影响页面的 DOM 结构。(Yes -> Active, No -> Passive)
来自:http://www.ipeld.net/archives/8860.html
从 Firefox 18 开始,如果 HTTPS 页面中包含非加密的 HTTP 内容,浏览器会在控制台输出警告,记录 Mixed Active Content 请求。而从 Firefox 23 开始,浏览器会默认阻止 HTTPS 页面中可能影响网页安全的 HTTP 请求(即阻止 Mixed Active Content)。这样做会牺牲一些网站的兼容性,但对安全性的提高是很有帮助的。
获取 Mixed Content 相当于发起部分加密的连接,其中未加密的部分存在被中间人攻击的可能。不同类型的 Mixed Content 所产生的危害程度也有所不同,Mixed Passive Content 可能会使中间人获取到用户的设备信息,或让用户看到不正确的图片、音频等信息。而 Mixed Active Content 则可能导致用户的敏感数据被窃取,比如账号密码等。
解决问题
解决方案一 (一劳永逸)
避免在 HTTPS 页面中包含 HTTP 的内容。
解决方案二 (让 Firefox 暂时不阻止)
mixed_content_01
解决方案三 (配置本地 Firefox,让其不再阻止)
打开新标签页,在地址栏输入 about:config,进入配置页面。
mixed_content_02
为什么 Mixed Content Blocker 不是阻止所有的 HTTP 请求?
Mixed Content 可以分为两类:
Mixed Passive Content
Mixed Active Content
Mixed Passive Content (a.k.a. Mixed Display Content)
Mixed Passive Content 是在 HTTPS 页面中一些对安全性影响不大的 HTTP 内容,比如 Image、Audio、Video 等。即使这些内容被中间人篡改,所产生的影响也只是 —— 中间人得知了用户的浏览器信息 (through user-agent included by HTTP headers)、用户看到了一张不正确的图片,这些被篡改的内容无法修改 DOM 树,也无法执行。另外,Mixed Passive Content 在 Web 上普遍存在。因此 Firefox 默认不会阻止 Mixed Passive Content。
Mixed Active Content (a.k.a. Mixed Script Content)
Mixed Active Content 是在 HTTPS 页面中一些能够修改 DOM 树的 HTTP 内容,如 JavaScript、CSS、XMLHttpRequest、iFrame 等。这些 HTTP 内容被中间人修改以后,可能会影响原有 HTTPS 内容的安全性,导致敏感的用户数据被盗。因此 Firefox 会默认阻止 Mixed Active Content。
深入思考
为什么 Frame 应该是 Mixed Active Content?
Frame 之所以不能被分类为 Mixed Passive Content 主要有以下几个原因:
一个 frame 可以将外层可靠的 HTTPS 页面跳转到恶意盗取信息的仿造页面。
如果一个 HTTPS 页面嵌套着 HTTP frame,而这个 frame 包含表单用以输入用户信息,那么用户信息将会以 HTTP 方式传送,有被中间攻击者窃取的危险,而用户却毫不知情,还以为一切都在安全的 HTTPS 里。
如何判定 Mixed Content 是 Active 还是 Passive?
该 Mixed Content 是否会影响页面的 DOM 结构。(Yes -> Active, No -> Passive)
来自:http://www.ipeld.net/archives/8860.html
背景:测试人员提出在Html里一次性上传传了个8G文件,为何接口没有立即返回超过限定大小了,这块Html5里有对文件大小作限定,之前也有浏览器也提出过类似问题,接收方但目前如果采用一次性Post目前的PHP上传是没有办法立即通过分析Http协议的content-lenth告诉浏览器,你超了,目前都是通过http上传的httpBody,如Nginx这块配置一下大小,PHP里也配置一下大小进行拦截,测试的这种想法是好,目前但没法实施,除非你用断点上传且得在H5的浏览器的帮助下进行浏览器过滤一次,服务端再过滤一次才可行。
阅读全文
阅读全文
PHP提示Notice: Undefined variable的解决办法,Warning: Missing argument 1 for function,warning: Missing argument 2 for variable_get()。
Php/Js/Shell/Go jackxiang 2016-3-1 23:05
问题一:
在测试PHP代码的过程中,会遇到这样的问题:PHP提示Notice: Undefined variable,遇到这样的问题很纠结,但是很容易解决。
今天晚上,我就遇到了这样的问题,到网上搜索了很多解决方法,整理如下,仅供参考,同时再次感谢网上各位大牛给大家提供的各式各样的方法!
PHP默认的配置会报这个错误,虽然有利于发现错误,但同时字现实实践中会出现很多问题。
解决方法如下:
一、修改php.ini配置文件
error_reporting设置:
找到error_reporting = E_ALL
修改为error_reporting = E_ALL & ~E_NOTICE
error_reporting(E_ALL ^ E_DEPRECATED ^ E_NOTICE);//解决Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future
原理是:减弱PHP的敏感程度,使其遇到这种问题不报错。
二、在文件的php的头部加入一下代码:
ini_set("error_reporting","E_ALL & ~E_NOTICE");
同样也可以解决问题。
三、参考一下这篇文章:
《当遇到:Notice …Undefined variable…》
网址是:http://www.phpiask.com/?p=276
来自:http://blog.csdn.net/chenyanggo/article/details/7430383
问题二:
遇到Warning: Missing argument 1 for checkLogin(), called in C:\wamp\www\library222\admin\main.php on line 4 and defined in C:\wamp\www\library222\admin\inc\conn.php on line 51
/***********************************************************************/
//检查管理员是否登录
function checkLogin($id)
{
session_start();
if(!isset($_SESSION['sid']))
{
echo "<script language='javascript'>alert('请先登录!');parent.location.href='index.php';</script>";
}
if($id==0)return;
}
?>
调用函数checkLogin的时候少了参数。
稍微改下:
function checkLogin($id = 0){
...
}
来自:http://zhidao.baidu.com/link?url=wddMxfPvxDPCMFGo-uc5kRc2gflkJgofmKutyj1A2d4fc_6B566BjWftMvRpeQvAgjhR6Guznz1BfLa2uH8_Qi0P53TyIto_GeDYYe81Slq
来自:http://www.thinkindrupal.com/node/495
在测试PHP代码的过程中,会遇到这样的问题:PHP提示Notice: Undefined variable,遇到这样的问题很纠结,但是很容易解决。
今天晚上,我就遇到了这样的问题,到网上搜索了很多解决方法,整理如下,仅供参考,同时再次感谢网上各位大牛给大家提供的各式各样的方法!
PHP默认的配置会报这个错误,虽然有利于发现错误,但同时字现实实践中会出现很多问题。
解决方法如下:
一、修改php.ini配置文件
error_reporting设置:
找到error_reporting = E_ALL
修改为error_reporting = E_ALL & ~E_NOTICE
error_reporting(E_ALL ^ E_DEPRECATED ^ E_NOTICE);//解决Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future
原理是:减弱PHP的敏感程度,使其遇到这种问题不报错。
二、在文件的php的头部加入一下代码:
ini_set("error_reporting","E_ALL & ~E_NOTICE");
同样也可以解决问题。
三、参考一下这篇文章:
《当遇到:Notice …Undefined variable…》
网址是:http://www.phpiask.com/?p=276
来自:http://blog.csdn.net/chenyanggo/article/details/7430383
问题二:
遇到Warning: Missing argument 1 for checkLogin(), called in C:\wamp\www\library222\admin\main.php on line 4 and defined in C:\wamp\www\library222\admin\inc\conn.php on line 51
/***********************************************************************/
//检查管理员是否登录
function checkLogin($id)
{
session_start();
if(!isset($_SESSION['sid']))
{
echo "<script language='javascript'>alert('请先登录!');parent.location.href='index.php';</script>";
}
if($id==0)return;
}
?>
调用函数checkLogin的时候少了参数。
稍微改下:
function checkLogin($id = 0){
...
}
来自:http://zhidao.baidu.com/link?url=wddMxfPvxDPCMFGo-uc5kRc2gflkJgofmKutyj1A2d4fc_6B566BjWftMvRpeQvAgjhR6Guznz1BfLa2uH8_Qi0P53TyIto_GeDYYe81Slq
来自:http://www.thinkindrupal.com/node/495
html select美化模拟jquery插件select2.js
Php/Js/Shell/Go jackxiang 2016-3-1 13:33
背景:像下拉这样的控件,有jQuery 插件autocomplete ,现在出来一个select2.js。
select2.js是一个html select美化模拟类jquery插件,但是select2.js又远非简单的模拟美化那么简单,它还具有搜索功能,多选功能(可限制选择数量),ajax方式加载数据,可以设置placeholder,
可以设置禁用状态disabled,并且设置非常简单,如:$(".js-example-disabled").prop("disabled", false);
select2.js默认值设置:$("#select2").val("1").trigger("change"); 多选的默认值可以使用$("#select2").val(["1","2"]).trigger("change"); 这样传递数组过去。
select2还有丰富的自定义事件
$("#select2").on("select2:open", function (e) { log("select2:open", e); });
$("#select2").on("select2:close", function (e) { log("select2:close", e); });
$("#select2").on("select2:select", function (e) { log("select2:select", e); });
$("#select2").on("select2:unselect", function (e) { log("select2:unselect", e); });
$("#select2").on("change", function (e) { log("change"); });
更多丰富的select2用法请参考https://select2.github.io/examples.html,懒人建站也会在稍后给出实际应用中的一些例子,和一些方便调用的小花招。
select2小花招:自己定义当前选中的selected值,我们在select2的节点上给出一个<select class="test1" data-selected="2"> 看红色部分,然后我们就可以在设置选中值得时候就可以使用如下js代码,
$("#select2").val(function(){
return $(this).data("selected")
}).trigger("change");
利用val()接收一个函数,而且可以利用 this
本文链接:html select美化模拟jquery插件select2.js
http://www.51xuediannao.com/js/jquery/select2.html
select2.js是一个html select美化模拟类jquery插件,但是select2.js又远非简单的模拟美化那么简单,它还具有搜索功能,多选功能(可限制选择数量),ajax方式加载数据,可以设置placeholder,
可以设置禁用状态disabled,并且设置非常简单,如:$(".js-example-disabled").prop("disabled", false);
select2.js默认值设置:$("#select2").val("1").trigger("change"); 多选的默认值可以使用$("#select2").val(["1","2"]).trigger("change"); 这样传递数组过去。
select2还有丰富的自定义事件
$("#select2").on("select2:open", function (e) { log("select2:open", e); });
$("#select2").on("select2:close", function (e) { log("select2:close", e); });
$("#select2").on("select2:select", function (e) { log("select2:select", e); });
$("#select2").on("select2:unselect", function (e) { log("select2:unselect", e); });
$("#select2").on("change", function (e) { log("change"); });
更多丰富的select2用法请参考https://select2.github.io/examples.html,懒人建站也会在稍后给出实际应用中的一些例子,和一些方便调用的小花招。
select2小花招:自己定义当前选中的selected值,我们在select2的节点上给出一个<select class="test1" data-selected="2"> 看红色部分,然后我们就可以在设置选中值得时候就可以使用如下js代码,
$("#select2").val(function(){
return $(this).data("selected")
}).trigger("change");
利用val()接收一个函数,而且可以利用 this
本文链接:html select美化模拟jquery插件select2.js
http://www.51xuediannao.com/js/jquery/select2.html
hhvm在百度的smarty里渲染工作上的确有所较大提升。
Php/Js/Shell/Go jackxiang 2016-3-1 09:39
对于cpu密集型运算,PHP看来还是在性能上需要提高,解释性语音还是和编译性的c或c++不在一个层面上,hhvm用在smarty和WordPress上提升明显:
http://ju.outofmemory.cn/entry/105151
rango也写了一个博文作了一下比较,较为客观:
http://rango.swoole.com/archives/291
http://ju.outofmemory.cn/entry/105151
rango也写了一个博文作了一下比较,较为客观:
http://rango.swoole.com/archives/291