2012年1月6日星期五

Win7 64bit下从硬盘安装Ubuntu 10.10

安装前硬盘情况:
(hd0,1) Win7 boot partition 主分区
(hd0,2) Win7 system partition 主分区
(hd0,4) NTFS partition 逻辑分区
(hd0,5) NTFS partition 逻辑分区
(hd0,6) NTFS partition 逻辑分区
(hd0,7) NTFS partition 主分区
在扩展分区中还有一个24GB的未分区空间,在(hd0,6)之后,(hd0,7)之前。


1. 先给Win7 boot分区分配盘符S,下载GRUB4DOS,将grldr、grldr.mbr提取到S盘根目录下;
注:如果Win7没有隐藏的boot分区,则改为C盘。
GRUB4DOS下载地址:http://nufans.net/grub4dos/tinybit/

2. 打开maverick-desktop-amd64.iso,将casper目录下的vmlinuz和initrd.lz两个文件复制到S盘根目录下;

3. 将maverick-desktop-amd64.iso复制到S盘根目录下;

4. 创建S:\menu.lst文件,内容为(注意大小写):
timeout 6
default 0
title Ubuntu 10.10 64bit LiveCD
rootnoverify (hd0,0)
kernel (hd0,0)/vmlinuz boot=casper iso-scan/filename=/maverick-desktop-amd64.iso ro quiet splash locale=zh_CN.UTF-8
initrd (hd0,0)/initrd.lz

title Back to previous menu
rootnoverify (hd0,0)
chainloader +1

title Reboot the system
reboot

title Halt the system
halt

5. 打开命令行提示符窗口,更改Win7 boot timeout时间:
bcdedit /timeout 10

6. 在S盘根目录下更改boot.ini文件,内容为:
[boot loader]
timeout=6
default=c:\grldr.mbr
[operating systems]
c:\grldr.mbr="GRUB4DOS 0.4.5b"

7. 重启电脑,在出现的Win7启动菜单选择GRUB4DOS 0.4.5b项,然后在接下来出现的grub4dos启动菜单中选择Ubuntu 10.10 64bit LiveCD项,就可以启动Ubuntu 10.10 LiveCD了。

8. 进入到LiveCD模式后,要先卸载isodevice,否则安装程序无法进行分区。在出现Ubuntu 10.10 LiveCD界面时按Ctrl+Alt+F2,运行:
$ sudo umount -l /isodevice
再按Ctrl+Alt+F7进入图形界面,接下来,双击桌面上install Ubuntu 10.10图标启动安装程序。

9. 接下来按提示选语言、键盘、时区等等,需要注意的是分区这一步,选择手动分区,不使用整个硬盘。创建一个100MB的/boot分区;一个4GB的交换分区;一个20GB的ext4分区,挂载点为“/”;。分区可按各自情况决定。

2012年1月5日星期四

6寸相纸用Photoshop自己制作标准证件照

1英寸证明照的尺寸应为3.6厘米×2.7厘米; 
2英寸证明照的尺寸应是3.5厘米×5.3厘米; 
5英寸(最常见的照片大小)照片的尺寸应为12.7厘米×8.9厘米; 
6英寸(国际上比较通用的照片大小)照片的尺寸是15.2厘米×10.2厘米; 
7英寸(放大)照片的尺寸是17.8厘米×12.7厘米; 
12英寸照片的尺寸是30.5厘米×25.4厘米。 
正常的误差应该在1~2毫米左右,如果“差距”过大,那就说明洗印店有问题了。 

整数G Windows 分区公式

(X-1)*4+1024*X

X 是 G 的数目。

Find the best seat before you fly

http://www.seatguru.com/

Find the best seat before you fly

Seat advice for 700+ seatmaps, backed by 25,000+ flier reviews

http://www.seatguru.com/

2012年1月4日星期三

微软官方 Office 2010 集成 SP1 原版光盘镜像

