2009-08-02

open with emacs in nautilus

1. create or edit /usr/share/applications/emacs.desktop


[Desktop Entry]
Name=Emacs
GenericName=Text Editor
Comment=Edit text
MimeType=text/english;text/plain;text/x-makefile;text/x-c++hdr;text/x-c++src;text/x-chdr;text/x-csrc;text/x-java;text/x-moc;text/x-pascal;text/x-tcl;text/x-tex;application/x-shellscript;text/x-c;text/x-c++;
Exec=emacsclient -n -a emacs %F
Icon=emacs
Type=Application
Terminal=false
Categories=Development;TextEditor;
StartupWMClass=Emacs

the most important item is "Exec=emacsclient -n -a emacs %F". The command attempt using a exist emacs server or start a new instance when no emacs server available.

2. edit /usr/share/applications/mimeinfo.cache to associate mime type to emacs. Or change associations in nautilus`s properties editor.

2009-07-10

useful linux commands

Bind() failed: Address already in use


Now what. lsof come to help.

$lsof -i TCP:3306 | grep LISTEN
mysqld 1057 mysql 11u IPv4 299343111 TCP *:mysql (LISTEN)


kick another user out of my system



$who
jarod pts/0 2009-07-10 08:14 (111.111.1111.111)
badguy pts/4 2009-07-10 08:56 (112.112.112.112)

$pkill -9 -t pts/4


set process affinity without programming



# run myprog and bind to first cpu core
$taskset -c 0 myprog



cpulimit



# limit cpu usage by pid
$cpulimit --pid 1234 --limit 20

2009-05-06

MySQL backup with Xtrabackup 0.6

用Xtrabackup备份MySQL

文档版本: 0.6.2, 更新时间: Wednesday, May 09 2009 9:50

Xtrabackup是什么

Xtrabackup是percona公司(mysqlperformanceblog)的开源项目,目的是实现类似innodb官方的热备份工具InnoDB Hot Backup的功能。但其实Xtrabackup还提供了额外的功能(但也有没实现的功能)。 Xtrabackup中包含两个工具:

  • xtrabackup - 用于热备份innodb, xtradb表的工具,不能备份其他表。
  • innobackupex - 对xtrabackup封装的perl脚本,提供了myisam表备份的能力。

Xtrabackup可以做什么

  • 在线(热)备份整个库的InnoDB, XtraDB表
  • 在xtrabackup的上一次整库备份基础上做增量备份(innodb only)
  • 以流的形式产生备份,可以直接保存到远程机器上(本机硬盘空间不足时很有用)

Xtrabackup如何工作的

  • xtrabackup - 具体原理有待研究。。。
  • innobackupex整库备份
    1. 调用xtrabackup对innodb表空间文件(这一瞬间的映像Time1)备份,而在这个innodb表备份期间数据库是不加锁的,外部可 以继续往库里增减数据(这才能叫热备份)。而在Time1和Time2这两个时间点之间的改动由一个线程不断地扫innodb log获得(ChangeSet1)。
    2. 锁所有库。
    3. 以直接拷贝的方式备份frm,MYD,MYI,MRG,TRG,TRN,opt格式的文件。
    4. 步骤3中的数据备份完毕时(Time2),停止扫innodb log的线程,把ChangeSet1的数据拷贝到备份中。
    5. 解锁所有库。
    6. 终止挂起,备份完毕。

注意要点

  • 根据innobackupex的原理可知它不是真正的热备份,MyISAM表越少越小就越有利。要利用Xtrabackup的好处就尽量用innodb表。
  • 还原备份前关闭mysql服务;还原备份后检查数据文件权限是否正确。
  • 性能:备份一个数据目录总大小5.6G,其中ibdata 2G,总时间4分钟,锁表时间2.5分钟。如果用mysqldump做这个库的备份锁表时间是5-8倍。

操作

整库备份,恢复(含myisam)

#### 备份
# 为了减少备份对服务的影响,可加参数--throttle=<每秒IO次数> / --sleep=<微秒>限制IO
innobackupex --user=root /data/backup/mysql

#### 恢复
# 后面的日期目录是备份时由innobackupex创建的
innobackupex --copy-back --defaults-file=/etc/my.cnf /data/backup/mysql/2009-05-06_17-44-37

备份时打包

#### 备份
innobackupex --user=root --stream=tar ./ | gzip - > /data/backup/mysql/latest.tar.gz

#### 恢复
cd /data/backup/mysql
mkdir tmp
tar xfzi latest.tar.gz -Ctmp
innobackupex --copy-back --defaults-file=/etc/my.cnf /data/backup/mysql/tmp

直接备份到远程机器

innobackupex --stream=tar ./  | ssh user@host cat ">"  backup.tar

2009-04-22

git notes

create remote branch



# create local branch
git branch my_branch
# push(create) remote branch
git push origin my_branch


delete remote branch



# the local branch will be delete too
git push origin :my_branch


delete commits


e.g. to delete H, I commit from the tree
before: E---F---G---H---I---J---HEAD
after: E---F---G---J---HEAD

# this will open the git default editor, delete H, I lines from the text
git rebase -i HEAD~5
# push to remote repository
git push --force

2009-03-13

BlackBerry 8700快捷键(转载)

刚入手1台8700g,记记快捷键

首先进入打电话的界面,也就是通话记录的界面,然后按下转轮,选择选项,然后进去里面的常规选项,把转轮拨到从主页屏幕拨号,修改成,然后按转轮保存出来就可以拉!

R闹钟. U计算器. B浏览器. O选项. A电话本. S搜索. D记事本. F铃声配置. K锁. M查看短信. C编写短信. V已保存短信. L日历.T任务任何状态下按alt+esc可以切换程序
长按拨号键,进入通讯录
长按1为进入语音信箱。
通话状态下,按ESC可以选择运行其它程序,通话不受影响短消息部分
答复:R 转发:F
搜索消息:S
向下翻页:空格
向上翻页:Num+空格
查看已发送消息或电话:alt+O
查看已收到消息或电话:alt+I
打字翻页:alt+滚轮
往回找汉字:alt+空格 alt+滚轮
在输入状态下:长按一个字母会从小写切换到大写
M键然后C键进入联系
浏览器部分(bb自带浏览器)
输入网址:G
转至主页:H
打开书签:K
添加书签:A
刷新页面:R
搜索关键词:F
搜索结果:V
查看历史记录:I
查看、复制 或发送链接地址:l
查看、复制或发送页面地址:P
全屏切换:U
回桌面:D
日历部分
首先将启用快速输入字段设置为否
更改为日程视图:D
更改为周程视图:W
更改为月程视图:M
要移至当前日期:T
要移至特定日期:G
要创建约会:C
要移至下一个日月周:空格
要移至上一个日月周:Num+空格
日、周、月、事件四中浏览方式,对应按DWMA四个快捷键媒体图片状态下
i放大,O缩小,P向上翻,N向下翻,R 旋转
电子书4
P上翻页,空格下翻页,H更换背景颜色,alt+O字体变大,alt+I 字体变小。


来源: http://bbs1.paipai.com/g40011c5i33782s0p0.html

2009-03-05

Change the linux hostname

1.to change the hostname immediately and tempprarily(this make sense for a running server), use the hostname command. e.g. change hostname to jarod.myhost.com


# hostname jarod.myhost.com

to check it:

$ hostname
jarod.myhost.com

2.to keep the new hostname after a machine reboot we need to edit configuration files.
append this line to /etc/hosts

127.0.0.1 jarod.myhost.com


and edit /etc/sysconfig/network(CentOS), change the item HOSTNAME:

HOSTNAME=jarod.myhost.com

The HOSTNAME item maybe in different configuration file between linux distributions. For example, in Archlinux, it's in file /etc/rc.conf.

2008-12-30

免费的Python电子书

《A Byte of Python》 - http://www.swaroopch.com/notes/Python
有2.x和3.0两个版本

《Dive into Python》 - http://diveintopython.org/
比较出名但又比较老的一本书

《PLEAC-Python 》- http://pleac.sourceforge.net/pleac_python/index.html
cookbook形式的书籍

2008-12-27

建一个邮局要做些什么?

以构建一个liuyuanzhi.com邮局为例(test@liuyuanzhi.com)

1.购买域名
到万网或其他域名代理商处购买域名

2.邮件服务的选择
根据需要选择自己架设邮件服务器还是购买企业邮局服务(或是免费的如google邮局

3.设置MX记录
MX记录(Mail exchanger record)是email服务的路由,让别人的邮局知道发给liuyuanzhi.com的邮件应该发到哪个服务器去,可以用命令dig -t mx liuyuanzhi.com查看
如果是用域名提供商的域名解析服务,一般在控制面板上可以设
如果是自己的dns服务器,如bind9:


liuyuanzhi.com. IN MX 10 ASPMX.L.GOOGLE.COM.
liuyuanzhi.com. IN MX 20 ALT1.ASPMX.L.GOOGLE.COM.


4.设置SPF记录
SPF(Sender Policy Framework)是一种用于说明哪个IP,哪个域名可以以liuyuanzhi.com名义发邮件,SPF中允许以外的服务器如果以我的域名发邮件,一般会被当作垃圾邮件。设置跟MX类似,可以用dig -t txt liuyuanzhi.com查看
如允许aspmx.googlemail.com域名和IP 202.96.1.1以liuyuanzhi.com名义发邮件:

liuyuanzhi.com. IN TXT "v=spf1 include:aspmx.googlemail.com ip4:202.96.1.1 ~all"



5.设置PTR记录
此步骤只有自建服务器才必要
PTR记录(pointer record)是被用作反向域名解析的一种实现,即用IP查对应域名。现在通过反向域名解析,判定反解析的域名是否发信域名的子域名也被用作垃圾邮件识别的,如果反解析结果为空或不属于发信域名的子域名,就有机会当作垃圾邮件发送着。可以用命令host 202.96.1.1查看。
设置PTR记录只能ISP做,所以你能做的就是联系机房,告诉他们你的反向域名要设成什么