最新 | 最热门 | 最高评价

+0  惨痛教训一则

Tag: UNIX-like | clone | git | stash
liuw 发于 2012年01月30日 01:27 | 点击: 2612 | 展开摘要
这几天都在装机器,开发机、测试机、测试服务器,费了不少时间。

代码原来就是在测试机上的,所以先git clone到开发机上来,然后把测试机重新格掉了,然后再clone回去。

然后发现我新写的代码都不见了,这才想起来那些代码都只是git stash掉,没有真正commit,所以clone的时候是没有备份的。

老老实实重新写了,又费了一个半小时。

吃一堑长一智。以后一定注意。

查看全文: http://www.udpwork.com/item/6756.html

+0  Emacs中的Rectangle

Tag: UNIX-like | emacs | rectangle
liuw 发于 2012年01月08日 02:32 | 点击: 2327 | 展开摘要
记一下Emacs里面的rectangle相关的操作。

Emacs的rectangle概念,就是你mark的起点和终点之间围起来的区域。由于rectangle没有专门的模式去select,所以在显示方面,transient-mark-mode不能只高亮这个rectangle。像在Vim里面,可以用C-v启用Visual mode blockwise,看起来会漂亮点。不过,看不看得清楚并不影响操作。

在Emacs中输入C-h a,然后输入rectangle就可以得到一些相关的

查看全文: http://www.udpwork.com/item/6667.html

+0  配置mutt作为邮件客户端

Tag: UNIX-like | email client | goobook | mutt
liuw 发于 2011年06月03日 14:32 | 点击: 2833 | 展开摘要
我一直是使用Gmail的Web GUI来发邮件的,用起来倒也方便。但是现在要提交patch了,还是换一个常见点的客户端吧。在内核的Documentation/email-clients.txt里面列了一些常见的客户端,由于Gmail会自动把tab换成空格、默认format=flowed的设定以及based64编码的问题,它并不合适作为客户端使用。

上午折腾了一下Alpine和Mutt,最后还是选用Mutt了,觉得用起来还不错。把配置文件记一下。

set from = &q

查看全文: http://www.udpwork.com/item/5163.html

+0  Git让我不爽的一个地方

Tag: UNIX-like | git
liuw 发于 2011年04月24日 21:38 | 点击: 2507 | 展开摘要
这一篇是凑数的,纯属吐槽。

我在看某个项目的代码,想了解一下这个项目是怎么一步一步发展起来的,所以希望从最高的一个commit开始看起,一直看到最新的commit。

可是Git不能很随意在历史里面切换,很怨念啊。Git一旦checkout一个commit之后,它的HEAD就指向这个commit,然后后面的log都没有了。想了再checkout下一个commit,还必须先checkout到master,然后再checkout想要的commit,太繁琐。现在想起SVN的好了。

查看全文: http://www.udpwork.com/item/4918.html

+1  带颜色的less

Tag: UNIX-like | color | command | less | linux
liuw 发于 2011年04月01日 10:07 | 点击: 5143 | 展开摘要
习惯在一些有很多输出的命令后面用管道输出到less来分页,但是分页之后就没有颜色了。

要想带上颜色,还得程序们互相配合。例如

$ ls --color=always | less -R

ls命令如果检测到输出不是一个支持颜色terminal,就不会输出颜色的转义序列;less如果不带-R,就不会解析颜色。

© 2011, liuw. All rights reserved.

查看全文: http://www.udpwork.com/item/4704.html

+0  PHP这货不稳定,得整整

Tag: UNIX-like | linux | nginx | php | spawn-fcgi
liuw 发于 2011年02月24日 16:22 | 点击: 3633 | 展开摘要
昨天把blog迁移到VPS上来,今天nginx就不停地502 gateway error,难不成是我害了大家?

现在的PHP是用spawn-fcgi启动的php5-cgi,死的时候完全没有任何的log,这个是没办法查出来的了。

网上搜了一下,大家的结论是PHP这货不够稳定,可能服务这么多个request之后就会死掉。所以有一个workaround就是设置PHP_FCGI_MAX_REQUESTS这个环境变量,让它在一定的request之后重启。

