忙里偷闲的八月

八月依然有些很狗血的策划案要做,以至于花了两周时间,周五做出来后,连策划自己都觉得配置超多超复杂。。。

这个月比较过瘾的,是下决心做了dns的实验。当时为了防止DNS污染,曾经用Python写过一个DNS代理,通过TCP管道传输解析包,避免墙的干扰,地址在google code。项目原本是通过丢弃最先返回的udp包来实现的,后来改为了TCP查询。不过,当时硬着头皮读的RFC1035,只读懂了TCP的部分,只要将接收到的包体加上长度作为包头,就可以直接丢到TCP管道的另一端,解包也是根据包头解出DNS返回包,送回到查询者即可。

于是,这个月就再重读了一次RFC,实现了一个基本的域名=>dns查询工具,地址在github。真正实现的时候,RFC文档还是很实用的,尤其是里面查询结构的定义,相当清晰。就是在python里不大好处理位,需要自己做与运算。实现时有个问题不是很明白,为什么域名要分成label这样的短字符串来实现,搞的一个域名有可能用了3个字节,只是用来分别标记3个label各自的长度呢?后面有提到域名label的复用机制,但是这个和一个完整字符串是不矛盾的啊。Anyway,这种jump指针的实现的确很巧妙,甚为折服。调试的时候,还初步学会了使用scapy工具,碉堡了。可以输入RFC里面的各种参数来构造一个包,还能打印出包体的字符串表示,通过对比很快知道了自己实现的缺陷所在。最爽的是还能从IP包构建到UDP包,通过 IP包/UDP包 这种表示来表达payload的意思,有空用来写个TCPkill玩玩,哈哈。

另一件,是参与到晓靖的levent项目里。levent在Lua里基本复刻出python的gevent,顺带创建了自己的类机制,还有一些非常实用的库比如struct(跟python的struct相仿)。随手写了两个示例,一个是负责端口转发的portforward,另一个是http代理。写端口转发的时候,竟然有种写golang的感觉,一个lua的coroutine,就好比一个golang的goroutine。针对一个socket起了两个协程,一个负责读,一个负责写,在虚拟机里跑能有2000多的qps,还算不错。对比gevent,gevent一开始能够上3000多,不过越跑越慢,最后完全跑不动了。用的是示例里的echo server,测试用的redis benchmark。http代理的实现,参考了PythonProxy的实现。对于1.0的http协议,只支持了GET,POST等有限几种方法。除了CONNECT方法外,基本都是改写一下头部,丢过去服务器就可以了。CONNECT方法更简单,连接后直接作为管道转发数据,连header都不用改写了。。。

希望接下来的9月顺顺利利啊

时间: 2024-10-17 00:32:29

忙里偷闲的八月的相关文章

旧梦重温

这个月主要在搞两件事,其一是:https://github.com/spin6lock/pydnsproxy,其二是一个bt客户端,用来搜索磁力链接,下载种子的,还没搞好. pydnsproxy在去年的<忙里偷闲的八月>里已经有提及,不过当时居然没发现几个明显的bug.之前是因为Queue的用法不对,初始化的时候,没有赋予有效的长度,导致每次将用完的tcp链接塞进去,都会报队列已满,然后被抛弃掉.也就是说,每一次tcp查询基本都是重新创建链接.这样查询代价会很大,一般到400-500ms了.之

八月十三日总结

上午酉哥让我给电脑安装apple开发证书.我找到唐哥,唐哥给我发了apple开发团队邀请,我用公司邮箱注册了apple developer账号,加入了开发团队.加入团队后我不知道如何下载安装证书,又去找唐哥请教,唐哥给我演示了下,在xcode中更新证书.接着我就在酉哥给我的那台电脑上更新了证书.安装完证书后又更改了codesign,在ipad4上终于运行成功. 由于涉及到了真机调试的内容,我就上网看了一些关于真机调试的文章. 真机调试需要开发者加入apple developer plan,至少要

八月十二日,周二总结

今天上午继续跑JAT_1_84,修改测试过程中出现的问题,我主要跑的是case_16,这套case中很多的图片有问题,大部分都是因为页面的背景色由原来的灰色换成了白色,我把所有出错的case的截图都替换到了simulator文件夹里面,然后提交到了远程仓库. 下午继续学习iOS的设计模式,应用代理模式写了一个简单的界面,应用代理模式实现了页面的刷新功能. 酉哥完成自动化测试后让我对测试失败的case进行分析,大部分测试失败的case都是由于最后一步图片验证时,截取的图片与对比的图片有细微的区别导

