水木行 迷你无线蓝牙键盘~ 不指定

今天中午到了,测试了一下,在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 &




2009校赛总结 By Felix021 @ BFS 不指定

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一样~ ^_^
我觉得这才是最重要的,有处得好的队友,一起努力,开心做题。

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

最近在看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

管道是不是可以提高运行效率 不指定

看了一个帖子,讨论这个问题的
URL: http://bbs.chinaunix.net/archiver/?tid-1399973.html

第一页4L的说法是正确的,那些的确是滥用管道,不过这个问题放到后面讨论。

感觉第一页末尾beginner-bj的测试方法不很对头,于是自己写了个小程序测试一下:
#include<stdio.h>
#include<stdlib.h>

int main(int argc, char * argv[]){
    char cmd[1024];
    if(argc < 3) {
        printf("Not Enough Parameters.\n");
        return 1;
    }
    int a, b;
    sscanf(argv[1], "%d", &a);
    sscanf(argv[2], "%d", &b);
    sprintf(cmd, "sleep %d | sleep %d", a, b);
    system(cmd);
    return 0;
}


测试结果如下:
引用
felix021@felix021-laptop:~/code$ g++ a.cpp
felix021@felix021-laptop:~/code$ ./a.out 1 2
felix021@felix021-laptop:~/code$ time ./a.out 2 2

real  0m2.035s
user  0m0.000s
sys  0m0.020s
felix021@felix021-laptop:~/code$ time ./a.out 2 3

real  0m3.039s
user  0m0.012s
sys  0m0.016s
felix021@felix021-laptop:~/code$ time ./a.out 4 3

real  0m4.020s
user  0m0.016s
sys  0m0.004s
felix021@felix021-laptop:~/code$ time ./a.out 6 3

real  0m6.034s
user  0m0.004s
sys  0m0.020s


看来管道两头确实是协同工作的(从管道的原理也可以推知)
一头写,一头读,同时处理,这样可以提高CPU的利用率,特别是在多CPU的时候
不过总体来说,我想应该是会多占用一些CPU(进程之间的切换什么的?)。


然后关注一下滥用管道的问题,这个直接引用第二页某楼的vbs100童鞋的大作,应该可以说明问题了:
引用
正确的是
$ grep 'some word' urfile
但是更方便的是
$ <urfile grep 'some word'
这样可方便改 grep 的参数

还有经常用的
$ cat urfile | grep 'some word' | wc -l
其实直接可以用
$ <urfile grep -c 'some word'

WL-520GU 不指定

4.兼容内存颗粒编码
32MB
K4S561632,三星 Samsung
HY57V561620,现代 Hynix
MT48LC32M16,镁光 Micron
64MB
K4S511632,三星 Samsung
HY57V121620,现代 Hynix
HYB39S512160,英飞凌 Infineon

网上查了一下K4S511632在武汉哪里能买到,找到两条信息,记录一下

启浩国际有限公司武汉代表处 ~ 邢建斌
Q1026052092 ~ 13429832768 ~ 027-87741225 ~ widekey2008ic@hotmail.com
武昌区珞瑜路阜华大厦D栋2203室

武汉德创微电子商行 ~ 彭先生
027-51854612/4613 ~ 13476858615 ~ Q344568920 ~ haitao0208@163.com
洪山区珞瑜路158号华中电子市场3288室 ~ http://whdc.ic37.com

--

@ 23:55
Google了一下 "HY57V121620 027",发现只有一篇,就是我的Blog,收录时间:14分前。。。

lrcdis: 外挂式显歌词 不指定

我自己试了下,蛮好的,Ubuntu下面终于有lyrics了。

-- zz from http://linuxtoy.org/archives/lrcdis.html --

lrcdis 是由 xiooli、solcomo、bones7456、oldherl 等同学编写的一个 Bash 脚本,该脚本允许你以外挂方式来显示歌词。目前,lrcdis 支持 Linux 下的大多数音乐播放器,包括 Rhythmbox、Amarok、Quod Libet、Exaile、Audacious、MPD、MPlayer、MOC 等等。

...

首次运行 lrcdis,它将在 $HOME/.config 目录下建立配置文件 lrcdis.conf。通过此文件,你可以决定歌词以何种模式显示(有 CLI、OSD、notify、fifo 等选择)、下载歌词的保存位置、使用哪一个音乐播放器等。

当你使用上述音乐播放器中的一款播放歌曲时,lrcdis 将根据该歌曲的 ID3 标签或文件名来自动下载歌词,并以你指定的模式显示,整个过程由脚本自动完成,无需你额外操心。

lrcdis 可从 Google Code 下载。

http://code.google.com/p/lrcdis/

vim - 批量注释快捷键 不指定

其实得自己做个map

$ vim ~/.vimrc
"F5 for comment
vmap <F5> :s=^\(//\)*=//=g<cr>:noh<cr>
nmap <F5> :s=^\(//\)*=//=g<cr>:noh<cr>
imap <F5> <ESC>:s=^\(//\)*=//=g<cr>:noh<cr>
"F6 for uncomment
vmap <F6> :s=^\(//\)*==g<cr>:noh<cr>
nmap <F6> :s=^\(//\)*==g<cr>:noh<cr>
imap <F6> <ESC>:s=^\(//\)*==g<cr>:noh<cr>