技术宅,fat-man

增加语言的了解程度可以避免写出愚蠢的代码

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

随笔分类 -  架构设计

上一页 1 2 3

改进的日志类
摘要:代码:#!/usr/bin/env python# -*- coding: utf-8 -*-'''改进的日志类:1. 使用format对象,就不用自己采集环境信息,库可以采集信息2. 将多个handler绑定到一个logger上,且每个handler设置相应级别 日志会产生多份,每个handler只记录自己的级别和含高于自己级别的日志'''import osimport sysimport timeimport logginghandlers = {logging.NOTSET:"/tmp/TNLOG-notset.log" 阅读全文

posted @ 2012-10-10 14:17 codestyle 阅读(151) 评论(0) 推荐(0) 编辑

nginx 负载均衡5种配置方式
摘要:1、轮询(默认)每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。2、weight指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。例如:upstream bakend {server 192.168.0.14 weight=10;server 192.168.0.15 weight=10;}3、ip_hash每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。例如:upstream bakend {ip_hash;server 192.168.0.14:88;server 192.1 阅读全文

posted @ 2012-09-24 17:14 codestyle 阅读(333) 评论(0) 推荐(0) 编辑

群聊:项目级的错误处理
摘要:CFANS·镇宅神兽(58135482) 17:44:35 说到错误处理,路神 CFANS·镇宅神兽(58135482) 17:44:46 我最近一直在想这个东西 非常路<luzte@qq.com> 17:45:12 恩,你说 CFANS·镇宅神兽(58135482) 17:47:04 你说,程序的错误,是可以恢复或者处理的嘛,代码的逻辑上是可以发现和修改,最终从项目代码里排除,但是向内存不够申请失败,还有就是通信时对方服务器的错误产生错误的响应,这些错误该咋个处理 非常路<luzte@qq.com> 17:47:43 内存申请失败..工程 阅读全文

posted @ 2012-09-16 00:17 codestyle 阅读(371) 评论(0) 推荐(0) 编辑

python: logging日志级别详解
摘要:import logging'''日志级别:critical > error > warning > info > debug,notset级别越高打印的日志越少,反之亦然,即debug : 打印全部的日志(notset等同于debug)info : 打印info,warning,error,critical级别的日志warning : 打印warning,error,critical级别的日志error : 打印error,critical级别的日志critical : 打印critical级别'''handler=lo 阅读全文

posted @ 2012-08-15 23:30 codestyle 阅读(8650) 评论(1) 推荐(2) 编辑

python:能自动记录时间,动作发生的所在文件和行数的日志类
摘要:tnLog.py#!/usr/bin/env python# -*- coding: utf-8 -*-import osimport sysimport timeimport loggingimport inspect'''import inspectdef test(): a = inspect.stack()[1] print a得到一个元组,如:(<frame object at 0x8604aa4>, 'test.py', 10, 'function_one', ['\t\tprint get_current 阅读全文

posted @ 2012-08-14 16:28 codestyle 阅读(1768) 评论(0) 推荐(0) 编辑

重构实例1:抽取冗余代码 - 未通过测试而进行的第二次修正
摘要:昨天重构了OPEN-API模块,挺高兴,觉得自己做的不错,结果昨天把程序重构完,除了挑出来作为测试接口的代码其他代码都没有测试,今天上午要做其他的维护工作,觉得还是先跑一次测试再说,测试程序并不是特地为这个接口进行开发,当时为这个OPEN-API写了一个SDK,这个程序其实是为了SDK开发的测试程序,且写的并不完善,但即使是这样,测试程序的断言(assert)仍然报告执行出了问题,因此我又去排查程序,发现有几个接口,它的函数参数不只一个参数(self参数),而我的几类再调具体子类的时,就没有提供其他的参数,因此产生运行时错误,了解到这一点,就翻了手上的《python学习手册》花了一个小时解决问 阅读全文

posted @ 2012-07-27 14:26 codestyle 阅读(488) 评论(0) 推荐(0) 编辑

重构实例1:最初的测试代码
摘要:最初的测试代码还是比较能清晰的反映出代码的意图文件: code.py启动: python code.py查看:http://127.0.0.1:8080/app1http://127.0.0.1:8080/app1?id=100import weburls = ( '/app1', 'App1', '/app2', 'App2',)web.config.debug = Falseapp = web.application(urls, globals())class PageBase: def __init__(self): sel 阅读全文

posted @ 2012-07-26 18:34 codestyle 阅读(264) 评论(0) 推荐(0) 编辑

重构实例1:消除冗余代码
摘要:先描述一下场景:我们的web项目提供了若干个基于HTTP协议的POST接口,用于给第三方的用户写入数据,为了验证写入数据者的身份,这样的接口肯定会要求对方传递身份标识,接口得到标识以后会验证写入者的标识,正确就执行请求,错误就返回失败信息,由于是基于同样的检测身份的机制,每个接口都做了同样的事情,体现在代码里就有大量的冗余代码,如果要消除冗余代码,我可以把冗余代码写成一个函数,在每一个接口里调用,这样的话,也会有大量重复的调用语句,感觉还是不完美,于是思考之后还是借助OO来做这个事情,需要说明的是,我们的语言是python,web项目采用的框架是webpy重构之前的代码class Apply: 阅读全文

posted @ 2012-07-26 17:58 codestyle 阅读(1731) 评论(0) 推荐(0) 编辑

java-thrift运行DEMO
摘要:通过阅读~/thrift-0.8.0/tutorial/java/README,知道需要首先安装ant,这是一种java的编译部署工具,类似C里的makesudo apt-get install ant提示警告:warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds ,网上的解决方案说需要修改build.xml,为javac节点添加属性includeantruntime="on"< 阅读全文

posted @ 2012-07-11 15:29 codestyle 阅读(594) 评论(0) 推荐(0) 编辑

运行python-thrift的DEMO
摘要:启动服务器和客户端cd ~/thrift-0.8.0/thrift -r --gen py tutorial.thrift #生成代码cd py./PythonServer.py #启动服务器cd ~/thrift-0.8.0/py./PythonClient.py #在另一个shell窗口启动客户端结果启动服务器的时候产生一个错误shujunli@mysvr1:~/thrift-0.8.0/tutorial/py$ ./PythonServer.py Starting the server...Traceback (most recent call last): File "./P 阅读全文

posted @ 2012-07-09 23:59 codestyle 阅读(835) 评论(0) 推荐(0) 编辑

Apache Thrift 安装配置
摘要:Thrift是Facebook开发出的一个软件库和一组代码生成工具,以加快高效率、可扩展的后端服务的开发与实现的速度。它通过对各语言最常用的部分加以抽象,把它们放进一个通用库里,再用各个语言实现,来实现跨编程语言的高效而可靠的通信。亦即,Thrift允许开发者在一个单独的语言无关的文件里,定义数据类型和服务接口,然后生成用来构建RPC客户和服务器所需的全部代码。从官方网站(http://thrift.apache.org/download/)上下载最新安装包cd ~wget http://www.us.apache.org/dist/thrift/0.8.0/thrift-0.8.0.tar. 阅读全文

posted @ 2012-07-09 23:17 codestyle 阅读(937) 评论(0) 推荐(0) 编辑

EVERNOTE基于Thrift打造开放API接口
摘要:http://www.openapis.net/Help.EVERNOTEbaseThriftdzopenAPI.ashx在2007年当我们开始计划Evernote服务的时候,我们就知道在发布服务的那一天就需要同时支持瘦客户端(象浏览器)和胖客户端。这一点促使我们在设计web用户界面之前就开始思考远程协议和客户端访问API接口,而不是拖到几个月之后将API接口架在已经存在网站服务上。我们的应用对API访问接口提出了下面的需求:1、跨平台。当我们08年2月份发布的时候,我们产品代码有服务器端JAVA、客户端是Win32(包括WinMobile) C++、客户端Obj-C Cocoa。2、二进制数 阅读全文

posted @ 2012-06-18 13:49 codestyle 阅读(669) 评论(0) 推荐(0) 编辑

消息队列:amqp 以及ubuntu安装命令(apt-get)
摘要:(一)基本概念RabbitMQ是流行的开源消息队列系统,用erlang语言开发。我曾经对这门语言挺有兴趣,学过一段时间,后来没坚持。RabbitMQ是AMQP(高级消息队列协议)的标准实现。如果不熟悉AMQP,直接看RabbitMQ的文档会比较困难。不过它也只有几个关键概念,这里简单介绍。RabbitMQ的结构图如下:几个概念说明:Broker:简单来说就是消息队列服务器实体。Exchange:消息交换机,它指定消息按什么规则,路由到哪个队列。Queue:消息队列载体,每个消息都会被投入到一个或多个队列。Binding:绑定,它的作用就是把exchange和queue按照路由规则绑定起来。Ro 阅读全文

posted @ 2012-06-11 12:19 codestyle 阅读(964) 评论(0) 推荐(0) 编辑

测试框架设计:初步
摘要:在上次不成功的重构以后,我又蠢蠢欲动的重新设计程序,纠结了许久,还是决定程序写成OO的,OO设计我还没怎么想好,不过这次的重新设计我只写业务逻辑的API,同时编写配套的单元测试,用单元测试来验证API的正确程序结构common/bussiness/data/test/ testMain.pytestMain.py是整个测试的启动点,只要在test目录执行该文件,那么testMain.py就会查找test目录下其他文件,并加载文件里的测试用例一并执行#!/usr/bin/env python# -*- coding: utf-8 -*-import osimport sysimport unit 阅读全文

posted @ 2012-05-17 10:09 codestyle 阅读(308) 评论(0) 推荐(0) 编辑

重构以后的业务模块
摘要:/BLL __init__.py /project __init__.py member.py role.py roleuser.py /priv __init__.py setpriv.py copypriv.py checkpriv.py category.py note.py tag.py attachment.py comment.pycode.pyproject_code.pyrole_code.pycomment_code.py 阅读全文

posted @ 2012-02-06 11:48 codestyle 阅读(143) 评论(0) 推荐(0) 编辑

上一页 1 2 3
点击右上角即可分享
微信分享提示