Brew your software in OS X

安装 brew

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

查找软件

brew search netcdf

查看软件信息

brew info netcdf

安装软件

brew install ncview gfortran cdo grads wget axel parallel

值得注意的是,brew会自动解决依赖问题,如ncview依赖netcdf,那么他会自动先安装netcdf,然后再安装ncview

如果编译一个软件需要参数,那么可以直接加上这些参数,如:

brew install --enable-fortran

安装小众软件

brew 目前将比较小众的一些软件分门别类,cdo 属于science类,同样地 ncview、netcdf等也属于这一类,而grads则分到binary 类,这类小众软件的formula默认是不下载的,需要预先“提取”一下:

brew tap homebrew/science homebrew/binary

自己创建brew安装包

如果需要的软件暂时还没有进入官方维护包内,那么可以创建一个新的 brew formula (以cdo为例, 更新:cdo目前已经正式进入官方的list中,因此不需要再手动创建,而只需要运行 brew install cdo 就好了)

brew create https://code.zmaw.de/attachments/download/2372/cdo-1.5.4.tar.gz

创建好了以后,修改 Formula文件,解决一些依赖问题

brew edit cdo

写入以下内容(依赖 netcdf, hdf5, proj)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
require 'formula'
class Cdo < Formula
url 'https://code.zmaw.de/attachments/download/1690/cdo-1.5.2.tar.gz'
homepage ''
md5 'a01826b7c2906579f17c6dbc7d619479'
depends_on 'netcdf' # 这几句是手动添加的,增加依赖关系
depends_on 'hdf5'
depends_on 'proj'
def install
hdf5 = Formula.factory 'hdf5' # 这几句是手动添加的,增加依赖关系
netcdf = Formula.factory 'netcdf'
proj = Formula.factory 'proj'
system "./configure", "--with-hdf5=#{hdf5.prefix}","--with-proj=#{proj.prefix}","--disable-debug", "--disable-dependency-tracking","--with-netcdf=#{netcdf.prefix}", "--prefix=#{prefix}"
# system "cmake . #{std_cmake_parameters}"
system "make install"
end
def test
# This test will fail and we won't accept that! It's enough to just
# replace "false" with the main program this formula installs, but
# it'd be nice if you were more thorough. Test the test with
# `brew test cdo`. Remove this comment before submitting
# your pull request!
system "false"
end
end

然后就可以编译安装啦

brew install cdo

SFTP: Received message too long

After a slight modification to ~/.bashrc, my sftp connection always fails with FileZilla, XFTP, and commandline sftp, but Transmit in OS X works fine.

With verbose mode of command sftp, it tells ‘Received message too long’. Carefully checked ~/.bashrc, found that an echo was added for debugging, after remove the echo sentence, sftp works perfectly again.

So, if you want your sftp works fine, please be careful with shell config files like .bashrc or .cshrc or so, especially there are echo or other messages outputed.

Mavericks apache2 issue after Server 3 removed

After remove Server.app, my apache2 on Mac OS X 10.9.2 Mavericks couldn’t start normally while everything looks OK. After carefully studied the log file through Console.app and looked into the content of /usr/sbin/apachectl, I realized that the starting process of apache in OS X is quite different than that in Linux: it uses launchctl!

So, I searched the apache launchctl config file:/System/Library/LaunchDaemons/org.apache.httpd.plist. Aha! it said:

1
2
3
4
5
6
7
8
9
10
11
12
<key>SERVER_INSTALL_PATH_PREFIX</key>
<string>/Applications/Server.app/Contents/ServerRoot</string>
......
and
<key>ProgramArguments</key>
<array>
<string>/usr/sbin/httpd</string>
<string>-D</string>
<string>FOREGROUND</string>
<string>-f</string>
<string>/Library/Server/Web/Config/apache2/httpd_server_app.conf</string>
</array>

The key SERVER_INSTALL_PATH_PREFIX and ProgramArguments were modified by Server.app aparently. Just recover them to /usr and /etc/apache2/http.conf, there, it works again!

一切为了太阳系的荣耀--Xshell的Solarized配色

