9
1
2010
0

Ubuntu网络连接显示“设备未托管”解决了

几天前的一次开机,突然上不了网了,再一看,网络连接的图标也没了。郁闷地运行ifconfig,发现是eth0没有分配IPv4的地址。这个我同学曾经遇到过,所以我很淡定地执行sudo dbclient,网络连上了。

本以为问题就此结束,但再次开机时发现,情况依旧,于是再次运行sudo dbclient,同时也加到/etc/rc.local里开机自动运行。OK,万事大吉了。不过,偶尔想到这个,我很疑惑为什么会这样呢?

终于,曙光出现了!一次从挂起的状态恢复后,我惊奇地看到网络连接的图标再次出现,显示的是未连网状态,但我是可以上网的。好奇地点了它一下,只见到以前的连接都没有显示,只有行灰色的“设备未托管”。好了,线索有了,Google一下,我就知道了(这里):

编辑/etc/NetworkManager/nm-system-settings.conf,把里边的managed=false改成managed=true,重启OK!

Category: Linux | Tags: ubuntu 网络
7
28
2010
4

Vim7.3 beta体验手记

昨天在LinuxToy上看到Vim 7.3b放出的消息,看到增加了Python3支持和持久性撒消(persistence undo)功能,于是忍不住从ftp.vim.org下了源码,编译到临时目录中体验了一下,觉得非常不错,遂卸载了前不久才编译安装的带有所有已发布补丁的Vim7.2,打上我自己的修改补丁,正式安装了。

持久性撒消

持久性撒消(persistence undo)是经常按u的人的福音,它把撒消树保存到文件中,从而即使文件被关闭再打开多次,就好像其间没有关闭过一样,所有的修改都可以u回去(当然不能超过'undolevel'的限制)。

要使用此功能,需要设置'undofile'选项。'undodir'指定撒消树保存的目录,默认是当前目录。会扩展'~',但是对于不存在的目录不会自动建立,这点有点不方便。文件名是所编辑的文件完整路径,(在Linux上)其中的'/'被换成了'%'

撒消树文件中会包含这个文件内容的hash值,这样当一个文件有了撒消树文件后,如果它被其他程序编辑过,Vim会忽略撒消树文件,而不会因此让撒消使文件乱掉。

命令:earlier:later也增加了一个单位:f——写入写入次数。比如说,我打开了一个配置文件,编辑N久,保存并测试后不满意,想恢复到原来的样子。怎么办呢?以前我会一直按着u键直到Vim告诉我不能撒消了,或者用备份文件(*~)来覆盖当前文件。现在可以使用命令:earlier 1f直接恢复到上次写入时了。

目前Vim只会去创建撒消树文件,而永远不会去删除它们,需要手动删除。因此,我只好把它们放到自己的tmpfs临时目录中,关机自动清除好了。

Python3接口支持

说实话,这个很令我失望。我是一直希望Vim支持Python3的,但是Python2也需要支持,因为有好些插件会用到的。所以,我同时编译了Python2和Python3特性进去,结果测试时Vim告诉我在同一会话中只能使用其中之一:

E999: Python: Cannot use :py and :py3 in one session

竟然错误号是999。。。

看来启动过程中就有某个脚本调用过:py了。看来我是没希望在Vim中用python3了。。。

相对行号

这个曾经有插件(效率很低地)实现过,什么意思应该很好理解,选项名称为'rnu',和'nu'(显示行号)不相容的。放图:

相对行号

+cursorbind

在比较文件的时候,有个scrollbind功能,可以让被比较的文件同步滚动。但是,在之前的版本中,光标经常并不在同一行。从一个窗口跳转到另一个窗口时,我经常找不到光标的位置了。。。现在好了,有了这个特性,光标的位置也同步了。

PS:这个新特性:help version-7.3中没有提到我太激动了,所以没有看完文档(囧。。。),是我自己对照:ver命令的输出结果发现的哦~~

其它

