代码整洁之道
命名
函数动词
有意义
类名词
函数
短小 (20行)
只做一件事
函数参数少
不要重复
用异常作为返回值
第三放对接
你需要先确定边界问题,说白了就是系统的解耦。
单元测试
推荐的做法 DDD
类
oo五大原则:SRP、OCP、LSP、DIP、ISP。
SRP(单一权责):只做一件事
OCP(开闭原则):对变更关闭,对扩展开放
LSP(李氏替换原则):子类能够完全替换超类
DIP(依赖倒置原则):接口编程
ISP(接口隔离原则):一个接口一个角色,不要使用一个总接口
短小
注意封装性
单一权责(就是影响他的功能就一个,只有一个需求会引起类的修改)
内聚,函数尽可能都使用类变量
...
PHP ETL设计开发
由于公司需要进行系统数据同步,并且两个系统表结构差距较大,因此需要设计一个能方便转接的工具。
系统架构
主要采用常见的生产发布者模式。
一个job监听数据变动,我们使用laravel5.0,相关表通常都是会设计create_time,update_time,而这些字段,通常laravel会
自动更新,这就给我们数据同步提供基础,我们很容易使用一个任务监听一段时间的数据变动,where update_time > xxxx。
得到数据之后,你可以放入队列,方便之后job的消耗。第一步至此ok。
接下来,你需要一个配置来对数据进行转换,得到一个更新依据,如果想通用点,可以生成sql文件或者任何自定义格式的文件。
在我们转接的过程中,我们最核心的就是处理映射关系,这...
laravel学习1
预备知识
composer 就是个包管理工具,不多说,装起来
有一定的面向对象思想,依赖注入,控制反转,设计模式
学习目录
框架结构
框架运行流程
框架使用
框架二次开发
框架结构
当你安装完laravel之后(建议使用composer),使用laravel new 的命令,你就会创建一个laravel基础工程。
app — 代码目录
bootstrap — 框架启动文件
config — 配置文件目录
database — 数据库迁移和填充文件
public — 相关资源和入口文件
resources — 原始资源文件
storage — 缓存
tests — 单元测试
vendor — 相关依赖文件 laravel相关类...
jsonp使用
目的
js为了安全是禁止跨域资源请求的(同源协议),因此搞出了jsonp
前提
带有src属性的标签是可以跨域的,于是利用来加载跨域的js,js中就是你想要的跨域数据,json是js原生支持的数据格式,因此数据格式采用json
做法
动态生成js,放进src属性里,为了能够自定义对json结果的处理,允许传入一个callback函数,对结果进行包裹,服务端来实现
https://blog.csdn.net/hansexploration/article/details/80314948 的一个例子
<script type="text/javascript">
// 得到航班信息查询结果后的回调函数
var flightHandler = function(d...
ansible使用
目的
现在很多都是集群,很多操作都要复制几次,ansible可以对机器进行分组,同时操作一个组的机器
使用
ansible ssh免登录
1. ssh-keyscan ip lists>> /root/.ssh/known_hosts -- 公钥
2. ssh-keygen -t rsa -b 2048 -P '' -f /root/.ssh/id_rsa --私钥
3. /etc/ansible/hosts
192.168.56.102 ansible_ssh_pass=liuhuan
192.168.56.103 ansible_ssh_pass=liuhuan
192.168.56.104 ansible_ssh_p...
php调试工具
目的
对于某些情况,比如php进程阻塞,你可能并不知道他究竟在做啥,你就需要对他进行调试,当然你可以使用strace,看出他的系统调用,但是更具体的点的可能就没有了,比如哪个php文件,哪个方法等
php本质上是一套c写的框架,那么我们当然可以使用gdb来进行调试,gdb的使用就不过多说明,加断点,打印值,next,next …
使用
tipi里其实php内核关键的几个点需要知道,以下例子
$sudo gdb -p 14973
(gdb) print (char *)executor_globals.active_op_array->filename
$1 = 0x9853a34 "xxx"
(gdb) print (char *)executor_globals...
66 post articles, 9 pages.