forecho 的独立博客

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

2015年我读了哪些书?

2016年01月10日

时间永远不会去等你,不管你愿不愿意,2016年还是来了。

说来惭愧,以前都是在上班的地铁上才有时间读书,但是2015年大多数情况是我上班的地铁上人非常多,挤的看书的空间都没了。 这种情况直到我11月换了一家上班有一小时弹性工作制的公司后才得以改善,以后再也不用赶着上班高峰期坐地铁了。

书虽然不多,但是还是要总结一下:

《浪潮之巅》

这本书讲的是 AT&T 公司、IBM 公司、苹果公司、英特尔公司、微软公司、思科公司、雅虎公司和 Google 公司等一些公司的发展 历史,虽然每个公司讲得都不多,但是我觉得搞互联网的人都应该了解那段历史。至少了解什么是摩尔定律?什么是安迪 – 比尔定律?

这本书也是非常的厚,前前后后我大概看了好几个月。总的来说这本书给我的受益很多,我非常喜欢了这类讲公司历史的书。

使用 Kindle 阅读

2016年01月09日

与书结缘的时间线

也许是小时候受四姨夫的印象,很喜欢看书。前几年回家过年看到他,发现你衣服里面还带着一本宋词鉴赏的书,没想到 他还在看这样的书。

初中那会儿出去跟家人出去逛街,看到书店都两眼放光不想走了。那个时候身上没多少钱,记得有一次和弟弟去逛 图书馆只买了三本书确花了50多块钱,我到现在还记得是哪三本书 - 一本是古希腊神话,另外一本是英语语法的书,最后一本书是英语短语的书。

后来在武汉的时候很喜欢下午5点多的时候去街上摆书的地摊上看看,5块钱就能买3本《格言》和《特别关注》等比较旧一点的杂志,但是我觉得非常值。

再后来高中的时候碰到一个好的语文老师,对于我们这种不太喜欢听语文课的人,她不反对我们上她的课看其他书,当然前提是看好书,她非常反对修仙类的网络小说, 当然包括当时非常火的《诛仙》、《盗墓笔记》等等都归类为不好的书。曾经当着我们的面把一个不听她话的同学的书给撕掉了。对于我这种看书比较慢的人,我当然不喜欢 看那些儿书了,那个时候我看的最多的有蔡智恒、沧月、蔡骏、韩寒的书了,当然我也不否认我看过几本郭敬明和饶雪漫的书,看书的品味都是受当时玩的很好的哥们影响的,非常感谢他们。

上大学之后我看书的时候倒是少了,其实当时报专业的时候我都不知道我们专业具体学什么的,只知道是计算机方面。后来证明我选择的正式我喜欢的, 专业课我基本上都会认证去学。学校有一个标志性建筑 - 图书馆,是我非常向往的地方。一楼和二楼是杂志区,算是比较新的,刚开始去的次数比较多,但是后来 自从有了电脑之后,在高中养成的爱好 - 动漫和电影,慢慢的被放大了,晚上经常在寝室看电影了。但是偶尔回去三楼借一下管理类的书, 每次放寒假都会去五楼接专业书带回家过年看,也会去看一下杂志。关于看书整个大学有几件事印象比较深的书:

  • 在杂志看了一本互联网周刊的杂志,里面有介绍作为一个慢公司的豆瓣,觉得这个公司很有意思,给我留下较深过的印象。
  • 看了一本关于 Google 的书,好像叫《搜主义》,才开始了解 Google。
  • 看了一本分享全球企业家演讲文章的书,那个时候开始喜欢看一些管理类的书。
  • 第一年寒假的时候借了一本 C 语言的书,回去看,才真正知道 C 语言是怎么回事。之前上课课程安排的都不好,老师在上面讲的很投入,但是我在下面打瞌睡。

塑造成功框架的哲学

2015年12月27日

来源:Philosophies that Shaped Successful Frameworks

在过去的十年里我们看到了许多软件框架的出现,像 SpringRuby on Rails 已经是非常成功的框架了,掌握它们就意味着打开多扇就业机会的大门了。然而,对于每一个框架的成功,背后的大多数开发人员都不被人关注。2008年1月1日维基百科 列出了67个 Web 框架。然而今天,超过三分之二的消失在列表中或在三年内没有更新。作为 Yii 框架的创造者,我花了很多时间调查各种框架和理解为什么有些成功,有些失败了。我将描述我发现塑造成功框架的一些哲学。

为什么框架?

建立一个成功的框架,重要的是要了解什么是框架,开发人员为什么需要它们。

