夜行者之路


  • 首页

  • 归档

  • 标签

  • 关于

Http Code 408

发表于 2018-07-20

根据rfc介绍 6.5.7. 408 Request Timeout

阅读全文 »

SSH命令实例

发表于 2018-04-17 | 分类于 Linux

连接服务器最常用命令

阅读全文 »

Golang 项目部署方案总结

发表于 2018-04-17 | 分类于 Golang

常用的 Golang web/api 项目部署方案有4种
1. nohup xxx &
2. supervisord
3. nginx proxy
4. apache proxy
可以参考beego的文档 https://beego.me/docs/deploy/

然而我们可以换一种思路,以软件的形式部署,流程如下:
1. Go打包为特定版本的rpm,版本号自增,rpm包包含打包的可执行程序、配置、service脚本
2. 推到内部yum仓库,yum仓库索引更新
3. 目标机执行 yum update xxx
4. 目标机yum update执行结束时触发Service xxx-server reload

阅读全文 »

Laravel依赖注入深入浅出

发表于 2018-03-28 | 分类于 未分类 , Laravel

我们在开始用Laravel时会大量用到依赖注入,由于框架做了很多工作,所以可以方便的依赖绑定和自动注入。
具体的写代码时参考文档的“服务容器”实例代码就能快速上手。但是依赖注入到底是什么?

依赖注入是一种设计模式。
《设计模式:可复用面向对象软件的基础》(Design Patterns: Elements of Reusable Object-Oriented Software)是软件工程领域有关软件设计的一本书,提出和总结了对于一些常见软件设计问题的标准解决方案,称为软件设计模式。该书作者为:埃里希·伽玛(Erich Gamma), Richard Helm , Ralph Johnson,John Vlissides,后以“四人帮”(Gang of Four,GoF)著称。
设计模式一般指本书中提出的3大类(创建模式、行为模式、组合模式)共23种经典的可以解决常见软件设计问题的可复用设计方案。https://www.zhihu.com/question/19558521
在2004年,Martin Fowler提出了“哪些方面的控制被反转了?”这个问题。
另外 SOLID(单一功能、开闭原则、里氏替换、接口隔离以及依赖倒置)是由罗伯特·C·马丁在2009年引入的术语,指代了面向对象编程和面向对象设计的五个基本原则。

依赖倒置原则规定:
高层次的模块不应该依赖于低层次的模块,两者都应该依赖于抽象接口。
抽象接口不应该依赖于具体实现。而具体实现则应该依赖于抽象接口。

控制反转(Inversion of Control,缩写为IoC),是面向对象编程中的一种设计原则,可以用来减低计算机代码之间的耦合度。其中最常见的方式叫做依赖注入(Dependency Injection,简称DI),还有一种方式叫“依赖查找”(Dependency Lookup)。通过控制反转,对象在被创建的时候,由一个调控系统内所有对象的外界实体,将其所依赖的对象的引用传递给它。也可以说,依赖被注入到对象中。

为了实现自动注入,在PHP中可以使用反射实现一个IoC容器,Laravel就是这么做的。

https://segmentfault.com/a/1190000002424023

阅读全文 »

PHPUnit: Exception: Serialization of "Closure" is not allowed

发表于 2018-01-08 | 分类于 未分类 , PHPUnit

用phpstorm测试laravel程序的时候发现单独执行phpunit命令可以把所有测试用例都跑一遍,而单独指定某个测试文件,某个测试方法则报错。百思不得其解。今天终于下决心查一下。

基本上是因为你的全局变量中, 包含了闭包. PHPUnit 在执行过程中会对全局变量进行序列化备份, 而PHP 自身的机制限制了序列化对闭包(Closure)的操作. 因此只要禁用序列化全局变量好了.

执行的时候加上phpunit --no-globals-backup xxx参数

或者在phpunit.xml配置文件里加上backupGlobals="false"

引用:
https://xwsoul.com/posts/1137
https://github.com/sebastianbergmann/phpunit/issues/451
https://github.com/kenjis/ci-phpunit-test/issues/90
https://stackoverflow.com/questions/33477923/phpunit-tests-from-code-gives-exception-serialization-of-closure-is-not-allow

阅读全文 »

2017年总结

