forecho 的独立博客

把生命浪费在美好的事物上

读《打造Facebook》

2013年10月07日

这本书应该是我从云南回来的时候开始看的,也是我花的最短时间看完的一本书。用Kindle看完的,废话说完了,下面进入主题。

作者是曾经的Facebook的中国工程师,他加入Facebook那会儿,Facebook

300人都不到。那么这本书就是从他的视角带着我们去了解Facebook的一些内部情况。之前就很想读《Facebook效应》,但是被搁置了,所以这本书是我读的第一本关于Facebook的书。

Facebook的CEO - 马克 扎克伯格一直把Google当作自己的偶像。所以跟Google一样,Facebook也是一家以工程师为驱动的公司,在公司里面工程师同样会有很大的话语权,同样会有很高的薪水。Google有「20%时间做自己感兴趣的项目」的企业文化,那么Facebook的企业文化就是「黑客文化」,并且每年的F8大会之后都会有编程马拉松。

Facebook的招人要求很高,他们只招一流的人才。跟乔布斯是一样的,只有跟一流的人才做事你才会打造出一流的事情。并且Facebook非常的注重寻找人才这块业务,如果一个一流的人才没有到你的公司来上班,他很有可能就回去你的竞争对手公司上班去了。

通过Facebook的面试之后会有6周的「新兵训练营」,主要是让你去了解公司的一些情况,在这期间你还要是找到自己感兴趣的小组,选择自己的职位。如果你上班满一年之后感觉自己的岗位以及自己做的事很无聊,没有挑战的时候,你还可以参与公司的「Hack-A-Month计划」,说白了就是换组工作,只不过你首先要先去别的小组试工作一个月,一个月之后,双方小组满意之后,可以申请换组,这个计划的前提是你的技术足够牛。

在Facebook上班你需要有跟公司同样的价值观,大家都是为了Facebook整体着想,不能只为自己的小组着想。大家的劲都往一处使,想想在这样一个公司上班,是多么幸福的一件事。在Facebook绝大多数关于公司的情况都是透明的,因为扎克伯格希望大家都知道自己做事的一些情况,在一个什么样的公司以及公司每天的一些变化,同时有个规定就是这些内部的消息必须不能向外部泄露出去。

在Facebook有个很重要的观点是:不要去追求完美。不要想着一次去把事情做完美,完成比追求完美更重要。当然这个前提就是你这个完成之后的产品也不能太差了。iPhone追求完美是因为它是硬件产品,更新换代很不方便,但每一代iPhone都不是最完美的,不然怎么会有新一代的iPhone呢?但是作为web开发的Facebook就不同了,web开发有个很大的优势,就是产品在服务端,产品升级换代非常的方便,所以刚开始做产品的时候不需要去追求完美,我们做完一个版本然后做大量的数据分析、数据调查。根据反馈设计新的功能。

Facebook的更新都是灰度发布的,可以设定属性,根据熟悉更新部分,然后根据反馈可以快速的应变。

Comments

Rui Chopper: 以工程师 为驱动的公司,在国内很少见,几乎没有。。。哎

ForEcho: 其实是有的,只不过可能是小公司,名气没那么大。可能氛围也不会有Facebook和Google的那么好。

这次旅行的收获

2013年10月07日

龙哥说的好:「出来的玩的,要么是失恋的,要么是失业的,要么就是跟风」,我怎么感觉我三个都沾点边呢? 这次出来玩,给出了很多第一次:

  • 第一次逃票,有点刺激,但是后来发觉一点都不好玩。
  • 第一次搭车,搭车倒是穷游的好办法,你想想我坐车从大理去泸沽湖一趟就80呢,来回搭车我能省好多钱。并且搭车是一个很好的体验,你永远不知道谁会搭你,然后你们将会发生什么样的故事。感觉挺好玩的。
  • 第一次住青旅,青旅大部分都是上下铺床位房,比较便宜,大家都是出来玩的,然后在里面住能遇到很多小伙伴,如果你们的线路一致,很容易的就能组队结伴。有的青旅男女混住有的是分开住。最吸引我的是青旅文化,大家一起玩,在院子里面聊天。彼此分享着自己的故事。发现住青旅的大家很容易就能搭讪上,很简单的一句「hello」,然后你们就可以聊上了。

