Note

PHP session 机制

起因:最近发现了产品日志记录中,logout日志存在记录Username为空的现象,由于Username从session中获取,首先怀疑的是session过期导致,由此引发了以下对PHP session和浏览器session信息清除机制的研究。 一、现象 用户名不见了╮( ̄▽ ̄)╭ ,此处的用户名取自$_SESSION[‘UserName’], 首先想到的是页面开启时间较长,本次se...

SlowHTTPtest 慢速连接攻击及解决

SlowHTTPtest 慢速连接攻击及解决 慢速攻击介绍 CC攻击的变异品种 慢速攻击 slowhttptest slowhttptest是一款进行慢速连接攻击测试的工具,建议在Linux环境中使用。同时,如果使用虚拟机,可能遇到构建有效连接数很少的情况,大部分的连接都会被pending和closed。所以最好在实体机上运行。 下载源码之后,./congigure make ma...

Django REST framework API:Views

原文 基于类的视图(Class-based Views) Django基于类的视图是对原有视图的一种受欢迎的颠覆。 — Reinout van Rees REST framework 提供了 APIView 类,它是 Django 中 View 的子类。 APIView 与 View 的不同之处在于: 传给 handler 方法的请求需要是一个 R...

服务端渲染 React 组件 [译]

Rendering React Components on the Server

服务端渲染 React 组件 原文 近期使用 React 过程中遇到了 checksum 的问题,于是翻译了此篇文章。文章发于 August 12, 2014,内容不一定完全符合当前React版本,仅供参考。 以下正文: 我喜欢用React进行开发,甚至可能用的过多,这要感谢可汗学院对该技术的广泛使用:-)。 最近做的一个小项目中,我想在服务端进行React组件渲染,而不是客户...

Apache 多处理模块

Apache MPMs Apache 多处理模块(Multi-Processing Modules)比较广泛使用的有以下三种: prefork worker event Apache 能更好的为有特殊要求的站点定制。例如,要求 更高伸缩性的站点可以选择使用线程的 MPM,即 worker 或 event; 需要可靠性或者与旧软件兼容的站点可以使用 prefor...

PHP 断点续传

PHP 断点续传 在开发中遇到一个问题,我需要提供下载的文件大小由十几MB变成了2.5G以上,原有的下载方式已经不能满足需求。 原因在于PHP在处理文件下载时,读取文件将会写入缓存,默认情况下php.ini中设置的缓存阈值memory-limit为128M。所以在较大文件进行直接读取下载时,会出现下载文件大小为0的情况。对于大文件,可以做断点续传的处理。 Range 与 Content...

Ubuntu下hping3安装

Ubuntu下hping3安装 安装环境 Ubuntu12.04 安装包下载自git https://github.com/antirez/hping 解压后正常的安装步骤为 $ ./configure (first try ./configure --help) $ make $ make strip $ make install 如果期间没有任何报错产生,那么可以直接通过...

Django REST framework API: Requests

Requests 原文 如果你构建的是REST风格的应用,你最好忘掉request.POST。 — Malcom Tredinnick, Django developers group REST framework的 Request 类是对原生 HttpRequest的扩展,来为REST framework提供灵活的请求解析和认证功能。 Request 解析 ...

Django REST framework API:Returning URLs

Returning URLs 原文 使REST架构有别于其他架构的最核心特征便是它强调组件间具有统一的接口。 — Roy Fielding, Architectural Styles and the Design of Network-based Software Architectures 让你的Web APIs返回绝对URIs是一个更好的实践,比如http://e...

Django REST framework API:Responses

Responses 原文 不同于HttpResponse对象, TemplateResponse 对象中含有view需要返回的上下文,response最终要返回的数据直到使用时才会被计算。 Django documentation REST framework支持HTTP内容协商,只需要提供一个Response 类,让该类支持根据客户端请求所返回的不同媒体类型的内容。 Respon...

Python中__all__的作用

在使用Python来定义module和包的时候,都需要考虑模块被使用时,会导入的模块属性。 用from module import *来导入的情况下 首先,这绝非一个导入模块的好方法,最好不要这样使用。而且这种情况下会导入哪些文件取决于操作系统的文件系统。 在PEP8中建议使用__all__机制防止导入全局变量。我们可以在__init__.py中使用__all__变量指定这种情况下自动...

Django REST framework 教程6 ViewSets & Routers

Tutorial 6: ViewSets & Routers REST framework 的 ViewSets类帮助我们专注于设计API的状态和交互,并且自动的处理URL 的结构。ViewSet 类和 View 类的差别仅在于它提供了 read或update方法,替代了原来的 get 或 put方法。 ViewSet 类最终只是关联了一系列方法,在实例化之后需要用 Router ...

Django REST framework 教程5 关联性与 Hyperlinked APIs

Tutorial 5: 关联性与 Hyperlinked APIs 现在为止API的关系是用主键表示的,本篇中我们将用超链接来提高API的关联性与可预测性。 API的根路径 现在有路径’snippets’ 和’users’, 但是还没有API的根路径,可以用 @api_view 装饰器来创建一个。在snippets/views.py 中: from rest_framework.de...