现在已经改好了,得观察一

查看全文: http://www.udpwork.com/item/4354.html

+0  重置Gnome的Panel

Tag: UNIX-like | gnome | panel | reset
liuw 发于 2011年01月24日 13:09 | 点击: 2879 | 展开摘要
为自己的Ubuntu装了个Global Menu,没有多想就把原来的两个panel都删除了,到想再加global menu的时候傻眼了——所有panel都没有了,也没有办法加上新的panel了。

Google之后找到了一个重置Gnome Panel的办法。

$ gconftool --recursive-unset /apps/panel

有必要的话再把~/.gconf/apps/panel清理一下,然后把gnome-panel进程重启,默认的panel就回来了。



查看全文: http://www.udpwork.com/item/4152.html

+0  Linux内核中的per_cpu变量实现

Tag: UNIX-like | linux | per_cpu
liuw 发于 2010年12月27日 11:28 | 点击: 4514 | 展开摘要
在init/main.c里面有一个setup_per_cpu_areas,会在start_kernel中调用。

这个函数的主要作用就是使用alloc_bootmem为每个CPU在内存中分配一段专属的内存,然后把使用DEFINE_PER_CPU得到的对象模板(存放在.data.percpu一节)拷贝n次(n为配置CPU的个数),再把每个CPU专属区段相对于__per_cpu_start的offset放在__per_cpu_offset数组中(该数组的下标是CPU的ID)。

查看全文: http://www.udpwork.com/item/3899.html

+0  [好文传递]The TTY demystified

Tag: UNIX-like | 分享 | tty | unix
liuw 发于 2010年12月21日 10:14 | 点击: 2277 | 展开摘要
http://www.linusakesson.net/programming/tty/index.php

© 2010, liuw. All rights reserved.

查看全文: http://www.udpwork.com/item/3842.html

+0  LD_PRELOAD的trick

Tag: UNIX-like | ld.so | ld_preload | trick
liuw 发于 2010年12月18日 23:04 | 点击: 3273 | 展开摘要
ld.so(8)在为程序加载动态库时,会根据很多不同的环境变量而有不同的表现。这里关注一个LD_PRELOAD的环境变量,此环境变量指定的动态库可以优先于所有其他的动态库加载。

优先加载的动态库中的symbol会override后加载的symbol,所以LD_PRELOAD有一个比较好用的trick就是把一些程序中用的函数替换成自己的版本。

例如,要把malloc和free替换成为自己的实现,可以用:

$ LD_PRELOAD="path/to/my/malloc.so

查看全文: http://www.udpwork.com/item/3825.html

+0  Linux内核中的通用数据结构

Tag: UNIX-like | circular buffer | data structure | generic | kernel | link list | linux | radix tree | red-black tree
liuw 发于 2010年12月07日 19:33 | 点击: 4258 | 展开摘要
Linux内核中实现了一些通用的数据结构,目前我所知的有:

双向链表:include/linux/list.h

红黑树:include/linux/rbtree.h lib/rbtree.c

基数树:include/linux/radix-tree.h lib/radix-tree.c

环形链表:include/linux/circ_buf.h

Linux内核中的通用数据结构,大部分提供的是“关节”连接点(这个是我自造的词)。这样的好处是程序员还是把主要精力放在目标

查看全文: http://www.udpwork.com/item/3693.html

+0  Linux内核释放页表的过程

Tag: UNIX-like | free | kernel | linux | page table
liuw 发于 2010年12月02日 16:33 | 点击: 6370 | 展开摘要
代码版本2.6.18-xen。

Linux在进程退出的时候,会调用mmput,mmput再调用exit_mmap。

先调用unmap_vmas去回收物理页框。unmap_vmas调用unmap_page_range。

unmap_page_range使用依次释放pud,pmd和pte。

相关函数是zap_pud_range,zap_pmd_range和zap_pte_range。

在zap_pte_range中,使用vm_normal_page把page结构取回,然

查看全文: http://www.udpwork.com/item/3649.html
|<<<123>>>| 一共3页, 33条记录