发表于 2017-12-31
  • 调到web前端组,在邢岩手下做事,飞凡JS工程师,业务主要分App内H5和商户后台管理系统,,基于angular 1.5+开发了fancyUI。
  • nodejs上手,辅助前端同学搭建开发脚手架部分。
  • 在webpack打包方面,通篇阅读webpack文档和插件,优化配置参数,引入并行化组件,将webpack打包时间缩短到之前的1/5。
  • 跟帅鑫配合搭建了前端性能监控分析平台,利用现代浏览器提供的JS API采集用户访问页面的加载时间等数据,分页面在后台统计后绘制成图表展示。
  • 17年上半年,微风系统——穿云项目前期子项目之一,这个系统可以在后端收集到2000多台线上服务器的linux 操作日志、F5、路由器、交换机的操作日志。
  • 17年中旬,重新接手php项目,发现DevOps的价值,人难免出错,所以给你出错的机会,也给程序一个机会告诉你你出错了,给程序一个机会自动恢复正常。我们在程序外围增加守护进程,我们在程序内增加报警日志,在程序外围增加报警监控。
  • 学习了解DevOps知识。我们希望各种数据都能在远端通过web界面看到,于是有了kafka生产消费监控、有了redis指标监控、mysql指标监控、机器指标监控等。kibana、grafana、zabbix等。
  • 学习Go语言,在gitchat上发表话题《私有仓库搭建指南》《Go类型转换》
  • 9月,离开飞凡进入影合众。介绍引入molten,搭建了walle部署系统替换jenkins,节省大量部署时间,原来一个项目部署要花10分钟,现在只用20秒。
  • 在项目上将原来在php5.3运行的扩展升级到支持php5.6并且做好了编译脚本和文档,这样以后升级更高版本的php也做好了准备,发表了《php内存泄露治理》gitchat
  • 年底正在撰写gitchat《TDD开发:gitlab、jenkins、sonar碰撞火花》,免费发布。
  • 分享inception - mysql审计及秒及回滚的解决方案,从源码解析 mysql binlog2sql 回滚方案原理。
阅读全文 »

省市县数据在程序中如何管理

发表于 2017-12-29 | 分类于 未分类

我们开发时可能会遇到需要存储xx数据对应的省市县信息,这个时候大家会考虑地名会改名,所以需要有一个映射表,通过id来对应一个地名,比如1山东 2山东济南 3山东济南xx区,然后还会考虑由于行政区划变更导致A地之前属于山东省,更新后属于江苏省,那么还需要记录地方的上级信息,只考虑三级数据那么可以用三个字段存,考虑多级可以用parentId一个字段来存。

实际上我们应该以国家统计局发布的数据为准,他足够权威数据精准,更新频度不高,且id设计合理

http://www.stats.gov.cn/tjsj/tjbz/xzqhdm/201703/t20170310_1471429.html

6位编码如110105 表示北京市(市辖区)朝阳区每两位数为一级,前两位11表示北京市(省级),中间两位01表示北京市(市级),后两位05表示区县(县级)

整理出id、name的表后如果有数据变更只需全量更新即可。除此之外还可以自定义省市简写、简称等功能以便满足实际业务需求。

阅读全文 »

devOps 组合

发表于 2017-11-21 | 分类于 WEB技术

最近在忙devOps相关的工作。

主要围绕:
1:walle 代码快速部署及回滚系统
2:inception Mysql数据库SQL审核、自动生成回滚SQL、自动执行上线、一键回滚等功能
3:sonar 代码静态分析
4:wrench 业务辅助工具:快速生成配置工具、快速查看实际价格生成原因工具等
5:jenkins 自动化测试、语法检查等

有工具,业务开发效率提高,大家工作更有动力,这些工作就有他的价值。

阅读全文 »

web开发常用程序安装提速指南

发表于 2017-05-15 | 分类于 未分类

一、常用的通用方案我们再过一遍,VPN、HTTP/HTTPS代理、Socks5代理、IPv6
二、做php开发离不开composer
composer本身下载是个挺蛋疼的事,我做了一个windows版本的composer安装包,linux、mac用户可以用包管理或者翻墙下载
三、mac用户必备的homebrew
第一步
cd "$(brew --repo)/Library/Taps/homebrew/homebrew-core"
git remote set-url origin git://mirrors.ustc.edu.cn/homebrew-core.git

