从Reader加星号文章说起

最近用起了reeder for mac,使用体验非常好,基本取代了我原有的web浏览reader的习惯.

通过reeder的统计功能,我震惊的发现我的加星号文章居然有4249篇之多.

而且其中的大部分文章,我已经完全没有了印象.

更甚的是我现在已经完全养成了一个习惯,就是看到值得学习blog,尤其是需要花时间实践和思考的技术blog,我会直接加个星号,然后接着看下一条…

我已经完全把加星号这个动作当作我真正学习过的一个标记了,好像加过星号之后,这篇blog就已经存入我的大脑.

但真相是,我根本没有认真的看过和思考过这些blog.

趁着周末我认真的看了大概几百篇,发现里面不乏有很多发人深省的好文章.但更多的是我目前工作中完全用不到的知识.这其中信息的过载超出我的想象,而且是在我的reader经过筛选之后的,我从不订阅新闻资讯类的blog,更多的订阅的是私人blog.我仿佛想起我加星号时的心理过程,”这篇文章说不定以后有用,虽然现在用不上”,看来贪婪真的是人类的原罪,无论是对金钱,还是对知识.

知识真是学不完的,记得刚来公司的时候总监给我开了一个学习路线图,现在七七八八的也看的差不多了.但我总觉得还是不够底层,不够深度,我现在真切的感受到我真是刚刚入门,很多原来似是而非的现象,现在自己总算能有个自圆其说的理解.操作系统够底层了吧,还有内核,还有各种语言的parsing,当初学编译原理完全是为了考试.除了这些深度的东西,广度的知识更多,各种高可用的解决方案,nginx的各种原理,各种modules.每天reader上都有人分享的架构设计经验.nosql之类的新概念.甚至产品的理念.

太多的技术和知识仍源源不断的向我涌来,我感觉自己快要溺死在这知识里面.

直到我最近读了咖乐但涩学长的一篇文章.一句话让我醍醐灌顶.

“只会学习,不会做事的人是干不了大事情的[......]

More

初心

iTunes DJ总会给我安排出很多惊喜,事隔N年以后的今天,我重新听到了八度空间以前的周杰伦,重新听到了遇见我时候的曹方.

让我感慨的是,现在的他们变得太彻底了,谁都会变的.那个当初留着长发有些羞涩的周董现在MV里的三大件就是钢琴跑车加嫩模,曹方的浅彩虹整个一个曹绮贞.

你们的音乐里有了越来越多的元素,越来越多的概念,越来越跟得上时代,专辑的名字越来越洋气,但越来越难打动我的心.

Why Smart People are Getting Smarter?

Because they always ask right questions. (Here’s a nice blog written by a Harvard student: “What I’ve Learned About Smart People.”)

Smart” is more of a habit than an attribute. Some were born smarter than others, but in the long run, the difference may well diminish, or even extend in a reverse direction. This is simply because “smart” is in effect an acquired capability, and no one is smart enough.

While being the smartest is impossible, getting smarter (at least compared to the previous self) is pretty easy: learn. Develop a habit of lifelong learning. Learning is to an individual just as adapting is to any species. Inability to adapt will lead a species to extinction, likewise, an individual has to learn to survive the ever-changing environment.

An important habit that good lea[......]

More

写给换工作和找工作的同学

掐指一算,毕业也快两年了,在这两年的时间里,我经历了大公司-自己创业-加入创业公司这三种截然不同的工作节奏,除了体制内基本上各类公司都待过,也有了一些自己对工作选择的思考,又到了毕业生找实习/有工作的人跳槽的季节,所以今天抛砖引玉,分享一下我的看法.

注:本人对体制内的工作不是很感兴趣,所以以下讨论不涉及贵国贵党的企事业单位和户口.

先自我介绍一下本人的工作历程,做的技术类工作主要是运维自动化的工具开发.

  • Oracle Asian R&D Center 实习
  • 本科毕业加入阿里B2B平台技术部/系统架构
  • 一年前离职自己创业 超失败的”ceo”
  • 四个月前加入美团技术部/系统

我主要从待遇和发展这两个角度去分析各类公司的特点吧.现在大家谈待遇,眼光都集中工资和奖金,我觉得大家普遍忽略的一点就是—股权.
从我在阿里的经验来看,我师傅和总监们纸醉金迷,宝马奔驰的生活,我同事们结婚买房买车的夙愿,基本上全靠的是期权的兑现,凭工资和奖金来满足这些,很难.

