1月 28

读《IT管理体系》

  分类介绍了IT的架构和管理体系,对于体系中各个环节都进行了详细的说明和深入的研究。对治理、管理、战略的不同层次的知识也都有涉及,适应多种人群阅读。
  理论性太强的书适合借鉴,不能照搬,项目总是千差万别的。这个体系缺失很完善,对于超极大鳄们很有好处,但是对于大部分公司如果都按正规体系做,恐怕只有死路一条。仁者见仁智者见智。
image

1月 27

Raspberry pi 软件模拟PWM

  Raspberry pi 只有一个PWM。看到国外高手有人用软件模拟PWM。我也测试一下。以下部分只是测试记录,文档和代码均来自官方网站。

使用root用户安装softpwm,这个安装记录直接拷贝到系统里运行成功就行。
apt-get -y update
apt-get -y upgrade
apt-get install -y devscripts build-essential fakeroot dh-make mercurial dh-make
apt-get install -y devscripts build-essential fakeroot
mkdir temp
cd temp
hg clone http://hg.code.sf.net/p/raspberry-gpio-python/code raspberry-gpio-python -r 0.5.4
cd raspberry-gpio-python
python setup.py sdist
cd dist/
tar xvfz RPi.GPIO-0.5.4.tar.gz
mv RPi.GPIO-0.5.4 rpi.gpio-0.5.4
cd rpi.gpio-0.5.4
dh_make -s -f ../RPi.GPIO-0.5.4.tar.gz
rm -rf debian
cp -a ../../debian/ ./
debuild -us -uc
debuild clean
python setup.py install

测试代码如下,使用LED小灯测试:

#!/bin/env python
# -*-coding:utf-8 -*-
import time
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setup(7, GPIO.OUT)

p = GPIO.PWM(7, 50)  #frequency=100Hz
p.start(0)
try:
    while 1:
        for dc in range(0, 101, 5):
            p.ChangeDutyCycle(dc)
            time.sleep(0.1)
        for dc in range(100, -1, -5):
            p.ChangeDutyCycle(dc)
            time.sleep(0.1)
except KeyboardInterrupt:
    pass
p.stop()
GPIO.cleanup()

来源
http://sourceforge.net/p/raspberry-gpio-python/wiki/PWM/

1月 14

读《网站运维》

  十分推荐。和以往看过的技术书不同。并不是各种测评,然后各种第三方软件的安装和配置的罗列。
  读此书就像听一位老技术高手讲自己经历的故事一样。让运维人员从思想提高,更深入的了解更多的处理业务的思路。
image

1月 03

测试python计算MD5和CRC的速度

  大量数据想均匀分布到不同的数据库存储,当前方法将key进行MD5或CRC计算,取最后一位分别对应到相应的存储位置。测文本17721088行。
两个脚本如下:
MD5部分

import hashlib
import time

file_list = open('di.txt')
start =time.time()
for get_str in file_list:
    if get_str[-1] == '\n':
        get_str = get_str[:-1]
    get_crc = hashlib.md5(get_str).hexdigest()
    #print get_crc
end = time.time()
print end-start

CRC部分

import zlib
import time

file_list = open('di.txt')
start =time.time()
for get_str in file_list:
    if get_str[-1] == '\n':
        get_str = get_str[:-1]
    get_crc = zlib.crc32(get_str) & 0xffffffff
end = time.time()
print end-start

md5计算用58.81秒,crc计算用27.06秒。CRC速度比md5快一倍。但是MD5是16进制,CRC是十进制。如果要将CRC转为16进制,所用时间和MD5用时相似。