Mac上使用Brew 进行PHP多版本管理

http://yansu.org/2014/09/26/use-old-version-of-brew-php.html

版本切换方式

通过brew安装的php可以通过brew linkbrew unlink来切换不同版本。

例如

brew list
brew unlink php56
brew link php55

大版本可以用brew list来查,如果是小版本的话只能去/usr/local/Cellar/php55看了。这个时候使用php-version可以更方便一点。

我测试的此方法不行,只能使用php-verson 进行切换。

安装php-version

php-version是一个帮助管理从brew安装的php版本切换的工具。

安装非常简单

brew install php-version

然后执行

source $(brew --prefix php-version)/php-version.sh

使用php-version

直接执行

php-version

就可以看到现有的版本,比如我自己的

$ php-version
  5.5.15
* 5.5.16
  5.5.17

然后使用以下命令切换即可

php-version 5.5.15

再看php的版本,已经切换好了。

对于从默认mac自带的版本切换到新版本很方便,如

brew install php70 #最新版本php7.0.7
php-version 7.0.7

HomeBrew中国镜像源

Mac 终端跑入即可

cd /usr/local/
git remote set-url origin http://mirrors.ustc.edu.cn/homebrew.git
#或者这个:
git remote set-url origin git://mirrors.tuna.tsinghua.edu.cn/homebrew.git
brew update

如果还是感觉慢,看看这个:https://mirrors.tuna.tsinghua.edu.cn/help/homebrew/

cd ~/tmp
git clone git://mirrors.tuna.tsinghua.edu.cn/homebrew.git
rm -rf /usr/local/.git
rm -rf /usr/local/Library
cp -R homebrew/.git /usr/local/
cp -R homebrew/Library /usr/local/

然后重试update。

使用homebrew-science或者homebrew-python

cd /usr/local/Library/Taps/homebrew/homebrew-science
git remote set-url origin git://mirrors.tuna.tsinghua.edu.cn/homebrew-science.git

cd /usr/local/Library/Taps/homebrew/homebrew-python
git remote set-url origin git://mirrors.tuna.tsinghua.edu.cn/homebrew-python.git

brew update

也可以使用coding.net提供的镜像

$ cd /usr/local && git remote set-url origin https://git.coding.net/homebrew/homebrew.git

$ brew update

ATOM编辑器快捷键大全

今天分享 futantan 在Github上总结的ATOM 快捷键,用ATOM 编辑器的开发者们,可以收藏咯。

文件切换


ctrl-shift-s 保存所有打开的文件
cmd-shift-o 打开目录
cmd-\显示或隐藏目录树
ctrl-0焦点移到目录树
目录树下,使用a,m,delete来增加,修改和删除
cmd-tcmd-p 查找文件
cmd-b 在打开的文件之间切换
cmd-shift-b 只搜索从上次git commit后修改或者新增的文件

导航


(等价于上下左右)
ctrl-p 前一行
ctrl-n 后一行
ctrl-f 前一个字符
ctrl-b 后一个字符 Continue reading

JWT介绍

JWT是什么

JWT全称是JSON Web Tokens,是RFC 7519标准,用于安全校验两方可信性的安全措施。

JWT解决了哪些问题?

JWT本身设计是用于解决Session机制不能够很好的在SPA/API类型(restful)应用中处理身份认证问题。通常API的调用是无状态(stateless)的,使用Session等形式会有上下文要求。如当用户登录完成后,可以通过下发JWT的形式进行无状态的API调用。在此之前通常是使用的方式包括不限于如Basic Auth、Oauth2或Token形式进行。

JWT相比是额外添加了签名校验方式,本质上来说对抗如暴力碰撞等形式有一些作用。但是由于本身长度的限制,存储的信息量有限。 Continue reading

[翻译]理解 GO 语言的内存使用

许多人在刚开始接触 Go 语言时,经常会有的疑惑就是“为什么一个 Hello world 会占用如此之多的内存?”。Understanding Go Lang Memory Usage 很好的解释了这个问题。不过“简介”就是“简介”,更加深入的内容恐怕要读者自己去探索了。另外,文章写到最后,作者飘了,估计引起了一些公愤,于是又自己给自己补刀,左一刀,右一刀……

————翻译分隔线————

理解 Go 语言的内存使用

2014年12月22日,星期一

温馨提示:这仅是关于 Go 语言内存的简介,俗话说不入虎穴、焉得虎子,读者可以进行更加深入的探索。

大多数 Go 开发者都会尝试像这样简单的 hello world 程序:

package main

import (
"fmt"
"time"
)

func main() {
fmt.Println("hi")

time.Sleep(30 * time.Second)
}

然后他们就完全崩溃了。

high_mem-300x38

这个笔记本也只有 16 G 内存!

虚拟内存 vs 常驻内存

Go 管理内存的方式可能与你以前使用的方式不太一样。它会在一开始就保留一大块 VIRT,而 RSS 与实际内存用量接近。

RSS 和 VIRT 之间有什么区别呢?

VIRT 或者虚拟地址空间大小是程序映射并可以访问的内存数量。

RSS 或者常驻大小是实际使用的内存数量。 Continue reading