August 17th, 2009

用python来发gmail的邮件

3 Comments, python, by zay,

网上看过不少类似的脚本,这个是我自己修改来给自己用的,支持发附件

用法:gmail.py gmail.rar


#!/usr/bin/env python

import os, sys, email, smtplib, hashlib

SMTP_HOST = ’smtp.gmail.com’

SMTP_PORT = 587

#set by yourself

SMTP_USER = ‘from@gmail.com’

TO_ADDR = ‘to@gmail.com’

def main():

if len(sys.argv) == 1:

print ‘please specify files to submit’

sys.exit(1)

filelist = sys.argv[1:]

total = len(filelist)

progress = 0

for filename in filelist:

progress += 1

data = open(filename, ‘rb’).read()

sha1 = hashlib.sha1(data).hexdigest()

base = os.path.basename(filename)

print ‘%d of %d: %s (%s)’ % (progress, total, base, sha1)

msg = email.MIMEMultipart.MIMEMultipart()

msg['From'] = SMTP_USER

msg['To'] = TO_ADDR

msg['Date'] = email.Utils.formatdate()

msg['Subject'] = subject

part = email.MIMEBase.MIMEBase(’application’, ‘octet-stream’)

part.set_payload(data)

email.Encoders.encode_base64(part)

part.add_header(’Content-Disposition’, ‘attachment; filename=”%s”‘ % base)

msg.attach(part)

smtp = smtplib.SMTP(host=SMTP_HOST, port=SMTP_PORT)

if SMTP_USER and SMTP_PASS:

smtp.starttls()

smtp.login(SMTP_USER, SMTP_PASS)

smtp.sendmail(SMTP_USER, TO_ADDR, msg.as_string())

smtp.close()

if __name__ == ‘__main__’:

SMTP_PASS=raw_input(”password:\n”)

subject=raw_input(”subject:\n”)

main()

August 13th, 2009

把gapp和tohr修改了一番

No Comments, python, by zay,

主要针对客户端的proxy.py给修改了,把我之前自己修改的和solrex添加的加密功能给和在一起,主要针对tohr并不支持没安装openssl的用户。tohr的主要特色是在服务端那里支持了php,只要你的服务器支持php并且限制不大的话都可以自由的使用,听solrex同学说日后功能将支持更多种语言asp估计也会很快放出来的,大家多多留意就好了。

使用也有点不同如果该软件有幸被你们使用的话进入这个网站有说明的

http://code.google.com/p/zaysky/

放出源代码:

http://zaysky.googlecode.com/files/gapp%20tweak.rar

August 7th, 2009

推荐一部电视剧

1 Comment, 推荐, by zay,

梦幻情侣:韩剧

http://www.youku.com/playlist_show/id_3439949.html

播放电台:MBC

主演:韩艺瑟,吴志浩

理由:这部戏如果稍微了解的话这部戏其实是跟美国的一部老电影的情节很相似,本人喜欢这部片子完全是冲着韩艺瑟的一个mv去看的,一个几分钟的mv制作得相当温馨,于是乎就去看了这部电视剧,据所周知韩艺瑟是个相当全面的艺人演绎主持唱歌跳舞模特样样皆行,这部电视剧可以说完全是为韩艺瑟量身制作的,美国的出生让她相当的适合这部电视剧,出色的表演让她几乎垄断了当年MBC年度电视颁奖的所有奖项.

喜欢这部剧的原因无外乎是一部爱情喜剧,集数也就16集而已因此看得不累人,剧中的轻松搞笑和温馨是相当的吸引人.因此完全不会像那些哭哭啼啼拖拖拉拉的韩剧那样,或许就是这个原因当年获得了超高的人气,加上剧情不拖拉,另外一个重要的原因当然是男女主人公的表演确实异常精彩,所以那年获得了最佳情侣奖.

心情不好的同学不妨有空看下这部电视剧,这样一部韩剧或许能在你低沉的时候添加些开心的因子.

  • 今天是相当的火,不知道是否程序员的脾气在作怪,我讨厌别人把我当成一个懂得修电脑的人,我讨厌无偿帮人修电脑即使收费的话也是日后的工作后的事情,即使是现在身边的人要求我帮他们弄,我首要前提就是拒绝他们任何的糖衣炮弹的攻击,修好弄好就走人。
  • 如果是认识很好的朋友,如果情况不麻烦例如晚上不用太晚出门,你我的距离不远,可以远程的话最好,这样的话我都会尽量帮你。但是一些根本不是很熟的,知道我是学计算机专业的,电脑一故障就让我去弄,还说什么请吃宵夜的话,我就不知道哪里来的怒气,我宁愿失去这样的朋友也不愿意帮她(女性居多)弄。
  • 因为我是个程序员,兴趣是在程序开发,新技术知识,一些有兴趣的hack而不是专门帮人安装些程序和系统,说实在这东西太他妈的初级了。想起刚进大学的时候,身边的同学好喜欢炫耀自己是学计算机专业的用这个来认识些师妹之类的,后果就是一天到晚帮人修电脑,最他妈操蛋的是一天到晚只懂得用什么ghost安装,遇到问题就马上来个电话,真是受不鸟啦!
  • 之所以发这样的牢骚,就是因为今天有个朋友吵着要我帮她安装一个虚拟软件,还要我搭30多分钟的公交车去她那个城区,一堆飞信轰炸过来(一开始没回她),然后火都大了于是乎写下这篇文章警惕自己。
  • 这样的事情在我这3年的大学生活遇到的太多了,我的舍友在睡觉的时候被人打电话过来吵着要帮忙修电脑,我那时候老是在咒骂我们专业的某些人,你们都成了修电脑工了,就是因为某些人导致学校的人都认为一个医学院校学计算机专业(这是更可悲的事情)的就懂得修电脑。
  • 导致现在我去认识人,如果没问别的我都会说我只是个懂得写点代码的学生,特意把修电脑的技术工划清楚。我不知道是我个人的原因还是怎么样,说实在重装一个电脑花的时间实在太多了并且老是重复来重复去,一点问题就来找你,他妈的就因为朋友而且还得无条件帮你修。如果是朋友的话电脑有问题帮你是可以,但是也得有个度,我现在觉得其实很多问题只要你试下我再指导下都可以很好的解决的,例如我一个朋友大学才使用电脑–小猪头,我只是简单的跟她说下系统安装的步骤和驱动的安装,自己就可以弄好。所以拜托各位学计算机专业的同学,重装Windows或者安装软件不是我们的专利也不是我们应该努力的方向,你们这样的做法的后果是导致很多人不懂得使用电脑和降低他们的计算机水平,我很难理解一个程序员居然到处给人安装Windows和那些日常使用的软件,就连一个杀毒软件还要到处宣传那个好那个差应该怎么用怎么配置,这个应该是那些摸过电脑好几年应该做的!!!

