五月
17
2017

NSQ 是个好东西

NSQ 是个不错的东东,如果有朋友在考虑做队列相关的东西,不妨考虑一下使用这个。初看的时候,觉得看着头大,但是沉下心来了解一下的话,发现真的可以省不少的事情。尤其是当今软件开发,效率很重要,在本身就有大众的,流行的模块的情况下,如果自己动手开发,浪费时间不说,还会出现很多 BUG,到时候就真的进退维谷了:东西是自己弄出来了,不一定舍得换掉;不换,可是 BUG 让人心烦…… 不过今天发这篇文章的目的不是为了教学,只是为了单纯的记录一下,免得随着时间的推移,将来需要的时候,又不好找了。毕竟不是每个重要的东西,都是需要时时放在身边的,在需要的时候,能快速找到,就行了。 OK,以下是 NSQ 相关资料: Github 地址: https://github.com/nsqio/nsq 官方网站: http://nsq.io/
四月
05
2017

意外裸辞,终于可以实施博客改版的计划了

今天一群友说我博客好久没有更新了。一开始我也没觉得有多久的,打开自己的博客翻看最后一条日志,是 2016 年 12 月的,我的妈呀,居然有四个月没有更新内容了。明明觉得没有过去多久的。 其实写博客的心一直都没断过,只不过,遇到了一点坑爹的情况。 我也没过动过什么代码的,可是不知道为啥,之前自己倒腾的 Markdown 编辑器,突然就开始抽风了。只要我在编辑器中输入中文,编辑器的光标就开始乱跳,打出来的中文也乱七八糟的,随着光标到处跳。不得不说,明明兴趣满满准备写一篇博客的心,就直接被这一盆水给浇了个透心凉。甚至是工作中遇到的很多问题,解决后本来想记录一下的,一想到抽风的编辑器,也就搁浅了。 我也想过直接修复一下这个 BUG,但是问题来了。不得不说,我的心好像有些躁动了,每次改版博客之后,随着博客的进一步使用,我心中又会对自己的博客积累不少的不满,而编辑器的 BUG,直接让我决定:来吧,再给博客动一次手术,换一次血吧。 嗯,这个想法,四个月前就有了,然而,到现在都还在进行中,尴尬。 春节前,公司的项目突然紧张了一把,所以没有机会倒腾自己的东西。春节期间更不用说了,根本没有时间摸电脑。春节后,又是项目,身边的同时感觉都没什么事情做,偏偏我的事情不少,于是我又没腾出时间。 而现在呢,难以想象,我居然待业了! 公司三月中旬突然业务调整,走了一拨人,我也被分派到新的项目组。坑爹的是,这个项目本质上就是做外包项目,这对我来说,抵触情绪有点大,个人感觉对自己的职业发展没有太大的帮助。恰好临近清明节,正好可以回家扫墓,所以我在三月底(2017年3月29日)裸辞了。 现在,我好像终于没有拖延自己的计划的机会了。趁着还没有投简历,我应该抓紧时间对自己的博客进行一番手术了吧! 先来备注一下自己的整改计划: 重新捣腾一个可以同步滚动的 Markdown 编辑器【已完成】 重新捣腾一个博客后台【进行中】 重新捣腾一个前端 UI 静态化博客地址 给博客添加一个专题功能,用于组织一系列内容连贯的博文,便于查找 增加一个可自定义的 IT 网址导航,收纳工作中有用的在线资料【可选】
十二月
21
2016

笔记019 通过 spl_autoload_register 实现自动加载

