作为每天 ssh 到服务器的码农,以下 ssh 设置真是实用啊。
# http://blogs.perl.org/users/smylers/2011/08/ssh-productivity-tips.html
# If the network disappears your connection will hang, but if it then re-appears with 3 minutes it will resume working
TCPKeepAlive no
ServerAliveInterval 60
ServerAliveCountMax 3
# avoid not used GSSAPI authentication to faster up connection
GSSAPIAuthentication no
# share ssh session
ControlMaster auto
ControlPath /tmp/ssh_mux_%h_%p_%r
# keep alive for 2h
ControlPersist 2h
# scp on remote
ForwardAgent yes
详见:
http://blogs.perl.org/users/smylers/2011/08/ssh-productivity-tips.html
上个文章 comments 里的一个连接:
http://diogomelo.net/blog/10/ssh-tricks
[Quick-Tip: Reusing OpenSSH connections to the same host](https://revsys.com/writings/quicktips/ssh-faster-connections.html)
2013年5月20日星期一
2013年5月13日星期一
Emacs ROCKKKKKK!!!
今天找一个方法实现 Emacs 里面的自动保存,发现了 http://emacsredux.com/ 这个专门针对 Emacs 的技巧 Blog,是 Prelude 作者撰写的,找到了 N 个想要已久的功能。 最后在浏览 Prelude 介绍的时候,发现了 Ace Jump 这个让我瞬间内牛满面的插件,键盘党也可以快速跳转光标了,而且不是在 VIM 里!对 VIM 的 f 键早已经羡慕妒忌狠很久了,现在可以了了这心了。
还有 imenu... 爽翻了。
还有 imenu... 爽翻了。
2013年3月7日星期四
Ubuntu 12.10 一点优化Unity的小技巧
Ubuntu 的桌面使用了 Unity,因此可以通过 Win+数字 这样的快捷键来切换窗口。使用过程中会不小心的就按到 Win 键,这个时候弹出 Dash,经常卡住。在网上搜索了一下想禁用这个 Dash,没有什么结果,估计是没有办法的。不过找到一个可以加速这个 Dash Board 显示的技巧,安装 compiz config,设置 unity 的 Dash Blur 为 Static Blur,甚至 No Blur 就好了。原文连接如下:
http://askubuntu.com/questions/137091/how-to-disable-icon-fetching-in-dashboards-search-increasing-performance-idea
http://askubuntu.com/questions/137091/how-to-disable-icon-fetching-in-dashboards-search-increasing-performance-idea
2012年12月29日星期六
MySQL 的坑
对MySQL一直没有什么研究,基础知识不甚,今天总算遇到个坑搞了2个小时。
现象:
新增加了一个简单的表,外键指向另外一个表的 id。增加 row 的时候,总是提示
1452, 'Cannot add or update a child row: a foreign key constraint fails
折腾了半天,Google 出来的都不太有用,找不到原因。最后偶然发现了一丝线索。起因是我更换了操作系统,升级了 MySQL 的版本。新版本是 5.5 默认新建的表是 Innodb 引擎的,而我原来的库都是用 MyISAM的,所以出问题了,详细见如下连接:
http://stackoverflow.com/questions/3890205/why-foreign-key-constraint-fails-when-foreign-key-exists
最后,必须说 mysql-workbench 这东西 5.2 版本挺好用啊,没用过 phpmyadmin 的人超级喜欢这个。
2012年11月19日星期一
Ubuntu 上使用 Evernote
由于 Evernote 非常蛋疼的觉得 Linux 用户没啥值得支持的,盈利第一,所以一直以来在 Ubuntu 下都是使用 web 方式,基本上除了偶尔查点笔记外,没有使用的欲望。
之前尝试一个第三方的客户端 Everpad (github),在 Ubuntu 11.10 下我没成功跑起来,放弃。尝试过 wine,感觉有点渣。然后,今天尝试了 nixnote,目前看来还算满意。
安装过程中遇到点问题,记录一下。
其实系统已经是有了libssl 1.0.0版本的。Google 了一下:
Nixnote 1.3 dependency not satisfiable libssl(>=0.9.8)
1.3 dependency not satisfiable libssl(>=0.9.8)
其中第二链接提到了把 deb 包解压后,修改 control 文件里的 dependency,然后重新用 dpkg-deb -b build-directory 来打包。修改成 1.0.0 就可以了。
Ubuntu 12.10 可以通过 ppa 安装。 如下:
http://www.ubuntubuzz.com/2011/10/how-to-install-evernotenixnote-in.html
之前尝试一个第三方的客户端 Everpad (github),在 Ubuntu 11.10 下我没成功跑起来,放弃。尝试过 wine,感觉有点渣。然后,今天尝试了 nixnote,目前看来还算满意。
安装过程中遇到点问题,记录一下。
sudo dpkg -i /home/too/Downloads/nixnote-1.4_i386.deb
dpkg: dependency problems prevent configuration of nixnote:
nixnote depends on libssl0.9.8; however:
Package libssl0.9.8 is not installed.
其实系统已经是有了libssl 1.0.0版本的。Google 了一下:
Nixnote 1.3 dependency not satisfiable libssl(>=0.9.8)
1.3 dependency not satisfiable libssl(>=0.9.8)
其中第二链接提到了把 deb 包解压后,修改 control 文件里的 dependency,然后重新用 dpkg-deb -b build-directory 来打包。修改成 1.0.0 就可以了。
Ubuntu 12.10 可以通过 ppa 安装。 如下:
http://www.ubuntubuzz.com/2011/10/how-to-install-evernotenixnote-in.html
For ubuntu user, Nixnote also available to install via PPA, do following on terminal :
- $ sudo add-apt-repository ppa:vincent-c/nevernote
- $ sudo apt-get update
- $ sudo apt-get install nixnote
2012年6月21日星期四
nginx 的 uwsgi http page cache 清除
uwsgi 搭配 nginx 使用,在nginx里面配置了缓存的话,后台代码更新后,页面没有在 uwsgi 重新生成,此时需要清除 nginx 的缓存。(不知道是不是重启 nginx 服务也可以)
检查 nginx conf 配置文件,查找 uwsgi_cache_path 或者 proxy cache 的路径,比如是/dev/shm/,那么执行如下命令可以找到对应被cache 的url的文件:
sudo grep -lr 'http://url_some/' /dev/shm/*
执行 rm 删除该文件即可。当然也可以删除cache 的所有文件:
find /path/to/your/cache -type f -delete
nginx 较新的版本有个module 也可以做这个事情, 叫 purge cache 之类的,需要 Google 一下。
检查 nginx conf 配置文件,查找 uwsgi_cache_path 或者 proxy cache 的路径,比如是/dev/shm/,那么执行如下命令可以找到对应被cache 的url的文件:
sudo grep -lr 'http://url_some/' /dev/shm/*
执行 rm 删除该文件即可。当然也可以删除cache 的所有文件:
find /path/to/your/cache -type f -delete
nginx 较新的版本有个module 也可以做这个事情, 叫 purge cache 之类的,需要 Google 一下。
2012年5月8日星期二
Django ImageField 上传 jpeg 出错处理
使用 ImageField 之后,上传图片报错
Upload a valid image. The file you uploaded was either not an image or a corrupted image.
查看文档,检查PIL已经装好,MEDIA_ROOT 也设置了,似乎没有什么遗留了。直接Google出错信息,发现是PIL需要JPEG的支持。
Ubuntu 下安装操作如下:
先要反安装 PIL
- sudo pip uninstall PIL
- sudo apt-get install libjpeg8.dev
- sudo pip install PIL
一般就能解决问题了。但是由于使用了Virtualenv,需要在安装PIL的时候指出lib的路径,具体操作如下:
- pip uninstall PIL
- sudo apt-get install libjpeg8.dev
- virtualenv ~/Dev/python-virtualenv/project-name
- workon project-name
- (project-name) cd ~/Dev/python-virtualenv/project-name/
- (project-name) ln -s /usr/lib/x86_64-linux-gnu/libz.so ./lib/
- (project-name) ln -s /usr/lib/x86_64-linux-gnu/libjpeg.so ./lib/
- (project-name) ln -s /usr/lib/x86_64-linux-gnu/libfreetype.so ./lib/
- pip install PIL
注意:i386路径为 /usr/lib/i386-linux-gnu/
参考链接:
2012年4月9日星期一
关于Python for循环的一点小贴士
看到 @pycoders 上的一个文章: Counting, without counting, in Python: Brandon Rhodes
其实简单一点想,任何时候都用xrange就对了。不要太钻牛角尖的话。
学到了一个简单的测试某段代码运行时间的方法:最后的结果,代表的意思应该是运行了100次,最好的3次平均时间。一开始我还一头雾水,这个for循环不是1000000次的么,怎么只有100次,然后给我3次最好的啥意思啊。后来猜测了一下,然后看了下文档验证了我的猜测。同时,1 ms = 1000 us = 1000,000 ns,具体可以看wiki
$ python -m timeit \
> -s 'from itertools import repeat' \
> 'for x in repeat(None, 1000000): pass'
100 loops, best of 3: 16.8 msec per loop
2011年12月30日星期五
virtualenv 使用笔记
virtualenv 是一个建立虚拟Python环境的工具(详见后面的参考)。使用起来很方便。以下是使用我这两天的使用笔记:
安装:(详细步骤可查阅后面的参考链接[1])
sudo apt-get install python-setuptools python-dev build-essential
sudo easy_install pip
sudo pip install virtualenv
第一步是为了安装easy_install, 然后通过easy_install 安装pip(一个类似easy_install的Python包安装工具,配合virtualenv使用效果好)。然后通过pip安装virtualenv
使用:
安装好后直接执行
virtualenv env_dir
source env_dir/bin/activate
就完成环境目录建立,并激活该环境了。最新的1.7版本默认是不使用系统原有的包(等于 --no-site-packages)。
激活环境后,安装的包都会限制在这个环境里(应该就是env_dir目录里),执行deactive 会离开这个环境。
比如安装Yolk (一个列出Python包信息的工具):
如果激活了环境的话,直接执行
pip install yolk
没激活可以用 pip 的 -E 安装包到指定环境
pip install -E env_dir yolk
执行 yolk -l 将可以列出环境下安装的所有包。
移除环境直接删除该目录应该就可以了。
Tips:
推荐安装virtualenvwrapper工具,可以快捷的建立环境和转换环境(还有其他功能),具体见参考[2]
sudo pip install virtualenvwrapper
指定pip的缓存目录,不用每次安装包都去下载:
.bashrc 里加上 PIP_DOWNLOAD_CACHE 环境变量,如
export PIP_DOWNLOAD_CACHE=~/.pip/download_cache
对于 sudo,cache 的 env 设置需要 sudo visudo, 增加如下
Defaults env_keep += "PIP_DOWNLOAD_CACHE"
可以 man sudoers 查看具体帮助。
问题:
[2] Virtualenv and pip Basics | Jontourage
[3] virtualenv中文文档
安装:(详细步骤可查阅后面的参考链接[1])
sudo apt-get install python-setuptools python-dev build-essential
sudo easy_install pip
sudo pip install virtualenv
第一步是为了安装easy_install, 然后通过easy_install 安装pip(一个类似easy_install的Python包安装工具,配合virtualenv使用效果好)。然后通过pip安装virtualenv
使用:
安装好后直接执行
virtualenv env_dir
source env_dir/bin/activate
就完成环境目录建立,并激活该环境了。最新的1.7版本默认是不使用系统原有的包(等于 --no-site-packages)。
激活环境后,安装的包都会限制在这个环境里(应该就是env_dir目录里),执行deactive 会离开这个环境。
比如安装Yolk (一个列出Python包信息的工具):
如果激活了环境的话,直接执行
pip install yolk
没激活可以用 pip 的 -E 安装包到指定环境
pip install -E env_dir yolk
执行 yolk -l 将可以列出环境下安装的所有包。
移除环境直接删除该目录应该就可以了。
Tips:
推荐安装virtualenvwrapper工具,可以快捷的建立环境和转换环境(还有其他功能),具体见参考[2]
sudo pip install virtualenvwrapper
指定pip的缓存目录,不用每次安装包都去下载:
.bashrc 里加上 PIP_DOWNLOAD_CACHE 环境变量,如
export PIP_DOWNLOAD_CACHE=~/.pip/download_cache
对于 sudo,cache 的 env 设置需要 sudo visudo, 增加如下
Defaults env_keep += "PIP_DOWNLOAD_CACHE"
可以 man sudoers 查看具体帮助。
问题:
- 使用过程中,遇到了一个问题,新建的环境总是使用了系统原有的包,加上 --no-site-packages 也不行。换个机器又没问题。
Update: 似乎是因为我没有在新的环境中安装yolk的原因,所以查看包的时候调用到的是系统原有的yolk。 - e... 能建个Python 3 虚拟环境么? 似乎不需要,直接安装Python 3就可以并存。
virtualenv是Python开发常用的工具之一,它可以帮助开发者建立一个独立的虚拟的环境,开发者可以将自己需要用的python package装入到这个虚拟环境中,这样就和系统全局的其他package隔离了,不会影响系统的package布局,要使用这些安装在虚拟环境中的模块,只需要activate进行该环境就OK了,不activate的话就不能使用那些在虚拟环境中的模块,就像从没安装过一样[1] Notes on using pip and virtualenv with Django « SaltyCrane Blog
via Python开发工具virtualenv的使用 - [Python]
[2] Virtualenv and pip Basics | Jontourage
[3] virtualenv中文文档
2007年5月28日星期一
关于shell的历史命令使用
看了 懒惰的程序员: bash history 谈论的bash历史命令使用和一些环境设置,我也说一些我的心得。我主要是使用AIX 上面的ksh多一点,然后在学习AIX 的时候,很多文章推荐环境变量里 set -o vi,就是打开使用vi作为命令行的编辑器。这个大部分shell应该都支持的。
打开这个功能后,history里面的命令都会置于一个随时可以打开的文件一样。在命令提示符下按下Esc健后就进入VI 模式了。打 / 就可以进行搜索,hjkl控制上下左右,寻找到你使用的命令后,使用vi的常用编辑命令进行编辑,非常方便快捷,一切如同在VI里面一样。
我个人觉得很实用,不知道大家有没有用过,或者有其他更便捷的方法。另外我发现这个设置的一个不便之处就是,在bash里会在使用箭头健的时候会有点小问题,我记不起来是怎么了,反正觉得和箭头键有点小冲突的样子。不过如果使用了vi的话,hjkl就可以代替箭头了。
还有在AIX的使用学习中,学会另外一个快速重复命令的设置,一个别名 alias r='fc -e -' ,在AIX 的 ksh 是默认有这个 r 命令的。它的作用就是,重复最后一次输入的命令。后面加参数的话,就重复以参数开头的最近一条命令。从这里看出这个命令还是一定风险的。下面是举例,从例子里就可以看出这个命令的好处。
比如,你在shell里分别输入了
#ls
#ls -al
#df
三个命令(一次一个,这里省略了结果输出)。
此时在#下面打r,将重复 df这个命令。打r ls(r后面一个空格),重复的就是ls -al这个命令。没有任何确认和提示,直接执行。所以很方便,也很有风险。特别是重复rm这样的命令的时候,万一的在/ 目录下重复了rm -rf *,那只有哭了....
打开这个功能后,history里面的命令都会置于一个随时可以打开的文件一样。在命令提示符下按下Esc健后就进入VI 模式了。打 / 就可以进行搜索,hjkl控制上下左右,寻找到你使用的命令后,使用vi的常用编辑命令进行编辑,非常方便快捷,一切如同在VI里面一样。
我个人觉得很实用,不知道大家有没有用过,或者有其他更便捷的方法。另外我发现这个设置的一个不便之处就是,在bash里会在使用箭头健的时候会有点小问题,我记不起来是怎么了,反正觉得和箭头键有点小冲突的样子。不过如果使用了vi的话,hjkl就可以代替箭头了。
还有在AIX的使用学习中,学会另外一个快速重复命令的设置,一个别名 alias r='fc -e -' ,在AIX 的 ksh 是默认有这个 r 命令的。它的作用就是,重复最后一次输入的命令。后面加参数的话,就重复以参数开头的最近一条命令。从这里看出这个命令还是一定风险的。下面是举例,从例子里就可以看出这个命令的好处。
比如,你在shell里分别输入了
#ls
#ls -al
#df
三个命令(一次一个,这里省略了结果输出)。
此时在#下面打r,将重复 df这个命令。打r ls(r后面一个空格),重复的就是ls -al这个命令。没有任何确认和提示,直接执行。所以很方便,也很有风险。特别是重复rm这样的命令的时候,万一的在/ 目录下重复了rm -rf *,那只有哭了....
2005年11月29日星期二
典型的IBM小型机系统项目安装记录
最近在进行一个项目,是组建一个数据库服务器。
硬件部分:用到的机器是2台IBM的p5 550服务器和DS4300(FAStT600),还有2个光纤交换机H08,是非常简单和实用的一个搭配。 通过一个HMC 7310 C04管理,没有配显卡和显示器。因为550上面只有5个槽位,2个FC卡,2个网卡,1个8口异步适配器(作串口心跳必需),插满了就只有把显卡给省略掉了。
软件部分:550上面安装的是AIX5.2操作系统,HACMP5.2,ORACLE 9i。
整个过程大概安排是这样
硬件部分:用到的机器是2台IBM的p5 550服务器和DS4300(FAStT600),还有2个光纤交换机H08,是非常简单和实用的一个搭配。 通过一个HMC 7310 C04管理,没有配显卡和显示器。因为550上面只有5个槽位,2个FC卡,2个网卡,1个8口异步适配器(作串口心跳必需),插满了就只有把显卡给省略掉了。
软件部分:550上面安装的是AIX5.2操作系统,HACMP5.2,ORACLE 9i。
整个过程大概安排是这样
- 服务器和机柜的固定和安放,
- AIX的安装,
- HACMP的配置,
- ORACLE的安装,建库,运行。
订阅:
博文 (Atom)