可可熊D窝

Keep it simple, stupid


  • 首页

  • 关于

  • 标签182

  • 分类8

  • 归档359

  • 搜索

wxPython写的一计算器

发表 2008-08-21 | 分类 编程相关 | 评论数:
| 字数: 574 | 阅读 ≈ 1 分钟

wxPython写了个计算器,练习wxPython界面布局,功能很强大,支持无限数位的运算,呵呵:-)
wxPython写界面挺顺手的,另外推荐一个不错的wxPython的教程:
http://www.zetcode.com/wxpython

CoCal ](https://asset-1258390188.cos.ap-shanghai.myqcloud.com/cocal.png "cocal")

代码下载

Comments

luguo: 哎,俺一直不怎么喜欢图形界面的编程~~

Amankwah: 楼上,我现在就专整图形界面编程~~汗~

cocobear: win下也能用;一个跨平台的GUI库。Linux下使用GTK实现,WIN下似乎是使用MFC实现。

草儿: 楼上的楼上,相对来说俺们还是用图形界面比较顺手。汗……

crazyfranc: 呵呵,wxpython?莫非是win下的? 改天玩玩。

sk: 我前段时间也在学python,不过wxpython没配成功,apt-get不行,在官网下的包,装了以后不成功,指点一下啊

cocobear: 我用的是fedora,自己yum安装就行了。按官方的做法再仔细做一下,看下是什么错误。

ld: 在windows试了一下,点击数字时会报错,弹出一个对话框,标题是stdout/stderr 内容是[‘’, ‘’]

cocobear: 把PRINT语句注释掉吧 还有别的办法不记得了

ld: 看错了,怎么把那个stdout/stderr 的框去了呢,谢谢

shell脚本解题6

发表 2008-08-19 | 分类 编程相关 | 评论数:
| 字数: 1.7k | 阅读 ≈ 2 分钟

问题:
执行命令前暂时回home目录,执行后跳回来

解法:
1.

(cd ~; ls; )
使用子shell的方式去执行命令;

把这行
gs.AddMany( [b_cls,b_bck,t_blank,b_close,b_7,b_8,b_9,b_div,b_4,b_5,b_6,b_mul,b_1,b_2,b_3,b_minus,b_0,b_dot,b_equal,b_plus, ])
进行替换,每一个元素替换为类似(b_cls,0,EXPAND)这样

解法1.

s ed ‘s/[b|t][^,]*,/(&0,EXPAND)/g’
如果使用
‘s/[b|t]
.?,/(&0,EXPAND)/g’则不能得出正确的结果,因为sed不支持.?这样的非贪婪匹配;解法中使用[^,]避免了贪婪匹配。

有如下内容,想要获取 8B E5 55 这些内容:
[cocobear@cocobear ~]$ cat file.txt
00401038 8B E5 mov esp,ebp
0040103A 55 push ebp
0040103B 8B EC mov ebp,esp
0040103D 33 FF xor edi,edi
0040103F 57 push edi
004010A9 FF D0 call eax
004010AB 83 C4 03 add esp,3

解法1:
sed ‘s/[^ ] ([0-9A-Z ]+)./\1/‘ file.txt
解法2:
awk -F’ ‘ ‘ {print $1}’ file.txt | awk ‘{print $2,$3,$4,$5}’

再看一正则表达式str=”uid=100(guest) gid=100(others) groups=10(users),11(floppy)”

输出guest:echo $str|sed ‘s/[^(](([^)])).*/\1/‘
输出各括号里的:echo $str | awk -F’[()]’ ‘{print $2” “$4” “$6” “$8}’

BTW:最近在使用delicious时发现添加在Opera工具栏中的“Bookmark on Delicious”挺方便:delicious,看了下这个工具栏按钮的属性,发现其实就是一段JS代码,就修改了一下做了个google当前网站的小工具:

javascript:(function(){s=window.location.href.split("//")[1].split("/")[0];f='http://www.google.com/search?hf=en&newwindow=1&q=+'+encodeURIComponent('site://'+s);a=function(){if(!window.open(f,'deliciousuiv5','location=yes,links=no,scrollbars=no,toolbar=no'))location.href=f+'jump=yes'};if(/Firefox/.test(navigator.userAgent)){setTimeout(a,0)}else{a()}})()

Comments

luguo: cd后面什么都没有就是回到用户目录,无须”~”。

Amankwah: 嗯,我喜欢直接在命令行bash,哈哈~

导出百度搜藏cang2html

发表 2008-08-18 | 分类 编程相关 | 评论数:
| 字数: 5.8k | 阅读 ≈ 5 分钟

百度搜藏有不少问题,其中一个就是不能导出。

因为电脑丢了以前浏览器里的书签都没了,不过在百度测试搜藏的时候我用自己浏览器里的书签试过,刚好里面还有旧一点的书签,今天突然想起这事打算把把书签导出来,没想到竟然没有这个功能,今天没什么事就自己写了个工具,可以导出百度的搜藏,只需要手动确定用户名,程序里可以指定导出时使用的标签,因为没有登录,所以需要先把你所有的书签设置为公开:

[cocobear@cocobear cang]$ cat cang.py 
[cocobear@cocobear cang]$ cat cang.py 
#!/usr/bin/env python
#encoding=utf-8
#Using GPL v2
#Author: cocobear.cn@gmail.com

import urllib2,urllib,cookielib,httplib
import sys,re
import gzip,StringIO

user    = "cocobear_cn"         #user whose bookmarks you want get
tag     = "from cang2html"      #tag that you want to mark
id      = 0
def cang2html(name,url,description):
    global user
    file_name = user+".html"
    f = open(file_name,"a")
    f.write("\t<dt>["+name+"](\)\n")
    if description:
        f.write("\t<dd>"+description+"</dd>\n")
    f.close()

def cang2adr(name,url,description):
    global user,id
    file_name = user+".adr"
    f = open(file_name,"a")
    f.write("#URL\n")
    f.write("\tID="+str(id)+"\n")
    f.write("NAME="+name+"\n\t"+"URL="+url+"\n")
    if description:
        f.write("\tDESCRIPTION="+description+"\n")
    f.close()
    id+=1

def process_data(data):

    result = re.findall("((?:http|ftp|https|file)://.*)\" target.*lnk\d+\">(.+?).*dc\d+\">(.*?)",data)
    #print len(result)
    for url,name,description in result:
        #print name,url,description
        cang2html(name,url,description)
        cang2adr(name,url,description)

def get_data(user,opener,page):
    url = "http://cang.baidu.com/"+user+"/page/"+str(page)
    gziped_data = opener.open(url).read()
    gziped_stream = StringIO.StringIO(gziped_data)
    data = gzip.GzipFile(fileobj=gziped_stream).read()
    return data.decode('gbk').encode('utf-8')

def init():
    httplib.HTTPConnection.debuglevel  =  1 
    cookie = cookielib.CookieJar()
    opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))

    exheaders = [("User-Agent","Opera/9.27 (X11; Linux x86_64; U; en)"),("Connection","Keep-Alive"),("Referer","http://cang.baidu.com"),("Accept","text/html, application/xml;q=0.9, application/xhtml+xml, */*;q=0.1"),("Accept-Charset","iso-8859-1, utf-8, utf-16, *;q=0.1"),("Cookie2","$Version=1"),("Accept-Encoding","deflate, gzip, x-gzip, identity, *;q=0"),]

    opener.addheaders = exheaders
    urllib2.install_opener(opener)
    return opener

