2015.1.30 星期五 小雨转雪转雨夹雪
好久没写日记了,今天补上。
最近挺忙的,接了一个创业项目的活,写APP的后端。应该说,这是我见过的最靠谱的项目了。BOSS从贝恩离职,转而自学代码,开发社交APP。他写iOS的前端,我和邹与另一位中学老师写后端。三四天的样子,基本开发完成。
第一次参加团队项目,有趣的是,四人开发团队中,我在Linux下开发,两个是MAC,一个是WIN。经常发生的事就是,WIN的那位兴致冲冲地说,“喂,我找到了一个非常棒的插件!”然后他给我们群发过来,发现是.exe或.dll。顿时哭笑不得。又或者,写了中文注释,结果因为编码不同导致在另一人的机器上出现乱码。WIN下默认是GBK编码,而Linux下是UTF-8,MAC下我不清楚。
但是在开发过程中,发现了SVN/GIT这样的版本控制工具的优势;以及Linux在编程方面的优势。感觉编程工具方面,比如数据库,服务器等,都是现在Linux下出现,而后再移植到WIN货MAC下,所以Linux天生就有编程的优势,环境也很好搭,不需要安装第三方库。
BOSS送了个机械键盘,还是很不错的款。自己选了红轴、无背光。刚到了货,用起来感觉不错。
2015.1.21 星期三 晴
今天没刷Leetcode,而是在装Linux.DIY Boot Loader. 内核和grub装在U盘里,其他文件装在磁盘里.自定义一个脚本,开机后把U盘弹出.并在Windows下隐藏Linux的分区.U盘就像一个钥匙,有了它才能打开Linux.好棒的点子!不行太兴奋了,今天学到很多知识.内核\电脑启动\MBR\Boot Sector\Boot Loader\grub2\…
2015.1.20 星期二 雨
找班主任聊四轴飞行器。班主任是航院,更偏重于结构的设计,硬件。我想自己的毕设还是偏重于软件,算法的撰写。飞行器里跑的竟然不是Linux。原想利用Linux的知识写些很酷的东西。
TODO:
找那两位学生,聊入门,教程。
找卜老,聊毕设。
看看有没有quadcopter里面跑Linux的情况。
约了卜老,准备见面聊聊。刷Leetcode爽得飞起,但感觉总体难度不是很大。可能是还没遇到难题吧。学STL,每天过的很充实。又找到了奋斗的动力。
U盘返到京东修理了,明天换一个新的过来,赞京东。
2015.1.19 星期一 晴
U盘又坏了,把Linux装在U盘里,玩坏了两块U盘了。寄回京东返修,不知要等多久。暂时把Linux放一放。
开始刷Leetcode,一下AC了三道题还是挺爽的。第四道题hard,heap和divide and conquer还不清楚,卡住了。准备好好复习数据结构和heap的知识。尤其是时间复杂度的估算。
明天找班主任咨询四轴飞行器的事情。
2015.1.14 Wednesday Sunny
I’m on my Linux. So English this time, though its terrible.
Be watching S.H.I.E.L.D for a whole day. Learn some basic Linux commands.
2015.1.13 星期二 雨
继续熟悉Linux,找ZCM拷贝神盾局,又要开始水了。开题报告还是没思路,没想好要做什么。一开始准备DIY四轴飞行器的,需要再仔细研讨一下。不知毕业设计是否一定要有自己的original idea。
写了一些Linux笔记,无奈Linux上的中文输入法装不好,只能写些蹩脚的英文。可能得重装一遍Ubuntu了。
2015.1.12 星期一 阴
一篇好文:Python编程中的反模式:http://python.jobbole.com/74252/ 不要把Python写的像C。
终于把Bug解决掉了。原来的冲突检测有问题,按照上面链接的思想重写了一份,虽然效率低,但是更具可读性。
把绘图函数也改了一下,解决因画图错位导致的画面上的碰撞。
现代数据存储技术基础。结束了。学分早已经够了,一切随缘吧。
2015.1.11 星期日 晴
继续Python写建模。还是有Bug,查了一天。觉得Python写数据结构不是很方便。想得到一个For循环当前的index还得用enumerate。觉得绕了一圈。还是C写数据结构更方便吧。
见了朱学长。也在犹豫要不要去加入这个团队。他的经历确实够牛,贝恩,加入朋友公司,现在又自己干。比上次见的那位学弟专业得多。思考了一下,觉得寒假还是再多学些基础的东西,比如算法,准备开春的可能的实习面试。估计是自己的性格不喜欢被约束吧,喜欢随心所欲的,想干就干的生活。突发奇想,写了这个网站;师兄的桌上有一本《鸟哥的Linux私房菜》,便开始研究Linux。不太喜欢规划的人生。
说点编程的事吧:
定义一个变量时,一定要想清楚,这个变量背后的意义是什么,必要时最好加上注释,比如:
for i in xrange(len(h) - 1): for j in xrange(i + 1, len(h)): if self.__cmp__(h[i], h[j]) != 0: break #i start index, j index of first different element if j == len(h) - 1 and self.__cmp__(h[i], h[j]) == 0: j += 1
在边界情况时,j停在了list的最后一个元素,这个元素可能与h[i]一样,所以需要再把j加1,以满足j表示第一个不同元素的定义。考虑边界情况,切记。
明天是最后一面了,时间还真快,只是还是没什么进展。前几天的聊天还蛮开心的,第一次没有UDP。交集还是不多,互相不够了解,sigh。
2015.1.10 星期六 晴
There are no absolute private members or private methods in Python. All the methods and members in a class is accessible out of it though they may be named begin with “__”.
>>> class MyClass: ... def myPublicMethod(self): ... print 'public method' ... def __myPrivateMethod(self): ... print 'this is private!!' ... >>> obj = MyClass() >>> obj.myPublicMethod() public method >>> obj.__myPrivateMethod() Traceback (most recent call last): File "", line 1, in AttributeError: MyClass instance has no attribute '__myPrivateMethod' >>> dir(obj) ['_MyClass__myPrivateMethod', '__doc__', '__module__', 'myPublicMethod'] >>> obj._MyClass__myPrivateMethod() this is private!!
As the code shows, we can bypass the private class restriction by using dir() to list the members of a class, find the renamed private class and access it.
However, there is a tricky way to prohibit illegal access to a private member completely, which made me laugh.
import re import inspect class MyClass : def __init__(self) : pass def private_function ( self ) : try : function_call = inspect.stack()[1][4][0].strip() # See if the function_call has "self." in the begining matched = re.match( '^self\.', function_call ) if not matched : print 'This is Private Function, Go Away' return except : print 'This is Private Function, Go Away' return # This is the real Function, only accessible inside class # print 'Hey, Welcome in to function' def public_function ( self ) : # i can call private function from inside the class self.private_function() ### End ###
Quoted from Stack Overflow: http://stackoverflow.com/questions/70528/why-are-pythons-private-methods-not-actually-private
The network speed is extremely slow tonight in Dorm 7. Finlly I downloaded numpy, six, matplotlib and other packages for drawing data in Python. Began to revise the lecture given by Yansong Bai.
2015.1.9 星期五 晴
继续用Python写数模问题,一个全排列算法,利用Python的列表生成器。但效率太低,正考虑优化。
def perm(n, m): if m == 1: return [[x] for x in xrange(1, n + 1)] elif n == m: return [x[0: i] + [m] + x[i: ] for x in perm(n - 1, m - 1) for i in xrange(0, len(x) + 1)] else: return perm(n, m - 1) + [x[0: i] + [m] + x[i: ] for x in perm(n - 1, m - 1) for i in xrange(0, len(x) + 1)] print perm(4, 9)
要重新拾起数据结构,再好好过一遍了。
把行人流问题的雏形写好了。还差可视化部分,复习了下Github的用法,把代码推送到hub上。
突然发现毕设还没有选题,去年在香港交换错过了选题时间。周一找张传华问问流程,再找卜老聊聊。
渔火很好吃。
于Eagle
2015.1.8 星期四 晴
七点四十起床。上午继续研究Ubuntu安装中文输入法的问题。搜狗是装上了,但还是无法输入中文。明天再尝试下安装语言包(Language Support Package)。正在撰写Linux运行在内存上的教程。估计分享在微博上吧,朋友圈的话,技术的同学不多。也想试试微博分享会带来多少流量。
下午系统工程课,分到写代码的任务,模拟行人流动。在Matlab和Python之间徘徊,还是决定用Python,把每个人看成一个对象,里面实现一些属性和方法。
课后跟王越跑步,这家伙真能跑,跑了整个苏堤。后来我们绕了西湖一圈。到利星名品,剁了个Muji卫衣。我发现自己是Muji的脑残粉了。
一会继续写Python。
于玉泉七舍
最近同在创业,做的主要是产品经理方向,遇到的大问题就是产品的开发。虽然是北大很厉害的程序员,但真心觉得不够靠谱。不过自己对代码的了解过于有限也是原因,多学习~
创业是大趋势啊看来,我们计院学习的东西和工业上需要的还是有区别……我在给人写代码时也是边学边写。。加油~