【广告】fancyUI

fancyUI是飞凡前端团队基于angularjs 1.4开发的一套前端组件库,可以为后台管理系统搭建节省大量时间,极大提升开发效率,关注核心业务功能界面开发而非页面公共头部菜单等

PHP源码学习计划1

计划:通过3个月时间把php源码学习完毕

今晚我只看了一个库https://github.com/php/php-svn-helpers
这个库只有两个shell脚步文件
作用是我们从github迁出php代码后需要提交到svn时,把git代码库转换为对应的git-svn库

文件内容非常简单

适合初学shell、git命令的同学阅读

========
更新:我又看了一个库https://github.com/php/pecl-file_system-phdfs
这个是pecl库中的php操作hdfs(Hadoop)的扩展
目测功能单一,不会太复杂

采用的是php license 3.0

P3P之殇

P3P:Platform for Privacy Preferences (P3P) (https://www.w3.org/P3P/)
P3P 计划是由服务端告知浏览器一系列多选项问题的答案组成的策略。

P3P规范也包含有用于请求和传输P3P策略的协议.P3P协议所基于的HTTP协议与 Web 浏览器用来与 Web服务器进行通信的 HTTP 协议相同。
不论在何时设置cookie都可以用特定的HTTP报头来传送一个可选的 P3P 简洁策略。

引自:http://www.cnblogs.com/_franky/archive/2011/03/16/1985954.html

大部分查询P3P资料的朋友都是在解决跨域ajax请求和跨域读写cookie两个事的时候偶然知道了这个名词,所以我就不多说了,直接上结论,其他的大家可以参考官方网站以及其他资料。

for IE developers
一些企业应用都是IE only,用P3P解决跨域问题可行,前提是浏览器仅限于IE7~10,做法就是在页面返回的http header中增加一行
P3P:CP=
因为IE对P3P简洁策略的支持,属于搞笑级别的.根本不看内容。(PS:再度引用上文资料)

FOR OTHERS
别看P3P了,兼容性完全不行,项目理念也有安全风险,也未作为正式标准进入http协议内容,甚至我的《松鼠·HTTP权威指南》里一句话都没提过。

对于同网站不同二级域名下解决跨域ajax请求和跨域读写cookie,想要兼容现代浏览器、移动浏览器的朋友,下面是我们整理的一套可行方案
1.设置cookie的domain为一级域名,如.ffan.com,*.ffan.com,ffan.com,此时,浏览器中cookie可以在任一二级三级域名的页面、图片、接口地址中获取到
2.使用jsonp代替json,json仅在同域名,相对路径下可以请求,否则有跨域问题,为此除了jsonp外还可以考虑在json输出前设定response http header 中Access-Control-Allow-Origin: *,不过要注意的是不能设置多次Access-Control-Allow-Origin,否则浏览器仍然不识别。
jsonp的方案所有参数均通过get方式明文传输,Access-Control-Allow-Origin方案需要小心的设置header,但支持get、post两种,可以按需选择。

“image/png” 和 “image/x-png”有哪些区别?

referer: http://stackoverflow.com/questions/2086374/what-is-the-difference-between-image-png-and-image-x-png
前缀 x- 是非标准的 MIME 类型 (例如:未在 IANA注册). 所以可以认为 image/x-png 是 PNG 类型未被标准化之前使用的

6.3. New Content-Transfer-Encodings

Implementors may, if necessary, define private Content-Transfer-Encoding values, but must use an x-token, which is a name prefixed by “X-”, to indicate its non-standard status, e. g., “Content-Transfer-Encoding: x-my-new-encoding”. Additional standardized Content-Transfer-Encoding values must be specified by a standards-track RFC. The requirements such specifications must meet are given in RFC 2048. As such, all content-transfer-encoding namespace except that beginning with “X-” is explicitly reserved to the IETF for future use.

—RFC 2045 — Multipurpose Internet Mail Extensions, Section 6.3
This is also documented in the PNG specification. See FalseVinylShrub’s answer.

根据W3C关于PNG的标准 http://www.w3.org/TR/PNG/#A-Media-type

“image/png” 是PNG格式网络媒体类型的 MIME 类型 [RFC-2045], [RFC-2048].同时也建议支持识别 MIME 类型 “image/x-png”.
所以, 如果你打算上传或是提供一个 PNG 图片, 该用’image/png’. 另外, 处理上传后文件等其他情况应该两种 MIME 类型都支持.

由于IE前些年一直在用”image/x-png”上传,所以造成了一些开发上的困扰。

一行命令解决composer下载问题

一行命令解决composer下载问题: composer config -g repositories.packagist composer https://packagist.phpcomposer.com

===
2016-3-21 更新说明(http://pkg.phpcomposer.com/)
本镜像已经依照 composer 官方的数据源安全策略完全升级并支持 https 协议!请各位同学 按照下面所示的两个方法将 http://packagist.phpcomposer.com 修改为 https://packagist.phpcomposer.com

今天我把chrome的网络设置改成了模拟2G网络

今天我把chrome的网络设置改成了模拟2G网络

今天我把chrome的网络设置改成了模拟2G网络

大家好,我是一个php web开发人员,我今天开发效率很低,因为我的chrome老提示我『正在等待可用的套接字』。

页面打开极其缓慢,这还怎么愉快的写bug,不,debug。直到我忍无可忍,我Google了一下,原来浏览器对一个网址同时最多发起6个请求链接,可以通过chrome://net-internals/#sockets 实时查看,似乎这个设置是硬性设置,无法修改,我陷入了困境。

万万没想到我最后还是解决了这个问题,我发现关了开发者工具打开速度就恢复正常了,然后仔细看了下面板的参数才想起之前把网络设置改成了模拟2G网络

mac下安装php-memcached提示configure: error: memcache support requires ZLIB. Use –with-zlib-dir= to specify prefix where ZLIB解决办法

 

checking for the location of zlib... configure: error: memcache supportrequires ZLIB. Use --with-zlib-dir= to specify prefix where ZLIB 


brew install zlib 
brew link --force zlib

默认用brew 安装zlib提示有可能会跟系统的zlib库冲突,没有吧zlib库link到系统目录
重新安装xcode,然并卵

xcode-select --installbrew install php{xx}-memcache

批量从服务器执行命令脚本

#! /bin/bash

machine_list=serverList

lineno=`cat $machine_list |wc -l`;

for((i=1; i<=lineno; i++)) {
line=`sed -n “$i p” $machine_list`;
machine=`echo $line | gawk -F” ” ‘{ print $1 }’`;
path=’/var/log/httpd/logs/lumen.log’;
file=`echo $path`;
echo “INFO: “$file”@”$machine;
ssh $machine “df -h;echo ;echo”;
}
exit 0;

原理就是循环一个ip列表
ssh并执行命令