博文

目前显示的是 一月, 2011的博文

通过代理访问ssh

很多公司都有这样的限制:要求必须通过某个代理服务器上网。我上家公司做的比较狠,不开放connect方法,而对需要使用https的网站实行白名单。要想通过http proxy访问ssh服务,那么这个proxy必须支持connect方法。我之前一直用的是netcat,配置文件这么写:Host scm
HostName sunchangming.com
User cm
Compression yes
ProxyCommand /bin/nc -X connect -x proxy.com:8080 %h %p其中修改下-X参数,就可以支持socks4或者socks5。某些发行版(比如老版本的cygwin)的netcat都不支持-X参数。于是我只好另寻它方。今天先找到了proxytunnel 。Host *.maemo.org
Compression yes
ProxyCommand /usr/bin/proxytunnel -p proxy.com:8080 -d %h:%p然后利用dput+proxytunnel上传软件包。但是cygwin没有proxytunnel,不过有connect-proxy 。还好,大同小异。Host scm
HostName sunchangming.com
User cm
Compression yes
ProxyCommand /usr/bin/connect-proxy -H proxy.com:8080 %h %p其中-H代表http proxy,换成-S就是socks。

2011-1-24

今天买了一个新手机,HTC野火,也就是行货版的G8。我终于明白原来N900还不是最难用的机器,这种无键盘的android系统才是我的噩梦。本来屏幕就小,屏幕键盘还那么复杂,4种输入法,每种输入法又有很多模式。一看到这么复杂的东西我就不想打字了,太累了。而且打开输入法框之后我还不知道怎么关掉它。再比如,cmwap总是连接着的,我不知道该怎么关。我发现政府总是爱搞一些让人充满怨念的事情。火车票、汽车、房子、户口,我总觉得我努力一下都会有的,于是累的要死还是双手空空。如果它发个通知,没有北京户口或者5年以上完税证明则不得买火车票,那我就乖乖的去买机票了。而我现在既不肯早起排队去买火车票,又不愿意出点血买机票,天天就这么纠结着。此处向某人致敬。她是一个漂亮且蛮可爱的小姑娘,朝九晚六的上班族,以前住我隔壁,现在同样遇到了火车票的问题。我以过来的人的身份告诉她去楼下的邮局去买,要5点钟起,排在前10才有戏。然后她就真的按我说的去做了,她恰好排在第10 。可惜,排在第一的人买了3张,然后到她就没了。可她不死心,决定明早再去。北京最近的天气是很冷的,邮局要8点半才开门,9点开始卖票。在开门之前,要在寒风中站3个多小时。而她不仅没有把这样的苦差事推给她男朋友,而是还要帮其他好几个人买。这份坚韧和勤奋让我敬佩。其实我也诧异我在纠结些什么。问题最简单的方法就是找个黄牛呗,加点钱买张票。也加不了多少钱,顶多是少出去FB两次就够了。但为啥大家都还是要去排队呢?我每年都会萌生找黄牛的念头,每年的都被自己打住了。感觉就像我被人扇了一耳光后我还得给他塞钱道歉。于是去年我就没回去,春节无聊,一个人在屋子里玩wow。4年前的这个时候,背着包去福缘门,兜里揣着300块钱,那是第一个月的房租,第一次拥有了自己的家。那时候条件比现在艰苦的多却依然很快乐,为啥呢?因为根本不用为买不买机票纠结?当然不是这么简单。

cp936 && gbk

cp936和GBK还是有些差别的。淘宝的技术团队发现他们的MYSQL数据库在GBK字符集下无法插入欧元符号。然后就打了一个补丁。http://rdc.taobao.com/blog/cs/?p=679其实也不能说MYSQL的代码有问题,GBK中的确没有0x80这个字符。但是cp936中有。可是cp936又不是标准,因为即便是微软内部,不同的windows版本的CP936范围都不一样。编码的问题害死很多人啊

2011-1-15

昨天晚上9点到家,头粘到枕头上就睡着了。然后到快12点的时候,隔壁有人回来,于是醒了。之前只是知道IE对于每个域名,最多会建两条TCP连接,所以要加速图片下载就得用多个域名。今天刚知道这个居然是RFC 2616中的规定,唉,我看东西太不仔细了。我还是觉得当时写RFC的那帮人挺脑残的,惹出来这么多麻烦。这个东西为什么不放到http header中做成可协商呢?刚看到一个东西,对做web game的人应该很有帮助:http://svn.cometd.com/trunk/bayeux/bayeux.htmlThe primary purpose of Bayeux is to support responsive bidirectional interactions between web clients, for example using using AJAX, and the web server. Bayeux is a protocol for transporting asynchronous messages (primarily over HTTP), with low latency between a web server and a web client。维基上还介绍了一些其它的类似的实现:http://en.wikipedia.org/wiki/Comet_(programming) 我觉得应该把这里面列出的东西好好研究下在公司里搞个组内分享。

Redis初窥