spl_autoload_register (PHP 5 >= 5.1.2, PHP 7) spl_autoload_register — 注册给定的函数作为 __autoload 的实现 语法 bool spl_autoload_register ([ callable $autoload_function [, bool $throw = true [, bool $prepend = false ]]] ) 说明 通过这个函数,可以为加载的类指定寻址方式,这样就不用大批量地 require 和 include 了。系统会自动按照指定的规则,到对应的位置下面去寻找需要实例化的类。虽然这个方法比较底层,在有框架的情况下,一般都不需要我们去做这些工作了。但是难免还是有要用的时候,比如我写这个博客的时候,我就自己需要捣腾脚本,这个时候,就绕不开了。下面的例子,就是我的脚本中要用的一个简单的自动加载的程序。 例子 spl_autoload_register(function ($class) { $rootPath = realpath(sprintf('%s/..', __DIR__)); $paths = array( 'src', ); foreach ($paths as $path) { if (is_file( $file = $rootPath . DIRECTORY_SEPARATOR . $path . DIRECTORY_SEPARATOR . $class . '.php' )) { include $file; break; } } }); 注意,匿名函数是 PHP 5.3 及以上 才可以用的,如果发现不能用,检查一下自己的 PHP 版本。我这里只是简单地指定所有的类在我的 src 文件夹下寻找,类名与文件名完全一致。
十一月
10
2016

FOSUserBundle 中四种状态标识的含义说明

Security component in Symfony2 defines 4 flags related to the user. These are: enabled, locked, expired, credentialsExpired. Once the semantics of the two last of them seems to be easy to understand (the expired flag simply means that a user has been archived and the credentialsExpired flag means that a user needs to change his password), there are some concerns about the meaning of enabled and locked flags. As Fabien Potencier, the founder of Symfony framework, claims, “this part of Symfony is a direct port of Spring Security, which was named Ageci some years ago”. There is old forum post about the original meaning of enabled and locked flags in Ageci. The following is being described: Disabled indicates an account has been administratively or automatically disabled for some reason. Usually some action is required to release it. Locked indicates an account has been automatically suspended due to invalid login attempts. Usually the passage of time or (less often) requesting manual unlocking is required to release it.
七月
27
2016

第一次半夜去挂急诊

前天临近下班的时候,突然觉得身体不对劲,起身站立的时候发现双腿有些无力!然后我居然忍者这种无力感把车开回家了! 到家后匆匆吃了晚饭,就躺床上睡了,过了一会儿想到是不是发烧了,测了一下体温:37.2度。呃,有点低烧! 好吧,我想到是低烧,就去吃了一包感冒颗粒,继续睡,想想睡一觉就好了。 再之后,悲剧就开始了: 双腿从最开始的无力转变为酸疼,然后就在床上一直不停地翻身睡不着了,最后实在受不了了,又爬起来量了一次体温,我勒个去,居然39度了。 老婆也被吓了一跳,赶紧就拉着我上医院去挂了急诊,要知道,那个时候的凌晨3点多啊。 到医院挂了号,打了一支退烧针,就滚回来了,医院急诊只退烧,然后告诉我是感冒引起的,也没给开感冒药!呃,想不通! 回到家的时候是4点,一支退烧针过后,双腿终于不疼了,体温也降到38.2度,终于算是勉强睡了一觉。 天亮以后向公司请了病假,然后就在家疯狂喝水(医生说多喝水才能退烧),然并卵啊,本以为烧应该退了,结果一量体温,我的个乖乖,又38.5度了。 我一看不行啊,趁着是白天,又赶紧在老婆的陪同下去小区旁边的诊所看了一下,诊所医生说医院只是给我退了烧,没有开感冒药,所以还是要再发烧的!然后我便悟了! 诊所医生又给我开了感冒药加退烧药,回家吃了一次,过了一段时间,体温就降到37.8度了。 晚饭过后又吃了一次,再量体温,就回到37.2度了,至此,我的心总算是放下来了。 已经好几年没有发过烧了,这一次的高烧貌似来的猛烈了些!嗯,得多锻炼身体了!
七月
21
2016

通过反射类实现对类的 protected 和 private 属性及方法的测试

