0%

  Network manager老难用了,忍无可忍之后将其remove,据说wicd不错,装上试了试也卸载掉了。其实linux的世界,还是cli用起来最顺手。
  
  配置一个ad hoc网络很简单的,在/etc/network/interfaces里面添加就可以了,我的设置如下:

auto wlan0
iface wlan0 inet static
wireless-mode ad-hoc
wireless-channel 11
wireless-essid Adhoc
address 10.42.43.1
netmask 255.255.255.0
gateway 10.42.43.1

  还是比较直白的,一般我们就一个无线网卡,没意外名字就是wlan0了,选个没有重叠的wifi信道11,设置一下IP、掩码、网关就好了。

  借PC处理器架构由x86向x64过渡之机,MS清理了windows x64平台上的函数调用约定,由原来的数种包括stdcall,thiscall,fastcall,cdecl,pascal等,统一为一种新的fastcall调用方式。这种调用方式得益于x64平台寄存器数量的增加。
  
  windows x64平台fastcall调用约定的主要特性如下:

  • 前四个整型或指针类型参数由RCX,RDX,R8,R9依次传递,前四个浮点类型参数由XMM0,XMM1,XMM2,XMM3依次传递。
  • 调用函数为前四个参数在调用栈上保留相应的空间,称作shadow space或spill slot。即使被调用方没有或小于4个参数,调用函数仍然保留那么多的栈空间,这有助于在某些特殊情况下简化调用约定。
  • 除前四个参数以外的任何其他参数通过栈来传递,从右至左依次入栈。
  • 由调用函数负责清理调用栈。
  • 小于等于64位的整型或指针类型返回值由RAX传递。
  • 浮点返回值由XMM0传递。
  • 更大的返回值(比如结构体),由调用方在栈上分配空间,并有RCX持有该空间的指针并传递给被调用函数,因此整型参数使用的寄存器依次右移一格,实际只可以利用3个寄存器,其余参数入栈。函数调用结束后,RAX返回该空间的指针。
  • 除RCX,RDX,R8,R9以外,RAX、R10、R11、XMM4 和 XMM5也是易变化的(volatile)寄存器。
  • RBX, RBP, RDI, RSI, R12, R13, R14, and R15寄存器则必须在使用时进行保护。
  • 在寄存器中,所有参数都是右对齐的。小于64位的参数并不进行高位零扩展,也就是高位是无法预测的垃圾数据。

debian服务器sudo apt-get install dhcp3-server后,出现错误提示“Starting DHCP server: dhcpd3check syslog for diagnostics. failed!”
其实这是因为还没有配置dhcp引起的,打开/etc/dhcp3/dhcpd.conf增加一个subnet,比如:
subnet 192.168.1.0 netmask 255.255.255.0{
range 192.168.1.100 192.168.1.200;
option routers 192.168.1.1;
}
然后sudo /etc/init.d/dhcp3-server start就可以启动了。

无头服务器?很黄很暴力!

Headless Server是指没有物理控制台的服务器,即没有键盘、鼠标和显示器的服务器。BIOS和操作系统必须都支持Headless Mode才可以运行Headless Server。

刚购买的VPS默认安装的系统是CentOS,没想到CentOS现在这么火,很多VPS默认安装这个。但是我只用Debian或FreeBSD,重新安装了一下Debian lenny AMD64,几分钟就完成了。sudo apt-get upgrade时出现错误提示:

locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory

原来是默认没有设置locale
用这个命令dpkg-reconfigure locales配置一下,选个lcoale就好了,我用en_US.UTF-8。

route -n 时你总能看到这样一条路由

Destination Gateway Genmask Flags Metric Ref Use Iface
169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 eth0

由RFC3330 可知 169.254.0.0/16 为本地链路地址

“169.254.0.0/16 - This is the “link local” block. It is allocated for
communication between hosts on a single link. Hosts obtain these
addresses by auto-configuration, such as when a DHCP server may not
be found.”

当系统配置为使用动态地址,而找不到DHCP服务器时,系统会为本机设置一个169.254.X.X的地址。
这个路由表项是有zeroconf 协议Daemon 程序添加的,我们一般是用不到的

只是注释掉/etc/networks 里面的link-local 项是无法去掉该路由表项的,/etc/networks 与/etc/hosts
文件的作用差不多,是用来关联网络号(数字格式)和网络名(字符格式)的,注释掉该条目后,只是169.254.0.0
无法解析为网络名link-local了.