好想提交我写这部分代码,哈哈,运用了设计模式的方法,实现了python代理服务器的分布式request的功能,简直爽死了
现在把思路理清下:
1:首先cgi的程序对于request的请求能力毕竟是有限的,因为对去cgi的程序你想通过修改程序的方式来优化这样是行不通的,开始我也是这样修改简化,后来速度只是提升了一点,测试同时打开多个页面的时候,问题相当严重。
2:经过了今天下午的修改后,发现python的类在运行的时候属性居然是无法修改,这就让我想不通了,于是花了些时间来test,终究还是放弃,method方法体在第一次运行能修改主类的属性后,再次执行的时候居然不行。
3:走到这一步我算是放弃了,但是想起我前段时间写的C#程序,如果一个类是主类的一个属性的话,那么即使主类disposal掉的话,这个类属性是还会停留在内存的
例如:

class a:
pass
class b:
class a temp

以上这种情况当你把b这个主类给disposal后,还是可以通过b.temp来访问类a的内容。
4:于是乎,我想到了通过类的方法来实现服务器地址的变换,说到这里,我就使用了单件模式来实现了。

class Singleton(object):
def __new__(cls, *args, **kw):
if not hasattr(cls, ‘_instance’):
orig = super(Singleton, cls)
cls._instance = orig.__new__(cls, *args, **kw)
return cls._instance

这里可以测试:http://l005062.zseriespenguins.ihost.com:8000/?go=http://www.zaykl.co.cc/

gapp是款很不错的代理软件,但是用过的人都会发现效率并不好因为本地的服务器并发访问很低,如下

Standard CGI: 23 requests/s
Mod_python cgihandler: 385 requests/s
Mod_python publisher: 476 requests/s
Mod_python handler: 1203 requests/s
因为我们也知道运行在gae上的是标准的cgi,速度肯定跟不上,因此在使用gapp的时候图过 GET得太多的话一般都会造成延时,然后导致self.connetion.close(),还有一个相当重要一点,gapp的本地代理服务器是是tiny型的,因此优化的效果并不是很好,但是我自己减少很多无谓的东西加快了proxy的速度和效率,大家不妨把except后面的修改成return,我个人用起来比起以前的效果好了很多,并且添加了adblock的功能。

为了纪念blog解封,特来呐喊几下……

www.wippies.com现在提供免费的Push-to-talk over cellular, for any mobile phones supporting it.也就是手机的按键通话,现在大家赶快注册吧。
开通方法成功注册后进入
第一步:https://my.wippies.com/settings/addServices
点击:
Wippies PoC Push-to-talk over cellular

Placeorder

记得点击Select price option
用户名密码自己添加,最后点击order就成功注册了对讲机帐号

第二步,使用方法:
诺基亚用户进入按键通话,点击设置进入连接设置,服务器域名如下
Server poc.wippies.com
Domain poc.wippies.com
连接方式:只是支持cmnet
用户名密码就是第一步设置的
然后建立一个频道命名随便,然后告诉自己的朋友进入这个频道,或者使用一对一通话(这个没试过),大家就可以实现对讲机的功能了

因为vista权限的问题,害得我配置了好久,这个是个极大深刻的教训,导致我浪费了很多时间,接着就是微软这家伙把sql2005和它的studio是分开来的,因为我实验室用的是sql2000因此管理器和VC#2008是可以同时访问数据库的,居然换成express后完全不一样的,所以大家在用express版本的时候vcs和sql管理器不要同时打开。这样就不会出现C#2008访问不了数据库了!
以上这个教训是我没把文档给看清楚,很后悔,免费没好货这个教训得深深的记得啊……

April 21st, 2009

global name ctypes的报错

No Comments, google, by zay,

在调试GAE的时候当你使用uuid的函数的时候而你python的版本为2.6以上的得把uuid.py的uuid1()以下内容给注释掉就可以解决global name ctypes的报错

   
_buffer = ctypes.create_string_buffer(16)
if _uuid_generate_time and node is clock_seq is None:
 _uuid_generate_time(_buffer)
return UUID(bytes=_buffer.raw)