Apr 8

NB的vim之 Text filter 不指定

felix021 @ 2009-4-8 16:22 [IT » 软件] 评论(0) , 引用(0) , 阅读(5002) | Via 本站原创
刚刚翻看vim的help,发现了usr_12.txt里面的12.3 Sort a list的例子,相当NB。

假设有一个文件a.txt内容为
引用
3
2
5
4
1
使用ggVG命令选中所有行,然后输入 :'<,'>!sort ,于是所有行都被排序了。
当然,也可以使用 :1,$!sort 直接排序所有行。

然后看到了usr_21.txt (翻译一点点出来)
引用
*21.2*  执行shell程序
......
  :[range]!{program}  使用 {program} 过滤文本

注意,如果在"!{program}"之前加上了一个范围,那么这个命令的执行就有很大的不同。
如果不加范围,则正常地执行这个程序;而加上范围以后,其间的内容作为程序的输入,
并被程序的输出替代(过滤)。

sort完就可以uniq,uniq完就可以wc(当然,vim有内置的g ctrl+g计算单词了),再加上sed, awk, grep ....
于是vim变得无限牛B了。。。
Apr 7
http://www.wangtianqi.com/160看到了sunpinyin,
于是抱着尝鲜的态度去试了一下,发现果然比scim自带的pinyin好用阿!

http://mentors.debian.net/debian/pool/main/s/sunpinyin/

下载这三个文件,然后
$ dpkg-source -x sunpinyin-ooxx.dsc
$ cd sunpinyin-ooxx
$ dpkg-buildpackage

可能会遇到几个包没有安装,按照提示安装就行了。
等build完,在上一层目录[ $ cd .. ]就会发现一堆deb包。
注意,有一个data-be,还有一个data-le,be是big-endian的意思,le就是little-endian。
一般我们的pc都是little-endian(小端存储)的,所以可以直接把data-be删掉,然后
$ dpkg -i *.deb

重新启动X以后,就会发现在scim里面有sunpinyin了,比自带的pinyin用着舒服:D

--

p.s. 顺便试试能否用guanghutun/guangfutun打出“广埠屯”,还是不行
于是去百度百科看了一下"埠"的词条,发现原来读作"部",我囧。
Apr 5

启用腾讯的滔滔 不指定

felix021 @ 2009-4-5 01:35 [IT » 网络] 评论(4) , 引用(0) , 阅读(6304) | Via 本站原创
话说以前对这种微博客有一点点反感,不过试了一下,觉得还是挺方便的
QQ签名什么的直接就可以更新进来,也省得我去改公告了。
不过腾讯的滔滔有一点很不爽,就是有些很废的东西,比如“通过 xxx 发布”,以及多余的taotao的logo,不好看。
特别是对于我的这个blog模板,本来就小,还占空间。
于是就写了一小段脚本,去掉这些多余的字符。

参照我的代码吧:
<!--这里是腾讯给的代码的第一句-->
<script type="text/javascript">var taotao_qq=19880711; var taotao_num=3;var taotao_type=0;</script>
<div id="taotao">
<!--这里是腾讯给的代码的第二句-->
<script type="text/javascript" charset="utf-8" src="http://www.taotao.com/js/dkapi.js"></script>
</div>

<script>
try{
    var divtao = document.getElementById("taotao");
    var re1 = new RegExp("<span[^>]*?>通过[^<]*?</span>", "ig");
    str = divtao.innerHTML.replace(re1, "");
    var re2 = new RegExp("<a[^>]*?>(.*?)</a>", "ig");
    str = str.replace(re2, "($1)");
    var re3 = new RegExp("<table[^>]*?>.*?</table>", "ig");
    str = str.replace(re3, "");
    var re4 = new RegExp("<span>(.*?)</span>", "ig");
    str = str.replace(re4, "<b>~ $1</b>");
    divtao.innerHTML = str;
}catch(e){}
</script>
Apr 3
张文之前向我推荐了firefox的这个插件,可以让firefox用起来像vim一样。
虽然看他用得挺爽,但是一直没有换过去。
今天打开linuxtoy一看,vimperator出了2.0的正式版了,于是就去装了一个
果然像vim一样,很好玩。
Mar 31