微软官方09月20日新消息:
Office 2010 集成 SP1 原版光盘镜像下载已经现身在MSDN,
http://msdn.microsoft.com/zh-cn/subscriptions/downloads/default.aspx
除了Office SP1 多国语言版这个补丁包本次特别提供之外,英文版和简体中文集成版同时推出。
微软官方本次 office 2010 资源更新清单
mu_office_2010_sp1_x64_732872.iso
This file includes the following languages: Hebrew, Hindi, Japanese, Korean, Thai, Chinese Simplified, Chinese Traditional, Chinese Traditional Hong Kong
ed2k://|file|mu_office_2010_sp1_x64_732872.iso|1252669440|2E4019A24268361166A7104DFDA3C65D|/
mu_office_2010_sp1_x86_732914.iso
This file includes the following languages: Hebrew, Hindi, Japanese, Korean, Thai, Chinese Simplified, Chinese Traditional, Chinese Traditional Hong Kong
ed2k://|file|mu_office_2010_sp1_x86_732914.iso|1337255936|D76235B6E507C40437C120B30C5E12C8|/
简体中文:
Office 2010Professional Plussp1 vol
SW_DVD5_Office_Professional_Plus_2010w_SP1_W32_ChnSimp_CORE_MLF_X17-76734.ISO (1.32 GB)
ed2k://|file|SW_DVD5_Office_Professional_Plus_2010w_SP1_W32_ChnSimp_CORE_MLF_X17-76734.ISO|1412091904|79B75EE3F629A1BD925E6C0AEFDECA10|h=AIU6IHZIHGPXXQU6ZU3P6YERM5OCHP7C|/
SW_DVD5_Office_Professional_Plus_2010w_SP1_64Bit_ChnSimp_CORE_MLF_X17-76742.ISO (1.5 GB)
ed2k://|file|SW_DVD5_Office_Professional_Plus_2010w_SP1_64Bit_ChnSimp_CORE_MLF_X17-76742.ISO|1612515328|032320121E0EE36D8F0C32EC89CA0AB9|h=WLJMFU4TA43V4MRVESJL44NXK34NIU4C|/
SW_DVD5_Project_Pro_2010w_SP1_64Bit_ChnSimp_MLF_X17-76658.iso
ed2k://|file|SW_DVD5_Project_Pro_2010w_SP1_64Bit_ChnSimp_MLF_X17-76658.iso|696616960|00A5C47805084B2D90E9380D163FF1A9|/
SW_DVD5_Project_Pro_2010w_SP1_W32_ChnSimp_MLF_X17-76643.iso
ed2k://|file|SW_DVD5_Project_Pro_2010w_SP1_W32_ChnSimp_MLF_X17-76643.iso|616083456|0E343DD19A9D487312F80EDD4ED4FBFE|/cn_visio_Premium_2010_with_sp1
SW_DVD5_Visio_Premium_2010w_SP1_64Bit_ChnSimp_Std_Pro_Prem_MLF_X17-75849.iso
ed2k://|file|SW_DVD5_Visio_Premium_2010w_SP1_64Bit_ChnSimp_Std_Pro_Prem_MLF_X17-75849.iso|770732032|B0BFCB2BA515B4A55936332FBD362844|/
SW_DVD5_Visio_Premium_2010w_SP1_W32_ChnSimp_Std_Pro_Prem_MLF_X17-75847.iso
ed2k://|file|SW_DVD5_Visio_Premium_2010w_SP1_W32_ChnSimp_Std_Pro_Prem_MLF_X17-75847.iso|674627584|9945A8591D1B2D185656B5B3DC2CA24B|/

2012年1月2日星期一

给朋友女儿的一封信

小Y同学:

好啊!

听到你出生的消息,叔叔(也就是我)和阿姨(也就是我妻子)都非常为你和你的爸爸妈妈高兴。

我们马上就要去LD看看你了。我们也带去我们对你人生的祝福。我们祝愿你拥有出众的美貌,聪慧的头脑,善良的心灵,高雅的举止,宽广的胸怀,人见人爱的性格,广播的学识,健康的身躯,诚实的品格,幸福的生活,殷实的家庭,绚丽多彩的人生,... ...,愿世间的一切美好的都带给你。

