Category Archives: linux

[翻译]这根本不是 BASH 的 bug!

在前几天看到 CVE-2014-6277 这个 BASH 的 bug 的时候,我就觉得挺奇葩的:这这种明显是有意实现的功能怎么会存在这么大的安全隐患呢?我不是专门搞安全的,同时觉得,这个 bug 可能虽然影响广泛,但并不是什么很有技术含量的利用思路。所以我就把这个事情放下没去想它。然而,随之而来的国内国外的各种媒体宣传、安全专家的联名建议、茶余饭后的坊间畅谈……对于 BASH 的这个 bug 无人不认为是个大 bug。不少人为此还在幸灾乐祸……但是我却没从各种评论中找到我的问题的答案。

但是,当我看到这篇随笔时,我不得不赞同作者的观点:这根本不是 BASH 的 bug!

所以我将原文翻译至此,希望能够带来一些思考。

也许我们今天看到的一个愚蠢的 bug,在历史上的某一天,是一个有意而为之的神奇特性。也许我们应该思考的不仅仅是这一刻的 bug 或者安全隐患本身,而是在软件项目这个极具工程和创作品双重特性的活动中,如何有效的保证某个特性不会变成 bug。所以什么规范了,文档了,可真得不是纸上谈兵!

不过话说回来,无论如何,我仍然坚信:“Less is exponentially more!(大道至简)”少一点 Feature 或许就是少一点 Bug 呢?

bug-vs-feature

Continue reading [翻译]这根本不是 BASH 的 bug!

[翻译] Nginx 备战-优化指南

对于上线优化这个事情,个人来说更加倾向于使用一些快速的调优模式首先来解决 80% 的问题。感觉上这篇“Battle ready Nginx – an optimization guide”讲得还是很到位了。所以随手翻译了,分享给大家。

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

Nginx 备战-优化指南

作者:Zachary Orr

大多数关于 Nginx 的指南只告诉你那最基本的部分:apt-get 一个包,修改这里和那里的某些行,然后就得到了一个 web 服务器!而在大多数情况下,一个常见的 nginx 安装也能为你的网站提供良好的服务。然而如果你的确想进一步压榨 nginx 的性能,那么就必须走得更远一些。在这个指南中,我将会解释通过调整 nginx 中的哪些设置可以得到更好的性能,来应对大量客户端请求。同时要注意,这不是完整的调优指南。只是对一些可以调整来改进性能的设置的简单概述。请务必具体情况具体对待。

Continue reading [翻译] Nginx 备战-优化指南

让 shell 显示当前 git 的分支名称

早上测试脚本的时候,偶然在这篇文章《Git – setting up a remote repository and doing an initial push》看到一个关于 git 的好玩东西,记录于此。

根据文章的提示在 ~/.bashrc 里添加下面的内容,可以让提示符显示当前 git 的分支名称。我按照自己的习惯修改了提示符的格式。

__mikespook_ps1() {
	local none='\[\033[00m\]'
	local g='\[\033[0;32m\]'
	local c='\[\033[0;36m\]'
	local emy='\[\033[1;33m\]'
	local br='\[\033[1;41m\]'

	local uc=$none
	local p='$'
	if [ $UID -eq "0" ] ; then
    	uc=$CBR 
		p='#'
	fi
	local u="${uc}${debian_chroot:+($debian_chroot)}\u${none}"
	local h="${c}\h${none}:${g}\w${none}"
	echo "$u@$h\$(__git_ps1 '[${emy}%s${none}]')${uc}${p}${none} "
}

export PS1=$(__mikespook_ps1)

这样,就能得到效果:

git-branch-show-in-prompt

一个设置 golang 的 vim 开发环境的脚本

golang 本身在代码的 misc/vim 中提供了相应脚本,用来集成 golang 的 vim 环境。而第三方项目 gocode 则更是一个强大的工具。我在《gocode——VIM 和 Emacs 的 golang 代码自动补全》中已经介绍过了。

这两个项目都很活跃,而社区活跃带来的最大麻烦就是频繁更新。为了能方便的升级 vim 环境的 golang 脚本,所以写了这个 shell。

可以 step by step 的协助集成 golang 相关脚本到 vim 中。

下载地址:https://bitbucket.org/mikespook/learning_go_chinese/downloads/vim.sh

虽然脚本会检测相关环境变量和依赖程序,不过还是最好提前设置好,免得麻烦。当然也可以将脚本到某个目录,让脚本自动下载 go 代码和 gocode 代码。

现在唯一没在这个脚本中集成的就是环境变量的设置和 .vimrc 中关于 syntax 之类的通用设置的开启。这些内容,DIY吧。

firefox 5.0 安装 Google Toolbar 的办法

Ubuntu 一向都很高效,firefox 5 出来没几天就将 11.04 的浏览器升级到了版本 5。于是,有点小杯具了。其他不兼容差价都是平常不怎么用的,不用也罢。结果 google toolbar 居然不兼容。上个邮箱、书签,搜个资料,一直都用的是这个。于是,过了数天没有 google toolbar 的日子……

忍不下去了!!!

上网搜了一下,找到一个不错的firefox add-ons:Add-on Compatibility Reporter

用法简单,直接安装重启 firefox 即可,无须设置。

Bingo!

在 xubuntu 中使用 3G 手机作为猫上网

我使用的是三星的一款3G手机,比较破烂。不过使用三星的 PC 套件可以在 Windows 下当作猫通过手机上网。在没有可接入的网络的时候还是很方便的。不过遗憾的是,我不用 Windows……每个月 300M 的流量我只用 10%,实在是浪费……所以,我想通过 xubuntu 接入 3G 手机上网。

好吧,最出乎意料的是,xubuntu 下用 3G 手机上网相当简单。

下面是图文混排的步骤……

Continue reading 在 xubuntu 中使用 3G 手机作为猫上网

在 Ubuntu 9.10 下安装和简单配置 trac 0.12dev

昨日(2010-03-14)在金山参加了”CPyUG会课总第38期~暨珠三角技术沙龙第6次“。会中廖杰大仙用平和的语气,激动人心的介绍了 trac 若干功能、以及插件的开发和金山已经在使用的或者准备使用的插件。回来手痒,随尝试安装 0.12dev。

关于 Windows 下的安装,请看赖神的《在 windows 下安装和简单配置 trac 0.12》。

Ubuntu 下没 Windows 下麻烦,不过如果完全按照 Trac 官方的文档,还是会略有折腾,特别记录于此,以备后用。 Continue reading 在 Ubuntu 9.10 下安装和简单配置 trac 0.12dev

在 Ubuntu 9.10 Server 上安装 Nginx 0.8.34

Nginx 在 3 月 3 日放出了 0.8.34 这个开发版。张宴也随即更新了《Nginx 0.8.x + PHP 5.2.13(FastCGI)搭建胜过Apache十倍的Web服务器》到第六版。不过,他写的记录是针对 CentOS、Redhat 等 rpm 包管理的服务器。由于习惯了 debian 系列的服务器,特别是用惯了 ubuntu 服务器,在这里特别做一下 Ubuntu 9.10 下的安装笔记。其他基于 deb 包管理的发行版也类似。 Continue reading 在 Ubuntu 9.10 Server 上安装 Nginx 0.8.34