Mac用户构建Linux开发环境

最近可能会从Mac暂时迁移至Linux环境进行常规软件开发,所以本周末利用空隙时间从Linux发行版本到常用软件再到开发环境的准备做了一个大致的梳理。由于我是重度Mac使用者,所以我会分大概3篇文章来说明怎么准备一个Linux系统便于Mac重度开发者迁移。 发行版的选择 在发行版的选择上,本人也有过纠结,毕竟Linux发行版众多,选出一种合适的发行版确实是一个头疼的事儿。经过慎重考虑,我从Centos、Fedora、ArchLinux、Ubuntu、LinuxMint中选择了LinuxMint。具体原因如下: LinuxMint是基于Ubuntu的发行版,在Ubuntu的基础了做了一些改变。Ubuntu的优点就是软件支持性好,生态好,这样其实LinuxMint也就可以轻松的借...
点我阅读更多...

Java泛型函数

背景 PHP的Array以方便灵活著称,再加上丰富的库函数,可以让开发者灵活的应对大部分需求。经常和数据库打交道的同学,肯定熟悉这个方法array_column array_column() 返回input数组中键值为column_key的列, 如果指定了可选参数index_key,那么input数组中的这一列的值将作为返回数组中对应值的键。 做Java后,我们也常碰到需要如此操作的场景,但并没有合适的库函数,于是本着解放劳动力的出发点,打算自己开发一个。但是由于Java是一个强类型语言,我们经常会碰到如此的类型List<T>,如下: public class UserInfo { private String userName = "codecook...
点我阅读更多...

Linux安装PHP7.x

众所周知,PHP7的性能和执行速度都有了很大的改进。恰逢最近公司的一些项目也在尝试着迁移到PHP7的环境,由于本人平时开发使用MAC和Linux,而且不愿意使用现成的批量部署工具(不是愿意重复造轮子,而是想知道到底安装了哪些东西)。所以就选择自己编译安装环境。 获取源代码 PHP源代码是开源的,我们可以在PHP的官方下载我们需要的源码包,这里我们以PHP7.1.1为例 # 下载源码 wget http://cn2.php.net/get/php-7.1.2.tar.gz/from/this/mirror # 解压 tar xvf mirror 安装依赖库 下面就列举下常用的Centos7.x和Ubuntu系的依赖安装 Centos # 包含扩展依赖的开发库 sudo yum ...
点我阅读更多...

ThinkPHP定时任务(二)

前面说了TP框架中定时任务实现,也对存在的问题和优势做了一个简单的分析。如果有兴趣看的朋友可以参看ThinkPHP定时任务(一)。这篇主要对基于传统定时任务crontab[守护进程],外加TP框架支持实现的基于TP的定时任务 动机 用过TP的朋友都知道,TP框架是一个由国人开发的很优秀且轻量的PHP Web框架。由于其丰富的文档和强大的用户群体,在国内有不错的保有量。记得之前项目之初选择框架的时候,朋友建议选择TP,给的建议就是用户群体大,便于招人。 TP在Web模式下获得除了不俗的成绩,但是在非CGI模式下,通常(CLI),缺罕有人用。究其原因,个人觉得,无外乎以下几点: 文档解释的比较少 对CLI模式本身支持的比较简单 有这样前后台执行需求的用户大多选择了lara...
点我阅读更多...

ThinkPHP定时任务(一)

后台开发的过程中,免不了和定时任务打交道。每天定时的发短信给用户,定时的计算收益、利息,固定间隔的去执行某项大型任务(不适宜同步执行)等等,等等 常用的定时任务都是基于linux中的crontab进行,不过今天我们主要做TP框架内的定时任务实现解析,分析其实现原理和缺陷。在下一部分,会介绍一个新的方案 行为扩展 细心的朋友应该知道TP框架中有一个名叫行为扩展的东西。其实简单的概括起来就是HOOK,可以实现在某个时机进行HOOK,然后注册监听(Listen),实现代码和功能的无侵入式嵌入。行为扩展在我们的项目中使用的比较多,静态资源替换、错误模板替换(这个只有经历过才知道为什么)、自动初始化,太多的地方。总体来说,由于TP暴露了很多关键点的HOOK,我们在使用的时候,只需要去监听即可,...
点我阅读更多...

PHP秘钥管理

做过PHP开发的同学们都应该有这么一个认识,PHP代码中的所有东西对开发者都是不透明的。只要有代码就可以看到所有的配置信息,但是这样会存在什么样的问题呢?前段时间也对此类问题做了些许思考,并提供了一个目前来看比较好的解决方案。 现状 目前比较常用的存储秘钥的方法,大致可分为如下几种: 密钥明文存储到在代码文件 密钥明文存储在某个隐蔽的地方 加密后存储,加密算法暴露 密钥服务器 针对以上几种方式,其实每种都不是一个完美的解决方案。将密钥明文存储到在代码文件中,是最直观,最直接的做法。相信很多项目中也还是这么做的。这样最大的缺陷就是秘钥直接暴露,完全没有隐私。密钥明文存储在某个隐蔽的地方,算是一种比较好的方法,将秘钥存在服务器上的某个地方,用部署脚本部署秘钥,但是...
点我阅读更多...