第二站:云南

2013年09月26日

我的线路是:深圳->昆明->大理->双廊->大理->丽江->泸沽湖->丽江->昆明->深圳(本来计划要去香格里拉的,但由于时间问题,没去成,留给下次再去吧。)

 一、到昆明

一切都来得及,就怕你不做

2013年09月04日

最近一直在忙着技术方面的事,文章都是一些技术问题。看在今天是我步入23岁第一天的日子上,我决定写一篇最近的总结。

最近两个月游戏基本上都没玩了,一心想着学多点技术,有时候看看Ruby、Python、Go、iOS开发以及mongoDB。不满足现在的PHP技术,一心渴望学到更多,但是刚开始去学一门技术真的是很难的,正所谓万事开头难,但是我觉得只要坚持下来了,过一阵子你一定会有收获的,至于这个时间是多长,收获有多少那完全看你努力的程度了。有时候你需要问问自己:「我真的努力了吗?」

这个就像我刚开始学Yii框架的时候,最开始头都摸不着,但是还是坚持下来了,看视频教程,写代码,然后用Yii开发项目,还好公司的项目是用Yii开发的,这样学起来更快,但是虽然称不上是高手,但是基本问题都能自己解决了。解决问题的方式也是一门学问,我现在一般都是用Google搜索资料,如果没有找到资料的话,我就把问题的关键词换成英文的,这个时候你会发现,另一扇大门向你敞开了,你唯一要做的就是把英语学好,能看懂别人用英文写的解决方法,目前我英语水平只是一般般,我准备通过自己翻译一本Yii英文教材来提升自己的英文水平,也顺便再巩固一下Yii。

有时候Ruby文档看烦了换着看Python文档,有时候去看Go文档,有时候去看看一些其他非编程类的书。Kindle买的确实很划算,有时候出门我都愿意背着Kindle,哪怕我只是看了半个小时的书,我都觉得值了。今年唯一一本用Kindle看完的书是《把时间当作朋友》,和我看的《拆掉思维里的墙》一样,都是教你如何管理自己以及如何开启心智的书。很不错的一本书,这本书其实的宗旨就是『所有学习上的成功,都只靠两件事:策略和坚持,而坚持本身就应该是最重要的策略之一』。难以坚持下去的事情,基本都是因为没有迫切的欲望和激情。最近我连周末睡懒觉的习惯都改了,觉得睡懒觉真是太浪费时间了,但是中午小睡半个小时还是值得的。《暗时间》看了大概60%了。最近越来越喜欢独立思考了,很喜欢独立思考的乐趣,我要争取做一个特立独行的人。最近看的《我给你讲过笑话,你可别哭》就是独立思考出来的文章,觉得有独立思考能力很有意思。

《暗时间》也是一本很有意思的书,并且是一个同行写的,交我们如何去管理自己的时间,还有一个专门的群组,氛围非常的好。上面的一篇文章《为什么你应该(从现在开始就)写博客》真的让人很受用。不应该觉得没人看你的博客就不写博客了,不为别人之为自己写博客,不要觉得文笔差了就不写,好的文笔都是慢慢写出来了,写的多了,文笔就好了。『人生中天大的真谛,都不敌一句「我乐意」来得实在,因为你是为自己真实地活着,你为自己设定的价值才是人生最大的真谛。』

发现最近越来越喜欢电影这个东西了,每周末我都会找时间去看几部电影,感觉非常的享受。并且这段时间一直在想办法提示自己的能力,为了以后能赚到更多的钱,去享受物质带来的美好生活,我现在必须很努力,而这个努力不应该只是说说而已。

记得有次面试,面试官问我「你有着什么梦想?你为了实现这个梦想做了什么计划?」。其实第一个问题,我以前早就考虑过了,我的梦想就是在26岁的时候要做一款百万个用户的产品并且成为一个架构师。但是第二个问题让我愣了一下,然后就敷衍过去了。事后我才发觉,我一直只是把自己的梦想挂嘴边,但是从来没有考虑过要去实现这个梦想要去付出怎样的代价,甚至都不清楚,实现这个梦想我要去做些什么?一直想着时间还早,但是现在我已经23年了,离梦想只有3年了,我却连实现这个梦想需要做些什么都不知道,太可笑了。

