Archive

Author Archive

终端提示符的配置

August 9th, 2010 myrice 9 comments

原来一直对终端命令提示符感到不满, 默认就是没什么特别颜色, 想回去看命令时输出与命令混在一起, 一直以为是终端模拟器问题, 从gnome-terminal换成其它也一样, 后来发现这篇文章 <8个实用而有趣Bash命令提示行> #1(原文在此#2)原来是设置PS1变量的问题, 在~.bashrc 里面相应位置加入/换成如下代码:

1
2
3
4
5
6
7
8
if [ $color_prompt=yes ]; then
    PS1='\n\[\e[1;31m\][\w]\[\e[0m\] \[\e[1;35m\][ \[\e[1;36m\]$(/bin/ls -1 | /usr/bin/wc -l | /bin/sed "s: ::g") files \[\e[1;33m\]$(/bin/ls -lah | /bin/grep -m 1 total | /bin/sed "s/total //")b\[\e[0m\] \[\e[1;35m\]]\n`a=$?;if [ $a -ne 0 ]; then echo -ne "\[\e[01;36;41m\]{$a}"; fi`\[\e[01;36m\][\t \u]\[\e[00m\] \[\e[01;34m\]\W`[[ -d .git ]] &amp;&amp; echo -ne "\[\e[33;40m\](branch:$(git branch | sed -e "/^ /d" -e "s/* \(.*\)/\1/"))\[\e[01;32m\]\[\e[00m\]"`\[\e[01;34m\] \$ \[\e[00m\]'
    # PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
else
    PS1='\n[\w] [ $(/bin/ls -1 | /usr/bin/wc -l | /bin/sed "s: ::g") files $(/bin/ls -lah | /bin/grep -m 1 total | /bin/sed "s/total //")b ]\n`a=$?;if [ $a -ne 0 ]; then echo -ne "{$a}"; fi`[\t \u] \W`[[ -d .git ]] &amp;&amp; echo -ne "(branch:$(git branch | sed -e "/^ /d" -e "s/* \(.*\)/\1/"))"` \$ '
    # PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi
unset color_prompt

效果如下:

