chowroc.blogspot.com
弹剑而歌: Python Note: struct for binary protocol
http://chowroc.blogspot.com/2008/12/python-note-struct-for-binary-protocol.html
星期二, 十二月 30, 2008. Python Note: struct for binary protocol. 30 Dec 2008, roczhou, 创建文档. 最近在做一个项目的时候,使用了基于文本的 JSON 协议,总的来说,效率还可以。不过后来在做压力测试时,因为协议使用 UDP,因此会有大报文分片的情况,所以服务端只能基于 IP 分配任务,但因为最初没有找到虚拟大量客户端的有效方法(后来通过虚拟 IP 加 iptables 实现),故当时出现的一个情况就是大量请求只压在了一个任务线程(Task Thread)上,服务端不能完全压满。 因此最初提出了一个将协议头改成二进制的方法,这样前端接收线程可以在收到报文后进行一个比较快速的解析,并将内容分配给正确的任务线程。但此时客 户端使用的是 Python 实现,而服务器端使用的是 C/C 实现,为了实现这种二进制协议,需要使用 Python 的 struct 模块来进行转换。例子如下:. Date = "11 Dec 2008". Version = "0.3". C" : 0x01,. S" : 10000,. 对于二进制协议ʌ...
chowroc.blogspot.com
弹剑而歌: "UNIX 网络编程"学习笔记
http://chowroc.blogspot.com/2008/10/unix.html
星期三, 十月 15, 2008. 有点潦草,但总比没有强,放在博客上也好找,而且不用担心丢失:. 在 TCP 和 IP 之上的一个层. 可靠:读出来一定是对的,但写入不一定能被对方收到。 Ret = read(socket, fd, .);. If(ret = 0 ret = -1) {. Write(socket, fd, .). Write BUG,部分写入,因为有 buffer. Len = write(socket, fd .). Close BUG, buffer 里面可能还有数据,如果此时就 close,就可能造成传输不完整。 Close 在 FIN 发出后就返回,不等 FIN ACK 返回,对普通文件没问题,对套接字有风险. 小包消耗网络性能,所以小包先攒在 buffer 中,直到得到一个分段(MSS)或对方发出了一个确认. 取消 Nagle: NODELAY 选项. SOCK SEQPACKET 是有序、双工的分组流. AF(Address Family) - PF(Protocol Faminly) 为将来可能一个 Protocal 对应多个 Address. TCP 32 位序号(...
chowroc.blogspot.com
弹剑而歌: 六月 2008
http://chowroc.blogspot.com/2008_06_01_archive.html
星期五, 六月 20, 2008. 只要某一功能的缺失不会导致无法完成某个实际的应用程序, 就不新增该功能。 决定系统不做成什么样子, 与决定将它做成什么样子同样重要。 不去满足所有的需要,而是让系统具备可扩展性, 使其能够向上兼容。 尽可能抽象代码中的通用部分, 除非没有可以用来抽象的实例。 如果没有完全理解一个问题, 最好干脆不提供任何解决方案。 如果能用 10% 的工作完成 90% 的工作, 则选择较简单的解决方案。 提供机制而非策略。 具体而言, 将用户界面策略交由客户去选定。 12288; 摘自 Scheifler and Gettys: "X Window System". 星期一, 六月 16, 2008. 应用于 Python 的 vim 配置点滴. 应用于 Python 的 vim 配置点滴. Http:/ blog.bobobook.cn/? 12288; 在 vimrc文件末尾添加. 12288; 即可。 12288; 即可。 12288; 这样就可以编辑Python脚本时,随时按下F12,再按下回车键来执行当前脚本。这里的执...12288; 这个功能太强大了...
chowroc.blogspot.com
弹剑而歌: 五月 2008
http://chowroc.blogspot.com/2008_05_01_archive.html
星期日, 五月 25, 2008. 突然发现“行路难”里有“弹剑作歌”几个字. 当时想到用“弹剑而歌”几个字做博客的名字,是因为看一个电视节目,说古人造剑可以发出铿铿的悠远的声音,是因为当时铸造技术比较成熟了,可以将剑身和剑柄铸造在一起,所以声音传播没有阻隔,故能悠远而轻扬。刚才却突然发现李白在一首《行路难》里面有“弹剑作歌”几个字! 不过我心中的形象却不是“奏苦歌”,而是那种提三尺剑,边走边唱的高亢,是“永远自由自我,永远高唱我歌”的潇洒,是“仰天长笑出门去,我辈岂是蓬蒿人”的豪迈和决绝。 虽然表面上是温和内敛的人,但实际上却自知内心的刚硬火烈、狂放不羁,今天去理发,老板说我头发硬、头发硬的人心也硬,想想可能也说得不差,但到底硬在什么地方呢?我想也许还是那种不达目的不罢休的二杆子倔劲吧。其实又何尝不曾多次感动、流泪和痛哭呢,只是决不愿示于人前。当自己还是一个倍感绝望的少年的时候,第一次听到黄家驹的歌,我曾经哭...所以上周又赶了一下具体的需求,以及结合我以前已经产生的设想、在最近 Intel 交流的时候产生的一些新的设想都加进去,实际上在考虑整合的分布式管理系...所以,最近就是要把这个...
chowroc.blogspot.com
弹剑而歌: 三月 2008
http://chowroc.blogspot.com/2008_03_01_archive.html
星期六, 三月 08, 2008. 歌手:Billy Joel 专辑:Stranger. Slow down you crazy child. You're so ambitious for a juvenile. But then if you're so smart tell me why. You are still so afraid? Where's the fire, what's the hurry about? You better cool it off before you burn it out. You got so much to do and only so many hours in a day. But you know that when the truth is told. That you can get what you want. Or you an just get old. You're gonna kick off before you even get halfway through. Slow down you're doing fine.
chowroc.blogspot.com
弹剑而歌: HP总裁孙振耀退休时的一封信
http://chowroc.blogspot.com/2008/10/hp1-25-354040409040-40-355003k-6k8k55k.html
星期四, 十月 30, 2008. 我有个有趣的观察,外企公司多的是25-35岁的白领,40岁以上的员工很少,二三十岁的外企员工是意气风发的,但外企公司40岁附近的经理人是很尴尬的。我见过的40岁附近的外企经理人大多在一直跳槽,最后大多跳到民企,比方说,唐骏。外企员工的成功很大程度上是公司的成功,并非个人的成功,西门子的确比国美大,但并不代表西门子中国经理比国美的老板强,甚至可以说差得很远。而进外企的人往往并不能很早理解这一点,把自己的成功90%归功于自己的能力,实际上,外企公司随便换个中国区总经理并不会给业绩带来什么了不起的影响。好了问题来了,当这些经理人40多岁了,他们的薪资要求变得很高,而他们的才能其实又不是那么出众,作为外企公司的老板,你会怎么选择?只...我前两天问我的一个销售,你会的这些东西一个新人2年就都学会了,但新人所要求的薪水却只是你的一半,到时候,你怎么办?职业生涯就像一场体育比赛,有初赛、复赛、决赛。初赛的时候大家都刚刚进社会,大多数都是实力一...看上去赢得复赛并不容易,但,还不是那么难。因为这个世界的规律就是给人一点成功的同时让人骄傲自...最终的决赛来了,说实话...
chowroc.blogspot.com
弹剑而歌: 八月 2008
http://chowroc.blogspot.com/2008_08_01_archive.html
星期三, 八月 27, 2008. 忙,实在没什么什么时间,挤点巴点巴一点点写吧。来杭州 5 个多月了,其他不论,在工作专业方面,还是有不少进展,总结下来大致有以下几点:. 1 saunit 项目:第一天上岗,说要写一些 Trouble Shooting 自动化脚本,没人做,我说我来做吧,然后弄了个框架。不想越做越大,现在变成了整个公司监控项目中的一部分,现在我在忙活的就是这玩意. saunit-0.2.2 已经发布,可以做自动化检查(当然检查脚本还是要自己去扩展,只不过写起来就很方便也很规范了)。saunit-0.3 正在开发,需要支持并发和更强的调度功能,而且是作为整个分布式系统的代理端运行。 现在看得比较多,用的比较好的有:策略模式、工厂方法、命令模式和单件模式等,而且因为 Python 的原因,多态非常好用。 所以去图书馆找了一些分布式系统的数来看,再次发现自己有悟性( P)——我无意中考虑使用了消息队列这种模式。另外,我也考虑了关于主机认证、协议设计等一些问题。 后来,虫虫介绍了一个叫 func(别看错了 呵呵 $). 6 TCP/IP 和网络编程,对 TCP 的一些东西了解得更...
chowroc.blogspot.com
弹剑而歌: 十二月 2008
http://chowroc.blogspot.com/2008_12_01_archive.html
星期二, 十二月 30, 2008. Python Note: struct for binary protocol. 30 Dec 2008, roczhou, 创建文档. 最近在做一个项目的时候,使用了基于文本的 JSON 协议,总的来说,效率还可以。不过后来在做压力测试时,因为协议使用 UDP,因此会有大报文分片的情况,所以服务端只能基于 IP 分配任务,但因为最初没有找到虚拟大量客户端的有效方法(后来通过虚拟 IP 加 iptables 实现),故当时出现的一个情况就是大量请求只压在了一个任务线程(Task Thread)上,服务端不能完全压满。 因此最初提出了一个将协议头改成二进制的方法,这样前端接收线程可以在收到报文后进行一个比较快速的解析,并将内容分配给正确的任务线程。但此时客 户端使用的是 Python 实现,而服务器端使用的是 C/C 实现,为了实现这种二进制协议,需要使用 Python 的 struct 模块来进行转换。例子如下:. Date = "11 Dec 2008". Version = "0.3". C" : 0x01,. S" : 10000,. 对于二进制协议ʌ...
chowroc.blogspot.com
弹剑而歌: 五月 2009
http://chowroc.blogspot.com/2009_05_01_archive.html
星期一, 五月 11, 2009. 在做 subversion 迁移的时候,使用了 svnsync 来同步 repository 数据(编写的 svnsync.sh 脚本调用 svnadmin 和 svnsync init/sync 过程并日志),服务端的迁移没有什么问题,而客户端的重定位,直接使用 sw 不行:. Root@vxy8 cfengine2 /tmp/cfengine.svn]. Svn sw http:/ 172.22.35.10/svn/trunk/KS CFENGINE/cfengine. Svn: 'http:/ 172.22.35.10/svn/trunk/KS CFENGINE/cfengine'. Is not the same repository as. Http:/ 172.22.35.12/svn'. 这就是说,直接使用 sw 需要在同一个主机的同一个 repository 下才行。 但 sw 有一个 - relocate 参数,可以切换 repository:. Root@vxy8 cfengine2 /tmp/cfengine.svn]. Root@vxy8 cf...
chowroc.blogspot.com
弹剑而歌: 十月 2008
http://chowroc.blogspot.com/2008_10_01_archive.html
星期五, 十月 31, 2008. 想想你是否能够打一两个电话就找到你想要的东西。如果你有良好的人际网络,你应该就可以。通过投资时间建立人际网络,你在需要搞定事情的时候就可以节省时间。拥有良好人际网络的人不用耗费时间向不认识的人随机群发电邮、购买线索或行业名单、或者从上百的简历中挑出合适的应聘者。做出选择吧,你想现在花点时间呢还是以后再补? 一开始时你可能要盲目地选择参加的社交活动。你可能会在一个不喜欢的场合痛苦地呆上一个小时,但是从中可以学到哪些活动需要参加,哪些活动需要跳过。最终,你会找到一些你喜爱的人和活动。 如果你把自己累坏了,你就再也不想去建立人际网络了。制定一个上限,一个月只参加一至两个活动。关系的建立需要很长时间,所以与少一点的圈子保持长期的关系比参加很多圈子却只能保持短暂关系好。 或者你可以下班之后请他们喝咖啡和啤酒。因为如果对方也是一个内向的人,他或她不会邀请你,所以你要做出邀请。 内向的人有很好的直觉、善于分析。那就利用这点长处。你的关系里什么是有用的,什么不是?你最大的阻碍是什么? 规则总是大多数人制定的,而外向的人占了大多数(我猜有70%)...我有个有趣的观察...