Wireless USB - 无线USB 不指定

felix021 @ 2009-3-31 00:21 [IT » 其他] 评论(1) , 引用(0) , 阅读(5927) | Via 本站原创
发现最近手头的USB外设越来越多了。
手机,蓝牙适配器(For蓝牙键盘),读卡器,无线鼠标,有线鼠标,有线键盘,两个笔记本音箱,数码相机,U盘,移动硬盘。。。
当然,平时总接在电脑上的就是那个无线鼠标的接收器(果然是双飞燕说的“即插即忘”阿!)
然后就发现,只有三个USB口的小黑经常很囧,特别是有2个USB口是竖着、挨得很紧的,很不方便。
于是今天突发奇想,是否有一种通过蓝牙传输的USB HUB设备呢?
百度和Google告诉我,有一种设备,是USB HUB,也是蓝牙适配器,但是很遗憾,它是通过USB线连接到主机的。。
晚上又搜了一下,看到了D-Link和Belkin推出了无线USB HUB,很牛B,但是很贵,>1K,反正不是我买得起的。
后来又发现,其实我需要的,不就是传说中的WUSB么?
看了一下相关资料,WUSB的三个芯片,2个在2006年6月份就量产了,剩下的一个在2007年1月份量产
日本在2006年建立了相应标准,欧洲也随后建立了标准,我国在2007年建立了草案
按照文章上说的,2008年开始退出WUSB设备,2009年应该是WUSB火爆的一年
但是很奇怪,周围没有相应的产品上市。
WUSB,到底离我们还有多远?


p.s. 想买个PCMCIA转USB2.0的插槽,大概52块钱+11块的邮费。
Mar 30
今天中午到了,测试了一下,在windows下面OK,在ubuntu下面也可以直接搜索到并使用。
然后挂起,到实验室去,开机,又不能用了,囧=.=
搜了好多地方,发现这篇文章提供了可以解决问题的办法:
http://biaoming.javaeye.com/blog/75454

具体步骤如下:
引用
$ sudo apt-get install bluetooth bluez-btsco bluez-passkey-gnome bluez-pin bluez-utils gnome-bluetooth bluez-btsco bluez-compat
$ sudo hidd --search

于是蓝牙键盘就可以用了:)
注意,有些包可能装不上,那就忽略掉

p.s. 按照文章的说法,要把这一句加入要/etc/rc.local里面去,这样开机就可以使用
引用
/usr/bin/hidd --server &




