﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-socketref</title><link>http://www.cppblog.com/socketref/</link><description>opensource in my life!
Technical Engineer</description><language>zh-cn</language><lastBuildDate>Mon, 22 Mar 2010 03:36:29 GMT</lastBuildDate><pubDate>Mon, 22 Mar 2010 03:36:29 GMT</pubDate><ttl>60</ttl><item><title>哈尔滨游记</title><link>http://www.cppblog.com/socketref/archive/2010/03/09/109235.html</link><dc:creator>放屁阿狗 </dc:creator><author>放屁阿狗 </author><pubDate>Mon, 08 Mar 2010 16:44:00 GMT</pubDate><guid>http://www.cppblog.com/socketref/archive/2010/03/09/109235.html</guid><wfw:comment>http://www.cppblog.com/socketref/comments/109235.html</wfw:comment><comments>http://www.cppblog.com/socketref/archive/2010/03/09/109235.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/socketref/comments/commentRss/109235.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/socketref/services/trackbacks/109235.html</trackback:ping><description><![CDATA[估计不是这次的事情，再过4，5年也不一定会去东北，而且是行色匆匆<br>昨天与老陈约好去ying信调测酒店代理度服务器的事情，老陈就是老陈，摆弄了几下就在一台linux主机上配置完了iptables，来不及跟这一帮子人过多的调侃闲聊了，老姐又激动的几乎晕过去，告知园园现在到了哈尔滨。<br>马上与老陈告别，交代了一下httpproxy代码的安装和运行便开车去见老姐，带其到三林之后取了1w块现金便开车直接去了浦东机场<br>3点半的飞机，1900块的价格让我乍舌了一下，没有打折的，没法子了<br>说实在的，提到飞机是有点发怵的，以前就做过3，4次，每次都跟自己说以后再也不坐飞机了，大概是怕死，死了很多都白费了<br>飞了近3小时到达哈尔滨，下飞机赶紧找个厕所尿了一下，知道园已经在火车站附近的派出所已呆了白天了，比较着急，打了车便走，东北人也不地道，被宰了7，80块<br>终于到了哈尔滨火车站，看到了牌子以及下面的大闹钟，还真的是哈尔滨，沿途看到了东北的杀猪菜xx饭店之类的东北特色的名词。<br>-12度，其实除了脸冻的发紫之外人整个都算还好，不是太冷，就是刚下过大雪所以地很滑。<br>东北确实破破烂烂的，最有特色的就是地上能很明显看出行人吐的痰，一颗一颗的，星罗棋布，因为气温低所以马上结冻了，似乎细菌也被困所在了里面，所以显得城市都很干净。<br>一路找啊找，没找到，又打了2，3个电话给园，东北人这个讲话的口音还真是有问题，含含糊糊的，一路打听到了那个站前车站派出所<br>推门进去，眼睛被迷糊了，里面都很人，所以人说东北外冷内热呢<br>园就在那里，看到我笑了笑，我也严肃很多，赶忙跟警察打招呼，表示感谢啊，一位马警官给园买了吃的，我是非常的感激万分道谢，办完手续之后便带园出来吃了李先生，花了41块钱。<br>出
来我问园是否要买点啥，带她去小店买点啥，想来想去还是买了条200的烟，出来找了路上一个小旅店拉客的小妹妹，塞了10块钱让她帮着把烟替我送给那个民
警，看她跑进去了我便跟园走了，没想到没过一会儿那小妹妹追了我好长一段，告诉我送到了，让我放心，我拍了拍她一下肩膀，谢谢！东北人真好<br>一路找
住宿的地方，一时间看花了眼，正好碰上一位旅店拉客的东北大姐，高个子，长得还不错，应该长我4，5岁的样子，本想着等一下去火车站买张晚上的车票趁着功
夫找家落脚的地方歇息一下便跟着大姐穿走在火车站附近街道，到了才发现是公房改建的小旅店，野路子旅店，看看这位大姐的热情程度，算了就不打击她了，暂时
付了30算到晚上12点之前的费用。<br>园除了校服之外里面就直接是短裤和短袖T shirt了，真是胖子不怕挨冻，也是自作自受。<br>跟旅店大姐聊了一番，她从家翻出见滑雪服以50块卖给了我，给这个园胖子穿上才好受了许多。还是挺划算的，对这个东北大姐也多了一丝好感，毕竟东北人还是比较豪爽。<br>之
后我想去火车站，想想单独留下园在这里也是不放心，便锁了门带上她一同出门。火车站人可是真多，想买直达上海的车票还真是不简单，找半天来售票处都没找
到，想想还是算了，打了了114查询买明日的飞机票，电话里我顶了2张牌票子，5折，算下来1000一张，那还好，搞定了准备带园回去，一路上看看哈尔滨
的夜景，别的没注意啥，就看到哈尔滨最出名的就是哈尔滨红肠，哈哈，想着回去买一些。<br>晚上园胖子便呼呼大睡起来，我也死活睡不过去，生物钟还没到呢。晚上请了个假，也被杨新笑话了一番。<br>早上8点半卖票处便电话过来与我确定送票地点，发现她们漏定了1张，我便告知还有个14岁的儿童，事情麻烦了，没法买票了，也打乱我今天原本的计划了。<br>之后便电话给机场公安，机场安检咨询办理手续，其告知必须出具户口本或者户籍信息包括照片。想想昨天那烟送的还真是该，多做好事没错吧！<br>园
胖子呼呼大睡，我便马上起来又来到了站前治安大队，一个叫宫克的警察很吊，从我见他到离开，他一直在玩他的手机，不知是不是在看色情信息这么投入，东北人
嘛讲话就是这么含糊，我反映了情况之后希望他们能开具相关证明，还算可以他们愿意帮忙，也许是昨天烟的缘故，也许确实他们比较通事理，都是几个50开外的
老警察，总的还都算不错。最后是一位叫 陈正钦
的警官替我查了公安网内的关于园的户籍信息，单就是没有照片，这个咋办呢，一阵的范晕，一个劲的求再查查其他系统，都没有全的信息，机场公安又强调必须要
有照片。<br>在陈警官的指导下，让我去附近的松花江派出所查询小孩的户籍信息，因为我知道园拍过社保卡，有照片信息存储的，所以便出来一路找到了派出所。<br>到
了这里，这里的民警一副很强横的态度，要不是老子求他们办事才不会装得低三下四，哀求了多次，又找这里的领导，被直接一口拒绝，说是只对辖区人口负责，其
他的他们没有这个能力，简直是畜生，还是人民警察呢，就是这么为全国人民服务的啊，妈的！去了2次，求了n次，只好没法，折回去的路上又给机场安检寻求帮
助，安检让我拍照然后让公安盖章也行，想想那帮松花江的混蛋警察那里也不去了，直接去站前派出所找到陈警官咨询，被告知可以，便开心了起来，道谢了一下，
赶紧跑回小旅店把园叫起来，喂了点吃的给她，路上刻意留心过附近的照相馆，所以拖着园一路小跑到了照相馆，拍照，20元。<br>拿着照片再去站前派出所，陈警官外出了，等了20分钟，他还是那么热情，顺利的办完了证明，我可是千恩万谢，要没有这个证明估计做火车要2天之后了。<br>出了大门，再去李先生吃饭，点了几个菜，吃了60多，席间我跟服务员要调羹，居然东北小妹没听懂，惹得旁桌的客人都笑了。出来让园胖子背对火车站给她留了个点，呵呵！<br>看看时间10点半了，赶紧打车到民航大厦，11点的大巴一个小时到了太平机场，路上大雪盖地，这个鬼地方还是人口稀少，都是庄稼地，现在的东北农民估计只好在家玩玩骰子了吧，整个大地都被冻起来了，一个劲的把这些村庄景象往乡村爱情里的场景套。<br>到了机场买机票，出具了园的证明，还一直担心着有啥问题呢，给了钱拿了票，一下子放心了。在侯机的时候才想起东北香肠，这个机场还真是黑的厉害，2斤卖了80块，想想算了，好歹也是来一次，也算给东北人民捐助了。<br>飞机延误了1小时2点30正式开飞。<br>东北常年阳光明媚，所以干燥。到上海已经5点30了，下着密雨，出了航站，找到自己的车，出库，交停车费，100，真是吃人，也没办法，开上radio，一路跟园时不时的聊上一两句，颠簸着回家，把园交到了姐手里。<br><br><img src ="http://www.cppblog.com/socketref/aggbug/109235.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/socketref/" target="_blank">放屁阿狗 </a> 2010-03-09 00:44 <a href="http://www.cppblog.com/socketref/archive/2010/03/09/109235.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Python::SocketServer</title><link>http://www.cppblog.com/socketref/archive/2010/02/15/107912.html</link><dc:creator>放屁阿狗 </dc:creator><author>放屁阿狗 </author><pubDate>Mon, 15 Feb 2010 15:42:00 GMT</pubDate><guid>http://www.cppblog.com/socketref/archive/2010/02/15/107912.html</guid><wfw:comment>http://www.cppblog.com/socketref/comments/107912.html</wfw:comment><comments>http://www.cppblog.com/socketref/archive/2010/02/15/107912.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/socketref/comments/commentRss/107912.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/socketref/services/trackbacks/107912.html</trackback:ping><description><![CDATA[缘于要做个http代理服务器的需求，开始琢磨SocketServer类，看看其有多优秀<br><br>BaseServer: 定义基础服务器接口，这些功能接口提供给子类继承。同时提供服务处理的骨架<br>&nbsp;&nbsp; serve_forever()&nbsp; 循环调用 handle_request()<br>&nbsp;&nbsp; handle_request()&nbsp; 调用子类的get_request() ，在tcpServer时实则进行accept()应答; 验证处理 verify_request();&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 最终处理请求 process_request()，<br>&nbsp;&nbsp; verify_request()&nbsp;&nbsp; 虚函数 <br>&nbsp;&nbsp; process_request()&nbsp; 虚函数，这个函数并没有直接在BaseServer的子类TcpServer中被重载，而是在TcpServer的派生类中通过另一个父类来实<br>现，比如 ThreadingTCPServer的基类ThreadingMixIn.process_request()实现了此功能函数<br>&nbsp;&nbsp; finish_request(request, client_address) 执行一次完整的socket数据读入处理，如果是ThreadMixInTcpServer产生的request，这个方法内必须实行循环读取socket数据,直到socket关闭。(此处 request 就是 socket对象)<br>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">def</span><span style="color: #000000;">&nbsp;finish_request(self,&nbsp;request,&nbsp;client_address):<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800000;">"""</span><span style="color: #800000;">Finish&nbsp;one&nbsp;request&nbsp;by&nbsp;instantiating&nbsp;RequestHandlerClass.</span><span style="color: #800000;">"""</span><span style="color: #000000;"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.RequestHandlerClass(request,&nbsp;client_address,&nbsp;self)</span></div>
&nbsp;&nbsp; 在finish_request里面便将读取socket数据的任务扔给了RequestHandler去处理了，代码可以跳过去看了<br>##---------------------------------------------<br><br>TcpServer:&nbsp; tcp服务器<br>&nbsp;&nbsp; __init__(self, server_address, RequestHandlerClass) 需要提供服务侦听地址和请求处理类对象<br>&nbsp;&nbsp; server_bind() 绑定服务器地址<br>&nbsp;&nbsp; server_activate() 激活服务器<br>&nbsp;&nbsp; server_close()&nbsp; 关闭服务器 <br>&nbsp;&nbsp; fileno()&nbsp; 返回服务器socket的句柄fd编号<br>&nbsp;&nbsp; get_request() 接收应答accept()<br>&nbsp;&nbsp; close_request(request) 关闭socket,request即为socket对象<br>&nbsp;<br>三种输出处理方式: 阻塞方式、线程处理(ThreadingMixIn)、进程处理(ForkingMixIn)<br><br>ThreadingMixIn: 线程模型<br>&nbsp;&nbsp; process_request( request, client_address) 为请求的链接创建新的线程,在创建线程时直接指定线程入口和参数:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;threading<br>t&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;threading.Thread(target&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;self.process_request_thread,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;args&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;(request,&nbsp;client_address))<br></span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;self.daemon_threads:<br>&nbsp;&nbsp;t.setDaemon&nbsp;(</span><span style="color: #000000;">1</span><span style="color: #000000;">)</span></div>
&nbsp;&nbsp; process_request_thread() 线程处理socket入口，负责接收数据，代码实现有点绕，看看代码<br>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #0000ff;">def</span><span style="color: #000000;">&nbsp;process_request_thread(self,&nbsp;request,&nbsp;client_address):</span><span style="color: #000000;"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">try</span><span style="color: #000000;">:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.finish_request(request,&nbsp;client_address)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.close_request(request)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">except</span><span style="color: #000000;">:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.handle_error(request,&nbsp;client_address)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.close_request(request)</span></div>
&nbsp;&nbsp;&nbsp; ThreadingMixIn<span style="color: #000000;">其实就是线程代理</span>，还是调用finish_request()进入处理tcp数据的循环，处理完成便close_request()。但是finish_request和close_request并未在ThreadingMinxIn内定义，在哪里呢？ 通过研读ThreadingTcpServer,原来通过ThreadingTcpServer这个finish_request又跑回了BaseServer.finish_request()<br><br>ThreadingTCPServer(ThreadingMixIn, TCPServer) 装配成线程池处理的tcp服务器<br>&nbsp;&nbsp; <br><br>BaseRequestHandler:&nbsp; 请求处理基础对象，提供统一的行为接口实现处理socket数据。 BaseRequestHandler比较好玩，在构造函数内完成了所有的操作，见代码：
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #0000ff;">def</span><span style="color: #000000;">&nbsp;</span><span style="color: #800080;">__init__</span><span style="color: #000000;">(self,&nbsp;request,&nbsp;client_address,&nbsp;server):<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.request&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;request<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.client_address&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;client_address<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.server&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;server<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">try</span><span style="color: #000000;">:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.setup()<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.handle()<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.finish()<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">finally</span><span style="color: #000000;">:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sys.exc_traceback&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;None&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">#</span><span style="color: #008000;">&nbsp;Help&nbsp;garbage&nbsp;collection</span></div>
&nbsp;&nbsp; setup()对应的子类会进行初始化处理<br>&nbsp;&nbsp; self.handle()&nbsp; 直接调用子类的处理函数，可以参考 BaseHTTPRequestHandler(SocketServer.StreamRequestHandler)::handle()<br><br><br>StreamRequestHandler(BaseRequestHandler) 流式socket处理类<br>&nbsp;&nbsp; setup() 设置好socket对象和读写文件句柄 rfile/wfile<br><br><br>HTTPServer(SocketServer.TCPServer) http服务器<br><br>BaseHTTPRequestHandler(SocketServer.StreamRequestHandler) 流式的请求处理类 <br>&nbsp;&nbsp; handle() 处理入口，在基类BaseRequestHandle()的构造函数中直接调用<br>&nbsp;&nbsp; handle_one_request() 如果不是处理一次则返回false。接收一次socket数据，解析parse_request(),调用对应的do_xxx事件<br><br>python 的daemon线程：<br><span id="ContentBody" style="padding: 10px; display: block;">如果一个进程的主线程运行完毕而子线程还在执行的话，那么进程就不会退出，直到所有子线程结束为止，如何让主线程结束的时候其他子线程也乖乖的跟老大撤退呢？那就要把那些不听话的人设置为听话的小弟，使用线程对象的<font color="#99cc00">setDaemon()</font>方法，参数为<font color="#99cc00">bool</font>型。<font color="#99cc00">True</font>的话就代表你要听话，我老大（主线程）扯呼，你也要跟着撤，不能拖后腿。如果是<font color="#99cc00">False</font>的话就不用那么听话了，老大允许你们将在外军命有所不受的。需要注意的是<font color="#99cc00">setDaemon()</font>方法必须在线程对象没有调用<font color="#99cc00">start()</font>方法之前调用，否则没效果。</span><br>&nbsp;&nbsp; <br><br>     <img src ="http://www.cppblog.com/socketref/aggbug/107912.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/socketref/" target="_blank">放屁阿狗 </a> 2010-02-15 23:42 <a href="http://www.cppblog.com/socketref/archive/2010/02/15/107912.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一个女大学生被骗的哭诉</title><link>http://www.cppblog.com/socketref/archive/2010/02/07/107424.html</link><dc:creator>放屁阿狗 </dc:creator><author>放屁阿狗 </author><pubDate>Sun, 07 Feb 2010 03:14:00 GMT</pubDate><guid>http://www.cppblog.com/socketref/archive/2010/02/07/107424.html</guid><wfw:comment>http://www.cppblog.com/socketref/comments/107424.html</wfw:comment><comments>http://www.cppblog.com/socketref/archive/2010/02/07/107424.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/socketref/comments/commentRss/107424.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/socketref/services/trackbacks/107424.html</trackback:ping><description><![CDATA[一日我接到陌生电话，一女孩笑嘻嘻的问我关于lah的情况，我觉得很不对劲，后来便一个劲的问我lah到底是不是结婚了，家在哪里，我想完了，又一个无知少女被骗去了感情和正操，现在骗子很多尤其是jx的。<br>　　我已经跟lah分家了许久，这个女子是在网络上找到我的信息，由于lah这个骗子每个周末都要回杭州，关闭一切通信工具，令此女子发狂的找寻他的下落。<br>　　我很不理解现在的少女为何这么的无知，连开房费都舍不得花的人如何泡上20来岁的大学女生的。我想lah是利用了人的怜悯的弱点，装可怜，装出生如何的凄惨，经历坎坷的求学之路，遭受前女友的抛弃，立志发奋努力，创就自己的事业，不要1000w不结婚，要结婚娶她为妻，虽然此女子一直是倒贴，但也乐不思蜀。<br>　　可是lah不地道的地方在于玩弄女性就非常不道德了，一方面要每个礼拜回去交公粮，一方面又在外面装君子，垃圾货色遭人唾弃。<br>　　后来那女孩找lah的老婆去了，闹腾了一番居然没事，原来lah跟他老婆交代我跟他有矛盾，是我找了这个女孩故意去闹腾的，lah老婆居然还信了，真是让我哭笑不得<br>　　<br>　　<br>　　少女哭诉录音1 ： http://118.126.7.153/download/cry1.amr<br>　　少女哭诉录音1 ：http://118.126.7.153/download/cry2.amr<br><img src ="http://www.cppblog.com/socketref/aggbug/107424.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/socketref/" target="_blank">放屁阿狗 </a> 2010-02-07 11:14 <a href="http://www.cppblog.com/socketref/archive/2010/02/07/107424.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>WebGis::数据处理</title><link>http://www.cppblog.com/socketref/archive/2010/02/07/107423.html</link><dc:creator>放屁阿狗 </dc:creator><author>放屁阿狗 </author><pubDate>Sun, 07 Feb 2010 02:52:00 GMT</pubDate><guid>http://www.cppblog.com/socketref/archive/2010/02/07/107423.html</guid><wfw:comment>http://www.cppblog.com/socketref/comments/107423.html</wfw:comment><comments>http://www.cppblog.com/socketref/archive/2010/02/07/107423.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/socketref/comments/commentRss/107423.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/socketref/services/trackbacks/107423.html</trackback:ping><description><![CDATA[手头一份08年的mapinfo格式中国全图，容量10G<br>去年3个月时间启动swMap开发计划，就是使用这份地图，目的是重新设计地图引擎，考虑支持嵌入式环境，桌面和web地图的需求，<br>开发语言c++，地图处理采用python+postgis<br>python现在成了手头开发、管理、协作的第一号助手，几乎没有特定要求的需求全部采用python<br><br>在家干了半年的工作成果和流程:<br>1. tab2tab : 将 mif转换成tab文件<br>2. ogr2gr 将tab转换成shp<br>3. arcgis9.1对shp进行验证和修复，这一步非常重要，在之后采用geos进行集合计算时，如果错误的图元导致很多操作的失败<br>4. shp2pgsql,psql 将shp导入postgis数据库<br>5. python对数据进行过滤，修正，裁剪<br>6. python加工地图数据存储到自己设计的地图存储文件中（网格存储）<br>7. wxwidgets开发地图渲染服务器，提供web、ice、socket访问接口，并实现wms，wfs一些基本协议功能<br>8. 开发前端flex地图显示组件，类似google map flex一样提供cache buffered功能，使地图显示来得更平滑<br>9. openlayers开发展示前端，通过wms访问swMapserver<br>10.最终叠加不同的应用，jquery/django/pgsql开发webservice应用<br><br>至今未加入消锯齿、Halo等绘制效果，绘制道路还有不太美观，实在是没时间<br>计划增加远程视频<br><br> <img src ="http://www.cppblog.com/socketref/aggbug/107423.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/socketref/" target="_blank">放屁阿狗 </a> 2010-02-07 10:52 <a href="http://www.cppblog.com/socketref/archive/2010/02/07/107423.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>决定放弃wxwidget转投QT</title><link>http://www.cppblog.com/socketref/archive/2010/02/02/107038.html</link><dc:creator>放屁阿狗 </dc:creator><author>放屁阿狗 </author><pubDate>Tue, 02 Feb 2010 11:19:00 GMT</pubDate><guid>http://www.cppblog.com/socketref/archive/2010/02/02/107038.html</guid><wfw:comment>http://www.cppblog.com/socketref/comments/107038.html</wfw:comment><comments>http://www.cppblog.com/socketref/archive/2010/02/02/107038.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/socketref/comments/commentRss/107038.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/socketref/services/trackbacks/107038.html</trackback:ping><description><![CDATA[自己采用wxwidgets开发过3个项目，1个是50w级别还有2个是10w一下的项目，深深的被wx给刺痛了。<br>wx的确不如QT开发效率要来的高，包括质量、稳定性、扩展性、功能丰富程度都远远不及QT。<br>由于商业公司的支持，QT这多花绽放出了美丽的色彩，而wx呢，3.0等待到了现在还没有拉出来。<br>很多人经常比较wx和qt，我认为如果做应用软件，可以用用wx，但是如果是个系统的项目，用wx倒后来将是个非常痛苦的事情，<br>往往开发周期延长，开发难度越陷越深，想深层次的挖掘一些功能却是束手无策，很多次都想推到重来，以至于想用mfc重新来过。<br>wx到2.8.9版本，许多类库还是非常的不稳定，必须thread，stack等等，在调试系统的时候往往会出现摸不着头脑的问题。<br>当初选择开发方案时着实的没有考虑清楚，导致后来开发随着需求的变动把程序员搞得心力憔悴。<br>wx看上去比mfc封装了很多东西，但是模式还是mfc的哪一套，wx没有官方的ui的设计工具，DialogBox算是比交有点响头的ui辅助<br>软件，但在用过之后才觉得非常的无助。<br>随着项目需求的修改和扩展，系统有近百个Form要维护，几百个组件维护需要很大的体力劳动，同mfc一般一个ID绑定一个对象，代码量极具膨胀；<br>QT就表现得非常优雅，将资源ID等业务不相关得东西通过对象的connect都屏蔽掉了，qt也提供了比骄强的IDE，所有操作如同在BCB一般的干净利落。<br><br><br><br><img src ="http://www.cppblog.com/socketref/aggbug/107038.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/socketref/" target="_blank">放屁阿狗 </a> 2010-02-02 19:19 <a href="http://www.cppblog.com/socketref/archive/2010/02/02/107038.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>邮件监控</title><link>http://www.cppblog.com/socketref/archive/2009/11/15/100987.html</link><dc:creator>放屁阿狗 </dc:creator><author>放屁阿狗 </author><pubDate>Sun, 15 Nov 2009 10:07:00 GMT</pubDate><guid>http://www.cppblog.com/socketref/archive/2009/11/15/100987.html</guid><wfw:comment>http://www.cppblog.com/socketref/comments/100987.html</wfw:comment><comments>http://www.cppblog.com/socketref/archive/2009/11/15/100987.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cppblog.com/socketref/comments/commentRss/100987.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/socketref/services/trackbacks/100987.html</trackback:ping><description><![CDATA[<meta http-equiv="Content-Type" content="text/html; charset="utf-8"">
<meta name="ProgId" content="Word.Document">
<meta name="Generator" content="Microsoft Word 11">
<meta name="Originator" content="Microsoft Word 11">
<link rel="File-List" href="file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5C1%5Cmsohtml1%5C01%5Cclip_filelist.xml"><!--[if gte mso 9]><xml>
Normal
0
7.8 磅
0
2
false
false
false
MicrosoftInternetExplorer4
</xml><![endif]--><!--[if gte mso 9]><xml>
</xml><![endif]--><style>
<!--
/* Font Definitions */
@font-face
{font-family:宋体;
panose-1:2 1 6 0 3 1 1 1 1 1;
mso-font-alt:SimSun;
mso-font-charset:134;
mso-generic-font-family:auto;
mso-font-pitch:variable;
mso-font-signature:3 135135232 16 0 262145 0;}
@font-face
{font-family:"\@宋体";
panose-1:2 1 6 0 3 1 1 1 1 1;
mso-font-charset:134;
mso-generic-font-family:auto;
mso-font-pitch:variable;
mso-font-signature:3 135135232 16 0 262145 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{mso-style-parent:"";
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
text-justify:inter-ideograph;
mso-pagination:none;
font-size:10.5pt;
mso-bidi-font-size:12.0pt;
font-family:"Times New Roman";
mso-fareast-font-family:宋体;
mso-font-kerning:1.0pt;}
/* Page Definitions */
@page
{mso-page-border-surround-header:no;
mso-page-border-surround-footer:no;}
@page Section1
{size:612.0pt 792.0pt;
margin:72.0pt 90.0pt 72.0pt 90.0pt;
mso-header-margin:36.0pt;
mso-footer-margin:36.0pt;
mso-paper-source:0;}
div.Section1
{page:Section1;}
-->
</style><!--[if gte mso 10]>
<style>
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:普通表格;
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.0pt;
font-family:"Times New Roman";
mso-fareast-font-family:"Times New Roman";
mso-ansi-language:#0400;
mso-fareast-language:#0400;
mso-bidi-language:#0400;}
</style>
<![endif]-->
<p>监控读取AWS,6466磁带设备的事件通知邮件，进行过滤压制之后传送给ovou系统</p>
Telmail.sh,telmail.pl为两个邮件发送例程
<br><br><br>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #008080;">&nbsp;&nbsp;1</span>&nbsp;<span style="color: #008000;">#</span><span style="color: #008000;">&nbsp;-*-&nbsp;coding:&nbsp;gb2312&nbsp;-*-</span><span style="color: #008000;"><br></span><span style="color: #008080;">&nbsp;&nbsp;2</span>&nbsp;<span style="color: #008000;"></span><span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;&nbsp;3</span>&nbsp;<span style="color: #000000;"></span><span style="color: #800000;">'''</span><span style="color: #800000;"><br></span><span style="color: #008080;">&nbsp;&nbsp;4</span>&nbsp;<span style="color: #800000;">summary:&nbsp;&nbsp;&nbsp;&nbsp;<br></span><span style="color: #008080;">&nbsp;&nbsp;5</span>&nbsp;<span style="color: #800000;">&nbsp;&nbsp;&nbsp;&nbsp;1.6466磁带库报警处理<br></span><span style="color: #008080;">&nbsp;&nbsp;6</span>&nbsp;<span style="color: #800000;">&nbsp;&nbsp;&nbsp;&nbsp;2.AWS报警处理<br></span><span style="color: #008080;">&nbsp;&nbsp;7</span>&nbsp;<span style="color: #800000;">&nbsp;&nbsp;&nbsp;&nbsp;传输接口:&nbsp;&nbsp;&nbsp;&nbsp;smtp<br></span><span style="color: #008080;">&nbsp;&nbsp;8</span>&nbsp;<span style="color: #800000;">&nbsp;&nbsp;&nbsp;&nbsp;过滤邮件内容,生成事件到ovo<br></span><span style="color: #008080;">&nbsp;&nbsp;9</span>&nbsp;<span style="color: #800000;">author&nbsp;:&nbsp;&nbsp;&nbsp;&nbsp;zhangbin<br></span><span style="color: #008080;">&nbsp;10</span>&nbsp;<span style="color: #800000;">date:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2006.03.04<br></span><span style="color: #008080;">&nbsp;11</span>&nbsp;<span style="color: #800000;">company:&nbsp;&nbsp;&nbsp;&nbsp;ultrapower.com.cn<br></span><span style="color: #008080;">&nbsp;12</span>&nbsp;<span style="color: #800000;"></span><span style="color: #800000;">'''</span><span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;13</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;14</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;15</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;os<br></span><span style="color: #008080;">&nbsp;16</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;sys<br></span><span style="color: #008080;">&nbsp;17</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;socket<br></span><span style="color: #008080;">&nbsp;18</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;time<br></span><span style="color: #008080;">&nbsp;19</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;poplib<br></span><span style="color: #008080;">&nbsp;20</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;base64<br></span><span style="color: #008080;">&nbsp;21</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;string<br></span><span style="color: #008080;">&nbsp;22</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;re<br></span><span style="color: #008080;">&nbsp;23</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">from</span><span style="color: #000000;">&nbsp;conf&nbsp;</span><span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;24</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;25</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;26</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;27</span>&nbsp;<span style="color: #000000;">aws_field_map</span><span style="color: #000000;">=</span><span style="color: #000000;">{</span><span style="color: #800000;">'</span><span style="color: #800000;">Information</span><span style="color: #800000;">'</span><span style="color: #000000;">:</span><span style="color: #800000;">'</span><span style="color: #800000;">normal</span><span style="color: #800000;">'</span><span style="color: #000000;">,<br></span><span style="color: #008080;">&nbsp;28</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800000;">'</span><span style="color: #800000;">Warning</span><span style="color: #800000;">'</span><span style="color: #000000;">:</span><span style="color: #800000;">'</span><span style="color: #800000;">warning</span><span style="color: #800000;">'</span><span style="color: #000000;">,<br></span><span style="color: #008080;">&nbsp;29</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800000;">'</span><span style="color: #800000;">Degraded</span><span style="color: #800000;">'</span><span style="color: #000000;">:</span><span style="color: #800000;">'</span><span style="color: #800000;">major</span><span style="color: #800000;">'</span><span style="color: #000000;">,<br></span><span style="color: #008080;">&nbsp;30</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800000;">'</span><span style="color: #800000;">Critical</span><span style="color: #800000;">'</span><span style="color: #000000;">:</span><span style="color: #800000;">'</span><span style="color: #800000;">critical</span><span style="color: #800000;">'</span><span style="color: #000000;">,<br></span><span style="color: #008080;">&nbsp;31</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800000;">'</span><span style="color: #800000;">Fatal</span><span style="color: #800000;">'</span><span style="color: #000000;">:</span><span style="color: #800000;">'</span><span style="color: #800000;">critical</span><span style="color: #800000;">'</span><span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;32</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080;">&nbsp;33</span>&nbsp;<span style="color: #000000;">ME</span><span style="color: #000000;">=</span><span style="color: #800000;">'</span><span style="color: #800000;">szmail</span><span style="color: #800000;">'</span><span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;34</span>&nbsp;<span style="color: #000000;">this&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;modlist[ME]<br></span><span style="color: #008080;">&nbsp;35</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;36</span>&nbsp;<span style="color: #000000;">host</span><span style="color: #000000;">=</span><span style="color: #000000;">this[</span><span style="color: #800000;">'</span><span style="color: #800000;">host</span><span style="color: #800000;">'</span><span style="color: #000000;">]<br></span><span style="color: #008080;">&nbsp;37</span>&nbsp;<span style="color: #000000;">user</span><span style="color: #000000;">=</span><span style="color: #000000;">this[</span><span style="color: #800000;">'</span><span style="color: #800000;">user</span><span style="color: #800000;">'</span><span style="color: #000000;">]<br></span><span style="color: #008080;">&nbsp;38</span>&nbsp;<span style="color: #000000;">passwd&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">this[</span><span style="color: #800000;">'</span><span style="color: #800000;">passwd</span><span style="color: #800000;">'</span><span style="color: #000000;">]<br></span><span style="color: #008080;">&nbsp;39</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;40</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;41</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">def</span><span style="color: #000000;">&nbsp;Print(msg):<br></span><span style="color: #008080;">&nbsp;42</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;lp(ME,msg)<br></span><span style="color: #008080;">&nbsp;43</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;44</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;45</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">def</span><span style="color: #000000;">&nbsp;process_AWS(title,msg):<br></span><span style="color: #008080;">&nbsp;46</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">try</span><span style="color: #000000;">:<br></span><span style="color: #008080;">&nbsp;47</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;app</span><span style="color: #000000;">=</span><span style="color: #800000;">'</span><span style="color: #800000;">AWS</span><span style="color: #800000;">'</span><span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;48</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;node</span><span style="color: #000000;">=</span><span style="color: #800000;">''</span><span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;49</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;obj</span><span style="color: #000000;">=</span><span style="color: #800000;">''</span><span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;50</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;severity</span><span style="color: #000000;">=</span><span style="color: #800000;">''</span><span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;51</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;msg_text</span><span style="color: #000000;">=</span><span style="color: #800000;">''</span><span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;52</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br></span><span style="color: #008080;">&nbsp;53</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">print</span><span style="color: #000000;">&nbsp;</span><span style="color: #800000;">'</span><span style="color: #800000;">&gt;&gt;&gt;</span><span style="color: #800000;">'</span><span style="color: #000000;">,msg<br></span><span style="color: #008080;">&nbsp;54</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;title.index(</span><span style="color: #800000;">'</span><span style="color: #800000;">CSF&nbsp;Fault&nbsp;Detected</span><span style="color: #800000;">'</span><span style="color: #000000;">)<br></span><span style="color: #008080;">&nbsp;55</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lines&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;msg.split(</span><span style="color: #800000;">'</span><span style="color: #800000;">\n</span><span style="color: #800000;">'</span><span style="color: #000000;">)<br></span><span style="color: #008080;">&nbsp;56</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br></span><span style="color: #008080;">&nbsp;57</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">&nbsp;l&nbsp;</span><span style="color: #0000ff;">in</span><span style="color: #000000;">&nbsp;lines:<br></span><span style="color: #008080;">&nbsp;58</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;re.match(</span><span style="color: #800000;">'</span><span style="color: #800000;">.*Fault&nbsp;id.*?:\s*(.*)/(.*)</span><span style="color: #800000;">'</span><span style="color: #000000;">,l)<br></span><span style="color: #008080;">&nbsp;59</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;r:<br></span><span style="color: #008080;">&nbsp;60</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;node&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;r.group(</span><span style="color: #000000;">1</span><span style="color: #000000;">)<br></span><span style="color: #008080;">&nbsp;61</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;obj&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;r.group(</span><span style="color: #000000;">2</span><span style="color: #000000;">)<br></span><span style="color: #008080;">&nbsp;62</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">continue</span><span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;63</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;re.match(</span><span style="color: #800000;">'</span><span style="color: #800000;">.*Severity.*?:\s*(\w+)</span><span style="color: #800000;">'</span><span style="color: #000000;">,l)<br></span><span style="color: #008080;">&nbsp;64</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;r:<br></span><span style="color: #008080;">&nbsp;65</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;f</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;r.group(</span><span style="color: #000000;">1</span><span style="color: #000000;">).strip()<br></span><span style="color: #008080;">&nbsp;66</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;aws_field_map.has_key(f):<br></span><span style="color: #008080;">&nbsp;67</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;severity&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;aws_field_map[f]<br></span><span style="color: #008080;">&nbsp;68</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">continue</span><span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;69</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;&nbsp;re.match(</span><span style="color: #800000;">'</span><span style="color: #800000;">.*Synopsis.*?:\s*([\w|\s]+)</span><span style="color: #800000;">'</span><span style="color: #000000;">,l)<br></span><span style="color: #008080;">&nbsp;70</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;r&nbsp;:<br></span><span style="color: #008080;">&nbsp;71</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;msg_text</span><span style="color: #000000;">=</span><span style="color: #000000;">r.group(</span><span style="color: #000000;">1</span><span style="color: #000000;">)<br></span><span style="color: #008080;">&nbsp;72</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cmd&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #800000;">"</span><span style="color: #800000;">opcmsg&nbsp;app=AWS&nbsp;</span><span style="color: #800000;">"</span><span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;73</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;node:<br></span><span style="color: #008080;">&nbsp;74</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cmd&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;cmd</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;</span><span style="color: #800000;">"</span><span style="color: #800000;">&nbsp;node=%s&nbsp;</span><span style="color: #800000;">"</span><span style="color: #000000;">%</span><span style="color: #000000;">node<br></span><span style="color: #008080;">&nbsp;75</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;obj:<br></span><span style="color: #008080;">&nbsp;76</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cmd&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;cmd</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;</span><span style="color: #800000;">"</span><span style="color: #800000;">&nbsp;obj=%s&nbsp;</span><span style="color: #800000;">"</span><span style="color: #000000;">%</span><span style="color: #000000;">obj<br></span><span style="color: #008080;">&nbsp;77</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;severity:<br></span><span style="color: #008080;">&nbsp;78</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cmd</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;cmd&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;</span><span style="color: #800000;">"</span><span style="color: #800000;">&nbsp;severity=%s&nbsp;</span><span style="color: #800000;">"</span><span style="color: #000000;">%</span><span style="color: #000000;">severity<br></span><span style="color: #008080;">&nbsp;79</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;msg_text:<br></span><span style="color: #008080;">&nbsp;80</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cmd&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;cmd&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;</span><span style="color: #800000;">'</span><span style="color: #800000;">&nbsp;msg_text="%s"&nbsp;</span><span style="color: #800000;">'</span><span style="color: #000000;">%</span><span style="color: #000000;">msg_text<br></span><span style="color: #008080;">&nbsp;81</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">print</span><span style="color: #000000;">&nbsp;</span><span style="color: #800000;">"</span><span style="color: #800000;">execute&nbsp;command:%s</span><span style="color: #800000;">"</span><span style="color: #000000;">%</span><span style="color: #000000;">cmd<br></span><span style="color: #008080;">&nbsp;82</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">except</span><span style="color: #000000;">:<br></span><span style="color: #008080;">&nbsp;83</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;False<br></span><span style="color: #008080;">&nbsp;84</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;True<br></span><span style="color: #008080;">&nbsp;85</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;<br></span><span style="color: #008080;">&nbsp;86</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;<br></span><span style="color: #008080;">&nbsp;87</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;<br></span><span style="color: #008080;">&nbsp;88</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">def</span><span style="color: #000000;">&nbsp;process_TAPE(title,msg):<br></span><span style="color: #008080;">&nbsp;89</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800000;">'''</span><span style="color: #800000;">&nbsp;for&nbsp;6466&nbsp;tape&nbsp;monitor&nbsp;</span><span style="color: #800000;">'''</span><span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;90</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;<br></span><span style="color: #008080;">&nbsp;91</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;92</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">def</span><span style="color: #000000;">&nbsp;mail_sender(body):<br></span><span style="color: #008080;">&nbsp;93</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">pass</span><span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;94</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;<br></span><span style="color: #008080;">&nbsp;95</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">def</span><span style="color: #000000;">&nbsp;mail_hdr_section(section,body):&nbsp;&nbsp;&nbsp;&nbsp;<br></span><span style="color: #008080;">&nbsp;96</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;title</span><span style="color: #000000;">=</span><span style="color: #800000;">''</span><span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;97</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">try</span><span style="color: #000000;">:<br></span><span style="color: #008080;">&nbsp;98</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;n&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;body.index(</span><span style="color: #800000;">''</span><span style="color: #000000;">)<br></span><span style="color: #008080;">&nbsp;99</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">&nbsp;i&nbsp;</span><span style="color: #0000ff;">in</span><span style="color: #000000;">&nbsp;range(n):<br></span><span style="color: #008080;">100</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">try</span><span style="color: #000000;">:<br></span><span style="color: #008080;">101</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;occ&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;body[i].index(section</span><span style="color: #000000;">+</span><span style="color: #800000;">'</span><span style="color: #800000;">:</span><span style="color: #800000;">'</span><span style="color: #000000;">)<br></span><span style="color: #008080;">102</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;title</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;body[i][&nbsp;(occ</span><span style="color: #000000;">+</span><span style="color: #000000;">len(section</span><span style="color: #000000;">+</span><span style="color: #800000;">'</span><span style="color: #800000;">:</span><span style="color: #800000;">'</span><span style="color: #000000;">)):]<br></span><span style="color: #008080;">103</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">except</span><span style="color: #000000;">:<br></span><span style="color: #008080;">104</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">continue</span><span style="color: #000000;"><br></span><span style="color: #008080;">105</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">except</span><span style="color: #000000;">:<br></span><span style="color: #008080;">106</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">pass</span><span style="color: #000000;"><br></span><span style="color: #008080;">107</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;title<br></span><span style="color: #008080;">108</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;<br></span><span style="color: #008080;">109</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">def</span><span style="color: #000000;">&nbsp;mail_context(encode,body):<br></span><span style="color: #008080;">110</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800000;">'''</span><span style="color: #800000;">&nbsp;extract&nbsp;mail&nbsp;body&nbsp;text&nbsp;from&nbsp;string-list<br></span><span style="color: #008080;">111</span>&nbsp;<span style="color: #800000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;multiple&nbsp;charset&nbsp;will&nbsp;be&nbsp;encoded&nbsp;to&nbsp;base64,but&nbsp;plain&nbsp;text&nbsp;will&nbsp;not<br></span><span style="color: #008080;">112</span>&nbsp;<span style="color: #800000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800000;">'''</span><span style="color: #000000;"><br></span><span style="color: #008080;">113</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;context&nbsp;</span><span style="color: #000000;">=</span><span style="color: #800000;">''</span><span style="color: #000000;"><br></span><span style="color: #008080;">114</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">try</span><span style="color: #000000;">:<br></span><span style="color: #008080;">115</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;n&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;body.index(</span><span style="color: #800000;">''</span><span style="color: #000000;">)<br></span><span style="color: #008080;">116</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lines&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;body[n:]<br></span><span style="color: #008080;">117</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;encode.find(</span><span style="color: #800000;">'</span><span style="color: #800000;">base64</span><span style="color: #800000;">'</span><span style="color: #000000;">)&nbsp;</span><span style="color: #000000;">&gt;=</span><span style="color: #000000;">&nbsp;0&nbsp;:<br></span><span style="color: #008080;">118</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;context&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;base64.decodestring(context)<br></span><span style="color: #008080;">119</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;">&nbsp;:<br></span><span style="color: #008080;">120</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;context&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;string.join(lines,</span><span style="color: #800000;">'</span><span style="color: #800000;">\n</span><span style="color: #800000;">'</span><span style="color: #000000;">)&nbsp;</span><span style="color: #008000;">#</span><span style="color: #008000;">maybe&nbsp;7bit</span><span style="color: #008000;"><br></span><span style="color: #008080;">121</span>&nbsp;<span style="color: #008000;"></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">except</span><span style="color: #000000;">:<br></span><span style="color: #008080;">122</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">pass</span><span style="color: #000000;"><br></span><span style="color: #008080;">123</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;context<br></span><span style="color: #008080;">124</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">125</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">def</span><span style="color: #000000;">&nbsp;process(c,m):<br></span><span style="color: #008080;">126</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800000;">'''</span><span style="color: #800000;">&nbsp;c&nbsp;&nbsp;&nbsp;&nbsp;--&nbsp;mail&nbsp;number,<br></span><span style="color: #008080;">127</span>&nbsp;<span style="color: #800000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m&nbsp;&nbsp;&nbsp;&nbsp;--&nbsp;mail&nbsp;object<br></span><span style="color: #008080;">128</span>&nbsp;<span style="color: #800000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;提取邮件标题和邮件内容<br></span><span style="color: #008080;">129</span>&nbsp;<span style="color: #800000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800000;">'''</span><span style="color: #000000;"><br></span><span style="color: #008080;">130</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">&nbsp;i&nbsp;</span><span style="color: #0000ff;">in</span><span style="color: #000000;">&nbsp;range(</span><span style="color: #000000;">1</span><span style="color: #000000;">):<br></span><span style="color: #008080;">131</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">print</span><span style="color: #000000;">&nbsp;</span><span style="color: #800000;">"</span><span style="color: #800000;">&gt;&gt;&gt;&gt;Process&nbsp;%d<img src="http://www.cppblog.com/Images/dot.gif"></span><span style="color: #800000;">"</span><span style="color: #000000;">%</span><span style="color: #000000;">(i</span><span style="color: #000000;">+</span><span style="color: #000000;">1</span><span style="color: #000000;">)<br></span><span style="color: #008080;">132</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;list&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;m.retr(i</span><span style="color: #000000;">+</span><span style="color: #000000;">1</span><span style="color: #000000;">)<br></span><span style="color: #008080;">133</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;title&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;mail_hdr_section(</span><span style="color: #800000;">'</span><span style="color: #800000;">Subject</span><span style="color: #800000;">'</span><span style="color: #000000;">,list[</span><span style="color: #000000;">1</span><span style="color: #000000;">])<br></span><span style="color: #008080;">134</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;encode&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;mail_hdr_section(</span><span style="color: #800000;">'</span><span style="color: #800000;">Content-Transfer-Encoding</span><span style="color: #800000;">'</span><span style="color: #000000;">,list[</span><span style="color: #000000;">1</span><span style="color: #000000;">])<br></span><span style="color: #008080;">135</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">print</span><span style="color: #000000;">&nbsp;list[</span><span style="color: #000000;">1</span><span style="color: #000000;">]<br></span><span style="color: #008080;">136</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;context&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;mail_context(encode.strip(),list[</span><span style="color: #000000;">1</span><span style="color: #000000;">])<br></span><span style="color: #008080;">137</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">not</span><span style="color: #000000;">&nbsp;process_AWS(title,context):<br></span><span style="color: #008080;">138</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;process_TAPE(title,context)<br></span><span style="color: #008080;">139</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">#</span><span style="color: #008000;">m.dele(i+1)</span><span style="color: #008000;"><br></span><span style="color: #008080;">140</span>&nbsp;<span style="color: #008000;"></span><span style="color: #000000;"><br></span><span style="color: #008080;">141</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">def</span><span style="color: #000000;">&nbsp;main_entry():<br></span><span style="color: #008080;">142</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;Print(</span><span style="color: #800000;">'</span><span style="color: #800000;">OK+,%s&nbsp;start&nbsp;up!</span><span style="color: #800000;">'</span><span style="color: #000000;">%</span><span style="color: #000000;">ME)<br></span><span style="color: #008080;">143</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">while</span><span style="color: #000000;">&nbsp;True:<br></span><span style="color: #008080;">144</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">try</span><span style="color: #000000;">:<br></span><span style="color: #008080;">145</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;poplib.POP3(host)<br></span><span style="color: #008080;">146</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m.user(user)<br></span><span style="color: #008080;">147</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m.pass_(passwd)<br></span><span style="color: #008080;">148</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;c&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;m.stat()[0]<br></span><span style="color: #008080;">149</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;&nbsp;c&nbsp;:<br></span><span style="color: #008080;">150</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">print</span><span style="color: #000000;">&nbsp;</span><span style="color: #800000;">"</span><span style="color: #800000;">&gt;&gt;&nbsp;Detected&nbsp;%s&nbsp;Letters!</span><span style="color: #800000;">"</span><span style="color: #000000;">%</span><span style="color: #000000;">(c)<br></span><span style="color: #008080;">151</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;process(c,m)<br></span><span style="color: #008080;">152</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m.quit()<br></span><span style="color: #008080;">153</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">except</span><span style="color: #000000;">:<br></span><span style="color: #008080;">154</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">pass</span><span style="color: #000000;"><br></span><span style="color: #008080;">155</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;time.sleep(this[</span><span style="color: #800000;">'</span><span style="color: #800000;">wait</span><span style="color: #800000;">'</span><span style="color: #000000;">])&nbsp;&nbsp;&nbsp;&nbsp;<br></span><span style="color: #008080;">156</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;<br></span><span style="color: #008080;">157</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;</span><span style="color: #800080;">__name__</span><span style="color: #000000;">==</span><span style="color: #800000;">'</span><span style="color: #800000;">__main__</span><span style="color: #800000;">'</span><span style="color: #000000;">:<br></span><span style="color: #008080;">158</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;main_entry()<br></span><span style="color: #008080;">159</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">160</span>&nbsp;<span style="color: #000000;"></span></div>
<br><img src ="http://www.cppblog.com/socketref/aggbug/100987.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/socketref/" target="_blank">放屁阿狗 </a> 2009-11-15 18:07 <a href="http://www.cppblog.com/socketref/archive/2009/11/15/100987.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>好些年前写的发送mail的shell脚本</title><link>http://www.cppblog.com/socketref/archive/2009/11/15/100986.html</link><dc:creator>放屁阿狗 </dc:creator><author>放屁阿狗 </author><pubDate>Sun, 15 Nov 2009 10:04:00 GMT</pubDate><guid>http://www.cppblog.com/socketref/archive/2009/11/15/100986.html</guid><wfw:comment>http://www.cppblog.com/socketref/comments/100986.html</wfw:comment><comments>http://www.cppblog.com/socketref/archive/2009/11/15/100986.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/socketref/comments/commentRss/100986.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/socketref/services/trackbacks/100986.html</trackback:ping><description><![CDATA[tomail()<br>{<br>sleep 3<br>echo&nbsp; "helo zhangbin"<br>sleep 2<br>echo&nbsp; "mail from:zhangbin@ultrapower.com.cn"<br>sleep 2<br>echo&nbsp; "rcpt to:zhangbin@ultrapower.com.cn"<br>sleep 2<br>echo&nbsp; "data"<br>sleep 2<br>echo&nbsp; "this is test context!\n"<br>echo ".\n"<br>sleep 5<br>echo&nbsp; "quit\n"<br>echo&nbsp; ""<br>}<br>&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;<br>tomail | telnet 219.238.168.131 25 <br><br><img src ="http://www.cppblog.com/socketref/aggbug/100986.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/socketref/" target="_blank">放屁阿狗 </a> 2009-11-15 18:04 <a href="http://www.cppblog.com/socketref/archive/2009/11/15/100986.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>没地方落笔了</title><link>http://www.cppblog.com/socketref/archive/2009/09/30/97611.html</link><dc:creator>放屁阿狗 </dc:creator><author>放屁阿狗 </author><pubDate>Tue, 29 Sep 2009 20:53:00 GMT</pubDate><guid>http://www.cppblog.com/socketref/archive/2009/09/30/97611.html</guid><wfw:comment>http://www.cppblog.com/socketref/comments/97611.html</wfw:comment><comments>http://www.cppblog.com/socketref/archive/2009/09/30/97611.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/socketref/comments/commentRss/97611.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/socketref/services/trackbacks/97611.html</trackback:ping><description><![CDATA[已经能去的地方很少了，自己的msn空间这段时间也无法登录了<br>facebook，yutobe之类的更别想了，中国人就是这样，作践自己，政府也够下贱的，井底之蛙，那么多的贪官巨吏不去抓，证券股票市场那么黑暗都不去整治，只会整日填塞老百姓的耳目，又有何用呢。<br>可悲之极，失望之极<br>马路上跑的audi A6越来越多，暴发户、二奶、公务员都趾高气扬的凌驾于众多百姓阶层之上，一个村长年收入可以达到50w，土地成为敛财的工具，一次换届选举可以以百元换票，如果我有把AK便可狂扫天下之淫邪之徒。<br>东航每年上百亿的亏损国家补贴，可退休的客机干部可以拿着6k的退休金很爽的生活。很多现象我都想不明白，所谓的干部领导在职期间到底做了些什么，智力付出上不如科研人员那么，体力更不如工人阶级，凭什么高官厚禄无忧虑的过活，入党就如封建科举制度一样，便可步入仕途，退休了还可以活的以1，20倍与我等父辈的津贴<br><br><img src ="http://www.cppblog.com/socketref/aggbug/97611.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/socketref/" target="_blank">放屁阿狗 </a> 2009-09-30 04:53 <a href="http://www.cppblog.com/socketref/archive/2009/09/30/97611.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>地图比例计算</title><link>http://www.cppblog.com/socketref/archive/2009/09/26/97269.html</link><dc:creator>放屁阿狗 </dc:creator><author>放屁阿狗 </author><pubDate>Fri, 25 Sep 2009 21:45:00 GMT</pubDate><guid>http://www.cppblog.com/socketref/archive/2009/09/26/97269.html</guid><wfw:comment>http://www.cppblog.com/socketref/comments/97269.html</wfw:comment><comments>http://www.cppblog.com/socketref/archive/2009/09/26/97269.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/socketref/comments/commentRss/97269.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/socketref/services/trackbacks/97269.html</trackback:ping><description><![CDATA[<br>地图比例表：<br>G_SCALE_UNITS=[ 0.200000,<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 0.600000,<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 1.000000,<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 2.000000,<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 4.000000,<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 8.000000,<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 15.000000,<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 30.000000,<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 60.000000,<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 120.000000,<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 300.000000,<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 600.000000,<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 1200.000000,<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 2000.000000,<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 3000.000000,<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 5000.000000]<br>表示 1个像素代表0.2米<br>屏幕通常的DPI 是每英寸 96像素<br>每英寸 2.54厘米<br>这样就能换算出显示比例了:&nbsp; 0.2*100/2.54*96 = 755.9 = 756<br>也就是显示比例是 1:756<br><br><br><img src ="http://www.cppblog.com/socketref/aggbug/97269.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/socketref/" target="_blank">放屁阿狗 </a> 2009-09-26 05:45 <a href="http://www.cppblog.com/socketref/archive/2009/09/26/97269.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>地图路名的计算绘制</title><link>http://www.cppblog.com/socketref/archive/2009/09/25/97191.html</link><dc:creator>放屁阿狗 </dc:creator><author>放屁阿狗 </author><pubDate>Thu, 24 Sep 2009 19:09:00 GMT</pubDate><guid>http://www.cppblog.com/socketref/archive/2009/09/25/97191.html</guid><wfw:comment>http://www.cppblog.com/socketref/comments/97191.html</wfw:comment><comments>http://www.cppblog.com/socketref/archive/2009/09/25/97191.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/socketref/comments/commentRss/97191.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/socketref/services/trackbacks/97191.html</trackback:ping><description><![CDATA[打开google，照抄他的绘制风格，没有启用小锯齿功能，所以画出来也是比较难看<br>基本完成了道路的曲线绘制<br><br>google的Skia看了看，似乎比cario更轻量级，不过文档也是只能通过doxygen来看了，资料还是太少，还是用cairo来小锯齿吧<br><img alt="" src="http://www.cppblog.com/images/cppblog_com/socketref/road_draw.jpg" width="600" height="500"><br>选择一个好的字体也许效果会好很多<br><img alt=""  src="http://www.cppblog.com/images/cppblog_com/socketref/road_draw2.jpg" width="600" height="500"><br>等着下一版本的优化结果<br><br><br> <img src ="http://www.cppblog.com/socketref/aggbug/97191.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/socketref/" target="_blank">放屁阿狗 </a> 2009-09-25 03:09 <a href="http://www.cppblog.com/socketref/archive/2009/09/25/97191.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>