1. pip's Trap

    最近在编写基于 Flask 的 RBAC 模块,并发布到 pypi 上。先前发布了 0.1.0 版本。昨晚因为更新了 API,版本也更新到 0.2.0 了。

    但是本地执行 pip install flask-rbac 的时候,却一直安装 0.1.0 的版本。

    第一反应就是 pip 的 cache 作怪。因此在另一个目录下 virtualenv venv, pip install flask-rbac,果然安装的是 lastest 版本。

    于是在 Google 了 pip 的 cache ...


  2. Some Note

    最近好少博文= =

    面试

    在开始写正文之前,想写一些关于 面试 的感想与自己最近在思考的一些人生问题。

    这学期一共参与了 3 个组织的面试,包括学生会信息部,学子天地以及技术联盟连客计划的面试。再加上高中的学生会以及去年一些面试经历,有些感想需要记录下来,给未来的自己提个醒。

    仪容

    信息部的面试,我是面向面试者进行面试,因此特别留意面试者的仪容,包括着装和精神面貌,这是所谓的形象分。曾经有篇报道说中国往往有先入为主的观念,第一印象好的人,一般会觉得他就是好人(表现出来就是有好感),而且会一直这么认为。因此第一印象常常决定了别人心目中你的形象,并且这个影响是长期持续的。

    如果面试的时候仪容引起了面试官的反感,接下来的面试可能就会比较吃力了。而仪容博得面试官的喜爱,之后面试的“容错性”也自然高点。

    关于这点在 linkedin 看到了相关的讨论:http://www.linkedin.com/groupItem?view=&srchtype=discussedNews&gid=108525&item=277251498&type=member ...


  3. Team and manager

    团队与管理者

    何为团队?

    首先,一个人肯定不是团队,那只是一个个体。而两个人也不能算是一个团队,那是两个相互支撑。

    一个团队至少需要三个人,这样就有了团队的基本特性:①主从 ②监督 ③责任

    当然,这并不代表一个人或者两个人的开发行为并不能成功。

    一个团队,所有成员的目标应该一致,同时也需要一些制度来制约每个成员的行为,以求团队工作效率最高。

    任何团队,都需要一个管理者。作为团队的管理者,勇于承担责任是最基本的素质,管理者未必是团队中能力最强的人,但管理者应该对团队负责。当团队项目失败了,管理者的责任应该是最大的,而不是团队的其他技术人员,因为团队是由管理者所管理的,技术人员的进度、产品的质量也是由管理者所把握的。

    对于项目的成败,主要由以下两个方面进行评估:

    1. 项目完成的质量
    2. 项目完成的时间

    对于“项目完成时间”这一评估标准,一般需要在项目开始之前就做一些估算,经验丰富的工程师可有尽可能接近预计的工期,但没有办法保证工期绝对合理。也因此,项目总是会因为进度而修改工期。所以团队的管理者需要学习如何掌握工期,这需要一定的时间来成长。


  4. Lounger created methods

    懒人造就了方法

    人的精力终归是有限的。提出问的解决方法才是影响做事成效的根本问题。

    在早起的汇编语言中,GOTO语句使用非常频繁,将GOTO语句写到另一个文件中十分不便,因此开发人员习惯将程序写在同一个文件中。久而久之就养成了这样的习惯,并一直延续到高级语言出现之后。

    但随着程序功能日益复杂,代码自然也增多,几千行代码的程序也不罕见了,如此长的代码,PageUp/PageDown 自然成为开发人员最喜欢的按键了。

    但这世界上总有一些懒人,他们疲于天天的 PageUp/PageDown,他们打破习惯的约束,将程序拆分成多个文件编写,这就是“单元文件”的开发方式。“单元文件”使得程序容易修改维护。

    “单元文件”的概念出现之后,很快也有“模块”的概念,把一个大模块分成许多小模块,把小模块分成更小的模块,每个模块对应一个单元,于是历史上的“单文件代码”被拆分成许多的小文件,每个文件由一个团队不同的开发人员完成编写,促进了团队开发模式,也提高了程序的开发效率。

    “单元文件”和“模块”的概念出现之后,便有了“结构化编程”的概念,“结构化编程”实际上也是我们所说的 ...


  5. Essence of Programming

    编程的精义

    编程的根本是顺序、分支以及循环,再复杂的工作都可以通过这三个环节的组合来完成。因此所谓编程实质上是制定某项任务执行的顺序(顺序),找出该项任务中重复执行的步骤(循环)和任务中的特殊情况(分支),之后才是代码层面的实现。

    N.Wirth提出“程序 = 算法 + 数据结构”,至今仍被大多数程序员所认同。其中的加数“算法”暗示了在开始编程之前必须明白程序的逻辑方法,否则计算机是无法理解你想要做什么,自然程序也是无法实现出来的。而另一个加数“数据结构”则表示程序所依赖的数据实体结构。因此,在实现代码之前,要分析清楚任务的前后逻辑关系(算法)和依赖关系(结构),当逻辑关系与依赖关系都明确之后,剩下的就是体力活了。

    所以编程的本质并非使用编程语言,而是用(任一、合适的)编程语言实现算法与结构的过程。而算法与结构需在代码实现之前明确构建。

    对于编程语言,它们的底层函数库都是十分相似,API 也都依赖于系统,而它们的差别仅仅在于适用范围。例如 PHP 只适用于制作网站,Python 可以方便进行数值处理,而C ...


  6. upset

    很难过..

    几个月前收到明信片,是一个大学同学,天天见面的朋友寄来的. 他说 "但不可否认,我们的道路是渐行渐远的". 我以为,我们四个人是很好的朋友,也会一直好下去. 但,他说的,是对的.

    依然很难过.

    很想很想回到过去,对过去的自己扇一巴掌. 那个自大的自己. 但一切都晚了.

    当目光渐渐放远的时候,我终于发现, 这个世界是找不到边界.

    当自己最擅长的领域不断被曾经所认识的世界之外的新的世界打败的时候, 我知道,我的内心已经慢慢变得脆弱起来.


  7. Git and Workflow

    Git 和 SVN/CVS

    大学两年里,接触了三种版本控制系统:

    1. 第一个接触是 SVN。学子天地 网站目前使用的版本控制器就是 SVN。作为第一个接触的版本控制系统,SVN 给我一个很新鲜的感觉。SVN 是集中式的版本控制系统,即版本仓库是在一个服务器上,所有开发者从这个“中心版本库”里 checkout, update,然后向“中心版本库“ commit 自己的修改。
    2. 接触 SVN 大约半年之后,开始接触 Git。目前我自己的私人项目都使用 Git 来管理代码,并且在 Github 和 Bitbucket 上托管。Git 不同于 SVN,它是一个分布式的版本控制系统。所谓分布式是指每个开发者都拥有自己的代码仓库,并且可以从其他开发者(也包括服务器)拉取代码更新,Git 和 SVN ...

  8. Smart Pointer

    Introduce to Smart Pointer

    In computer science, a smart pointer is an abstract data type that simulate a pointer while providing additonal features. -- [WikiPedia](http://en.wikipedia.org/wiki/Smart_pointer)

    In the C++ language, smart pointer implements as a template class and override the behaviour of raw pointer, such as ...


  9. Thinking in my life

    在同龄人里,我算是较早地接触电脑。 当时是小学四年级,学校组织兴趣班,进行培训参加比赛。

    第一次培训,我接触了 Flash。因为从一开始就做的很顺利,所以很快就喜欢上 Flash。 接着在家里的电脑装上了这个软件,在家里疯狂地学习、制作 Flash。从纯粹的动画,到 AS 。 很快认识了 FrontPage 和 Dreamweaver 这两个软件,于是开始对制作网站感兴趣。

    当时做了 Flash ,做了网站,参加了比赛。也拿到很不错的成绩。 从那时开始,就不停地与电脑打交道。

    在那时,我已经会学少许的代码。Html CSS Js 以及 AS。

    一直满足于自己的成绩,直到小学毕业,进入初中。

    初中的班主任是个会电脑的人,为我们班制作了一个班级网站,ASP语言的。 一直以来就很好奇怎么编写动态的网站。这次终于找到一个方向。

    于是,初二的假期 ...


  10. Thought: What Can You Do After Learning Such Courses in College

    现在是凌晨 2:32。早到了该睡觉的时候,只是我怕睡了一觉之后我就把这一切都忘记了。所以趁着还多少有些记忆,记录下来。

    由一件事引入

    这是一个最近发生在我身上的真实故事:我在给一个朋友提供《Web程序设计》附加题题目建议的时候我提议让她做一个公文通爬虫。她开始的时候很愣,因为觉得爬虫是个很神奇。最后我把实现的思路告诉了她,她就基本自己完成了爬虫程序。

    其实很多时候,很多我们觉得很神奇的东西,很可能是我们早就明白的东西,只是我们还缺少一步“思考”,思考如何去运用这些知识,思考如何去创新。也许是长期的应试教育,使得我们教一是一,教二是二,所有的“创新”都是“零分”,慢慢地就失去了创新的能力。

    这篇文章,是希望能够给身边的朋友们带来一些启示,以及提示自己不要忘记如何“创新”与“思考”。

    我们学了什么

    现在我已经是一名大二的计算机专业学生。回想这大学的近两年学习,我学到了什么?

    (1) 过去的课程(除去例如体育、文史哲等课程): - 高数 - 线性代数 - 程序设计基础(真的很基础) - 计算机导论 ...


Page 1 / 2