Composer作为一个常用的php包管理工具,已经成为PHP项目包管理事实上的标准了。大部分开源的php项目,都可以从里边找到composer.json的身影。基本的知识本文就不介绍了,而是挑选一些日常开发中遇到的比较棘手又常见的几个问题予以记录。如:使用镜像、使用私库、如何使用非http项目、如何修改版本号等等。

使用镜像

使用composer的第一要素就是配置中国镜像,否则,你将一直抱怨这个产品根本没法使用,你对composer的影响就会一直处于停摆状态。

一般我们使用https://packagist.phpcomposer.com作为最经典的配置了。

composer config -g repo.packagist composer https://packagist.phpcomposer.com

阅读剩余部分

安装完Adobe After Effects CC 2018以后,发现界面是英文的,而在设置里边也找不到切换语言的地方。经历一番百度搜索以后,大都是说把Contents/Dictionaries/里边的中文目录和英文目录兑换一下。但是,换了以后依然故我,还是英文的。经过一番动手实践,终于找对地方了。

先找到AMT对应的目录。 查找路径是:前往=>电脑=>Macintosh HD,资源库=>Application Support=>Adobe=>Adobe After Effects CC 2018 => AMT ,找到application.xml文件。

阅读剩余部分

PHPUnit 是一个用PHP编程语言开发的开源软件,是一个单元测试框架。PHPUnit由Sebastian Bergmann创建,源于Kent Beck的SUnit,是xUnit家族的框架之一。

单元测试是对单独的代码对象进行测试的过程,比如对函数、类、方法进行测试。单元测试可以使用任意一段已经写好的测试代码,也可以使用一些已经存在的测试框架,比如JUnit、PHPUnit或者Cantata++,单元测试框架提供了一系列共同、有用的功能来帮助人们编写自动化的检测单元,例如检查一个实际的值是否符合我们期望的值的断言。单元测试框架经常会包含每个测试的报告,以及给出你已经覆盖到的代码覆盖率。

总之一句话,使用 phpunit 进行自动测试,会使你的代码更健壮,减少后期维护的成本,也是一种比较标准的规范,现如今流行的PHP框架都带了单元测试,如Laraval,Symfony,Yii2等,单元测试已经成了标配。

另外,单元测试用例是通过命令操控测试脚本的,而不是通过浏览器访问URL的。

这里以phpstorm为例,说明如何利用phpunit做单元测试。

阅读剩余部分

作为开发人员,日常的打包发版必不可少。作为前端人员的话,每次通过npm编译项目的时候,都得经过漫长的等待,才能守得云开月明。如果每天都需要经历这样的事情,你依然能够不为所动,只能说明,要么你很忙,要么,你真的很懒!!是时候对这样的局面做一些改动,加快打包编译发布的速度了。

阅读剩余部分

安装完virtualbox的虚拟机,一开始全部按默认设置的,往往还没有开始爽起来,就发现磁盘不够用了。怎么办?重装又得重新来过,而且太没有技术含量了。按照本文的流程,将帮助你化解这一个尴尬的境地,让virtualbox虚拟机的硬盘扩容一点都不麻烦。

阅读剩余部分

经常用git,在实际操作中有一些较难但非常使用的命令,将在本文予以累积。分为比较、整理、易用性等章节。

比较

比较关键性不同

比较两次版本的不同,如果需要忽略空格和tab,可以加上-w参数

git diff -w -- ./foo/bar.php

阅读剩余部分

kvm生成一台新机器后,并不能自动分配新的ip。本文介绍了基于php语言,结合libvirt一系列的工具,实现通过命令行对虚拟机进行克隆和自动ip分配的方案。

前置条件

克隆来源的domain里边的文件已经被删除:/etc/udev/rules.d/70-persistent-net.rules。

阅读剩余部分

在进行系统优化的时候,发现系统使用了大量的缓存,而在写入缓存的时候,需要先对内容进行序列化,读取缓存的时候,则需要进行内容的反序列化,从而保证可以写入和读取任何类型的缓存。早期,缓存量不大的时候,我们一直使用json进行序列化和反序列化,随着整体服务从IDC的物理机迁移到混合云平台的虚拟机,单台机器的cpu从原来的8核、16核降低到2核,cpu上就显得非常吃紧了,经常能从满日志里边看到序列化和反序列化时的日志。因此,优化序列化性能成为我们系统优化的一个重要环节。

经过对几种序列化函数的对比,最终我们选定了igbinary可以作为其中比较优秀的一个方案。要正式转型之前,当然要通过一些压测进行有效对比,才能做到有据可循。

阅读剩余部分