github/chapters/README.md
2024-05-29 12:12:40 +08:00

119 lines
7.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

前言
===
关于作者
---
黄峰达Phodal Huang是一个创客、工程师、咨询师和作家。他毕业于西安文理学院电子信息工程专业现作为一个咨询师就职于 ThoughtWorks 深圳。长期活跃于开源软件社区 GitHub目前专注于物联网和前端领域。
作为一个开源软件作者,著有 Growth、Stepping、Lan、Echoesworks 等软件。其中开源学习应用 Growth广受读者和用户好评可在 App Store 及各大 Android 应用商店下载。
作为一个技术作者,著有《自己动手设计物联网》(电子工业出版社)、《全栈应用开发:精益实践》(电子工业出版社,正在出版)。并在 GitHub 上开源有《Growth全栈增长工程师指南》、《GitHub 漫游指南》等七本电子书。
作为技术专家,他为英国 Packt 出版社审阅有物联网书籍《Learning IoT》、《Smart IoT》前端书籍《Angular 2 Serices》、《Getting started with Angular》等技术书籍。
他热爱编程、写作、设计、旅行、hacking你可以从他的个人网站[https://www.phodal.com/](https://www.phodal.com/) 了解到更多的内容。
其它相关信息:
- 微博:[http://weibo.com/phodal](http://weibo.com/phodal)
- GitHub[https://github.com/phodal](https://github.com/phodal)
- 知乎:[https://www.zhihu.com/people/phodal](https://www.zhihu.com/people/phodal)
- SegmentFault[https://segmentfault.com/u/phodal](https://segmentfault.com/u/phodal)
当前为预览版,在使用的过程中遇到任何问题请及时与我联系。阅读过程中的问题,不妨在 GitHub 上提出来:[Issues](https://github.com/phodal/github/issues)
阅读过程中遇到语法错误、拼写错误、技术错误等等,不妨来个 Pull Request这样可以帮助到其他阅读这本电子书的童鞋。
我的电子书:
* 《[GitHub 漫游指南](https://github.com/phodal/github-roam)》
* 《[我的职业是前端工程师](https://github.com/phodal/fe)》
* 《[Serverless 架构应用开发指南](https://github.com/phodal/serverless)》
* 《[Growth全栈增长工程师指南](https://github.com/phodal/growth-ebook)》
* 《[Phodal's Idea 实战指南](https://github.com/phodal/ideabook)》
* 《[一步步搭建物联网系统](https://github.com/phodal/designiot)》
* 《[RePractise](https://github.com/phodal/repractise)》
* 《[Growth全栈增长工程师实战](https://github.com/phodal/growth-in-action)》
我的微信公众号:
![作者微信公众号phodal-weixin](../img/wechat.jpg)
我的 GitHub 主页上写着加入的时间——``Joined on Nov 8, 2010``,那时才大一,在那之后的那么长的日子里我都没有登录过。也许是因为我学的不是计算机,到了今天——``2015.3.9``,我才发现这其实是程序员的社交网站。
过去,曾经有很长的一些时间我试过在 GitHub 上连击,也试着去了解别人是如何用好这个工具的。当然粉丝在 GitHub 上也是很重要的。
在这里,我会试着将我在 GitHub 上学到的东西一一分享出来。
## 我与 GitHub 的故事
在我大四找工作的时候试图去寻找一份硬件、物联网相关的工作PS专业是电子信息工程。尽管简历上写得满满的各种经历、经验然而并没有卵用。跑了几场校园招聘会后十份简历PS事先已经有心里准备一个也没有投出去——因为学校直接被拒。我对霸面什么的一点兴趣都没有千里马需要伯乐。后来我加入了[Martin Flower](https://martinfowler.com/)所在的公司,当然这是后话了。
这是一个残酷的世界在学生时代如果你长得不帅不高的话那么多数的附加技能都是白搭PS通常富的是看不到这篇文章的。在工作时期如果你上家没有名气那么将会影响你下一份工作的待遇。而很多东西却可以改变这些GitHub 就是其中一个。
注册 GitHub 的时候大概是大一的时候,我熟悉的时候已经是大四了,现在已经毕业一年了。在过去的近两年里,我试着以几个维度在 GitHub 上创建项目:
1. 快速上手框架来实战,即 demo
2. 重构别人的代码
3. 创建自己可用的框架
4. 快速构建大型应用
5. 构建通用的框架
### GitHub 与收获
先说说**与技能无关的收获**吧,毕业设计做的是一个《[最小物联网系统](https://github.com/phodal/iot)》,考虑到我们专业老师没有这方面知识,答辩时会带来问题,尽量往这方面靠拢。当我毕业后,这个项目已经有过百个 Star 了这样易上手的东西还是比较受欢迎的PS不过这种硬件相关的项目通常受限于GitHub上硬件开发工程师比较少的困扰
毕业后一个月收到 PACKT 出版社的邮件PS他们是在 GitHub 上找到我的),内容是关于 Review 一本[物联网](iot)书籍,即在《[从 Review 到翻译 IT书籍](http://www.phodal.com/blog/review-it-books-with-translate-book/)》中提到的《Learning Internet of Things》。作为一个四级没过的"物联网专家",去审阅一本英文的物联网书籍。。。
当然,后来是审阅完了,书上有我的英文简介。
![Phodal Huang Introduction](../img/phodal-intro.jpg)
一个月前,收到 MANNING 出版社的邮件PS也是在 GitHub 上),关于 Review 一本[物联网](iot)书籍的目录,并提出建议。
也因此带来了其他更多的东西,当然不是这里的主题。在这里,我们就不讨论各种骚扰邮件,或者中文合作。从没有想象过,我也可以在英语世界有一片小天地。
这些告诉我们GitHub 上找一个你擅长的主题,那么会有很多人找上你的。
### GitHub 与成长
过去写过一篇《[如何通过 GitHub 提升自己](http://www.phodal.com/blog/use-github-grow-self/)》的文章,现在只想说三点:
1. 测试
2. 更多的测试
3. 更多的、更多的、更多的测试
没有测试的项目是很扯淡的,除非你的项目只有一个函数,然后那个函数返回``Hello,World``。
如果你的项目代码有上千行如果你能保证测试覆盖率可以达到95%以的话,那么我想你的项目不会有太复杂的函数。假使有这样的函数,那么它也是被测试覆盖住的。
如果你在用心做这个项目,那么你看到代码写得不好也会试着改进,即重构。当有了一些,你的技能会不断提升。你开始会试着接触更多的东西,如 stub如 mock如 fakeserver。
有一天,你会发现你离不开测试。
然后就会相信:**那些没有写测试的项目都是在耍流氓**
## 为什么你应该深入 GitHub
上面我们说的都是我们可以收获到的东西,我们开始尝试就意味着我们知道它可能给我们带来好处。上面已经提到很多可以提升自己的例子了,这里再说说其他的。
### 方便工作
我们可以从中获取到不同的知识、内容、信息。每个人都可以从别人的代码中学习,当我们需要构建一个库的时候,我们可以在上面寻找不同的库和代码来实现我们的功能。如当我在实现一个库的时候,我会在 GitHub 上找到相应的组件:
- Promise 支持
- Class 类PS没有一个好的类使用的方式
- Template 一个简单的模板引擎
- Router 用来控制页面的路由
- Ajax 基本的 Ajax Get/Post 请求
### 获得一份工作
越来越多的人因为 GitHub 获得工作,因为他们的做的东西正好符合一些公司的要求。那么,这些公司在寻找代码的时候,就会试着邀请他们。
因而,在 GitHub 寻找合适的候选人,已经是一种趋势。
### 扩大交际
如果我们想创造出更好、强大地框架时,那么认识更多的人可能会带来更多的帮助。有时候会同上面那一点一样的效果