解决rdesktop登录Windows服务器不能复制粘贴问题

10月 17th, 2008 by swida

在Linux使用rdesktop登录到Windows服务器,在Windows上不能复制和粘贴,解决
的办法:

1. 在进程管理器中,杀掉RDPClip.exe进程
2. 在任务管理器中利用"新任务…"菜单,重新执行RDPClip.exe

另外:可以在rdesktop的命令行上加入:
-r clipboard:PRIMARYCLIPBOARD,这样可以在Linux和Windows支持中文的相互拷
贝和粘贴。

最新的百度mp3 Top 500下载脚本

09月 18th, 2008 by swida

现在百度的mp3连接是通过加密的有javascript生成的,所以一般的脚本已经无法
下载了,现在我编了一个脚本可以下载,不过它依赖于一个基于Gecko的浏览
器,conkeror (www.conkeror.org)使用Debian的可以直接安装:

apt-get install conkeror

下载之后将一些代码复制到~/.conkerorrc文件中(这是默认的rc,如果你进行了定
制请放到合适的rc中),然后启动conkeror,修改mp3path为自己的mp3存储路
径,Alt-x输入top500脚本会自动下载,可以通过一个类似firefox的下载管理器来
查看下载信息。

注意:
1. 脚本没30秒下载一首歌
2. 脚本不会处理下载失败的情况

3. 如果嫌load太慢的话可以按一下 r 键

这个浏览器是模仿Emacs,但它的功能还相当不完善,调试javascript脚本也相当
不方便, 而本人又是第一次写javascript里面可能又许多不合理的地方。

脚本:

var addrs = new Array()
var songs = new Array()
var authors = new Array()
var pos = 0

var mp3path = “/data/music/mp3/”

function parse_and_download_song(buffer)
{
var href = buffer.document.getElementById(”urln”)
var element = href
var spec = element_get_load_spec(element);
file = get_file(mp3path + songs[pos] + “-” + authors[pos++] + “.mp3″)
save_uri(spec, file,
$buffer=buffer,
$use_cache = false);
if(pos < addrs.length)
{
buffer.window.minibuffer.message(”downloading “+ pos + ” of ” + addrs.length + ” song …”);
timer = call_after_timeout(function () {
remove_hook.call(buffer,”content_buffer_finished_loading_hook”,parse_and_download_song);
open_in_browser(buffer, OPEN_CURRENT_BUFFER,addrs[pos]);
add_hook.call(buffer,”content_buffer_finished_loading_hook”,parse_download_list);
}, 10000);        //30 seconds
}
else
{
remove_hook.call(buffer,”content_buffer_finished_loading_hook”,parse_and_download_song);
buffer.window.minibuffer.message(”baidu top500 download finished!”);
}
}

function parse_download_list(buffer)
{
var table = buffer.document.getElementById(”Tbs”);
if(table == null)
return;
var tds = table.getElementsByClassName(”d”);
var addr;
for(var i = 0; i < tds.length; i++)
{
var a = tds[i].firstChild.href;
aa = a.split(”,”)
if(aa[1].substr(aa[1].length - 3, 3) == “mp3″)
{
addr = a;
break;
}
}
timer = call_after_timeout(function () {
remove_hook.call(buffer,”content_buffer_finished_loading_hook”,parse_download_list);
open_in_browser(buffer, OPEN_CURRENT_BUFFER,addr);
add_hook.call(buffer,”content_buffer_finished_loading_hook”,parse_and_download_song);
}, 1);
}

function parse_top_list(buffer)
{
var tables = buffer.document.documentElement.getElementsByClassName(”list”);
if(tables.length == 0)
return;
var table = tables[0];
var tds = table.getElementsByClassName(”th”);
for (var i = 0; i < tds.length; i++) {
var std = tds[i].nextSibling.nextSibling;
addrs[i] = std.firstChild.href;
if(std.firstChild.firstChild.firstChild != null)
songs[i] = std.firstChild.firstChild.firstChild.nodeValue
else
songs[i] = std.firstChild.firstChild.nodeValue
authors [i] = “”
for(var j = 1; j < std.childNodes.length;j++){
if (std.childNodes[j].firstChild != null &&
std.childNodes[j].nodeName == “A”)
authors[i] += std.childNodes[j].firstChild.nodeValue;
}
}

timer = call_after_timeout(function () {
remove_hook.call(buffer,”content_buffer_finished_loading_hook”,parse_top_list);
open_in_browser(buffer, OPEN_CURRENT_BUFFER,addrs[pos]);
add_hook.call(buffer,”content_buffer_finished_loading_hook”,parse_download_list);
}, 1);

}