我们更加希望你的人生是完整的,人格是健全的,内心是坚强的,思想是自由的,能够接受挑战,有能够战胜困难的勇气,永不气馁,也不会人云亦云。在你的成长过程中有健康向上的理想和目标,并且坚定不移的去为之努力。按自己的方式去度过自己的人生。。。。

还有很多想说,也希望今后能够有更多的机会和你交流。先说这么多吧,祝你好运,快乐,幸福永远与你为伴!

爱你的
叔叔G和阿姨J

于2011年7月 MDB

Linux内核文档之rbtree

Red-black Trees (rbtree) in Linux
January 18, 2007
Rob Landley <[email protected]>
=============================

red-black树是什么样的树,为什么需要red-black树?
------------------------------------------------
    red-black tree(RB树)是一种平衡二叉树,它主要用于存储或者说索引可排序的键
    值对数据。RB树(红黑树)与radix树和hash表都不同。radix树是一种比较适合用于
    存储稀疏的数据集而且将用一个大整数进行插入,删除,查找的操作基础。而hash表
    并不是以某种排序顺序进行存储,而且必须指定大小和hash函数。
    
    RB树与AVL树很相似,但是比AVL树有更好的插入和删除最坏情况的时间复杂度,以及
    O(log n)的最坏查找时间复杂度。
    
    引用:
    在Linux中有很多地方用到了RD树。anticipatory, deadline, 和CFQ I/O调度都使用
    的是RB树进行请求跟踪,还有CD/DVD驱动的包管理也是如此。
    高精度计时器(high-resolution timer)使用RB树组织定时请求。
    EXT3文件系统也使用RB树来管理目录。
    虚拟存储管理系统也是有RB树进行VMAs(Virtual Memory Areas)的管理。
    当然还有文件描述符,密码钥匙,“等级令牌桶”调度的网络数据包都是用RB数据进
    行组织和管理的。
    
    相关资料:
    Linux Weekly News article on red-black trees
    http://lwn.net/Articles/184495/
    Wikipedia entry on red-black trees
    http://en.wikipedia.org/wiki/Red-black_tree
    
    可见RB树(红黑树)在Linux内核中的重要性。
    
Linux内核的RB树实现

Linux内核中的红黑树


红黑树是平衡二叉树的一种,它有很好的性质,树中的结点都是有序的,而且因为它本身就是平衡的,所以查找也不会出现非常恶劣的情况,基于二叉树的操作的时间复杂度是O(log(N))。Linux内核在管理vm_area_struct时就是采用了红黑树来维护内存块的。

先到include/linux/rbtree.h中看一下红黑树的一些定义,如下:

struct rb_node
{
unsigned long rb_parent_color;
#define RB_RED 0
#define RB_BLACK 1
struct rb_node *rb_right;
struct rb_node *rb_left;
} __attribute__((aligned(sizeof(long))));

struct rb_root只是struct rb_node*的一个包装,这样做的好处是看起来不用传递二级指针了。不错,很简单。再看一下下面几个重要的宏,细心的你一定会发现,rb_parent_color其实没那么简单,Andrea Arcangeli在这里使用了一个小的技巧,不过非常棒。正如名字所暗示,这个成员其实包含指向parent的指针和此结点的颜色!它是怎么做到的呢?很简单,对齐起了作用。既然是sizeof(long)大小的对齐,那么在IA-32上,任何rb_node结构体的地址的低两位肯定都是零,与其空着不用,还不如用它们表示颜色,反正颜色就两种,其实一位就已经够了。

这样,提取parent指针只要把rb_parent_color成员的低两位清零即可:

#define rb_parent(r) ((struct rb_node *)((r)->rb_parent_color & ~3))

取颜色只要看最后一位即可:

#define rb_color(r) ((r)->rb_parent_color & 1)