归档 2014

Python实现mkdir -p递归创建多级目录

mkdir为Linux操作系统中的创建目录命令,使用mkdir -p指令可以自动创建目标目录路径中尚不存在的上级目录(Windows操作系统也有同名的指令,用法稍有差别)。

Java的创建目录有mkdir和mkdirs两个方法,其中:

  • mkdir() :只能在已经存在的目录中创建创建文件夹。
  • mkdirs() :可以在不存在的目录中创建文件夹。

与Java类似,Python的os模块也存在两个函数,分别为mkdir和makedirs,其中:

  • mkdir( path [,mode] ):创建一个目录,可以是相对或者绝对路径,mode的默认模式是0777。如果目录有多级,则创建最后一级。如果最后一级目录的上级目录有不存在的,则会抛出一个OSError。
  • makedirs( path [,mode] ):创建递归的目录树,可以是相对或者绝对路径,mode的默认模式是0777。如果子目录创建失败或者已经存在,会抛出一个OSError的异常,Windows上Error 183即为目录已经存在的异常错误。如果path只有一级,与mkdir相同。

对于Python 2.X(X > 2.5)版本,使用Python模拟实现Linux下的mkdir -p指令功能的代码如下:

import os, errno

def mkdir_p(path):
    try:
        os.makedirs(path)
    except OSError as exc: # Python >2.5 (except OSError, exc: for Python <2.5) ...

继续阅读

七牛云存储Bucket备份Python源码

使用七牛云存储的Python SDK与Python requests模块可以实现对七牛云存储Bucket内容的备份,Python源码如下。

在运行代码之前,首先需要安装qiniu Python SDKRelease v6.1.9)与Python requests模块,或将这两个包放置在备份脚本的同目录下。

请注意:该源码暂不支持断点续传。脚本运行时,默认在当前目录下创建以bucket_name命名的目录,并将文件备份至该目录下。

#encoding=utf8

#author 在线疯狂
#使用七牛Python SDK与Python requests对Bucket内容做备份

import qiniu.conf

qiniu.conf.ACCESS_KEY = "<YOUR_APP_ACCESS_KEY>"
qiniu.conf.SECRET_KEY = "<YOUR_APP_SECRET_KEY>"

import qiniu.rsf
import requests
import os, errno, sys, shutil

def mkdir_p(path): ...

继续阅读

jQuery遮罩插件jQuery.blockUI.js简介

jQuery BlockUI Plugin概述:

jQuery BlockUI插件可以在不锁定浏览器的同时,模拟同步模式下发起Ajax请求的行为。该插件激活时,会阻止用户在页面进行的操作,直到插件被关闭。BlockUI通过向DOM中添加元素实现其外观和组织用户交互的行为。

使用jQuery BlockUI,首先需要添加插件js源码的引用:

<script type="text/javascript" src="https://malsup.github.io/min/jquery.blockUI.min.js"></script>

用法很简单,阻止用户对页面的交互:

$.blockUI();

使用自定义信息阻塞UI:

$.blockUI({ message: '<h1><img src="busy.gif" .> Just a moment...</h1>' });

使用自定义样式阻塞UI:

$.blockUI({ css: { backgroundColor: '#f00'; color: '#fff' } });

解除对页面的遮罩:

$.unblockUI();

如果你想要使用缺省设置对所有的ajax请求都使用UI遮罩,只需添加下面的语句即可:

$(document).ajaxStart($.blockUI).ajaxStop($.unblockUI);

页面遮罩示例:

下面演示了几种阻塞页面的方式,点击下面的按钮激活blockUI

上例使用了下面的代码:

<script ...

继续阅读

MySQL体系结构漫谈

原文链接:https://www.flamingspork.com/blog/2014/09/19/mysql-architecture/

    有好一阵子,我一直在四处寻找(已经尝试过很多次)面向技术精通但对MySQL钻研不太深的读者的关于MySQL体系结构和技术细节的优质资源,但一无所获。我的意思是,确实有MySQL手册(篇幅庞大且描述详尽),也确实有MySQL内部手册(已经大约过时10年了),以及各种各样的博客日志。所以我想自己应该写点东西来粗略地解释下这一切是怎样组合在一起的,以及它对你的系统做了些什么(进程、线程、IO,等等)(基本上,我在过去的几年里已经对此解释过很多次了,我的确应该把这些东西用博客写出来)。我在相关阅读材料处做了链接,有空的时候可以看看。

    几年以前,有许多关于MySQL体系结构的演示。我试图在YouTube上找一些看看但以失败告终。我们可能不会静下心来在YouTube上观看,并且大部分会议都没有被记录下来。因此我只贴一条链接 Brian on NoSQL —— 因为了解下NoSQL也很重要。

    下面是一个关于在MySQL服务器内部执行查询及其影响因素的简要概述。这不是一个完整的描述...只是一个(几千个字)“简要的”概述。

mysql-Custom-engine-overview

    MySQL是一款开源的关系型数据库,其起源可追溯到1979年,MySQL 1.0诞生于1995年。It's code that has some history and sometimes this really does show. For a more complete history, see my talk from ...

继续阅读

Windows本地方式安装OpenShift客户端工具rhc

在Windows环境下搭建OpenShift环境,安装客户端工具rhc,首先需要安装Ruby和Git,参阅https://developers.openshift.com/en/getting-started-client-tools.html#windows

在正确安装Ruby和Git之后,使用RubyGems包管理器(Ruby内置)安装OpenShift的客户端工具rhc。

官方提供的方式为:gem install rhc,但可能是网络原因所致,执行命令后提示错误信息:

ERROR:  Could not find a valid gem 'rhc' (>= 0), here is why:
          Unable to download data from https://rubygems.org/ - Errno::ECONNREFUS
ED: No connection could be made because ...

继续阅读

每月存档

明年