function open_top500 (buffer) {
open_in_browser(buffer, OPEN_CURRENT_BUFFER,”http://list.mp3.baidu.com/topso/mp3topsong.html?id=1?top2″);
add_hook.call(buffer,”content_buffer_finished_loading_hook”,parse_top_list);
// not open a download manager window, use download_manager_show_builtin_ui instead
download_manager_builtin_ui.show(buffer.window);
remove_hook(”download_added_hook”, open_download_buffer_automatically);
}

interactive (”top500″, “download top500″,
function (I) {
open_top500(I.buffer)
});

Debian上不能休眠问题的解决

09月 12th, 2008 by swida

我的本在Debian上只能挂起不能休眠,经研究休眠的在debian上休眠的过程应该是pm-hibernate->s2disk,而s2disk的配置在/etc/uswsusp.conf中,配置“resume device = /dev/sda3”,/dev/sda3是你的swap分区,然后运行

sudo dpkg-reconfigure uswsusp

配置一下即可。

让emacs中在打开C文件的时候在mode line上显示文件全路径名

09月 4th, 2008 by swida

设置它的mode-line-buffer-identification

(add-hook ‘c-mode-common-hook
(lambda ()
(setq mode-line-buffer-identification ‘("%f"))))

禁止某些帐号的openvpn登录

08月 11th, 2008 by swida

有时候有些员工离职了,想要禁止他登录到vpn,进入/etc/openvpn/easy-rsa:

. vars
./revoke-full name1

如果发生错误,试着编辑该目录下的openssl.conf文件,注释掉最后一节
(pkcs11_section节)再试。
编辑 server.conf文件,加入一行:
crl-verify easy-rsa/keys/crl.pem

我的又一个patch被官方接受了

08月 9th, 2008 by swida

是关于sawfish的,在rep-gtk中支持statusicon的,本来只是想弄一个mail通知程
序,没想能被接受,就是发出来看有没有人需要,没想到被接受了。

patch地址:
http://mail.gnome.org/archives/sawfish-list/2008-January/msg00039.html

接受的邮件:
http://mail.gnome.org/archives/sawfish-list/2008-August/msg00122.html

http://www.nanolx.org/index.php?option=com_content&view=article&id=59

以前做mid时有一个gtk的patch,是解决textview输入法问题的也被接受了:
http://ftp.gnome.org/pub/gnome/sources/gtk+/2.12/gtk+-2.12.10.changes
http://lwn.net/Articles/284938/

解决evince的乱码问题

08月 1st, 2008 by swida

有些pdf文件没有内嵌中文字体,又系统默认的evince打开会是乱码。由于xpdf是
基于Poppler,解决的办法下载
http://poppler.freedesktop.org/poppler-data-0.2.0.tar.gz安装:
sudo make install datadir=/usr/share

关闭显示器和禁止显示器休眠

07月 27th, 2008 by swida

字符界面下键入:

setterm -powersave off -blank 0

在GUI下键入:

xset -s off

GUI下关闭显示器:

xset dpms force off

Emacs调整字体大小的键绑定

07月 8th, 2008 by swida

曾经在emacs的devel中mail list中看到过怎么也想不起来了,今天特意找了一下
C-x C-= — 加大字号
C-x C– — 减小字号
绑定的函数是text-scale-adjust,这里当使用了任意一个按键组合,直接按=/+或
-就能够很方便的继续加大或减小。

mount有用但不常用的选项

06月 25th, 2008 by swida

uid=<uid>,gid=<gid>,umask=0xxx,dmask=,fmask=

这些选项可以改变mount之后目录的权限和属主,使普通用户可以操作挂载之后的
目录。
另外在smbfs中,dmask和fmask已经过时使用file_mode和dir_mode代替。