其中, 为2行, 第一行2个中括号中间分别是 完整路径, 文件数(包括文件夹不含隐藏文件)与文件大小(不包括子文件夹的大小). 第二行是日期, 用户名, 当前文件夹, 如果是git目录话会加上branch信息(此处代码参考Ai.Freedom的文章#3), 然后是提示符, root为# 普通用户为$ 如图.

如果文章到此了, 你肯定自己抓狂不然就是想弄死我了… 因为提供的参考文章与此文都是不讲原理只有效果的. 那代码一坨在那,看着就想死. 而且自己无法定制. 然后经过这2天的乱搞, 终于理清如下:

1. 其实控制提示符变量不止PS1, 还有PS2, PS3, PS4 和PROMPT_COMMAND, 参见 #4
2. 引号内容主要为 命令行提示符的反斜杠转义字符 #5
3. 其中有许多 \e[31m \033[34;40;7m 这种抓狂的东西, 是很老的终端机VT100的转义符, 此网页#6最后有说明, 简要说明下就是 \e 与 \033 是一个东西, 都是Escape 033的8进制在ASCII里面代表ESC. 格式:"\033[字背景颜色;字体颜色m字符串" 来控制颜色,高亮等.

最后说一句, 代码对于可以用有颜色的终端与不能的 分别设了PS1, 对就then 与 else下的代码, else的代码用 正则替换then中等到, 表达式为:
\\\[.*?\\\]

References:

#1: 8个实用而有趣Bash命令提示行 http://coolshell.cn/?p=1399
#2: 8 Useful and Interesting Bash Prompts http://maketecheasier.com/8-useful-and-interesting-bash-prompts/2009/09/04
#3: Ai.Freedom的PS1的git配置 http://aifreedom.com/technology/155
#4: PS1, PS2, PS3..的说明 http://www.thegeekstuff.com/2008/09/bash-shell-take-control-of-ps1-ps2-ps3-ps4-and-prompt_command/
#5: 命令行提示符的反斜杠转义字符 http://www.unixresources.net/linux/clf/newbie/archive/00/00/19/80/198022.html
#6: VT100终端控制序列 http://www.unixresources.net/linux/clf/newbie/archive/00/00/19/80/198022.html

Categories: Linux Tags: , , , , ,

超有爱的用notify-send提示(基于Wow!Ubuntu 命令修改)

August 7th, 2010 myrice 1 comment

Wow!Ubuntu 里面有个用notify-send 提示的小命令(点这儿查看), 但是比较单调, 其实之前看过一个用如 notify [command] 形式的(找不到但是>_<),写了下,把notify写成脚本, 但是感觉这样Gnome-terminal的自动补全与ls等的颜色会丢…于是感觉还是Wow!Ubuntu上更好用些. (使用前请看之前链接, 只是改了 alert 命令) 在.bashrc 里面加入(请先装 sudo apt-get install libnotify-bin )

1
2
3
4
5
6
7
8
9
10
alias alert_helper='history|tail -n1|sed -e "s/^\s*[0-9]\+\s*//" -e "s/;\s*alert$//"'
alias alert='
status=$?;
if [ $status = 0 ]; then
     notify-send -i /usr/share/icons/Breathe/scalable/status/dialog-information.svg "[$status] $(alert_helper) Finished ^_^" ;
elif [ $status = 127 ]; then
     notify-send -i /usr/share/icons/Breathe/scalable/status/dialog-question.svg "[$status] $(alert_helper) Command cannot be found ?_?" ;
else
     notify-send -i /usr/share/icons/Breathe/scalable/status/dialog-error.svg "[$status] $(alert_helper) Error &gt;_&lt;" ;
fi'

截图:
分别是成功\找不到命令\错误的命令的图

其中图标来自一个主题叫Breathe, 位置命令所示的地方,当然也可以自己改下. 文件在此下载: status.tar

Categories: Linux Tags: ,

CUDA深入浅出学习小结(1)

July 31st, 2010 myrice No comments

平方和的并行计算
1. 直接分别使用CPU平方和, 一个Thread 一个Block的计算平方然后CPU计算平方和, 在10^7数据面前, CPU表示毫无压力(0cycle), 9600MGS惨不忍睹(多少cycles没记下)
2. 使用256个Threads后, GPU效率大大提升
3. 使用32blocks后, GPU再次提升效率
4. 此时已经有 32*256 = 8192 个线程在跑, 利用CPU计算和的时间被忽略造成不准确, 把计算和运算放在GPU中, 出现小幅性能下降
5. 计算sum可以并行化, 用树状图表示如下:

大意为第一次把1回到0上, 3加到2上, 因为所有线程都是要发起的, 对于判断哪些线程要执行加法很重要, 一个很简单想法是线程ID对offset的2倍取模看是否为0, 代码如下:

1
2
3
4
5
6
7
8
9
__syncthreads();  //make sure all threads are complete
extern __shared__ share[];
int offset=1
while( offset < THREADNUM ) //THREADNUM is the number of threads per block
{
    if ( threadIdx.x%(offset+offset)==0 )
        share[threadIdx.x] += share[threadIdx.x+offset];
    offset += offset
}

然而时间并没有减少, 发现取模运算太费神, 在深入浅出书上如此写

1
2
3
4
5
6
7
8
9
10
    __syncthreads(); 
    int offset = 1, mask = 1;
    while(offset < THREAD_NUM) { 
        if((tid & mask) == 0) {  // tid = threadIdx.x
            shared[tid] += shared[tid + offset]; 
        } 
        offset += offset; 
        mask = offset + mask; 
        __syncthreads(); 
    }

其中mask在里面的古怪作用正好使得結果如此…还是不太理解= =
6. 据说这方法会有问题..他说后面再说, 而采用另一种更简单方法, 大意是前半与后半相加不断递归…

1
2
3
4
5
6
7
8
    offset = THREAD_NUM >> 1; 
    while(offset > 0) { 
        if(tid < offset) {  //tid = threadIdx.x
            shared[tid] += shared[tid + offset]; 
        } 
        offset >>= 1; 
        __syncthreads(); 
    }

现在看求矩阵乘法了, cudaMemcpy 与 cudaMemcpy2D 区别还是没看懂… C语言2维数组与1维数组不是一样的…吗… int a[N*M] == int a[N][M] 那用cudaMemcpy 一下复制 N*M 不就得了…谁知道为何…

终于考完了

June 28th, 2010 myrice 6 comments

终于考完了,我却并没有什么喜悦,感觉全身像被抽空了一样,空虚无聊。。

是因为看到身边的一个个全都成双成对了吗?

还是怕?
怕回归到那个懒散的假期,有时真的很矛盾,忙时候想闲,而真正闲得时候却真的闲得蛋疼,我设法使自己忙起来。。

这学期感觉什么都没做,就考了个GRE,真是浪费时间浪费精力的活。。还好有 “大美人, 善解人意, 活泼可爱, 对我很好, 一点儿都不胖, 特别不爱学习,总睡觉,很聪明, 大好人!”[囧] 的姐姐和我一起考,才渡过了那段想死又美好的时光。 然后就华丽丽地把她送给了别人,咔咔~

课内就萎了。。超级萎,这学期成绩肯定很难看。。。。

[囧]: 引号里不是我写的不是我写的真不是我写的。。

Categories: Other Tags:

虫儿飞

June 28th, 2010 myrice 2 comments


黑黑的天空低垂
亮亮的繁星相随
虫儿飞虫儿飞
你在思念谁

天上的星星流泪
地上的玫瑰枯萎
冷风吹冷风吹
只要有你陪

虫儿飞花儿睡
一双又一对才美
不怕天黑只怕心碎
不管累不累
也不管东南西北

虽然是童谣,但突然发现这歌有种 令人愉悦的忧伤 (Agreeable Melancholy)

Categories: Other Tags:

吮指原味鸡与实事求是石

March 9th, 2010 myrice 7 comments

KFC吮指原味鸡

人大实事求是石

人大东门立了一块石,上面题字“實事求是”。昨天半夜时分, 看到@___matrix转发的 “真相:“突然发现实事求是石的形状像KFC吮指原味鸡。”(via人人网)”

开始我看到的是,实事求是就像原味鸡块一样。于是感觉这个比喻太形象了,因为实事求是不是一件容易的事,就如那原味鸡块一样,即难看又难吃,每次吃全家桶省下的就是它。可是呢,另一方面,它却是最管饱的。

后来经@___matrix提示才发现,她说的是人大的”实事求是石”(>_<)。不过仔细加回忆发现还真是,今天特意找了图对比一下,何止是像呵!

(插播:累了,本来想写成Thinking的,后来算了,写点搞的吧)

洗完回来继续,关于这块石由来我不知,但是人大的领导实在是太有先见之明了,他们预料到了不久,必将有个快餐店,他们名字叫肯德基,必将有个产品,他们名字叫原味吮指鸡,用这块石头的形状类似原味鸡教导一代又一代吃过原味鸡知道那种充实与乏味的同学们:做学问,就要老老实实,可能开始觉得很新鲜,就像吃下第一口,会有种感觉,不错,当吃下越来越多的口时,突然发现,这鸡块怎么这么乏味啊……这种感觉就像搞研究,只有死心到底吃下去每一口的人才能体会到吃饭的那种饱感那种充实。如果饥饿如狼,就如对知识的渴望,才能体会原味鸡的真实品味。什么叫实事求是,从吃原味鸡的感受可以知道,那个过程由新鲜到乏味,再到充实。像我这样吃原味鸡这种只能感觉到乏味这一境界的,在学习也是如此(TOT)。OTZ实事求是石,下次我要去膜拜下。

还有一个疑惑,会不会下去一见到这块石头就想到一个非常大的吮指原味鸡呢?>_<

好玩的小游戏推荐《麦克斯与魔法标记》(Max and the Magic Marker)

February 9th, 2010 myrice 11 comments

2D, 类蜡笔物理学. 物理引擎真是发展了. 提示下, 把Extra达到有神奇效果出现.

更多图片请见:

http://www.verycd.com/topics/2798966/

Verycd上评论说有修改IE主页的情况.

点击这里下载(非VeryCD解压即玩版)

找到一些真正属于自己的东西

February 5th, 2010 myrice 4 comments

图:摘自Sohu.com

<神话>这个电视剧终于在几天不懈努力下看完了, 部分3X速度. 因为CCAV也在放这个, 实在是惊奇. 总感觉审查那帮人都顽固不化, 对于这种带有”神秘”, 传播”迷信” 思想(仙剑是这么被删掉2集的)的电视居然没删减(50集整,很难得)全放出来了, 成龙果然不是盖的.

在Xunlei上看了前面的部分, 我很惊奇发现支持赵高的却很多.难道厚黑思想已经是国人基本思想. 虽然厚黑是否才可成事值得怀疑, 但也要适可而止. 赵高是很实在, 但是我却一直感觉他忘记了某些东西. 而小川这种人是不存在的, 一种美好的角色幻想而已.

一个人活2000年又怎样, 痛苦的只有钱权功利, 而责任与自由也是束缚人的枷锁. 赵高, 钱权功利; 小川在责任与自由之间挣扎. 真正属于自己的东西也只有自己的经验了, 别人抢不去的. 所以, 去体验吧, 体验跌宕起伏的生活, 去体验追求奋斗的快感, 去体验哄哄烈烈的爱情. 这些, 体验过, 结果并不重要, 那应该是理所当然的. 过程与结果, 可能只有一个结果,所有的过程都通向那个结果, 值得留恋的也只有过程中的滋味.

Twitter上看过有趣的问题:

@gaojiamin: 初三时看过,最记得里面那句“是不是选择任何一个方向,都会游向同一个宿命呢?” RT @chenxiaoming: RT @faydao: 你以为你有很多路可以选择,但是在你四周有很多看不见的墙,其实你只有一条路可以走——《悟空传》

还是我觉得很有用的一句话(摘自: Steve Jobs在Stanford 2005年毕业典礼上的演讲)

Don’t be trapped by dogma

And most important, have the courage to follow your heart and intuition.

嗯. Follow heart and intuition.