其它新特性还有:

  • +conceal隐藏文字
  • 增加强度更高的Blowfish加密
  • lua接口

这些我目前还不甚关心,所以没太关注。不过conceal text的确让帮助文件整洁漂亮了:-)。

Category: Vim | Tags: vim
7
26
2010
8

旧曲赋新词:《不用QQ》

Vim Talks群的tigee lee说:每个在linux下上QQ的同学,上辈子都是折翼的。。。


那天傍晚我再次上线 忍受着唯利是图的疼讯
想起曾经走过的岁月 想起曾经热爱的你
我有我想去的地方 但是我 不能离去
只因为你依然在这里 我憎恨却无能为力
我想哭 却流不出眼泪
我相喊 却发不出声音
我愿意 抛弃我的所有
如果能 不用QQ
夕阳洒在我的脸上 风儿拔动我的心弦
我多想你离开我的身旁 没有你我有多幸福
我想哭 却流不出眼泪
我想喊 却发不出声音
我愿意 抛弃我的所有
如果能 不用QQ
我想哭 却流不出眼泪
我想喊 却发不出声音
我愿意 抛弃我的所有
如果能 不用QQ
如果能 不用QQ
如果能 不用QQ

改编自汪峰演唱的《时光倒流》,墙内的朋友可在这里试听或下载这首歌。

Category: 文学 | Tags: 音乐 linux QQ 腾讯
7
22
2010
5

GM 脚本:和WebQQ的滚动标题栏说再见

作为一名中国的Linuxer,我没能像一些幸福者那样摆脱QQ,尽管我一直在见缝插针地推广Gtalk,但收效甚微。在相当长的一段时期内,我还是不得不使用WebQQ。WebQQ有一个特点让我觉得*非常非常*烦人——在来消息后就那么一直一直一直一直地滚动标题栏,似乎有天大的事需要我立即处理否则就性命难保似的。非常非常讨厌。像Gmail或者twitter那样只是在标题栏上加个括号号个数字不行吗?。。。

我再也不要默默忍受下去了!于是,点击GreaseMonkey图标,打开Vim,开始写脚本。

脚本其实很简单,只是我今天才想到可以这样子而已。WebQQ当点击聊天对话框后标题就会变正常。于是,我用Javascript模拟点击。不好监测标题栏的改变,干脆每隔几秒去点一下算了。代码如下:

// ==UserScript==
// @name           quiet WebQQ
// @namespace      http://lilydjwg.is-programmer.com/
// @description    来消息时不要滚动标题栏
// @include        http://web.qq.com/main.shtml?*
// ==/UserScript==

window.clicker = function(){
  var evt = document.createEvent("MouseEvents");
  evt.initMouseEvent("click", true, false, window,
    0, 0, 0, 0, 0, false, false, false, false, 0, null);

  var edits = document.getElementsByClassName('editArea');
  for(var i=0, len=edits.length; i<len; i++){
    edits[i].dispatchEvent(evt);
  }
};

//最多滚动三秒好了
setInterval(window.clicker, 3000);

这里clicker函数需要作为window的一个属性,否则会在页面加载完,脚本执行过后就消失了。


点击此处安装

7
9
2010
1

中键关闭GVim的标签

今天在Vim Talks群群地址)上看到闲耘™问到GVim能否像其它很多程序那样使用中键关闭对应的标签。虽然我自己在Vim鼠标用得比较少,但也曾想过这个问题。现在刚刚考试完毕,所以就去试着改了下Vim的源代码。没想到只需要加六行代码呵~~

#ifndef HAVE_GTK2
	    else
		gtk_notebook_set_page(GTK_NOTEBOOK(gui.tabline),
							    clicked_page - 1);
#endif
	}
	/* The following if is added by lilydjwg, to enable closing tab by
	 * middle-clicking. */
	else if (bevent->button == 2)
	{
	    send_tabline_menu_event(clicked_page, (int)(long)TABLINE_MENU_CLOSE);
	    if (gtk_main_level() > 0)
		gtk_main_quit();
	}
    }

    /* We didn't handle the event. */
    return FALSE;
}