第二步
echo 'export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.ustc.edu.cn/homebrew-bottles' >> ~/.bash_profile
source ~/.bash_profile

brew update

注意有的人用的zsh,要注意修改命令生效的文件
参考链接https://www.zhihu.com/question/31360766
四、nodejs
淘宝给我们做了一件大好事
先安装nvm然后

export NVM_NODEJS_ORG_MIRROR=https://npm.taobao.org/mirrors/node
export NVM_IOJS_ORG_MIRROR=https://npm.taobao.org/mirrors/iojs

然后想安装哪个版本的nodejs、npm随便你

nvm install 7
nvm use 7

如果装了新版本的nodejs,以前装的全局npm包可以这么迁移过来

nvm install 7 --reinstall-packages-from=6

五、npm、yarn
搞nodejs、前端js开发的同学用的最多的就是npm和yarn
全局装一个nrm
nrm use taobao
还可以直接去修改.npmrc
# .npmrc
registry=https://registry.npm.taobao.org/
disturl=https://npm.taobao.org/dist

参考链接:http://zqlu.github.io/2016/05/10/taobao-nodejs-mirror/

阅读全文 »

php资深工程师必备知识

发表于 2017-05-01 | 分类于 PHP

面试php资深工程师相信你已经在这个领域深入耕耘5年以上,有丰富的实践经验和知识深度广度。

作为一个phper,你一定对php和Mysql熟悉的不能再熟悉了,那么必考的知识点有:
php的面向对象的知识、迭代器、协程、流
mysql的引擎区别、索引相关用法、升级mysql实践、安全相关、锁

一般来说你至少还应该熟悉memcached、redis的一种
memcached的cas一致性分布式算法应该有所了解
redis的存储类型、用法、场景也应该门清,要是能把redis的二进制数据存储getbit、setbit搞明白可以加分,redis的备份机制有哪些?有没有看过源代码?

nginx或Apache的相关知识

php-fpm怎么管理php进程的?

如何优化性能?如何debug?这些开放命题就是面试官结合自己的水平给你打分了,你要是能把他忽悠住那你的水平一定比他高

就算你没了解也得知道php APC缓存、opcode cache吧,怎么实现的?

队列是干什么的?实际应用中什么时候用?
用过什么队列?kafka、NSQ、RabbitMQ还有啥?

然后再看看知识的广度

其他的数据库有没有了解运用过?MongoDB有啥特点?为啥不该用MongoDB?ElasticSearch呢?

linux相关业务场景的命令使用

基础不再赘述,算法题好好刷一刷是必须的

是否真正了解计算机原理?系统内核?编译原理?能否说明白进程、线程、协程?

阅读全文 »

2016年总结

发表于 2017-02-16 | 分类于 生活碎念

玩了php7
设计模式玩了一圈
composer玩腻了
不想写php扩展
转了nodejs
npm、yarn玩了,自己会发布包了
angular开始学
react开始学
架构设计
玩了openresty
MongoDB及mapReduce

阅读全文 »

2015年总结

发表于 2017-02-16 | 分类于 生活碎念

前6个月在windows服务器上把一整套电商团购特卖系统开发并run起来

后6个月接触了很多

restful API开发模式开发

thinkphp+smarty、lumen、yii等框架下开发

phpUnit单元测试

jenkins自动化集成测试

自动打包发布脚本编写

gerrit git workflow

大用户量、大并发下如何防止商品超卖,如何提高并发量

redis、lua相关开发

vagrant+homestead搭建php开发环境

ELK logstash抓日志、elasticsearch做日志索引、kabana做数据分析

linux常见命令使用tailf 、wc、watch

阅读全文 »

【广告】fancyUI

发表于 2017-02-16 | 分类于 前端

fancyUI是飞凡前端团队基于angularjs 1.4开发的一套前端组件库,可以为后台管理系统搭建节省大量时间,极大提升开发效率,关注核心业务功能界面开发而非页面公共头部菜单等

阅读全文 »

PHP源码学习计划1

发表于 2016-07-27 | 分类于 未分类

计划:通过3个月时间把php源码学习完毕