八月十八日总结

今天上午看了HG的常用命令的使用,HG与git有很多相似之处,但是git很多命令hg没有,在使用的时候发现有些命令不知道如何使用. 比如git的pull是这样使用的: git pull [远程主机名] [远程分支] 但是hg的pull命名不是这样的,网上关于hg pull的讲解都千篇一律,比如: hg pull ../my-hello 这样的用法我不是很理解,因为这是对本地仓库的操作,但是对于远程有分支的操作,我不知道怎么使用hg的命令. 中午酉哥跟我讲了monkey test的缺陷,让我想想如

八月第三周

时间过得真快.一转眼时间,我们有进入到了第二阶段的学习.让我感到欣慰的是,传说中的jquery开始学习了.还有就是我们的导师也换了! 两天的学习让我感觉还是挺轻松的.感觉jquery和JS比起来,真的是天壤之别!而学习起来也相对容易一些.当然,这也和我们的导师的教学方法有着一定的关系! 这两天所学我觉得易混淆的地方如下: 1.jquery对象和Dom对象间的转换 1)jquery对象:  var $cr = $("#cr");  方法一:var cr = $cr[0];//转换成Dom

八月的策略模式

一.前言 某大牛曾经这样描述过设计模式: 设计模式其实就三个准则:一是中意于组合而不是继承 .二是依赖于接口而不是实现.三是高内聚,低耦合. 且不忙讨论这句话是否正确,但从这句话里的口气中我学到一个道理,我其实不应该去畏惧设计模式,以为这是多么难的东西,当以平常心对待设计模式,并将其使用到我们的项目中. 二.原理 1.继承 通过继承来封装一个个拥有共同接口的独立的算法 2.多态机制 通过继承我们定义了多个算法,而通过java的多台机制我们则可以让这些算法之间进行互换. 3.组合 通过组合对策略屏

八月荷塘情正浓

八月荷塘情正浓八月已进入秋凉的季节,随处可见的小草已经带有微微的黄叶.总喜欢在这样的季节漫步郊外静赏荷塘,因为那里依旧是一幅如诗如梦的画面. 踏上那弯小路就会感受到一股泥土的气息沁肺,这种远离烟尘的清新给心情带来无尽的愉悦.微风清爽怡人,被清风打动的衣摆无节奏的上下翻动,行走中总有阵阵清香飘来.心中装着景色,连走路都轻松,每年荷花开放的季节,都要来这里观光几次,不只是喜欢它的叶大花美,更欣赏荷花那种独有的心性.它不与乱花争媚,却艳色倾池,独享一波碧水,尽数铺展枝蔓,株株莲蕊彰显出唯美,也确实讨人

惊喜的八月,充满能量的英语

提及八月,我们更多地是喜庆,因为我们的师哥师姐带给了我们很多的惊喜,因为这样意味着明年我们也不能落后. 前天,我们开了英语动员会,对于英语我们做了一年的计划,感觉很好,有计划意味着知道去做什么,而就在这前一天晚上,我们对于ITOO4.0做了规划,随后就拿出了英语计划,也正是如米老师所说,要想成为钻石,就必须在高温高压下成长,而最终这种高温高压的环境,会让我们养成一个学习的好习惯.所以,要想改变,外力是必须的. 这个月主要的学习英语材料还是能量英语,但是主要是听了,没有更加主动地去说,但是我们到了

最新八月GMAT数学机经解析

咨询QQ:83735073 1. 一共有4000只鱼,其中1/4的鱼至少标记一次,400只鱼至少标记两次.问随机从这个鱼群里抓出一只鱼,它只被标记一次的概率是多少. 1000只鱼被标记>=一次 400只鱼被标记>=两次 所以只被标记一次的是600只 600/4000=15% 2. 一个篮球队打了10场比赛,平均进球12个.问这个球队有没有可能一场比赛进球超过40个? 条件一:前五场一共进球55个; 条件二:每场进场不低于9个. 题目一共进了120个球 单独条件1: 前五场共55球,第6场41球