我喜欢的2句:
There is a thin line between coincidence and faith
– the mummy returns
Losing all hope is freedom
– fight club
from http://hi.baidu.com/joey/
copy了一些旧的文章到这里,好让这里显得不是很空
如果,人的确有来生
如果,这篇文章能够一直保存下来
如果,转世后的我能够读到这篇文章
我该在这篇文章中写些什么,才能让下辈子的我认出,我是他的前世呢?
似乎是不可能的,因为我不知道转世后能够保留下什么,对吧?
好像是个无聊的问题……
未来的某一天,互联网将会变成这个样子:
1,IE、firefox 都被遗弃,取而代之的是 secondlife 客户端和其它各种兼容的客户端
2,逛网站就像逛街一样,每个网站都有各自的 3d 虚拟形象,可以是一栋房子,也可以是一个花园
3,如果你是某个网站的注册会员,你在上面会有一个虚拟形象,可以根据你的爱好随便设计
4,如果你想开个个人网站,可以找服务商买块地,在上面盖房子或者任何东西
5,当然,也有免费的个人空间,都是类似的房子,你可以选择不同的皮肤、不同的布置
6,写博客就是在你的个人空间的墙或是黑板等地方写字
7,你的个人空间将会有邻居,明星博客的邻居位置大概可以拿来卖
8,你还可以在你的个人空间的屋顶或是墙壁上安放广告,赚点儿虚拟货币(可以用来买虚拟道具或是以一定汇率兑成rmb)
9,要真正做好一个虚拟空间,你还必须懂得编程序,就像写html和css一样,只不过变成了LSL
10,网上购物变得更直观了,你可以拉着朋友在虚拟的世界里随便逛,不论你们是否住的很近,而且也不会觉得逛得腿疼
——周末玩了2天 secondlife 诱发的联想
一直以为这句话是劝学的,活到老,学到老。才发现原来不是这么回事。
原句:吾生也有涯,而知也无涯,以有涯随无涯,殆已 —— 《庄子·养生主》
庄子的这句话其实是这样说的,“吾生也有涯,而知也无涯,以有涯随无涯,殆已。”我庄子的生命是有限的,但我面对的知识是无限的,要我以本来有限的生命, 去追求那种永远看不到边的尽头,这样会搞死自己的”
嗯,越来越认同庄子了,呵呵
最近学习xml,试图把我空间的
用xslt解析一下,然后就碰到了一个问题:
文章内容是用<![CDATA[]]>标记起来的,使用<xsl:value-of select=”description”/>后,得到的页面中html tag都被显示了出来,like this:
很久没有遇到过梦魇了。<br> <br>
网上搜解决方法,得到的方法是:<xsl:value-of select=”description” disable-output-escaping=”yes”/> 在IE下问题解决了,可是偶一直用firefox,不起作用
继续在网上搜,baidu来google去,渐渐认识到原来全世界人民都遇到了这个问题,是firefox没有支持disable-output- escaping。也有人提了bug,而firefox的开发人员在2001年就给出了解释 ,他们认为遵守标准比满足用户的需求更重要。于是这个不被他们认为是bug的bug至今也没有被修复。于是全世界想在firefox下使用 disable-output-escaping的人们,都不得不多写n行的js代码来自己处理这一问题。
我在想,如果这是在百度,早就当作重大事故做case study了……
长这么大,看过了很多很多的名人名言,大多数都很有道理,但大多数也都只是看过想想就忘了。真正能够很自然记住的很少。
这次可不是我说的名言了啊
第一个:
世上只有一种英雄主义:那就是看出世界的本来面目——并且去爱它!
罗曼·罗兰说的。这个是高中时在看《名人传》时看到的,当时正非常的厌学,感觉为了那么一次高考,就要学这么多将来根本用不到的东西(至少当时没看出来以 后有什么用),于是整个人都有那么点儿愤世嫉俗。看到这句话时真有那么一种被点醒了的感觉。社会的现状常常是个人力量难以改变的,既然这样,做不到屈原那 样的举世皆浊我独清,那随其流而扬其波也很好。
第二个:
要知道,最富有的人,不是拥有最多的人,而是需要最少的人。
这个是在网上的一个叫做《interview with god》的flash中看到的。不知道是谁说的,实在说的很对。在这之后,我渐渐的发现,基本上一切不好的感觉(愤怒、恐惧、嫉妒、悲伤……),都是由于 我们所期望的太多。其实快乐与不快乐,只是因为需求被满足与不被满足的结果。所以,人,还是应该清心寡欲一些
写这么个标题是为了让搜索引擎更容易搜到,嘿嘿
终于还是忍不住在机器上装了linux。原本打算自己从编译内核开始手工打造一个linux系统,但编译内核首先得有一个能够运行的linux环境(先有鸡还是先有蛋的问题),再加上手工打造linux系统对我来说实在是个比较浩大的工程,所以还是先装个发行版吧。
选了ubuntu,主要是因为安装简单,界面漂亮。这2点上已经快赶上windows了,但不得不说MS的UE设计确实牛。
言归正传。安装过程中还是遇到了一些问题,在网上搜来搜去,得到了一些帮助,不过也有一些问题网上没有答案,所以写下来,希望能够帮助将来遇到这些问题的人:)
first,安装grub的问题。由于不想把grub装到主分区上(总觉得windows重装的频率会高些),所以在安装的时候选择了grub安装到 sda10(ubuntu所在分区)。结果在装到grub的时候安装失败,退出了……
解决方法:
mkdir /tmp/mnt
sudo mount /dev/sda10 /tmp/mnt
sudo grub-install /dev/sda10 –root-directory=/tmp/mnt /dev/sda10 (这一步,网上很多人问为什么grub-install失败,我一开始也是,提示”Not found or not a block device”,其实只要执行了mount,然后加上–root-directory就ok了)
然后上网搜一个menu.lst放到/boot/grub/下,改一改。
然后再mount一个windows分区,执行:
sudo dd if=/dev/sda10 of=/mnt/win_c/ubuntu.bin bs=512 count=1
重启到windows下把boot.ini里加上ubuntu.bin就大功告成了。
另外,安装grub之前最好用dd把mbr的512字节备份出来,否则装错了很麻烦的。
second,安装vim的问题。默认安装的vim居然连syntax on都不支持,只好再apt-get install vim了。但是安装完之后vim还是有个问题:在终端下一些关键字显示成灰色,根本没法看。百度了半天,是有不少人碰到同样的问题,但回答基本都一样 colorscheme evening。可是对于我来说没有效果啊。后来怀疑到显卡问题,ubuntu好像对ati的显卡支持不好。在终端下ll /dev了一下,发现原来应该显示成黄色的字体全都显示成灰色,看来跟vim没关系了。
解决方法:
在grub.lst里,kernel一行后面加上vga=791 (1024*768的分辨率),然后重启进终端,OK了。
最后,ubuntu的root口令的问题。其实很简单,sudo passwd root,然后先输入第一用户的密码就可以设置root的口令了。不过好像不是随便一个用户就可以用su成为root的。
伪造ip的压力工具写好啦,证实了我之前的想法是可行的。
使用packet socket侦听网络上的数据包,从中找出tcp三次握手中的第二次的包,就可以完成tcp连接的建立了。这在本机压本机没有问题。但如果需要从另一台机器启压力,就需要修改被压机器的路由了,因为在交换网络中无法侦听到发给其他的机器的包。
修改路由也需要root权限,执行以下命令:
route add -net xxx.xxx.xxx.xxx netmask 255.255.0.0 gw xxx.xxx.xxx.xxx
需要注意的是,packet socket的close耗时很久,需要几十甚至上百毫秒。所以不能在每次需要侦听的时候建立侦听的socket。也不能每个工作线程中都打开一个 socket侦听,因为这样会需要过滤很多不需要的包,压力速度还是很低。可行的方法是在一个单独的线程中打开侦听socket,循环读取,将符合地址的包放进一个队列,工作线程从该队列中查找符合的包,得到seq。后面就是完成连接,发送请求数据了。
可能存在的问题有:1,可能造成默认网关收到大量无用的数据包,不过根据我实际测试,网关并不会接收到那些包,不知道为什么,难道是被本机丢掉了?2,只发送请求,不接收,可能导致被压的程序句柄数快速增加。不过这也可以通过相同的方法解决,只是麻烦些。
单调的生活只有写些单调的文章了
web的压力工具当然是越能模拟实际情况越好了,虽然只使用单ip来压多数情况下是差不多的,但拥有一个能够伪装自己ip的压力工具,或许能够暴露更多的问题,同时也是很酷的~
那么如何让压力工具伪装自己的ip呢?最简单的办法就是挂代理。可是,多数测试机是没有外网ip的,外网的代理访问不到,不可行。
那就换个方法吧。发出虚假ip的数据包是容易的,但要把服务器的返回收会来就成问题了。这就需要sniffer了,如果能够侦听到服务器返回的数据包,伪装ip就很容易了。可是在交换机环境里sniffer只能听到自己和广播,没啥用了,也不可行。
再想别的办法吧。web压力只要能和服务建立tcp连接,发送GET命令就ok了,不读返回也无所谓。也就是说只要能够完成3次握手问题就解决了。关键问题就是tcp header中的ISN了。如果能够预测到服务器返回的seq,那收不到服务器返回的SYN包也ok啦。百度一下,linux的isn算法在源码里可以找得到,就是secure_tcp_sequence_number函数。可是把这个函数从linux的源码里抽出来有些麻烦,而且即使弄出来可以用了,还涉及到两台机器间对表的问题,好不好用还很难说。有时间再尝试吧。
剩下的办法,就只剩本机压本机了。本机发出去的包总能sniffer到吧。只是sniffer到的包是如此的多,不知道能不能处理得过来。等有空了先写一个试试。
关于sniffer的方法,《网络编程》上对数据链路层的访问讲的很简略,只是推荐了libpcap和libnet,然而要学会用这2个库又是一项浩大的工作。百度来百度去,发现只要man 7 packet就能解决我的需求了。我需要的就是socket(PF_PACKET, SOCK_DGRAM, htons(ETH_P_ALL)); 记在这里备忘。