幸运的是我领悟得不算晚,我现在努力还来得及。就怕你不做。

感谢那些瞧不起我的人,是他们让我有了很大的动力。

个人有个缺点,喜欢逛空间,喜欢刷微博,知乎,V2EX。这可能都是在武汉上班太安逸了留下不好的习惯。以后一定要把握这个时间,尽量去减少这个不必要时间,正确的时间做正确的事。最近心情比较沉闷,好久没出去玩了,打算去云南旅游去,换一下心情。

最近一直在用Linux和Mac系统,感觉离开Windows

少了很多的烦恼。Mac还是最好的系统。

这篇文章我写的比较乱,是想到什么就写什么的,你可以简单的理解为意识流风格。

Comments

zaker: 写的蛮好的啊

ForEcho: 多谢赏识。话说你这个名字叫zaker是什么意思?这个App确实还不错。

zaker: 恩恩之前比较喜欢这个APP,zaker这个名字还蛮有意思的,所以就取了这个名字,话说在武汉毕业的?

zaker: 武汉交通职业学院的啊,我们学校在你们学校附近好像

ForEcho: 是的啊,你们学校叫什么?

zaker: 华师,现在在哪里工作啊?

ForEcho: 话说华师不是在广埠屯吗?我们学校在黄家湖大学城。我今年来的深圳。

zaker: 哦哦我记错了,在哪里工作啊?招人不啊?

ForEcho: 你也是PHPer?这边工作还是比武汉多的。

zaker: 之前做java现在在做php,新手~~~~

乔巴瑞: “难以坚持下去的事情,基本都是因为没有迫切的欲望和激情”我很喜欢这句话,看了这篇文字,感觉受益匪浅啊,真心该好好思考最近的生活状态了。。。

ForEcho: 就应该每过一段时间给自己打一针「精神鸦片」。

Mac强大的Homebrew - No Module Named PyQt4报错

2013年09月01日

安装了这个东西之后可以帮助你非常的省事的安装其他应用程序。官网链接。 其实还有一个MacPorts,跟这个Homebrew类似的功能,但是我更喜欢Homebrew的简洁。(这两个貌似不兼容,最好不要同时安装。) 一条brew install pyqt命令就可以安装完PyQt4的插件了。我就是用brew install mongondb安装的mongonDB。 这样安装完PyQt之后然后简单写了第一个程序,代码如下:

import sys
from PyQt4 import QtGui

app = QtGui.QApplication(sys.argv)

widget = QtGui.QWidget()
widget.resize(250, 150)
widget.setWindowTitle('simple')
widget.show()

sys.exit(app.exec_())

运行的时候报错:No module named PyQt4 但是明明我已经安装好了,通过搜索发现是PATH路径的问题。 解决方法是:vim .bash_profile 打开这个文件,然后添加下面代码:

export PATH=/usr/local/bin:$PATH
export PATH=/usr/local/share/python:$PATH

OK,再运行前面的程序,正常弹出一个窗口,说明你成功了。 如果不确定自己的Python路径,可以用type python命令查看。   参考链接: https://github.com/mxcl/homebrew/issues/6176  https://github.com/mxcl/homebrew/issues/10324

PyCharm的SyntaxError:invalid Syntax错误处理

2013年08月30日

首先我这个代码是没有问题的,直接用终端python xxx.py运行是没有问题的。 但是我下载最先版本的PyCharm,然后导入项目,用它自带的Run运行后就报错SyntaxError:invalid syntax 然后我就去搜索,后来发现是Python版本的问题。我的Linux下有两个版本的Python,一个是2.7版的一个是3.3版本的。安装PyCharm的时候调用的是3.3版本的。 Python2.7打印格式是:

print 'a' #中间有空格
print ('a') #也支持这种方式

Python3不支持这种方式打印,只支持:

print('a') #必须有括号

