本科的最后一个学期开始了

4号其实就回到帝都了,一直想说点啥但还是成功的磨叽到了现在。

回来第一件事情就是把只装了Gentoo的笔记本硬盘给格了,装了Win7+LinuxMint。Win7的主要需求还是为了用MSN和GF视频,Skype在linux上的视频效果不是很理想。用Mint而不用Gentoo主要是因为笔记本太老了,CPU实在玩不起,就选择了衍生于Ubuntu的Mint,目前用着还挺不错的。

买了一个新枕头,是荞麦壳的,之前的那个海绵已经被压得很扁几乎没什么弹性了,现在不用担心会被压扁了。还买了一个腰枕,放在了实验室的座椅上,考虑到那个座位将成为接下来三年的根据地,要好好武装一下。还准备过两天去办一张健身卡,上学期没有好好锻炼身体,特别是腰因为久坐现在很容易肌肉酸痛,这学期要好好锻炼了。

上学期在街旁实习,实验室的事就一直拖拖拉拉的,几乎没有什么进展。不想把自己很感兴趣的一个项目就这样糟蹋了,这学期要好好务实一点,多看点论文,多写点代码,多学点东西。

和GF的进展挺好的,叔叔阿姨已经默许我们交往了,GF也在逐渐想明白一些以前一直困扰我如何让她想明白的问题(貌似有点拗口……)。总之一切都在向好的方向发展呢。很感谢一直关注,特别是支持和帮助过我(们)的人。

本科的最后一个学期开始了。

Farewell, Jiepang!

今天就要启程回家了,也是我正式离开街旁了,有好多话想说想留下来。

2011年08月——2012年01月,满打满算也不到半年,只能勉强说是一个学期。

一开始就很关注街旁,因为街旁有着很深的北航情缘,从校长yuancheng,到神一般的大牛lqs,再到设计师CattBill。街旁刚成立不久,曾有一次可以邂逅的机会,当时因为恰好刚刚联系了北大的实验室,便擦肩而过了。

刚成为街旁RD组后台工程师团队的一名实习生时我还是一个很烂的python coder,只是看过一两本书,没写过像样的python代码,而街旁的API是用纯Python写的,而且是整个街旁网站和所有平台客户端的基础,这对我来说是一个很大的挑战,也是最吸引我的地方,

除了修了一些小bug,做了一些小功能,留下比较深刻印象的就是同步等相关模块的重构了。一开始连HTTP协议都没有搞明白,一下就被Basic OAuth, OAuth1.0, OAuth2.0这些协议给搞晕了。刚开始重构的时候主要是精简优化了接口的设计,主要的同步代码几乎是照抄过来的,后来正好遇到了开心以及饭否验证方式的变更,才真的开始和这些协议死磕了。除了不知多少次厚着脸皮打扰工作中的lqs,我还在周末特意约lyxint出来去咖啡馆请教。虽然进度很慢很慢,最后还是比较顺利的上线了。

除此之外,应该就是自己犯过的各种大大小小的错误了,什么测试的时候没有重启API,或者重启之前没有pull到最新的代码,还有代码commit没有push的。更有一次,把还有Syntax Error的代码就直接push到了master分支上……

每天午饭的时候,应该是最欢乐的时候了,可以问lqs很多问题也不至于被无视,可以没事欺负一下izzy,还可以听http://jiepang.com/zakk讲在国外的生活。我是一个生活很宅的人,也正是和RD组的各位Enginners一起,饱餐了很多顿美食。还有那次秋游泡温泉,应该是我大学以来屈指可数的脱离点线生活的记录了。

至于离职,主要是没能处理好实验室和实习的关系。从一开始就是瞒着导师出来干活的,没能做好两边兼顾,锻炼和看书的日程也一直被搁置了。下学期,我想重新规划一下自己的生活,想多下点功夫攻一攻实验室的项目,还想能多一点时间锻炼锻炼身体,多看一点和技术相关或者无关的书。我有点固执,不希望两边都将就着,所以挺突然的就提出了离职的请求。

很高兴能有这段作为Jiepanger的精力,很高兴认识你们,除了已经提到的,还有高高帅帅的芋头,博学多识的jingmi,还有kiwiwander、wangjian、mingzhou,除了RD组的,还有APP组的Dan周畅靴子大刘威武、洋洋,此外比较熟悉的还有shawn扬帆康乐,很感谢大家对我的关心和照顾。

街旁很cool,街旁的团队也充满了活力。但是街旁也还很年轻,还有很多自己的路要走。我还会继续分享与记录真实生活的,希望以后还有机会成为一名Jiepanger。

虾米自动签到的python脚本

一个练手的小脚本,暂时只是实现了签到,还没有很完备的错误处理,而且在实现“全自动签到”上还没有想出什么合理的方案,先把代码贴上现丑了……

使用方法很简单

python xiami_auto_checkin.py email password

即把用户名(email)和密码作为参数传进去即可
如果你只是签固定的一个帐号,也可以直接将代码中的读参数改成赋值

这个代码只是最初的版本,你可以在这里看到最新的进展

#!/usr/bin/python
# encoding:utf-8

import re
import sys
import urllib
import urllib2
import cookielib

def check(response):
    """
    docstring for check
    """
    pattern = re.compile(r'<div class="idh">(已连续签到\d+天)</div>')
    result = pattern.search(response)
    if result: return result.group(1)
    return False
    pass

def main():
    """
    docstring for main
    """

    # Get email and password
    if len(sys.argv) != 3:
        print '[Error] Please input email & password as sys.argv!'
        return
    email = sys.argv[1]
    password = sys.argv[2]

    # Init
    opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookielib.CookieJar()))
    urllib2.install_opener(opener)

    # Login
    login_url = 'http://www.xiami.com/web/login'
    login_data = urllib.urlencode({'email':email, 'password':password, 'LoginButton':'登陆',})
    login_headers = {'Referer':'http://www.xiami.com/web/login', 'User-Agent':'Opera/9.60',}
    login_request = urllib2.Request(login_url, login_data, login_headers)
    login_response = urllib2.urlopen(login_request).read()

    # Checkin
    checkin_pattern = re.compile(r'<a class="check_in" href="(.*?)">')
    checkin_result = checkin_pattern.search(login_response)
    if not checkin_result:
        # Checkin Already | Login Failed
        result = check(login_response)
        if result :
            print '[Succeed] Checkin Already!', email, result
        else:
            print '[Error] Login Failed!'
        return
    checkin_url = 'http://www.xiami.com' + checkin_result.group(1)
    checkin_headers = {'Referer':'http://www.xiami.com/web', 'User-Agent':'Opera/9.60',}
    checkin_request = urllib2.Request(checkin_url, None, checkin_headers)
    checkin_response = urllib2.urlopen(checkin_request).read()

    # Result
    result = check(checkin_response)
    if result:
        print '[Succeed] Checkin Succeed!', email, result
    else:
        print '[Error] Checkin Failed!'
    pass

if __name__=='__main__':
    main()

有任何问题,欢迎批评指正,更多更新信息,请参见这里