当前位置:  互联网>综合
本页文章导读:
    ▪使用Python脚本来收发Gmail, Say no to GFW       博主的新站点,看此文章也可以来这里。 学校里面的网络环境一直令人不快,天天喊着要建立国际一流大学,就校园网这质量只能是下辈子的事了,再加上国内目前对Google方面的不友好.........
    ▪deploy django with url prefix in nginx      我以前一般部署网站都是部署在根目录下, 比如www.example.com 直接转发到 后端服务器监听的端口,这种很简单,只要这样即可: location / { proxy_pass http://127.0.0.1:8888 ; } 但如果我.........
    ▪Tomcat将JSP转换为Servlet.java和编译.class文件的所在位置      一、提出问题 Tomcat作为容器,先将JSP转换为Servlet类源文件(.java),再将该源文件编译为Servlet类(.class)。 那么这两个文件在容器的生命位置呢? 二、解决办法 以Test项目为例 在H:\tomcat\work\Cat.........

[1]使用Python脚本来收发Gmail, Say no to GFW
    来源: 互联网  发布时间: 2013-10-19

博主的新站点,看此文章也可以来这里。


学校里面的网络环境一直令人不快,天天喊着要建立国际一流大学,就校园网这质量只能是下辈子的事了,再加上国内目前对Google方面的不友好,我会经常性的不能正常通过浏览器连接到我的Gmail邮箱,捉急的时候真是很后悔当初选择了Gmail,虽然它看起来又高端又时尚又有Geek风范。对Outlook和Mac上自带Mail软件的失望让我有了这一想法,本文里面说到这个版本还处于初级阶段,不过应应急看邮件回复紧急事情肯定是够用了。


废话不多说直接进入正题了,本文将要告诉你的事情是,如果你也想我一样需要一个应急的接收Gmail的小插件,这篇文章可以帮助你在数分钟之内搭建一个收发Gmail的小平台,当然前提是你也和我一样喜欢使用CLI的形式与你的计算机交互。


首先我们先来看看接收邮件的part

如果你想敲几个命令就连上你的邮箱大致需要下面的几个步骤:第一,你要与你的邮箱服务器建立一个成功的连接,当然我使用的是IMAP的协议,个人觉着比POP更好,当然人人都有自己的喜好,这也不是啥关键的事情。第二,在连接成功建立的基础上你要使用自己的帐号和口令成功登陆,也就是去的认证获取对该用户邮箱的操作权。第三,在前两者都OK的基础上你可以开始搞一些事情了,例如获取目前的邮箱一些基本情况(邮件总数,未读数量,已读数量,容量情况),在此基础上你就可以读取某一封邮件了(目前在带有附件,HTML元素,图片的邮件上还比较无力)。


虽然看起来功能弱爆了,但是对我来讲已经足够了,想象一下一个焦急等待面试结果或者等待女朋友是否同意求婚而苦守在邮箱门前却因为GFW的缘故无法得知结果的可怜人的痛苦心情吧!代码的实现大概是这样子的(只贴上关键部分,对于怎么组织所有代码是个太灵活的事情,谁让咱们有那么多模式呢)。


def __init__(self): 
    self.IMAP_SERVER='imap.gmail.com'
    self.IMAP_PORT=993
    self.M = None
    self.respons
    self.mailboxes = [] 
def login(self, username, password): 
    self.M = imaplib.IMAP4_SSL(self.IMAP_SERVER, self.IMAP_PORT) 
    rc, self.response = self.M.login(username, password) 
    return rc 

这部分就是第一步和第二步所做到事情。


def receive_mail(self):       
    recvMail = receiveMail.ReceiveMail(self.M) 
    mailCounts = recvMail.get_mail_count()
    print 'A total of '+ mailCounts +' mails in your input mailbox.'
    print 'A total of '+recvMail.get_unread_count()+ ' UNREAD mails in your input mailbox.'
    recvMail.get_imap_quota()
    mailBody = recvMail.check_simpleInfo(mailCounts) #返回值是邮件content
    if mailBody != 0:
        recvMail.check_detailInfo(mailBody)
    return

上面的这些代码是出现在调用层的,主要是调用了具体实现功能的下面几个函数。


下面的这些则在receiveMail.py文件中。


def check_simpleInfo(self, mailCounts):
    print "Input 'y' to check the lasted UNread mail. Other cmds to abandon!"
    while True:
        argv = string.split(raw_input('$====>'))
        if len(argv)!=0:
            if argv[0] == 'y':
                mailBody = self.get_mail_simpleInfo_from_id(mailCounts)
                return mailBody
                  
    
[2]deploy django with url prefix in nginx
    来源: 互联网  发布时间: 2013-10-19

我以前一般部署网站都是部署在根目录下, 比如www.example.com 直接转发到 后端服务器监听的端口,这种很简单,只要这样即可:

 location / {
              proxy_pass http://127.0.0.1:8888 ;
	    }
但如果我们想将网站部署在某个子目录下, 比如www.example.com/admin/ , 则不是那么简单的事

幸好django框架还是比较完善的,很容易就可以完成这个任务

https://docs.djangoproject.com/en/dev/ref/settings/#force-script-name

通过在settings.py里设置FORCE_SCRIPT_NAME, 可以很容易的给url前面加个前缀

如 FORCE_SCRIPT_NAME='/admin' (注意, 最后是没有斜杠 / 的)

另外需要注意的是django template里的url必须用{% url url_name %}生成, 后端的redirect也必须用reverse

然后在nignx里需要如下配置:

	    location ~ ^/admin(/?)(.*) {
              proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
              proxy_set_header Host $http_host;
              proxy_pass http://127.0.0.1:8888/$2 ;
              proxy_redirect http://www.example.com/ http://www.example.com/admin/;
	    }

ref: http://nginx.org/cn/docs/http/ngx_http_proxy_module.html

稍微介绍下:

proxy_pass 格式是 proxy_pass http://host:port/uri/ 匹配location的url会被转成uri, 所以 http://127.0.0.:8888会转发完整的url, 而http://127.0.0.1:8888/ 则会将localtion匹配的去掉

请求URI按下面规则传送给后端服务器:

  • 如果proxy_pass使用了URI,当传送请求到后端服务器时,规范化以后的请求路径与配置中的路径的匹配部分将被替换为指令中定义的URI:
    location /name/ {
        proxy_pass http://127.0.0.1/remote/;
    }
    
  • 如果proxy_pass没有使用URI,传送到后端服务器的请求URI一般客户端发起的原始URI,如果nginx改变了请求URI,则传送的URI是nginx改变以后完整的规范化URI:
    location /some/path/ {
        proxy_pass http://127.0.0.1;
    }
proxy_redirct 作用是对返回的调整url做一个替换

语法: proxy_redirect default;
proxy_redirect off;
proxy_redirect redirect replacement; 默认值:
proxy_redirect default;
上下文: http, server, location

设置后端服务器“Location”响应头和“Refresh”响应头的替换文本。 假设后端服务器返回的响应头是 “Location: http://localhost:8000/two/some/uri/”,那么指令

proxy_redirect http://localhost:8000/two/ http://frontend/one/;

将把字符串改写为 “Location: http://frontend/one/some/uri/”。

replacement字符串可以省略服务器名:

proxy_redirect http://localhost:8000/two/ /;

ps. nginx的配置真的有很多很多,想要用好用熟一门工具或语言真的是不容易

作者:largetalk 发表于2013-3-28 21:53:20 原文链接
阅读:0 评论:0 查看评论

    
[3]Tomcat将JSP转换为Servlet.java和编译.class文件的所在位置
    来源: 互联网  发布时间: 2013-10-19
一、提出问题

Tomcat作为容器,先将JSP转换为Servlet类源文件(.java),再将该源文件编译为Servlet类(.class)。

那么这两个文件在容器的生命位置呢?


二、解决办法

以Test项目为例

在H:\tomcat\work\Catalina\localhost\test\org\apache\jsp文件夹中会发现上述两个文件。


作者:woshixuye 发表于2013-3-29 9:57:16 原文链接
阅读:76 评论:0 查看评论

    
最新技术文章:
▪用户及权限基础 2---- Linux权限    ▪用户及权限基础 3---- Linux扩展权限    ▪git 简明教程(1) --创建及提交
▪背包 代码    ▪json对象的封装与解析    ▪01背包,完全背包,多重背包 ,模板代码
▪apache安装详解    ▪HDU 4668 Finding string (解析字符串 + KMP)    ▪《TCP-IP详解 卷1:协议》学习笔记(二)
▪《TCP-IP详解 卷1:协议》学习笔记(持续更新...    ▪windows下使用swig    ▪gensim试用
▪Linux Shell脚本编程--nc命令使用详解    ▪solr对跨服务器表联合查询的配置    ▪递归和非递归实现链表反转
▪Linux磁盘及文件系统管理 1---- 磁盘基本概念    ▪Cholesky Decomposition    ▪HTTP协议学习
▪用C语言写CGI入门教程    ▪用hdfs存储海量的视频数据的设计思路    ▪java多线程下载的实现示例
▪【原创】eAccelerator 一个锁bug问题跟踪    ▪hadoop学习之ZooKeeper    ▪使用cuzysdk web API 实现购物导航类网站
▪二维数组中的最长递减子序列    ▪内嵌W5100的网络模块WIZ812MJ--数据手册    ▪xss 跨站脚本攻击
▪RobotFramework+Selenium2环境搭建与入门实例    ▪什么是API    ▪用PersonalRank实现基于图的推荐算法
▪Logtype    ▪关于端口号你知道多少!    ▪Linux基本操作 1-----命令行BASH的基本操作
▪CI8.7--硬币组合问题    ▪Ruby on Rails 学习(五)    ▪如何使用W5300实现ADSL连接(二)
▪不允许启动新事务,因为有其他线程正在该会...    ▪getting start with storm 翻译 第六章 part-3    ▪递归求排列和组合(无重复和有重复)
▪工具类之二:RegexpUtils    ▪Coding Interview 8.2    ▪Coding Interview 8.5
▪素因子分解 Prime factorization    ▪C# DllImport的用法    ▪图的相关算法
▪Softmax算法:逻辑回归的扩展    ▪最小生成树---Kruskal算法---挑战程序设计竞赛...    ▪J2EE struts2 登录验证
▪任意两点间的最短路径---floyd_warshall算法    ▪Sqoop实现关系型数据库到hive的数据传输    ▪FFMPEG采集摄像头数据并切片为iPhone的HTTP Stream...
▪Ubuntu 13.04 – Install Jetty 9    ▪TCP/IP笔记之多播与广播    ▪keytool+tomcat配置HTTPS双向证书认证
▪安装phantomjs    ▪Page Redirect Speed Test    ▪windows media player 中播放pls的方法
▪sre_constants.error: unbalanced parenthesis    ▪http headers    ▪Google MapReduce中文版
▪The TCP three-way handshake (connect)/four wave (closed)    ▪网站反爬虫    ▪Log4j实现对Java日志的配置全攻略
▪Bit Map解析    ▪Notepad 快捷键 大全    ▪Eclipse 快捷键技巧 + 重构
▪win7 打开防火墙端口    ▪Linux Shell脚本入门--awk命令详解    ▪Linux Shell脚本入门--Uniq命令
▪Linux(Android NDK)如何避免僵死进程    ▪http Content-Type一览表    ▪Redis实战之征服 Redis + Jedis + Spring (二)
▪Tomcat7.0.40 基于DataSourceRealm的和JDBCRealm的资源...    ▪利用SQOOP将ORACLE到HDFS    ▪django输出 hello world
▪python re    ▪unity3D与网页的交互    ▪内存共享基本演示
▪python join    ▪不再为无限级树结构烦恼,且看此篇    ▪python实现变参
▪打开文件数限制功能不断地制造问题    ▪Arduino Due, Maple and Teensy3.0 的 W5200性能测试    ▪Selenium实例----12306网站测试
▪基于协同过滤的推荐引擎    ▪C4.5决策树    ▪C#HTTP代理的实现之注册表实现
▪nosql和关系型数据库比较?    ▪如何快速比较这两个字符串是否相等?    ▪hdoj 1863 畅通工程 最小生成树---prime算法
 


站内导航:


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

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3