C++自动类型推断和基于范围的for循环

在C++11之前,auto关键字用来指定存储期。在新标准中,它的功能变为类型推断。auto现在成了一个类型的占位符,通知编译器去根据初始化代码推断所声明变量的真实类型,这样可以让我们的代码更加简洁。 auto在C++98中的标识临时变量的语义,由于使用极少且多余,在C++11中已被删除。前后两个标准的auto,完全是两个概念。
Continue reading

Posted in C|C++, Dev.

R入门笔记2

续上一篇R快速入门笔记,本文是最近学习R的一些笔记心得。 Continue reading

Posted in Dev, Python|R.

Nginx重定向&静动资源分离

1. 域名重写

我们可以在同一个server中绑定域名www.example.com和example.com两个域名:

但是这样对我们的SEO非常不利,我们需要使用301(rewrite)将一个域名重定向到另一个,比如将example重定向到www.example.com。这里要依赖于正则表达式的分组(使用$1来引用分组)。

Continue reading

Posted in Ops, Tools.

Flask-RESTful构建小型REST服务

REST是web services和APIs的标准架构,很多APP的架构基本上是使用RESTful的形式了。诸如docker daemon等服务都是提供了RESTful API,docker的CLI可以通过该API的URL地址与之通信。
Flask是一个超级流行的Python 编写的轻量级 Web 应用框架。而Flask有一个REST插件——Flask-RESTful是为了快速构建REST API的Flask插件,它能和现有的ORM配合实现轻量级数据抽象。Flask-RESTful鼓励小型化实践,非常简单易学。本文将会使用python的Flask框架轻松实现一个RESTful的服务。
REST的六个特性:

  • Client-Server:服务器端与客户端分离。
  • Stateless:每次客户端请求必需包含完整的信息,换句话说,每一次请求都是独立的。
  • Cacheable(可缓存):服务器端必需指定哪些请求是可以缓存的。
  • Layered System(分层结构):服务器端与客户端通讯必需标准化,服务器的变更并不会影响客户端。
  • Uniform Interface(统一接口):客户端与服务器端的通讯方法必需是统一的。
  • Code on demand(按需执行代码):服务器端可以在上下文中执行代码

Continue reading

Posted in Dev, Python|R.

Python任务调度模块 – APScheduler

APScheduler是一个Python定时任务框架,使用起来十分方便。提供了基于日期、固定时间间隔以及crontab类型的任务,并且可以持久化任务、并以daemon方式运行应用。目前最新版本为3.0.x。 Continue reading

Posted in Python|R.

MongoDB RS优先级设置

在AWS上的MongoDB ReplicaSet集群中,我们的主站区域(例如:cn-north-1a)存在着多数节点,而异地区域(如:cn-north-1b)存在少数的备份复制集。而实例之间的配置又不同,这就要求我们让一些节点避免成为primary。这就用到了RS的priority属性——在RS配置中,非仲裁节点都有一个priority,范围为0-100,越大的值越优先成为priority。默认情况下是1。如果是0,则不能成为primary。
例如在下面一个集群中,0,1,2位于cn-north-1a,配置2最大。而3位于cn-north-1b,我们可以通过设置优先级让2更倾向于成为primary,0&1其次,而让3避免成为primary。

这样就实现了我们的目的~

Posted in Database, NoSQL.

MongoDB的权限管理

MongoDB 2.4新引入了一套权限控制的机制,而旧的addUser的方法在3.0已经不再提供,这对我们管理MongoDB造成了诸多不便。本文简单总结一下新版MongoDB关于权限管控的一些技巧。 Continue reading

Posted in Database, NoSQL.

Docker Compose—简化复杂应用的利器

Compose是用于定义和运行复杂Docker应用的工具。你可以在一个文件中定义一个多容器的应用,然后使用一条命令来启动你的应用,然后所有相关的操作都会被自动完成。 Continue reading

Posted in Ops, Virtualization.

在Windows下构建Docker开发环境

Docker提供了非常便利的环境可迁移性。不过Docker引擎使用了Linux专有的内核特性,在Windows下运行Docker看似是十分困难的事情。Docker官方为我们提供了Boot2Docker这个小工具,Boot2Docker会使用VirtualBox来创建一个包含Docker的Linux操作系统的虚拟机。我们执行的docker命令会运行在这个虚拟机实例中,这样我们的开发环境能也能快速迁移到正式的生产环境中。 Continue reading

Posted in Ops, Tools, Virtualization.

Gitbucket—快速建立自己的Github

GitBucket是一个用Scala语言编写的类似Github的应用,界面非常相似。它非常容易安装–容易到你只需要把它的war文件扔到tomcat中,然后启动tomcat就直接可以访问了。或者直接java执行它就可以运行了! Continue reading

Posted in Ops, Tools.