Mar 29
10题,Boluor负责看ABC,Sandy负责看DEF,Felix负责看HIJK。
其实是给自己找理由,拖时间,然后等Board看拿题可以做,嗯。
一番折腾以后开始写。。额。。没题可以写=.=
Boluor看了A题,推导公式,推了半天没思路(怪不得他家教的高中生立体几何听不懂=.=)
于是我接过来,把公式从头推导了几遍,写阿写阿写,写,wa了n次。
发现样例数据是圆柱,出题人太狠了=.= 都不给个圆台的测试一下。。。
然后发现,rRHV是float,不是integer =.= Felix的错,嗯。
后来找了几组比较好算的数据测试,比如1 2 2 19/12PI之类的,都OK,但是还是WA。
而且加了一句 if(hx > H) hx = H; 但是还是WA,囧。
好吧,Sandy看了看,E题是个简单的模拟,于是他上。
写出来代码还是比较顺利的,跑样例也是lose/win/lose,很好很强大,可惜就是WA。
然后多亏了我家可爱宠物加菲的名字比较短,xay,算了一下,xx, 50, xx
然后对照了一下Sandy的程序,xx, 22, xx,嗯。囧阿。
查了一下,原来是累乘器初值是零,改之,交之,AC之,Happy之,2Hour了已经=.=
然后继续A,Boluor以为是精度的问题(因为需要开三次方)
于是根据我的思路,把我一步一步的计算合并,化简
然后囧囧囧囧地测试,发现都OK阿,圆柱的也对,圆台的也对,终于咬牙交了一次。
嗯,结果果然是WA。
好吧,Sandy说,测一组极端数据,于是100 100 100 1000000000,答案是3800+
然后Felix终于反应过来,这TM不是溢出了么?——开水溢出了,嗯。
好吧,我承认我又做挫事了,把上面那句if(hx > H)放在if(r == R)的else里面了=.=
提出来,交之,AC之,Happy之,193min,5次提交-.-
然后Sandy看I题,想到了O(n^2)的算法,想RP之,于是去敲代码
我则拿起J题,好吧,又是推公式,解析几何,我郁闷。
................................坚持不懈地,终于退出了公式
把Sandy换下来,敲代码,到末尾发现有个地方没想明白——算根的时候取正号还是符号?开方的时候呢?
于是回头又仔细想了下,并重新推了公式,发现原先的公式推错了,于是再次把sandy换下来
敲代码,编译,测试,WA掉。
然后和Boluor讨论了下,让他看着我把公式重新推一遍,发现我的公式确实都是正确的
但是代码思路有点混乱,于是重新去改了下,清晰了,测试
然后囧囧囧囧地发现,答案是1.56xxxx,我们的答案是0.0097xx
加起来正好是PI/2,心情激动阿,差点就学后面的同学吼出来了。
然后一查,发现我没有加acos =.=
加上acos,第一组测试数据正确了,但是后面两组在输出-1以后跟上了一堆乱码,我囧。
其实是我的cmp(double,double)把符号写反了,delta<0每次都是false,
于是对小于零的double也开方了,但是输出的乱码又是-1开头的,这个东西相当有迷惑性阿,
不得不佩服裁判出的输出规则,你说要是没解你输出个No Solution多好阿,浪费俺们时间么=.=
然后在Sandy的帮助下找到了这个答案——原来我又做挫事了,sigh。247min
最后的时间都给sandy做他的I题,本来我是帮他看代码的,但是思绪有点混乱,看不下去
Boluor帮他出了几组小数据,在几次RE以后都没问题,交之,很不出意料地TLE了
这个时候还有8min,于是我就去找我家宠物feli玩了,嗯。
--
我发现我们队是慢热型的,去年的校赛他们两个也是这样的,今年的预赛也是这样的。
所以我们实在是不适合参加激烈的ACM比赛,不过还是有一点非常赞的——
俺们队灰常河蟹,嗯。
尽管这一次Boluor没有写出AC的代码,但是A题和J题少了他,也是做不出来的。
同样,在DEBUG那A和J两题的时候,Sandy也给出了关键性的意见。
当247min看到Judge返回J的那个YES以后,我们几乎是同时喊出一声YES!这种感觉真好:D
这次比赛,根据预赛的情况,Felix的期望是三等奖,RP爆发或许有二等奖
最后出了3题,在校内11名,达到了预期目标,三等奖(第三),很满足了(就是奖金有点少=.=)
此外我发现,BFS在做比赛的时候,一直是很开心的~就像去年去NUDT一样~ ^_^
我觉得这才是最重要的,有处得好的队友,一起努力,开心做题。
Mar 23

zz do...while(0)的妙用 不指定

felix021 @ 2009-3-23 12:50 [IT » 程序设计] 评论(3) , 引用(0) , 阅读(7089) | Via 本站原创
最近在看xen/extra/mini-os的代码的时候发现了n多do{ooxx}while(0)的东东,有点诡异,于是搜了一下,茅厕顿开,嗯。

zz from http://www.cnblogs.com/flying_bat/archive/2008/01/18/1044693.html (貌似是个MVP的Blog阿,膜拜)

--

在C++中,有三种类型的循环语句:for, while, 和do...while, 但是在一般应用中作循环时, 我们可能用for和while要多一些,do...while相对不受重视。但是,最近在读我们项目的代码时,却发现了do...while的一些十分聪明的用法,不是用来做循环,而是用作其他来提高代码的健壮性。

1. do...while(0)消除goto语句。
通常,如果在一个函数中开始要分配一些资源,然后在中途执行过程中如果遇到错误则退出函数,当然,退出前先释放资源,我们的代码可能是这样:
version 1
分页: 50/103 第一页 上页 45 46 47 48 49 50 51 52 53 54 下页 最后页 [ 显示模式: 摘要 | 列表 ]