以上的代码包含了上下文。把原本不存在的部分添加到gui_gtk_x11.c的3303行附近,然后重新编译即可~

PS: 这个只支持GTK版的GVim,所以不适用于Windows平台。

在此还要感谢Ubuntu大学群的Edward提供帮助。

Category: Vim | Tags: vim gtk C代码
6
30
2010
1

GM 脚本:转换QQ空间的Javascript链接为普通链接

为什么要访问难用的QQ空间我就不说了,相信各Linuxer能够理解。那为什么要把Javascript链接转换成普通链接呢?因为我喜欢用中键去点链接,让它在新标签页中打开,并且还是在后台打开。这样,在列表页面,我可以用鼠标中键选取自己感兴趣的链接,全部打开,选完好基本上第一篇也就加载好了,不需要等待加载。

无奈QQ空间特别喜欢使用Javascript,以至于我以为QQ空间里的文章都没有可以指向它的URL。后来看到QQ空间支持RSS了,才发现原来每篇文章都是有ID的,像这样可以访问:http://QQ号.qzone.qq.com/blog/文章ID。于是,此问题有解!

Firebug查看下就可以知道文章ID如何获取,然后利用强大的GreaseMonkey写个脚本转换之。思路很简单,但做起来还是遇到了点小问题——貌似在页面加载完毕之前脚本就已经执行过了。怎么办呢?我首先想到了延时,但觉得不太好控制。无意中在GreaseMonkey的右键菜单项中看到了“用户脚本命令”一项,遂Google之,获得此文。于是就用这个了,虽说每次要先去点下这个菜单项有点麻烦,但毕竟我QQ空间看得不是很多,而且这比之前要省事不少。好了,贴代码:

// ==UserScript==
// @name           QQ空间链接转换
// @namespace      http://lilydjwg.is-programmer.com/
// @description    将QQ空间链接从Javascript转换到普通链接
// @include        http://*.qzone.qq.com/*
// ==/UserScript==

var changeLinks = function(links){
  for(var i=0, len = links.length; i<len; i++){
    var link = links[i];
    if(link.href == 'javascript:;'){
      var id = link.getAttribute('onclick').match(/\d+/)[0];
      link.href = 'http://' + window.location.host + '/blog/' + id;
      console.log(link.href);
    }
  }
}

var do_it = function(){
  try{
    var links = document.getElementById('tblog').contentDocument.getElementsByClassName('blog_link');
    changeLinks(links);
    var links = document.getElementsByClassName('tx_fix');
    changeLinks(links);
  }catch(e){
    GM_log(e);
  }
}

GM_registerMenuCommand("转换js链接", do_it, '', '', 'j');

点击此处安装

6
15
2010
5

垃圾武汉电信换广告了

几天没见着这样的推送广告了,现在终于知道为什么了——

整页被电信替换了

网页源代码如下:

<html><head><!--title>... 信息推送,请等候 30 秒,或按刷新键继续 ...</title--></head><script language=JScript><!-- function killErrors(){return true;} window.onerror = killErrors; --></script><frameset rows=*><frame src=http://www.wuhan.net.cn/2010/dx/201005273/2mkd.html noresize></frameset></html>
Category: 反广告 | Tags: 反广告 垃圾电信
6
10
2010
0

多篇Word课件打印,我这样省纸

我需要六个共21页Word文档的课件以供开卷考试时使用。可是打印成21页也太浪费了!字号可不需要那么大,于是使用Ooo调整字号,结果令我郁闷的是,除了大部分文字位于左边而右边很多空白之外,我发现项目符号依旧是很大的字号。这样可不行。而且,一个个文件处理太没效率——我马上就要去应考了啊!考虑过LaTeX,结果因为不会调字体而放弃。于是想起了前些天发现的Google Docs使用的prince。于是开始工作——

