New habits

养成新的习惯总是很难,比如我原来计划每周举两次哑铃,但是经常忘记,有时候一次都没有。现在每天晚上8:45准时运动,因为我定了闹钟。通常我晚上要么读blog,要么写点代码,兴头上来的时候,别的事情就全忘记了,所以能养成一些好习惯全靠闹钟了。我举哑铃的时间并不长,大概就5分钟,然后再花10分钟左右把刚才打断的事情收个尾,就去洗澡了。

9:30开始学英语,这也是最近才养成的习惯,每天一课新概念(第二册),磁带听两遍,自己读两遍,课后的练习做一遍,最后在背诵一遍。学完英语之后就上床玩我的Nokia N800,内容之一就是阅读Perl 5.10的文档。

在这三个新的习惯中,学英语是最容易放弃的,因为不感兴趣,而且内容浅,收获比较少。

其实生活中有好多习惯需要养成,由于没有坚持,多数都半途而废了。坚持总是一件很痛苦的事情,但是如果有一种方法能够减轻痛苦,甚至还能增添乐趣的话,那么它对我们养成更多的好习惯是非常有帮助的。

Attach file for html mail

上次说到可以用markdown配合gnus来发HTML格式的邮件,可是当需要添加附件的时候,上述方法就不起作用了。附件部分的信息被当成邮件的正文转为HTML格式。解决方法是当没有附件时自动将邮件正文转为HTML格式,否则手工转换。实现方式如下:

(setq markdown-command "markdown")

(defun mimedown-region (beg end)
  (interactive "r")
  (save-excursion
    (let ((orig-txt (buffer-substring-no-properties beg end)))
      (shell-command-on-region beg end markdown-command nil t)
      (insert "<#multipart type=alternative>n")
      (insert orig-txt)
      (insert "<#part type=text/html>n<html>n<head>n<title> HTML version of email</title>n</head>n<body>")
      (exchange-point-and-mark)
      (insert "n</body>n</html>n<#/multipart>n"))))

(defun mimedown-message-body ()
  (interactive)
  (save-excursion
    (message-goto-body)
    (mimedown-region (point) (point-max))))

(add-hook 'message-mode-hook
   (lambda ()
     (add-hook 'message-send-hook 'mimedown-message-body)))

(defun remove-message-send-hook ()
  (interactive)
  (remove-hook 'message-send-hook 'mimedown-message-body))

(defadvice mml-attach-file (after remove-mimedown-message-body
      (file &optional type description disposition))
  (remove-message-send-hook))

(ad-activate 'mml-attach-file)

手工转换使用命令`markdown-region',而message-mode-hookmml-attach-file(添加附件的命令)的after advice分别负责HTML自动转换的打开和关闭。使用advice是因为mml-attach-file没有hook可以使用。