duplicates = multiple editions
A Classical Introduction to Modern Number Theory, Kenneth Ireland Michael Rosen
A Classical Introduction to Modern Number Theory, Kenneth Ireland Michael Rosen
| #!/bin/bash | |
| # from https://chromium.woolyss.com/ | |
| # and https://gist.github.com/addyosmani/5336747 | |
| # and https://chromium.googlesource.com/chromium/src/+/lkgr/headless/README.md | |
| sudo apt-get update | |
| sudo apt-get install software-properties-common | |
| sudo add-apt-repository ppa:canonical-chromium-builds/stage | |
| sudo apt-get update | |
| sudo apt-get install chromium-browser | |
| chromium-browser --headless --no-sandbox http://example.org/ |
| require 'uri' | |
| require 'net/http' | |
| require 'timeout' | |
| def check_server(ip) | |
| uri = URI('http://ip.mangege.com/') | |
| Timeout::timeout(3) do | |
| Net::HTTP.start(ip, 80) do |http| | |
| request = Net::HTTP::Get.new uri |
由于路由管控系统的建立,实时动态黑洞路由已成为最有效的封锁手段,TCP连接重置和DNS污染成为次要手段,利用漏洞的穿墙方法已不再具有普遍意义。对此应对方法是多样化协议的VPN来抵抗识别。这里介绍一种太简单、有时很朴素的“穷人VPN”。
朴素VPN只需要一次内核配置(Linux内核),即可永久稳定运行,不需要任何用户态守护进程。所有流量转换和加密全部由内核完成,原生性能,开销几乎没有。静态配置,避免动态握手和参数协商产生指纹特征导致被识别。并且支持NAT,移动的内网用户可以使用此方法。支持广泛,基于L2TPv3标准,Linux内核3.2+都有支持,其他操作系统原则上也能支持。但有两个局限:需要root权限;一个隧道只支持一个用户。
朴素VPN利用UDP封装的静态L2TP隧道实现VPN,内核XFRM实现静态IPsec。实际上IP-in-IP隧道即可实现VPN,但是这种协议无法穿越NAT,因此必须利用UDP封装。内核3.18将支持Foo-over-UDP,在UDP里面直接封装IP,与静态的L2TP-over-UDP很类似。
| #include <stdlib.h> | |
| #include <stdio.h> | |
| #include <string.h> | |
| #include <assert.h> | |
| #include <errno.h> | |
| #include <ctype.h> | |
| #include "bencode.h" | |
| #define MAX_ALLOC (((size_t) -1) / sizeof(struct bencode *) / 2) |
| 《ANSI C中struct型数据的内存布局与对齐问题》 | |
| 楼主自述:本文是笔者的一篇读书笔记,原文见参考文献1。笔者从原文中获取了很多知识,并根据编译器输出做了进一步的总结。 | |
| 下面是正文。 | |
| -------------------------------------------------------------------------------- | |
| 在VS2005中,如果使用/zp指定了内存对齐的边界,将这个边界记为ZP | |
| 1. ANSI C标准规定结构体类型的对齐要求不能比它所有字段中要求最严格的那个宽松,可以更严格(但此非强制要求,VC7.1就仅仅是让它们一样严格)将struct所有字段中要求最严格的字段的对齐记为ST。 | |
| 2. 如果没有指定ZP时,对结构体内的某个域(假设其基本数据类型为T)的对齐模数(也就是此域的对齐地址)就是T的大小,即sizeof(T)。如果指定了ZP,此时结构体每个feild的对齐地址为当前这个域的sizeof值与ZP的中较小的值。 |
| # -*- coding: utf-8 -*- | |
| import os, time, random | |
| from django.core.files.base import File | |
| from django.core.files.storage import Storage | |
| from django.conf import settings | |
| from django.core.files import File | |
| import sae.storage | |
| try: | |
| from cStringIO import StringIO | |
| except ImportError: |
| // Answer to http://github.com/ry/http-parser/issues/#issue/1 | |
| // UNTESTED | |
| struct line { | |
| char *field; | |
| size_t field_len; | |
| char *value; | |
| size_t value_len; | |
| }; |