picasa 全相册下载 二月 8th, 2012
002 #coding = utf-8
003
004 import urllib,urllib2,socket,os,sys,wx,time
005 from HTMLParser import HTMLParser
006 import socks
007 import socket
008 socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, "127.0.0.1", 7070)
009 socket.socket = socks.socksocket
010
011 global num,userid
012 num = 0
013 class getalbumlist(HTMLParser):
014 def __init__(self):
015 HTMLParser.__init__(self)
016 self.flag0 = 0
017 def handle_starttag(self, tag, attrs):
018 if tag == 'iframe' and dict(attrs).has_key('id') and dict(attrs)['id'] == 'lhid_secrethistory':
019 self.flag0 = 1
020 if tag == 'script':
021 self.flag1 = 1
022 def handle_data(self,data):
023 if self.flag0 == 1 and self.flag1 == 1:
024 self.albumlist=data
025 self.flag0 = 0
026 def handle_endtag(self,tag):
027 if tag == 'script':
028 self.flag1 = 0
029 def returnalbumlist(self):
030 return self.albumlist
031 class getimglist(HTMLParser):
032 def __init__(self):
033 HTMLParser.__init__(self)
034 self.flag0 = 0
035 self.value = []
036 def handle_starttag(self, tag, attrs):
037 if tag == 'img' and dict(attrs).has_key('src'):
038 imgurl = dict(attrs)['src']
039 if '/s128/' in imgurl and imgurl.endswith('.jpg') :
040 self.value.append(imgurl.replace('/s128/','/s1600/'))
041 def returnvalue(self):
042 return self.value
043
044 def getbasepage(uid):
045 picasaweb_url = "https://picasaweb.google.com/%s?showall=true"
046 picurl = urllib.urlopen(picasaweb_url%uid)
047 basepage = picurl.read()
048 picurl.close()
049 return basepage
050
051 def downalbum(url):
052 picurl = urllib.urlopen(url)
053 basepage = picurl.read()
054 picurl.close()
055 parser = getimglist()
056 parser.feed(basepage)
057 value = parser.returnvalue()
058 return value
059
060 def downpic(url,userid):
061 global num
062 num += 1
063 print 'load url',url
064 url = urllib.urlopen(url)
065 data = url.read()
066 url.close()
067 fi = open('./Pictures/picasa/%s/pic%d.jpg'%(userid,num),'w')
068 fi.write(data)
069 fi.close()
070
071
072 def main(userid=''):
073 global num
074 if not userid:return
075 num=0
076 try:
077 os.makedirs('./Pictures/picasa/'+userid)
078 except:
079 num = len(os.listdir('./Pictures/picasa/'+userid))
080 basepage = getbasepage(userid)
081 parser = getalbumlist()
082 parser.feed(basepage)
083 albumlist = parser.returnalbumlist()
084 albumlist = urllib.unquote(albumlist.replace('\\x','%'))
085 picalbumlist = []
086 if True:
087 albumscript = albumlist[albumlist.index('['):albumlist.rindex(']')]
088 for line in albumscript.split('\n'):
089 if line.startswith(',url:'):
090 picalbumlist.append(line[6:-1])
091 print picalbumlist
092 for picalbum in picalbumlist:
093 print 'load album',picalbum
094 for picurl in downalbum(picalbum):
095 downpic(picurl,userid)
096
097 if __name__ == '__main__':
098 uidlist = ['107778867772322280285']
099 for uid in uidlist:
100 main(userid=uid)
python urllib2 socks tsocks(收藏) 一月 13th, 2012
转自http://panweizeng.com/python-urllib2-socks-proxy.html
python2.5中的urllib2支持http代理,不支持socks代理。假如代码库或者编码时使用了urllib2,同时又要使用socks,就需要第三方的库来实现。幸运的是,已经有人造好了轮子。
SocksiPy是一个socks module。它提供了一个类socket的接口,支持socks4、socks5和http proxy。下载后在代码中引用socks.py即可,也可以写个setup.py文件安装到python的site-packages目录中。
使用时,将下面的代码放在调用urllib2的代码之前即可:
1 2 3 4 5 6 | import socksimport socketsocks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, "127.0.0.1", 8080)socket.socket = socks.socksocketimport urllib2 |
如果是自己写的程序,也可以尝试使用pycurl这个库。ubuntu使用sudo apt-get install python-pycurl python-pycurl-dbg安装。
示例代码
1 2 3 4 5 6 7 | import pycurlc = pycurl.Curl()c.setopt(pycurl.PROXY, '127.0.0.1')c.setopt(pycurl.PROXYPORT, 8080)c.setopt(pycurl.PROXYTYPE, pycurl.PROXYTYPE_SOCKS5)c.perform() |
如果在程序外部使用socks,推荐使用tsocks。ubuntu中直接使用sudo apt-get install tsocks安装。安装完毕以后需要修改/etc/tsocks.conf。
配置样例如下
1 2 3 4 5 6 | # 默认代理服务器server = 127.0.0.1# 代理服务器类型server_type = 5# 代理服务器端口server_port = 8080 |
使用时,在命令行输入tsocks 程序名即可。例如ubuntu下的epiphany浏览器没有代理设置,如果想使用socks代理,输入tsocks epiphany-browser即可(注意先关闭其他的epiphany实例)。
制作deb包 七月 1st, 2011
如何制作Deb包和相应的软件仓库,其实这个很简单。这里推荐使用dpkg来进行deb包的创建、编辑和制作。
首先了解一下deb包的文件结构:
deb 软件包里面的结构:它具有DEBIAN和软件具体安装目录(如etc, usr, opt, tmp等)。在DEBIAN目录中起码具有control文件,其次还可能具有postinst(postinstallation)、 postrm(postremove)、preinst(preinstallation)、prerm(preremove)、copyright (版权)、changlog (修订记录)和conffiles等。
control: 这个文件主要描述软件包的名称(Package),版本(Version)以及描述(Description)等,是deb包必须具备的描述性文件,以便于软件的安装管理和索引。同时为了能将软件包进行充分的管理,可能还具有以下字段:
Section: 这个字段申明软件的类别,常见的有`utils’, `net’, `mail’, `text’, `x11′ 等;
Priority: 这个字段申明软件对于系统的重要程度,如`required’, `standard’, `optional’, `extra’ 等;
Essential: 这个字段申明是否是系统最基本的软件包(选项为yes/no),如果是的话,这就表明该软件是维持系统稳定和正常运行的软件包,不允许任何形式的卸载(除非进行强制性的卸载)
Architecture:申明软件包结构,如基于`i386′, ‘amd64’,`m68k’, `sparc’, `alpha’, `powerpc’ 等;
Source: 软件包的源代码名称;
Depends: 软件所依赖的其他软件包和库文件。如果是依赖多个软件包和库文件,彼此之间采用逗号隔开;
Pre-Depends: 软件安装前必须安装、配置依赖性的软件包和库文件,它常常用于必须的预运行脚本需求;
Recommends: 这个字段表明推荐的安装的其他软件包和库文件;
Suggests: 建议安装的其他软件包和库文件。
对于control,这里有一个完整的例子:
Package: bioinfoserv-arb
Version: 2007_14_08
Section: BioInfoServ
Priority: optional
Depends: bioinfoserv-base-directories (>= 1.0-1), xviewg (>= 3.2p1.4), xfig (>= 1:3), libstdc++2.10-glibc2.2
Suggests: fig2ps
Architecture: i386
Installed-Size: 26104
Maintainer: Mingwei Liu <lmingwei@gmail.com>
Provides: bioinfoserv-arb
Description: The ARB software is a graphically oriented package comprising various tools for sequence database handling and data analysis.If you want to print your graphs you probably need to install the suggested fig2ps package.
preinst: 这个文件是软件安装前所要进行的工作,工作执行会依据其中脚本进行;
postinst: 这个文件包含了软件在进行正常目录文件拷贝到系统后,所需要执行的配置工作。
prerm: 软件卸载前需要执行的脚本
postrm: 软件卸载后需要执行的脚本现在来看看如何修订一个已有的deb包软件
=================================================================
debian制作DEB包(在root权限下),打包位置随意。
#建立要打包软件文件夹,如
mkdir Cydia
cd Cydia
#依据程序的安装路径建立文件夹,并将相应程序添加到文件夹。如
mkdir Applications
mkdir var/mobile/Documents (游戏类需要这个目录,其他也有可能需要)
mkdir *** (要依据程序要求来添加)
#建立DEBIAN文件夹
mkdir DEBIAN
#在DEBIAN目录下创建一个control文件,并加入相关内容。
touch DEBIAN/control(也可以直接使用vi DEBIAN/control编辑保存)
#编辑control
vi DEBIAN/control
#相关内容(注意结尾必须空一行):
Package: soft (程序名称)
Version: 1.0.1 (版本)
Section: utils (程序类别)
Architecture: iphoneos-arm (程序格式)
Installed-Size: 512 (大小)
Maintainer: your <your_email@gmail.com> (打包人和联系方式)
Description: soft package (程序说明)
(此处必须空一行再结束)
注:此文件也可以先在电脑上编辑(使用文本编辑就可以,完成后去掉.txt),再传到打包目录里。
#在DEBIAN里还可以根据需要设置脚本文件
preinst
在Deb包文件解包之前,将会运行该脚本。许多“preinst”脚本的任务是停止作用于待升级软件包的服务,直到软件包安装或升级完成。
postinst
该脚本的主要任务是完成安装包时的配置工作。许多“postinst”脚本负责执行有关命令为新安装或升级的软件重启服务。
prerm
该脚本负责停止与软件包相关联的daemon服务。它在删除软件包关联文件之前执行。
postrm
该脚本负责修改软件包链接或文件关联,或删除由它创建的文件。
#postinst 如:
#!/bin/sh
if [ "$1" = "configure" ]; then
/Applications/MobileLog.app/MobileLog -install
/bin/launchctl load -wF /System/Library/LaunchDaemons/com.iXtension.MobileLogDaemon.plist
fi
#prerm 如:
#!/bin/sh
if [[ $1 == remove ]]; then
/Applications/MobileLog.app/MobileLog -uninstall
/bin/launchctl unload -wF /System/Library/LaunchDaemons/com.iXtension.MobileLogDaemon.plist
fi
#如果DEBIAN目录中含有postinst 、prerm等执行文件
chmod -R 755 DEBIAN
#退出打包软件文件夹,生成DEB
dpkg-deb --build Cydia
=====================================================================
有时候安装自己打包的deb包时报如下错误:
Selecting previously deselected package initrd-deb.
(Reading database ... 71153 files and directories currently installed.)
Unpacking initrd-deb (from initrd-vstools_1.0_amd64.deb) ...
dpkg: error processing initrd-vstools_1.0_amd64.deb (--install):
trying to overwrite `/boot/initrd-vstools.img', which is also in package initrd-deb-2
dpkg-deb: subprocess paste killed by signal (Broken pipe)
Errors were encountered while processing:
initrd-vstools_1.0_amd64.deb
主要意思是说,已经有一个deb已经安装了相同的文件,所以默认退出安装,只要把原来安装的文件给卸载掉,再次进行安装就可以了。
下面为实践内容:
所有的目录以及文件:
mydeb
|----DEBIAN
|-------control
|-------postinst
|-------postrm
|----boot
|----- initrd-vstools.img
在任意目录下创建如上所示的目录以及文件
# mkdir -p /root/mydeb # 在该目录下存放生成deb包的文件以及目录
# mkdir -p /root/mydeb/DEBIAN #目录名必须大写
# mkdir -p /root/mydeb/boot # 将文件安装到/boot目录下
# touch /root/mydeb/DEBIAN/control # 必须要有该文件
# touch /root/mydeb/DEBIAN/postinst # 软件安装完后,执行该Shell脚本
# touch /root/mydeb/DEBIAN/postrm # 软件卸载后,执行该Shell脚本
# touch /root/mydeb/boot/initrd-vstools.img # 所谓的“软件”程序,这里就只是一个空文件
control文件内容:
Package: my-deb (软件名称,中间不能有空格)
Version: 1 (软件版本)
Section: utils (软件类别)
Priority: optional (软件对于系统的重要程度)
Architecture: amd64 (软件所支持的平台架构)
Maintainer: xxxxxx <xxxxxxxx@xxxx.xx> (打包人和联系方式)
Description: my first deb (对软件所的描述)
postinst文件内容( 软件安装完后,执行该Shell脚本,一般用来配置软件执行环境,必须以“#!/bin/sh”为首行,然后给该脚本赋予可执行权限:chmod +x postinst):
#!/bin/sh
echo "my deb" > /root/mydeb.log
postrm文件内容( 软件卸载后,执行该Shell脚本,一般作为清理收尾工作,必须以“#!/bin/sh”为首行,然后给该脚本赋予可执行权限:chmod +x postrm):
#!/bin/sh
rm -rf /root/mydeb.log
给mydeb目录打包:
# dpkg -b mydeb mydeb-1.deb # 第一个参数为将要打包的目录名,
# 第二个参数为生成包的名称。
安装deb包:
# dpkg -i mydeb-1.deb # 将initrd-vstools.img复制到/boot目录下后,执行postinst,
# postinst脚本在/root目录下生成一个含有"my deb"字符的mydeb.log文件
卸载deb包:
# dpkg -r my-deb # 这里要卸载的包名为control文件Package字段所定义的 my-deb 。
# 将/boot目录下initrd-vstools.img删除后,执行posrm,
# postrm脚本将/root目录下的mydeb.log文件删除
查看deb包是否安装:
# dpkg -s my-deb # 这里要卸载的包名为control文件Package字段所定义的 my-deb
查看deb包文件内容:
# dpkg -c mydeb-1.deb
查看当前目录某个deb包的信息:
# dpkg --info mydeb-1.deb
解压deb包中所要安装的文件
# dpkg -x mydeb-1.deb mydeb-1 # 第一个参数为所要解压的deb包,这里为 mydeb-1.deb
# 第二个参数为将deb包解压到指定的目录,这里为 mydeb-1
解压deb包中DEBIAN目录下的文件(至少包含control文件)
# dpkg -e mydeb-1.deb mydeb-1/DEBIAN # 第一个参数为所要解压的deb包,
# 这里为 mydeb-1.deb
# 第二个参数为将deb包解压到指定的目录,
# 这里为 mydeb-1/DEBIAN
啄木鸟社区的奋起宣言和八荣八耻 六月 21st, 2011
奋起宣言
每日至少抽一刻钟,解答邮件列表中初学者的问题,
每周至少抽两小时,整理新学知识将体验发表/分享出去,通过Blog/Wiki/MaiList/个人网站……
每旬至少抽四个小时, 来翻译自个儿喜爱的自由软件的文档,
每月至少抽八小时, 快乐的编程,推进自个儿的项目,
每年至少参加一次, 自由软件的活动,传播自由软件思想,发展一名“自由人”……
只要我们每个人都坚持下去……
10年!就足以改变中国软件的整体风貌!
八荣八耻
以动手实践为荣 , 以只看不练为耻;
以打印日志为荣 , 以单步跟踪为耻;
以空格缩进为荣 , 以制表缩进为耻;
以单元测试为荣 , 以人工测试为耻;
以模块复用为荣 , 以复制粘贴为耻;
以多态应用为荣 , 以分支判断为耻;
以Pythonic为荣 , 以冗余拖沓为耻;
以总结分享为荣 , 以跪求其解为耻;
转 wget下载需要登录的内容 五月 31st, 2011
本地下载慢的时候我常常登录服务器使用wget下载,有时候会遇到下载的内容需要网站登录才能下载的情况,这时候就有点卡壳了,不过还是可以使用wget下载的,只需要多操作一步。
第一步,先获得登录小甜饼cookies。
wget --keep-session-cookies --save-cookies cookies.txt --post-data "username=username&password=password" "http://example.com/login"第二步,使用获得的甜饼请求需要下载的资源。
wget --load-cookies=cookies.txt "http://example.com/?download_id=314"用服务器来下载,速度真是爽歪歪~
连连看 五月 30th, 2011

基本功能实现仅用160行。
#coding=utf-8
import sys
import os
import random
import clutter
from clutter import keysyms
if __name__ == '__main__':
main()
正则表达式笔记 五月 30th, 2011
挑战PYTHON 五月 30th, 2011
挑战PYTHON第一关

提示信息:
g fmnc wms bgblr rpylqjyrc gr zw fylb. rfyrq ufyr amknsrcpq ypc dmp. bmgle gr gl zw fylb gq glcddgagclr ylb rfyr'q ufw rfgq rcvr gq qm jmle. sqgle qrpgle.kyicrpylq() gq pcamkkclbcb. lmu ynnjw ml rfc spj.
解析:
很明显是将每个字母ord加2,当然'y'和'z'还要减26. 处理完后提示信息为
"i hope you didnt translate it by hand. thats what computers are for. doing it in by hand is inefficient and that's why this text is so long. using string.maketrans() is recommended. now apply on the url."
知识点:
>>>s=string.maketrans('abcdefghijklmnopqrstuvwxyz','cdefghijklmnopqrstuvwxyzab') #生成一个替换规则s
>>>#trans = string.maketrans(string.ascii_lowercase, string.ascii_lowercase[2:] + string.ascii_lowercase[0:2])
>>>u='map'
>>>u.translate(s)#将u按替换规则s替换相关字母。
'ocr'

but MAYBE they are in the page source.
| find rare characters in the mess below: | |
| %%$@_$^__#)^)&!_+]!*@&^}@[@%]()%+$&[(_@%+%$*^@$^!+]!&_#)_*}{}}!}_]$[%}@[{_@#_^{* | |
| @##&{#&{&)*%(]{{([*}@[@&]+!!*{)!}{%+{))])[!^})+)$]#{*+^((@^@}$[**$&^{$!@#$%)!@(& | |
| +^!{%_$&@^!}$_${)$_#)!({@!)(^}!*^&!$%_&&}&_#&@{)]{+)%*{&*%*&@%$+]!*__(#!*){%&@++ | |
| !_)^$&&%#+)}!@!)&^}**#!_$([$!$}#*^}$+&#[{*{}{((#$]{[$[$$()_#}!@}^@_&%^*!){*^^_$^ | |
| ]@}#%[%!^[^_})+@&}{@*!(@$%$^)}[_!}(*}#}#___}!](@_{{(*#%!%%+*)^+#%}$+_]#}%!**#!^_ | |
| )@)$%%^{_%!@(&{!}$_$[)*!^&{}*#{!)@})!*{^&[&$#@)*@#@_@^_#*!@_#})+[^&!@*}^){%%{&#@ | |
| @{%(&{+(#^{@{)%_$[+}]$]^{^#(*}%)@$@}(#{_&]#%#]{_*({(])$%[!}#@@&_)([*]}$}&${^}@(% |


挑战PYTHON第四关




壹之和 五月 26th, 2011
群里有人贴出这个题目,但没人理,可能是觉得比较麻烦。我觉得挺有意思的
这道题目的大意用python公式表示: 某整数为abcde,求''.join([str(i) for i in range(abcde+1)]).count('1')的值。
比如13,比从0至13中包含1的数字有1,10,11,12,13.其中包含‘1’共计6个。
我解这道题的思路便是 假设 该数为abcde 5位整数,分为5次计算,每次只计算所有整数的某一位(如b)上‘1’的总数,循环5次即可。核心算法即为怎么算所有整数b位上‘1’的总数了。
#coding=utf-8
abcde=999999999999999999
def gwei(i,x=abcde):
if i==len(str(x)):return 0
a=list(str(x))
a.reverse()
return int(a[i])
u=0
for i in range(len(str(abcde))):
m1999=2*(10**i)-1
m999=10**i-1
bcde=abcde%(10**(i+1))
a=abcde/(10**(i+1))
s=a*(m1999-m999)+min(bcde,m1999)-m999
u+=s
print u
为没有代理功能的程序设置代理 五月 23rd, 2011
在ubuntu中可以通过tsocks为任何程序设置代理。 1、首先你要有一个socks5代理,且定义为:127.0.0.1:7070吧; 2、sudo apt-get install tsocks 3、sudo gedit /etc/tsocks.conf local = 192.168.1.100/255.255.255.0 #local表示本地的网络,也就是不使用socks代理的网络 server = 127.0.0.1 #socks服务器的IP server_type = 5 #socks服务版本 server_port = 7070 #socks服务使用的端口 4、然后就可以 tsocks ping twitter.com |
一次谷歌面试趣题 五月 8th, 2011
奋斗BLOG上有一则面试题,题目是这样的:
假设这有一个各种字母组成的字符串,假设这还有另外一个字符串,而且这个字符串里的字母数相对少一些。从算法是讲,什么方法能最快的查出所有小字符串里的字母在大字符串里都有?比如,如果是下面两个字符串:
String 1: ABCDEFGHLMNOPQRS
String 2: DCGSRQPOM
答案是true,所有在string2里的字母string1也都有。如果是下面两个字符串:
String 1: ABCDEFGHLMNOPQRS
String 2: DCGSRQPOZ
答案是false,因为第二个字符串里的Z字母不在第一个字符串里。
blog中的解法可以到这里去学习,看到这个题目的时候其实我是想到另外一个解法,相信效率会比较高。
#!/usr/bin/env python
#coding=utf-8
def s(i):
b=0
for a in i:
b=b|(1<<(ord(a)-ord('A')))
return b
str1='ABCDEFGHLMNOPQRS'
str2='DCGSRQPOM'
bin1=s(str1)
bin2=s(str2)
print bin1
print bin1|bin2
print 'bin1|bin2:\t',bin(bin1|bin2)
print 'bin1^(bin|bin2):',bin(bin1^(bin1|bin2))
if bin1==bin1|bin2:
print u'符合'
else:
print u'不符合'
字符串转换为数字,每个字母通过移位转换为相应二进制数字,每个字母占据各自的二进制位。
如‘A’转换为‘0b1','B'转换为‘0b10','C'转换为'0b100'
这样通过或的算法 就可以检查str1有没有变化,如果有变化,还可以通过异或将有变化的二进制为揪出来,找到那个str1中不包含的字母。
str1='ABCDEFGHLMNOPQRS'
str2='DCGSRQPOM'

str1='ABCDEFGHLMNOPQRS'
str2='DCGSRQPOZ'

gnome-shell问题处理一则 五月 4th, 2011
今天进入gnome-shell 始终无法正常显示,只显示光秃秃的桌面。top显示ubuntuone的同步程序占用CPU时间100%,鉴于ubuntuone目前仍无法正常使用 遂进入TTY将其卸载。
而后通过kill -9 -1返回登录界面 选择gnome-shell之前问题仍未解决。top显示无异常程序。
再次返回登录界面,选择KDE桌面进入,升级系统。注销后进入gnome-shell仍未果。
想到应该直接查看gnome-shell提示什么错误信息。登录选择recovery桌面,命令行输入gnome-shell --replace启动gnome-shell,果然提示出错 libmozjs.so 导入出错。
注销 进入KDE,查看libmozjs库 将其卸载后重新安装,查看安装文件 未发现libmozjs.so文件,貌似发现问题所在。进入/usr/lib 发现果然只有libmozjs185.so.1.0.0 于是创建连接文件。sudo ln -s libmozjs185.so.1.0.0 libmozjs.so
注销进入GNOME-SHELL桌面 问题解决。

协议书 四月 17th, 2011
甲方:
乙方:
甲乙双方就五一期间约会事宜在友好磋商的前提下,自愿签订本协议书。本协议纲要为甲方请求乙方于五月假期到甲方归属地与甲方交流心得,沟通思想。双方本着增进感情并在遵守国家相关政策和法规的基础上,遵照以下条款:
1.甲方成为约会对象的基本条件:
1.1 甲方须为具备完全民事权利能力和民事行为能力的个人,能够承担民事责任。
1.2 甲方须了解乙方感情及身体状况、熟悉乙方性格,与乙方有长期共同生活经历。
1.3 甲方须具备生活上照顾乙方、并具备对乙方精神方面起到积极影响的能力。
2.甲方的权利和义务
2.1 甲方须向乙方提真诚的约会申请、约会时间、约会地点,须向乙方补偿由本次约会造成的必要交通消费。
2.2 甲方须保证其在约会期间的行为完全遵守中国相关法律、法规、行政规章制度的规定。包括但不限于《未成年人保护法》、《妇女儿童保护法》、《消费者权益保护法》以及《野生动物保护法》,务必做好约会期间对乙方的保护工作。如因甲方违反上述规定的行为给乙方带来任何损失,甲方应承担所有法律责任并赔偿给乙方造成的损失。
2.3 约会初期和结束时甲方须做好接送工作,不可以将乙方弄丢。
2.4 约会期间甲方须尽量满足乙方的生活需求,零食饮料保证足量供应。并应提前准备文化娱乐内容,避免无聊。
2.5 对于甲方与乙方之间的纠纷、争议、损失、侵权、违约责任等,双方应友好协商解决,避免暴力出现。
3.乙方的权利和义务
3.1 乙方须在五月份之内赶到甲方指定地点,并保证不少于5天的约会时间。
3.2 乙方应提前购买车票,杜绝因交通问题导致无法约会的情况。
3.3 乙方须对甲方友好善意,保持宽松的交流氛围。
3.4 乙方在出发前三天通知甲方做好接待工作。
4.违约责任
4.1 甲方如违反国家相关政策法规,乙方有权中止合同,并由甲方承担相应责任。
4.2 乙方如违反国家相关政策法规,甲方有权中止合同,并由乙方承担相应责任。
4.3 约会期间发生乙方权益受到侵害,须由甲方在未来共同生活中包揽打扫卫生和电器维护的工作。相反甲方权益收到侵害时,须由乙方在未来的共同生活中包揽洗衣做饭的工作。
4.4 甲方未完成接送任务,须由甲方在未来共同生活中包揽洗碗的工作。
4.5 乙方无法在五月份內达到指定位置,则由乙方在未来的共同生活中包揽所有家务。
5.免责条件
5.1 因国家政策法规调整、自然灾害等不可抗力或意外事件而影响甲乙双方正常的服务和感情支持时,双方互不承担责任。
6.合同附件
6.1 甲方向乙方提交约会申请:
亲爱的老婆,我请您于2011年5月份来我家约会吧。
7. 附则
7.1 本协议同时得到甲乙双方的完全理解和认同,并替代此前的所有协议,不论是口头的还是书面的。在打印或填写过程中,未经乙方书面同意,甲方不得随意更改本合同中的任何条款。本协议经双方签字盖章生效后,任何更改均需双方协商一致并以书面形式确认。
7.2 一方变更通知、通讯地址或其它联系方式,应自变更之日起三日内,将变更后的地址、联系方式通知另一方,否则变更方应对此造成的一切后果承担责任。
7.3 本协议的理解与解释应依据协议目的和文本原义进行,本协议的标题仅是为了阅读方便而设,不应影响本协议的解释。
7.4 本合同由双方代表签字盖章后生效,合同期限一年。合同期满若双方均无异议,则本合同继续有效;若续约期内乙方制定出新的合同条款,则双方另签新合同。
7.5本协议一式二份,双方各执一份,经签字、盖章后生效,二份协议具有同等效力。
甲 方:
邮政编码:
联 系 人:
联系电话:
电子邮件:
代表签字:_________________
签约时间:______年_____月_____日
乙 方:_________________
邮政编码:_________________
联 系 人:_________________
联系电话:_________________
电子邮件:_________________
代表签字:_________________
签约时间:______年_____月_____日
apt-get多线程 四月 5th, 2011
IMG_20110215_214435.jpg 三月 29th, 2011
用以纪念那一次相遇ddddocoddddddddddxxxxxxxkO00000Okxxxxxxxddddddddddddo:';ccc:,,,,,,,''';::::::cccccccclllll
xddddocoddddddxxxxxxxxxkkOXWWWWX0kkxxxxxxxxdddddddddo;,:llc:,,,,,,,,,,;:::::ccccccccllllll
xxddddolodddoddddddxxxxxkOXWWMMWKOkkkkkxxxxxxdddddddl,:llllc,,,,,,,,,,:::::ccccccclllllllo
ddddddddlldddodxxxxxxxxkkkkOkWWX0OkkXWWXOxxxxddddoooc;coool:,,,,,,,,,;:::::ccccccllllllooo
ooooooooolcoddoddxxxxxxxkkkkxWKOOOkkO0KKOxxoc:;;,'',,;clooxc,,,,,,,,,;::::::cccccllllloooo
oooooollllcclooooooddddddxxxkKkkkkkkkkkdc:,'''........,;:lXc;,,,,,,,,;;;;;::::::cccclllloo
oooooooollclooooooooooodddddxkdxxxxxxd:,'................';,,,,,,,,,;;;:::::::::::ccccccll
Oxddooooolclooooooooodddddddkxddddddo,'.....................',,,,,,,;:::::::::ccccccllllll
kxxxddddooloddddddddddddddddkddddddo;'.......................',,,,,,::::::cccccclllloooddd
Okkkkxxxddoxxxxdxxxxxxxxxxxdkxkxddd:''........................,,,,,;::ccccccclllloooddxxkk
OO0OOkkkkddkkkkkkxdolcccclooxOKKOxo'.........................',,,,,;:cccccclllloooddxxkkOO
00000OOOkdkOkkkx:............,cdkko..........................',,,,,:cccccllllloooddxxkkO00
00000000OxOkkxl'................,ld'......'''................,,,,,;cccccllllooooddxxkkO00K
00000000Oddlc,....................',.......''...............',,,;,:ccclllllooooddxxkkOO00K
0000OO00xc:,........................'......'''..'''''.......,,,,,;cccllllloooodddxxkkO000k
0000O0OOl;'...............................'''''''''''.....';;;;;;;ccllllloooodddxxkkOO0Olc
OOOOOOOx:'.....................................''''''''...,;;;;;;:clllllloooodddxxkkOO0kc:
OOOOOOxl;.......................................''''','..',,;;;;;ccllllloooodddxxxkkOO0d:;
OOOOkko:'....................''''''.............'''''',,,,,,;;;;;clllllloooodddxxxkkOOOl:;
OOOkkxo;''......................'''....'.............',;,,,,;;;;:cllllloooodddxxxkkkOOk:;:
OOOkkxo.'...............................c,...........',;,',,;;;;clllllloooodddxxxkkkOOd:;c
kkkkkxc.,...............................;ko;.........'''',;;;;;;cllllllooooddddxxkkkOOl:,c
kkkkxd:,'............. .......,:oxdc;...........''',;;;;:lllllllooodddddxxkkkOkc;;l
kkkkxdl,,........... ...,;,'...............'',,;:cllllooooddddxxxkkkOd:,;;
xxxxdl;;;........ . ......................''''',,,:lllooooddddxxxkkkkl:';;
xdxdcc:c;........ .........................''''''',,,:loooooddddxxxkkkkc:;;,
xxxolc:,'....... . . ..........''..............''''',,'',:loooooddddxxxxkkdlcccc
xxddl;::'...... ....................''............'''...''',,,coooooddddxxxkkkolllll
dddoccl;........ ..................''''...........'''..''',,,,:ooooodddddxxxkkddoooo
ddddlc;..... .. ............ .....'''''''..........'''..''',,,,;oooooddddxxxxxkkkOOOO
dddol:'... .. ..................... ...''''...........''..'''',,,;oooooddddxxxxkkkkOOOO
ddoollc... .. ...............'''.'.....'.............''..''''',,:oooooddddxxxxkkkkOOOO
ooolllc'... . .. ......................''''............'...''''',,cooooddddddxxxxkkOOOOO
oolcc;'..... .................''......''................''''',;lllloooddddxxxxxkkOOOO
lllccc:';c...............................'..''...............'''',,:cccccccllloodddxxxkkOO
llcclc,cll,.'................................'...............'''',,:cccccclllllooooooodddd
lc:lcc:cclc'.................................''...............'''',:cccccllllloooooooddddd
cc:cccccclc;'.................................'''..............'''';cccclllllooooooddddddd
c::cccccccccc:'...............................'..'..............''';:cccllloooooddddddddxx
:;:ccccccccccc;..................................................'',:cclllooodddddddddxxxx
:;:::cccccllod:...................... ..........................',,:cllodddxxxxxdddxxkO0
;;::::cllllodd,...................... .......................''.''.,:lldOO000OOkkxddx00K
,;::::okOOOkxl'...................... ............................'..;o,'d0KXXXXXNXKk0KOO
,;::::dkkkOOO;....................... ....................................:k0KKXXXXXXX0KKO
';;::::lxkOOo'...................... ................................ ...,dk00KKXXXXXKOk0
';;;;;;;;:lo,....................... ............................... ..;dxkO00KKXXXK0oo
';;;;;;;;;,'....................... ..................... ....... ......cdxxkkOO00KKKKxo
';:::;;;;,'....................... .................... . ..;lddlclooooddxkO00Kd'
:::::;;;,'........................ ..................... .;coxkkkkkxxxxxxxxkkx.
;;;;;;;,......................... .................... ...,:cdxxkkdxxkkkkkxkxc
................................. ................... ....';cldxxxxdolcdooood
..... .......................... ..... .....,;:ldc......;,,,,
... ......................... ......';:clc..........
. ...................... .......,::cllc:;;:cl:
.................... .......';;:cc;:c:;,:
................. ... ........,;;:c::::;;
........... ... .........;;;:llllc
... .........';,;:lll
. .........,,,;:c
... ..........',',;
ubuntu 11.04 安装 gnome3 三月 27th, 2011
ubuntu11.04使用了unity而非gnome。正值gnome3蠢蠢欲动,我的ubuntu也跃跃欲试,其实是我啦。
可以安装gnome3-team为我们build的gnome-shell,网址为https://launchpad.net/~gnome3-team/+archive/gnome3
本地安装建议通过如下命令:
$ sudo add-apt-repository ppa:gnome3-team/gnome3
$ sudo apt-get update
$ sudo apt-get install gnome-shell
$ sudo apt-get dist-upgrade
一定要dist-upgrade哦,不然你会发现没有桌面背景,还不止呢 主题都是经典出题还不能更改呢。
Emacs为Python配置高亮显示 三月 17th, 2011
环境 Ubuntu 11.04 / Python 2.7 / Emacs 2.3.2
1. 安装python-mode.el
apt-get install python-mode
2. 字节编译,在emacs中输入命令:
C-x C-f /usr/share/emacs/site-lisp/python-mode/python-mode.el
M-x byte-compile-file
选择当前默认目录,(如需权限,请使用sudo打开emacs
3. 确保python-mode.el在加载路径中,测试方法:
M-x locate-library
Locate library: python-mode
Library is file /usr/share/emacs23/site-lisp/python-mode/python-mode.elc
如果没有,加入下面一行到的.emacs文件中:
(setq load-path (cons "/dir/of/python-mode/" load-path))
4. 文件关联,自动将py后缀的文件和pyhton-mod关联,在.emacs文件中添加:
(setq auto-mode-alist (cons '(".py$" . python-mode) auto-mode-alist))
(setq interpreter-mode-alist (cons '("python" . python-mode) interpreter-mode-alist))