十一月 26, 2008

Minutes

上学的时候以为minute就是“分钟”的意思,上班后才知道原来还有“备忘录、记录”的意思。

很早就听说twitter,但是没有尝试,因为觉得不会有人在上面follow我:-(,另外,也不是所有东西都需要发布在网络上。但是记录日常工作还是很重要的,尤其是解决问题的时候,可以避免问题解决了,却忘记是如何解决的这种窘境。

我用Org mode + remember.el实现了一个非常简单的记录功能,配置如下:

(require 'org)
(setq org-directory "~/edata/remember/")
(setq org-remember-templates
      '((?t "* TODO %?\n  %i\n  %a" "~/edata/remember/todo.org" "Tasks")
        (?n "* %u %?\n\n  %i\n  %a" "~/edata/remember/notes.org" "Notes")
        (?m "* %U\n\n  %?%i\n  %a" "~/edata/remember/minutes.org" "Minutes")))
(setq org-reverse-note-order t)
(autoload 'remember "remember" nil t)
(autoload 'remember-region "remember" nil t)
(define-key global-map [(f8)] 'remember)
(setq remember-annotation-functions '(org-remember-annotation))
(setq remember-handler-functions '(org-remember-handler))
(add-hook 'remember-mode-hook 'org-remember-apply-template)

基本功能如下:使用F8调用remember做记录,标题为当前时间,写完后用C-c C-c存到minutes.org文件里,新条目在上,旧条目在下。

十一月 25, 2008

Install kernel modules on fedora 9

不知从哪一天开始,在fedora 9上安装kernel module不再是直接安装kmod-*,而是安装相应的akmod-*,然后系统启动的时候编译并安装。比如安装ATI驱动程序不再是安装kmod-fglrx,而是安装akmod-fglrx。好消息是,使用这个驱动不需要降级X Server的版本。坏消息是,compiz仍然不行啊。

需要注意的是,akmod-gspca只能在2.6.26的kernel上编译成功,2.6.27上目前会编译失败,所以为了使用摄像头,我还是要用前一个版本的kernel启动。

十一月 18, 2008

rtmstat

使用RTM有些时日了,很想知道自己到底完成了多少个任务,以怎样的频率,然而RTM本身并不提供这些功能,幸运的是,它提供API,且CPAN模块WebService::RTMAgent实现了这个API。

编写基于RTM API的程序,首先需要申请API key,然后还需要一个认证的过程,认证辅助脚本如下:

#!/usr/bin/perl

use WebService::RTMAgent;

use strict;
use warnings;

my $ua = new WebService::RTMAgent;

$ua->api_key("your api key here");
$ua->api_secret("your secret key here");

$ua->init;

my $res = $ua->tasks_getList("filter=status:completed");
die $ua->error unless defined $res;

## Collect data
my %stat;
foreach my $list (@{$res->{tasks}}) {
  foreach my $taskseries (@{$list->{list}}) {
    my $list_id = $taskseries->{id};
    next unless exists $taskseries->{taskseries};
    foreach my $task (@{$taskseries->{taskseries}}) {
      my %task_stat;

      foreach my $t (@{$task->{task}}) {
        my ($year, $month, undef) = split /-/, $t->{completed};
        ++$task_stat{$year}{$month};
      }

      # only count taskseries
      foreach my $y (keys %task_stat) {
        foreach my $m (keys %{$task_stat{$y}}) {
          ++$stat{$y}{$m};
        }
      }
    }
  }
}


## Output

sub simple_cvs_output {
  my $input = shift;

  for my $year (sort keys %$input) {
    for my $month (sort keys %{$input->{$year}}) {
      print "$year,$month,$input->{$year}{$month}\n";
    }
  }
}

sub chart_stackedbars_output {
  my $input = shift;
  my $filename = shift;

  require Chart::StackedBars;
  my $chart = Chart::StackedBars->new(400, 300);

  my %stat = %$input;
  my @years = sort keys %stat;
  $chart->add_dataset(@years);

  my @months = map { sprintf "%02d", $_ } (1 .. 12);
  for my $m (@months) {
    my @count_per_month = map { (exists $stat{$_}->{$m}) ? $stat{$_}->{$m} : 0 } @years;
    $chart->add_dataset(@count_per_month);
  }

  my %properties =
    (
     title => "statistics of netcasper's RTM accomplishment",
     text_space => 5,
     precision => 0,
     x_label => 'Year',
     y_label => 'Number of Task Series',
     y_grid_lines => 'true',
     legend => 'right',
     legend_labels => ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
                       'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
    );
  $chart->set(%properties);
  $chart->png($filename);
}

# simple_cvs_output(\%stat);
chart_stackedbars_output(\%stat, 'taskseries.png');

该脚本提供两种方式输出统计数据,默认是图形方式(参见下图),也可以使用csv方式输入。

十一月 16, 2008

mplayer

在fedora 9上使用mplayer总是出现如下错误,没法看片。

Selected font is not scalable. Using ppem=15.
FT_Set_Pixel_Sizes failed.
Wrong bounding box, width <= 0 !
Cannot prepare subtitle font.

后来查到是在/etc/mplayer/mplayer.conf里面fontconfig设置为yes,而相应的font为Sans。要解决这个问题,只要把font设置为一个fc-list命令返回的字体名即可。下面是我的~/.mplayer/config配置文件的内容

subcp="cp936"
font="文鼎PL中楷Uni,AR PL ZenKai Uni"

十一月 10, 2008

SSH tunnel

黑莓的开发环境可以在网站上下载,非常遗憾的是RIM对下载做了限制,说我的IP来自一个不被允许的国家。为了绕过这个限制,学习了一下SSH tunnel,尽管最后下载成功了,然而下载的文件却是坏的。试了好几次都是同样的问题,想着最近下载超过50M的压缩文件就没有一个是好的,包括rar和zip,难道是电信搞得鬼?

不过学会了SSH tunnel还是很爽的,其实就是一条命令而已,却可以让我……,反正我把原来用tor才能访问的网址大多数都换到SSH tunnel上,没有全部换过来是因为列表太长,把常用的都换了,速度比tor快多了。

十一月 06, 2008

rsync

用rsync备份我的网站真是快啊,瞬间搞定,原来用wget可是要好一阵子。其实早就想换到rsync上,可是拖沓的毛病又犯了,恐怕这次又拖了几个月。

说到备份,还真是挺重要的,前两天一不小心把结婚的视频给删掉了,这个懊恼啊,幸好还有光盘,不然肠子都悔青了。dreamhost不是提供了50G的备份空间嘛,有空把这段视频给传上去。

“备份”这个念头都想了好几年了,拖拖拉拉到现在,只是备份了网站和gmail,一个用rsync,另一个用offlineimap。照片可以传到picasaweb,至于电子书、音乐和片子这些见不得光的东西,也只能在自己的硬盘里面呆着,哪天硬盘要是爆了,就一起报销了,连光盘都没刻。