在IRC中输入彩色文字
IRC中竟然还可以发送彩色文字, 真好玩儿. 像这样:
各个client有自己的文档, 大致通用, Irssi的在这里.
eexpress写了个脚本生成随机颜色, 但是用起来麻烦. 去Irssi官网上逛了逛, 发现还真有这样的插件, 只是不支持中文. 于是稍微改了下, 添加了UTF-8的支持, 上图就是修改之后的效果.
修改后的脚本已经发到了Irssi scripts维护邮箱, 应该很快就会更新, 等不及的直接去这里下载. 欢迎反馈.
Smile like a child
来也熙熙, 去也攘攘. 太累了.
不需要深沉, 不需要伪装, 也不需要有”大人的感觉”. 把自己当成孩子吧, 傻傻得笑.
开始twitter
帝都就是不一样啊, 好多大仙儿们的真身都在这儿.
为了避免错失聚餐之类的活动, 我也开始twitter啦, @adam8157, 是该说我稳重还是落伍呢?
RedHat第一天
2011-6-1, 今天顺利入职RedHat, 大家都很nice, 环境也很好, 感觉很不错.
感谢Caspar的引荐, 感谢Sophie在入职问题上的帮助, 感谢Gery在入职后的各种帮助.
其实RedHat没有想象中那么难进, 我也只是做了四份题(C, Shell, Linux基础, Kernel基础), 然后和Leader, HR分别谈了一次就差不多了. 待遇和环境什么的又很不错, 十五天带薪年假, 不定时上班, 不定时下班, 可以在家办公, 穿着随意, 休息室, 台球厅, 免费饮料和零食, 报销家里上网费… 我觉得各位只要技术不错, 对Linux有爱, 就相当值得一试.
还有, 我今天竟然遇到了我好多年没见的初中同学, 在休息室瞪着瞪着俩人就震惊了, 傻乎乎地喊着”啊…你…”, 乐哈哈地用方言叽里呱啦, 呵呵, 有意思.
Congratulations, FC Barcelona
Dropbox太棒了
Dropbox实在是太棒了.
1, 跨平台, Linux/Mac/Windows/移动设备
2, 安全, 传输采用SSL, 存储采用AES-256
3, 速度快, 且使用差分传输技术, 快上加快
4, 自动同步, 让你多个设备上的文件保持同步
5, 操作方便, 文件拖进去或者建立软链接都可以
6, 可以共享文件夹, 实现多人共同协作编辑和分享
7, 有版本控制功能, 文件丢了, 修改错了都能找回来
…
用我的推广链接注册, 初始容量会比默认的2G多250M.
PS: 默认的Linux客户端需要Nautilus, 没有的可以看看这篇Wiki.
让dd显示进度
最近在用dd处理一些东西, 大概执行一次两三个小时的样子, 但是dd默认没有进度输出, 很不方便.
好在, dd接收到SIGUSR1信号时会输出当前的读写进度, 可以利用这个特性和watch达到想要的效果, 例如这样:
dd if=/dev/zero of=/tmp/foo&
watch -n 10 pkill -USR1 ^dd$
ref:
1, http://www.commandlinefu.com/commands/view/4011/check-the-status-of-dd-in-progress
2, http://shellscripts.org/project/ddprogress
彩色Manpages
有句玩笑话: “RTFM(Read the F**ing Manual)”和”RTFSC(Read the F**ing Source Code)”是解决问题最有效的两种方法.
然而这么重要的man默认显示却只有一种颜色, 效果也只是简单的加粗, 下划线和闪烁, 实在是简陋, 效率也低. 所以我通过下面的配置给它加了几种颜色, 看起来舒服多了.
我加到.bashrc中的:
export LESS_TERMCAP_mb=$'\E[05;34m' # begin blinking
export LESS_TERMCAP_md=$'\E[01;34m' # begin bold
export LESS_TERMCAP_me=$'\E[0m' # end mode
export LESS_TERMCAP_se=$'\E[0m' # end standout-mode
export LESS_TERMCAP_so=$'\E[44;33m' # begin standout-mode
export LESS_TERMCAP_ue=$'\E[0m' # end underline
export LESS_TERMCAP_us=$'\E[04;33m' # begin underline
原理其实就是一些ANSI color escapes, 分别作用于原来的粗体, 下划线, 闪烁和提示消息, 格式如下:
{ESC}[{attr};{bg};{fg}m
attr:
Reset 00
Bold 01
Italic 03
Underline 04
Blink 05
Reverse 07
No Bold 22
No Italic 23
No Underline 24
No Blink 25
No Reverse 27
bg:
BLACK 40
RED 41
GREEN 42
YELLOW 43
BLUE 44
MAGENTA 45
CYAN 46
WHITE 47
fg:
BLACK 30
RED 31
GREEN 32
YELLOW 33
BLUE 34
MAGENTA 35
CYAN 36
WHITE 37
我用的是普通的8色, 感觉还好. 但如果你跟主席一样是个颜色控, 而且你用的终端也支持, 可以将bg和fg换成256色的. 格式相应的变为下面这样, fg和bg的取值范围为0-255:
{ESC}[{attr};48;05;{bg};38;05;{fg}m
========UPDATE========
刚Publish就发现了问题, Fedora 14中上面的设置不起作用!
查了下, 原来是因为某些发行版直接使用ANSI color escapes(也就是SGR escape sequence)去处理粗体, 斜体和下划线, 而我先前的做法只适用于老的控制序列. 废话不多说, 详细的解释去看grotty的手册, 解决方法如下:
export GROFF_NO_SGR=1
========UPDATE AGAIN========
写了个脚本(传送门), 可以打印出8色ANSI Color和256色XTERM Color, 方便颜色控们调试.
screen中动态设置标题
screen用起来很方便, 和xterm等虚拟终端配合起来更是花样多多. 例如, 我们可以根据screen的状态去动态地调整xterm的title. 这个功能我之前就实现过(传送门), 但是那些sequences很难懂, 我自己今天再看过都糊涂了, 所以赶紧记下.
hardstatus off
hardstatus string "screen(@%H): %t"
termcapinfo xterm* 'hs:ts=\E]0;:fs=\007:ds=\E]0;\007'
上面是我screen中这部分的配置, 第一句是禁止在hardstatus line中打印警告, 第二句是设置hardstatus line的内容(详见screen手册中的STRING ESCAPES), 第三句最难懂了, 它的意思是把xterm的titlebar当作screen的hardstatus line.
详细说第三句, hs表示终端有个hardstatus line, ts提供进入hardstatus line的 escape sequence, fs是离开时用的, ds是用于清除的. 它们各自的escape sequence是在xterm中定义的, 意义如下:
3.1 xterm escape sequences
Window and icon titles may be changed in a running xterm by using XTerm escape sequences. The following sequences are useful in this respect:ESC]0;stringBEL — Set icon name and window title to string
ESC]1;stringBEL — Set icon name to string
ESC]2;stringBEL — Set window title to stringwhere ESC is the escape character (\033), and BEL is the bell character (\007).
PS: 发现自己真是挺能折腾的…
内核笔记-关于高端内存
内存寻址和管理一直都是理解kernel的重点和难点, 邮件列表中很多人(包括我)对于这部分的理解总是不那么炉火纯青, 经常一个问题提出来, 几封邮件之后就乱了, 除非大牛过来救火, 一群人晕晕乎乎半天也搞不清楚.
几个月前列表里有人问过高端内存的问题, 当时借着那个问题我又好好把这块儿看了一遍, 还记了点笔记, 今天拿出来再复习总结一遍.
Linux把物理内存划分为了三个管理区, 分别为0-16MB的ZONE_DMA, 16-896MB的ZONE_NORMAL和高于896MB的ZONE_HIGHMEM也就是高端内存.
至于为什么这么划分, ZONE_DMA好理解, 因为ISA总线只能对前16MB进行DMA寻址, 这块要分出来不能乱用. 而ZONE_NORMAL和ZONE_HIGHMEM为什么从896MB区分呢? 这还得从内核空间和用户空间说起.
内核空间是指3GB-4GB的线性空间, 用户空间则是0-3GB. 内核进程和用户进程分别活动在自己的空间内. 这里重点说内核空间, 3G-(3G+896MB)这块是直接映射, 减去PAGE_OFFSET(0xC000000)就是真实物理地址, 剩下那128MB(4G-3G-896MB)是用来做各种映射的, 包括整个高端内存的映射, 如果不留出这么一块儿做映射, 内核就只能管理1G的物理内存, 假设你的内存大小超过1G就只能浪费了.
这里有个小小的难点, 有的同学会问, 剩下那些是用户空间啊, 不用你内核, 内核老老实实守住1G的窗口, 剩下的不用你管, 你映射过来干什么? 此言差矣, 其实点出来也就是一句话的事儿, 用户空间的内存使用还不是内核给分配的么? 内核当然要有能力控制所有硬件资源.
PS: 以上都是基于x86架构, x86_64没有高端内存, 有的MIPS32处理器的高端内存则默认从256MB开始.





