声明
文中的 promisify 函数原型出自 月影 的这篇博客。
了解Promise
继续阅读 »
```
var maxFileSize int64 = 10 * 1000 * 1000 //limit upload file to 10m
if r.ContentLength > maxFileSize {
http.Error(w, "request too large", http.StatusExpectationFailed)
return
}
r.Body = http.MaxBytesReader(w, r.Body, maxFileSize)
继续阅读 »
今天在使用Nginx给Uwsgi服务做反向代理的时候,遇到一个问题。配置步骤如下:
启动Uwsgi服务
在使用Flask框架的Python项目中,配置文件:uwsgi.ini的内容如下:
```
[uwsgi]
master = true
processes = 16
threads = 2
chdir=/xxx
socket = 127.0.0.1:1234
日志输出地址
logto = /xxx/uwsgi.log
daemonize = /xxx/uwsgi.log
reload
py-autoreload = 1
pid
pidfile = /xxx/uwsgi.pid
```
继续阅读 »
安装Package Control
more
使用Ctrl + ` 打开Sublime Text控制台。
import urllib.request,os,hashlib; h = '2915d1851351e5ee549c20394736b442' + '8bc59f460fa1548d1514676163dafc88'; pf = 'Package Control.sublime-package'; ipp = sublime.installed_packages_path(); urllib.request.install_opener( urllib.request.build_opener( urllib.req
继续阅读 »
plantuml使用示例
more
{% plantuml %}
Alice -> Bob: Authentication Request
Bob --> Alice: Authentication Response
Alice -> Bob: Another authentication Request
Alice Bob: Authentication Request
actor Foo1
boundary Foo2
control Foo3
entity Foo4
database Foo5
collections Foo6
Foo1 -> Foo2 : To boundary
Foo1 -> Foo3 : To con
继续阅读 »
csapp 上网络编程一章里有一个 tiny.c ,实现了 HTTP 的 GET 方法,支持 cgi 。照着书上自己敲了一个,取名 toyws 。后续准备把其他几个 HTTP METHOD 实现一下。
代码地址 [toyws][1]
根据 [RFC-2616][2]
HTTP messages 分为 request 和 response
HTTP-message = Request | Response ; HTTP/1.1 messages
继续阅读 »
之前玩了下http://reg007.com,他可以判断手机号或者邮箱在哪些网站注册过.
于是试着写了一下判断帐号是否在淘宝注册的脚本.
原理很简单,就是用该帐号登陆,判断返回的页面是不是用户名与密码不匹配..只不过跑的次数太多了会出验证码,没有研究过怎么过验证码,所以还没办法测试大量的帐号.
用到了re,urllib2,request库.request用于简化登陆步骤,re正则简单判断返回页面有无关键字
继续阅读 »
Nginx得到反向代理前的真实IP
Java Servlet可以通过request.getRemoteAddr()得到请求的客户端的IP
现在一般情况下都不是直接用Tomcat或者Jetty这样的web容器,都会在前面加上Nginx或者Tengine之类的静态Web容器来反向代理。
由于经过了Nginx转发请求,通过request.getRemoteAddr()得到的IP就成了127.0.0.1
可以在Nginx配置里加上
proxy_set_header x-forwarded-for $proxy_add_x_forwarded_for;
这个意思是在nginx做反向代理的时候把代理前的地址放到http hea
继续阅读 »
最近迁移项目,顺便一些东西也都相应升级一下。中间碰到了一些问题,记录一下。
http/2 所有的 request, response 都转成小写了,和 HTTP/1.1可不一样。详情可以看这里 HTTP/2 finalized - a quick overview
继续阅读 »
技术流水账一篇,记录踩过的坑
Channels 异构
Django Channels 官方文档宣称 channels 的最佳配置是使用其自带的服务器组件 Daphne,但在开发中我发现 daphne 处理普通请求比在 WSGI 架构下慢了好几倍,更何况使用 daphne 派发静态文件是十分不切实际的。于是我将 http.request 和 websocket.* 两个 channel 解耦,前者使用 nginx 配合 uwsgi 处理,后者使用 nginx 反向代理至 daphne 处理。这样一来便可充分利用两种架构的优势。
旧架构:
新架构:
more
环境
Ubuntu Server 16.04(与开发环境相
继续阅读 »