Django REST framework 教程4 认证与权限

Tutorial 4: 认证与权限 目前的 API 没有对编辑或删除snippets的操作进行权限控制,为了实现这个功能我们需要一些更高级的机制。 Code snippets必须有创建者. 只有认证用户才能创建snippets. 只有snippet的创建者才能修改或删除它 未授权的request只能查看 给model增加field 现在要修改 Snippet mo...

Django REST framework 教程3 Class Based Views

API views也可以使用class based views来编写,而不是function based views。你会发现这是一种很有效的模式,能够让我们复用代码,保持代码DRY。 使用class based views重写 API 我们先来把root视图转换为class based view。在 views.py中进行一些重构: from snippets.models impo...

Django REST framework 教程2 Requests and Responses

Tutorial 2: Requests and Responses 从本节开始我们将真正介绍REST framework的核心部分,先介绍一些最重要的部件。 Request 对象 REST framework 提供了 Request 对象,它是 HttpRequest的扩展,提供了更灵活地 request解析方式。 Request 对象的核心是  request.data 属性, 这...

Django REST framework 教程1 Serialization

Tutorial 1: Serialization 介绍 本教程将会开发一个简单的pastbin代码高亮API,整个过程会用到构成REST framework的各个components,完成后你将会理解框架中各部分共同运作的机制。 本教程的内容十分深入,所以你最好打起精神来阅读。如果你只想快速浏览一下REST Framework的用法,那么你可以去阅读 quickstart 文档。 提...

Django REST framework quickstart

Quickstart 译于官方Quickstart 我们在这里实现一个简单的API,为admin用户创建一个user和groups的编辑界面。 Project setup 创建一个名为 tutorial的Django项目,然后创建一个app命名为 quickstart # Create the project directory mkdir tutorial cd tutoria...

Django REST framework 介绍

Django REST framework 是一个用于构建Web APIs的有效工具。 准备工作 REST framework 必需依赖以下工具: Python (2.7, 3.2, 3.3, 3.4, 3.5) Django (1.7+, 1.8, 1.9) 下列packages可根据自己的需求使用: Markdown (2.1.0+) - Markdown...

Django csrf

Django csrf Django中可以将 csrf_token 模板和CsrfViewMiddleware中间件结合使用,来实现csrf攻击的防御功能。 文档 https://docs.djangoproject.com/en/dev/ref/csrf/ 实现机制 在页面view渲染的过程中,会将视图form中 csrf_token 标签转换为一个隐藏的表单项,其中携带了服务器端生...

Array.prototype.map()学习

Array.prototype.map()学习 文档中对于 map() 方法的定义为: map() 方法返回一个由原数组中的每个元素调用一个指定方法后的返回值组成的新数组。Mozilla 标准库 » 语法为: ` array.map(callback[, thisArg]) ` 然而下面这道题: What is the result of this expression? (o...

使用 HTML5 原生 Drag & Drop API [译]

Using HTML5’s Native Drag and Drop API

使用 HTML5 原生 Drag & Drop API 文章介绍了 HTML5 原生 API Drag 和 Drop,并结合这两个 API 制作出几个常见的案例。 原文 » 人人都喜欢易于使用且交互性好的用户界面,自从智能手机开始进入人们视野,用户对于用户界面的期望值有了进一步的提高:他们期待你的网站更加直观、具有通用简明的操作,总而言之就是给用户提供更便捷的方式去使用你的网站。...

Js获取和操纵XML简介

Js获取和操纵XML简介 最近用到了JS读取XML文件的一些操作,记录一下。 XML中往往是自定义的一些标签和属性的类似HTML的文档节点,所以JavaScript操纵XML也是通过DOM方式。 XML文件的获取通过AJAX来实现。其中,如果直接使用原生JavaScript获取XML需要考虑浏览器的兼容性。在这里记录js和jQuery获取XML的方式。 JS方法的一个例子 wind...

HTML5拖放 drag & drop

HTML5拖放 drag & drop HTML5提供拖放操作的API。拖放的基本操作会涉及四个步骤:拖动开始,设置拖动数据,放入位置,放置。 拖动开始 ondragstart() 设置拖动数据 setData() 放入位置 ondragover() 放置 ondrop() 图片等元素可以直接拖动,而对于div等不能直接拖动的,可以为其设置draggabl...

web worker基础

web worker基础 Web Workers 是 HTML5 提供的一个javascript多线程解决方案,它允许在浏览器后台执行javascript脚本,能够执行事务或者逻辑,并与页面及时的交互和响应。 主要方法 postMessage() 用于交互数据 terminate() 终止web worker,释放资源 事件 onmessage ...

<progress><meter>标签

<progress><meter>标签 JS控制 <progress>标签用于定义运行中的进度(进程) <meter>标签用来表示度量 用法示例 <p>当前进度为:<progress max="100"><span id="progress">0</span>%</progress&g...