可以用以下命令来删除zeroconf 相关的程序包
sudo apt-get remove avahi-autoipd –purge
下次启动机器后这条路由就不会自动出现了.

  世界是普遍联系的。
  上个月,CCAV曝光了手机色情,本来这种事情和我们这些安分守己的P民是没有什么牵扯的。做梦也不会梦到和我们有什么瓜葛。但就在上个月末的某一天,美梦中醒来发现博客无法访问了,其他几个站点也都无法访问了。心中暗自惴惴,不知道这次又错在哪里了。traceroute发现到ip的路由出现了问题,也就是ip被封了,闷。记得前几日那备案核查的打过电话,核实的信息都是无误的,而且对方也说没问题,怎么这就又给下线了呢。电话打到接入商那里才明白,原来也是拜手机色情所赐,先强制下线再说,给我的理由是“网页语言为英文,无法进行核实。” 诸位,这也能算是理由吗?是的,那个ip上面是有英文站,难道你们看不懂反要来怪我吗?是不是色情难道还需要看懂英文吗?这种作风实在太彪悍了,无语。这种环境下和谁去讲理呢。我们是鱼肉,人家是刀俎,哪天想切就切呗。
  没几天,这cn域名也开始整治了,据说就算你跑到国外注册域名也逃不过censorship,生猛啊。幸亏原来的com域名都转移到name.com了,看来这cn域名也用不了几天了,先有心理准备吧。
  如果互联网、IT是先进生产力的话,是不是这先进的生产力和落后的生产关系之间很矛盾呢?不然怎么理解呢,让我们拭目以待吧。
  这几天购买了diahosting的Xen VPS,开始折腾nginx了,apache实在太占用资源了。
  实在是受够了这些烦心事,从备案开始就没消停过,从此以后就在国外流浪吧,天知道哪天那些阴魂不散的东西会搞出什么新花样来。
  不过,就算你跑到国外,说不定也要被墙的,随它去吧。

backport的含义是“向后移植”,就是将软件新版本的某些功能移植到旧版本上来,这种行为就称为backport。

Debian向来以稳定性著称,所以就存在一个问题,官方源分发的软件版本比软件本身的版本总是要慢一拍,所以就有了backports源。backports主要从testing源,部分安全更新从unstable源重新编译包,使这些包不依赖于新版本的库就可以在debian的stable发行版上面运行。所以backports是stable和testing的一个折衷。

backports源的使用方法如下:
在/etc/apt/sources.list增加下面的行
deb http://www.backports.org/debian/ lenny-backports main contrib non-free
deb-src http://www.backports.org/debian/ lenny-backports main contrib non-free
然后安装backports源的GnuPG archive key
sudo apt-get update
sudo apt-get install debian-backports-keyring
就可以正常的使用backports源了。

  static可以用来修饰变量(variant)和函数(function)。但static作用于普通变量/函数与类(calss)变量/函数的语义是不一样的。
  static有两种基本的语义,第一种是存储方式(storage),这种语义只作用于变量,不适用于函数,第二种是访问控制(Access Control)。
  用static修饰一个普通变量有两层含义。其一是表示该变量的值在超出作用域范围后仍然有效,一般编译器将static变量放置到全局静态存储区,比如.data或.bss(Block Started by Symbol)节,这就是存储方式语义。其二是表示该变量只在声明的作用域范围内可以被访问,比如, 声明在一个文件作用域内的变量不能被其他文件访问,这就是访问控制语义。
  用static来修饰普通函数的时候则只有一种语义,即访问控制,因为无论如何,函数总是要被编译器放置到.text节的。也就是说用static修饰的普通函数不能被其他文件内的代码访问。
  C++中用static来修饰成员变量和函数的语义稍有不同,其含义表示这些变量或函数是属于整个类(class)而不特定于任何一个该类的对象(object),即使该类没有一个对象产生,仍然可用使用类来访问这些变量和函数。这是C++对C static语义的扩展。

先说一下主机和客户机配置
主机:4颗双核AMD 8218HE CPU,16G内存,windows 2003 R2 server x86
客户机:单颗CPU,1500MB内存,debian lenny amd64

最近经常能遇到客户机运行迟缓(lag),无法正常提供服务的情况,客户机的控制台一般有这样的提示:
end_request: I/O error,dev hda,sector xxxxxxxx(扇区号)
Buffer I/O error on device hda6,logical block xxx(块号)

日志文件/var/log/messages中有这样的消息:
Nov 16 10:54:06 debian kernel: [255938.816139] hda: dma_timer_expiry: dma status == 0x21
Nov 16 10:54:16 debian kernel: [255948.816121] hda: DMA timeout error
Nov 16 10:54:16 debian kernel: [255948.816174] hda: dma timeout error: status=0x48 { DriveReady DataRequest }
Nov 16 10:54:16 debian kernel: [255948.816183] ide: failed opcode was: unknown
Nov 16 10:54:16 debian kernel: [255948.816199] hda: DMA disabled
Nov 16 10:54:16 debian kernel: [255948.965023] ide0: reset: master: error (0x00?)

Read more »