首先把Word转成txt。我使用的是wvText这个位于wv包的工具。只能一个个文件转,不过我使用的是shell脚本(因为要手动给那些Word排序),这个就没关系了。然后把内容cat到一起,成为一个大的纯文本文件。然后打开这个文件,用Vim删去空行,然后在利用正则表达式\v第.章|^(一|二|三|四|五|六|七|八|九|十)加上Vim的宏给标题前空一行免得到时候不好找答案。prince是处理HTML的,所以还要把它改成HTML。这个手动就可以了,写上head标签,meta指明编码,正文前后加上<pre>标签,再写点样式表:

pre {
  font-size: 11px;
  font-family: 'Adobe Song Std';
  -moz-column-count: 2;
  -moz-column-gap: 20px;
  -webkit-column-count: 2;
  -webkit-column-gap: 20px;
  column-count: 2;
  column-gap: 20px;
  white-space: pre-wrap;
}

这里用到了我最近学到的多栏布局的CSS,prince认识它。然后使用prince转成PDF,打开一看效果灰常不错,而且只有六页了!

注意,CSS里的white-space是必须的,不然不会自动折行,左栏的过长文字会叠加到右栏。

PS: prince共享版会在每个生成的文件的第一页的右上角加个图标,但打印时并没有打印出来。

Category: 未分类 | Tags: shell prince
5
24
2010
7

将du的输出按文件大小排序

du命令的输出结果要么是不人性化的全部以千字节为单位,要么加上-h参数,显示为1K 234M 2G这样易读的数据。可是,我通常想查看那些大文件/目录,或者那些小文件/目录。单单只用sort命令的话,就不得不在脑海转换那些千字节单位的数据了。做为一个Linux用户,电脑能做的我可不想让人脑来做。Google了一下,发现这个帖子提供了一段代码可行,但是输出效果并不理想,于是我略作更改,写出了以下代码:

sdu () {
  du -sk $@ | sort -n | awk '
BEGIN {
  split("K,M,G,T", Units, ",");
  FS="\t";
  OFS="\t";
}
{
  u = 1;
  while ($1 >= 1024) {
    $1 = $1 / 1024;
    u += 1
  }
  $1 = sprintf("%.1f%s", $1, Units[u]);
  sub(/\.0/, "", $1);
  print $0;
}'
}

这段代码使用sort排序原始数据后,再使用awk来转换数字的单位。使用方法为sdu后加要查看大小的文件/目录就可以了。注意我在代码中加了-s参数,如果希望同时查询子目录的话,需要去掉这个参数。

Category: shell | Tags: shell linux
5
23
2010
10

让火狐使用chrome的更好的Flash Player插件

Linux用户可能都知道,Windows平台的Flash Player是做得最好的,Linux和Mac下的非常耗CPU。而且我发现,我的火狐使用的libflashplayer.so 10.0r45版本的插件,每当上传文件时都会导致整个火狐没有响应,Flash上传控件亦无进度显示,直到上传完成才会恢复。所以,今天向DBank上传一个大文件时,我不得不强行关掉火狐,改用Chrome上传,好让火狐依旧能够浏览网页。令我惊讶的是,Chrome里的Flash上传控件表现得竟然比较正常,虽然CPU使用率还是挺高的,但至少不影响其它操作,而且进度指示也正常。

看来Chrome使用了更好的Flash Player插件。好东西可不能让Chrome独享,我遂进入Chrome的安装目录/opt/google/chrome,果真发现了一个名叫libgcflashplayer.so的so文件。我很高就,二话不说,在我的火狐配置目录下建立plugins目录,然后把这个文件链接过来。重启火狐,在插件列表里发现多了一个版本号为10.1r51的Flash Player插件。再上传测试,一切如Chrome中一样,哦耶!

Category: 火狐 | Tags: 火狐 linux flash

部分静态文件存储由又拍云存储提供。 | Theme: Aeros 2.0 by TheBuckmaker.com