Berkeley DB 比,Redis 的优势是它支持复杂的数据类型。Berkeley DB 中key、value都是字节流,实际用的时候都是把对象序列化成二进制然后交给 Berkeley DB,所以Berkeley DB并不理解任何数据类型。而Redis内置了很多种Collection并且可以对Collection做原子操作。Redis 也对64位技术极为不满,因为需要消耗更多的内存,所以:“If your application is already able to perform application-level sharding, it is very advisable to run N instances of Redis 32bit against a big 64 bit Redis box (with more than 4GB of RAM) instead than a single 64 bit instance, as this is much more memory efficient.”Redis 在实现中还搞了一件很有趣的事情:它把复制内存的事情交给了操作系统来做。Redis不是一有更新就写硬盘,而是定时刷新。延迟写入这种做法很常见。一般的解决思路是把先加锁,然后把有修改的页找出来,在内存中复制一份,然后释放锁,然后写硬盘。而Redis的实现则是 加锁、fork、父进程释放锁,让子进程慢慢在那写着。利用操作系统对内存的copy-on-write的机制缩短持有锁的时间。但我并不认为这是一个好主意。首先,它依赖于fork的实现而不是规范,这里面有太多不可控不透明的东西。其次,复制内存页并不需要花费太多时间。因为脏页最终都是要写到硬盘上的,而内存的写入速度大概是硬盘的1000倍以上。所以如果往硬盘上flush的间隔不太长,在内存中复制脏页所需的时间完全可忽略。

用ipv6的6to4逐步代替ipv4的NAT?

现在国内还没有哪个ISP开始对普通用户提供IPv6接入。但是普通用户的电脑、家用路由、操作系统、浏览器早就已经支持IPv6。所以我觉得应该大力推广ISTAP、6to4这样的过渡技术。比如我现在遇到的问题是,我有20多台服务器接到了两台交换机上,但是只有1个公网IP,但是我希望每个服务器都能直接通过公网访问。而交换机本身不支持NAT这样的功能。所以我觉得最简单的方式就是做6to4,给交换机一个公网IP,然后就得到了一个/64的ipv6的子网,然后分给每个服务器,于是他们就有了可直接从外部访问的ipv6地址。比如我打开openssh或者secureCRT或者firefox,直接输入ipv6地址和常用端口(22、80),就可以访问每台机器的ssh/web服务了。这个比NAT要直接的多,对用户也容易理解的多。缺点是,用户的接入网也必须支持ipv6,哪怕也是6to4的方式。今天去逛了一下西单图书大厦,有几本书想买:1、GAE编程指南:工作需要2、IPv6详解:介绍KAME的实现的。这本书比较搞笑的是,第一作者是中国人,但是他用英语写的,然后找了三个中国人给他翻译成中文在中国出版。3、计算机网络:网络设计的原理、技术和协议:内容比较新,SONET、3G技术都做了些介绍。4、移动通信原理与技术:我需要对移动网络的基础知识有所了解。我周围基本都是北邮的博士,我表示压力很大啊。

再次对Outlook无语

之前泡cn.*的时候,新闻组上的很多朋友非常讨厌微软的邮件客户端,因为他们常常不遵守规范不在Header中标明编码,结果导致标题或正文经常是乱码,只能挨个的根据常用编码去人工猜。而MS觉得这不是问题,你在中文windows下写的邮件,当然应该在中文windows下才能正确浏览啊,如果大家都是同样的操作系统同样的语言区域设置,那自然就没乱码了。可是即便是这个理由,也有些牵强。因为Outlook、Outlook Express、Live Mail这些他自己的产品之间的兼容性就做的很差。我昨天收到两封很重要的邮件,里面的附件很重要,但是我没留意。因为文件名是winmail.dat,我以为是邮件签名或者个人名片或者其它类似的东西呢,反正是不认识的格式,所以就没留意。后来才知道,这是必须用Outlook才能打开的附件。OE啊、web用户啊、雷鸟啊,统统被秒杀。从这篇KB(http://support.microsoft.com/kb/290809/en-us/)的语气来看,估计微软自己的人也觉得这个玩意儿很脑残。比如:"The path to your personal folders (.pst) file and your log on name are embedded in the Winmail.dat file. Although this data is not explicitly exposed to the recipient, if the recipient opens the Winmail.dat file for editing in a binary or text editor, they can see the path and log on name."还有更搞笑的:”Outlook Express does not understand TNEF, but it does know to ignore TNEF information. The result is a plain text message.”winmail.dat是一个TNEF格式的二进制文件。我从网上http://www.kopf.com.br/winmail/下载了一个读取器,但是很不好使,没能正确的识别出来。然后只好去查MSDN。TNEF开头…

又是功率过大的问题

这周在dangdang.com买了一个“美的”的电热水壶,刚回来第一次用,烧第一壶水的时候没问题,第二壶的时候就跳闸了。一查,功率是1800W,查了一下跳起来的那个闸,是10A的。没有想到那么小的一个1.2L的烧水的壶居然是1800W的,怪我买的时候没留心看。烧水的速度的确很快,可惜……