Douglas C. Schmidt 等人 认为框架作为一个集成的软件构件(如类、对象和组件)集合,为相关应用程序提供一个可重用的体系结构。根据这一定义, 框架应该是一个已完工的应用骨架组成可重用和可定制的组件。开发人员将扩展并定制一个框架通过提供他们的应用程序和领域特定逻辑来形成一个完整的应用程序。

一个框架典型的特征就是所谓的控制反转(inversion of control)。框架通常扮演着组织主程序的角色和调用应用程序代码。这里是反过来的控制流——它调用我而不是我调用框架。下图说明了框架之间的关系,函数库,和应用程序。注意框架通常提供现成的功能的库,以帮助开发人员构建应用程序更快。

开发人员使用框架最重要的原因是框架如何提高生产力和帮助提高代码质量。例如,现代的框架(例如,django),经常提供代码生成工具或样板帮助立即启动新项目。此外,精心设计的框架内嵌安全保护措施,帮助预防开发人员犯典型的安全漏洞。

企业使用框架,还有一个额外的好处是,它可以应用在整个企业,帮助执行标准。框架提供了记录模式,详细的设计和实现的工具用于在所有应用程序之间提供一个一致的结构。例如,在 Capital One (译者注:薛强所在的公司) 我们开发一个 「Chassis」的框架作为一个集成的基础,统一了许多厂商和顾客公司内部开发应用程序的 API。

当然,并不是所有的开发人员喜欢使用框架。一些一致的抱怨包括陡峭的学习曲线,框架耦合性比较高,性能较低,等等。今天,在这篇文章中我将为你解释现代框架如何的解决这些问题,让大多数的这些抱怨不再适用。

为什么要开源

2015年12月17日

我写了一个开源项目

2015 年初的几个月,Yii2 框架发布了,出于对 Yii2 的热爱,再加上是年底,工作没那么忙,本着学习和致敬 Ruby-China 的心态, 我开始用 Yii2 开发一个社区。其实 PHPhub 社区也不错,但是没有 Yii 节点,呵呵。

由于以前有一点的 Yii1 的基础,所以 Yii2 上手起来还算顺利。在网上找了一下资料,多看官方文档,开发起来也是很快的。

开发的过程中参照了几个项目,去读他们的源码,学了不少东西。

我一个人把基本功能开发完之后,然后发帖宣传了一下,还欢迎大家一起来参与进来,也建立一个 QQ 群,陆陆续续有人加进来,但是实际上参与开发贡献代码的的人只有几个。

Forecho 的利器

2015年12月15日

介绍一下你自己和所做的工作。

Hi,大家好,我是 forecho,目前在做程序后端开发,主要是 PHP,业余时间也折腾下 iOS 和 Python AND Ruby。工作已经有4年多了,目前在深圳。

你都在使用哪些硬件?

  • 一台2012年款的 MacBook Pro 15寸的中配,8G 内存,2年前被我换成 256G SSD 之后,除了没有 Retina 屏和有点重之外,其他的都还好。
  • iPhone5 用了3、4年,自己换了 home 键和电池,打算再坚挺1年,直到 iPhone7.
  • 戴尔(DELL)UltraSharp U2412M,配合 MacBook 做双显示器用。自从买了一个电视盒子,也用来看电视了。
  • Kindle5 对于爱看书的我,2012 年年底就买了,一直用到现在,看过不少书,真心觉得是最值的一个电子设备,每天上班比背着。前几天买了海淘了个 KPW 3 还没到货。
  • iPad mini 2,之前有一个 iPad Air 1 的后来嫌太重了,换了 mini 了。本来打算用来用 PDF 的,现在沦落到看各种视频,给女朋友打游戏的地步了。
  • 极路由,当然其他智能路由器也是可以的,配合 Shadowsocks 可以实现路由器翻墙,设备只要连接这个 WiFi 就在墙外,在家可以自由的刷 Twitter,看 YouTube。
  • 天猫魔盒,当初买这个就是图他便宜,感觉越用反应越慢。
  • 酷冷至尊的一款 87 键茶轴机械键盘。本来打算买个 FILCO 圣手二代,但是感觉太贵,没下手,换了这个中等价位的,感觉还可以。

处理 Git 忘记切分支修改代码的情况

2015年12月15日

场景

有时候没注意分支,直接在 master 上做开发了,但是这是团队开发的大忌。那如果发生了这种情况怎么办,也不用着急, 我教你怎么解决。

解决问题