在编写类(Class)的时候,部分方法及属性为了限制访问,会设置为 private 和 protected 权限,尤其是对于类属性来说,为了安全方面的原因,多数是不允许直接访问的。而在测试时,由于无法在外部直接访问,这样的设置会让测试变得很麻烦。当然,所谓的麻烦,也就是在 Hy369 知道 ReflectionObject 相关的类之前的事,因为从麻烦变得简单了,所以 Hy369 的 PHP 博客中便有了这样一篇文章。

阅读全文>>

七月
18
2016

Mysql 中数据表的 ID 增量为 2 的问题

今天偶然发现 live 数据库的数据表的所有 ID 都是以偶数形式插入的,全是2, 4, 6, 8, 10 这样的偶数类型。 而且本地数据库正常,没有这方面的问题,偏偏上线以后就是这么奇怪。 于是百度了一下,果然还看到不只是我自己遇到了这个问题。 搜索的结果来自百度知道,原本的问题是这样的: 为什么mysql表中自增长id以奇数形式增长? 我们数据库的表之前还正常。突然出现所有的表中不论手动添加内容,还是自动添加内容,自增长id都是以奇数形式生成的,就1,3,5,7,9,11,13.。。。。这样的形式自增长。请问高手如何解决啊~~谢各位了~ 还好这个问题是有答案的: 数据库的 step 被设置成 2 了 通过执行 SQL: SHOW VARIABLES LIKE 'auto_inc%'; 通过上述命令可以查看数据库的步长和偏移量。通过查询,在 live 上面 auto_increment_increment 的值为 2,auto_increment_offset 的值为 2。 auto_increment_increment 决定了增量值,auto_increment_offset 决定了偏移值,所以会出现上面提到的问题。 解决问题的 SQL: SET @auto_increment_increment = 1; SET @auto_increment_offset = 1; 问题本身没有多少难度,但是没有这方面的意识的话,颇有一种无从下手的感觉 ,所以便在自己的 PHP 博客中记录下来吧。
七月
08
2016

表达式语法

表达式语言组件使用了一种特殊的基于 `Twig` 的表达式语法。在这一章中,你可以了解到所有支持的语法。资料原文已经在PHP博客文尾附带,翻译不当止住请谅解。

阅读全文>>

六月
28
2016

笔记018 PHP中的 constant() 函数

语法 mixed constant ( string $name ) 说明 constant() 函数用于返回一个常量的值。当预先不知道常量的名称,却需要取得该常量的值的时候,该函数特别有用。 通过向 $name 参数传递常量的名称,便可获得对应常量的值。 该函数对于类常量依然适用。 返回值 返回常量的值,若常量未定义,则返回 null,但此时会产生一个 E_WARNING 级别的错误。 示例 <?php define("MAXSIZE", 100); echo MAXSIZE; echo constant("MAXSIZE"); // same thing as the previous line interface bar { const test = 'foobar!'; } class foo { const test = 'foobar!'; } $const = 'test'; var_dump(constant('bar::'. $const)); // string(7) "foobar!" var_dump(constant('foo::'. $const)); // string(7) "foobar!"
五月
23
2016

symfony 的惰性服务(Lazy Services)

Hy369 在自己的 PHP 博客中为你推荐如下内容:在某些时候,你也许需要向系统中注入一个笨重的实例(功能繁多庞大),但是这个实例你又只是偶尔才会在某些地方用到。举个例子,假如你有一个 通信管理器(NewsletterManager) ,你在其中注入了一个 mailer 邮件服务。在这个通信管理器中,只有屈指可数的一两个方法会用到这个 mailer 服务,然而不管你是否需要用到这个 mailer 服务,这个 mailer 服务总会被实例化,用于构建你的通信管理器。这个时候,为通信管理器配置一个惰性服务,就可以解决这个让人尴尬的问题了。通过惰性服务,系统会将 mailer 服务的一个代理(proxy) 注入到通信管理器中,这个代理将扮演 mailer 服务的角色,但是它不会被实例化。直到通信管理器真正需要用到 mailer 服务的时候,这个代理才会帮助实例化这个 mailer 服务。

阅读全文>>