Xshell 是 Windows 里面为数不多的免费且好用的 SSH 客户端,不过默认的配色实在是太难看了,真的是太难看了,如果不改掉实在是不能用。而且和 Sublime Text、TextMate、Emacs、VIM 等编辑神器以及 iTerm2 等深受好评的软件不一样,网上现成的 XShell 配色也着实少的可怜。冇办法,只好自己动手了。

上面提到的编辑器,真的有很多经典的配色,如 Monokai、Dawn、Eiffel、Tommorow、Twilight 等,但是我最爱的,还是那经典的 Solarized。关于 Solarized,已经有很多 介绍 ,其官网在 这里 ,Github 的主页在 这里,上面有为很多软件如 Emacs、Gedit、iTerm2、Putty、VIM、TextWrangler 等写好的配色文件,可自行采撷。

最爱的 Solarized Dark 配色,写成 Xshell 能用的形式如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
[Solarized Dark]
text(bold)=839496
magenta(bold)=6c71c4
text=839496
white(bold)=fdf6e3
green=859900
red(bold)=cb4b16
green(bold)=586e75
black(bold)=073642
red=dc322f
blue=268bd2
black=002b36
blue(bold)=839496
yellow(bold)=657b83
cyan(bold)=93a1a1
yellow=b58900
magenta=dd3682
background=042028
white=eee8d5
cyan=2aa198
[Names]
count=1
name0=Solarized Dark

只需把以上内容拷贝到 SolarizedDark.xcs,并在 Xshell 中导入这个配色文件,就可以享受程序猿专用的温暖的太阳系之光了。

效果如图

以下为更加温暖的亮色系配色文件,同理保存为 SolarizedLight.xcs 并导入 Xshell 即可。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
[Solarized Light]
text(bold)=657b83
magenta(bold)=6c71c4
text=657b83
white(bold)=002b36
green=859900
red(bold)=cb4b16
green(bold)=93a1a1
black(bold)=eee8d5
red=dc322f
blue=268bd2
black=fdf6e3
blue(bold)=657b83
yellow(bold)=839496
cyan(bold)=586e75
yellow=b58900
magenta=dd3682
background=fdf6e3
white=073642
cyan=2aa198
[Names]
count=1
name0=Solarized Light

效果如图

ps: 后来仔细看了一下,已经有人 fork 了一个 Solarized 的代码库,并提交了 for Xshell 的 pull。参见
[这里](https://github.com/mayjabber/solarized/tree/master/xshell-colors-solarized) https://github.com/mayjabber/solarized/tree/master/xshell-colors-solarized

Mac OS X 启用root用户

虽然一般情况下 Mac 下面不需要 root 权限的,配合 sudo 基本可以走天下,但是也避免不了一些奇葩的然则又必须使用的软件需要 root 用户才行,比如有的网页 VPN 必须绑定 22 号端口!(真奇葩!!),那么使用如下步骤可以启用 root 账户。

  1. 从 Apple 菜单中选取系统偏好设置…。
  2. 从显示菜单中选取用户与群组。
  3. 点按锁图标并使用管理员帐户进行鉴定。
  4. 点按“登录选项…”。
  5. 点按右下部的“编辑…”或“加入…”按钮。
  6. 点按“打开目录实用工具…”按钮。
  7. 点按“目录实用工具”窗口中的锁图标。
  8. 输入管理员帐户名称和密码,然后点按“好”。
  9. 从编辑菜单中选取启用 Root 用户。
  10. 在“密码”和“验证”字段中输入您想要使用的 root 密码,然后点按“好”。

OK, 搞定!

Ubuntu UFW Forewall

用一下几条命令安装并开启 ufw:

1
2
3
sudo apt-get install ufw
sudo ufw enable
sudo ufw default reject

这样就安装开启了 UFW 防火墙,并默认拒绝一切外来连接请求(reject),显示为未连接,为安全起见,最好将 reject 改为deny。

为开启 SSH 和 WWW 服务,运行:

1
2
sudo ufw allow ssh/tcp
sudo ufw allow www/tcp

同时使用以下命令查询状态:

1
sudo ufw status