`
文章列表
// Functions can see changes in variable values after the function is defined var myFunction = function() { var foo = "hello"; var myFn = function() { console.log( foo ); }; foo = "world"; return myFn; }; var f = myFunction(); f(); // &qu ...
尼嘛我死活没法在手机上调试, adb device永远显示offline。。。折腾了一晚上在一个邮件组中发现有人说手机4.2.2升级后android sdk也要升级,否则可能有问题。我的sdk是最天升级的,不会有问题,但是我ubuntu默认的adb是通过apt-get install android-tool-adb安装的。跑到sdk的安装目录试了一下sdk自带的adb,没问题了。。。。我操。。。。。一晚上时间啊。。。。。。
RT。就是小贵。先搞一个free trial看看。限制32k,尼玛一个hello world也就差不多了。。 http://xamarin.com/  
废话不说直接看这个例子,请注意Dumper这个类的实现,好吧,其实我说的是self.dump(msg)这一句。 class DumpToScreen(object): def dump(self, msg): print "Message:", msg class Dumper(object): def log(self, msg): self.dump(msg) class ErrorHandler(Dumper, DumpToScreen): def dump ...
HTTPClient是httpclient.py中看到的第一个类。内容非常简单,但是却又没有看上去那么简单: fetch方法的实现会根据构造HTTPClient时传入的参数(async_client_class)发生变化。也就是说,HTTPClient并不是一个interface,而是一个delegator 每一 ...

Python的mro

一个python的super和mro问题今天让我纠结了一早上,源自于看tornado的源代码对于super这个“方法”产生的困惑,对于老鸟mro应该是常识了,对于小白而言,尼玛搞懂这个掉了我好几根头发。   谷歌了一下找到一篇博客也在讨论这个问题,博主列举了一个例子我觉得很典型,同时他也提出了和我一样的问题,我在原文的引用中高亮了。下面摘自“JohnsonGuo的专栏”:     有一天某同事设计了一个相对复杂的类体系结构(我们先不要管这个类体系设计得是否合理,仅把这个例子作为一个题目来研究就好),代码如代码段4:  代码段4:  class A(object):  def _ ...
  小白说在前面:“俺一没任何unix/linux基础(就会安装个程序啥的),二基本没有python的基础(话说年前给我一个简单的python程序俺都看不懂)。所以碰到ioloop这个涉及到线程/信号/EPOLL之流底层知识的时候彻底土鳖,所以边猜 ...
其实process.py里面只有一个重头fork_processes   看到这里其实源自看到netutil里面的TCPServer.start方法:“可以根据参数启动多个tornado进程”,start方法的源代码如下(注释已去):   def start(self, num_processes=1): assert not self._started self._started = True if num_processes != 1: process.fork_processes(num_proces ...
最近不是在学习tornado嘛,随手bing了一把,找到一篇很好的文章,放到这里留做记录。 全文转载自“上善若水”的博客。 http://blog.csdn.net/goldlevi/article/details/7047726   最近在做项目,使用了Tornado这个用python写的由Facebook开源出来的web服务器框架。这确实是一个轻量级的框架,只需要几行代码,直接运行脚本,就可以建立起一个server了。Tornado使用了epoll方式,在linux环境下,用了epoll的,总是受到更多的关注,呵呵。这比我们销售短信项目中使用的c++ Poco库使用的poll模型效率要 ...
HttpServer的父类是TCPServer,而且从实现来看,默认只是简单的重载了handle_stream这个方法,而已。 HttpServer的构造函数里面,最重要的是request_callback,也就是说,当一个request进来的时候,怎么处理。 拿blog这个例子来说,Application干的就是这个事情。   HttpServer这个简单的类后面,则是TCPServer这不大不小的一坨。。。   几个比较重要的方法,挑出来看看:   listen: 只做了两件事, bind_sockets。 针对于给定的address/host,端口,产生一个或者一系列 ...
一个简单的调用顺序(只包含了重要的方法): On IOLoop.READ triggered: 1. TCPServer._handle_connection 2. HTTPServer.handle_stream 3. HTTPConnection.__init__ 4. HTTPConnection._on_headers 5. HTTPConeection._on_request_body 6. Application.__call__ 7. RequestHandler._execute 8. RequestHandler(or anyother child of i ...
template中的_parse方法是模板文法的解析器,而这个文件中一坨一坨的各种node以及block,就是解析结果的承载者,也就是说在经过parse处理过后,我们输入的tornado的html模板就变成了各种block的集合。   这些block和node的祖宗就是这 ...
template中的文法分析基本上就在这个里面了。。三脚猫水平画图,海涵。。   
第一个有意思的是RedirectHandler,它的代码和思路都比较有趣,代码很短,直接看:   class RedirectHandler(RequestHandler): """Redirects the client to the given URL for all GET requests. You should provide the keyword argument "url" to the handler, e.g.:: application = web.Application ...
小半个晚上只干了一件事,研究web.py里面的authenticated方法。    先看这个函数的注释:    """Decorate methods with this to require that the user be logged in."""     所以基本这个很清楚了,假设你有一个handler, ...
Global site tag (gtag.js) - Google Analytics