169it科技资讯


当前位置:  编程技术>软件工程/软件设计
本页文章导读:
    ▪Tornado的初步了解               今天看了下Python的一个新web框架,由Facebook开源。不得不说,品牌效应啊,只要是Facebook开源的项目,没有不好用的。Tornado可以说是好用到了极致,从打开官方页面开始.........
    ▪二级导航栏      <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm2.aspx.cs" Inherits="三层复习2013_04_22.WebForm2" %> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> .........
    ▪Nginx屏蔽F5心跳日志      location / { proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://mmt; if ( $remote_addr != 192.168.0.2 ) { access_log /var/log.........

[1]Tornado的初步了解
    来源: 互联网  发布时间: 2013-11-19


        今天看了下Python的一个新web框架,由Facebook开源。不得不说,品牌效应啊,只要是Facebook开源的项目,没有不好用的。Tornado可以说是好用到了极致,从打开官方页面开始了解,到搭建一个web服务器,只用了10分钟。

        另外,Tornado支持websocket通讯,和前几天看的通过Netty支持Websocket相比,Tornado的操作要显得简单得更多。

下载地址:http://www.tornadoweb.org/en/stable/


安装步骤:

tar xvzf tornado-3.0.1.tar.gz
cd tornado-3.0.1
python setup.py build
sudo python setup.py install

服务器代码如下:

import tornado.ioloop
import tornado.web
import tornado.websocket

class MainHandler(tornado.web.RequestHandler):
    def get(self):
        self.write("Hello, world")

class MainHandler2(tornado.web.RequestHandler):
    def get(self):
        self.write("This is a test")

class EchoWebSocket(tornado.websocket.WebSocketHandler):
    def open(self):
        print "WebSocket opened"

    def on_message(self, message):
        self.write_message(u"You said: " + message)

    def on_close(self):
        print "WebSocket closed"

application = tornado.web.Application([
    (r"/", MainHandler),
    (r"/test", MainHandler2),
    (r"/websocket", EchoWebSocket),
])

if __name__ == "__main__":
    application.listen(8888)
    tornado.ioloop.IOLoop.instance().start()

只需要在application中注册url对应的handler即可,对于websocket,只要让handler继承自tornado.websocket.WebSocketHandler。


然后用以下代码测试:

<html><head><title>Web Socket Client</title></head>  
<body>  
<script type="text/javascript">  
var socket;  
if (!window.WebSocket) {  
    window.WebSocket = window.MozWebSocket;  
}  
// Javascript Websocket Client  
if (window.WebSocket) {  
    socket = new WebSocket("ws://localhost:8888/websocket");  
    socket.onmessage = function(event) {  
        var ta = document.getElementById('responseText');  
        ta.value = ta.value + '\n' + event.data  
    };  
    socket.onopen = function(event) {  
        var ta = document.getElementById('responseText');  
        ta.value = "Web Socket opened!";  
    };  
    socket.onclose = function(event) {  
        var ta = document.getElementById('responseText');  
        ta.value = ta.value + "Web Socket closed";  
    };  
} else {  
    alert("Your browser does not support Web Socket.");  
}  
// Send Websocket data  
function send(message) {  
    if (!window.WebSocket) { return; }  
    if (socket.readyState == WebSocket.OPEN) {  
        socket.send(message);  
    } else {  
        alert("The socket is not open.");  
    }  
}  
</script>  
<h3>Send :</h3>  
<form onsubmit="return false;">  
<input type="text" name="message" value="Hello World!"/><input type="button" value="Send Web Socket Data" onclick="send(this.form.message.value)" />  
<h3>Receive :</h3>  
<textarea id="responseText" style="width:500px;height:300px;"></textarea>  
</form>  
</body>  
</html>  

效果如下:




作者:lrenjundk 发表于2013-5-7 17:24:56 原文链接
阅读:73 评论:0 查看评论

    
[2]二级导航栏
    来源: 互联网  发布时间: 2013-11-19
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm2.aspx.cs" Inherits="三层复习2013_04_22.WebForm2" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
    <style type="text/css">
        #ceng {
            float:right;
            display:none;
            width:150px;
            margin-top:-39px;
            position:absolute;
            margin-left:150px;
            border-left:1px solid #fff;
            background-color:#000;
        }
        ul {
            list-style: none;
            width:150px;
                
            text-indent:0px;
            background-color:#000;
        }
        li {
            background-color:#943e00;
            padding:10px 0 10px 20px;
            margin-left:-40px;
            cursor:pointer;
            border-bottom:1px solid #000;
        }
            li:hover {
                background-color:#aaa;
            }
        #div2 {
            width: 150px;
            background-color:#000;
        }
    </style>
    <script src="Jquery1.7.js"></script>
    <script type="text/javascript">
        $(function () {
            $('#div2 ul>li').mouseover(function () {
                $('#ceng ul').remove();
                $('#ceng').css('display', 'block');
                var a = '<ul>';
                for (var i = 0; i < 5; i++) {
                    a+='<li>'+$(this).text()+'</li>';
                }
                $('#ceng').append(a + '</ul>');
                //alert($('#ceng').offset('left'));
                $(this).after($('#div3'));
                $('#ceng').css('float','right');
                
            })
            $('#div2 ul>li').mouseout(function () {
                $('#ceng').css('display', 'none');
            })
            $('#ceng').mouseover(function () {
                $('#ceng').css('display', 'block');
            })
            $('#ceng').mouseout(function () {
                $('#ceng').css('display', 'none');
            })
        })
        alert(this.document.getElementById('ceng').offsetLeft());
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <div id="div3">
<div id="ceng"></div>
        </div>
        
    <div id="div2">
        <ul>
            <li>
