代码改变世界

随笔分类 - PHP

解读 PHP 的 P++提案

2019-08-12 19:05 by 轩脉刃, 363 阅读, 收藏, 编辑
摘要:解读 PHP 的 P++提案 周末看到一篇文章说 PHP 创始人提议将 PHP 拉出新分支,创建 P++ 语言。随后阅读了一下 Zeev Suraski 发起的这个邮件列表,大致了解了一下,这里做个解读。 Zeev Suraski 就是几周前爆出的 PHP 核心开发者从 Zend 公司离职消息里面的 阅读全文

史上最快的后台搭建框架

2019-04-10 08:05 by 轩脉刃, 3366 阅读, 收藏, 编辑
摘要:史上最快的后台搭建框架 如果你要问我说最快的后台搭建框架是什么,我会毫不犹豫的说,laravel admin(https://laravel admin.org/)。这个框架的作者是z song,应该是腾讯公司的。它的官网写着“在十分钟内构建一个功能齐全的管理后台”。没有夸张,就是这么虎。 搭建完成 阅读全文

一次composer错误使用引发的思考

2019-03-05 12:19 by 轩脉刃, 276 阅读, 收藏, 编辑
摘要:一次composer错误使用引发的思考 这个思考源自于一个事故。让我对版本依赖重新思考了一下。 事故现象 一个线上的管理后台,一个使用laravel搭建的管理后台,之前在线上跑的好好的,今天comopser install之后,出现错误信息: 事故分析 这个是个底层库,基本上,一看就知道是版本兼容问 阅读全文

PHP 编码规范

2018-05-10 20:10 by 轩脉刃, 1882 阅读, 收藏, 编辑
摘要:这是给小组制定的php编码规范 该 PHP 编码规范基本上是同 PSR 规范的。有一部分的编码规范 PSR 中是建议,此编码规范会强制要求。 此编码规范 是以 PSR 1 / PSR 2 / PSR 2扩展 为蓝本,并增加了相应的细节说明。 通则 基本编码 PHP代码必须使用 短输出标签;一定不可使 阅读全文

优雅使用 illuminate/database 包中的 Collection

2018-02-24 09:52 by 轩脉刃, 1373 阅读, 收藏, 编辑
摘要:优雅使用 illuminate/database 包中的 Collection 或许你很抵抗使用 Laravel , 但是你没有理由不喜欢使用 illuminate/database。这是一个 ORM 的类库。我个人认为,这个类库你是否用的好,其中很重要的一点就是你是否能用好 Collection 阅读全文

Composer 结合 Git 创建 “服务类库”

2018-02-23 09:42 by 轩脉刃, 302 阅读, 收藏, 编辑
摘要:Composer 结合 Git 创建 “服务类库” 我一直认为,现在的 PHP 已经进展到了工程化的领域。以前的 PHP 开发者,以快为美,速度和规模永远都是矛盾体。现在的 PHP 项目,特别是稍微大型一点的项目中,已经在逐渐演化成为需要兼顾工程化和规模化的层次了。一个代码工程化,就意味着演化为逐渐 阅读全文

工程之殇

2018-01-14 02:37 by 轩脉刃, 360 阅读, 收藏, 编辑
摘要:今天晚上的心路历程好让人泄气。 继续揣摩laravel项目中ValidationException的设计,看到里面的status,觉得好奇怪,为什么是叫status,不是直接把code设置一下呢?然后想想,好像也对,code是异常的代码,而status是http response的代码,两个不应该混 阅读全文

一种laravel特有的serviceProvider的加载方式

2018-01-08 17:04 by 轩脉刃, 1628 阅读, 收藏, 编辑
摘要:这里的laravel版本5.5。 我是使用到dingo这个包的时候,觉得很奇怪,我们一般的包使用的时候都需要加载一个serviceProvider,提供服务,dingo/api这里也有ServiceProvider,但是安装的时候,并没有让我们修改config/app.php 增加写入这个servi 阅读全文

如何升级laravel5.4到laravel5.5并使用新特性?

2017-10-23 23:50 by 轩脉刃, 4907 阅读, 收藏, 编辑
摘要:如何升级laravel5.4到laravel5.5并使用新特性? 修改composer.json: scripts增加: 执行composer update vvv 新特性1: 扩展包自动发现 为扩展包增加了一个自动发现功能。 以barryvdh/laravel debugbar为例,先删除这个包。 阅读全文

laravel Scout包在elasticsearch中的应用

2017-04-05 15:14 by 轩脉刃, 3680 阅读, 收藏, 编辑
摘要:laravel Scout包在elasticsearch中的应用 laravel的Scout包是针对自身的Eloquent模型开发的基于驱动的全文检索引擎。意思就是我们可以像使用ORM一样使用检索功能。不管你用的是什么搜索引擎,scout包给你封装好了几个方法 你只需要创建一个引擎(比如es引擎)就 阅读全文

策略模式

2017-03-14 07:43 by 轩脉刃, 342 阅读, 收藏, 编辑
摘要:最近工作使用到设计模式,在选用设计模式的时候,发觉设计模式理解不难,难的是在某个场景下选用哪个设计模式。就是设计模式的使用场景。 策略模式 策略模式适用情况是你已经知道了某个算法。第一步做什么,第二步做什么,第三步做什么。但是具体的三步在不同场景怎么做有不同的行为。 代码举例: 策略模式属于行为型模 阅读全文

说说框架的数据库迁移功能

2017-03-07 10:20 by 轩脉刃, 1485 阅读, 收藏, 编辑
摘要:laravel中有个数据库迁移功能,migration。基本用法就是在database/migrations/的文件夹下面创建迁移数据库的类,在这个类中实现两个方法: up表示运行这个数据库迁移你要做些什么,down表示你回滚这次数据库迁移你要做些什么。 这样你就可以使用 php artisan m 阅读全文

php内核分析(八)-zend_compile

2016-12-05 10:39 by 轩脉刃, 1598 阅读, 收藏, 编辑
摘要:这里阅读的php版本为PHP 7.1.0 RC3,阅读代码的平台为linux 回到之前看的zend_eval_stringl 这里的zend_execute执行了两步,第一步是把php编译解析成为opcode的过程,我们就先看这个。 zend_compile_string zend_compile_ 阅读全文

php内核分析(七)-扩展

2016-12-01 10:16 by 轩脉刃, 1217 阅读, 收藏, 编辑
摘要:这里阅读的php版本为PHP 7.1.0 RC3,阅读代码的平台为linux。 我们研究下反射这个扩展。 反射这个扩展目录是存在在:ext/reflection。其实里面的代码很简单。一个.h文件,一个 .c文件。 我们先看下.c文件中,会看到很多ZEND_METHOD 对应的宏: 这里的 代表的是 阅读全文

php内核分析(六)-opcode

2016-11-29 10:44 by 轩脉刃, 1877 阅读, 收藏, 编辑
摘要:这里阅读的php版本为PHP 7.1.0 RC3,阅读代码的平台为linux 查看opcode php是先把源码解析成opcode,然后再把opcode传递给zend_vm进行执行的。 在php7中,我们能很方便用phpdbg来查看一个文件或者一个函数的opcode了。至于phpdbg的使用,现在网 阅读全文

php内核分析(五)-zval

2016-11-28 10:24 by 轩脉刃, 3563 阅读, 收藏, 编辑
摘要:这里阅读的php版本为PHP 7.1.0 RC3,阅读代码的平台为linux 实际上,从这个函数开始,就已经进入到了zend引擎的范围了。 实际上是调用Zend/zend_execute_API.c 再进去是调用 这里的retval_ptr为NULL,string_name为"Command lin 阅读全文

php内核分析(四)-do_cli

2016-11-25 11:47 by 轩脉刃, 879 阅读, 收藏, 编辑
摘要:这里阅读的php版本为PHP 7.1.0 RC3,阅读代码的平台为linux # main 把剩下的代码增加了下注释全部贴出来了(这个是简化后的main函数,去掉了一些无关紧要的代码段): 其实看伪码很简单: 好了,其实看了一圈,里面最重的函数是do_cli了。 php参数 do_cli里面你会看到 阅读全文

php内核分析(三)-全局变量

2016-11-24 15:17 by 轩脉刃, 792 阅读, 收藏, 编辑
摘要:这里阅读的php版本为PHP 7.1.0 RC3,阅读代码的平台为linux CG CG是从全局的compiler_global中获取属性值,里面存储的就是编译过程使用到的全局变量。 SG EG EG是从executor_globals中获取变量 阅读全文

php内核分析(二)-ZTS和zend_try

2016-11-23 10:29 by 轩脉刃, 1447 阅读, 收藏, 编辑
摘要:这里阅读的php版本为PHP 7.1.0 RC3,阅读代码的平台为linux ZTS 我们会看到文章中有很多地方是: 这里的ZTS是个什么概念呢。我们经常使用的php都是运行在单进程,单线程环境,比如cgi,都是一个请求进来,就一个进程为它服务,当请求结束了,进程也就结束了。所以比如像全局变量,ph 阅读全文

php内核分析(一)-sapi_module_struct

2016-11-21 11:56 by 轩脉刃, 1596 阅读, 收藏, 编辑
摘要:这里阅读的php版本为PHP 7.1.0 RC3,阅读代码的平台为linux 首先是寻找php的入口,php有很多种模式,apache,php fpm, cli模式,我要入手的话,只能先从最简单的cli模型开始。 那么,我需要先寻找 这个命令是如何执行的。 首先还是寻找main入口,由于我们看的是命 阅读全文

说说协同框架

2016-06-30 09:12 by 轩脉刃, 1323 阅读, 收藏, 编辑
摘要:说说协同框架 这里思考的主要是php框架。 最近思考一个点,是什么才是一个好的协同框架?这里说的框架前面的定语加了一个协同,是因为我们这个框架使用,并不是给一个人使用的,而是定位在给超过5个人的范围,大家一起协同使用。我不同意一种说法,框架并无好坏,那是因为没有把框架放到特定场景上。这里说的特定场景 阅读全文

PHP的错误机制总结

2016-03-24 10:13 by 轩脉刃, 12329 阅读, 收藏, 编辑
摘要:PHP的错误机制总结 PHP的错误机制也是非常复杂的,做了几年php,也没有仔细总结过,现在就补上这一课。 特别说明:文章的PHP版本使用5.5.32 PHP的错误级别 首先需要了解php有哪些错误。截至到php5.5,一共有 "16个错误级别" 注意:尝试下面的代码的时候请确保打开error_lo 阅读全文

fastcgi安装

2016-01-28 15:22 by 轩脉刃, 2360 阅读, 收藏, 编辑
摘要:fastcgi安装 这里及以下的web服务器都是以nginx为例子和说明,php以5.3为例子。 php fpm fastcgi在服务器上会启动多个进程进行解析,这个时候就需要一个fastcgi的管理器,管理哪个子进程可以结束,哪个进行应该开启了。 fastcgi的进程管理器有两种,spawn fc 阅读全文

fastcgi配置

2015-09-11 07:16 by 轩脉刃, 6233 阅读, 收藏, 编辑
摘要:fastcgi配置我们这里说的fastcgi配置专指nginx对fastcgi的配置,fastcgi本身的配置介绍在 "fastcgi 安装" 文中有说明。 nginx的fastcgi模块提供的命令 "fastcgi_pass" 这个命令是指定将http代理到哪个fastcgi服务端接口。fast... 阅读全文

php多进程处理

2015-07-30 10:26 by 轩脉刃, 5825 阅读, 收藏, 编辑
摘要:# php多进程处理往往我们会碰到一个情况,需要写一个脚本,这个脚本要处理的数据量极大,单进程处理脚本非常慢,那么这个时候就会想到使用多进程或者多线程的方式了。我习惯使用多进程的方式,php中使用多进程的时候需要使用pcntl,pcntl的使用可以看这个[PHP的pcntl多进程](http://w... 阅读全文

怎么让composer加速

2015-06-18 10:04 by 轩脉刃, 7239 阅读, 收藏, 编辑
摘要:# composer install 为什么这么慢?下面是一个composer install(在没有composer cache的情况下)做的所有事情: [vagrant@localhost composer]$ ../composer_git/bin/composer install -v... 阅读全文

Laravel5做权限管理

2015-05-20 10:08 by 轩脉刃, 34029 阅读, 收藏, 编辑
摘要:# 关于权限管理的思考最近用laravel设计后台,后台需要有个权限管理。权限管理实质上分为两个部分,首先是认证,然后是权限。认证部分非常好做,就是管理员登录,记录session。这个laravel中也有自带Auth来实现这个。最麻烦就是权限认证。权限认证本质上就是谁有权限管理什么东西。这里有两个方... 阅读全文

laravel5如何创建service provider和facade

2015-04-17 10:10 by 轩脉刃, 13151 阅读, 收藏, 编辑
摘要:# laravel5如何创建service provider和facadelaravel5创建一个facade,可以将某个service注册个门面,这样,使用的时候就不需要麻烦地use 了。文章用一个例子说明怎么创建service provider和 facade。# 目标我希望我创建一个AjaxR... 阅读全文

Laravel5设计json api时候的一些道道

2015-04-14 08:13 by 轩脉刃, 13823 阅读, 收藏, 编辑
摘要:# 对于返回数据格式没规整的问题在开发api的时候,这个问题是和客户端交涉最多的问题,比如一个user结构,返回的字段原本是个user_name的,它应该是string类型。但是呢,由于数据库设计这个字段的时候允许为null,那么这个字段获取回来,就可能返回null,这个对于弱类型语言是没什么问题的... 阅读全文

PHP 中的Closure

2015-04-13 09:07 by 轩脉刃, 10872 阅读, 收藏, 编辑
摘要:# PHP 中的ClosureClosure,匿名函数,又称为Anonymous functions,是php5.3的时候引入的。匿名函数就是没有定义名字的函数。这点牢牢记住就能理解匿名函数的定义了。比如下面的代码```function test() { return 100;};functi... 阅读全文

l5如何通过路由走api版本回退查找设置

2015-04-10 09:59 by 轩脉刃, 1015 阅读, 收藏, 编辑
摘要:# l5如何通过路由走api版本回退查找设置# 具体需求当前遇到的问题是使用laravel写接口,但是接口是有版本号的,我们把版本号放在url中,比如:```http://yejianfeng.com/api/user/info/?uid=1http://yejianfeng.com/api1.1/... 阅读全文

Laravel4中的Validator

2015-03-09 17:52 by 轩脉刃, 12471 阅读, 收藏, 编辑
摘要:不管写接口还是写web页面,实质都是传入参数,然后进行业务逻辑,然后再输出具体内容。所以,对参数的验证是不可避免的一个环节,比如传过来的email是不是为空,是不是合法的email格式?laravel已经为phper想到简化这种逻辑的办法了。就是Validator。## Validator的使用##... 阅读全文

laravel中的错误与日志

2014-12-19 10:09 by 轩脉刃, 44981 阅读, 收藏, 编辑
摘要:## 日志laravel中的日志是基于[monolog](https://github.com/Seldaek/monolog)而封装的。laravel在它上面做了几个事情:* 把monolog中的addInfo等函数简化成为了info这样的函数* 增加了useFiles和useDailyFiles... 阅读全文

使用laravel一分钟搭建CURD后台页面

2014-10-30 10:09 by 轩脉刃, 95105 阅读, 收藏, 编辑
摘要:配置即一切一切皆于需求,后台从0开始搭建,但是写了一两个页面后发现太多的是对单表的增删改查操作,于是就想到了,能不能做一个快速搭建的后台。想到一句话,配置即一切。如果一个CURD后台能只进行配置就自动生成,该是多么美妙的事情,那么就开始搭建这么个结构。首先配置文件应该怎么设计起初想到将配置文件放到c... 阅读全文

如何使用laravel搭建后台登录系统

2014-10-22 09:56 by 轩脉刃, 55022 阅读, 收藏, 编辑
摘要:今天想用laravel搭建一个后台系统,就需要最简单的那种,有用户登录系统,试用了下,觉得laravel的用户登录这块做的还真happy。当然,前提就是,你要的用户管理系统是最简单的那种,就是没有用户权限,能登录就好。我这里就不用默认的user表做例子了,那样很容易和laravel的一些默认设置混淆... 阅读全文

laravel吐槽系列之一

2014-10-17 18:20 by 轩脉刃, 42316 阅读, 收藏, 编辑
摘要:最近项目中经常使用到了laravel框架,对于这个框架之前只是弱弱地接触了一点,没有深入接触,这下有时间好好研究它了(主要是不得不研究了)。说实话,laravel让我打开眼界了,之前对框架的使用一直停留在yii1.X阶段。总之那句话说的对,刚接触laravel的phper就只有两个反应,一个是捡到宝... 阅读全文

大话胖model和瘦model

2014-07-30 10:09 by 轩脉刃, 3307 阅读, 收藏, 编辑
摘要:今天业务完成到一定程度,查看下代码,猛然发现目前的这个代码有点奇怪。奇怪就奇怪在我的model中有很多文件,每个文件都对应数据库中的一张表,然后每个model中有很多是几乎没有什么逻辑代码的。比如: 这个原因是什么呢,因为rdb_model这个类实现了ORM,我继承这个类才能使用ORM的那些操作。 但是这个确实让我很不爽,一个神马东西都没有的类为什么要写呢?引申出的一个问题是到底是胖... 阅读全文

Laravel学习

2014-07-08 05:49 by 轩脉刃, 32373 阅读, 收藏, 编辑
摘要:Laravel是个很强大的PHP框架,它剔除了开发中Web开发中比较痛苦的过程,提供了验证(authentication),路由(routing),Session和缓存(caching)等开发过程中常用到的工具或者功能。 Laravel的配置都存放在app/config中。 里面所有的*.php都按照return的形式返回数据,那么就可以使用Config::get("key")来获取配置。... 阅读全文

小技巧找出一个php的cron脚本出问题的代码行

2014-06-18 10:29 by 轩脉刃, 1309 阅读, 收藏, 编辑
摘要:这个小技巧虽然很小,但是很有用。我写了一个cron脚本,但是隔一天发现,这个昨天的cron脚本还一直在跑着,没有停下来,一定是里面有个程序堵住了。但是如果我重新跑又需要很多时间。这个怎么办?现在最需要就是要知道程序停在了那行代码上了。使用gdb:$sudo gdb -p 14973 (gdb) pr... 阅读全文

php的memcache和memcached扩展区别

2014-06-09 17:09 by 轩脉刃, 11892 阅读, 收藏, 编辑
摘要:老生长谈的问题了。我这里就整理一下。 memcache的文档在:http://pecl.php.net/package/memcache memcached的文档在:http://pecl.php.net/package/memcached 首先看下时间,memcache最早是在2004年2月开发的,最后更新是在2013年4月,而memcached最早是在2009年1月开发的,最后更新... 阅读全文

如何开发打点统计系统

2014-06-06 18:48 by 轩脉刃, 9062 阅读, 收藏, 编辑
摘要:最近做了一个打点统计系统,统计系统肯定各个公司都有做过,至于怎么做就不好说了。我见过最多的就是使用php开发一个打点接口,然后在打点接口中做数据点击,这种方法最差的就是每次打点都往数据库中操作,另外一种就是往一个文件中增加数据。对于后一种,我就很奇怪了,你既然php是等于要往日志文件中增加一条记录,... 阅读全文

php版本历史

2014-03-08 19:21 by 轩脉刃, 10319 阅读, 收藏, 编辑
摘要:php最初就是为了快速构建一个web页面而迅速被大家广为接受的。它的好处是在代码中能内嵌html的代码,从而让程序员能再一个页面中同时写html代码和php代码就能生成一个web页面。这篇文章用时间轴的角度来记录一下php的历史。# PHP版本历史## 1995年初PHP1.0诞生Rasmus Lerdof发明了PHP,这是简单的一套Perl脚本,用来跟踪访问者的信息。这个时候的PHP只是一个小工具而已,它的名字叫做“Personal Home Page Tool”(个人主页小工具)。## 1995年6月PHP2.0诞生Rasmus Lerdof用C语言来重新开发这个工具,取代了最初的Perl 阅读全文

php的SAPI,CLI SAPI,CGI SAPI

2013-12-19 13:45 by 轩脉刃, 6112 阅读, 收藏, 编辑
摘要:首先一个问题:在命令行下执行:php -r 'echo 12;' 控制台会打印出 12; 这个过程不是很奇妙么,我输入的是shell命令,但是执行的却是php脚本。php脚本执行完成之后的输出还能在控制台输出。 那在这个shell命令(控制台命令)和php中间一定有一种接口,能将shell的参数,代码,等转换成php,然后将php的输出转换成shell的输出。这个接口就叫做SAPI(Serv... 阅读全文

css知识

2013-12-16 14:01 by 轩脉刃, 720 阅读, 收藏, 编辑
摘要:margin和padding是什么意思 margin外边距,padding内边距,外边距表示一个元素的边到相邻元素的距离,内边距表示元素之间的内容和元素边框的距离。 font:12px/1.5 表示什么意思? 其中12px/1.5表示:文字大小12像素,行高1.5倍,也就是150% margin怎么设置 可以参考:http://www.w3school.com.cn/css/pr_mar... 阅读全文

sublime 插件zen coding

2013-12-15 09:16 by 轩脉刃, 495 阅读, 收藏, 编辑
摘要:sublime的插件Zen Coding是一个编写html的神器,现在已经更名为Emmet了。 在sublime中的package需要搜索的是Emmet 相关网站: 官网 Zen Coding: 一种快速编写HTML/CSS代码的方法 具体使用学习了以后再写。。。 阅读全文

12/12工作笔记

2013-12-12 19:05 by 轩脉刃, 543 阅读, 收藏, 编辑
摘要:php5.5出现了一个很好用的函数:array_column,以前很恶心的foreach再取出某一行的代码就可以不用写了。 获取网页高度使用document.body.clientHeight,可以看下面这篇: JavaScript获取页面宽度高度大全 HTTP自身也有认证机制,但是由于和自身UI关系较大,所以没有得到推广。 Quoted-String 和Quoted-Pa... 阅读全文

阅读《深入理解JavaScript定时机制》

2013-12-11 17:40 by 轩脉刃, 993 阅读, 收藏, 编辑
摘要:鸟哥的这篇《深入理解JavaScript定时机制》从javascript线程角度分析了setTimeout和setInterval两个定时触发器的实现原理。 看完的体验就是主要要记住两点: javascript的引擎是单线程的 javascript的引擎是基于事件驱动的 setTimeout和setInterval都是往事件队列中增加一个待处理事件而已。setTimeout是触发一次,而s... 阅读全文

继续谈论XSS

2013-12-09 18:57 by 轩脉刃, 799 阅读, 收藏, 编辑
摘要:这篇文章基于上篇谈论XSS ,想说下自己工作过程中遇到的xss的问题。 易出现XSS的场景 1 jsonp 说说jsonp 中也有说过,jsonp其实是很容易出现安全问题的。由于jsonp的callback是由参数指定的,而必须在response中返回,所以这里的jsonp很容易出现的就是XSS漏洞了。服务端要切记着对这个callback进行处理,比如可以使用白名单机制,或者使用过滤黑名单。... 阅读全文

支付宝快捷支付模型

2013-12-08 20:42 by 轩脉刃, 2126 阅读, 收藏, 编辑
摘要:其实题目有点大,主要讨论的是手机客户端怎么接入支付宝的快捷支付呢。 支付宝的快捷支付的相关文档可以看这个帖子:支付宝接口资料下载(2012.11.23更新) 三方主要是客户端,业务服务端,支付宝服务端的交互。 1 客户端向业务服务端提交订单,业务服务方生成一个订单号 2 客户端根据订单号生成支付宝所需要的参数,向支付宝的支付接口提交 3 支付宝的支付接口返回同步数据。 4 支付宝服务端... 阅读全文

谈论XSS

2013-12-06 19:03 by 轩脉刃, 1345 阅读, 收藏, 编辑
摘要:XSS 叫跨站脚本攻击(Cross Site Script),那么XSS原本应该叫做CSS,但是由于CSS的简称已经被连级样式表 使用了,所以就换个称谓XSS。 为什么叫做跨站脚本攻击呢? 它的意思就是在别人的网站上嵌入脚本,而这个脚本原本不是属于这个网站的。这个解释很直观吧。 怎么嵌入脚本呢? 比如这么个搜索结果页,当用户搜索test的时候,页面会显示“搜索关键词:test” 这个... 阅读全文

如何根据iframe内嵌页面调整iframe高宽续篇

2013-12-04 15:52 by 轩脉刃, 2938 阅读, 收藏, 编辑
摘要:接着昨天的工作 如何根据iframe内嵌页面调整iframe高宽 来说,按照文章中说的第二种方法实现代码如下: 实现 A.com/detail/view 页面的iframe代码如下: B.com是第三方的域名,所以要求在B.com/location/testiframe的页面增加下面的htmlA.com/deatil/iframe是A提供的动态接口,返回的数据是一段js:这段中的20px是根... 阅读全文

如何根据iframe内嵌页面调整iframe高宽

2013-12-03 22:17 by 轩脉刃, 4913 阅读, 收藏, 编辑
摘要:问题来自于工作的实例,我的一个域名A的页面,有个iframe,它可能内嵌了另一个域名B的页面,也可能内嵌域名C的页面,但是呢,B和C的页面大小是不一样的,特别是高是不一样的高,那么我如何设置iframe的height属性呢? 这个本质就是跨域设置的问题。 一种解法 B和C提供一个jsonp接口,让有iframe的页面A来调用,这个jsonp接口的目的就是告诉A,我的页面的高宽各是多少。 第... 阅读全文

yar粗略使用记录

2013-11-28 21:16 by 轩脉刃, 10373 阅读, 收藏, 编辑
摘要:yar是鸟哥(laruence)开发的一个并行的RPC框架。据说sina weibo已经在大规模使用这个框架了。今天初步使用了下,觉得还是挺爽的一个工具。什么情况适用这个工具呢?比如一般你有个微博这样的一个项目,这个项目的特点是有多个子项目组成,即有web版,手机客户端版,wap版等。一般有这么多个子项目,且项目的页面逻辑是分开的,我们自然会建立多个项目,然后分拆给不同的人负责。但是呢,这么多版本,它的功能实际都是相似的,比如必须都有个获取好友的功能,必须有个获取好友动态的接口,那么虽然这个接口的表现形式可能是不一样的,但是它的数据逻辑是一样的,如果使用MVC的分层模型来说,Controlle 阅读全文

那些有坏味道的代码

2013-11-27 19:33 by 轩脉刃, 1909 阅读, 收藏, 编辑
摘要:最近每天早上上班的第一件事情就是把昨天写的代码重构优化一下,以前没弄过,现在发现这个过程真是非常爽的。看着代码一点点变好,还是很不错的感觉。最经常遇到的一些坏味道这里列一下:嵌套太多if (!empty($data) { if (is_array($data)) { foreach($data as $item) { // Do something } return $data; }} else { return null;}这里的问题就是代码嵌套太多层了,如果foreach里面有很多东西的话更难看改成:if (empty($data) || !is_array($data)) { ... 阅读全文

2013/11/22工作随笔-缓存是放在Model层还是放在Controller层

2013-11-22 20:25 by 轩脉刃, 1837 阅读, 收藏, 编辑
摘要:web网站的典型代码框架就是MVC架构,Model层负责数据获取,Controller层负责逻辑控制,View层则负责展示。 一般数据获取是去mysql中获取数据 但是这里有个问题,我们不会每次请求都去mysql中获取,当并发量大的时候,我们希望mysql前面有层缓存做着。 这层缓存可能是redis,memcache,File等,但是这个逻辑代码是放在Controller中好还是Model中... 阅读全文

2013/11/21工作随笔-PHP开启多进程

2013-11-21 18:30 by 轩脉刃, 3264 阅读, 收藏, 编辑
摘要:今天被问到一个问题,php如何开启多进程才比较稳定。 php开启多进程执行一个操作有哪些方法: 首先想到的是使用pcntl的fork 具体可以参考之前的文章:PHP的pcntl多进程 其次想到的方法是使用linux的crontab 有个php程序,内部实现大概是 600) { break; } // ... Do SomeThing}意思是这个程序会持续10分钟,10分钟循环做这同... 阅读全文

php中mysql操作的buffer知识

2013-11-19 14:54 by 轩脉刃, 4976 阅读, 收藏, 编辑
摘要:php与mysql的连接有三种方式,mysql,mysqli,pdo。不管使用哪种方式进行连接,都有使用buffer和不使用buffer的区别。 什么叫使用buffer和不使用buffer呢? 客户端与mysql服务端进行查询操作,查询操作的时候如果获取的数据量比较大,那个这个查询结果放在哪里呢? 有两个地方可以放:客户端的缓冲区和服务端的缓冲区。 我们这里说的buffer指的是客户端的缓... 阅读全文

doctrine2到底是个什么玩意

2013-10-18 10:35 by 轩脉刃, 19252 阅读, 收藏, 编辑
摘要:之前和最近一个项目用到了Doctrine,由于是别人搭建的,自己没有很了解,最近又开始做的时候发现拙荆见肘,于是看了一下doctrine教程,本文就是加上自己理解的doctrine教程文档笔记了。Doctrine2 配置需求需要php5.3.3及以上可以使用composer安装什么是Doctrine?Doctrine是一个ORM(Object-relational mapper),提供php数据库和PHP对象的映射。他和其他的ORM一样都是为了保证持久层和逻辑层的分类而存在的。什么是EntityEntity是PHP的一个对象Entity对应的表需要有主键Entity中不能含有final属性或者 阅读全文

statpot:使用mongo+bootstrap+highcharts做统计报表

2013-09-26 09:23 by 轩脉刃, 10124 阅读, 收藏, 编辑
摘要:最近做了一个统计项目,这个统计项目大致的需求是统计接口的访问速度。客户端会调用一个接口来记录接口的访问情况,我的需求就需要分析这些数据,然后做出个统计报表。 需求实现 最初的时候想着每天把这些接口访问情况的信息存储到mysql中,然后根据这些访问情况做个分析再做报表。然后第一个问题就来了,信息包含太多字段了,如果我将每个信息解析成mysql表的一个字段,那么这个字段很长,而且还有一个致命缺陷,... 阅读全文

PHP去除BOM头的方法

2013-09-15 21:13 by 轩脉刃, 20254 阅读, 收藏, 编辑
摘要:BOM头是UTF-8来告诉编辑器:我是UTF8编码。它的编码是\xEF\xBB\xBF 但是PHP在设计之初并没有考虑到BOM头的问题,所以在编解码的时候很容易出现问题 比如今天遇到的问题,json_decode,当解码的string有BOM头的时候json_decode就解析失败,返回NULL。(为什么不自动检测并去除BOM头呢。。。小吐槽) 试了两种方式能去除掉: $res... 阅读全文

PHP如何将进程作为守护进程

2013-08-29 10:02 by 轩脉刃, 2358 阅读, 收藏, 编辑
摘要:看了这篇:http://blog.codinglabs.org/articles/write-daemon-with-php.html 对里面的posix_setsid()不解 文档解释是“Make the current process a session leader” 参考文档:http://linux.die.net/man/2/setsid 意思就是在一个进程组之间(父进程和子进... 阅读全文

说说jsonp

2013-07-29 09:32 by 轩脉刃, 3749 阅读, 收藏, 编辑
摘要:什么是jsonp jsonp充其量只能说是一种“方法”。它可以让页面从其他域中获取资料。 首先要知道的是同源策略,在javascript中使用http请求(ajax)是会受到同源策略的限制的。A网站的页面是不能在javascript中访问B网站的资源的。但是,对于这种希望A网站访问B网站的资源的需求怎么办呢?(跨域访问)。jsonp就出现了。 html中虽然说javascript... 阅读全文

PHP的pcntl多进程

2013-07-26 18:03 by 轩脉刃, 19492 阅读, 收藏, 编辑
摘要:PHP使用PCNTL系列的函数也能做到多进程处理一个事务。比如我需要从数据库中获取80w条的数据,再做一系列后续的处理,这个时候,用单进程?你可以等到明年今天了。。。所以应该使用pcntl函数了。 假设我想要启动20个进程,将1-80w的数据分成20份来做,主进程等待所有子进程都结束了才退出: $max = 800000; $workers = 20; ... 阅读全文

谈谈不换行空格

2013-07-26 09:37 by 轩脉刃, 9258 阅读, 收藏, 编辑
摘要:昨天工作中遇到了一个问题问题:php程序从数据库中取出变量$a(值为"car ws"),经过iconv转码从utf8到gb2312后,赋值给$b,结果判断语句$a == $b 竟然是false! 究其原因原来是这里的空格是不换行空格。 什么是不换行空格? 不换行空格(non-blocking space)也是一种空格,它和普通空格的区别在于在排版的时候表现不同。比如在word中,下面一段话在... 阅读全文

PHP的语言构造器

2013-07-12 23:07 by 轩脉刃, 718 阅读, 收藏, 编辑
摘要:isset和empty看起来像是函数,我们也经常把它当作函数一样使用,但是实际上,它们是语言构造器。 php中的语言构造器就相当于C中的预定义宏的意思,它属于php语言内部定义的关键词,不可以被修改,也不可以被禁用。 php中的函数就不一样了,它是函数,在执行的时候会被解析,然后传入参数计算。 所以函数的执行效率没有语言构造器高 比如我们判断一个array中是否包含一个key,使用isse... 阅读全文

nginx配置client_body_temp_path

2013-07-12 22:47 by 轩脉刃, 9131 阅读, 收藏, 编辑
摘要:http://wiki.nginx.org/HttpCoreModule 中写道: 这里的client_body_temp_path是制定post上传的$_FILES上传的文件地址 后面的level1,2,3是什么意思? 因为如果所有上传的文件都放在一个文件夹下,不仅很容易文件名冲突,并且容易导致一个文件夹特别大。 所以有必要创建子目录 这里的level1,2,3如果有值就代表存在... 阅读全文

PHP使用APC获取上传文件进度

2013-07-05 12:00 by 轩脉刃, 4441 阅读, 收藏, 编辑
摘要:今天发现使用PHP的APC也能获取上传文件的进度。这篇文章就说下如何做。 安装APC 首先安装APC的方法和其他PHP模块的方法没什么两样,网上能找出好多 phpinfo可以看到APC的默认配置有: apc.rfc1867 看apc.rfc1867这个配置项: http://cn2.php.net/manual/en/apc.configuration.php#ini.apc.rf... 阅读全文

mmap学习

2013-07-04 10:17 by 轩脉刃, 2830 阅读, 收藏, 编辑
摘要:内存页: Linux是以页为单位来管理物理内存的,一页大小一般等于4096字节。页容量越大,系统中可能存在的内存碎片就越多。 mmap将一个磁盘上的文件或者对象映射进内存。文件被映射到多个页上,如果文件的大小不是所有页的大小之和,最后一个页不被使用的空间将会清零。 当使用mmap映射文件到进程后,就可以直接操作这段虚拟地址进行文件的读写等操作,不必再调用read,write等系统调用。 采... 阅读全文

Mysql的优化一则

2013-07-02 10:51 by 轩脉刃, 1193 阅读, 收藏, 编辑
摘要:目的在于这么一个sql语句: SELECT w.* FROM wallpaper w inner join wallpaper_category_relation r ON w.wallpaper_id = r.wallpaper_id WHERE (r.category_level1_id=39 AND w.is_online = 1) ORDER BY w.online_time DES... 阅读全文

PHP 5.5 新特性

2013-07-01 10:21 by 轩脉刃, 26361 阅读, 收藏, 编辑
摘要:PHP5.5 前不久前刚刚发布,里面的新特性有什么?官方文档在这里: http://www.php.net/manual/zh/migration55.new-features.php 1 生成器 yield关键字 yield的中文文档在这里:http://php.net/manual/zh/language.generators.overview.php 查看文档,能知道yield的一个... 阅读全文

Symfony学习--HttpKernel组件

2013-05-29 17:04 by 轩脉刃, 1893 阅读, 收藏, 编辑
摘要:http://symfony.com/doc/2.1/components/http_kernel/introduction.html HttpKernel这个类提供的功能说白了就是将Request转换成Response。它使用一个流程的工作流似的方式。 整个流程图大致如下: HttpKernel最核心的是handle(); 它的工作就是将上图的Request转换成Response。 ... 阅读全文

Symfony学习--目录和入口

2013-05-16 10:09 by 轩脉刃, 5659 阅读, 收藏, 编辑
摘要:1 目录结构 根目录下有: app src vendor web app是存放应用的一些配置文件,如果有一些配置文件或者文档,应当存放在这里面。 src是存放你的项目的php代码,这里的php至少必须是5.3,因为symfony中使用了命名空间的概念。 vendor是存放第三方代码的目录,这个目录可能非常庞大,因为symfony大量使用了第三方bundle的概念,连自身都是作为一个... 阅读全文

PHP的命名空间

2013-05-14 10:06 by 轩脉刃, 38819 阅读, 收藏, 编辑
摘要:PHP的命名空间(namespace)是php5.3之后才有的。这个概念在C#中已经很早就有了,php中的namespace其实和c#的概念是一样的。 为什么php中要使用namespace? 假设如果不使用namespace,那么每个类在一个项目中的名字就必须是固定的。因为php在new的时候不管是调用autoload还是调用已加载过的类,都存在一个类名对应的文件。所以在没有namespac... 阅读全文

PHP知识点笔记

2013-05-10 11:18 by 轩脉刃, 2904 阅读, 收藏, 编辑
摘要:显示错误:PDOException could not find driver. 是表示PDO没有安装对应数据库的扩展,比如没有安装PDO_mysql http://pecl.php.net/package/PDO_MYSQL 下载源码 phpize ./configure --with-php-config=/usr/local/php/bin/php-config./make ./make i... 阅读全文

服务端开发小感

2013-03-22 09:45 by 轩脉刃, 23903 阅读, 收藏, 编辑
摘要:从事服务端开发已经有一些日子了,静下来可以想想和记录些服务端开发的想法了。服务端开发,特别是Web开发,基本上全是处理HTTP请求的处理。根据具体用途分为两种:Web页面开发和API接口开发。Web页面开发也完全可以看成是API接口开发,只是它的两个主要部分,页面和ajax请求,一个是返回html,另外一个可以返回html,也可以返回其他格式的而已。API接口开发是针对有客户端产品而言的。可能是移动设备,可能是PC应用等。应用框架应用框架一般使用的是LNMP或者LAMP,基本的框架就是前端N台Web服务机 + cgi访问PHP + php访问mysql。PHP可以看成是C写的一个大型的Web框 阅读全文

PHP执行批量mysql语句

2012-11-06 15:23 by 轩脉刃, 5202 阅读, 收藏, 编辑
摘要:当有多条mysql语句连起来需要执行,比如 $sqls= “insert table a values(1,2); insert table a values(2,3);” 需要执行的话php中可以使用的方法有三个: mysql_query pdo mysqli 三种方法当sqls语句没有问题的时候都是可以的。 但是 当sql语句是错误的时候会出现问题 第一条sql错... 阅读全文

mysql多个TimeStamp设置

2012-11-02 12:58 by 轩脉刃, 37999 阅读, 收藏, 编辑
摘要:timestamp设置默认值是Default CURRENT_TIMESTAMP timestamp设置随着表变化而自动更新是ON UPDATE CURRENT_TIMESTAMP 但是由于 一个表中至多只能有一个字段设置CURRENT_TIMESTAMP 两行设置DEFAULT CURRENT_TIMESTAMP是不行的。 还有一点要注意 CREATE TABLE `device` ( `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, `toid` INT(10) UNSIGNED NOT NULL DEFAULT ... 阅读全文

PHP的闭包

2012-10-29 14:27 by 轩脉刃, 27388 阅读, 收藏, 编辑
摘要:php的闭包(Closure)也就是匿名函数。是PHP5.3引入的。 闭包的语法很简单,需要注意的关键字就只有use,use意思是连接闭包和外界变量。 $a = function() use($b) {}闭包的几个作用:1 减少foreach的循环的代码比如手册http://php.net/manual/en/functions.anonymous.php 中的例子Cart<?php// 一个基本的购物车,包括一些已经添加的商品和每种商品的数量。// 其中有一个方法用来计算购物车中所有商品的总价格。该方法使用了一个closure作为回调函数。class Cart{ const PRI.. 阅读全文

阅读杂记(RSA,PDO)

2012-10-19 16:56 by 轩脉刃, 974 阅读, 收藏, 编辑
摘要:RSA算法 RSA Key Size Selection http://www.vocal.com/cryptography/rsa-key-size-selection/ 这篇文章说的是如何选择RSA密钥的长度。RSA密钥的长度是可以选择的,RSA密钥的长度影响加密后的长度,可以加密的串长度,加密和解密的时间。 简单来说就是: 1 密钥长度和可加密的字符串长度成正比。RSA的密钥... 阅读全文

知识杂记

2012-10-16 20:38 by 轩脉刃, 1439 阅读, 收藏, 编辑
摘要:Fixing Poor MySQL Default Configuration Values http://jeremy.zawodny.com/blog/archives/011421.html 这篇是Jeremy Zawodny的一篇文章他指出了几个不好的Mysql默认配置项。 首先是max_connect_errors和connect_timeout。 mysql有这样的行为: 如果客户端连接Mysql失败,服务器就会在等候connect_timeout秒之后放弃等候,并且增加连接错误的计数器。然后,当值达到了max_connect_errors的时候,服务器会将这个客... 阅读全文

php中$_REQUEST一个注意点

2012-10-12 11:02 by 轩脉刃, 5495 阅读, 收藏, 编辑
摘要:问题 说起$_REQUEST,大家都知道的是它是$_GET和$_POST的集合。但是如果你有心的话,查一下文档,会看到: $_REQUEST An associative array that by default contains the contents of $_GET, $_POST and $_COOKIE. 这里说$_REQUEST默认是$_GET, $_POST, $_COO... 阅读全文

mysql分区

2012-10-11 10:04 by 轩脉刃, 5330 阅读, 收藏, 编辑
摘要:mysql的分区概念 在mysql 5.1.3之后引入和partition(分区)的概念。这个是个好东东。以前遇到一个大表的时候,我们会手动将其分为几个小表(就是分表操作)。但是分表操作有几个缺点:1 麻烦,这里指的麻烦是不仅对于调用分表的sql语句的处理上,也是分表的具体操作步骤上。2 当一个表从单表变为分表的时候,上层sql逻辑也需要进行修改,而且是大范围的修改! 引入分区的概念就简... 阅读全文

记录mysql性能查询过程

2012-10-10 10:09 by 轩脉刃, 5860 阅读, 收藏, 编辑
摘要:一切源于一个实验,请看下面的例子: 表: CREATE TABLE IF NOT EXISTS `foo` (`a` int(10) unsigned NOT NULL AUTO_INCREMENT,`b` int(10) unsigned NOT NULL,`c` varchar(100) NOT NULL,PRIMARY KEY (`a`),KEY `bar` (`b`,`a`)) ENG... 阅读全文

Mysql中分页查询两个方法比较

2012-10-09 17:21 by 轩脉刃, 183357 阅读, 收藏, 编辑
摘要:mysql中分页查询有两种方式, 一种是使用COUNT(*)的方式,具体代码如下 SELECT COUNT(*) FROM foo WHERE b = 1;SELECT a FROM foo WHERE b = 1 LIMIT 100,10;另外一种是使用SQL_CALC_FOUND_ROWSSELECT SQL_CALC_FOUND_ROWS a FROM foo WHERE b = 1 LIM... 阅读全文

说说PHP的autoLoad

2012-09-27 11:04 by 轩脉刃, 4407 阅读, 收藏, 编辑
摘要:php的autoload大致可以使用两种方法:__autoload和spl方法。这两种方法又各有不同的几种使用方法。 __autoload的使用方法1: 最经常使用的就是这种方法,根据类名,找出类文件,然后require_one function __autoload($class_name) { $path = str_replace('_', '/', $class_name); require $path . '.php';}// 这里会自动加载Http/File/Interface.php 文件$a = new Http_File_Int 阅读全文

PHP静态调用非静态方法

2012-09-12 22:53 by 轩脉刃, 14017 阅读, 收藏, 编辑
摘要:静态调用非静态方法!!这在java,c#中是不可想象的,也是绝对不行的。这样的错误在这些语言中会在编译阶段就被指出错误的。但是对于php这样的动态语言呢?首先这个是语法没有错误的,php –l 找不出错误来的。如果运行呢? 先看一个例子 <?phpclass myClass{ private $name = "myClass"; public function echoName(){... 阅读全文

Zend的Captcha机制

2012-08-13 18:31 by 轩脉刃, 2026 阅读, 收藏, 编辑
摘要:如何生成验证码图片?使用php的GD? ok,right。其实Zend的Captcha模块已经封装好了。这篇文章就说一下如何使用Zend的Captcha模块。 环境安装 首先Zend的Captcha需要安装GD。查看有没有安装GD需要去phpinfo()中看是否有GD模块。(注意,有可能出现php -m里面的模块有gd但phpInfo()里面的模块没有gd,这个问题是说明你的PHP和Ap... 阅读全文

Zend的MVC机制(二)

2012-08-07 13:45 by 轩脉刃, 1610 阅读, 收藏, 编辑
摘要:接着上面的一篇 把代码贴上来 $front = Zend_Controller_Front::getInstance();Zend_Layout::startMvc(array('layoutPath' => USVN_LAYOUTS_DIR));$front->setRequest(new Zend_Controller_Request_Http());$front->th... 阅读全文

Zend的MVC机制(一)

2012-08-06 11:31 by 轩脉刃, 1534 阅读, 收藏, 编辑
摘要:代码 $front = Zend_Controller_Front::getInstance();Zend_Layout::startMvc(array('layoutPath' => USVN_LAYOUTS_DIR));$front->setRequest(new USVN_Controller_Request_Http());$front->throwExceptions(tr... 阅读全文

Zend的Registry机制

2012-08-03 10:02 by 轩脉刃, 2477 阅读, 收藏, 编辑
摘要:项目过程中有很多全局变量, 需要全局存储,是否是使用全局变量来进行存储?那就弱爆了。Zend使用Registry机制(注册表)存储对象和值,是一个存储对象和值的容器。 Zend_Registry这个类就是做这个目的 代码示例 Zend_Registry::set('config', $config); Zend_Registry::get('config'); 代码分析 这两... 阅读全文

Zend的Config机制

2012-08-02 13:04 by 轩脉刃, 1461 阅读, 收藏, 编辑
摘要:Zend的Config类在Zend_Config_Ini 代码 $config = new Zend_Config_Ini("/var/www/html/usvn/config/config.ini", "general"); date_default_timezone_set($config->timezone); USVN_ConsoleUtils::setLocale($config->system->locale); === Config.ini文件内容 [general] url.base = "/usvn&quot 阅读全文

Zend的AutoLoad机制

2012-08-01 22:10 by 轩脉刃, 2065 阅读, 收藏, 编辑
摘要:在使用zend framework的时候,最先引入的一定是AutoLoad的机制,这里就想分析下Zend的AutoLoad是怎么引入的。 代码示例 set_include_path(USVN_LIB_DIR . PATH_SEPARATOR . get_include_path());require_once 'Zend/Loader/Autoloader.php';$autolo... 阅读全文

Jquery-ui draggable

2012-07-27 00:35 by 轩脉刃, 1216 阅读, 收藏, 编辑
摘要:Jquery ui的draggable插件让某个元素能被鼠标拖拽。 draggable和droppable的区别: draggable只是控制拖拽,如果你要控制拖拽和放下两个动作,你需要使用的是droppable插件 draggable有三个事件可以定义回调函数: start, stop, drag 这三个事件定义的回调函数可以有两个参数,一个是原始的浏览器定义的... 阅读全文

又见尾递归

2012-07-12 17:29 by 轩脉刃, 3248 阅读, 收藏, 编辑
摘要:这几天看到几篇关于尾递归的文章,之前对尾递归没有多大概念,所以回头研究了一下尾递归。 尾递归的概念 尾递归(Tail Recursion)的概念是递归概念的一个子集。对于普通的递归,由于必须要记住递归的调用堆栈,由此产生的耗用是难以估量的。比如下文中php小节第一个例子使用php写一个阶乘函数,就是由于递归造成了栈溢出的错误。尾递归出现的目的就是消除递归栈耗损这个缺憾的。 从代码... 阅读全文

UltraEdit高级使用技巧

2012-05-02 17:22 by 轩脉刃, 17576 阅读, 收藏, 编辑
摘要:UltraEdit是众多IDE中颇有亮点的一款,它功能强大,这里说一下它的一些很好用的功能。 列模式 很多人喜欢上UltraEdit最初就是由于它的列模式。 进入列模式: Alt + C 如何对多个行进行注释 1 进入列模式 2 选定多个行 3 增加注释符 计算列的多个数的和 1 进入列模式 2 选择统计的列 3 列 -- 列选择统计 更多列模式的操作可以参考这里 UltraEdit中的脚本 脚本只支持ASCII/ANSI files编码,UTF-8是会出错的 几个常用的命令 var str = UltraEdit.ge... 阅读全文

编码史记

2012-04-21 10:44 by 轩脉刃, 3622 阅读, 收藏, 编辑
摘要:昨天听了一个同事的编码讲座,很精彩。想起了要写这个文章分享一下各种编码是如何产生的。 字符编码的故事 字符是什么 字符是什么?就是有意义的图形,比如a,中等。在不同的国家代表不同的意思。 但是在计算机世界中只有0和1,好了,如何用0和1将这些字符表示出来呢?这就是编码存在的意义。 编码一点也不高深,就是一个计算机的01和字符ab的简单映射。 于是故事开始了... 很久很久以前,计算机世界只有美国人。美国人的文字造诣很低的,他们的所有文字就只有26个字母,甚至加上大写和小写,阿拉伯数字,计算机中的控制符(回车啥的)都不超过256个(只有127个)。于是,对于他们来说,很自然,那么计... 阅读全文

一些工作中遇到的问题分享

2012-04-19 19:21 by 轩脉刃, 1836 阅读, 收藏, 编辑
摘要:这些是在工作过程中遇到的问题 当bash命令中有warning,想消除warning怎么做? cat access.log 2> /dev/null 将系统error不返回到控制台 这里使用2> /dev/null 要分析一个很大(10G)的nginx日志,将最近5分钟的access.log进行分析,怎么做? 这里不能使用高级语言,把10G的日志读到内存中再进行处理是不合理的 使用ba... 阅读全文

Zookeeper简介

2012-04-19 18:57 by 轩脉刃, 16042 阅读, 收藏, 编辑
摘要:更多内容请查看zookeeper官网 Zookper: 一种分布式应用的协作服务 Zookper是一种分布式的,开源的,应用于分布式应用的协作服务。它提供了一些简单的操作,使得分布式应用可以基于这些接口实现诸如同步、配置维护和分集群或者命名的服务。Zookper很容易编程接入,它使用了一个和文件树结构相似的数据模型。可以使用Java或者C来进行编程接入。 众所周知,分布式的系统协作服务很难有... 阅读全文

Nginx 模块-细节详探

2012-04-01 12:36 by 轩脉刃, 9309 阅读, 收藏, 编辑
摘要:本文主要基于 http://www.codinglabs.org/html/intro-of-nginx-module-development.html 和 http://www.evanmiller.org/nginx-modules-guide.html#compiling 的学习些的 nginx模块要负责三种角色 handler:接收请求+... 阅读全文

Nginx 第三方模块-漫谈缘起

2012-03-30 10:10 by 轩脉刃, 8723 阅读, 收藏, 编辑
摘要:本文的部分内容和图片摘录于http://tengine.taobao.org/download/nginx@taobao.pdf 为什么要使用nginx模块?我个人觉得taobao这个ppt来做说明是最好不过了 从web服务器结构开始说起: 第一个模式(LAMP): 这个结构中,Apache的PHP模块将所有动态网页都使用php解析,所有逻辑结构都放在php中进行处理。 这个结... 阅读全文

如何安装nginx_lua_module模块

2012-03-27 15:01 by 轩脉刃, 35503 阅读, 收藏, 编辑
摘要:摘要: 本文记录如何安装ngx_lua模块 nginx_lua_module是由淘宝的工程师清无(王晓哲)和春来(章亦春)所开发的nginx第三方模块,它能将lua语言嵌入到nginx配置中,从而使用lua就极大增强了nginx的能力 http://wiki.nginx.org/HttpLuaModule 正文: 1 下载luajit 2.0并安装 http://luajit.o... 阅读全文

munin-因为plugin而亮

2012-03-20 16:18 by 轩脉刃, 2367 阅读, 收藏, 编辑
摘要:Munin is a networked resource monitoring tool that can help analyze resource trends and "what just happened to kill our performance?" problems. It is designed to be very plug and play. A default insta... 阅读全文

一些工作小收藏

2012-03-18 20:24 by 轩脉刃, 647 阅读, 收藏, 编辑
摘要:安装fastcgi: http://www.cyberciti.biz/faq/rhel-fedora-install-configure-nginx-php5/ 在自己的虚拟机上安装munin 如何安装http://blog.jploh.com/2007/06/14/how-to-install-munin-on-centos/ 命令:php -r 'ech... 阅读全文

干净的代码是改出来的

2012-03-15 23:56 by 轩脉刃, 6536 阅读, 收藏, 编辑
摘要:对于程序员来说,最终的也是最基本的目标就是能写出一手好的代码。随着代码量的增长,自身对什么是好的代码的认识也渐渐有了不断的调整。 1 注释真的那么重要么? 最好的注释就是代码。这句话确实是没有错误的。如果一个函数占用了一屏的版面,原因是由于各种各样的注释和解释性的 // ** 等说明文档,确实是比较恼人的。与其花过多的时间花精力在注释和说明的编写上面,不如花时间在变量名的编写上面。 ... 阅读全文

Webdis内部解析

2012-03-13 13:56 by 轩脉刃, 2336 阅读, 收藏, 编辑
摘要:Webdis是redis的http代理,源代码在:git://github.com/nicolasff/webdis.git webdis.json是配置文件 webdis.c是入口程序 其中有三个比较重要的结构:struct server { int fd; struct event ev; struct event_base *base; //libevent的event事件 stru... 阅读全文

XSS-从weibo蠕虫事件学习

2012-03-08 13:25 by 轩脉刃, 3402 阅读, 收藏, 编辑
摘要:XSS攻击:跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆。故将跨站脚本攻击缩写为XSS。XSS是一种经常出现在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提供给其它用户使用的页面中。 Xss的例子(以新浪微博的6.9的hellosamy蠕虫事件为例): sina的名人堂页面页面上存在这么个链接 <a href="http://weibo.com/pub/star/g/123">这个是xss</a> 其实在服务器端是这么写的(猜... 阅读全文

Redis持久化之大数据服务暂停问题

2012-03-06 22:40 by 轩脉刃, 8074 阅读, 收藏, 编辑
摘要:Redis持久化是有两种方式:RDB和AOF 对这两种方式的官方文档的翻译请看: http://latteye.com/2011/11/redis-persistence.html RDB就是快照存储,比如“每1个小时对redis进行快照存储”。那么, save这个参数就应该设置save 3600 1000 //前一次快照3600秒后,当有超过1000个key被改动的时候就进行一次快照更新RDB快照产生dump.rdb文件,当每到快照时间,更新文件。AOF是存储所有的写操作,分两个步骤:fsync和rewritefsync是把内存中的写操作写入aof文件中rewrite是将写操... 阅读全文

按需讲解之Supervisor

2012-03-05 15:51 by 轩脉刃, 41778 阅读, 收藏, 编辑
摘要:Supervisor是一个进程监控程序。 满足的需求是:我现在有一个进程需要每时每刻不断的跑,但是这个进程又有可能由于各种原因有可能中断。当进程中断的时候我希望能自动重新启动它,此时,我就需要使用到了Supervisor 先弄懂两个命令: supervisord : supervisor的服务器端部分,启动supervisor就是运行这个命令 supervisorctl:启动supervisor的命令行窗口。 需求:redis-server这个进程是运行redis的服务。我们要求这个服务能在意外停止后自动重启。 安装(Centos): yum install py... 阅读全文

拿什么守护你-PHP程序级守护进程的实现与优化

2012-03-04 07:42 by 轩脉刃, 3539 阅读, 收藏, 编辑
摘要:首先需要解释的是什么是守护进程。 守护进程就是在后台一直运行的进程。比如我们启动的httpd,mysqld等进程都是常驻内存内运行的程序。 针对需求进行分析: 需求:有一个常驻队列messageQueue(假设在redis内存中),这个队列会有可能有请求不定期的往队列中增加元素。同时我们要求在队列中有元素的时候,按照队列顺序将元素pop出来,并进行处理(假设这个处理只是echo ‘test’); 解决方法: 现在假设已经有了两个函数 function oPopMessageQueue(){ …} //获取队列最后一个元素; function vDealElement(... 阅读全文

一些命令小贴士

2012-03-03 08:50 by 轩脉刃, 310 阅读, 收藏, 编辑
摘要:Time php test.php 能显示这个程序的运行时间 Php -m 显示php 安装了哪些扩展 后台运行程序: nohup redis-server & Yum search zeromq 查找与zeromq匹配的程序 阅读全文

zeromq_传说中最快的消息队列

2012-03-03 08:42 by 轩脉刃, 19275 阅读, 收藏, 编辑
摘要:Zeromq的资源: Zeromq模式: http://blog.codingnow.com/2011/02/zeromq_message_patterns.html zeromq主页: http://www.zeromq.org/ Zeromq Guild: http://zguide.zeromq.org/page:all#Fixing-the-World Zerom... 阅读全文

git使用安装实战

2012-02-22 13:37 by 轩脉刃, 554 阅读, 收藏, 编辑
摘要:安装环境:Windows 1 安装msysgit 进入到http://code.google.com/p/msysgit/ 下载Git-1.7.60preview20110708.exe版本 按默认安装 2 安装TotoiseGit http://code.google.com/p/tortoisegit/downloads/list 下载 最新版本,并安装 3 设置个人信息 开始--所有程序--TotoiseGet--Setting Git--config 填写UserInfo的Name和Email 4 基本的TotoiseGit使用和Tot... 阅读全文

redis的那些事

2012-02-21 18:32 by 轩脉刃, 2856 阅读, 收藏, 编辑
摘要:持久化redis支持RDB和AOF两种持久化方式 The RDB persistence performs point-in-time snapshots of your dataset at specified intervals. RDB是一种即时快照的存储方式,定时对数据库进行snapshot RDB优点: 1 RDB对于数据备份非常容易。你可以设置1天或者30天对数据进行一次备份,这样当发生数据灾难的时候能很容易恢复 2 由于RDB对数据备份时redis只做备份操作,所以备份最大化的使用了redis的性能,同时也导致了对于大的数据集,RDB备份快于AOF RDB缺点... 阅读全文

redis搭建实战记录

2012-02-20 00:11 by 轩脉刃, 14612 阅读, 收藏, 编辑
摘要:Redis is an open source, advancedkey-value store. It is often referred to as adata structure serversince keys can containstrings,hashes,lists,setsandsorted sets. -- fromhttp://redis.io/redis是一个基于内存的高性能key-value数据库,数据都保存在内存中定期刷新到磁盘,以极高的读写效率而备受关注。他的特点是支持各种数据结构,stirng,hashes, list,set,和sorted setsclien 阅读全文

open-flash-chart + PHP + jQuery实例

2012-02-17 01:16 by 轩脉刃, 3432 阅读, 收藏, 编辑
摘要:这个文章说一下open-flash-chart和PHP和jQuery的结合使用的例子 需求UI:解释下这个需求: 1 下方是一个flash的图表 2 上方有复选框,日活跃和周活跃用户 3 右方的一周和一月的span标签选择是显示x坐标轴的时间范围,有昨天起前一周和前一月两个选择4 点击左边的复选框和右边的span标签都会更新flash统计表实现步骤:1 下载open-flash-chart 2.0 这里使用的版本是: open-flash-chart-2-Lug-Wyrm-Charmer 2 将里面的js(json.js, swfobject.js)和php-ofc-li... 阅读全文

open-flash-chart 教程例子实现

2012-02-14 18:38 by 轩脉刃, 1912 阅读, 收藏, 编辑
摘要:今天测试使用了一下open-flash-chart来制作图表1 首先明确是使用open-flash-chart 1.XX 还是 2.XX这点很重要,有一段时候就是在用2.XX的liberary在调1.XX的例子version 2的使用教程:http://teethgrinder.co.uk/open-flash-chart-2/tutorial.phpversion2下载版本是:open-flash-chart-2-Lug-Wyrm-Charmer2 走了一遍教程,附上教程的实现文章的代码有的路径有问题,稍微改一下就能对了可使用的代码:https://github.com/jianfengye 阅读全文

MySQL体系结构

2012-02-06 07:59 by 轩脉刃, 34009 阅读, 收藏, 编辑
摘要:了解MySql必须牢牢记住其体系结构图,Mysql是由SQL接口,解析器,优化器,缓存,存储引擎组成的1 Connectors指的是不同语言中与SQL的交互2 Management Serveices & Utilities: 系统管理和控制工具3 Connection Pool: 连接池。管理缓冲用户连接,线程处理等需要缓存的需求4 SQL Interface: SQL接口。接受用户的SQL命令,并且返回用户需要查询的结果。比如select from就是调用SQL Interface5 Parser: 解析器。SQL命令传递到解析器的时候会被解析器验证和解析。解析器是由Lex和YAC 阅读全文

PHP面试题集

2012-02-03 01:10 by 轩脉刃, 92278 阅读, 收藏, 编辑
摘要:汗~~做了一下网络上的php题目,不知不觉做到现在.....把答案贴出来如果有问题请欢迎补充和指正 1、用PHP打印出前一天的时间格式是2006-5-10 22:21:21(2分)$a = date("Y-m-d H:i:s", strtotime("-1 day"));print_r($a); 2、echo(),print(),print_r()的区别(3分)echo 和print不是一个函数,是一个语言结构int print(string $arg), 只有一个参数echo $arg1,$arg2; 可以输出多个参数,返回voidecho和print 阅读全文

浏览器书签插件__51cto文章转帖到开心网

2012-01-27 23:55 by 轩脉刃, 242 阅读, 收藏, 编辑
摘要:目标:将51cto中在浏览中的文章摘录作为开心网的转帖1 脚本javascript:var title = document.querySelectorAll(".font_1")[0].innerHTML;var mainContent = document.querySelectorAll(".zh_left_3_4")[0].innerHTML;var kxurl = "http://www.kaixin001.com/repaste/share.php?rurl="+ location.href + "&rt 阅读全文

PHP写UltraEdit插件脚本

2011-12-26 08:31 by 轩脉刃, 2230 阅读, 收藏, 编辑
摘要:需求:1 svn上的代码在本地(编辑器UltraEdit)有一套,在开发机(centos)上有一套,需要本地的代码修改以后上传到开发机上2 不直接在开发机上修改和使用,原因是有多个人都使用同一个开发机,为了保留本地备份思路:1 写一个脚本作为UltraEdit的插件,使得代码修改后按下制定按键就能直接将代码本地保存后上传到centos上2 本地是windows,远程是linux,文件上传工具可以使用pscp.exe,脚本语言使用PHP或者Python3 本地必须安装PHP,不需要安装数据库和apache4 在PHP中起一个进程调用pscp.exe, 解析路径等逻辑放在php中步骤:1 Ulta 阅读全文

HTML5_树(HTML5 高级程序设计)

2011-11-13 22:55 by 轩脉刃, 1861 阅读, 收藏, 编辑
摘要:使用html5的canvas实现这么一个图View Code 1<html>2<metacharset="utf-8"/>3<title>Canvastree</title>4<canvasid="tree"width="500"height="500"></canvas>5<script>6functioncreateCanopyPath(context)7{8context.beginPath();910context.move 阅读全文

开放平台_XAuth

2011-09-01 14:41 by 轩脉刃, 3366 阅读, 收藏, 编辑
摘要:xAuth XAuth也是一种OAuth的认证方法 结构和流程上看XAuth是一种oauth1.0和oauth2.0的集合者 oauth2.0的access_token接口步骤 + oauth1.0的签名方法 为什么出现XAuth? 现在需求是: 1 不希望有oauth1.0的三步复杂的认证流程,希望直接使用用户名和密码就可以完成(这对于移动设备的第三方应用非常需要) 2 不希望取得access_token之后使用https来调用接口 3 当然最总要紧的是还要保证数据的安全性 那么就有一种方法: XAuth 特别说明: 1 xauth最早是twi... 阅读全文

开放平台_OAuth2.0

2011-08-31 19:44 by 轩脉刃, 20293 阅读, 收藏, 编辑
摘要:为什么出现oauth2.0 1 oauth1.0对手机客户端,移动设备等非server第三方的支持不好。其实oauth1.0也是可以支持手机客户端,移动设备等,也有相应的流程。但是oauth1.0是将多种流程合并成了一种,而事实证明,这种合并的流程体验性非常差 2 oauth1.0的三步认证过程比较繁琐和复杂,对第三方开发者增加了极大的开发难度 3 oauth1.0的加密需求过于复杂,第三方开发者使用oauth之前需要花费精力先实现oauth1.0的加密算法 4 oauth1.0的拓展性不够好 5 oauth1.0生成的access_token要求是永久有效的,这导致的问题是网站... 阅读全文

开放平台_OAuth1.0

2011-08-30 13:35 by 轩脉刃, 7384 阅读, 收藏, 编辑
摘要:OAuth1.0简介 oauth1.0是RFC制定的标准的第三方网站/客户端的认证服务 规范文档在: http://www.ietf.org/rfc/rfc5849.txt 网站使用oauth的目的是不让第三方开发者知道和记录用户的用户名和账号信息,用户在第三方应用登录服务的时候是在客户端提供的登录页面进行登录和验证的。 国内几家大型网站都已经实现了oauth1.0,比如微博,腾讯,开心等 下面以weibo的oauth1.0实现为例说明: oauth认证分服务器端和客户端 客户端的步骤是: 1 获取未授权的Request Token 2 请求用户... 阅读全文

powershell 模拟IE行为

2011-06-08 18:02 by 轩脉刃, 3849 阅读, 收藏, 编辑
摘要:本来是想尝试使用curl模拟post向新浪发送微博,但是试了几次都没有成功。看到一些文章于是想到可以使用powershell模拟IE的动作来做。发现这样做更为简便1 可以先用IE来自动读取cookie,而不用在代码中直接设置cookie2 powershell是模拟正常用户的行为,服务器端几乎无法对这种行为进行禁止3 代码简单,容易进行修改下面是powershell的代码(运行前先手动使用IE登录微博,并让IE记录用户名和密码,记录cookie)functionNavigateIE($url){$ie=new-object-com"InternetExplorer.Applicati 阅读全文

PHP中间件--ICE

2011-06-07 18:37 by 轩脉刃, 14145 阅读, 收藏, 编辑
摘要:ICE(Internet Communications Engine)是Zeroc提供的一款高性能的中间件。使用ICE能使得php(或c++,java,python)与java,c++,.net,python等进行交互。基于ICE可以实现电信级的解决方案。 1第一个问题:为什么要使用中间件? 设想一个这样的场景:对于一个大型网站来说,往往有很多个web服务器,每个web服务器都存在很多对于数据库的操作。如果直接在php程序上直接操作数据库,那么势必要在每台web服务器都配置数据库的用户名,密码等信息,这是极度不安全的。并且如果我们要统一对数据库的操作进行管理和修改等,那么久要去每个web服务器 阅读全文

JS中的prototype

2011-06-03 14:40 by 轩脉刃, 326812 阅读, 收藏, 编辑
摘要:JS中的phototype是JS中比较难理解的一个部分本文基于下面几个知识点:1 原型法设计模式在.Net中可以使用clone()来实现原型法原型法的主要思想是,现在有1个类A,我想要创建一个类B,这个类是以A为原型的,并且能进行扩展。我们称B的原型为A。2 javascript的方法可以分为三类:... 阅读全文

使用ab进行页面的压力测试

2011-05-24 17:00 by 轩脉刃, 91581 阅读, 收藏, 编辑
摘要:ab是apache自带的一个很好用的压力测试工具,当安装完apache的时候,就可以在bin下面找到ab 1 我们可以模拟100个并发用户,对一个页面发送1000个请求 ./ab -n1000 -c100 http://vm1.jianfeng.com/a.html 其中-n代表请求数,-c代表并发数 返回结果: ##首先是apache的版本信息 This is ApacheBench, V... 阅读全文

Linux下MemCache的安装

2011-05-01 10:00 by 轩脉刃, 5438 阅读, 收藏, 编辑
摘要:今天早上尝试了下安装memcache,在这里记录一下 我的环境是中centos系统 安装的基本步骤是按照网上流传很广泛的文章来做的。 http://hi.baidu.com/%D6%B0%B3%A1%D0%C2%CA%D6%B9%FE%B9%FE/blog/item/1765f3d6c7763ad4a144dfda.html 这里主要说一下在安装过程中遇到的各种问题(在文章中有标注) Linux下... 阅读全文

从javascript的两个例子谈开

2011-04-19 15:50 by 轩脉刃, 661 阅读, 收藏, 编辑
摘要:今天是研究javascript的闭包问题,看到这么一个非常好的文章http://www.ruanyifeng.com/blog/2009/08/learning_javascript_closures.html?20110419152835文章最后留了两个题目:如果你能理解下面两段代码的运行结果,应该就算理解闭包的运行机制了。代码片段一。 var name = "The Window"; var object = { name : "My Object", getNameFunc : function(){ return function(){ retu 阅读全文

PHP中的工厂方法模式

2011-04-10 22:54 by 轩脉刃, 1445 阅读, 收藏, 编辑
摘要:PHP手册中的工厂方法•使用工厂来替换new操作 •思路:动态的根据传递的数据,新建相应的类的对象。 •<?phpclass Example{ // The parameterized factory method public static function factory($type) { if (include_once 'Drivers/' . $type . '.php') { $classname = 'Driver_' . $type; return new $classname; } else { throw new Exc 阅读全文

JQuery实现日期联动

2011-02-23 19:15 by 轩脉刃, 2480 阅读, 收藏, 编辑
摘要:实现目标:两个日期,有下拉框:<head>//导入jquery地址<script src="(Jquery地址)" language="JavaScript" type="text/javascript"></script><script type="text/javascript">//startYear发生变化function changeYear(str,isstart){ var pre = "start"; if(isstart == f 阅读全文

安装EPP的调试Zend Debugger

2010-11-27 23:56 by 轩脉刃, 8343 阅读, 收藏, 编辑
摘要:最近在工作中遇到的一个问题就是PHP程序的调试,PHP的程序可以直接在页面中显示出错误信息,但是如果是较大较复杂的程序,这种方式的开发效率就极其低下了,那么如何在IDE中可以对程序进行单步调试呢?问题:如何在Wamp下单步调试PHP程序?1, 确保机子已经安装了Wamp。假设www的目标路径为:D:\PHPProject\wamp\www(其中D:\PHPProject\wamp\是wamp的根目... 阅读全文

PHP一周学习小结

2010-11-26 18:15 by 轩脉刃, 1998 阅读, 收藏, 编辑
摘要:PHP中Session如何设置?可以把session理解成为是储存在内存中的文件,当我们记录session的时候,就意味着往文件中加入东西,当我们需要以前记录过的东西的时候就意味着从session中取出东西。session在PHP中是使用session_start()函数来启动使用变量$_SESSION[]来取出东西和设置东西如何将一个string分隔为另外一个string?使用explode(s... 阅读全文