Use strace with Docker-compose

They say, If you run SSHD in your Docker containers, you're doing it wrong. But sometime it is useful to log into Docker contain to do some checking or run some debug tools. Maybe it won't need to be SSH, Docker's exec command will suit this kind of senarios. Anyway we are trying to get into Docker containers to do something. In my case, I want to figure out what kind of external calls are maken by PHP-FPM by using strace.

Continue Reading
使用DNS服务器DNSMasq,解析127.0.0.1来简化本地Web项目开发
使用DNS服务器DNSMasq,解析127.0.0.1来简化本地Web项目开发

使用DNS服务器DNSMasq,解析127.0.0.1来简化本地Web项目开发

开发Web项目的时候,程序员通常喜欢通过修改本地的`/etc/hosts`来把项目的域名指向本机的服务器。比如 next-big-project.dev 指向 127.0.0.1 。随着项目的增加,本机的hosts文件里很快就会加入很多的项目记录。有意思的是还有人专门注册了顶级域名并把它们指向了 127.0.0.1。比如`localhost.com`!真是活雷锋啊,专门利人。当然更好的办法是能有个属于自己的DNS服务器,那就更方便了。DNSMasq正是满足了开发人员的这个需求。

Continue Reading

PHP里的md5函数与linux的md5sum命令的区别

有好几次碰到使用Linux的md5sum命令产出的散列值,跟PHP的md5函数,或者MySQL的md5函数产生的不一样的问题. 通常比较懒,就没细想,直接使用PHP产生的算了;没想过难道算法还会有不同. 其实没有不同的算法,md5在哪里的计算方法只有一个.原因不过是因为使用md5sum时,有时候不小心会把换行符也作为计算的内容,结果实际上是散列的对象不同,自然结果也就不同了.而在Linux命令行状态下,我通常注意不到换行的存在. 以字符串'123'为例,PHP的计算结果是: [source language="bash"] $ php -r 'echo md5("123");' 202cb962ac59075b964b07152d234b70 [/source] 比如下列语句实际上是对"123\n"进行求散列,而不是对'123'求散列. [source language="bash"] $ echo '123' | md5sum ba1f2511fc30423bdbb183fe33f3dd0f [/source] 正确的写法应该是通过echo的'-n'选项,让echo不要输出换行符,这样结果就一样了. [source language="bash"] $ echo -n '123'…

Continue Reading

ubuntu 11.04 登录界面死循环

昨天不知道安装什么东西把ubuntu 11.04搞坏了。现在卡在了登录界面。不管是登录Gnome还是Unity,都一样。输入完用户名和密码以后,登录界面消失,屏幕闪了一下,然后没有进入桌面,而是又回到了登录界面。这时候通过Ctrl+Alt+F1到tty1,登录终端一切正常。 在askubuntu搜了一下,大多数人建议清除GDM的配置,重装GDM。 还好有人提醒先去看看"~.xsession-errors"里有什么出错信息。结果里面有一句说im-config找不到。看来是我安装中文输入法时,不知道那一步搞错了。sudo apt-get install im-config 后, 重新登录,一切正常了。

Continue Reading

debian 6下升级vim 7.2到7.3

首先确保debian上安装了python和ruby的开发包 sudo apt-get install python-dev ruby-dev liberuby-dev 下载vim 7.3的源代码 hg clone https://vim.googlecode.com/hg/ vim_src 生成配置文件. 我要使用支持python和ruby编写的vim插件, 当然也要支持多字节的环境了. ./configure --enable-rubyinterp --enable-pythoninterp --with-features=big|grep "python" 编译 make 检查一下看看python特性有没有问题 src/vim --version|grep python 安装 sudo make…

Continue Reading

Linux系统在虚拟机里的时区问题

缺省情况下Debian的时间是根据系统时间设置成UTC时间的,然后再根据用户的时区设置做相应的调整。这通常没有问题,但是当我通过VirtualBox来在虚拟机里运行Linux的时候,问题来了。 因为VirtualBox是根据它的宿主操作系统来设置虚拟机的系统时间的,而这并不是Debian想要的UTC时间,除非你正好在0时区。这时Debian再根据用户时区设置调整时区,时区相当于被被处理了两次。这是我就不知道被从东8区扔到什么地方去了。 修正办法是不让Debian再做用户时区调整,直接使用系统时间就可以了。这时候我们需要把/etc/default/rcS文件里的"UTC=yes"改成"UTC=no"。保存,重启,OK。不知道这样有没有别的什么副作用,先用着看吧。

Continue Reading

vim中按下Ctrl+S造成程序“僵死”的解决办法

我在使用vim的时候,偶尔会碰到vim莫名其妙的僵在那里。在界面上输入什么都没有反应。甚至Ctrl+C、Ctrl+D也没有反应。 由于不是经常发生,也就没在意。每次很麻烦的关掉putty的窗口,重新再打开putty。今天发生了好几次,很是郁闷。就想看看究竟是怎么回事,结果发现每次按下Ctrl+S就会出现这个问题。 由于以前碰到过vim有些扩展有问题,这次就也怀疑是vim扩展的问题。结果删除了所有扩展和.vimrc文件,问题依旧。通过putty登录到别的系统,也是一样的问题。直接在ubuntu的命令行,按下Ctrl+S,问题也一样! 奥,原来是Linux的一个快捷键呀,干什么用的? 原来Ctrl+S在Linux里,是锁定屏幕的快捷键。如果要解锁,按下Ctrl+Q就可以了。 好吧,接受教训吧。以后碰到问题要勤快点,越早解决越少麻烦。 现在让我记牢点这两个组合键Ctrl+S和Ctrl+Q。

Continue Reading

Linux下如何拷贝整个目录下的所有文件

如何在Linux下拷贝一个目录呢?这好像是再如意不过的问题了。 比如要把/home/usera拷贝到/mnt/temp,我首先想到的就是 cp -R /home/usera/* /mnt/temp 但是这样有一个问题,/home/usera下的隐藏文件都不会被拷贝,子目录下的隐藏文件倒是会的。 那如何才是正确的方法呢?有人说用-a选项,有人说用find加管道。 其实没这么复杂,Google了之后,学了一招。原来只有用“.”当前目录代替“*”就好了。 cp -R /home/usera/. /mnt/temp ### update 2013/06/11 那如果`/mnt/temp`里面已经有文件了,你只想把`/home/usera/`下的新文件copy过来,却不想覆盖`/mnt/temp`里面已有的文件怎么办呢?有点像合并两个目录对吧。 对付这种情况`cp`有一个选项`-n, --no-clobber`,就是不覆盖已有文件。应该也是蛮有用的。

Continue Reading

End of content

No more pages to load