Mac下MySql卸载方法

Mac下MySql卸载方法

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

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

 

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.*

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

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 解决问题

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

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

三大PHP终端类库

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

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

搭建自己的公开CentOS源

背景:公司的网络实在是有够变态的,有层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可以指定目录生成索引,大家自行百度就知道了

大型网站架构设计学习笔记

最近买了本《大型网站系统与JAVA中间件实践》曾宪杰。
做了这么多年php,为了学习技术,还是只能找java的书籍,不得不说是php开发者的悲哀。
分布式系统基础知识
计算机的五要素CPU、内外存、输入输出设备,分布式系统要逐一对应
线程与进程的执行模式
阿姆达尔定律:多核
互不通信的多线程、共享容器协同的多线程、通过事件协同的多线程、多进程

OSI模型、TCP/IP模型
网络IO实现方式 BIO、NIO、AIO

————————

交易网站基本三部分业务功能:用户、商品、交易
APP server
|
*
APP server + DB server
|
*
APP server * N + DB server
|
*
负载均衡 + APP server *N + DB server +处理session(sitcky、同步、集中存储、cookie based
|
*
数据库读写分离,增加读库
|
*
增加搜索引擎
|
*
增加缓存(页面缓存、数据缓存)
|
*
引入分布式存储系统
|
*
专库专用、数据垂直拆分
|
*
单机数据水平拆分
|
*
应用拆分
按功能拆分
服务化
中间件

linux 下安装程序为什么需要重新编译?

linux 下安装程序为什么需要重新编译,直接使用可执行文件不行么?
这个疑问一直以来存在我的脑海中。于是今天搜索了一下。
http://www.jb51.net/article/47457.htm
这篇文章告诉我“编译主要是为了能让软件运行更快”的经验竟然不是真的。

软件需要编译安装的真实理由有如下3点:
1.软件在编译期间需要配置
2.软件需要统一安装路径
3.需要最新的版本

但我认为这些理由都不是理由啊。
1.配置模块我可以在使用过程中配置,扩展,调整
2.统一安装路径,在windows下的傻瓜安装向导里主要就是配置路径,但我没看到统一安装路径需要从头编译的道理,实际上安装完了软件我移动到另外的目录里,调整下配置文件,就希望它能继续运行
3.需要新的版本,大家一边宣称开源可以依靠社区的力量,一边却各自为政,全球linuxer重复编译的时间够造好几次人造卫星了。

于是我看到了这样的解释
http://bbs.csdn.net/topics/330116718

这是由于Linux系统的程序相互信赖造成的。比如某个程序依赖于其它一些库,而且版本也有要求,要想直接用,需要在编译时对信赖关系进行调整。./configure就是起这个作用的。

RPM包,DEB包是二进制了,也有依赖,一般情况下,二进制包只对应着特定的发行版。因为,在特定的发行版中,库之间的信赖关系是固定的。比如想把redhat5.2的rpm包安装到fedora上,就不一定成功。

初学者可以使用某个发行版,就不需要自己编译程序了。直接从官网上下载二进制的发行包就行了。有的发行版有在线安装软件的功能,比如redhat和fedora用的yum,unbuntu用的apt-get等

我深深感受到了开源界的恶意,因为商业应用的windows操作系统上开发的软件,虽然老版本的软件在新版本操作系统下不一定兼容,但是通过新出的编译工具打包编译后可以向下兼容,至少看起来是虽然windows有众多版本,但是在任一版本操作系统下的指定版本编译工具打包后的程序是可以在N个版本操作系统中兼容运行的。

当网上的开源卫士宣称全球大部分web服务器跑着linux,而我看到的是周围小公司仍然在使用略贵一些的windows虚拟主机、VPS托管网站时,我更是深有感触。

我们需要行动起来,建立起一个对社会有用的云服务网站,大V们通过网站可以节省重复在本机编译的时间,运维狗通过网站可以快速获取自己需要的可用二进制包,把工作交给云端,我们喝茶去。

一个小网站的开发上线过程是这样的:
开发 -> 更新网站
一个大型线上网站的开发上线过程是这样的:
开发 -> 提交版本库 -> 生成tag -> 线上自动化测试程序 -> 打包生成增量更新 -> 部署

不论大小网站,一个windows服务器上apache新增模块的过程是这样的:
下载指定版本php_mysql.dll -> 放到指定目录 -> 修改apache配置文件 -> 重启服务
不论大小网站,一个linux服务器上apache新增模块的过程是这样的:
下载指定版本php源码 -> phpize编译生成php_mysql.so -> 放到指定目录 -> 修改apache配置文件 -> 重启服务

那么对于不论用多久windows的人,换台机器,重复操作也是很轻松的一件事;
那么对于不论用多久linux的人,换台机器,重复操作也是很花时间的一件事。