归档 2014年10月

清空OpenShift Git仓库历史记录还原为初始状态

本文简述清空OpenShift Git仓库历史记录,还原Git仓库为初始状态的步骤。

由于该操作存在风险,因此请预先对OpenShift线上代码做好备份工作。

cp -R <old locally cloned repo directory> <new directory name>

具体步骤如下:

  1. ssh into your gear
  2. cd git
  3. rm -rf [appname].git # 该操作会删除所有文件,除了目录 [appname].git/hooks 及其子文件
  4. cd [appname].git
  5. git init --bare
  6. exit this ...

继续阅读

使用加速乐和360CDN提升OpenShift WordPress加载速度

由于搭建在OpenShift(Redhat Cloud红帽云)平台的Wordpress博客程序使用了amazonaws(亚马逊AWS云服务,服务器位于美国),因此用户从国内直接访问的速度比较缓慢。

使用网站CDN加速服务可以在一定程度上提升OpenShift Wordpress页面的加载速度。

需要注意的是,由于OpenShift实例的服务器IP地址会不定期更换,使用CDN服务时需要定期关注源站的IP是否发生变更,一旦发生变更就需要及时修改源站IP。

目前国内几个口碑比较好的网站CDN加速服务提供商包括:

  • 加速乐(http://www.jiasule.com)
  • 百度云加速(http://yunjiasu.baidu.com/)
  • 360网站卫士(http://wangzhan.360.cn/)
  • 安全宝(http://www.anquanbao.com)

这些网站CDN加速服务的使用方法大同小异,下面以加速乐为例简单介绍网站CDN加速服务的设置过程。

使用加速乐提升OpenShift Wordpress博客加载速度

首先访问http://www ...

继续阅读

QQ中国象棋Java棋盘识别与自动下棋程序

QQ中国象棋(传统版)的棋盘识别程序Java源码(Eclipse工程)目前维护在Github

项目地址:https://github.com/qinjiannet/screen-chess-qq/

程序的入口main方法位于execute包下的Executor类中

自动下棋时默认采用随机行走,开发者可以通过修改ai包下的Thinker类中的getBestMove方法实现更加智能的AI

运行时,需要在QQ游戏大厅中手工开始一局象棋,然后运行Executor

由于程序采用的是截图分析获取棋盘状态的方式,因此运行过程中需要保证游戏窗口不被其他窗口遮挡

QQ中国象棋界面

部分Java源码摘录如下:

RecognitionHelper.java 用来识别QQ中国象棋的棋盘

package recognition;

import java.awt.Point;
import java.awt.image.BufferedImage;
import java.util.HashMap;

import color ...

继续阅读

Django 302重定向实现动态图片显示

有时Django开发者可能会遇到这样的需求:用户访问同一个URL,根据具体的业务需求返回不同的图片。

例如:用户访问URL /user/avatar/时,根据Session中的用户ID返回该用户的头像。

一般来说,要实现此功能可以采用下列2种方法:

  1. 使用Python图片处理模块PIL/pillow动态生成图片后直接响应返回给浏览器
  2. 使用HTTP 302,临时重定向至指定的图片URL返回给浏览器

需要注意的是,虽然HTTP 301与HTTP 302都可以实现请求的重定向,但HTTP 301为Moved Permanently,意为永久转移,该响应会被Google Chrome和Firefox等浏览器所缓存,因此不适于实现图片的动态重定向。

因而在此只能选择HTTP 302 Found 告知浏览器该响应为临时重定向,避免浏览器对重定向的结果进行缓存。

下面的代码片段实现了从3张图片中通过HTTP 302重定向随机返回一张给浏览器的功能。

import random
from django.shortcuts import ...

继续阅读

SAE Python MemCache使用示例

Memcache是SAE为开发者提供的分布式内存缓存服务,用来以共享的方式缓存用户的小数据。

Memcache主要的使用场景有以下两个:

  • 需要共享某些 key-value 形式的小数据时。(因为SAE的Web服务是分布式环境,所以使用全局变量方式等方式是不行的)。
  • 缓存MySQL等后端存储的数据。快速进行数据响应,减轻后端存储的压力。

用户需要先在在线管理平台创建Memcache,然后才可以通过API读写Memcache。

SAE Python本地开发环境提供了对SAE memcached服务的模拟,在本地开发时可以使用该模块模拟线上memcache服务的一些行为。使用下面的方法对线上和本地开发环境加以区分。

import os

#获取MemCache客户端
def getClient():
	if 'SERVER_SOFTWARE' not in os.environ: #本地调试环境
		import memcache
		mc = memcache.Client(['127.0.0.1:11211 ...

继续阅读

每日归档

上个月

下个月

归档