浙里 2


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送了个机械键盘,还是很不错的款。自己选了红轴、无背光。刚到了货,用起来感觉不错。

webwxgetmsgimg

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。

于玉泉七舍


Leave a Reply to 赖翔 Cancel reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

2 thoughts on “浙里

  • 赖翔

    最近同在创业,做的主要是产品经理方向,遇到的大问题就是产品的开发。虽然是北大很厉害的程序员,但真心觉得不够靠谱。不过自己对代码的了解过于有限也是原因,多学习~

    • songbo Post author

      创业是大趋势啊看来,我们计院学习的东西和工业上需要的还是有区别……我在给人写代码时也是边学边写。。加油~