tar cizvf backup.tar.gz /var/cache/apt/archives --exclude=/var/cache/apt/archives/partial/* --exclude=/var/cache/apt/archives/lock 重装系统,设置好源列表后,导入已备份的软件包即可,操作方法:sudo apt-get update && sudo tar xzvf backup.tar.gz -C / 清理 sudo apt-get clean rm -rf ~/.thumbnails/fail/gnome-thumbnail-factory/*
Dec 24, 2008
Ubuntu 软件备份与清理
Dec 15, 2008
django 生成 下载 csv 文件
import csv
download(request, qstr):
response = HttpResponse(mimetype='text/csv')
response['Content-Disposition'] = 'attachment;filename=%s.csv' %qstr
writer = csv.writer(response)
csvtitle = [u'姓名'.encode('GBK'), u'手机号'.encode('GBK'), u'商品名称'.encode('GBK'), u'售出数量'.encode('GBK'), u'单价(RMB)'.encode('GBK'), u'日期'.encode('GBK')]
writer.writerow(csvtitle)
return response
pyExcelerator django 创建可供下载的 excel
pyExcelerator 创建excel的代码大概如下:
from pyExcelerator import *
wb = Workbook()
ws = w.add_sheet('Sheet1')
ws.set_show_headers = 0
header = ['姓名', '手机号码', '商品名称', '售出数量', '单价(RMB)', '日期']
header = [x.decode('utf8') for x in header]
for i in range(len(header)):
ws.write(0, i, header[i])
wb.save()
在django中提供下载:
from pyExcelerator import *
xlsname = 'test.xls'
w = Workbook()
ws = w.add_sheet('Sheet1')
ws.set_show_headers = 0
header = ['姓名', '手机号码', '商品名称', '售出数量', '单价(RMB)', '日期']
header = [x.decode('utf8') for x in header]
for i in range(len(header)):
ws.write(0, i, header[i])
w.save(xlsname)
response = HttpResponse(mimetype='application/vnd.ms-excel')
response['Content-Disposition'] = 'attachment;filename=%s' %xlsname
response.write(w.savestream())
return response
注意,Workbook类中是没有savestream方法的,参考http://blog.csdn.net/kernelspirit/archive/2008/10/26/3147888.aspx
修改pyExcelerator代码
Workbook的savestream方法:
def savestream(self):
import CompoundDoc
doc = CompoundDoc.XlsDoc()
return doc.savestream(self.get_biff_data())
CompoundDoc.XlsDoc的savestream方法:
def savestream(self, stream):
# 1. Align stream on 0x1000 boundary (and therefore on sector boundary)
padding = '\x00' * (0x1000 - (len(stream) % 0x1000))
self.book_stream_len = len(stream) + len(padding)
self.__build_directory()
self.__build_sat()
self.__build_header()
s = ""
s = s + str(self.header)
s = s + str(self.packed_MSAT_1st)
s = s + str(stream)
s = s + str(padding)
s = s + str(self.packed_MSAT_2nd)
s = s + str(self.packed_SAT)
s = s + str(self.dir_stream)
return s
Mysql 批量删除数据表
#coding: utf-8
import MySQLdb
def droptables(tablename):
remainTable = []
db = MySQLdb.connect(host = 'localhost',
user = 'test',
passwd = 'test',
db = 'test')
cursor = db.cursor()
while True:
cursor.execute('show tables like "%s%%"' % tablename)
tables = cursor.fetchall()
if len(tables) == 0:
break
for x in tables:
try:
cursor.execute('drop table %s' %x)
db.commit()
except:
#print x
continue
cursor.close()
db.close()
if __name__ == '__main__':
tablename = 'droptest_'
droptables(tablename)
Dec 4, 2008
Windows下的Apache Php Mysql 环境搭建
Apache、Php、Mysql
配置:
1. Apache:
编辑httpd.conf
DocumentRoot "E:/Program Files/Apache Group/web"
# < 和 字母之间没有空格
< Directory "E:/Program Files/Apache Group/web" >
LoadModule php5_module "E:/Program Files/Apache Group/PHP/php5apache2.dll"
DirectoryIndex index.html index.html.var index.htm index.php
AddDefaultCharset GB2312
AddType application/x-httpd-php .php .phtml .php3 .php4
2. Php:
把Php目录下的 php.ini-dist 重命名为 php.ini,然后拷贝到 %systemRoot% 下
复制Php目录下的 php5ts.dll,libmysql.dll 到 %systemRoot%\system32下
extension_dir = "E:\Program Files\Apache Group\PHP\ext"
extension=php_dba.dll
extension=php_dbase.dll
extension=php_gd2.dll
extension=php_imap.dll
extension=php_mysql.dll
extension=php_mysqli.dll
C# 操作 Excel
string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;";
strConn += "Extended Properties='Excel 8.0;HDR=No; IMEX=1;';";
strConn += "data source=" + xlsPath;
// 查询语句
string cmdText = "SELECT * FROM [Sheet1$]";
OleDbConnection connDB = new OleDbConnection(strConn);
OleDbCommand cmdDB = new OleDbCommand(cmdText, connDB);
OleDbDataReader drdr;
// 打开Excel表格
connDB.Open();
// 执行 sql语句
drdr = cmdDB.ExecuteReader();
if(drdr.Read())
{
..............
drdr.GetValue(i)
...............
}
把文本文件中的数据导入 MS SQL Server 2005
use NumberLocation;
BULK INSERT Fixed From 'E:\code\DB\fixedbook-sort.txt' With
(FIELDTERMINATOR = ',', ROWTERMINATOR = '\n')
其中 use 是先进入 数据库 NumberLocation
*.txt 是要导入的文本文件
FIELDTERMINATOR 是字段分隔符
ROWTERMINATOR 行分隔符
MS SQL Server 函数及运算
=, AS
SELECT 'database' = db_name();
SELECT id AS UserId FROM student;
2. 增加一列
SELECT au_fname, au_lname, 'Identification Number: ', au_id FROM
authors;
3. 算术运算 (+、-、*、/、%)
%只能用于 INT, SMALLINT, TINYINT
SELECT title, price, 'price -3' = price -3
4. 数学函数 (ABS, SIN, COS, TAN, PI(), RAND(), SIGN(), SQRT(), SQUARE(),
CEILING(38/3), EXP(2.0), LOG(10) ...)
SELECT LOG(10)
SELECT 69/8
5. 字符串函数
SELECT ascii('abc')
SELECT 'SQL' + 'Server' + '2005'
SELECT char(36)
SELECT charindex('Server', 'SQL Server 2005')
SELECT lower('ABC')
SELECT upper('cde')
SELECT replicate('MSSQL-', 10)
SELECT substring('1234567890', 5, 3)
SELECT len('hello world')
SELECT stuff('1234567890', 3, 2, '-abcdefghigk-')
6. 日期和时间函数 (GETDATE(), DATEADD())
SELECT GETDATE()
7. 系统函数 (DB_NAME(), USER_NAME(), SUSER_NAME(), ISNUMERIC(), ISDATE(), )
ISNUMERIC(title_id):如果是数字类型,返回1;如果是日期、字符串或者
其他数据类型,返回0
8. 数据类型强制转换
SELECT SUBSTRING(title, 1, 30) AS Title, ytd_sales FROM titles
WHERE CONVERT(char(20), ytd_sales) LIKE '3%'
C# 从Web网站下载文件
// 从服务器下载文件
// 成功返回 true,否则返回false
// using System.Net;
private bool DownloadFile(string url, string strfile)
{
HttpWebRequest hwr = null;
Stream ns = null;
FileStream fs = new FileStream(strfile, FileMode.Create);
int nReadSize = 0;
byte[] abytes = new byte[1025];
try
{
hwr = (HttpWebRequest)WebRequest.Create(url);
ns = hwr.GetResponse().GetResponseStream();
nReadSize = ns.Read(abytes, 0, 1024);
while (nReadSize > 0)
{
fs.Write(abytes, 0, nReadSize);
nReadSize = ns.Read(abytes, 0, 1024);
}
fs.Close();
ns.Close();
}
catch (Exception eer)
{
MessageBox.Show(eer.Message);
fs.Close();
File.Delete(strfile);
return false;
}
return true;
}
Error: The INF file contains Unicode characters that could not be converted correctly to ANSI
Error: The INF file contains Unicode characters that could not be
converted correctly to ANSI
解决方法:
1、在部署的安装包项目的属性中,一定要把"manufacturer"(制造商)项填写成
英文或数字,不能为中文。此时的"属性"不是选中项目后右键中的属性,而中选中
项目后,按F4键出现的发生窗口。
把其中的manufacturer项的值改为非中文。
2、因为制作的安装包程序有"快捷方式",所以在"文件系统"窗口中把"快捷方式"
的名称也要改为非中文。
3、注意将程序生成的EXE的文件名也要改成英文的
文件被数字签名策略拒绝(File was rejected by digital signature policy)
名策略拒绝(File was rejected by digital signature policy) "
这个错误产生的原因据说是:"当运行安装程序时,Windows Installer 会验证程序
包的数字签名以确保程序包没有被篡改。这时整个程序包被加载到内存中,计算机
必须拥有程序包大小所需的足够连续内存。如果计算机没有足够的连续内存,则会
出现错误。由于出现错误,Windows Installer 将无法验证是否对该程序包正确地
进行了签名。"
解决:
修改
HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\Safer\CodeIdentifiers
注册表项下面的 PolicyScope 的注册表值,将值从0 改为 1
VS 2005 没有找到MFC80UD.DLL,因此这个应用程序未能启动。重新安装应用程序可能会修复此问题
的问题。
解决方法:
通过修改项目属性->清单工具->输入输出,把"嵌入清单"选"否",.然后编译、链
接、运行即可
Ubuntu 8.04 LAMP 搭建
sudo apt-get install apache2 php5 libapache2-mod-php5 mysql-server
libapache2-mod-auth-mysql libapache2-mod-auth-mysql
设置域名,编辑/etc/apache2/httpd.conf 添加
ServerName ox0spy.org
匹配ip地址的python正则表达式
'^([01]?\d\d?|2[0-4]\d|25[0-5])\.([01]?\d\d?|2[0-4]\d|25[0-5])\.([01]?\d\d?|2[0-4]\d|25[0-5])\.([01]?\d\d?|2[0-4]\d|25[0-5])$'
Python 文件操作
常用于文件读写操作
常用方法: file, open, read, readline(), readlines(),write(),
writelines(), seek(), tell(),flush(), close()
属性:name, mode, isatty, closed
2. 获取文件信息:os, stat, time
os.stat()
os.lstat()
stat模块获取详细文件信息
fileStats = os.stat(filename)
fileInfo = {
'Size' : fileStats [ stat.ST_SIZE ],
'LastModified' : time.ctime ( fileStats [ stat.ST_MTIME ] ),
'LastAccessed' : time.ctime ( fileStats [ stat.ST_ATIME ] ),
'CreationTime' : time.ctime ( fileStats [ stat.ST_CTIME ] ),
'Mode' : fileStats [ stat.ST_MODE ]
}
3. 通过os.path获取一些文件信息
文件是否存在、是否是一个目录、...
获取文件大小、创建、访问、修改时间
4. 目录操作
os.listdir(dir)
os.mkdir(dir)
os.rmdir(dir)
os.mkdirs(dirs) # mkdir -p
os.rmdirs(dirs) # rm -r
5. 对不同类型的文件进行操作:fnmatch
import os, fnmatch
for filename in os.listdir('.'):
if fnmatch.fnmatch(filename, '*.py'):
print open(filename).read()
elif fnmatch.fnmatch(filename, '*.sh'):
print filename
elif fnmatch.fnmatch(filename, '?.txt'):
print 'Text file :', filename
*代表匹配所有字符,?匹配一个任意字符
在"fnmatch"模块,我们可以创建正则表达式来应用,只要通过 "re" 模块:
import fnmatch
import os
import re
filePattern = fnmatch.translate ( '*.txt' )
for fileName in os.listdir ( '/' ):
if re.match ( filePattern, fileName ):
print 'Text file.'
如果想从一个目录下搜索一种类型的所有文件,使用glob:
glob(pathname)
Return a list of paths matching a pathname pattern.
#!/usr/bin/env python
import glob
for filename in glob.glob('[0-9].txt'):print filename
6. 序列化数据
pickle, cpickle
#!/usr/bin/env python
import pickle
fileHandle = open('pickleFile.txt', 'w')
thisList = ['This', 2, 'is', 1, 'a', 'test']
pickle.dump(thisList, fileHandle)
fileHandle.close()
解序列
#!/usr/bin/env python
import pickle
fileHandle = open('pickleFile.txt', 'r')
thisList = pickle.load(fileHandle)
fileHandle.close()
7. 内存文件:StringIO, cStringIO
a small tip : print >> f, a_string 等价于 f.write(a_string + '\n')
Django manage.py 能做什么
django-admin startproject projectName
在创建的项目下有:__init__.py, manage.py, settings.py, urls.py
下面主要看看manage.py 的用途:
manage.py 提供一些简单的管理功能,有:
1) 创建应用
./manage.py startapp appName
2) 验证models.py 书写是否正确
./manage.py validate
3) 根据models.py打印用于创建表的sql 语句
./manage.py sqlall dbName
4) 根据models.py创建表
./manage.py syncdb
5) ./manage.py shell 类似于 执行 python
6) ./manager.py dbshell 类似于 mysql -u username -p (其中username 是
settings.py 中设置的)
调用Django 日期控件
<script type="text/javascript" src="/media/js/core.js"></script>
<script type="text/javascript" src="/media/js/calendar.js"></script>
<script type="text/javascript"
src="/media/js/admin/DateTimeShortcuts.js"></script>
<input name="date" value="{%now "Y-m-d"%}" class="vDateField" type="text"
id="query_date" size="10" />
Dec 3, 2008
校内网 相册 批量 下载
python 练手
环境ubuntu 8.04
windows 用户应该会产生乱码,可以自己在程序中几个关键位置加上
.decode('UTF-8').encode('GBK')
功能:
1. 下载校内指定用户的全部相册
2. 下载指定用户的某一个指定相册
============== 很傻,很天真的分割线 ================
代码:
http://ox0spy.googlepages.com/xiaonei.py
Dec 2, 2008
苏格拉底与失恋者的对话
苏格拉底:"哦,这很正常。如果失恋了没有悲伤,恋爱大概也就没有什么味道
了。可是,年轻人,我怎么发现你对失恋的投入甚至比你对恋爱的投入还要倾心呢?"
失恋者:"到手的葡萄给丢了,这份遗憾,这份失落,您非个中人,怎知其中的酸
楚啊。"
苏格拉底:"丢了就丢了,何不继续向前走去,鲜美的葡萄还有很多。"
失恋者:"我要等到海枯石烂,直到她回心转意向我走来。"
苏格拉底:"但这一天也许永远不会到来。"
失恋者:"那我就用自杀来表示我的诚心。"
苏格拉底:"如果这样,你不但失去了你的恋人,同时还失去了你自己,你会蒙受
双倍的损失。"
失恋者:"您说我该怎么办?我真的很爱她。"
苏格拉底:"真的很爱她?那你当然希望你所爱的人幸福?"
失恋者:"那是自然。"
苏格拉底:"如果她认为离开你是一种幸福呢?"
失恋者:"不会的!她曾经跟我说,只有跟我在一起的时候,她才感到幸福!"
苏格拉底:"那是曾经,是过去,可她现在并不这么认为。"
失恋者:"这就是说,她一直在骗我?"
苏格拉底:"不,她一直对你很忠诚的了。当她爱你的时候,她和你在一起,现在
她不爱你,她就离去了,世界上再也没有比这更大的忠诚。如果她不再爱你,却要
装着对你很有感情,甚至跟你结婚、生子,那才是真正的欺骗呢。"
失恋者:"可是,她现在不爱我了,我却还苦苦地爱着她,这是多么不公平啊!"
苏格拉底:"的确不公平,我是说你对所爱的那个人不公平。本来,爱她是你的权
利,但爱不爱你则是她的权利,而你想在自己行使权利的时候剥夺别人行使权利的
自由,这是何等的不公平!"
失恋者:"依您的说法,这一切倒成了我的错?"
苏格拉底:"是的,从一开始你就犯错。如果你能给她带来幸福,她是不会从你的
生活中离开的,要知道,没有人会逃避幸福。"
失恋者:"可她连机会都不给我,您说可恶不可恶?"
苏格拉底:"当然可恶。好在你现在已经摆脱了这个可恶的人,你应该感到高兴,
孩子。"
失恋者:"高兴?怎么可能呢,不过怎么说,我是被人给抛弃了。"
苏格拉底:"时间会抚平你心灵的创伤。"
失恋者:"但愿我也有这一天,可我第一步应该从哪里做起呢?"
苏格拉底:"去感谢那个抛弃你的人,为她祝福。"
失恋者:"为什么?"
苏格拉底:"因为她给了你忠诚,给了你寻找幸福的新的机会。"
说完,苏格拉走了。
----------
*祝你幸福*
----------
2008 11 29
给家里打个电话,我妈一接电话就说你是不是病了
然后和我妹聊了很久
2008 11 30
找了点做老师的感觉
(王亮, 温锴) 宁大 10:30
2008 12 1
勾起宋泽的伤心事,内疚啊,还好早上说不辞职了
给Yang打电话,好像手机没在身边
给水水打,他愣要我再给xx打个电话
贺伟也是,聊了n久,后来说俺一根经,后来和朋友继续喝酒
(王亮, 杜娜, 毛毛, 茄哥, 唐莉) 紫园 良田路 0:30