最近有个新闻,2005年一位叫大卫·崔的韩裔美国人接受Facebook时任主席帕克邀请,前往公司在加州帕洛艾洛第一个总部进行墙面装饰.作为报酬,帕克向大卫提供了两个选择:要么收下数千美元现金,要么收下同等价值股票.尽管崔当时认为Facebook“荒谬且没有意义”,但仍然收下了股票.如今,随着Facebook的即将上市,大卫手中当年仅值数千美元的股票,据估算将升值为2亿美元.更不要提那些在facebook早期加入的员工了.

美国大学教育比较提倡entrepreneurship,所以Facebook上市之后,其光环在美国名校的最牛那批毕业生里面会下降,相比之下,他们更加愿意去开创自己的startup,或者加入新兴公司(比如twitter,tumblr,pinterest等).F[......]

More

从创新说起

这几天健身的时候,不知为何一直在想这个命题,所以就把所想所思记录下来。

我觉得创新有三个阶段,认知阶段,描绘阶段,实践阶段。

认知阶段是指你能认知和感受到新的思维和理念。别人分享的一篇文章,一首歌,或让你重新认识的人和事,或者一段特别的经历,一段旅行,一部电影,一个女孩。或者是一些特定的场景,让你有一种发明的冲动。这些能让你的内心感受到something new,something differnt,而你能认同它,承认它,感受它给你带来的冲击。

描绘阶段是指你认知到新的思维和理念,通过做进一步的深度思考,你能把它描绘表达出来,让自己更深刻的理解,或者传播出去改变别人的认知。比如你把你的想法写到微博或blog上让别人看到,在这个阶段,你要能把你的思想清晰的描述出来,给别人讲明白,写blog或者出书都是这个阶段的事情。我写这篇blog其实就是描绘阶段。描绘阶段的特点就是纸上谈兵,我指的书和Blog是“设想类”的,而不是纪实和非虚拟类的(比如传记)。

实践阶段就是你通过行动去验证你的思想,把你的思想产品化实物化,譬如乔布斯做出iPad去实践他的理念,伽利略在比萨斜塔上抛下两个球,我们今天身边的网站,手机,产品,应用,都是实践的结果。

而且这三个阶段不是一个三段论,而是一个螺旋上升的过程,认知-描绘-实践失败-再认知-再描绘-再实践。

很多人能有一个认知的阶段,但他们可能不会进一步的再思考,但也有一些人能通过思考,由抽象到形象的去描述它,同样也有极少数人能通过描述,让其他人一起或者他自己去实践这个想法。

举个例子,Mark Zuckerberg听到那两个高富帅描述了一个原始的想法,心里有了认同的感受,然后通过再思考和加工,去把自己的想法描述给Eduardo,获得认同和金钱支持,然后开始实践,然后facebook上线了。

我还想表达的一[......]

More

我的2011

站在现在这个位置回头看过去这一年,百感交集。
12个月前的今天,我还在阿里,刚代表公司参加完velocity china,当时的我拿不定主意,反复思考创业的想法。
9个月前,我递交了离职申请,牛牛休学来到杭州,我们踌躇满志,写计划书,见风投。
6个月前,如愿拿到风投,我们和学长回到软院,和小八韩旭一起封闭开发。
3个月前,我带着失败,来到北京,在offer间犹豫。
2个小时前,和王兴开完会,从美团下班,去健身房,15组器械,20分钟跑步机。
在2011年每个我曾停留过的时间点上,我从来没想到过,之后三个月的变化,会如此的夸张和剧烈。
创业会失败,项目会失败,代码会失败。
我最欣慰的事情就是,体验和朋友不会离你而去。当明天的太阳升起,GF还会在我身边。在这一年里我认识了太多太多的人,做了太多太多我之前从没想过也从没做过的事情,犯了太多太多我之前意想不到感到羞耻的错误,读了71本书,让我前所未有的了解自己,看清自己。
2011年,这一年我所接触的东西,大于我之前22年的总和。
感谢一直支持着我的GF,感谢陪我在杭州/软院的你们,感谢庞总,感谢在天使湾开导我的朋友,感谢美团的founder给我这个机会。
2011年之后,我明白我的目标是珠穆朗玛,但现在的我意志薄弱,身体瘦弱,技术粗糙。我要坚持日复一日的训练,直到我有信心,再度出发。

Rsync的细节