.2.3.4.5..
            </li>
            <li>
                你是我的谁
            </li>
            <li>
                谁是谁的谁
            </li>
        </ul>
    </div>
    </form>
</body>
</html>


作者:anxin591025 发表于2013-5-7 19:31:50 原文链接
阅读:0 评论:0 查看评论

    
[3]Nginx屏蔽F5心跳日志
    来源: 互联网  发布时间: 2013-11-19
location / {
	proxy_redirect off;
	proxy_set_header Host $host;
	proxy_set_header X-Real-IP $remote_addr;
	proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
	proxy_pass http://mmt;

	if ( $remote_addr != 192.168.0.2 ) {
		access_log /var/log/nginx/nginx_access_abres.log;
	}
}

注:192.168.0.2是F5内网地址。


下面的配置经测试是失败的,依然记录访问日志:

location / {
	proxy_redirect off;
	proxy_set_header Host $host;
	proxy_set_header X-Real-IP $remote_addr;
	proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
	proxy_pass http://mmt;

	deny 192.168.0.2;
}
推测是日志记录在deny前执行,执行到deny返回403Forbidden。

作者:xxd851116 发表于2013-5-7 21:05:12 原文链接
阅读:71 评论:0 查看评论

    
最新技术文章:
▪主-主数据库系统架构    ▪java.lang.UnsupportedClassVersionError: Bad version number i...    ▪eclipse项目出现红色叉叉解决方案
▪Play!framework 项目部署到Tomcat    ▪dedecms如何做中英文网站?    ▪Spring Batch Framework– introduction chapter(上)
▪第三章 AOP 基于@AspectJ的AOP    ▪基于插件的服务集成方式    ▪Online Coding开发模式 (通过在线配置实现一个表...
▪观察者模式(Observer)    ▪工厂模式 - 程序实现(java)    ▪几种web并行化编程实现
▪机器学习理论与实战(二)决策树    ▪Hibernate(四)——全面解析一对多关联映射    ▪我所理解的设计模式(C++实现)——解释器模...
▪利用规则引擎打造轻量级的面向服务编程模式...    ▪google blink的设计计划: Out-of-Progress iframes    ▪FS SIP呼叫的消息线程和状态机线程
▪XML FREESWITCH APPLICATION 实现    ▪Drupal 实战    ▪Blink: Chromium的新渲染引擎
▪(十四)桥接模式详解(都市异能版)    ▪你不知道的Eclipse用法:使用Allocation tracker跟...    ▪Linux内核-进程
▪你不知道的Eclipse用法:使用Metrics 测量复杂度    ▪IT行业为什么没有进度    ▪Exchange Server 2010/2013三种不同的故障转移
▪第二章 IoC Spring自动扫描和管理Bean    ▪CMMI简介    ▪目标检测(Object Detection)原理与实现(六)
▪值班总结(1)——探讨sql语句的执行机制    ▪第二章 IoC Annotation注入    ▪CentOS 6.4下安装Vagrant
▪Java NIO框架Netty1简单发送接受    ▪漫画研发之八:会吃的孩子有奶吃    ▪比较ASP和ASP.NET
▪SPRING中的CONTEXTLOADERLISTENER    ▪在Nginx下对网站进行密码保护    ▪Hibernate从入门到精通(五)一对一单向关联映...
▪.NET领域驱动设计—初尝(三:穿过迷雾走向光...    ▪linux下的块设备驱动(一)    ▪Modem项目工作总结
▪工作流--JBPM简介及开发环境搭建    ▪工作流--JBPM核心服务及表结构    ▪Eclipse:使用JDepend 进行依赖项检查
▪windows下用putty上传文件到远程Linux方法    ▪iBatis和Hibernate的5点区别    ▪基于学习的Indexing算法
▪设计模式11---设计模式之中介者模式(Mediator...    ▪带你走进EJB--JMS编程模型    ▪从抽象谈起(二):观察者模式与回调
▪设计模式09---设计模式之生成器模式(Builder)也...    ▪svn_resin_持续优化中    ▪Bitmap recycle方法与制作Bitmap的内存缓存
▪Hibernate从入门到精通(四)基本映射    ▪设计模式10---设计模式之原型模式(Prototype)    ▪Dreamer 3.0 支持json、xml、文件上传
▪Eclipse:使用PMD预先检测错误    ▪Jspx.net Framework 5.1 发布    ▪从抽象谈起(一):工厂模式与策略模式
▪Eclipse:使用CheckStyle实施编码标准    ▪【论文阅读】《Chain Replication for Supporting High T...    ▪Struts2 Path_路径问题
▪spring 配置文件详解    ▪Struts2第一个工程helloStruts极其基本配置    ▪Python学习入门基础教程(learning Python)--2 Python简...
▪maven springmvc环境配置    ▪基于SCRUM的金融软件开发项目    ▪software quality assurance 常见问题收录
▪Redis集群明细文档    ▪Dreamer 框架 比Struts2 更加灵活    ▪Maven POM入门
▪git 分支篇-----不断更新中    ▪Oracle非主键自增长    ▪php设计模式——UML类图
▪Matlab,Visio等生成的图片的字体嵌入问题解决...    ▪用Darwin和live555实现的直播框架    ▪学习ORM框架—hibernate(二):由hibernate接口谈...
▪(十)装饰器模式详解(与IO不解的情缘)    ▪无锁编程:最简单例子    ▪【虚拟化实战】网络设计之四Teaming
▪OSGi:生命周期层    ▪Javascript/Jquery——简单定时器    ▪java代码 发送GET、POST请求
▪Entity Framework底层操作封装(3)    ▪HttpClient 发送GET、POST请求    ▪使用spring框架,应用启动时,加载数据
▪Linux下Apache网站目录读写权限的设置    ▪单键模式的C++描述    ▪学习ORM框架—hibernate(一):初识hibernate
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2017,169IT.COM,E-mail:www_169it_com#163.com(请将#改为@)

浙ICP备11055608号