今晚我只看了一个库https://github.com/php/php-svn-helpers
这个库只有两个shell脚步文件
作用是我们从github迁出php代码后需要提交到svn时,把git代码库转换为对应的git-svn库

文件内容非常简单

适合初学shell、git命令的同学阅读

========
更新:我又看了一个库https://github.com/php/pecl-file_system-phdfs
这个是pecl库中的php操作hdfs(Hadoop)的扩展
目测功能单一,不会太复杂

采用的是php license 3.0

阅读全文 »

P3P之殇

发表于 2016-03-24 | 分类于 PHP

P3P:Platform for Privacy Preferences (P3P) (https://www.w3.org/P3P/)
P3P 计划是由服务端告知浏览器一系列多选项问题的答案组成的策略。

P3P规范也包含有用于请求和传输P3P策略的协议.P3P协议所基于的HTTP协议与 Web 浏览器用来与 Web服务器进行通信的 HTTP 协议相同。
不论在何时设置cookie都可以用特定的HTTP报头来传送一个可选的 P3P 简洁策略。

引自:http://www.cnblogs.com/_franky/archive/2011/03/16/1985954.html

大部分查询P3P资料的朋友都是在解决跨域ajax请求和跨域读写cookie两个事的时候偶然知道了这个名词,所以我就不多说了,直接上结论,其他的大家可以参考官方网站以及其他资料。

for IE developers
一些企业应用都是IE only,用P3P解决跨域问题可行,前提是浏览器仅限于IE7~10,做法就是在页面返回的http header中增加一行
P3P:CP=
因为IE对P3P简洁策略的支持,属于搞笑级别的.根本不看内容。(PS:再度引用上文资料)

FOR OTHERS
别看P3P了,兼容性完全不行,项目理念也有安全风险,也未作为正式标准进入http协议内容,甚至我的《松鼠·HTTP权威指南》里一句话都没提过。

对于同网站不同二级域名下解决跨域ajax请求和跨域读写cookie,想要兼容现代浏览器、移动浏览器的朋友,下面是我们整理的一套可行方案
1.设置cookie的domain为一级域名,如.ffan.com,*.ffan.com,ffan.com,此时,浏览器中cookie可以在任一二级三级域名的页面、图片、接口地址中获取到
2.使用jsonp代替json,json仅在同域名,相对路径下可以请求,否则有跨域问题,为此除了jsonp外还可以考虑在json输出前设定response http header 中Access-Control-Allow-Origin: *,不过要注意的是不能设置多次Access-Control-Allow-Origin,否则浏览器仍然不识别。
jsonp的方案所有参数均通过get方式明文传输,Access-Control-Allow-Origin方案需要小心的设置header,但支持get、post两种,可以按需选择。

阅读全文 »

image/png 和 image/x-png 有哪些区别?

发表于 2016-03-21 | 分类于 PHP

referer: http://stackoverflow.com/questions/2086374/what-is-the-difference-between-image-png-and-image-x-png
前缀 x- 是非标准的 MIME 类型 (例如:未在 IANA注册). 所以可以认为 image/x-png 是 PNG 类型未被标准化之前使用的

6.3. New Content-Transfer-Encodings

Implementors may, if necessary, define private Content-Transfer-Encoding values, but must use an x-token, which is a name prefixed by “X-”, to indicate its non-standard status, e. g., “Content-Transfer-Encoding: x-my-new-encoding”. Additional standardized Content-Transfer-Encoding values must be specified by a standards-track RFC. The requirements such specifications must meet are given in RFC 2048. As such, all content-transfer-encoding namespace except that beginning with “X-” is explicitly reserved to the IETF for future use.

—RFC 2045 — Multipurpose Internet Mail Extensions, Section 6.3
This is also documented in the PNG specification. See FalseVinylShrub's answer.

根据W3C关于PNG的标准 http://www.w3.org/TR/PNG/#A-Media-type

"image/png" 是PNG格式网络媒体类型的 MIME 类型 [RFC-2045], [RFC-2048].同时也建议支持识别 MIME 类型 "image/x-png".
所以, 如果你打算上传或是提供一个 PNG 图片, 该用'image/png'. 另外, 处理上传后文件等其他情况应该两种 MIME 类型都支持.

由于IE前些年一直在用"image/x-png"上传,所以造成了一些开发上的困扰。

阅读全文 »

一行命令解决composer下载问题

发表于 2016-02-29 | 分类于 composer

一行命令解决composer下载问题: composer config -g repositories.packagist composer https://packagist.phpcomposer.com

===
2016-3-21 更新说明(http://pkg.phpcomposer.com/)
本镜像已经依照 composer 官方的数据源安全策略完全升级并支持 https 协议!请各位同学 按照下面所示的两个方法将 http://packagist.phpcomposer.com 修改为 https://packagist.phpcomposer.com

阅读全文 »

今天我把chrome的网络设置改成了模拟2G网络

发表于 2016-02-26 | 分类于 前端

今天我把chrome的网络设置改成了模拟2G网络

今天我把chrome的网络设置改成了模拟2G网络

大家好,我是一个php web开发人员,我今天开发效率很低,因为我的chrome老提示我『正在等待可用的套接字』。

页面打开极其缓慢,这还怎么愉快的写bug,不,debug。直到我忍无可忍,我Google了一下,原来浏览器对一个网址同时最多发起6个请求链接,可以通过chrome://net-internals/#sockets 实时查看,似乎这个设置是硬性设置,无法修改,我陷入了困境。

万万没想到我最后还是解决了这个问题,我发现关了开发者工具打开速度就恢复正常了,然后仔细看了下面板的参数才想起之前把网络设置改成了模拟2G网络

阅读全文 »

mac下安装php-memcached提示configure: error: memcache support requires ZLIB. Use --with-zlib-dir= to specify prefix where ZLIB解决办法

发表于 2016-01-01 | 分类于 MACOS

 

[code language="plain"]checking for the location of zlib... configure: error: memcache supportrequires ZLIB. Use --with-zlib-dir=

to specify prefix where ZLIB [/code][code language="plain"]
brew install zlib
brew link --force zlib[/code]

默认用brew 安装zlib提示有可能会跟系统的zlib库冲突,没有吧zlib库link到系统目录
重新安装xcode,然并卵

[code language="plain"]xcode-select --installbrew install php{xx}-memcache[/code]

阅读全文 »

批量从服务器执行命令脚本

发表于 2015-12-27 | 分类于 shell

#! /bin/bash

machine_list=serverList

lineno=`cat $machine_list |wc -l`;

for((i=1; i<=lineno; i++)) {
line=`sed -n "$i p" $machine_list`;
machine=`echo $line | gawk -F" " '{ print $1 }'`;
path='/var/log/httpd/logs/lumen.log';
file=`echo $path`;
echo "INFO: "$file"@"$machine;
ssh $machine "df -h;echo ;echo";
}
exit 0;


原理就是循环一个ip列表
ssh并执行命令

阅读全文 »

优化lumen加载速度

发表于 2015-12-06 | 分类于 lumen

通过xdebug+QCachegrind分析lumen一个项目里的某一接口

分析每一个时间较长或者调用次数较多的函数
先看了下route这块用到的是nikic/fast-route 其中按照官方文档介绍,动态路由比静态路由慢,所以项目路由设计时我们添加的都是静态路由,而项目自带一个欢迎页面的动态路由。

优化方案,干掉动态路由,静态路由函数优化:找到
vendor/nikic/fast-route/src/DataGenerator/RegexBasedAbstract.php
的addStaticRoute方法
其中为了验证添加的路由是否有效,每一条记录都做了循环校验,这里其实可以在开发环境中启用,线上干掉来提速。
注释代码
/*
if (isset($this->methodToRegexToRoutesMap[$httpMethod])) {

foreach ($this->methodToRegexToRoutesMap[$httpMethod] as $route) {
if ($route->matches($routeStr)) {
throw new BadRouteException(sprintf(
'Static route "%s" is shadowed by previously defined variable route "%s" for method "%s"',
$routeStr, $route->regex, $httpMethod
));
}
}
}

*/

整个请求最重的就是mysql数据库操作了,其中prepare是pdo中做安全验证的必要组件,参考php手册

http://www.php.net/manual/de/pdo.prepare.php


http://stackoverflow.com/questions/1176352/pdo-prepared-inserts-multiple-rows-in-single-query
有说php5.6中array_push 比array_merge快很多

阅读全文 »

lumen框架做PHPUNIT测试时遇到ReflectionException: Class config does not exist

发表于 2015-12-06 | 分类于 lumen

https://github.com/laravel/framework/issues/8547
解决方法:每个test实例都重新创建应用

public function setUp()
{
parent::setUp();

$this->createApplication();

}

阅读全文 »

精简mac ox

发表于 2015-10-22 | 分类于 MACOS

忽然发现mbp的250GB硬盘只剩下20GB左右了,遂准备清理下硬盘,打开finder看一下几个常用目录右键查看简介,哪个目录的占用空间最大,先把应用程序里暗黑三给删掉了,mac下还是纯粹做开发机用的了,玩放到台机上去玩,应用程序里按文件大小排序,发现Xcode居然是个巨无霸,其他应用普遍在300MB以下,它却占了8GB,右键显示内容,进去后Contents/Developer/Platforms删掉watch、ios虚拟机的目录,反正就算开发我也会在真机上做的,删除,倾倒废纸篓,xcode尺寸直接少了5GB。应用程序最终占用了10~20GB,毕竟常用的软件还是不少。

虚拟机是我的必备装备,把多余的linux和windows虚拟机删掉,80GB 腾出来了....

阅读全文 »

homebrew缓存路径

发表于 2015-09-28 | 分类于 未分类 , MACOS

由于在终端下载速度太慢,遂考虑先通过地址下载文件后手动放到 缓存目录
$wget https://homebrew.bintray.com/bottles/mysql-5.6.26.yosemite.bottle.tar.gz
$cd /Library/Caches/Homebrew/
$mv ~/mysql-5.6.26.yosemite.bottle.tar.gz ./
$brew install mysql

done!

==> Downloading https://homebrew.bintray.com/bottles/mysql-5.6.26.yosemite.bottle.tar.gz
Already downloaded: /Library/Caches/Homebrew/mysql-5.6.26.yosemite.bottle.tar.gz
==> Pouring mysql-5.6.26.yosemite.bottle.tar.gz
==> /usr/local/Cellar/mysql/5.6.26/bin/mysql_install_db --verbose --user=zouyi --basedir=/usr/local/Cellar/mysql/5.6.26 -
==> Caveats
A "/etc/my.cnf" from another install may interfere with a Homebrew-built
server starting up correctly.

To connect:
mysql -uroot

To have launchd start mysql at login:
ln -sfv /usr/local/opt/mysql/*.plist ~/Library/LaunchAgents
Then to load mysql now:
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
Or, if you don't want/need launchctl, you can just run:
mysql.server start
==> Summary
? /usr/local/Cellar/mysql/5.6.26: 9854 files, 339M

阅读全文 »

Mac下MySql卸载方法

发表于 2015-09-28 | 分类于 未分类 , mysql , MACOS

Mac下MySql卸载方法

mac下mysql的DMG格式安装内有安装文件,却没有卸载文件……很郁闷的事。
网上搜了一下,发现给的方法原来得手动去删。
很多文章记述要删的文件不完整,后来在stackoverflow这里发现了一个遗漏的地方,所以将完整版记述在这里,以供查阅。
先停止所有mysql有关进程。

最后这条很多文章都丢了,切记切记。

 

[code language="plain"]sudo rm /usr/local/mysql sudo rm -rf /usr/local/mysql*sudo rm -rf /Library/StartupItems/MySQLCOM sudo rm -rf /Library/PreferencePanes/My*vim /etc/hostconfig and removed the line MYSQLCOM=-YES-rm -rf ~/Library/PreferencePanes/My*sudo rm -rf /Library/Receipts/mysql*sudo rm -rf /Library/Receipts/MySQL*sudo rm -rf /var/db/receipts/com.mysql.*[/code]

阅读全文 »

Incompatible implementation of send() in Client / ClientInterface (phpunit)?

发表于 2015-09-28 | 分类于 未分类 , PHP

Incompatible implementation of send() in Client / ClientInterface (phpunit)?
开发环境 lumen
在phpunit执行测试时报错

PHP Fatal error: Declaration of GuzzleHttp\Client::send() must be compatible with GuzzleHttp\ClientInterface::send(GuzzleHttp\Message\RequestInterface $request) in /Users/michael/Code/contrib/guzzle/src/Client.php on line 26

https://github.com/guzzle/guzzle/issues/1214

找到报错的解决帖

发现自己的项目版本挺新的

于是在autoload加上加载文件的文件名输出

发现加载了global 文件
框架安装的时候是全局安装的
composer update却只更新了本项目
找到global的composer。json文件,把phpunit之外的项目都删掉,global update 解决问题

阅读全文 »

linux并行执行命令方法

发表于 2015-08-28 | 分类于 shell

&

|是管道
&是并行
&&是串行

阅读全文 »

Console Wars – PHP CLI Libraries 命令行战争 - PHP的终端类库

发表于 2015-08-28 | 分类于 未分类 , PHP

http://www.sitepoint.com/console-wars-php-cli-libraries/


三大PHP终端类库

  • The Symfony console component (symfony/Console)
  • The Hoa console (hoa/console)
  • The Webmozart console (webmozart/console)

每个都zhendui不同用户类型用户喜好提供了不同的方法

  • Symfony console 测试稳定、鲁棒性好、文档丰富、能解决大部分问题 
  • Hoa console 更专业,适合做控制窗口、鼠标、指针等
  • Webmozart console 是最新的库,马上要出稳定版本了,适合那些很快变大的新项目
阅读全文 »

私有Composer代理服务器 Toran Proxy 安装使用教程(1)

发表于 2015-08-03 | 分类于 composer

这几年新的php包管理工具Composer火起来了,但是无奈被?。。。。

还好我们可以把文件同步到自己的服务器缓存起来,这样xuy组件依赖时就不用再去考虑这个问题了。

安装完toran proxy 安装jiem有个google的网址会卡住,直接暂停页面就出来了,hul这个问题

我们自己用,☑️This instance is for personal use

packagist.org是一个php组件包查询下载的站点,我们选上

缓存选项

考虑到硬盘小,还是lazy模式吧

git settings 等需要时再配置

安装

阅读全文 »

搭建自己的公开CentOS源

发表于 2015-08-02 | 分类于 未分类 , linux应用

背景:公司的网络实在是有够变态的,有层http代理,没法好好上网,装个linux做实验的时候各种软件下不了,不太懂运维,偶然想到去看局域网里的linux服务器是怎么更新的,果然挖出一个内网的yum源,顺便就想到自己搭建一套http源,从公网里定期同步更新一下,用到的时候就很爽了。

上手:

首先呢,把这个服务器扔到虚拟机里了,远程操作和扩展硬盘会比较容易一些,而且平时挂在那也不会费太多资源。

安装了Centos 6.5

分配两个网卡(一个自动,一个对接局域网)和两块硬盘,其中一个硬盘挂载到/var

找到了国内的高校源 bit、ustc

http://mirror.bit.edu.cn/web/

http://mirrors.ustc.edu.cn/

他们都提供了rsync服务

在linux上安装rsync客户端

我把目录放在/var/www/pub下

依次创建目录层级,只同步我需要的源可以有效减少磁盘占用,不然一个源同步下来我的硬盘就报废了

rsync -avrtH rsync://mirrors.ustc.edu.cn/centos/6/ /var/www/pub/centos/6/
rsync -avrtH rsync://mirrors.ustc.edu.cn/rpmfusion/free/el/ /var/www/pub/rpmfusion/free/el/
rsync -avrtH rsync://mirrors.ustc.edu.cn/rpmfusion/nonfree/el/ /var/www/pub/rpmfusion/nonfree/el/
rsync -avrtH rsync://mirrors.ustc.edu.cn/epel/6Server/x86_64/ /var/www/pub/epel/6Server/x86_64/

同步了几天,同步完成后看了一下虚拟机的硬盘文件还不到100GB,比预想的小很多,分配磁盘时专门划出了200GB呢。

安装apache  yum install -y httpd

关闭selinux  vim /etc/selinux/config selinux=disabled

最后有个软件createrepo可以指定目录生成索引,大家自行百度就知道了

 菊子曰:专业的博客营销工具
阅读全文 »
1 2 … 4
gangmu

gangmu

曾经梦想仗剑走天涯,后来因为加班太多放弃

118 日志
16 分类
17 标签
RSS
Creative Commons
© 2018 gangmu
由 Jekyll 强力驱动
主题 - NexT.Muse