rsync有两个参数,-O和-u.
-O在man rsync里面的说法是:
-O, –omit-dir-times omit directories when preserving times
-U在man rsync里面的说法是:
-u, –update
This forces rsync to skip any files which exist on the destina-
tion and have a modified time that is newer than the source
file. (If an existing destination file has a modify time equal
to the source file’s, it will be updated if the sizes are dif-
ferent.)
今天回滚失败的原因就是-u参数,-u的意思是只要目标机器上的文件比来源机器的文件新,就不会覆盖它,但是回滚的时候,来源机器上的文件是旧文件,所以导致了回滚失败.

还有就是-O参数,看字面意思,-O是指忽略保留了修改时间的目录.
但他到底是什么意思呢?是指我传输时,忽略时间旧的目标目录,从而不更改目标目录的修改时间呢?
还是忽略目标目录的原修改时间,更改目标目录的修改时间呢?
答案是后者.
我现在怀疑我的英语是学的好呢还是不好呢.

tcgetattr: Invalid argument

问题现象及原因
最近改进了一下现有的代码上线脚本,把原有的从线下重复顺序发布到线上的方式改为先发布到线上一台机器,再同步到其他线上机器的方式.
所以需要线下机器在本地脚本中,远程在一台线上机器上执行另外一个远程命令:
线下机器中:

ssh srv14 "/home/sankuai/bin/sync.www.sh"

线上机器中的sync.www.sh中:

ssh -tt $SERVER "sudo /sbin/service httpd graceful"

因为现在线上机器的/etc/sudoer里有一项配置:Defaults requiretty
所有要求所有sudo命令的执行都要有tty环境,但是所以在线上机器的脚本中使用了-tt参数,强制使用tty方式远程执行sudo命令.
但关键是,线下上的那个远程执行线上机器的命令没有加-t参数,所以线上机器在运行脚本的过程中本身是不在tty环境下的.因此导致了出现”tcgetattr: Invalid argument”的错误.
解决方法:
在线下的脚本中给ssh 加上-t参数,使远程登录到srv14的过程使用tty环境,从而解决本问题:

ssh -t $SERVER "/home/sankuai/bin/sync.www.sh"

Python正则提取文本的小trick

这个trick在解析日志的时候很有用,我看到网上很多人还在使用findall之类的办法来提取网页或日志中匹配的数据。用这个方法会更好些:)
python的docs有讲到:
(?P<name>…)
Similar to regular parentheses, but the substring matched by the group is accessible within the rest of the regular expression via the symbolic group name name. Group names must be valid Python identifiers, and each group name must be defined only once within a regular expression. A symbolic group is also a numbered group, just as if the group were not named. So the group named id in the example below can also be referenced as the numbered group.
For example, if the pattern is(?P<id>[a-zA-Z_]\w*), the group can be referenced by its name in arguments to methods of match objects, such as m.group(‘id’) or m.end(‘id’), and also by name in the regular expression itself (using (?P=[......]

More

Nginx Proxy buffer 工作原理

网上一直没有proxy buffer原理的权威解读,大多数都是自己的猜测,这次花了一天多时间仔细读了nginx的相关源码,也泡了泡Nginx的论坛,总算彻底搞明白了这个问题,写成此文,可以说是网上能找到的最权威的中文解读了。
相关参数
proxy_buffer_size
语法: proxy_buffer_size the_size

默认值: proxy_buffer_size 4k/8k

上下文: http, server, location

该指令设置缓冲区大小,从代理后端服务器取得的第一部分的响应内容,会放到这里.

小的响应header通常位于这部分响应内容里边.

默认来说,该缓冲区大小等于指令 proxy_buffers所设置的;但是,你可以把它设置得更小.
proxy_buffering
语法: proxy_buffering on|off

默认值: proxy_buffering on

上下文: http, server, location

该指令开启从后端被代理服务器的响应内容缓冲.

如果缓冲区开启,nginx假定被代理的后端服务器会以最快速度响应,并把内容保存在由指令proxy_buffer_size 和 proxy_buffers指定的缓冲区里边.

如果响应内容无法放在内存里边,那么部分内容会被写到磁盘上。

如果缓冲区被关闭了,那么响应内容会按照获取内容的多少立刻同步传送到客户端。

nginx不尝试计算被代理服务器整个响应内容的大小,nginx能从服务器接受的最大数据,是由指令proxy_buffer_size指定的.

对于基于长轮询(long-polling)的Comet 应用来说,关闭 proxy_buffering 是重要的,不然异步响应将被缓存导致Comet无法工[......]

More

普人特福的博客cnzz&51la for wordpress,cnzz for wordpress,51la for wordpress

无觅相关文章插件,快速提升流量