因为print在python3中已经是一个函数而不是一条命令了 问题找到了,现在我们需要改PyCharm调用的Python版本,打开 File -> Settings -> Python In­ter­cepter -> Python In­ter­cepters ,然后在右侧点+添加你需要的版本即可。 现在重新运行程序,OK,正确打印,问题解决。

Comments

baocaixiong: 此文略无意义…

Code School 学习 Objective-C第一课笔记

2013年08月30日

学习地址是:http://tryobjectivec.codeschool.com/ 感觉非常有趣的体验,并且还能学习一下英文,英文单词都是比较简单的,我基本上都能看懂。 下面记录一下第一节课的笔记:

  • 申明数据类型都有NS字母开头。
  • 变量名称都有*符号开头。
  • 变量的值都有@符号开头。
  • 申明一个数组之后不能直接追加值。如果需要改变这个数组,需要重新赋值,可以参照12行代码。
  • 申明数组类型用[]符号,但是申明一个字典类型用的是{}符号。

Navicat for MySQL 11 Linux 破解方法

2013年08月28日

安装:解压后即可用。目录下的start_navicat文件为可执行文件。 破解:(找过好几个注册码都不能用,注册码生成器都是Windows平台的,Linux下不行) -—第一次执行start_navicat时,会在用户主目录下生成一个名为.navicat的隐藏文件夹。 -—把此文件夹删除后(删除文件夹命令是rm -rf .navicat),下次启动navicat 会重新生成此文件夹,30天试用期会按新的时间开始计算。

Yii中CLinkPager结合Bootstrap的样式分页

2013年08月09日

$this->widget(‘zii.widgets.CListView’, array( ‘dataProvider’=>$model->search(), ‘itemView’=>’_post’, ‘emptyText’=>’暂时没有数据’,
‘template’=>’{items}{pager}’, ‘pager’ => array( ‘header’=>false, ‘htmlOptions’=>array(‘class’=>’pagination’), ‘selectedPageCssClass’ => ‘active’,
‘hiddenPageCssClass’ => ‘disabled’, // ‘cssFile’=>false, // ‘maxButtonCount’=>25, // ‘selectedPageCssClass’=>’active’, // ‘hiddenPageCssClass’=>’disabled’, // ‘firstPageCssClass’=>’previous’, // ‘lastPageCssClass’=>’next’, // ‘firstPageLabel’=>’«’, // ‘lastPageLabel’=>’»’, // ‘prevPageLabel’=>’<’, // ‘nextPageLabel’=>’>’, ), ‘htmlOptions’=>array(‘class’=>’list-group’), ‘itemsTagName’=>’ol’, ‘itemsCssClass’=>’box-cell’, ‘pagerCssClass’=>’’, )); ?>

yii默认分页默认第一页是不显示首页和前一页的,加上上面的两行加亮代码就能解决这个问题。这样首页和上一页会总是显示。

Yii发邮件插件

2013年08月07日

一、Yii发邮件插件下载。 二,在配置文件/protected/config/main.php中载入组件,代码如下:

'components'=>array(
        'phpMailer'=>array(
            'class'=>'application.extensions.yiimailer.CPhpMailer',
            'host' => 'mail.myhost.com', //比如QQ的是smtp.qq.com
            'port' => 25,
            'from' => 'myname@myhost.com', //发件地址的用户名
            'fromName' => 'myname',//发件人
            'user' => 'username',//发件地址的用户名
            'pass' => 'password',//发件地址的密码
        ),
...

三、然后在控制器写入action,就可以发邮箱了,示例代码:

//发邮件
public function actionSendEmail()
{
    $mailer = Yii::app()->phpMailer->_mailer;
    $mailer->Subject = '人类已经阻止不了我发送邮件了';
    $mailer->Body = '<font color="red">hello, 我是葫芦娃</font>';
    $mailer->AddAddress('caizhenghai@gmail.com');
    //$mailer->AddAddress('xxx@gmail.com');
    $mailer->send();
}

  参考文章:http://www.yiichina.com/forum/topic/1417/ 其他yii发邮件插件以及方法:http://www.yiichina.com/forum/topic/63/