def create_adr_file(name):
    global tag,id

    f = open(name,"w")
    f.write("""Opera Hotlist version 2.0
Options: encoding = utf8, version=3
""")
    f.write("#FOLDER\n")
    f.write("\tID="+str(id)+"\n")
    id+=1
    f.write("\tNAME="+tag+"\n")
    f.close()

def create_html_file(name):
    global tag

    f = open(name,"w")
    f.write("""< !DOCTYPE NETSCAPE-Bookmark-file-1>
<meta HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8">
<!--This is an automatically generated file.
It will be read and overwritten.
Code write by cocobear with Python
Edit the file carefully!-->
<title>Generated by cang2html</title>
""")
    f.write("

# "+tag+"
\n")
    f.write("<dl>

\n")
    f.close()

def end_html_file(name):

    f = open(name,"a")
    f.write("
</dl>

\n")
    f.close()

def main(argv=None):
    global user,tag

    opener=init()
    data = get_data(user,opener,1)
    match = re.search("(共(\d+)条)",data)
    if match:
        total = int(match.group(1))
    else:
        print "User has no bookmars!"
        return 1
    print "Total %d bookmarks" % total
    print "Start getting ......"

    create_html_file(user+".html")
    create_adr_file(user+".adr")

    process_data(data)
    if total % 10 != 0:
        for i in range(1,10):
            if (total+i) % 10 == 0:
                total+=i
    total/=10

    for i in range(2,total+1):
        data = get_data(user,opener,i)
        #print "process %d" % i
        process_data(data)

    end_html_file(user+".html")
    #end_adr_file(user+".adr")

    print "Success!\nLook %s.html for your bookmarks" % user
    print "Success!\nLook %s.adr for your bookmarks" % user

if __name__ == "__main__":
    sys.exit(main())

该程序可以把百度搜藏导出为Opera使用的adr格式书签,以及html格式的书签,可以方便导入Opera浏览器,以及delicious(de.licio.us)等网上书签。

代码下载
?: 运算符表示“查找子模式的匹配字符串,但不包括反向引用中的匹配结果”
.是贪婪匹配
.
?非贪婪匹配

Comments

草儿: 好长。不过我收藏夹都是存在MP3随身携带的。

luguo: 恩,俺不用百度,因为这里没人知道百度这个东西。。。

Amankwah: ………… 我只依赖我的电脑~

youKnowMe: 博主我也需要一个windows下的,能给我一个吗?谢谢

我qq495979774: 想请教一下你写的代码如何导出百度搜藏呀

cocobear: 回楼上的,Python的很简单的,装个Python的解释器,然后在命令行下: python cang.py 就可以了,php好久没写了,

frankl: 兄弟能不能写个PHP的,Python不知道怎么用.

huan~!: 啊~LZ大大不会用呀~~!你能给俺编译个Windows下用的不?发到我的邮箱吧~!小弟万分感谢!

可可熊: http://www.box.net/shared/v73oa9s1tc 有点大,2M。

可可熊: 楼上的朋友可以留个联系方式,我可以帮你编译个Windows下的。

234: 大人……我很想导出我的搜藏,但是由于电脑小白,于是即使看到你的文章也不知道这个工具应该怎么使用Orz 还请大人闲暇之余具体相授啊!

可可熊: 你上面已经回答过了,很简单的,自己试一下。

可可熊: 回楼上的QQ俺不用,gtalk就是我的邮箱地址。

o仔: 这个windows版的下载不了。进入不了网址。。。 博主能否抽点时间发份到我的邮箱啊?

bymbym22: 先谢谢一下您把它弄成了WINDOWS下的程序。 我下载用了一下,就是有一个遗憾,百度搜藏里所有的链接都导出了,分类名不能导出。比如:我有六百多条搜藏,分成20个分类,这20个分类名称没有导出,而且导出后的HTML文件也没有分类,那么这样我就得重新进行20个分类才能用的。 不知道是不是我使用上的问题? 如果不是,博主您能否把这个功能完善一下,好事做到底,谢谢。 我的邮箱是:bymbym22@sina.com

可可熊: 分类我确实没有导出 因为我用的时候就没做分类:-) 我抽空会看一下。

第十个黎明: 感谢^^!~

处理了下网站

发表 2008-08-15 | 分类 Linux | 评论数:
| 字数: 881 | 阅读 ≈ 1 分钟

改了info域名后网站以前里很多页面里有cocobear.cn,连一些图片也显示不出来,今天就处理了一下:

把网站里一些文件做替换,先备份一下:
grep cocobear.cn ./cocobear.github.io/ -R -l –binary-files=without-match|xargs -i cp –parents {} bk/

然后全部替换:
grep cocobear.cn ./cocobear.github.io/ -R -l –binary-files=without-match | xargs sed -i ‘s/cocobear.cn[^@]/cocobear.info/g’

剩下就是数据库里的内容了,主要是wp_posts表中的post_content字段,还有guid字段,还有wp_comments中的comment_author_url,wp_postmeta中的meta_value;
操作的命令是:
mysql> update wp_posts set post_content=replace(post_content,”http://www.cocobear.cn","http://cocobear.github.io");

当然在进行数据库操作时一定要记得先备份一下:
mysqldump -h mysql.1g50.cn -u cocobear -p cocobear > 0808151.sql

使用 mysqldump -h mysql.1g50.cn -u cocobear -p cocobear < 0808151.sql恢复似乎不太好,还是进mysql里使用source ~/0808151.sql进行恢复。

Comments

Amankwah: 呵呵

luguo: 看来dp比老大更适合走网管路线阿~~

crazyfranc: pig还是当网管吧

cocobear: 晕………………………… 我还没把和小孔同学弄的转移网站的东西贴出来,那更“网管”!

crontab使用[转载]

发表 2008-08-14 | 分类 Linux | 评论数:
| 字数: 1.9k | 阅读 ≈ 2 分钟

名称 : crontab
使用权限 : 所有使用者
使用方式 :
crontab file [-u user]-用指定的文件替代目前的crontab。
crontab-[-u user]-用标准输入替代目前的crontab.
crontab-1[user]-列出用户目前的crontab.
crontab-e[user]-编辑用户目前的crontab.
crontab-d[user]-删除用户目前的crontab.
crontab-c dir- 指定crontab的目录。
crontab文件的格式:M H D m d cmd.

M: 分钟(0-59)。
H:小时(0-23)。
D:天(1-31)。
m: 月(1-12)。
d: 一星期内的天(0~6,0为星期天)。
cmd要运行的程序,程序被送入sh执行,这个shell只有USER,HOME,SHELL这三个环境变量
说明 :
crontab 是用来让使用者在固定时间或固定间隔执行程序之用,换句话说,也就是类似使用者的时程表。-u user 是指设定指定 user 的时程表,这个前提是你必须要有其权限(比如说是 root)才能够指定他人的时程表。如果不使用 -u user 的话,就是表示设定自己的时程表。

参数 :
crontab -e : 执行文字编辑器来设定时程表,内定的文字编辑器是 VI,如果你想用别的文字编辑器,则请先设定 VISUAL 环境变数来指定使用那个文字编辑器(比如说 setenv VISUAL joe)
crontab -r : 删除目前的时程表
crontab -l : 列出目前的时程表
crontab file [-u user]-用指定的文件替代目前的crontab。
时程表的格式如下 :
f1 f2 f3 f4 f5 program
其中 f1 是表示分钟,f2 表示小时,f3 表示一个月份中的第几日,f4 表示月份,f5 表示一个星期中的第几天。program 表示要执行的程序。
当 f1 为 时表示每分钟都要执行 program,f2 为 时表示每小时都要执行程序,其馀类推
当 f1 为 a-b 时表示从第 a 分钟到第 b 分钟这段时间内要执行,f2 为 a-b 时表示从第 a 到第 b 小时都要执行,其馀类推
当 f1 为 /n 时表示每 n 分钟个时间间隔执行一次,f2 为 /n 表示每 n 小时个时间间隔执行一次,其馀类推
当 f1 为 a, b, c,… 时表示第 a, b, c,… 分钟要执行,f2 为 a, b, c,… 时表示第 a, b, c…个小时要执行,其馀类推
使用者也可以将所有的设定先存放在档案 file 中,用 crontab file 的方式来设定时程表。

例子 :

#每天早上7点执行一次 /bin/ls :
0 7 /bin/ls
在 12 月内, 每天的早上 6 点到 12 点中,每隔3个小时执行一次 /usr/bin/backup :
0 6-12/3
12 /usr/bin/backup
周一到周五每天下午 5:00 寄一封信给 alex@domain.name :
0 17
1-5 mail -s “hi” alex@domain.name < /tmp/maildata
每月每天的午夜 0 点 20 分, 2 点 20 分, 4 点 20 分….执行 echo “haha”
20 0-23/2
echo “haha”
注意 :
当程序在你所指定的时间执行后,系统会寄一封信给你,显示该程序执行的内容,若是你不希望收到这样的信,请在每一行空一格之后加上 > /dev/null 2>&1 即可

例子2 :

#每天早上6点10分
10 6 * date

#每两个小时
0 /2 date

#晚上11点到早上8点之间每两个小时,早上8点
0 23-7/2,8 * date

#每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点
0 11 4 * mon-wed date

#1月份日早上4点
0 4 1 jan * date
范例
$crontab -l 列出用户目前的crontab.

来自:http://h1yn.itpub.net/post/2084/222108

Comments

luguo: 哎,连dp都开始转载了。。。

Amankwah: 哈哈~顶楼上~

anoum: ubuntu 10下面 丢给crontab 一个任务 是python的脚本,换壁纸,可是没有定时执行。 能给个实例不?

1…212223…72
cocobear

cocobear

爱折腾的技术宅一枚

359 日志
8 分类
182 标签
RSS
GitHub E-Mail Twitter 豆瓣
友情链接
  • 王聪
  • 老大
0%
© 2007 – 2020 cocobear | 521k | 7:54
由 Hexo 强力驱动 v3.9.0
|
主题 – NexT.Gemini v6.7.0
Hosted by GitHub Pages