mirror of
https://github.com/phodal/github
synced 2026-05-22 16:48:40 +00:00
修复本应使用中文括号,却使用英文括号的错误
This commit is contained in:
parent
6199f1eee6
commit
2ad24256a4
9 changed files with 37 additions and 37 deletions
|
|
@ -108,7 +108,7 @@
|
|||
* [数据导入](http://github.phodal.com/#数据导入)
|
||||
* [Redis](http://github.phodal.com/#redis)
|
||||
* [邻近算法与相似用户](http://github.phodal.com/#邻近算法与相似用户)
|
||||
* [如何在GitHub“寻找灵感(fork)”](http://github.phodal.com/#如何在github寻找灵感fork)
|
||||
* [如何在GitHub“寻找灵感(fork)”](http://github.phodal.com/#如何在github寻找灵感fork)
|
||||
* [Lettuce构建过程](http://github.phodal.com/#lettuce构建过程)
|
||||
* [需求](http://github.phodal.com/#需求)
|
||||
* [计划](http://github.phodal.com/#计划)
|
||||
|
|
|
|||
|
|
@ -56,9 +56,9 @@
|
|||
|
||||
## 我与GitHub的故事
|
||||
|
||||
在我大四找工作的时候,试图去寻找一份硬件、物联网相关的工作(ps:专业是电子信息工程)。尽管简历上写得满满的各种经历、经验,然而并没有卵用。跑了几场校园招聘会后,十份简历(ps:事先已经有心里准备)一个也没有投出去——因为学校直接被拒。我对霸面什么的一点兴趣都没有,千里马需要伯乐。后来,我加入了[Martin Flower](https://martinfowler.com/)所在的公司,当然这是后话了。
|
||||
在我大四找工作的时候,试图去寻找一份硬件、物联网相关的工作(ps:专业是电子信息工程)。尽管简历上写得满满的各种经历、经验,然而并没有卵用。跑了几场校园招聘会后,十份简历(ps:事先已经有心里准备)一个也没有投出去——因为学校直接被拒。我对霸面什么的一点兴趣都没有,千里马需要伯乐。后来,我加入了[Martin Flower](https://martinfowler.com/)所在的公司,当然这是后话了。
|
||||
|
||||
这是一个残酷的世界,在学生时代,如果你长得不帅不高的话,那么多数的附加技能都是白搭(ps:通常富的是看不到这篇文章的)。在工作时期,如果你上家没有名气,那么将会影响你下一份工作的待遇。而,很多东西却可以改变这些,GitHub就是其中一个。
|
||||
这是一个残酷的世界,在学生时代,如果你长得不帅不高的话,那么多数的附加技能都是白搭(ps:通常富的是看不到这篇文章的)。在工作时期,如果你上家没有名气,那么将会影响你下一份工作的待遇。而,很多东西却可以改变这些,GitHub就是其中一个。
|
||||
|
||||
注册GitHub的时候大概是大一的时候,我熟悉的时候已经是大四了,现在已经毕业一年了。在过去的近两年里,我试着以几个维度在GitHub上创建项目:
|
||||
|
||||
|
|
@ -70,15 +70,15 @@
|
|||
|
||||
### GitHub与收获
|
||||
|
||||
先说说**与技能无关的收获**吧,毕业设计做的是一个《[最小物联网系统](https://github.com/phodal/iot)》,考虑到我们专业老师没有这方面知识,答辩时会带来问题,尽量往这方面靠拢。当我毕业后,这个项目已经有过百个star了,这样易上手的东西还是比较受欢迎的(ps:不过这种硬件相关的项目通常受限于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》。作为一个四级没过的"物联网专家",去审阅一本英文的物联网书籍。。。
|
||||
毕业后一个月收到PACKT出版社的邮件(ps:他们是在 GitHub 上找到我的),内容是关于Review一本[物联网](iot)书籍,即在《[从Review到翻译IT书籍](http://www.phodal.com/blog/review-it-books-with-translate-book/)》中提到的《Learning Internet of Things》。作为一个四级没过的"物联网专家",去审阅一本英文的物联网书籍。。。
|
||||
|
||||
当然,后来是审阅完了,书上有我的英文简介。
|
||||
|
||||

|
||||
|
||||
一个月前,收到MANNING出版社的邮件(ps:也是在 GitHub 上),关于Review一本[物联网](iot)书籍的目录,并提出建议。
|
||||
一个月前,收到MANNING出版社的邮件(ps:也是在 GitHub 上),关于Review一本[物联网](iot)书籍的目录,并提出建议。
|
||||
|
||||
也因此带来了其他更多的东西,当然不是这里的主题。在这里,我们就不讨论各种骚扰邮件,或者中文合作。从没有想象过,我也可以在英语世界有一片小天地。
|
||||
|
||||
|
|
@ -111,7 +111,7 @@
|
|||
我们可以从中获取到不同的知识、内容、信息。每个人都可以从别人的代码中学习,当我们需要构建一个库的时候,我们可以在上面寻找不同的库和代码来实现我们的功能。如当我在实现一个库的时候,我会在GitHub上找到相应的组件:
|
||||
|
||||
- Promise 支持
|
||||
- Class类(ps:没有一个好的类使用的方式)
|
||||
- Class类(ps:没有一个好的类使用的方式)
|
||||
- Template 一个简单的模板引擎
|
||||
- Router 用来控制页面的路由
|
||||
- Ajax 基本的Ajax Get/Post请求
|
||||
|
|
|
|||
|
|
@ -141,7 +141,7 @@ git push -u origin master
|
|||
|
||||
## GitHub 流行项目分析
|
||||
|
||||
之前曾经分析过一些GitHub的用户行为,现在我们先来说说GitHub上的Star吧。(截止:2015年3月9日23时。)
|
||||
之前曾经分析过一些GitHub的用户行为,现在我们先来说说GitHub上的Star吧。(截止:2015年3月9日23时。)
|
||||
|
||||
用户 | 项目名 | Language | Star | Url
|
||||
-----|---------- |----------|------|----
|
||||
|
|
|
|||
|
|
@ -8,12 +8,12 @@
|
|||
|
||||
显然我是在扯淡,这和敏捷软件开发没有什么关系。不过我也不知道瀑布流是怎样的。说说我所知道的一个项目的组成吧:
|
||||
|
||||
- 看板式管理应用程序(如trello,简单地说就是管理软件功能)
|
||||
- CI(持续集成)
|
||||
- 看板式管理应用程序(如trello,简单地说就是管理软件功能)
|
||||
- CI(持续集成)
|
||||
- 测试覆盖率
|
||||
- 代码质量(code smell)
|
||||
- 代码质量(code smell)
|
||||
|
||||
对于一个不是远程的团队(如只有一个人的项目) 来说,Trello、Jenkin、Jira不是必需的:
|
||||
对于一个不是远程的团队(如只有一个人的项目)来说,Trello、Jenkin、Jira不是必需的:
|
||||
|
||||
> 你存在,我深深的脑海里
|
||||
|
||||
|
|
@ -49,7 +49,7 @@ it("specifying response when you need it", function (done) {
|
|||
|
||||
等等,测试是用来干什么的。那么,先说说我为什么会想去写测试吧:
|
||||
|
||||
- 我不希望每次做完一个个新功能的时候,再手动地去测试一个个功能。(自动化测试)
|
||||
- 我不希望每次做完一个个新功能的时候,再手动地去测试一个个功能。(自动化测试)
|
||||
- 我不希望在重构的时候发现破坏了原来的功能,而我还一无所知。
|
||||
- 我不敢push代码,因为我没有把握。
|
||||
|
||||
|
|
@ -165,10 +165,10 @@ Lettuce.send = function (url, method, callback, data) {
|
|||
|
||||
以之前造的[Lettuce](https://github.com/phodal/lettuce)为例,里面有:
|
||||
|
||||
- 代码质量(Code Climate)
|
||||
- CI状态(Travis CI)
|
||||
- 测试覆盖率(96%)
|
||||
- 自动化测试(npm test)
|
||||
- 代码质量(Code Climate)
|
||||
- CI状态(Travis CI)
|
||||
- 测试覆盖率(96%)
|
||||
- 自动化测试(npm test)
|
||||
- 文档
|
||||
|
||||
按照[Web Developer路线图](https://github.com/phodal/awesome-developer)来说,我们还需要有:
|
||||
|
|
@ -377,7 +377,7 @@ describe('Book,Link', function () {
|
|||
});
|
||||
```
|
||||
|
||||
因为我们用``require.js``来管理浏览器端,在后台写测试来测试的时候,我们也需要用他来管理我们的依赖,这也就是为什么这个测试这么长的原因,多数情况下一个测试类似于这样子的。(用Jasmine似乎会是一个更好的主意,但是用习惯Jasmine了)
|
||||
因为我们用``require.js``来管理浏览器端,在后台写测试来测试的时候,我们也需要用他来管理我们的依赖,这也就是为什么这个测试这么长的原因,多数情况下一个测试类似于这样子的。(用Jasmine似乎会是一个更好的主意,但是用习惯Jasmine了)
|
||||
|
||||
```javascript
|
||||
describe('Book Test', function () {
|
||||
|
|
|
|||
|
|
@ -50,7 +50,7 @@ while ((stra = micromarkdown.regexobject.mail.exec(str)) !== null) {
|
|||
|
||||
选这个做重构的开始,不仅仅是因为之前在写[EchoesWorks](https://github.com/phodal/echoesworks)的时候进行了很多的重构。而且它更适合于``重构到设计模式``的理论。让我们在重构完之后,给作者进行pull request吧。
|
||||
|
||||
Markdown的解析过程,有点类似于``Pipe and Filters``模式(架构模式)。
|
||||
Markdown的解析过程,有点类似于``Pipe and Filters``模式(架构模式)。
|
||||
|
||||
Filter即我们在代码中看到的正规表达式集:
|
||||
|
||||
|
|
@ -64,7 +64,7 @@ regexobject: {
|
|||
|
||||
接着,我们就可以对其进行简单的重构。
|
||||
|
||||
(ps:推荐用WebStrom来做重构,自带重构功能)
|
||||
(ps:推荐用WebStrom来做重构,自带重构功能)
|
||||
|
||||
作为一个示例,我们先提出codeHandler方法,即将上面的
|
||||
|
||||
|
|
@ -175,7 +175,7 @@ public class Main {
|
|||
}
|
||||
```
|
||||
|
||||
代码写得还好(自我感觉),先不管Cal和Cal2两个类。大部分都能看懂,除了c,d不知道他们表达的是什么意思,于是。
|
||||
代码写得还好(自我感觉),先不管Cal和Cal2两个类。大部分都能看懂,除了c,d不知道他们表达的是什么意思,于是。
|
||||
|
||||
### Rename
|
||||
|
||||
|
|
|
|||
|
|
@ -61,7 +61,7 @@ req.end();
|
|||
|
||||
1. 先写功能的测试
|
||||
2. 实现功能代码
|
||||
3. 提交代码(commit -> 保证功能正常)
|
||||
3. 提交代码(commit -> 保证功能正常)
|
||||
4. 重构功能代码
|
||||
|
||||
而对于这样的一个物联网项目来说,我已经有了几个有利的前提:
|
||||
|
|
|
|||
|
|
@ -509,7 +509,7 @@ osrc最有意思的一部分莫过于flann,当然说的也是系统后台的
|
|||
|
||||
邻近算法是在这个分析过程中一个很有意思的东西。
|
||||
|
||||
>邻近算法,或者说K最近邻(kNN,k-NearestNeighbor)分类算法可以说是整个数据挖掘分类技术中最简单的方法了。所谓K最近邻,就是k个最近的邻居的意思,说的是每个样本都可以用她最接近的k个邻居来代表。
|
||||
>邻近算法,或者说K最近邻(kNN,k-NearestNeighbor)分类算法可以说是整个数据挖掘分类技术中最简单的方法了。所谓K最近邻,就是k个最近的邻居的意思,说的是每个样本都可以用她最接近的k个邻居来代表。
|
||||
|
||||
换句话说,我们需要一些样本来当作我们的分析资料,这里东西用到的就是我们之前的。
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
如何在GitHub"寻找灵感(fork)"
|
||||
如何在GitHub"寻找灵感(fork)"
|
||||
===
|
||||
|
||||
> 重造轮子是重新创造一个已有的或是已被其他人优化的基本方法。
|
||||
|
|
@ -31,7 +31,7 @@
|
|||
这时候我参考了一本电子书《Build JavaScript FrameWork》,加上一些平时的需求,于是很快的就知道自己需要什么样的功能:
|
||||
|
||||
- Promise 支持
|
||||
- Class类(ps:没有一个好的类使用的方式)
|
||||
- Class类(ps:没有一个好的类使用的方式)
|
||||
- Template 一个简单的模板引擎
|
||||
- Router 用来控制页面的路由
|
||||
- Ajax 基本的Ajax Get/Post请求
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ GitHub连击
|
|||
|
||||
``在不停地造轮子的过程中,也不停地造车子。``
|
||||
|
||||
在那篇连续冲击365天的文章出现之前,我们公司的大大([https://github.com/dreamhead](https://github.com/dreamhead))也曾经在公司内部说过,天天commit什么的。当然这不是我的动力,在连击140天之前
|
||||
在那篇连续冲击365天的文章出现之前,我们公司的大大([https://github.com/dreamhead](https://github.com/dreamhead))也曾经在公司内部说过,天天commit什么的。当然这不是我的动力,在连击140天之前
|
||||
|
||||
- 给过google的``ngx_speed``、``node-coap``等项目创建过pull request
|
||||
- 也有``free-programming-books``、``free-programming-books-zh_CN``这样的项目。
|
||||
|
|
@ -27,7 +27,7 @@ GitHub连击
|
|||
|
||||
### 40天的提升
|
||||
|
||||
当时我需要去印度接受毕业生培训,大概有5周左右,想着总不能空手而归。于是在国庆结束后有了第一次commit,当时旅游归来,想着自己在不同的地方有不同的照片,于是这个repo的名字是 [onmap](https://github.com/phodal/onmap)——将自己的照片显示在地图上的拍摄地点(手机是Lumia 920)。然而,中间因为修改账号的原因,丢失了commit。
|
||||
当时我需要去印度接受毕业生培训,大概有5周左右,想着总不能空手而归。于是在国庆结束后有了第一次commit,当时旅游归来,想着自己在不同的地方有不同的照片,于是这个repo的名字是 [onmap](https://github.com/phodal/onmap)——将自己的照片显示在地图上的拍摄地点(手机是Lumia 920)。然而,中间因为修改账号的原因,丢失了commit。
|
||||
|
||||
再从印度说起,当时主要维护三个repo:
|
||||
|
||||
|
|
@ -47,13 +47,13 @@ GitHub连击
|
|||
|
||||
做到98%的覆盖率也算蛮拼的,当然还有Code Climate也达到了4.0,也有了112个commits。因此也带来了一些提高:
|
||||
|
||||
- 提高了代码的质量(code climate比jslint更注重重复代码等等一些bad smell)。
|
||||
- 提高了代码的质量(code climate比jslint更注重重复代码等等一些bad smell)。
|
||||
- 对于Mock、Stub、FakesServer等用法有更好的掌握
|
||||
- 可以持续地交付软件(版本管理、自动测试、CI、部署等等)
|
||||
- 可以持续地交付软件(版本管理、自动测试、CI、部署等等)
|
||||
|
||||
### 100天的挑战
|
||||
|
||||
(ps:从印度回来之后,由于女朋友在泰国实习,有了更多的时间可以看书、写代码)
|
||||
(ps:从印度回来之后,由于女朋友在泰国实习,有了更多的时间可以看书、写代码)
|
||||
|
||||
有意思的是越到中间的一些时间,commits的次数上去了,除了一些简单的pull request,还有一些新的轮子出现了。
|
||||
|
||||
|
|
@ -77,7 +77,7 @@ GitHub连击
|
|||
- 很多人用它的项目。
|
||||
- 在某些可以用这个项目快速解决问题的地方提到了这个项目
|
||||
- 提了bug、issue、问题。
|
||||
- 提了bug,并解决了。(ps:这是最理想的情况)
|
||||
- 提了bug,并解决了。(ps:这是最理想的情况)
|
||||
|
||||
|
||||
## 200天的Showcase
|
||||
|
|
@ -232,7 +232,7 @@ GitHub连击
|
|||
|
||||
这让我想起了充斥着各种气味的知乎上的一些问题,在一些智商被完虐的话题里,无一不是因为那些人学得比别人早——哪来的天才?所谓的天才,应该是未来的智能生命一般,一出生什么都知道。如果并非如此,那只是说明他练习到位了。
|
||||
|
||||
练习不到位便意味着,即使你练习的时候是一万小时的两倍,那也是无济于事的。如果你学得比别人晚,在**很长的一段时间里**(可能直到进棺材)输给别人是必然的——落后就要挨打。就好像我等毕业于一所二本垫底的学校里,如果在过去我一直保持着和别人(各种重点)一样的学习速度,那么我只能一直是Loser。
|
||||
练习不到位便意味着,即使你练习的时候是一万小时的两倍,那也是无济于事的。如果你学得比别人晚,在**很长的一段时间里**(可能直到进棺材)输给别人是必然的——落后就要挨打。就好像我等毕业于一所二本垫底的学校里,如果在过去我一直保持着和别人(各种重点)一样的学习速度,那么我只能一直是Loser。
|
||||
|
||||
需要注意的是,对你来说考上二本很难,并不是因为你比别人笨。教育资源分配不均的问题,在某种程度上导致了新的阶级制度的出现。如[我的首页](https://www.phodal.com/)说的那样:**THE ONLY FAIR IS NOT FAIR**——唯一公平的是它是不公平的。我们可以做的还有很多——**CREATE & SHARE**。真正的不幸是,因为营养不良导致的教育问题。
|
||||
|
||||
|
|
@ -246,7 +246,7 @@ GitHub连击
|
|||
|
||||
#### 重构
|
||||
|
||||
如果你懂得如何写出高可读的代码,那么我想你是不需要这个的,但是这意味着你花了更多的时候在思考上了。当谈论重构的时候,让我想起了TDD(测试驱动开发)。即使不是TDD,那么如果你写着测试,那也是可以重构的。(之前写过一些利用Intellij IDEA重构的文章:[提炼函数](https://www.phodal.com/blog/intellij-idea-refactor-extract-method/)、[以查询取代临时变量](https://www.phodal.com/blog/intellij-idea-refactor-replace-temp-with-query/)、[重构与Intellij Idea初探](https://www.phodal.com/blog/thoughtworks-refactor-and-intellij-idea/)、[内联函数](https://www.phodal.com/blog/intellij-idea-refactor-inline-method/))
|
||||
如果你懂得如何写出高可读的代码,那么我想你是不需要这个的,但是这意味着你花了更多的时候在思考上了。当谈论重构的时候,让我想起了TDD(测试驱动开发)。即使不是TDD,那么如果你写着测试,那也是可以重构的。(之前写过一些利用Intellij IDEA重构的文章:[提炼函数](https://www.phodal.com/blog/intellij-idea-refactor-extract-method/)、[以查询取代临时变量](https://www.phodal.com/blog/intellij-idea-refactor-replace-temp-with-query/)、[重构与Intellij Idea初探](https://www.phodal.com/blog/thoughtworks-refactor-and-intellij-idea/)、[内联函数](https://www.phodal.com/blog/intellij-idea-refactor-inline-method/))
|
||||
|
||||
在各种各样的文章里,我们看到过一些相关的内容,最好的参考莫过于《重构》一书。最基础不过的原则便是函数名,取名字很难,取别人能读懂的名字更难。其他的便有诸如长函数、过大的类、重复代码等等。在我有限的面试别人的经历里,这些问题都是最常见的。
|
||||
|
||||
|
|
@ -269,8 +269,8 @@ GitHub连击
|
|||
初到TW时,Pair时候总会有人教我如何开始编码,这应该也是一项基础的能力。结合日常,重新演绎一下这个过程:
|
||||
|
||||
1. 有一个可衡量、可实现、过程可测的目标
|
||||
2. Tasking (即对要实现的目标过程进行分解)
|
||||
3. 一步步实现 (如TDD)
|
||||
2. Tasking(即对要实现的目标过程进行分解)
|
||||
3. 一步步实现(如TDD)
|
||||
4. 实现目标
|
||||
|
||||
放到当前的场景就是:
|
||||
|
|
@ -285,7 +285,7 @@ GitHub连击
|
|||
|
||||
在上上一篇博客中《[After 500:写了第500篇博客,然后呢?](https://www.phodal.com/blog/after-500-blogposts-analytics-after-tech/)》也深刻地讨论了下这个问题,技术向来都是后发者优势。对于技术人员来说,也是如此,后发者占据很大的优势。
|
||||
|
||||
如果我们只是单纯地把我们的关注点仅仅放置于技术上,那么我们就不具有任何的优势。而依赖于我们的编程经验,我们可以在特定的时候创造一些框架。而架构的设计本身就是一件有意思的事,大抵是因为程序员都喜欢创造。(ps:之前曾经写过这样一篇文章,《[对不起,我并不热爱编程,我只喜欢创造](https://www.phodal.com/blog/sorry-i-don't-like-programming/)》)
|
||||
如果我们只是单纯地把我们的关注点仅仅放置于技术上,那么我们就不具有任何的优势。而依赖于我们的编程经验,我们可以在特定的时候创造一些框架。而架构的设计本身就是一件有意思的事,大抵是因为程序员都喜欢创造。(ps:之前曾经写过这样一篇文章,《[对不起,我并不热爱编程,我只喜欢创造](https://www.phodal.com/blog/sorry-i-don't-like-programming/)》)
|
||||
|
||||
**创造是一种知识的再掌握过程。**
|
||||
|
||||
|
|
@ -313,7 +313,7 @@ GitHub连击
|
|||
|
||||
### 其他
|
||||
|
||||
是时候写这个小结了。从不会写代码,到写代码是从0到1的过程,但是要从1到60都不是一件容易的事。无论是刷GitHub也好(不要是自动提交),或者是换工作也好,我们都在不断地练习。
|
||||
是时候写这个小结了。从不会写代码,到写代码是从0到1的过程,但是要从1到60都不是一件容易的事。无论是刷GitHub也好(不要是自动提交),或者是换工作也好,我们都在不断地练习。
|
||||
|
||||
而练习是要分成不同的几个步骤,不仅仅局限于技术:
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue