2008年07月26日 星期六

iwl3945 on Debian

原来在debian下一直使用ipw3945驱动无线网卡,可是自从升到2.6.24以上内核以后,ipw3945就不能用了,内核提供了iwl3945模块来驱动。可是不知道为什么有好长时间不能从无线路由得到地址,也就是连不上无线网络,由于前段时间太忙,也没把这件事放在心上,使用网线连接凑乎了一段时间。今天实在无聊,就把它折腾出来了。

在折腾过程中,装了linux-wlan-ng,事实证明根本不需要,linux内核本身的东西就基本足够了。

系统版本:Debian testing 2.6.25-2-686
需要安装的软件包:firmware-iwlwifi

配置文件/etc/network/interfaces

iface wlan0 inet dhcp
pre-up ip link set wlan0 up
wireless-essid dlink
wireless-ap any

我用的路由器名称是dlink,根据实际情况可改作其他的。由于我的路由器没有使用加密验证之类的东东,所以没有其他配置,如需要可参考安装wpasupplicant。

ip命令在软件包iproute中。

参考链接:
http://wiki.debian.org/iwlwifi

 ... ...

2008年03月26日 星期三

男人+女人

人=吃饭+睡觉+上班+玩,
  猪=吃饭+ 睡觉,
  代入:人=猪+上班+玩,
  即:人-玩=猪+上班.
  结论:不懂玩的人= 会上班的猪

  男人=吃饭+ 睡觉+挣钱
  猪=吃饭+ 睡觉
  男人=猪+挣钱
  猪=男人-挣钱
  所以男人不挣钱等于猪。

  女人=吃饭+ 睡觉+花钱。
  猪 =吃饭+ 睡觉。
代入上式得:
  女人=猪+花钱。
移项得:
  女人-花钱=猪。
  结论:女人不花钱的都是猪。

  综上:
  
男人为了让女人不变成猪而挣钱!
  女人为了让男人不变成猪而花钱!

  男人+女人=吃饭+睡觉+挣钱+吃饭+睡觉+花钱(-挣钱)=2X(吃饭+睡觉)=两头猪

 ... ...

2008年01月10日 星期四

全国著名小吃(转载)

北京的焦圈、蜜麻花,豌豆黄、艾窝窝、炒肝爆肚。

上海的蟹壳黄、南翔小笼馒头、小绍兴鸡粥。

天津的嗄巴菜、狗不理包子、耳朵眼炸糕、贴饽饽熬小鱼、棒槌果子、桂发祥大麻花、五香驴肉。

太原的栲栳、刀削面、揪片等。

西安的牛羊肉泡馍、乾州锅盔,兰州的拉面、油锅盔。

新疆的烤羊肉、烤馕、抓饭。

山东的煎饼,把子肉。

江苏的葱油火烧、汤包、三丁包子、蟹黄烧麦。

浙江的酥油饼、重阳栗糕、鲜肉棕子、虾爆鳝面、紫米八宝饭。

安徽的腊八粥、大救驾、徽州饼、豆皮饭。

福建的蛎饼、手抓面、五香捆蹄、鼎边糊。

台湾的度小月担仔面、鳝鱼伊面、金爪米粉。

海南的煎堆、竹简饭。

河南的枣锅盔、白糖焦饼、鸡蛋布袋、血茶、鸡丝卷。

湖北的三鲜豆皮、云梦炒鱼面、热干面、东坡饼。

湖南的新饭、脑髓卷、米粉、八宝龟羊汤、火宫殿臭豆腐。

广东的鸡仔饼、皮蛋酥、冰肉千层酥、广东月饼、酥皮莲蓉包、刺猥包子、粉果、薄皮鲜虾饺及第粥、玉兔饺、干蒸蟹黄烧麦等。

广西的大肉棕、桂林马肉米粉、炒粉虫。

四川的蛋烘糕、龙抄手、玻璃烧麦、担担面、鸡丝凉面、赖汤圆、宜宾燃面、夫妻肺片、灯影牛肉、小笼粉蒸牛肉。

贵州的肠旺面、丝娃娃、夜郎面鱼、荷叶糍粑。

云南的卤牛肉、烧饵块、过桥米线等。

 ... ...

2007年12月31日 星期一

Javascript的IE和Firefox兼容性

以下以 IE 代替 Internet Explorer,以 MF 代替 Mozzila Firefox

1. document.form.item 问题
(1)现有问题:
现有代码中存在许多 document.formName.item("itemName") 这样的语句,不能在 MF 下运行
(2)解决方法:
改用 document.formName.elements["elementName"]
(3)其它
参见 2

2. 集合类对象问题
(1)现有问题:
现有代码中许多集合类对象取用时使用 (),IE 能接受,MF 不能。
(2)解决方法:
改用 [] 作为下标运算。如:document.forms("formName") 改为 document.forms["formName"]。
又如:document.getElementsByName("inputName")(1) 改为 document.getElementsByName("inputName")[1]
(3)其它

3. window.event
(1)现有问题:
使用 window.event 无法在 MF 上运行
(2)解决方法:
MF 的 event 只能在事件发生的现场使用,此问题暂无法解决。可以这样变通:
原代码(可在IE中运行):
<input type="button" name="someButton" value="提交" onclick="javascript:gotoSubmit()"/>
...
<script language="javascript">
function gotoSubmit() {
...
alert(window.event); // use window.event
...
}
</script>

新代码(可在IE和MF中运行):
<input type="button" name="someButton" value="提交" onclick="javascript:gotoSubmit(event)"/>
...
<script language="javascript">
function gotoSubmit(evt) {
evt = evt ? evt : (window.event ? window.event : null);
...
alert(evt); // use evt
...
}
</script>
此外,如果新代码中第一行不改,与老代码一样的话(即 gotoSubmit 调用没有给参数),则仍然只能在IE中运行,但不会出错。所以,这种方案 tpl 部分仍与老代码兼容。

4. HTML 对象的 id 作为对象名的问题
(1)现有问题
在 IE 中,HTML 对象的 ID 可以作为 document 的下属对象变量名直接使用。在 MF 中不能。
(2)解决方法
用 getElementById("idName") 代替 idName 作为对象变量使用。

5. 用idName字符串取得对象的问题
(1)现有问题
在IE中,利用 eval(idName) 可以取得 id 为 idName 的 HTML 对象,在MF 中不能。
(2)解决方法
用 getElementById(idName) 代替 eval(idName)。

6. 变量名与某 HTML 对象 id 相同的问题
(1)现有问题
在 MF 中,因为对象 id 不作为 HTML 对象的名称,所以可以使用与 HTML 对象 id 相同的变量名,IE 中不能。
(2)解决方法
在声明变量时,一律加上 var ,以避免歧义,这样在 IE 中亦可正常运行。
此外,最好不要取与 HTML 对象 id 相同的变量名,以减少错误。
(3)其它
参见 问题4

7. event.x 与 event.y 问题
(1)现有问题
在IE 中,event 对象有 x, y 属性,MF中没有。
(2)解决方法
在MF中,与event.x 等效的是 event.pageX。但event.pageX IE中没有。
故采用 event.clientX 代替 event.x。在IE 中也有这个变量。
event.clientX 与 event.pageX 有微妙的差别(当整个页面有滚动条的时候),不过大多数时候是等效的。

如果要完全一样,可以稍麻烦些:
mX = event.x ? event.x : event.pageX;
然后用 mX 代替 event.x
(3)其它
event.layerX 在 IE 与 MF 中都有,具体意义有无差别尚未试验。


8. 关于frame
(1)现有问题
在 IE中 可以用window.testFrame取得该frame,mf中不行
(2)解决方法
在frame的使用方面mf和ie的最主要的区别是:
如果在frame标签中书写了以下属性:
<frame src="xx.htm" id="frameId" name="frameName" />
那么ie可以通过id或者name访问这个frame对应的window对象
而mf只可以通过name来访问这个frame对应的window对象
例如如果上述frame标签写在最上层的window里面的htm里面,那么可以这样访问
ie: window.top.frameId或者window.top.frameName来访问这个window对象
mf: 只能这样window.top.frameName来访问这个window对象

另外,在mf和ie中都可以使用window.top.document.getElementById("frameId")来访问frame标签
并且可以通过window.top.document.getElementById("testFrame").src = 'xx.htm'来切换frame的内容
也都可以通过window.top.frameName.location = 'xx.htm'来切换frame的内容


9. 在mf中,自己定义的属性必须getAttribute()取得
10.在mf中没有 parentElement parement.children 而用
parentNode parentNode.childNodes
childNodes的下标的含义在IE和MF中不同,MF使用DOM规范,childNodes中会插入空白文本节点。
一般可以通过node.getElementsByTagName()来回避这个问题。
当html中节点缺失时,IE和MF对parentNode的解释不同,例如
<form>
<table>
<input/>
</table>
</form>
MF中input.parentNode的值为form, 而IE中input.parentNode的值为空节点

MF中节点没有removeNode方法,必须使用如下方法 node.parentNode.removeChild(node)

11.const 问题
(1)现有问题:
在 IE 中不能使用 const 关键字。如 const constVar = 32; 在IE中这是语法错误。
(2)解决方法:
不使用 const ,以 var 代替。

12. body 对象
MF的body在body标签没有被浏览器完全读入之前就存在,而IE则必须在body完全被读入之后才存在

13. url encoding
在js中如果书写url就直接写&不要写&例如var url = 'xx.jsp?objectName=xx&objectEvent=xxx';
frm.action = url那么很有可能url不会被正常显示以至于参数没有正确的传到服务器
一般会服务器报错参数没有找到
当然如果是在tpl中例外,因为tpl中符合xml规范,要求&书写为&
一般MF无法识别js中的&


14. nodeName 和 tagName 问题
(1)现有问题:
在MF中,所有节点均有 nodeName 值,但 textNode 没有 tagName 值。在 IE 中,nodeName 的使用好象
有问题(具体情况没有测试,但我的IE已经死了好几次)。
(2)解决方法:
使用 tagName,但应检测其是否为空。

15. 元素属性
IE下 input.type属性为只读,但是MF下可以修改


16. document.getElementsByName() 和 document.all[name] 的问题
(1)现有问题:
在 IE 中,getElementsByName()、document.all[name] 均不能用来取得 div 元素(是否还有其它不能取的元素还不知道)。

 ... ...

2007年11月29日 星期四

新手开车三十六计

万事开头难,开车当然也不例外。相信每一位驾驶员都经历过初次上路的忐忑不安,眼盯前方,双手紧握转向盘,身体僵直前倾,远离前车,缓慢前行,起步停车或遇到坡路和堵车时经常熄火等等,这些都是新手的写照,只要稍加留意很容易辨认。客观地讲,新手的确影响了车流速度,也造成了一些事故隐患,很多人给新手冠以“马路杀手”的称谓。于是一些很有“自知之明”的新手为了取得他人谅解,经常在自己车的后挡风玻璃上贴上“新手请多关照”、 “新手磨合”等字样。其实大可不必如此,每位驾驶员都是从“新手”走过来的, 开车本来就是“熟练工种”,只要胆大心细,注意认真解决遇到的问题就会很快告别新手的行列。为了帮助时下日渐增多的新手迅速成熟,本刊总结了新手上路常见的问题,并提供了切实可行的解决办法,供广大新手参考。
  
第1计:调整好驾驶姿势
  正确的驾驶姿势对安全行车是非常重要的,不但可以消除长时间驾驶的疲劳,保证良好的驾驶视野,而且还可以使驾驶动作更准确、迅速与合理。驾驶姿势主要与转向盘及座椅有关。在坐进驾驶席之后,首先应该深深地坐在座椅后部,使腰部和肩部靠在椅背上。先感受一下座椅的前后距离和靠背角度是否合适,然后把手臂伸向前方,自然握住转向盘的两侧。这时,必须使手腕能自由地弯曲,活动自由。腿部要有一定的活动空间,用脚踩离合器踏板、制动踏板或油门时不费力,而且身体不必前倾,此时的位置就基本合适了。如果不合适,可以前后滑动一下座椅的位置,或调整一下椅背倾斜的角度,使之达到上述要求。
  开车时不要过分紧张,很多新手初次上路之后往往感到腰酸背痛,主要就是因为坐姿不对,身体过分紧张,这样全身僵直着与车较劲,腰酸背痛就在所难免了。行车过程中不要始终保持一个姿势开车,要适当调整坐姿,以消除疲劳。
  需要强调的是,在调整好驾驶坐姿之后,千万记得系好安全带,避免在行驶途中突然想起未系安全带而导致紧张情绪和不安全因素。
  
第2计:轻松玩转转向盘
  驾驶姿势调整好了之后,接下来就是转向盘的握法和操作了。手握转向盘的位置,以两只手握住转向盘3点与9点钟方向(即水平两侧)时手肘微弯为最佳,因为这可使手臂有充分的活动区域来迅速操作转向盘。手握转向盘时不要紧握,而是轻轻握住外缘。很多新手总是紧握转向盘,造成手部大量出汗,影响动作准确程度,而且在换挡时还容易产生非正常打转向盘的情况,埋下了事故隐患。
  转向盘的操作依据车速快慢而有不同程度的转向动作。车速越高,转向盘的转动幅度要越小。转动时要双手操作,以一只手上推、另一只手就下拉的方式接力转动转向盘。
  另外转向盘有自动回正功能,在快速回转时可放松手掌让转向盘自行快速回正,但并不是任由它自行旋转,双手仍需扶着转向盘保持随时可以控制的状态。
  有些新手在汽车掉头或大转弯时,把手伸进转向盘内侧打方向,这就是俗话说的“掏轮”。这样打方向看似省劲,但遇到紧急情况时,手不能及时抽回来做应急处理;遇上前轮方向突变,极易伤及手臂。新手应改掉这种不良习惯。
  
第3计:熟悉挡位
  绝大多数新手初次上路所驾车型(以手动挡为例)与学车时开的车不同,因此对挡位很陌生。如果不花时间熟悉挡位,造成的直接后果就是开车时不知道自己挂入几挡,经常低头看换挡杆,很容易因为精力分散造成交通事故。特别是遇到复杂路况时,由于紧张还容易出现挂错挡导致熄火的情况,因此初次上路前必须先熟悉挡位。
  通常挡位的位置分配都会清晰地印在换挡杆的手柄上,当你坐进自己不熟悉的车时,熟悉不同的挡位是第一步。可以采用以下步骤熟悉挡位。
  1.原地不着车熟悉挡位
  此时先看着换挡杆手柄顶端的挡位示意图将离合器踏板踩到底换挡,注意有无倒挡锁。在对挡位相对熟悉之后,将视线离开换挡杆,使用正常行驶时的换档方式熟悉挡位。
  注意:原地换挡时如果挂不上挡,可在一次踩下离合器踏板后,再次踩下离合器踏板换挡,一般会顺利挂入挡位。
  2.行进中熟悉挡位
  在空旷的地带或车流量很小的路面行驶,在行进中熟悉挡位。此时要坚持不看换挡杆换挡,同时在换挡时要顺序加挡,并注意练习油离配合。
  注意:在着车时要牢记将换挡杆置于空挡,在行驶时注意避让突然出现的行人、非机动车和机动车。
第4计:熟练油离配合
  驾驶手动挡车型时,最佳的油离配合不但可以使车辆平稳起步行驶,使动力顺畅输出,而且还可以省油和延长离合器的使用寿命。这项技能往往是新手最不容易掌握的,经常会出现起步时熄火、车身抖动的情况。另外行车换挡时由于离合器松得过快容易造成顿车,这样不但毁车,而且驾乘感觉非常不舒服。还有些新手由于离合器操作不熟练,养成了习惯性踩踏离合器踏板的毛病,造成离合器长期处于半离合状态,加速离合器的损坏。
  正确的油离配合要结合车速进行调整。起步阶段将挡位置于空挡,着车后踩下离合器踏板,将换挡杆挂入1挡,慢慢松开离合器,配合油门,起动汽车。踩离合器踏板时必须踩到底,在缓慢松开离合器踏板过程中感觉车身的抖动和移动趋势,当车辆有轻微抖动并出现移动的趋势后缓慢加油,继续缓慢松离合,直至彻底松开,使车辆平稳起动。
  车辆在运动中换挡时油离配合同样重要。随着车速的增加,油离配合的过程逐渐缩短,即离合器踏板的松开速度要加快。为了保证换挡过程顺畅,油门也要合理配合,千万不要猛加油。比较理想的状态是在换挡过程中车辆运行平稳,速度平缓提高,感觉不出明显的瞬时减速和加速。反之,在减速降挡时要先适当制动,当车速合适时踩下离合器踏板换挡。
  
第5计:找准换挡时机
  很多新手不知道该什么时候换挡,经常会出现低挡位高转速的情况。正确的换挡应该是在汽车起步之后,随着发动机转速增加,配合不同车速,换入相应挡位。
  通常,当转速提高到一定程度,发动机工作噪声就会增大,此时就必须升挡,换挡的时机一般在发动机转速为2 500~3 000 r/min之间(不同性能的发动机会有所不同,使用时要先阅读使用手册)。新手若没有学会根据发动机声音变化换挡,可在保证安全的情况下观察一下转速表,感受在最佳换挡转速时发动机的声音变化。减速换挡原理相同,但应注意当车速过快时,先将车速降低到相应范围内,然后再进行换挡。
  有些驾驶员习惯于根据车速换挡,但此种做法不太适合新手,因为新手的速度感往往还没有建立起来,建议新手还是采用根据发动机转速换挡的方法。但大家还是应该了解不同速度阶段的相应挡位。以5挡手动变速器的车辆为例,通常情况下,起步后当车速低于20 km/h时应选择2挡,当车速为20~60 km/h时选择3挡,当车速在 60~80 km/h之间时挂入4挡,如果车速超过了80 km/h就可以挂入5挡了。
  
第6计:学会眼观六路
  驾驶员坐在车里视野有限,单凭肉眼通常只能看清前方的情况,对于左、右和后方的情况只能借助车内后视镜和2个车外后视镜了。而一些驾驶动作,如转向、倒车、并线和超车等,必须借助后视镜方能安全完成。因此新手上路首先要学会通过后视镜观察路况,进而实现“眼观六路”。特别是对于一些学车时驾驶货车的驾驶员,学会用后视镜观察路况尤为重要。在实际驾车过程中,新手往往是紧盯着前方,而忽略了左、右、后、上和下5个方位,那么如何才能做到“眼观六路”呢?
  在保证车辆在车道中央行驶且路况不甚复杂的情况下,强迫自己将紧盯着前方的目光移出一些,用眼睛的余光分别观察3个后视镜、路面及车辆前上方,保持你的中心视野能扫视到广阔的路面状况——前、后、左、右、上和下。前方观察要尽可能远;后方观察靠中、左和右3个后视镜,看到后方所有车道上跟车的距离和速度;左、右观察从路的最左到最右,包括对面来车,左、右路边的停车、行人和路口里欲转出的车辆;往上看要看到路牌和信号灯;往下看要看到路面标志线和路面障碍。
  在扩大视野的过程中车速不宜过快,而且在保证安全的情况下逐步扩大观察的范围。
  路上开车长时间凝视一个物体很危险。因此要锻炼自己的目光移动,不要太专注于某辆车(如前车)或其他事物,要学会走马观花。另外在并线或超车前,要经常探视反光镜,避免盲区的影响,随时掌握汽车后面的情况。
  
第7计:专门练习停车入位
  最令新手头痛的就是停车了,有些人戏称:别看很多新手在路上开车像模像样,一到停车时就露馅。很多新手都有“停车恐惧症”,而且由于不经常停车,因此锻炼的机会也少,停车技巧提高得很慢,因此新手停车时常发生刮蹭事故,这更增加了新手的停车恐惧心理。怎么办?办法只有一个,那就是练,要在“高手”指导下专门练习各种停车方式。
  练习时要着重练习2种新手认为比较难的停车位,一种是前后有车,中间留有停车位;另一种是左右有车中间留有停车位。
  第一种车位的入位要领是一定要倒入,可以借鉴在驾校学习的“移库”方法,让车尾先入才能顺利到位。
  第二种车位入位有两种方法,一是正向驶入,另一种是倒入。正向驶入时较为简单,注意与左右两车的距离,以不妨碍左右两车开门为宜。倒入时可以借鉴在驾校学习的“贴库”和“倒库”方法。
  
第8计:反复验证跟车距离
  新手往往判断不好与前车的距离,因此经常出现离前车较远的情况,影响了车流速度,同时给其他车辆并入其前方创造了条件,造成了事故隐患。还有些胆大的新手跟车很近,但处理紧急情况的能力较差,一旦前车减速或停车稍快,很容易发生追尾事故。那么跟车时怎样做到距离合适呢?
  不同的路况和不同的车流速度下跟车的距离不尽相同。总的一个原则就是前后车之间必须保持一个安全距离。即在前车减速或制动时,两车之间有足够的安全距离,从而有足够的时间供后车驾驶员做出反应,采取制动措施。同时保持有限的跟车距离又可有效防止其他车道上的车辆随意并入自己的前方。新手上路最好能在不同路况进行反复练习,练习时选择有多条同向行驶车道的路面,行车时可参考旁边车道车辆的跟车距离,自己加以验证,不过练习过程要循序渐进,跟车距离要从大到小,直至合理的安全跟车距离。
  
第9计:轻松面对会车
  在行车过程中,上行车与下行车的相错称为会车。很多新手恐惧会车,特别是在路面较窄的路面会车时,新手往往会产生紧张情绪,一阵手忙脚乱之后会出现熄火、停车让行,甚至造成两车相互刮擦、相撞,或