PHP

在 Mac 系统下开发 PHP 的话,使用 MAMP Pro 来搭建环境是一个不错的选择,主要还是因为方便,一口气就可以拥有 PHP + MySQL + Nginx + Apache + PostgreSQL + Memcached + Ruby + Python + Perl,可以说 Web 开发的全部组件基本都涉及到了。

所使用 MAMP Pro 已经有两年的历史了,最新升级的这个版本,配合最新的 Mac OS Sierra 版本,遇到了一个十分奇怪的问题,如果在命令行下使用 php 命令的话,每次执行命令都会特别缓慢。

Keep Reading — 388 words totally

哪怕到了最近几年,数据库被黑客完整下载的安全事件,也是层出不穷,程序员世界戏称为“脱裤”,好像光屁股一样羞耻。比如,刚过去不久的 CSDN,小米,多玩,等等事件都还历历在目。所以,程序员写代码决不能抱有侥幸心里,用户的密码,是最最隐私的东西,一定要妥善处理,一旦泄露,会给用户和服务网站都带来不可估量的损失。

决不能使用明文存储密码

Keep Reading — 1878 words totally

今天下午,我在 Yii 框架 1.x 下,写一个数据处理脚本,脚本的功能主要是把一个超过百万行的表中的两个字段,同步到一个新表中。按照一般的想法,我写了如下的代码。

因为表的总数据量超过百万,所以,这个代码片段,以 2000 行数据为一个批次,分次将数据插入到新表中。原以为顺利完成任务的,结果在 Console 环境下一执行,发现总是到了 696000 行数据的时候,脚本就自动退出了,而命令行环境基本没有报错,按照我一般的经验,这个脚本自动退出又没有报错的原因,基本就是因为内存使用超限,于是,我加了一些内存统计代码来验证这个事情。

Keep Reading — 1213 words totally

使用代理服务器收敛服务外网IP

在产品研发过程中,免不了遇到要接入外部服务的业务场景,例如:第三方支付、短信发送服务、邮件发送服务等等。这里面,不乏一些至关重要的服务,对安全要求性很高,为了便利,服务提供商,往往提出使用 IP 白名单的形式来进行辅助鉴权。若在过去,非常小的企业里,使用托管服务器作为企业的服务器的时代,这一般不在成为问题,一个是服务器本身数量很小,而且很稳定,另一方面,服务器是物理机器,其 IP 地址也相对稳定得多。

而现在,云计算作为一种价格低廉、扩展容易的形式,极大程度替换了原有的服务器托管形态的 IT 基础架构。在云计算的语境下,为了让资源能更高效利用,降低成本,云计算服务商往往采用动态分配资源,以及虚拟化技术的形式,来为企业提供服务。这就造成了哪怕是很小的企业,也有数量庞大的服务器数量(虽然它们是虚拟的),而且,因为动态分配,还可能造成服务器的 IP 并不稳定(因为,在不需要使用的时候,企业可以通过申请取消资源占用来节省开支,这样,如果再次分配,IP 地址就变化了)。

Keep Reading — 1308 words totally

无论是在以前的团队,还是在现在的团队,都有人主张抽象出所谓的Service层,他们认为Model只负责跟数据库沟通,不应该混杂过多的东西,而同样也不赞成在Controller的Action里面,做太多事情,那样不利于复用。而他们赞成的方案,就是『抽象』出一层所谓的Service层,从而实现代码的复用。

而我通过观察他们具体的实现的代码,发现,这是一个很糟糕的想法。因为很少有人能忍住诱惑不去滥用。

在PHP里面,public static function其实就是最最原始的函数式编程模式的全局函数而已。任何一个软件里,如果全局函数满天飞,肯定不是一个『抽象』优秀的系统。如果不是绝对克制,那程序员会忍不住在任何地方,调用全局函数,甚至,只要一能复用代码,就忍不住去调用一下全局函数,得到好处后,就会进一步把更多的东西变成全局函数,而最后发现,所有的业务逻辑都在全局函数里了。

Keep Reading — 749 words totally