Nginx简易文件上传

1. 编译nginx,添加Nginx Upload Module

下载nginx所依赖软件包、nginx源码及nginx-upload-module(nginx-http-auth-digest 很久不再更新,有兼容问题,不推荐):

mkdir nginx_upload && cd nginx_upload
wget https://www.openssl.org/source/openssl-1.0.2j.tar.gz
wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.39.t[......]

Read more

Doxygen生成TensorFlow代码文档

0. 环境

Debian 8.8 x86_64

1. 安装doxygen和graphviz

这是生成代码文档需要的两个组件。前者不必说了,后者是用来画图的(UML图,函数调用图)。

graphviz可直接apt安装:

apt-get install graphviz

下面讨论两种方式安装Doxygen。

1.1 最简单可以从源安装:

apt-get install doxygen

Debian 8 源里的版本比较老,是1.8.8的(截至2017.06.16)。发现的问题是其不支持github风格的markdown code block标记(`&#96[……]

Read more

2D卷积:原理、脚手架、实现

1. 卷积

卷积运算是用一个卷积核(小矩阵)与输入矩阵的子区域做点积,得到一个标量;然后在子区域上进行位移(依照stride参数),计算得到一个新的矩阵,称作feature map。

图源自网络:

一个动图(同样源自网络)做更完整说明:

在卷积运算y=conv(x,w)+b中,x通常是4维Tensor:NCHW(cuDNN中的默认格式,下同)。其中N是batch size;C是input channel,或者叫input depth;H*W则是每张输入image的大小。在上面的动图中,N=1,C=3,H=W=5

相应地,filter也是4维Tensor:OIHW。[……]

Read more

神威上程序性能热点分析

类似于神威系统上的gprof使用方法。

方法1:提交作业选项

根据《神威并行程序设计与优化》所述,分析核心代码段的步骤如下。

1. 提交作业时加 --sw3runarg="-p -f" 命令行选项
2. 作业运行结束后生成: gmon.out 文件
3. 在 gmon.out 目录下执行: gprof <可执行程序> gmon.out

生成结果如下图:

方法2:显式调用

在某些编译器下,上述方法并不能奏效(没有gmon.out文件生成),推测是在编译链接时没有链接相关支持库(或许对应的库没有开发完成)。可采用在程序源代码中显式调用do_profile()函数的方法。[……]

Read more

TensorFlow中2D卷积代码简析

TensorFlow中的基本计算核心函数,或称kernel,均定义在tensorflow/core/kernels目录下。其中卷积操作是深度神经网络中最常见的热点操作之一,自然也定义并实现在此处,涉及到的主要文件是conv_ops.cc。本文以TensorFlow r1.5代码为基础,试图对其中卷积操作进行初步分析,以见一斑。

1. 2D卷积代码结构简析

2D卷积操作是卷积网络中非常重要的热点函数,采用Intel VTune工具对VGG16算例(纯CPU计算)inference进行热点分析。程序的CPU运行时间是43.576s,其中卷积操作tensorflow::Conv2D[......]

Read more

【旧文】青海湖游记

人正不正经不知道,但是都自称君子。 —— 一位不愿透露姓名的洗头小妹

乙未年六月中,夏秋之交,科大六君子骑行环游青海湖,遂有此记。

科大六君子在青海湖畔(左起:老姜,晗哥,龟龟,增哥,羚羊,大鹏)

青海湖,中国最大内陆湖,咸水。环湖360公里,海拔愈3200米,湖周山峦起伏,牛马成群,风光秀丽。

科大六君子,乃羚羊、龟龟、增哥、大鹏、老姜及晗哥是也。

羚羊,安徽人,三角脸,如眼镜王蛇,资深骑行爱好者,其组装车型为众人攒车之蓝本,追随者不可谓不众。

龟龟,江西人,体宽臀肥,官二代,吃货一枚;上古卷轴高玩。

增哥,河南人,两年前曾骑行川藏线,德高望重;每晚固定时段与女友通话,秀恩[……]

Read more

ShadowSocks笔记

0. 简介

Shadowsocks:一种基于socks5代理方式的加密传输协议,或者实现这一协议的各种传输包。

我想,需要这篇文章的人都不需要更多解释 ^_^

1. 服务器端安装配置

1.1 和 1.2 两种方式二选其一,推荐1.2,简单!

1.1 常见配置

安装:

apt-get install python-pip    # D[......]

Read more

WizNote编译笔记(Debian)

 

1. 基本环境准备

Git, cmake, build-essential, zlib1g-dev

apt-get install git build-essential cmake zlib1g-dev libssl1.0-dev

2. QT5 环境配置

2.1 安装QT5

安装 5.7.0 for Linux 64-bit (715 MB) 或者更高版本
http://download.qt.io/official_release[……]

Read more

HTTPS简介

HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不安全。为了保证这些隐私数据能加密传输,于是网景公司设计了SSL(Secure Sockets Layer)协议用于对HTTP协议传输的数据进行加密,从而就诞生了HTTPS。TLS则是SSL的升级版,由于历史原因,现在通常统称SSL。

HTTPS在传输数据之前需要客户端(浏览器)与服务端(网站)之间进行一次握手,在握手过程中将确立双方加密传输数据的密码信息。TLS/SSL中使用了非对称加密,对称加密以及HASH算法。握手过程的简单描述如下:

  1. 浏览器将自己支持的一套加密规则发送给网站。
  2. 网站[……]

Read more

头文件里放什么

        对 C 和 C++ 程序来说,头文件里放什么,这不是一个难回答的问题。在编写小规模代码时,很少遇到这一困扰,而在编写大型项目时,对这一问题建立明确的认识却是十分必需的。

  • 头文件中放什么
  • 版本、版权信息
  • #include 包含头文件
  • 常量定义及初始化
  • 全局变量声明(⚠ 是声明,不是定义。即 C 语言中的 extern)
  • 数据类型定义(typedef, struct, union)
  • 函数声明
  • 内联函数定义(⚠ C++ 专属)
  • 模版(template,C++ 专属)
  • 源文件中[……]

Read more