Showing posts with label Tools. Show all posts
Showing posts with label Tools. Show all posts

Thursday, 22 January 2009

irssi提醒脚本

喜欢irssi这个命令行上的IRC,每天都会打开上#ppmm, #ubuntu-cn, #java, #python等频道~~ 命令行工具的一个缺陷在于,提醒功能不完善。虽然用screen,在状态栏上也有提醒,不过并不是任何时候都会盯着命令行的,所以还得有一个图形界面的提醒。 幸好irssi提供了扩展脚本这个功能,所以能够用Perl对其进行扩展。在网上搜索一番之后,发现有人写过提醒脚本,调用gtk-dialog-info这个命令行在屏幕右下角生成提醒窗口。但原始脚本并不是很适合我,所以作了一番修改之后,成了下面这样:
##
## Put me in ~/.irssi/scripts, and then execute the following in irssi:
##
##       /load perl
##       /script load notify
##

use strict;
use Irssi;
use vars qw($VERSION %IRSSI);

$VERSION = "0.01";
%IRSSI = (
  authors     => 'Luke Macken',
  contact     => 'lewk@csh.rit.edu',
  name        => 'notify.pl'
);

sub notify {
    my ($server, $msg, $nick, $address, $target) = @_;

    return if (!($msg =~ /anticlockwise/));

    system("notify-send -i gtk-dialog-info -t 5000 '$nick' '$msg'");
}

Irssi::signal_add('message public', 'notify');
原始脚本采用的irssi信号是print text,虽然这个信号能够检测个人信息,却无法得到消息的内容(所谓的text是指的系统消息,却不是聊天消息)。所以就改成了message public,然后message public又没有一个通用的检测是否个人消息的方法,所以就只能用正则表达式来判断了,有些傻,不过管用。

Wednesday, 21 January 2009

Python Google Translate调用脚本

前一阵子一直想找一个命令行上的翻译程序,就自己写了一个Python程序:
#!/usr/bin/env python
# -*- coding: utf-8 -*-

import urllib
import urllib2
import sys
import jsonlib
from optparse import OptionParser

URL = "http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=%s&langpair=%s%%7C%s"

parser = OptionParser()
parser.add_option("-f", "--from", dest="lang1",
        help="The language code to translate from", default="en")
parser.add_option("-t", "--to", dest="lang2",
        help="The language code to translate to", default="zh")

(options, args) = parser.parse_args()
if len(args) < 1:
    print "Usage: python translate.py <translate text>"
    sys.exit(0)

text = ' '.join(args)
print "Translating %s from %s to %s" % (text, options.lang1, options.lang2)
query = (URL % (urllib.quote(text), options.lang1, options.lang2))
req = urllib2.Request(query)
req.add_header("Referer", "http://www.my-ajax-site.com")
r = urllib2.urlopen(req)

data = r.read()
obj = jsonlib.read(data)
if obj['responseStatus'] != 200L:
    print "Error: %s" % obj['responseDetails']
else:
    print "Translated text: %s" % obj['responseData']['translatedText']

Monday, 29 September 2008

Commandline Tools

