作者: jswh

  • 初始化一个 Python 开发环境的正确姿势

    在看这篇文章的时候,我需要两个假设,以避免做过多无关的解释。

    1. 假设读者对 Python 有最基本的了解,知道如何使用 pip。并且系统环境中已经安装有 Python 和 pip。
    2. 假设读者对 virtualenv 有最基本的了解,知道为什么要用 virtualenv。

    如果假设不成立,可以跟随上面的链接和 Google 来了解。

    (更多…)

  • 一些重构体会

    最近在重构多媒体服务,包括爬虫和搜索两部分。原先的代码是一个实习生 Q 同学写的,用的 python。如果抽出其中的一块代码来看, Q 同学应该是一个重实践的同学,代码质量还是很不错的,但是之前看的时候我还是很难理解他的编程思路。直到这次彻底的重构,才发现代码中的一些问题。 这里记录下来,也是对自己的提醒。

    命名

    这其实是一个老生常谈的问题,而且大部分人其实都有这个意识,Q 同学在对待大部分的命名上也都在尽量选择合适词汇。但是,对于工具函数却没有一视同仁。 比如

    (更多…)

  • 回归社交

    之前在知乎一个关于外国人吃的问题下面,一个答主描述国外的“约饭“不像国内一样,不是真的是以吃为重点,而是以吃为由头,一群人聚在一起聊天,食物只是调剂。 同样是约饭,在他们看来不过社交的一种形式。似乎社交就是聊天,或者说交流。可是交流本身并不能构成社交。 互联网时代的社交是怎样的呢?以 Facebook 和 Twitter 为代表的点赞,以微信为代表的 IM 还是各种速配应用?这些似乎是又不全是社交。 Facebook 偏表达,IM 偏工具,速配偏认识。原先没有互联网的社交是怎样的呢?对于熟人社交,我们起个由头,约个时间,组织活动,交流各自见闻,回忆回忆往昔, 男人们讨论时事, 女人们唠叨家庭。对于陌生人社交,我们参加一个公共活动(桌游、酒吧、音乐会等等),因为某个特质而欣赏某人,搭讪,聊天的时候展现自己,观察对方。 可能留下联系方式,期待后续的交流。 熟人社交,即使来到了线上,但因为彼此的熟悉,所以没有特别的了解对方的需要,只有知道对方的近况和充分的交流需要,微信在满足了这一需要。 陌生人社交中的一部分,仅仅是猎艳,所以目标就是快速适配,陌陌们在满足这一需要。至于 Facebook 、微博,注重即时信息发布的特质,使得媒体属性要强过社交属性。 可是这里还有一批人,他们需要陌生人社交,但不是以猎艳为目的,而是仅仅希望认识有趣的人。以前的豆瓣在做这一部分,互联网上把这部分叫兴趣社交。 但基于兴趣的社交,只能遇到志趣相投的人,只是有趣的人的子集 一个人在社会上生活,他的所作所为和所思所想成了他在社会的存在。不经意间,我接触到了他的在社会留下的痕迹,觉得很有意思,我很想认识这个人,与他交流。如果是在现实, 这简直是个不可能的事。而在互联网,我就可以轻易的联系上他,这样的兴趣社交–对某人产生了兴趣并期望与他发生社交的社交,没有大的应用在做这个。 兴趣是小众的,而对他人产生兴趣是大众的。 想象了一下,如果我来设计这样一个应用我会做些什么?想了一下还是会像 same:分出个人与公共的空间,在个人空间留下自己的私人内容,在公共空间参与集体活动这样的基本架构。 但是细节上,我会希望 App 本身不做任何的限制和引导,把权利特别是对公共空间管理的权利交给用户,这样每一个空间才会是个性化的,而不是千篇一律的。 要有好的交流工具,满足从浅到深的各种交流的需求。去现实化,不把现实的身份带上,只把作为一个人的特质带到线上。 这样的应用要产生真正的社交接触是很慢的,就像一个人来到一个陌生的城市。而且,形成了这样的氛围的时候,对新人会不友好,因为没有痕迹,别人就没法对你产生兴趣,这是个难处。 还有一点很重要:不要做推荐,让一切平等地等待被发现,否则就又会陷入兴趣的窠臼。不过,要给用户提供好发现的渠道,这个很重要。

  • Flex & Bison

    因为公司在用 phalcon,这种 c 扩展的框架 IDE 没有办法补全,所以想写一个把 zephir 转译成 PHP IDE Helper 的东西。本来想直接 Reflection 取一下类信息就好了,奈何最终效果不理想,本来 Zephir 中有的很多信息都丢掉了,注释也全部没有。所以还是要用 passer 转译。

    只能说兴趣果然是最好的老师。之前编译原理看三段打瞌睡,死活读不下去,这下却是兴致满满了。只是Flex、Bison入门资料太少,网上写的那些文章都是浅尝辄止,完全没有可实践性。读手册又太过乏味。

    看来看去,还是动物书的 Flex & Bison 读起来舒服。

    对于词法分析语法分析完全没有概念的同学,可以先看看这个 PDF 了解一下,再读动物书会好一些,不然有些没头没脑。内容基本和书里的第一章重合,但简单介绍了一下 Flex/Bison 是用来做什么的。

    总结:

    1. 这个 PDF
    2. 动物书的 Flex & Bison
  • 20161004

    大半夜的睡不着。一半是因为老家秋天的蚊子,大个,嗡嗡声能达数个分呗,一口一个大包;另一半还是每次回家都止不住的沮丧程序。看着年久失修,墙壁霉变剥落的房子;年老枯瘦依旧满面愁容的奶奶;年近七十依然紧闭大门外出劳作的外公外婆;满面风尘的舅舅,不沮丧也难。

    想到车房妻子俱全的大哥,静待二哥结婚越活越年轻的姑父母,以及刚在上海买房的二哥,想想自己的工资与上海房价的比例,沮丧更胜之前。

    就在几天前,还对朋友谆谆教导:最重要的不是别人有什么,而是你自己想要什么。当自己遇到了同样的境地,却也还是忍不住涌起各种情绪。不论是因为别人拥有的生活之艰还是生活之幸。

    熬了一个半夜,看完了《从你的全世界路过》。之前并没有了解过作者,只是最近电影上映,亚马逊的 kindle 包月服务又能免费借阅,乘着家里没网,随便读读。也许是很久没有读这样的文字了,矫情的情绪弥漫到每个毛孔,又说不清楚矫情什么。现在,我已经完全记不得书里的任何一个故事了,只有那种情绪转化成忧伤挥之不去,只能呓语。

    张嘉佳是幸福的,不论如何他还有故事有酒,他还有朋友,不管故事的真实度几分。我不会喝酒,也没有他那样的朋友。但我也是幸福的,父母俱在身体健康,有一只顽皮的小猫。只是书里面的人物只需要表达强烈的情感,不论困苦或者富裕,都不须理会世俗的欲望。而现实中的我,却始终逃不脱房车婚子这些事。也许是我太过浪荡,但心里总还是“诗和远方”。

    傍晚和大哥聊起前次跳槽,不仅损失了十多万的股票,也并没有为简历添加更多的内容。从钱和潜在的钱的角度出发,真的已经可以判定是次失败的跳槽。但是想想自己得到也不少,自由的上班时间、自主的产品探索,当时也不是为了钱才跳槽的,算是给自己一些安慰吧。

    读完书,觉的自己之前也是被长远规划和满心抱负蒙蔽太久,生活里充斥的只有代码。遂决定以后每个周末都去看看母亲,趁她下午休息,买杯果汁,聊上半小时一小时。我也不知道这其中的因果何在。

    如果能找到一份远程的工作就好了,最好是国外的,那所有的梦想就实现了一半。

  • 静心做事

    乐空空上两个版本周期中,抛开所有业务上的事,把我自己认为乐空空在 Laravel 上应该改的基础架构都改了。在快接近尾声的时候,发现自己似乎已经没什么想要做的事了。这个时候已经开始焦虑了:我绝的乐空空应该还有还有很多事要做,为什么到这里就没事可做了呢?我的能力到头了或者这个产品目前到头了。刚好这时候版本开发出现了延误,闲而又闲之下就琢磨,越琢磨越觉得现在的开发流程有问题,但觉得自己不出在管理的职位上,并不应该去管理这些事情。一来感觉无事可做,而来对产品没信心,三来觉得无力改变现状,所以看待什么都很消极。

    向前辈咨询,被领导谈话。经过各种各样的梳理和解压,脑子渐渐冷静下来。再次慢慢回想这些事情,确实整个团队是有一些问题,但出现那样的强烈的负面情绪,问题还是在自己身上。本质的原因还是对自己能力的怀疑。在有事可以忙碌的时候,精神专注在解决问题上,没有经历去考虑这些问题,但一旦闲下来,就会不停地想:我到底掌握了那些东西?掌握到多少程度?我到底可以解决多大程度问题?我解决的问题到底价值几何?我到底价值几何?

    有这些疑问的原因其实一直都很清楚。第一,我一直耿耿于怀自己非专业的出生,觉得自己在很多基础的问题上掌握不好;第二,在没有考试和分数之后,已经失去了对自己能力的衡量方式。问题很明确,但是一直都没有很明确的办法。

    也做过很多目的并不明确的尝试。比如做很多个人项目,并希望通过个人项目掌握不同的技能;比如考虑过考研,甚至投递国外大学的硕士申请;比如尝试去看大学的计算机教程。但很多尝试最后都不了了之。放弃的原因就是觉得要么无法改变问题一,要么无法解决问题二。

    其实,还有问题三。我的内心很焦躁,很着急。我希望我可以快速地把别人多年的积累补起来,我希望可以快速地积累财富,我希望自己可以快速的变好。当我意识到自己工作两年了,虽然感觉自己有一些长进,但是不明白自己长进在哪里,似乎还是和以前差不多时候,我觉得我太慢了。所更加焦躁。昨天和女朋友谈心,虽然成因不同,她也有同样的心理。分析她的心理的时候,才意识自己表面冷静,其实也是半斤八两。

    怎么办?其实也好办。让自己平静下来,把自己认为应该补的东西补上来,找一种衡量自己补的好不好方法,两个问题就都解决了。然而,就和鸡汤一样,大道理谁都懂。

    还是要有一些实际的方法,毕竟我是一个那么会做计划的人,也是我觉得自己唯一不比比人弱的地方。

    现在是工作两个,我希望在我工作三年的时候,以上的两个问题都不在是问题,也就是给自己一年时间来解决这些问题。

    不在开新的个人项目,原来的项目该放弃放弃,可以完善的完善但是尽快阶段性结束,不在考虑自己的框架之类虚无缥缈的事。有任何的主意可以记着,可以写成类似项目规划的东西防止忘记。认真学习自己认为应该补习的东西,做好练习题,练习题就是衡量。刷 LeetCode, 这真的是最直接的能力衡量了。

    需要加强工作的总结。这一点其实挺重要的,毕竟生活中大部分时间都在工作。如果说要明确自己能力,也许可以列出自己曾经解决过什么样的问题如何解决的是最具说服力的了。可以用文章的形式写出来,也可用代码的形式的来表述。程序员么,还是 show me the code。

    愿自己如网名 jswh 原本的意义一样,平静而底蕴深厚,宠辱不惊。

  • 输入与输出

    最近一直在思考关于信息的输入与输出的问题。

    每天,我们都在接受大量的信息。以我自己来说,微信、微博、知乎这些碎片化的;书籍、教程,公开课,MOOC这些系统化的。并且,花在前者中的时间越来越多,在每天所获取的信息中占的比重越来越大。每天都在接受海量的信息,可是躺在床上睡不着的时候却总是无事可想。(也许也不错,越想越睡不着)

    另一个感受就是无事可写。

    我不喜欢用博客做笔记,尤其是把别人写过的东西再写一遍。复制粘贴然后当做自己的产出,那真是一件很无聊的事。文笔不好,所以也不喜欢写太多的随笔记录;个人习惯也不喜欢公开私人生活,所以几乎不写这类的博客。那么,写些什么呢。以前的内容通常都是思考和总结,读书然后化到自己的生活中,出现自己的体会,再慢慢地转化成思索,最后输出成文字。

    而现在,我觉得没有什么可以写了。有的时候会有一些简短的思索出现,但是能成型的文字,通常仅仅足够发一个朋友圈,再多也没有了。碎片化的输入,导致了碎片化的输出。

    在我的观念中,信息的输出是输入知识化的体现。所谓知识化,就是指经过个人对输入的信息经过加工,形成可以传递下去的经验或见解。而其中又可分整理型的和创造型的输出。而碎片化输入的零星内容,在没有相关的知识背景的情况下很难作为归纳总结的对象,又不够作为创造的工具组件,所以很难形成有效知识化过程。更何况,我们日常接触的信息碎片,有多少是真正有价值的呢。

    在有了这样的认识之后,我删除了自己手机中的所有的碎片化阅读工具,只保留了feedly作为收集各类碎片内容的信息源, 每天花费少量的时间过一遍,并选取可能作为自己知识组件的部分或者单纯为了娱乐阅读。

    在节约了一些时间之后,我考虑重新开始系统化输入的事情。简单来说就是,自大学毕业甚至是大学停课以来,我就没有真正完整的看过一本知识类的书籍了。这时还没有特别需要深入的方向,所以就是由着兴趣来读了。挑来挑去,发现自己还是对计算机最感兴趣,又自感相关基础薄弱,便决定从计算机基础开始。

    然而,工作的排期和生活琐碎已经挤占了大部分的时间,再回忆起大学时期游戏动漫苦闷想入非非的那些时光,除了怀念还带上了一些惭愧,也才真正理解老师那句恨铁不成钢的:大学是学习的最好时间。