其实一直以来想写一篇文章总结这几年的技术学习,刚好趁着自己的第一次 github contribution 达到1000+,写篇文章总结以下。本文篇幅较长,我会分为几个章节来分别阐述。
博客篇
为什么我要把博客放在第一位呢?因为我认为博客是developer学习技术的平台,也是developer分享知识的平台,博客差不多也就相当于是developer的名片。现如今,博客平台形形色色,有老牌的博客园,CSDN,也有现在比较新潮的SegmentFault,掘金,开发者头条,知乎等等。现在博客的形式已经发展得多种多样,现如今新潮的犹如各种各样的专栏等等。当然,在这么多博文中,有很多质量很高的文章,也有很多滥竽充数的垃圾文章。下面,我就就我个人的了解探探我接触的这些博客平台,仅是个人观点。
Github
哈哈。我为什么把Github列到博客篇呢?其实现在Github几乎已经成为了我生命中不可或缺的一部分,每天打开电脑的一件事,基本就是打开Github看看。作为世界上最大的同性交友网站,Github对于程序猿来说绝对是生命中不可或缺的部分。在此,我主要说说Github作为博客方面的内容。 很多人认为Github只不过是一个代码托管的地方,为什么会和博客有关系呢?其实,现在很多人都是在Github的issue里面开博客,因为issue里面方便作者和读者的沟通,而且支持markdown格式,各种功能也是很丰富。对于比较关注的博客,你可以设置watch,这样你就可以了解issue里面的每一次变化,并且还会有相应的邮件通知。在此,给出几个我关注的几个人的Github博客:
- iCSS:讲解CSS的,有的还是蛮有趣的。
- 梁少峰的个人博客:讲解vue讲解的很透彻,百度大牛,我觉得有些博文挺值得看,而且值得多看几遍,不过我好像都没看完。他的博文还是需要深度挖掘的。
- ccforward/cc:应该是当初关注他的一个知乎爬虫,他的博客内容我没有看太多,但是内容貌似还不错。
- underscore-analysis:解析underscroe源代码的,挺不错的,我看过一两篇,值得多读几篇,我自己也该去读了。
- Front-end-tutorial:内容很多,我没有过多了解,可以了解一下。
以上就是我了解的一些在Github上面的博客,因为在Github我没有特别关注这方面,所以还不是特别多,当然Github也不是我主要逛博客的地方。
CSDN
CSDN是我开启个人技术博客的地方,感兴趣的地方去我的博客逛逛http://blog.csdn.net/neal1991 。我应该是从2015年4月份开始写博客的,博客的内容主要有我研究生期间一开始做的道路识别的一些研究的论文,虽然这个方向没搞下去,这个方向的确很有前景,只能说老板很有眼光,但我没能力,没能搞下去。其它的也包括一些开发过程遇到的坑之内的,面试经历,技术文章翻译。老实说,CSDN现在的确不是一个很好的平台,因为本身它就偏老,在markdown的显示不是很完美,在移动端显示不是很好,还有一点很重要,广告特别多,还是莫名其妙的,看起来很讨厌。其实我一直都想弃坑,奈何就是github国内访问速度不稳定,还有毕竟在这边维护这么久了,所以还是一直维护着。在CSDN上,我基本上都是去写博客,基本不会在它上面浏览技术博客,因为它的浏览界面实在是太杂乱了,没有重点。这可能也是老牌博客的一个缺点,可能一时半会也没办法改过来。下面我主要讲一些我自己的一些比较稍微有用的博客内容:
- combox系列问题集:当初做winform开发遇到的问题,记得当初最坑爹的是调试combox的时候,visual studio老是崩溃,后来发觉居然是有道翻译的锅,也是醉了。。。
- 独立成分分析:这个应该是当初一个讨论班里面要做的一个presentation,我把内容整理出来写了这篇博文,阅读量快2000了,好像是我博客里面阅读次数最多的了。
- 如何查找django安装路径:非常简单的一个问题,但是当初搜遍了,没找到解决方法。
- mongoose对象无法新增删除属性:当初在处理mongo遇到的一个问题,是个坑。
- 第一个chrome extension:第一次写chrome extension,没有想象中的那么复杂,不过还是有一些方法的,貌似360有翻译过谷歌相关的文档。老实说,谷歌真的很良心,现在很多开发者文档都已经是中文的了。
- 第一个pwa:第一次写progressive web application,其实写pwa和写其它单页面应用没有特别大的区别。pwa也是我非常看到的技术栈,我觉得这个比小程序好上一百倍,只不过现在在国内还是不温不火,但是我觉得很肯能哪一天就星星之火,可以燎原了。
鉴于CSDN平台的种种,我的确越来越不太愿意在这上面写文章。而且我最近的文章一向是以翻译国外技术文章为主,毕竟还是菜,所以只能靠英语吃饭啦。
掘金
老实说,掘金应该是同类这种网站访问量比较大的。的确,里面有不少的精品内容,当然也会参杂很多乱七八糟的东西。其实,现在一般的原创博主都不会只在一个平台发文章,所以基本上你这个平台看得到的,在其它平台也差不多都能看到。只不过我现在基本不看掘金了,因为他们的编辑对新人极度不友善,极度不友好。
众成翻译
360的一个专门翻译技术博客为主的平台,目前应该还是比较小众。360的前端其实还是蛮不错的,尤其是他们的齐舞团队,里面也有很多大牛。这个平台里面的文章一半质量还是比较高的,而且这个平台翻译操作也是蛮舒适的,感兴趣的非常值得试一试。而且他们的群沟通都很流畅,不像掘金那帮人。。。无力吐槽。
知乎
我本身一向是很排斥知乎的。讲心里话,知乎里面百分之八十的人都是在写故事,骗关注的,我也不明白知乎为什么充斥了这么多天天无事可做的人。当然,不可否认的是,知乎里面还是存在百分之二十的精品内容的,这也是让我能够忍受那剩余的百分之八十垃圾的原因。知乎里面那些回答我觉得没有太大的意义,看了也就是笑一笑,一般都是用来刷新三观用的,在此,我仅说一些技术专栏:
- 饿了么前端:饿了么现在前端的确搞得风生水起,尤其是pwa,感觉他们是这方面搞得国内最为成熟的一家。可能并不是,但他们肯定是分享这方面内容最多的公司。感觉饿了么前端蛮多大牛,不过感觉他们都喜欢混国外圈,黄玄基本都是在medium发文章的。。。
- 某熊的全栈之路:这个应该是infoq的专栏,这个编辑每个礼拜会发一个国内外最新技术的文章集合,基本是前端为主。内容比较新颖,基本上最时髦的都在这里面。
- Think In Vue:意如其名,现在vue在国内真的很火。火到我觉得用react的撕逼应该撕不过vue,vue的作者尤雨溪在知乎也是很活跃的,经常手撕任何喷vue的人,还有看他阮一峰每日一喷很有意思。阮老师也是个很有意思的人,感觉天天都有人喷他,但是阮老师的心态丝毫不受影响,剖有大师风范。不过值得一提的是,阮老师博客的广告位可价值不菲哦~~
- 美团点评技术博客:算得上是大厂,值得一看。
知乎乱,前端乱,如何乱中取胜,就是要保持一颗平常心。
开发者头条
不温不火的平台,文章质量还行。我一般发文章这个里面也会发一份。感觉里面的内容偏机器学习以及架构方面,而且这发文章可以攒IO币,可以换书哟。
Medium
国外的一个博客平台,访问需要翻墙。这是国外一个专门写story的地方,样式很好看,应该算得上是国外非常知名的一个博客平台了。当然了,里面的内容也是多姿多彩的,同时里面的技术文章质量也有很多很高的文章。现在国内技术圈翻译的大多数文章基本都是来自于这个平台。
Quora
国外一个和知乎一样的网站。不过知乎由于国内人数优势,火爆异常。Quora则是不温不火,而且上面还有不少华人。我关注过一段时间,但貌似都没什么特别的内容。 以上基本就是我所有的对于一些博客平台的了解,可能不包含所有,但基本都是我自己的个人的亲身经历。可能部分言辞颇为激烈,但也都是我的肺腑之言。
微信公众号
微信公众号作为一种特殊的平台,现在也成为一种传播渠道,有点类似于报看订阅的形式。但这不一定是一种非常有效的传播方式,感觉深度还是不够的,我比较喜欢在电脑上看文章,因为在手机上看文章难以持续地专注于一篇有内容的文章,一般就只能浅尝则止。所以我一般都是把链接转到我的微信PC版,然后再用浏览器打开,下面介绍一些我关注的一些技术类公众号:
- 前端之巅:我之前提过的,应该是infoQ的平台,其实和之前的知乎专栏应该是重叠的。
- 奇舞周刊:360奇舞团队,前面也介绍过了,国内的知名的前端团队,会有一些比较有价值的文章。
- 前端早读课:每天早上都会发送推文,但是文章质量嘛,参差不齐,基本上都是别人的文章。
- FEX:百度FEX团队,收集最新技术文章,但是排版比较差,比较原始。
- 神秘的程序员们:里面会有一些脑洞大开的漫画,而且会有程序猿和产品经理以及架构师撕逼的故事,很有趣。
Github
为什么我要把Github单独作为一章节来讲呢?因为它实在太重要了!!!以至于我除了它,根本不想去尝试其它类似的平台。关于Github可以讲的东西太多太多,它带给程序员的则是无穷的魅力。在此,我也仅就几个方面谈谈我的个人理解:
star篇
Star是衡量一个开源项目是否受欢迎的重要标准之一(当然也有很多是骗star的)。其实,现在很多人看到一个项目都会去star,但是后续是否会关注,当然也就不一定了。曾经有一段时间,我对star深深着迷(其实现在还是很着迷),我每天都希望有人能给我的项目star,看着别人上千的star我都会超级羡慕。但我其实也能够深深体会到做一个开源项目的不容易,开发者有一个idea往往很简单,但是要去实现它,推广它,完善它。这真的很难很难,而且还会有各种各样形形色色的人问你各种问题,给你提出各种要求,这些都是很痛苦的。但是我依然希望自己有一天还是能够成为一名出色的开源项目的开发者。下面我就挑一些我star的项目来讲一讲:
- prepack:前几天,前端圈最火的技术,编译优化,facebook总是走在潮流之端。
- sw-precache & sw-toolbox:谷歌关于pwa的相关工具,值得关注。
- chrome-remote-interface:师妹介绍我的一个调用headless Chrome的工具,文档阅读起来比较痛苦,可以码,虽然你也不一定看。
- hammer.js:一个移动端手势库,据说很好用,我没用过。。。
- snarkdown:一个超级轻量级的markdown库,值得码,虽然你也不一定看。
- guetzli:谷歌爸爸推出的压缩图片的工具,听说很强大。
- node-interview:饿了么的面试指南针。有一段时间Github的trending里面排名前十,有6个项目是国人的,可以想象,现在国人在Github混得有多多。
- thinkjs:360团队的一个node.js框架,比较小众,面向企业级应用,没有深入了解过。
- webpack中文文档:webpack-china的文档翻译,哈哈,我也是翻译者之一。
- vue:这个我就不介绍了。
- leetcode-viewer:一个leetcode题目博客,这个博主很厉害,貌似还没毕业。
- offershow:offer曝光平台,校招的可以关注关注,现在都有小程序了。
- yarn:我是不是真的别再用npm了。。。
- electron:可以用前端写跨平台应用,一直想写一个。
- phantomjs:一个headless webkit,主要用于爬虫和测试。但是好像没剩什么维护者,前段时间两个维护者之一宣布不再继续维护。感觉吧,吃枣药丸。
- echarts:百度出品,简单,好用。
- reveal.js:一个前端的slider绝对不应该是用ppt做出来的。
- react:如同vue,我才发现,我很早就star了,然并卵。
以上,就是我挑出来想讲的一部分。Github里面优秀的项目层出不穷,有很多值得学习的地方,但是有时候也会困惑,不知道从哪一个下手。
My repositories
重点来了,下面就是我自己的Github了。里面的差不多就是我平常的项目demo,下面也就一一介绍。
articles-translator
这是我Github里面star数最多的项目了,也是我现在维护最多的项目。这个仓库主要是对于国外一些优秀博客的翻译,里面的文章的质量基本都是比较高的。内容目前主要集中于前端,非常值得看。latext专业参考这篇长文是讲解latex的,目前还未完成,如果想学latex的可以看一看。其它的文章基本上都是关于js或者progressive web application。
pwa-manifest-generator
这个是一个webpack的插件。一开始是因为[基于Vue JS, Webpack 以及Material Design的渐进式web应用 [Part 1](基于Vue JS, Webpack 以及Material Design的渐进式web应用 [Part 1])这篇文章。因为这个教程里面使用了一个pwa-manifest-webpack-plugin
插件,但是这个插件有一点比较蛋疼的是它用了一个特别蛋疼的包lwip
。其实它里面只使用了lwip
几个函数,但是这个lwip
却需要一大堆依赖,而且在windows上平台上安装始终有问题,后来我就想自己写一个webpack 插件。我的这个插件应该和刚才的差不多,只不过我使用另外一个包jimp。这个包的依赖相对来说少得多,从而也没有上一个插件的问题。这是我的第一个npm包,发布一个npm包的确比较简单,确定合适的package.json
,只要执行npm publish
就可以了。同时,还在这个项目里面添加了Travis CI,装逼挺好的。
pwa
我的第一个pwa,是一个天气应用。可以添加几个城市,因为使用的是雅虎的API,这个API需要一个woeid,我还写了一个小爬虫的项目woeid-parser去爬取woeid。不过后来我发觉这个API不是很准,这个项目因此也放弃维护了。
subway-shanghai
因为我平常比较喜欢看地铁线路图,所以我觉得用pwa做一个上海地铁线路图挺方便的,还可以离线使用。这个pwa有部分内容是借鉴了搜狗地图的,不过它那是动态生成SVG,这对于我的pwa来说,代价太大了。所以我是在html中包含svg地图,并且通过离线缓存,也减少了网络请求。这个pwa还可以支持缩放以及显示站点的首末时间表,感兴趣的可以通过这个链接,强烈建议通过chrome浏览器来使用,还可添加到桌面。
graduation
这个仓库其实是我毕业论文,目前还是private的,等毕业之后,应该会将这个仓库公开。老实说这次的确是装了一次大逼,在写这篇论文latex遇到了不少坑,最后还是要转换成word才能查重,真是折腾。不过过程中还是积攒了一些东西,latex写论文真心方便,讲良心,如果可以latex,我是绝对不会用word的,排版差距太大了。
ife-ecnu
百度前端学院课程的一些task。没有做得很完整,而且项目页面做的特别丑,一直想花时间重新写一个。。
my-first-blog
是我以前做的做的个人主页,免费托管在Pythonanywhere。这家网站很良心,专门托管python的web应用。不过我这个项目大多数基本上都是静态页面,是利用Django搭建的,一直想着是不是把我的个人博客做进去,但是貌似域名不太好,自定义域名就需要升级成付费套餐了。
front-end-interview-process
个人的面试题集锦,主要是前端。可是在我校招面试的过程中,发觉其实面试的内容也都不一定仅限于前端,所以里面杂七杂八都有一些。我特别希望有人能参与进来一起维护。
latex-ppt
用latex做的几个slide,里面有我们学校的模板,主要是我的论文答辩以及中期答辩的一些slide。Latex做的东西比较简洁,但是有时候感觉画质貌似还有点问题,可能还是主题用的不是特别好。
code-recognition
当初做爬虫项目需要做的一个验证码识别,后来做了一个小demo,也写过一篇文章介绍。主要就是使用了image-magick以及tesseract-orc,步骤挺简单的,不过因为那个验证码比较简单,所以识别出来基本没什么问题。
reading-notes
觉得读东西一定要有输出,不然感觉很快就忘记了。所以我想在这个github的issue里面去维护一些读书笔记,目前还不多,希望以后自己可以继续坚持。
以上就是我的Github里面最值得提的一些repository了。其实,经常会电光火石之间冒出一些电子,然后创建了,但是之后又不了了之了。所以说做一个开源项目的开发者很难了,因为作为一个个人的开发者维护你自己的repository都不一定有持久的毅力,所以我非常钦佩那些把个人项目做的有声有色的人。
工具篇
工欲善其事,必先利其器。对于开发者来说,工(装)具(逼)的重要性不言而喻。每个人都有自己喜欢的工具,我觉得工具不一定要特别多,因为太多了你也用不到,用到你自己习惯的就好了。工具包含的范围特别多,不仅是你的电脑,或者是软件,甚至是一些软技能:包括沟(撕)通(逼)技巧,笔记,如何将你的理念传输等等。下面我就工具这方面的内容来聊一聊。
MAC or Windows
关于MAC和Windows的争论一直也是喋喋不休的,丝毫不亚于是应该用tab还是空格,亦或是用vim还是emacs。我就谈谈自己的一些感受。最近这几年,Mac的确是用的人越来越多,甚至好多不是开发的人员也是使用Mac。其实,有一些在Mac上面安装windows系统的人,他们一直抱怨Mac的系统太难用了。。。既然不愿意钻研,那就不要用了,其实基本上熟悉熟悉,基本上就可以掌握Mac的优势了。 Mac因为自身上和Unix系统的关系,所以一直都很受开发者的青睐。Mac的确在开发上面有着很大的优势,比如我现在windows经常遇到在node-gyp相关的npm包就需要安装vs这个庞然大物,实在是蛋疼。而且现在Mac上面的应用越来越丰富,基本上windows上有的Mac上都会有。就我当初的使用经历来说,我在Mac上开发还没有遇到任何问题。不过有一个问题就是我当初在Mac上跑我的matlab代码,速度特别慢,居然比我那个实验室的破电脑还要慢,不知道是不是因为我的Mac版本太老了。 总的来说,不管是Mac亦或是Windows,对于开发者来说,没有特别大的争议,更没有优劣。不过现在微软爸爸好像在渐渐发力,感觉windows的跨平台性会越做越好。不过要是有钱,还是可以试试Mac的哈!
IDE or Editor
又是程序猿的一大争论,不讨论争执,我只讨论各个的特点。老实说我接触的IDE并不是特别多,用的最多的也就是visual studio亦或Jetbrains。在这真的强烈推荐Jetbrains的全家桶,它家的IDE的确是做的好,比如ItelliJ IDEA,现在貌似做JAVA开发的大多数都用这个了。只不过有个缺点就是比较占内存,因为它貌似会存储很多索引,以及其他丰富的功能。其它的比如Pycharm或者Clion,它家的软件有个特点就是各个IDE都差不多,所以用起来也比较方便。 至于Editor呢,我比较用的多得是sublime以及 visual studio code。我当初实习的时候,我的Buddy就比较喜欢用sublime,加上我的公司的电脑贼垃圾,所以我用sublime比较多。对于编辑器,掌握一定的快捷键,然后加上一定的插件,几乎就差不多了。其实vs和sublime似乎也是很类似的,vs在微软的推广下,现在发展的相当火,其插件业发展很迅速。至于Atom,我没有用过,它和vs一样,都是使用electron开发的,但是听说在性能方面有点问题。
机械键盘
机械键盘对于程序员来说就好比包对女人来说,都是一生无法停止的追求。老实说,对于机械键盘我也不是特别懂,也无意花特别多的心思在上面,不过我觉得选一款顺手的机械键盘对于程序猿来说还是比较重要的。我的第一款机械键盘是ikbd的87键位的茶轴,用起来还可以,性价比高。同等性价比的,貌似魔力鸭也还可以。后来又趁着京东活动入手了filco的青轴,啪啪啪,特别爽。不过有时候觉得青轴用久了,也是有一点腻,打字有一点累。HKBC其实应该属于电容键盘,我有体验过同事的,感觉软软的,我是没什么感觉。
Chrome 插件
Chrome浏览器应该是这辈子最爱的浏览器了,没有之一。讲道理,谷歌出的产品基本上都挺良心的,而且现在的谷歌开发者文档有很多就已经是中文的了。Chrome插件对于个人和开发者都是挺有帮助的,能够大大提高效率。我就介绍一些我比较经常用的插件了:
- Momentum:这款工具主要是新创建tab的时候每天随机改变背景图片,背景图片一般都是高质量的风景图,还包括一些其它的功能,是这样子的:
- Adblock:这个应该不用说了吧。
- Octotree:这个介绍的也很多了,浏览Github项目的时候比较方便。
- Google keep:可以用来保存笔记,链接等等,不过应该需要翻墙。
- Send Anywhere:这个工具可以跨平台传输文件。
- like on git:一个印度人写的插件,利用Github的README来保存链接,思路倒是挺独特的。
- Restlet Client:一款类似于Postman的API调试工具,但我觉得比Postman貌似还要好一点,爬虫的话用起来还比较方便的。
其它软件
另外现在对于程序来说,markdown已经成为一种必备的格式之一了。Markdown的语法还是比较简单的,基本掌握一些比较基本的语法,写写文章应该是没什么问题的了。我平常主要的markdown写作工具就是Typora,写的时候就可以预览,支持Mac和Windows系统。Everything,Windows搜索文件的利器。CTEX,Latex写作工具,但是最新的Ctex有个巨坑的地方是,安装的时候会覆盖你电脑的环境变量,特别坑!!!!Tex Maker是一款跨平台的Tex编辑工具,再Mac上比较好用,但是对中文编码的支持还是有问题,后来我只能用Windows系统来写我的毕业论文。
总结和展望
其实自己内心对于技术真的有一种很深层的渴望。但是现在还是觉得自己处在一个瓶颈期,虽然自己励志于在前端能够有着更加长远的发展。目前前端端异常的活跃,但是前端圈的高层次开发人员还是稀缺的,充斥的是大量的初级开发人员,以及非科班出身转前端的,因此这个圈子多少充满了戾气,撕逼的到处可见。另一方面,不知道自己工作以后还可不可以在前端有更加长远的发展。 其实老实说,我当初选择前端还是因为那时候我是觉得HTML5的跨平台性比较好,IOS亦或是ANDROID都会受平台限制,web应用有着天生的优势,跨平台,易部署,这些都是前端开发与生俱来的优势。现在JavaScript发展越来越迅猛。知名的Atwood定律:凡是能用JavaScript写出来的,最终都会用JavaScript写出来。Javascript基本上涉足了各个方面的开发任务,JavaScript担任的角色也越来越多。 大牛们,总是常说,要跳出自己的舒适区。其实,这一点真的很难做,因为人都是喜欢呆在自己觉得舒适的地方,做自己习惯做的事情。可是,如果始终局限于一个区域,那么始终也只能是井底之蛙,坐井观天。我觉得,始终不要给自己划一个什么圈子叫什么所谓的前端圈,做东西还是要多看看外面的东西,这样似乎才能看到新东西。