先记录一个无意在官网看到的有用的知识,不过没有测试,官网介绍很清楚。
先写地址:https://docs.djangoproject.com/en/1.4/ref/forms/widgets/#selectdatewidget
前面记录文章《django 前端时间控件移植记录》是将后台的功能移植到前台,现在可以直接创建SelectDateWidget forms进行设计了。
具体的效果我也没有试过,先记录。
说正题:
先上官网链接:https://docs.djangoproject.com/en/1.4/ref/forms/api/#django.forms.Form.initial
f = ContactForm(initial={'subject': 'Hi there!'})
后面再补充初始化form数据的代码。
Read more...
Archive for 算法-编程
小工具文档加密工具
方便自己手机记录,而且不需要导出到电脑保存,直接存到sae上了。主要记录自己的很多很突然的想法,用的sae的kvdb顺便参加了sae的活动,能拿1000个豆子。
文档的加密算法是自己写的,主要通过密码的长度和字符,密码又经过md5加密了。虽然没有达到自己预想的样子,
地址:http://0x55aatools.sinaapp.com/text/
还是用的django和twitter bootstrap ,写小工具很快。
python sae的KVDB不支持pkrget 按key前缀查找,只好自己遍历了所有文档进行后台文档的管理,url就是进行了简单的md5加密,这个写的时候应该加大难度。
Read more...
python threading模块学习join()
看了oschina上的两个代码,受益匪浅。其中对join()方法不理解,看python官网文档的介绍:
join([timeout]):等待直到进程结束。这将阻塞正在调用的线程,直到被调用join()方法的线程结束。(好难翻译,应该是这个意思)
哈哈,这个易懂。
join方法,如果一个线程或者一个函数在执行过程中要调用另外一个线程,并且待到其完成以后才能接着执行,那么在调用这个线程时可以使用被调用线程的join方法。
Read more...
#-*- encoding: gb2312 -*-
import string, threading, time
def thread_main(a):
global count, mutex
# 获得线程名
threadname = threading.currentThread().getName()
for x in xrange(0, int(a)):
# 取得锁
mutex.acquire()
count = count + 1
# 释放锁
mutex.release()
print threadname, x, count
time.sleep(1)
def main(num):
global count, mutex
threads = []
count = 1
# 创建一个锁
mutex = threading.Lock()
# 先创建线程对象
for x in xrange(0, num):
threads.append(threading.Thread(target=thread_main, args=(10,)))
# 启动所有线程
for t in threads:
t.start()
# 主线程中等待所有子线程退出
for t in threads:
t.join()
if __name__ == '__main__':
num = 4
# 创建4个线程
main(4)
###################################################################
#-*- encoding: gb2312 -*-
import threading
import time
class Test(threading.Thread):
def __init__(self, num):
threading.Thread.__init__(self)
self._run_num = num
def run(self):
global count, mutex
threadname = threading.currentThread().getName()
for x in xrange(0, int(self._run_num)):
mutex.acquire()
count = count + 1
mutex.release()
print threadname, x, count
time.sleep(1)
if __name__ == '__main__':
global count, mutex
threads = []
num = 4
count = 1
# 创建锁
mutex = threading.Lock()
# 创建线程对象
for x in xrange(0, num):
threads.append(Test(10))
# 启动线程
for t in threads:
t.start()
# 等待子线程结束
for t in threads:
t.join()
在程序中,最后join()方法的调用就明白了,是主进程挨个调用子线程的join()方法。当四个线程都执行完毕后,主线程才会执行下面的代码,在这里也就是退出了。
相对应的在网上一起找到的另一个方法:
3.守护进程
setDaemon()
这个方法基本和join是相反的。当我们在程序运行中,执行一个主线程,如果主线程又创建一个子线程,主线程和子线程就分兵两路,分别运行,那么当主线程完成想退出时,会检验子线程是否完成。如果子线程未完成,则主线程会等待子线程完成后再退出。但是有时候我们需要的是,只要主线程完成了,不管子线程是否完成,都要和主线程一起退出,这时就可以用setDaemon方法啦
Python base64模块
开始看了一大堆的base64的资料,准备用python写代码的时候发现,这么简单,根本不需要知道算法。。。。
用了python会不会越来越懒。T_T
base64模块真正用的上的方法只有8个,分别是encode, decode, encodestring, decodestring, b64encode,b64decode, urlsafe_b64decode,urlsafe_b64encode。
他们8个可以两两分为4组,encode,decode一组,专门用来编码和 解码文件的,也可以对StringIO里的数据做编解码;
encodestring,decodestring一组,专门用来编码和解码字符串;
b64encode和b64decode一组,用来编码和解码字符串,并且有一个替换符号字符的功能。这个功能是这样的:因为base64编码后的字符除 了英文字母和数字外还有三个字符 + / =, 其中=只是为了补全编码后的字符数为4的整数,而+和/在一些情况下需要被替换的,b64encode和b64decode正是提供了这样的功能。至于什 么情况下+和/需要被替换,最常见的就是对url进行base64编码的时候。urlsafe_b64encode和urlsafe_b64decode 一组,这个就是用来专门对url进行base64编解码的,实际上也是调用的前一组函数。
Read more...
>>> base64.urlsafe_b64encode('13\'')
'MTMn'
>>> base64.urlsafe_b64encode('13')
'MTM='
>>> base64.urlsafe_b64decode('MTMn')
"13'"
USACO Training--Friday the Thirteenth学习笔记
解决问题的方法真的有好多种,有的可以用很少的代码实现,好佩服。
自己写的代码:
Read more...
/*
ID:
LANG:C
TASK:friday
*/
#include
int main()
{
int i,j,n,a[7]={0},t;//t
FILE *fin=fopen("friday.in","r");
FILE *fout=fopen("friday.out","w");
fscanf(fin,"%d",&n);
for(i=0;i
看到蔡勒公式,感觉有意思 记录一下,说不定会用到
蔡勒公式是一种计算任何一日属一星期中哪一日的算法,由蔡勒(Julius Christian Johannes Zeller)推算出。
公式都是基于公历的置闰规则来考虑。
公式中的符号含义如下:
w:星期
c:世纪(前两位数)
y:年(后两位数)
m:月(m 的取值范围为 3 至 14,即在蔡勒公式中,某年的 1、2月要看作上一年的 13、14月来计算,比如2003年1月1日要看作2002年的13月1日来计算)
d:日
[ ]:称作高斯符号,代表取整,即只要整数部份。
mod:同余(这里代表括号里的答案除以 7 后的余数)(请注意前面是负数取模的情况,取模只可以是正数)
若要计算的日期是在1582年10月4日或之前,公式则为
(因罗马教皇修改历法,把1582年10月4日的下一天改为1582年10月15日)
USACO Training--Greedy Gift Givers学习笔记
今天做完百度acm的题,群里几个人在讨论各个学校的acm队伍、学习等。说到一起做USACO Training上的题目。我遍开始做了,以为这个网站是训练,是一个循序渐进的过程。做到Greedy Gift Givers这个题目,学到很多东西,记录一下。
这个题目很简单,不需要神马高深的算法,主要学到许多c语言的用法,先上我自己写的代码。
Read more...
/*
ID:
LANG:C
TASK:gift1
*/
#include
struct gift
{
char name[15];
int get;
int give;
}g[10];
int main()
{FILE *fin=fopen("gift1.in","r");
FILE *fout=fopen("gift1.out","w");
int i,np;
fscanf(fin,"%d",&np);
for(i=0;i
这里学到的几点:
结构体里的get和give可以只用一个最后结果表示就行。
我自己写的查找字符串的操作遍历了结构图数组所有元素,可以直接break退出循环,看别人写的代码用while很好,记录下。
j=0;
while(strcmp(a[j],b)) j++;
ubuntu卸载django1.3.1安装django1.4
官网资料:https://docs.djangoproject.com/en/dev/topics/install/#installing-development-version
1、找到django安装目录,官网提供的方法:python -c "import sys; sys.path = sys.path[1:]; import django; print(django.__path__)"
当然可以在终端 进入python,寻找。
2、直接删除目录下的django文件夹。
3、安装django1.4新版本。按照官网方法就ok。
开始找的site-packages目录,发现是空的,后来才知道,改成dist-packages。从django官网下载文件速度慢死,第一次下载没下载完就结束了,安装没成功。
Read more...
操作系统课程设计--短作业优先作业调度
今天把操作系统作业做完了,本来以为很简单的一个程序几十行就写完了。没想到写了有二百行,各种添加变量,各种添加if,各种添加for,直接晕菜了。
写得很乱,说不定明天就忘记写得神马意思了。先贴出来,等上机的时候在优化一下。<操作系统课程设计--短作业优先作业调度>
code:
Read more...
#include
#include
#include
#define MAXNUM 5
#define MAXTIME 20
struct sjf
{
char name[8];
int arrivetime;
int servicetime;
int runtime;
int is_over;//是否运行完
int starttime;
int finishtime;
int turnaroundtime;
float rightturnaroundtime;
}p[MAXNUM];
static int j=0,k=0,l=0;//j当前正在执行的进程 k当前时间已经到达的最大进程 l是否没有进程运行
//读取进程数据
void readProcess()
{
int i;
char str[200];
FILE *fp;
char *token;
if ((fp=fopen("Process","rt"))==NULL)
{
printf("读取文件失败!\n");
getchar();
exit(1);
}
printf("|--------------------------------------|\n");
printf("|--进程名称--|--到达时间--|--服务时间--|\n");
for (i=0;i
做了几个百度之星比赛的acm题目
做了白天一整天,就做出了7个题,下午就做出两个。一起做过几个acm的题目,太难了,半天做不出一个,就没兴趣继续做了。这次百度的题目有几个很简单,就做了几个,其中有群里说的思路,还有从网上找到的算法做的。准备将学到的知识总结一下。
今天上网看了一下,各个题目的最好代码占用的内存和代码长度,都好牛比的说。实在是不知道他们是怎么写出来的。
ABCD题是几个公式就搞定了。
E:C++ 与Java
这个题目也比较简单,就是开始的时候,题目上说“长度不超过100”,然后就定义了一个长度为一百的字符串变量,结果当为C++的时候,添加“_”后就会越界了,直接就“Runtime Error”。
G:聊天就是Repeat
这个题用到了一个scanf的格式化,以前没用过但是却知道,开始不知道行不行,试了下成功了。
Read more...
scanf("%[^EOF]",s);
J:百度的新大厦
这个题是先看到群里说了以后才坐的,没怎么思考。
Python多线程学习
找到几个零碎的学习资料:
http://www.cnblogs.com/holbrook/tag/python/
http://www.cnblogs.com/tqsummer/archive/2011/01/25/1944771.html
http://www.cnblogs.com/twelfthing/articles/2095502.html
Python实现多线程下载学习代码
http://www.oschina.net/code/snippet_70229_2407
官网文档:
http://docs.python.org/library/thread.html
http://docs.python.org/library/threading.html
Read more...