假设你现在在 master 分支上已经修改了文件,那么我们可以使用下面的命令把当前未提交到本地(和服务器)的代码推入到 Git 的栈中:

1
$ git stash

查看效果:

1
$ git status

创建分支 && 切换分支:

1
$ git branch dev && git checkout dev

还原代码:

1
$ git stash apply

ok,问题解决。下面我们再补充点知识。

如何让团队里的工程师对工作不厌烦

2015年11月30日

原文:《Coding is boring, unless…》

作为一名工程师,我从来没有坚持同样的工作超过两年了。

每个新工作是一个不错的职业选择,高薪在我们行业中也是很常见的。但是我离职让我之前的老板不是很高兴。其中一些试着说服我,但是我觉得留下来很无聊,所以我不能留下来。

(免责声明:我很幸运的生活在一个编程工作比程序员更多的地方,所以我换工作有很多选择的余地。)

我现在作为 Enki 公司的联合创始人兼首席技术官。因此,我负责了公司的工程师文化。我工作的一部分是要确保我们的开发人员不会像我过去有时候一样的无聊。

为了帮助我们的团队,我们已经设计了一些策略对抗无聊并且已经应用到我们公司。因为这种策略目前运行良好,我想在这里分享下。

Ubuntu 使用 PPA 安装 PHP 扩展

2015年11月19日

简介

PPA,即 Personal Package Archives 缩写,也就是个人软件包集。

有很多软件因为种种原因,不能进入官方的 Ubuntu 软件仓库。 为了方便 Ubuntu 用户使用,launchpad.net 提供了 ppa,允许用户建立自己的软件仓库, 自由的上传软件。PPA 也被用来对一些打算进入 Ubuntu 官方仓库的软件,或者某些软件的新版本进行测试。

使用

我一直不太喜欢用源码编译的方式安装 PHP 扩展,主要是麻烦。然后偶然发现了这种方式安装 PHP 扩展,真是太方便了。

下面我们来讲讲怎么使用:

安装 PPA

1
2
sudo add-apt-repository ppa:ondrej/php5
sudo apt-get update

安装 php mcrypt 扩展

1
sudo apt-get install php5-mcrypt

PHP 中的动态属性和 StdClass

2015年11月08日

翻译 Dynamic Properties in PHP and StdClass

JavaScript 和 Python 允许对象实例的动态属性。事实证明,PHP 也是如此。看官方 PHP 对象和类文档可能会导致你相信动态实例属性需要自定义 __get 和 __set 魔术方法。其实不用。

简单,内置的动态属性

看看以下代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class DynamicProperties { }
$object = new DynamicProperties;
echo isset($object->foo) ? 't' : 'f'; // f
echo PHP_EOL;
// Set Dynamic Properties foo and fooz
$object->foo = 'bar';
$object->fooz = 'baz';
// Isset and Unset work
isset($object->foo); // true
unset($object->foo);
// Iterate through Properties and Values
foreach($object as $property => $value)  {
    echo $property . ' = ' . $value . PHP_EOL;
}
// Prints:
// fooz = baz

25岁之后

2015年09月13日

现在是2015年9月13号17点53分54秒,是我迈向26岁之后的第三天了。过生日的方式是请了几个好朋友吃饭,大家一起聊聊天,女朋友送了我礼物,很是开心。

2011年11月8号的时候我在知乎回答了一个问题,26 岁的时候你正在做什么?想要做什么?由于当时只有21岁,所以我写下了下面这个希望:

我现在21岁了,还没毕业,大三没读了,暑假出来实习就没回去上课了,一直到现在。 所在的公司呢?是个创业型的小公司,刚开始干着挺有激情的,现在感觉有点累了,不过,还是要挺住,多学习一点东西。 26岁的时候,我希望能有着一群朋友,然后我们组成一个团队,有着一个共同的梦想,那时候的我们正在为之而奋斗,像《海贼王》中的路飞他们团队。 26岁的时候,我希望我希望我的父母、弟弟、爷爷、以及身边的亲人、朋友身体都很健康。 26岁的时候,我希望我也能做出一个百万级用户的互联网产品出来,至于做什么,我现在都还在想。 26岁的时候,我希望我已经找到了一个能懂我的女生。 26岁的时候,我想我已经创业了。 26岁的时候。。。。

那么现在我已经26岁了。时间过的真的很快啊,离这个回答都4年过去了,我来深圳也3年多了。那时候的我是在第一家公司,而现在的我都不知道换了几家了,但是现在的这家公司我待了快2年了,我自己都不敢相信自己能在一个公司待上这么久。