MinGW 编译 static Qt

  1.  MinGW 编译 static icu4c (QtWebkit 依赖)
    1. 下载 icu4c (http://site.icu-project.org/, http://sourceforge.net/projects/icu/, icu4c-XXX-src.zip)
    2. 下载安装 MYSYS2 (https://wiki.qt.io/MSYS2)
    3. 在 MYSYS2 shell 中 cd 到 icu4c source 目录并进行配置与编译
      ./runConfigureICU MinGW --prefix=/d/icu541-mingw492 --enable-static --disable-shared
      mingw32-make
      mingw32-make install
      
    4. 添加 include 目录及其内的 .h

VTK基础:VTK中主要 class

vtkAlgorithm & vtkPolyDataAlgorithm

vtkAlgorithm 通过 SetInputConnectionAddInputConnectionGetOutputPort 进行管线的连接。

vtkPolyDataAlgorithm 继承自 vtkAlgorithm ,以多边形数据作为输出。Cylinder 程序中的 vtkCylinderSource 继承自 vtkPolyDataAlgorithm

vtkPolyDataAlgorithm 通过 GetOutput 可以直接获得 vtkPolyData*

VTK 中所有 sources、 filters 均直接或间接继承自 vtkAlgorithm


 vtkAbstractMapper & vtkPolyDataMapper

vtkAbstractMapper 相关子类用于将输入数据转换为几何图元(2D / 3D)。…

VTK基础:VTK可视化流程

计划在 GitHub 开写《VTK简明教程》,地址:https://github.com/csuzhangxc/vtk-simple-tutorial
另,GitBook 地址:https://www.gitbook.com/book/csuzhangxc/vtk-simple-tutorial


VTK 两大重要模块

每个 VTK 程序,均包含两个最重要的模块:

  • 可视化管线(Visualization Pipeline)
  • 渲染引擎(Rendering Engine)

其中,可视化管线用于获取或创建数据、加工处理数据、把数据写入文件或者把数据传递给渲染引擎,渲染引擎负责数据的可视化表达。


Cylinder 程序

说明:本示例程序修改自 VTK-6.1.0/Examples/Rendering/Cxx/Cylinder.cxx

#include <vtkAutoInit.h>
VTK_MODULE_INIT(vtkRenderingOpenGL)
VTK_MODULE_INIT(vtkInteractionStyle)

#include "vtkCylinderSource.h"
#include "vtkPolyDataMapper.h"
#include "vtkActor.h"
#include "vtkRenderer.h"

在Flask中使用新浪SAE云存储(新浪SAE云存储flask扩展)

对于部署在新浪应用引擎SAE上的项目,使用新浪SAE云存储是不错的存储方案。

新浪SAE云存储仅能在SAE环境中正常使用,对它进行简单封装后,可以直接在Flask中使用,项目代码见GitHub上Flask-SaeStorage

使用示例代码:

from flask import Flask
from flask_saestorage import SaeStorage

SAE_ACCESS_KEY = 'SAE Access Key'
SAE_SECRET_KEY = 'SAE Secret Key'
SAE_APP_NAME = 'SAE App Name'
SAE_BUCKET_NAME = 'SAE Bucket Name'

app = Flask(__name__)

在Flask中使用百度云存储BCS(百度云存储flask扩展)

对于部署在百度应用引擎BAE上的项目,使用百度云存储BCS(Baidu Cloud Storage)是不错的存储方案。

百度云存储已有Python SDK,对它进行简单封装后,就可以直接在Flask中使用了,项目代码见GitHub上Flask-BCS

使用示例代码:

from flask import Flask
from flask_bcs import BCS

BCS_HOST = 'BCS HOST'
BCS_ACCESS_KEY = 'BCS Access Key'
BCS_SECRET_KEY = 'BCS Secret Key'
BCS_BUCKET_NAME = 'BCS Bucket 

在Flask中使用七牛云存储(七牛云存储flask扩展)

对于小型站点,使用七牛云存储的免费配额已足够为站点提供稳定、快速的存储服务(另:在WordPress中使用七牛云存储)。

七牛云存储已有Python SDK,对它进行简单封装后,就可以直接在Flask中使用了,项目代码见GitHub上Flask-QiniuStorage

使用示例代码:

from flask import Flask
from flask_qiniustorage import Qiniu

QINIU_ACCESS_KEY = '七牛 Access Key'
QINIU_SECRET_KEY = '七牛 Secret Key'
QINIU_BUCKET_NAME = '七牛空间名称'
QINIU_BUCKET_DOMAIN = '七牛空间对应域名'

app = Flask(__name__)
app.config.from_object(__name__)

Qt5(MinGW)使用CMake编译与使用VTK6

本文使用的各软件版本如下:
Qt:5.4.0;
MinGW:4.9.1;
CMake:3.1.1;
VTK:6.1.0。

下载最新版Qt(MinGW版):http://www.qt.io/download-open-source/
下载最新版CMake:http://www.cmake.org/download/
下载最新版VTK:http://vtk.org/VTK/resources/software.html


编译VTK

安装Qt(安装过程中注意勾选安装MinGW)与CMake,并添加与Qt集成安装的MinGW可执行程序路径(Qt***/Tools/mingw***/bin,即mingw32-make.exe所在路径)到系统环境变量PATH
解压VTK,建议解压后路径不要包含中文与空格。

打开VTK目录下的CMakeLists.txt文件,在约第219行,将set(VTK_USE_WIN32_THREADS 1)修改为set(VTK_USE_PTHREADS 1),该处原始上下文为:

include(FindThreads)
set(VTK_USE_WIN32_THREADS 0)
set(VTK_USE_PTHREADS 0)
set(VTK_HP_PTHREADS 0)
set(VTK_USE_SPROC 0)
if(CMAKE_USE_WIN32_THREADS_INIT)
  set(VTK_USE_WIN32_THREADS 1)
  set(CMAKE_THREAD_LIBS_INIT "")
elseif(CMAKE_USE_PTHREADS_INIT)
  

WordPress加速省流量之七牛镜像存储

自己搭建WordPress时,经常遇到的两个问题就是网络访问速度不够快及主机流量限额太少(当然,DigitalOcean的 1T/月 还是非常好的)。通常我们要解决这两个问题,经常使用的方案就是用图床来托管网站图片资源。但图床使用通常比较麻烦且仅能托管用户上传的图片,而通过使用七牛云存储的镜像存储服务,这两个问题都可以非常容易的得到解决。

所谓镜像存储是指你网站的数据在存储在自己服务器上的情况下,额外使用七牛云存储作为镜像服务器,让网站的用户每次访问的时候都从七牛云存储上读取。当七牛云存储上没有用户需要读取的数据,则七牛的服务器会从源站拉取资源,然后再返回给网站的用户。
通过使用镜像存储,绝大部分时候被镜像存储过的资源就不再需要从源站上获取了,这样即节省了源站流量,又依靠七牛的CDN节点提高了网站访问速度。

作为小站长或小博主,使用各种服务首先关心的自然是价格问题,好在七牛云存储免费配额还是挺不错的,包括了:
1.10GB永久免费存储空间
2.每月10GB下载流量
3.每月10万次Put请求
4.每月100万次Get请求
对于一般的网站博客来说,这已经完全足够了。

七牛的镜像存储服务适合各种类型的网站静态资源,如图片、音视频文件以及 CSS 和 JavaScript 等。对于自己编程实现的网站系统,可能需要较多的修改才能方便使用七牛镜像服务,但对于WordPress,我们有强大的插件来帮助我们轻松地将静态资源切换为使用七牛镜像服务。

七牛镜像存储 WordPress 插件 主要包含以下功能:
1.一键将 WordPress 的静态资源镜像到七牛
2.支持将远程图片也保存并镜像到七牛
3.使用七牛数据处理功能给图片设置水印
4.在 WordPress 后台直接更新数据
5.支持设置分类,标签缩略图,日志缩略图获取更完善
6.提供一批带缩略图的相关日志,最新日志,最热日志的日志列表


WordPress七牛加速使用说明:


一、注册七牛并创建镜像存储空间

1.点击https://portal.qiniu.com/signup?code=3lg4o70qpsd3m(我的邀请链接)注册七牛账号。

2.在左上的【选择一个空间】下拉框下点击【+新建空间】,填写【空间名称】并选择为【公共空间】,点击【提交】以创建新的空间。
七牛-新建空间

3.在【选择一个空间】下拉框中选择刚刚创建的空间,依次选择【空间设置】>【基本设置】>【一键加速网站】,填写【镜像源】为需要加速的网站,注意勾选左下的【使用默认的robots.txt配置文件】(我的已配置过),否则可能因为镜像源和镜像空间内容基本一致,导致搜索引擎对源站进行封锁。点击【确定加速】保存设置。
七牛-加速设置


二、七牛镜像存储 …

Shadowsocks源码阅读笔记【1】——语言相关

1.Python版本信息:

>>> import sys
>>> sys.version_info
sys.version_info(major=2, minor=7, micro=6, releaselevel='final', serial=0)

2.getopt.getopt(args, options[, long_options])进行命令行参数解析。

3.json.load(f, object_hook=_decode_dict)自定义JSON解码。

4.string.maketrans(from, to)构建字符映射转换表(长度为256):

>>> import string
>>> from_chars = 'abcdefg'
>>> to_chars = '1234567'
>>> table = string.maketrans(from_chars, to_chars)

Python中JSON在解析的同时进行自定义编码处理

在对文件内容或字符串进行JSON反序列化(deserialize)时,由于原始内容编码问题,可能需要对反序列化后的内容进行编码处理(如将unicode对象转换为str)。

在Python中,一种方式是先使用json.loadjson.loads反序列化得到dict对象,然后对这个dict对象进行编码处理。

但其实在json.loadjson.loads中,有可选参数object_hook。通过使用此参数,可以对反序列化得到的dict直接进行处理,并使用处理后新的dict替代原dict返回。

使用方法为:

d = json.loads(json_str, object_hook=_decode_dict)

附Shadowsocks中使用的_decode_dict_decode_list

def _decode_list(data):
    rv = []
    for item in data:
        if isinstance(item, unicode):
            item