Shanghai, China

E-mail: henter@henter.me
Wechat: henter

解决PHP报错:Unable to allocate memory for pool

之前也遇到过几次,一直懒得记,今天记录一下方便查阅。

报错信息大致为:

Unable to allocate memory for pool. in xxxfile.php on line 123

####原因:

实际上这是APC配置问题导致的,与PHP本身无关。

This error is usually related to Alternative PHP Cache (APC). 
APC is a free and open opcode cache for PHP. Its goal is to provide a free, open, and robust framework for caching and optimizing PHP intermediate code.

####解决: 修改apc.ini文件,可以通过phpinfo()查看此文件的位置。 也可以。。偷懒如下:

➜  ~  locate apc.ini
/usr/local/etc/php/5.4/conf.d/ext-apc.ini

然后
➜  ~  vim `locate apc.ini`

找到其中的

apc.shm_size=64M

64M改大一点就可以了(我机器上默认的是64M,然后我直接改为164M了。)

保存,重启php,ok了。

参考:http://www.cyberciti.biz/faq/linux-unix-php-warning-unable-to-allocate-memory-for-pool/

Git Submodule使用

今天刚打开终端,系统提示更新oh-my-zsh,但是由于我之前把这些乱七八糟的配置全部放到自己的dotfiles里面了,系统默认是更新不了的。

好吧,我偷懒了,之前弄dotfiles的时候没有用到git submodule,而是直接采取暴力。。copy文件。

今天总算花了点时间把dotfiles更新一下,顺便把oh-my-zsh作为git submodule处理。

至于什么是Git submodule,这里就不多废话了,简单一句话就是: Git Submodule可以把别人的git repo放到你目前git repo的任意位置。

所以我现在做的就是: 把oh-my-zsh这个repo,放到我的dotfiles下面的oh-my-zsh目录。仅此而已。

开始

$ cd ~/.dotfiles/
git submodule add https://github.com/robbyrussell/oh-my-zsh.git oh-my-zsh
…
… 完成后,查看status会发现

$ git status
# On branch master
# Changes to be committed:
#   (use "git reset HEAD ..." to unstage)
#
#       new file:   .gitmodules
#       new file:   oh-my-zsh

然后 $ git add . $ git commit -m ‘add submodule’ $ git push

搞定。

PS:如果是手动修改了.gitmodules文件,则需要

$ git submodule init 来告诉git你添加了submodule

最后一步,修改zshrc文件

ZSH=$HOME/.dotfiles/oh-my-zsh

搞定。

我的dotfiles https://github.com/henter/dotfiles 欢迎fork ~

里面包含了我自己用的如:

vim配置
oh-my-zsh
zshrc
鼠须管输入法
sublime主题
部分nginx配置
goagent启动文件

反正各种乱七八糟,慢慢完善。

整理Ruby相关的各种概念(rvm, gem, bundle, rake, rails等)

最近在看一个Rails项目,渐渐的接触到Ruby语言,其中有些概念之前比较混乱,模棱两可,相信也有人跟我一样,刚开始学ruby时对这些概念不太清晰,现在整理一下。

Ruby

这个就不用多说了

RVM

用于帮你安装Ruby环境,帮你管理多个Ruby环境,帮你管理你开发的每个Ruby应用使用机器上哪个Ruby环境。Ruby环境不仅仅是Ruby本身,还包括依赖的第三方Ruby插件。都由RVM管理。

Rails

这个也不用多说,著名开发框架。详细看 http://zh.wikipedia.org/wiki/Ruby_on_Rails

RubyGems

RubyGems是一个方便而强大的Ruby程序包管理器( package manager),类似RedHat的RPM.它将一个Ruby应用程序打包到一个gem里,作为一个安装单元。无需安装,最新的Ruby版本已经包含RubyGems了。

Gem

Gem是封装起来的Ruby应用程序或代码库。

注:在终端使用的gem命令,是指通过RubyGems管理Gem包。

Gemfile

定义你的应用依赖哪些第三方包,bundle根据该配置去寻找这些包。

Rake

Rake是一门构建语言,和make类似。Rake是用Ruby写的,它支持自己的DSL用来处理和维护Ruby程序。 Rails用rake扩展来完成多种不容任务,如数据库初始化、更新等。

Rake is a build language, similar in purpose to make and ant. Like make and ant it’s a Domain Specific Language, unlike those two it’s an internal DSL programmed in the Ruby language.

PS:个人感觉有点类似Symfony2中的app/console

详细 http://rake.rubyforge.org/

Rakefile

Rakefile是由Ruby编写,Rake的命令执行就是由Rakefile文件定义。 > In a gem’s context, the Rakefile is extremely useful. It can hold various tasks to help building, testing and debugging your gem, among all other things that you might find useful.

详细:http://rake.rubyforge.org/files/doc/rakefile_rdoc.html

Bundle

相当于多个RubyGems批处理运行。在配置文件gemfilel里说明你的应用依赖哪些第三方包,他自动帮你下载安装多个包,并且会下载这些包依赖的包。 > Bundler maintains a consistent environment for ruby applications. It tracks an application’s code and the rubygems it needs to run, so that an application will always have the exact gems (and versions) that it needs to run.

参考:

Fork me on GitHub