Year: 2009

ubuntu配置ad hoc网络

  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、掩码、网关就好了。

windows x64函数调用约定(function call convention)

  借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位的参数并不进行高位零扩展,也就是高位是无法预测的垃圾数据。

Starting DHCP server: dhcpd3check syslog for diagnostics

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

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

locale问题:Cannot set LC_CTYPE to default locale

刚购买的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 Read More

博客重新上线

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

Debian lenny backports源

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源了。

C/C++ static语义(semantics)

  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语义的扩展。

VirtualBox主机(host)I/O负载过重导致客户机数据破坏(corruption)

先说一下主机和客户机配置 主机: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 Read More