今天找到了几个常用程序的命令行替代品,分别是IRC、GTALK、MSN、电子邮件客户端和GOOGLE CALENDAR的。这些工具能够在一定程度上提高我开发的效率,因为曾经需要用鼠标的(离开键盘)现在均可以用键盘操作~~ 1. GTalk: Freetalk (http://www.gnu.org/software/freetalk/) Freetalk真的很不错,界面简洁,类似于IRC聊天工具,所有操作都是通过命令来完成,例如要知道有哪些人在线的话,敲入/who便可以得到了。 2. MSN: Python MSN lib (http://blitiri.com.ar/p/msnlib/) 其实这本是一个Python写的MSN库,不过作者提供了一个演示程序,但功能比较全面(至少我需要的都有),而且操作也非常方便~~ 3. IRC: irssi (http://www.irssi.org/) 这个客户端已经非常有名了,很多人都在用,和一般的IRC都一样,自己去看看吧。 4. Mail Client: mutt (http://www.mutt.org/) 这个我刚开始用,不过真的很不错,速度很快,而且界面清晰~~最主要的是它的键盘映射和VIM一样,所以非常符合我的口味~~ 5. Google Calendar: gcalcli 这貌似是GOOGLE自己开发的,调用了Google Data API,它没有像前面几个程序那样的界面,只有命令行的操作。例如,如果我要知道这段时间有些什么事件的记录的话:gcalcli agenda 就会帮我输出所有的事件,而且是彩色~~ 6. Todoist: 我自己写了一个程序…… 目前还在开发中,今天晚上刚开始写。现在已经支持项目查询和TODO查询,并用不同的颜色代表不同的重要级别,还要实现的是添加TODO项和修改已有的TODO项。

Friday, 26 September 2008

我常用的工具

在此介绍一些我常用的工具,只是简单介绍,某些工具的具体介绍我会在之后写新的博客,其他的自己看吧,哈哈~~ 实用的工具 1. Google Calendar 按照字面意思,他的主要功能就是一个日历。我平时主要用它记录所有的事件,例如开会、预约等等。其比较好的一个特性是能够通过邮件提前通知(当然是GMAIL啦),而且可以用不同的颜色对不同的事件进行分类,这样我就可以更好的管理我的时间。例如我可以用一种不同的颜色代表不同的项目事件~~ 2. Google Reader 这个很多人应该都知道,是用来订阅RSS的浏览器。订阅RSS是一种浏览各种信息的好方法,我可以在同一时间阅读来自多个网站的不同信息。我常看的有:
  • The ServerSide:这是Java服务器端技术的大型门户网站,包括各种Java服务器端技术的文章,牛人们的博客和各种库升级的信息和使用方法。有时有些新的东西出来时我会去看看,如果有什么比较好的文章我也会过目一下
  • Java.net communit:这是Java技术最大的社区网站之一,包括Java各种技术,常常会有一些技巧方面的文章,所以我也会看
  • JavaWorld:名字就告诉我们这是Java的世界,包括各种技巧性的文章和一些类库的使用方法
  • Python News:包含Python方面的许多新闻,例如Python3000开发的进展等等
  • Bruce Eckel的博客:牛人,主要写关于Java和Python,所以我经常看看
  • 朋友的博客。。。
RSS订阅最大的好处在于谁有更新我都能知道,这样就不用跑到个大网站挨个搜索了~~ 3. Google Notebook 用来作笔记的服务,界面简洁适用,最大的特点在于可以截取网页中的内容作为笔记内容。例如我要对某个感兴趣的文章进行节选,我可以将其内容拷到我的笔记中,而且格式会完全不变~~更方便的是他提供了一个Firefox插件,装上后Firefox右下角会有一个Notebook的链接,点击后就会弹出一个Notebook的新窗口。并且,Firefox的右击菜单也会多一个节选网页的菜单项,可以将选中的网页内容直接插入到我的Notebook中。工作时,我一般会打开Firefox Notebook插件,将其置在所有窗口最上边并且保持置顶,然后用Compiz fusion的窗口收卷功能将窗口卷起来,要用的时候再按快捷键放下来就可以了~~ 4. TODOIST 这个可能用的人稍微少一点,是专门用来管理TODO的。其特性在于非常简洁,而且提供了Firefox插件,可以和GMAIL整合在一起,随时可以通过邮件通知团队中的各位你的TODO列表是什么。TODO的好处在于我每天去上班一打开TODOIST就能知道我这天应该做些什么,而且所有TODO都可以有不同的重要性(在TODOIST中会用不同的颜色进行标记),所以也就知道改先做什么。TODOIST还有一个特性是可以将TODO进行分级,例如某些TODO是某一个TODO的子集,也就是某一个TODO更详细的描述。 在某个TODO完成后,我可以直接将其划入历史中,这样以后还可以知道我做过写什么,以便写文档和日志。 开发工具 1. VIM(之后会有详细描述) 这可是个好东东,就像某些人所说:“VIM是毒品,是鸦片,用上就会无法释手”。好吧,有人称VIM为“编辑器之神”,我觉得也差不多了~~刚开始用时不大习惯,因为各种命令会使你头痛,各种“与众不同”的按键也会使你抓狂,不过用到后来就会发现用回正常的文本编辑器时才更头痛…… 用上VIM,你能真正感受到不用鼠标,手在键盘上飞速敲打的快感~~有点像广告……加上一些插件和配置之后,VIM会变得无敌。 2. Python和Java(之后会有详细描述) 不用说,这是我最爱的两门语言,至于描述嘛,还是留到之后吧~~这两个包含的工具和库可不少:Java有Ant, Maven, Jakarta Commons, Log4J, Dom4J, Velocity等等,Python有Django, cElementTree, SQLObject, NLTK, Mako等等 3. XML(之后会有详细描述) 最近和XML打交道挺多,也慢慢需要处理许多XML代码,之后我会详细描述和XML相关的处理方法以及处理的工具 4. Latex(之后会有详细描述) 这个写文档的工具可不能少,大小论文(包括毕业论文)都是用它了。我有自己常用的模板,也有VIM的编辑插件,所以每次用起来都非常方便。最近学会了TIKZ,可以直接在LATEX编辑源代码然后生成图片(而且非常漂亮),所以就更喜欢了~~ 目前最缺的是一个Linux底下好的画图工具,虽说Dia什么都能画,但是画出的效果无法和Visio(Windows)或者OmniGraffle(Mac)相提并论。TIKZ倒是可以生成比较好看的图,但要编辑器来太麻烦了……