2009年7月24日星期五

Emacs 窗体的透明设置

昨天朋友发来一个代码给我,可以让 windows 上的 emacs 窗体像 X 或苹果那样实现半透 明。代码并不复杂:

(set-frame-parameter (selected-frame) 'alpha (list 85 50))
(add-to-list 'default-frame-alist (cons 'alpha (list 85 50)))

然后经过一番努力,我写了一个切换功能,按f7进入透明,按f8退出透明状态。

(defun transform-window (a ab)
(set-frame-parameter (selected-frame) 'alpha (list a ab))
(add-to-list 'default-frame-alist (cons 'alpha (list a ab)))
)

(global-set-key [(f7)] (lambda()
(interactive)
(transform-window 85 55)))

(global-set-key [(f8)] (lambda()
(interactive)
(transform-window 100 100)))

但是这种东西两键切换显然不够友好,于是我把它改成了一键切换。

(setq is-alpha nil)

(defun transform-window (a ab)
(set-frame-parameter (selected-frame) 'alpha (list a ab))
(add-to-list 'default-frame-alist (cons 'alpha (list a ab)))
)


(global-set-key [(f8)] (lambda()
(interactive)
(if is-alpha
(transform-window 100 100)
(transform-window 85 50))
(setq is-alpha (not is-alpha))))

后来复读了一下代码,觉得还有改进的余地。首先,只是一个透明度切换,没必要占用两个 快捷键,对于我这种用 Emacs 写 N 种东西的人,快捷键是种相当宝贵的资源。再一点,目 前的设计只能支持两种透明度,还多用了一个全局变量。

在 Feather 兄弟的指点下,我突击了一下 emacs lisp ,写出了这样的版本:

;; transform window
;; Anchor: March Liu (刘鑫) <march.liu@gmail.com>
;;
;; This is a script to set emacs window's alpha value.
;; It work well on windows xp and vista with EmacsWin32
;; useage: add below line in your .emacs
;;
;; (load-file "path/alpha-window.el")
;;
;; you can define your alpha-list to set the transform combine
;; bind key with below code:
;;
;; (global-set-key [(f11)] 'loop-alpha)

(setq alpha-list '((100 100) (95 65) (85 55) (75 45) (65 35)))

(defun loop-alpha ()
(interactive)
(let ((h (car alpha-list))) ;; head value will set to
((lambda (a ab)
(set-frame-parameter (selected-frame) 'alpha (list a ab))
(add-to-list 'default-frame-alist (cons 'alpha (list a ab)))
) (car h) (car (cdr h)))
(setq alpha-list (cdr (append alpha-list (list h))))
)
)

这个脚本的特点如下:

  • 单命令轮转任意多个状态
  • 可以用 (global-set-key [(f11)] 'loop-alpha) 把 loop-alpha 绑定到快捷键上
  • 我设定了四个透明度组合,你可以在自己的 .emacs 里重定义 alpha-list ,设定自己 的透明度方案

目前我只在windows上试验过了,X窗口下如果没有开透明效果应该是不行的。当然,X本身 的半透明就很好用了,我在X上从来没想过需要这么个功能==;

应该只能用于图形界面:P。



--
话题越大,废话越多;名字越火星,问题越脑残。
……

劉鑫
March.Liu

2009年7月23日星期四

Postgres 8.4 的更新内容概要

After many years of development, PostgreSQL has become feature-complete in many areas. This release shows a targeted approach to adding features (e.g., authentication, monitoring, space reuse), and adds capabilities defined in the later SQL standards. The major areas of enhancement are:

经过多年开发后,PostgreSQL 在很多方面都具有了完备的功能。这次发布定位于添加功能(例如授权、监控、空间回收),以及添加最新 SQL 标准中的新功能。主要的增强在于以下几个方面:

  • Windowing Functions Windowing 函数
  • Common Table Expressions and Recursive Queries 通用表表达式和递归查询
  • Default and variadic parameters for functions 函数的默认和动态参数
  • Parallel Restore 并行恢复

  • Column Permissions 列权限
  • Per-database locale settings 每数据库区域设置
  • Improved hash indexes 优化哈希索引
  • Improved join performance for EXISTS and NOT EXISTS queries 对于 EXISTS 和 NOT EXISTS 查询优化了查询性能
  • Easier-to-use Warm Standby 易用的温备
  • Automatic sizing of the Free Space Map 可用空间映射自动伸缩
  • Visibility Map (greatly reduces vacuum overhead for slowly-changing tables) 视界映射 (大大缩减了很少变化的表进行优化的负载)
  • Version-aware psql (backslash commands work against older servers) 依赖版本的 psql (旧的服务器上没有的反斜杠命令)
  • Support SSL certificates for user authentication 支持 SSL 认证的用户身份验证。
  • Per-function runtime statistics 每函数运行时统计
  • Easy editing of functions in psql psql 函数更容易编辑
  • New contrib modules: pg_stat_statements, auto_explain, citext, btree_gin 新的附加模块:pg_stat_statements, auto_explain, citext, btree_gin

说明:

PostgreSQL 8.4 Releas Note 我已经翻译完成,完整版本在 http://zerolab.co.cc/?q=node/6 但是我估计我那个免费空间抗不住这么大访问压力,所以会逐篇把主要内容放在这里。

该文档使用 Emacs Muse 编写。

这段时间我会自己开发或者搞一个 Muse2Wiki 的插件,把文档放到 PG 中文社区的 WIKI 上。

 原文地址 http://www.postgresql.org/docs/8.4/static/release-8-4.html

--
话题越大,废话越多;名字越火星,问题越脑残。
……

劉鑫
March.Liu