开工第一周
开工第一周,工作强度仍然是那么大。计划跟不上变化,原本计划着下个月项目第一版投入市场给客户试用,现在要提前。
本想着开工第一周能有一段相对轻松的日子,目前只能说,计划跟不上变化。
今天的主要话题有这么几个?
-
读源代码的方法(以我阅读vscode 插件代码为例);
-
本周读的文章和部分书籍的感受;
-
开源项目的推荐;
1.读源代码的方法
对于VsCode插件开发,也没有之前那么陌生了。对于一些比较好的插件,目前也能看懂部分代码,同时也能修改。
在此介绍一下我的方法吧。方法如下:
(1)对项目结构必须要了解;
(2)时常打日志调试;
(3)尝试修改点看会怎么样;
(1)对项目结构必须要了解
以VsCode插件代码为例:
对上述文件目录做出分析:
images:图片存放地。
node_modules: node.js依赖模块。
out:编译输出目录(如果是ts则会输出js)。
script:脚本放置处(比如deploy.sh就在此处,deploy.sh主要结合travis.yml完成持续集成)。
src:源代码放置处(之所以在官方下载的插件找不到,是因为通过webpack打包压缩成一个extension.js)。
.travis.yml: travis 的配置文件,travis 是一种可持续集成(CI)工具,代码提交后自动构建,与github集成的很好,很多github的开源项目都使用 travis 进行CI。
.vsixmanifest:元数据。
package.json:常用配置。
package.lock.json:版本锁定文件。
tslint.json:语法规则检查文件。
webpack.config.js:webpack执行文件。
package.nls.zh-cn.json:中文命令详解文件。
(2)经常打日志调试
通过日志调试,有助于更好的了解程序是怎么运行的。
比如fileService.ts,从文件名字我就可以知道它的功能主要是对文件进行相关的操作,但是我不知道它什么时候会被调用。
结合该插件功能为例:
快捷键ctrl+shit+p出现一个输入框,输入sync,点击其中的上传设置。
如图所示:
上述的上传设置操作会将本地的插件上传到github的gist上面。如果其它人需要同步你的vscode相关的设置,比如常用代码段、插件、主题等,只需在该输入框中点击下载设置,输入对应的gist id或者是有必要再输一次github token,这样你就可以同步该设置。
通过我上述的操作,调试控制台也会有输入,正好会输出我设置的日志,如图所示:
一步步标记日志,调试打印,逐渐就会使你浅入深,由局部到整体的熟悉,这样我觉得挺有趣的,因为这样一来带有一个目的来熟悉源代码,读懂源代码,比一开始盲目的一个个看要好的多,相信读源码的朋友都会有这样的感受。
(3)尝试修改点看会怎么样;
对于尝试修改的,经过前面两种方法的,相信你会对源代码有个比较深的了解,到了这一步时,你就可以尝试修改代码,注意,千万不要一上来就大量改,一点一点改加调试,效果会更好。
2.本周读的文章和部分书籍的感受;
文章方面我就列举两篇,书的话就说一本中国文化经典《中庸》。
第一篇文章《十年学会编程》
链接地址为:
http://daiyuwen.freeshell.org/gb/misc/21-days-cn.html
第二篇文章《程序员的十大建议》
链接地址为:
http://www.kuqin.com/itlife/20071229/3176.html
第一篇文章作者提出了一个问题和一个观点。
问题是为什么人人都这么着急?
比如像现在市面上什么几天精通某某技术,几天玩转某某技术等等数不胜数,还有就是很多入门书籍(所谓的入门书籍,只不过将官方网站上面的文档和示例复制过来,顶多是示例改成自己的,也数不胜数)。出书的成本少了,低质量的满天飞,高质量的屈指可数。
我也曾计划着两天或者三天学完一门编程语言,这应该是在2018年6月份的时候,当时我计划着用礼拜六和礼拜天这两天时间拿下Python和Django。
如果要问我是怎么学习的,其实很简单,练习为主,我以廖雪峰的Python教程为例,一个示例一个示例的敲和运行(并没有用IDE,直接用notepad++,运行的话使用命令行)。最后发现由于语法不熟敲的很慢,同时notepad++并不会提示语法错误之类的导致遇到很多语法问题(某段代码必须要对其,空格少打了等等诸如这样的问题)。最后那一天只完成了十来个示例,但是已经是将我的精力损耗殆尽了。第二天上午坚持了一会,然后就没有然后了。我相信不少IT朋友们都会有这样的学习经历。
以该文章中的一句话来概述:
在三天里,你没有时间写一些重大的程序,并从成功或失败中 得益。你没有时间与有经验的程序员合作,并理解在那样的环境下工作是怎么回 事。一句话,你不会有时间学到太多东西。因此他们只能谈论一些肤浅的东西,而 不是深入的理解。正如亚力山大教皇所说,浅尝辄止是危险的事情。
以那一天半的时间来说,我除了学习到Python的语法之外,好像就没有学会什么了。
过了两到三个月,当时需要写一个Python脚本来实现某个功能,任务就分配给我了,我来写,拿起键盘对着电脑,不知道怎么写,没办法,只能百度了,刚好找到了我所需要的代码,然后将其复制到本地跑起来没有问题(天助我也,没有报一些奇奇怪怪的错误),当我回过头来看代码时,一脸懵逼。
这里我想强调的是学一门编程语言或者是某个框架,一定要多次练习(练习并不代表天天敲语法之类的代码,可以以某个具体的示例,比如写一个博客系统等)+解决问题(以博客系统为例,写这个项目的时候,肯定会遇到各种各样的问题,问题是最能让工程师成长的一个途径之一)。
文章的观点是十年学会编程。
其实也主要强调的关键点是任何人在一个领域有所成就,通常经过很多年的学习沉淀(包括在此期间遇到各种难题,解决各种难题)。
以我现在公司的经理来说,他是一个风云人物,大公司待过,小公司也待过,同时也创过业,失败过,也成功过。与他交流总会有很多收获,我挺敬佩他的。
第二篇文章《程序员的十大建议》
该文章是一个记者采访一个叫周爱民的人。
周爱民先生提出十个建议,虽然该文章有点老,但是这些建议适用每个IT开发者或者非IT开发者。
建议如下:
(1)不要急。
(2)不要只做不想。
(3)听别人的话,即使你不想听。
(4)订一个五个期的目标,写一个一年期的计划,然后回顾它。
(5)学好中文,学好写文章,学会打标点符号。
(6)把工作当成事业做,天天都在做事业,才会成功。
(7)理论看不懂,就去实践;实践遇到问题,就去看理论。
(8)参加一个开源项目,如果没你感兴趣的,就自己发起一个。
(9)保持自己对某一件事物的热心、执着,即使这件事与你是不是程序员毫无关系。
(10)成功不能被复制,但失败总在不停复制。看看别人是怎么倒下的,你可以更早地成功。
这十个建议除了第三个可能让人怀疑,其它的都还好。
针对第三个建议,“听别人的话,即使你不想听”。
我觉得作者应该表达的是这样的含义,
我们程序员也很容易犯这样的错误,那就是固执,用一句不好v
刚愎自用解释:
意思是一个人过分自信,完全听取不了别人的意见,不愿意讨论,十分固执。
不少企业都会有这样的人,工作时间长了,对于一些新人或者是工作年限没有自己长的人,有一种高高在上。有的时候对于他人提出的想法或者意见完全无视或者是一昧的强制对方顺从自己。我想这也是不少企业人员流动的原因之一。马云说过:
通常人离职有两个原因,一个原因是钱没给到位,另一个原因是受委屈了,总而言之,一句话,干的不爽。
另外我想了想,也看了看,我认为软件的Bug,除了与软件开发人员自身不负责的态度有关之外,还有一个就是团队中存在不少固执或者是固执过度(刚愎自用)的人。
因此我觉得作为一个软件开发人员,也要时常听得进他人的意见,毕竟每个人眼界、知识储备、技能水平存在差异。
比如我在公司有的时候也会出现这样的场景,一个业务需求,我觉得我是对的,同事是错的,觉得同事那种做法不好。其实,后来想了想,说不清楚谁对谁错,原因很简单,当时的那个业务需求并不成熟,经理的本意只是让我们集思广益下。
所以我有必要再次强调,同样也给我自己提个醒,面对他人的意见,要听的进,当然了,至于是否按照他人的这样做,我觉得还是要有一个自己的意见(这样做好还是不好,自己脑子里要有一个决策的过程)。
关于《中庸》这本书,我也是昨天翻起看了看。只看了一章,觉得还是很有启发的。
章节内容如下:
天命之谓性,率性之谓道,修道之谓教。道也者,不可须臾离也,可离非道也。是故君子戒慎呼其所不堵,恐惧乎其所不闻。莫见乎隐,莫见乎微。故君子慎其独也。喜怒哀乐之未发,谓之中;发而皆中节,谓之和。中也者,天下之大本也;和也者,天下之达道也。致中和,天地位焉,万物育焉。
这段章节的核心我觉得一个人要养成一个好的习惯吧。
比如一个人的时候家里乱七八糟,等别人来拜访的时候花一顿好大功夫收拾很久,最后还不如养成一个时常收拾的习惯,何必如此呢。这句话对我自己说的,习惯很重要。我要养成良好的习惯。包括生活上和工作上。如何养成呢?
生活上,时常整理,东西分类。
工作上,认真细致,完成好每一个事情。
3.开源项目推荐
任何技术的出现,都是对现有的增强和优化等。
(1)Jfinal
推荐理由:
JFinal 是基于 Java 语言的极速 WEB + ORM 框架,其核心设计目标是开发迅速、代码量少、学习简单、功能强大、轻量级、易扩展、Restful。在拥有Java语言所有优势的同时再拥有ruby、python、php等动态语言的开发效率!为您节约更多时间,去陪恋人、家人和朋友(引用官方)
Jfinal开源项目地址:
https://gitee.com/jfinal/jfinal
Jfinal文档地址:
https://www.jfinal.com/doc
今天有位朋友提出一个问题,问:
Jfinal和Spring的优劣?
这个问题的话我觉得以SpringBoot与Spring优劣对比就类比就可以得出答案了。
Jfinal其实也相当于SpringBoot对Spring做了增强和优化,
另外我认为Jfinal还是借鉴SpringBoot。
如果要问我SpringBoot和Jfinal哪个更好用?
我觉得以我目前对Jfinal和SpringBoot的掌握程度,我觉得两个我都能用,都比较熟悉。如果非得要一个答案的话,以业务为主,SpringBoot和Jfinal哪个实现更好,我就用哪个。
另外我认为多掌握开源技术还是有好处的,至少是项目选型的时候,可以有很多选择。
如果从另外一个角度来说的话,我觉得我还是比较倾向于用SpringBoot。理由的话,Spring全家桶用习惯了加上Spring全家桶开源+文档丰富+社区活跃+真的是全开源(并不像国内某些开源项目那样,说开源实际上并没有开源,只是开源一部分,核心部分还是保留的,当然了,人家辛辛苦苦开发出来的,全部一下贡献出来也不可能)等,Jfinal虽然有社区但并没有Spring全家桶那么活跃。
另外Jfinal中不少实现我觉得也参照SpringBoot。因此建议初学者最好还是掌握好SpringBoot。
喜欢玩开源项目的倒是可以试一试。
(2)layui框架
GitHub:
https://github.com/sentsin/layui/
Gitee:
http://git.oschina.net/sentsin/layui
layui是一个前端框架,据我所知,我好几个哥们的公司都在用,包括我现在的公司也在用。真的很好用。
推荐理由:
layui(谐音:类UI) 是一款采用自身模块规范编写的前端 UI 框架,遵循原生 HTML/CSS/JS 的书写与组织形式,门槛极低,拿来即用。其外在极简,却又不失饱满的内在,体积轻盈,组件丰盈,从核心代码到 API 的每一处细节都经过精心雕琢,非常适合界面的快速开发。layui 首个版本发布于2016年金秋,她区别于那些基于 MVVM 底层的 UI 框架,却并非逆道而行,而是信奉返璞归真之道。准确地说,她更多是为服务端程序员量身定做,你无需涉足各种前端工具的复杂配置,只需面对浏览器本身,让一切你所需要的元素与交互,从这里信手拈来。
用我自己的话来说,作为在公司做前后端的,layui界面方面做的挺不错,与后台交互方面还是很好理解的,其实我比较喜欢的就是它的弹框效果。
(3)hutool
码云代码地址:
https://gitee.com/loolly/hutool
文档地址为:
http://hutool.mydoc.io/
推荐理由:
一个丰富的开源工具类,基本涵盖开发所需要的。
有了它,减少自己编写常用工具类的时间。
小结:
希望每天的自己都在进步,也祝愿广大的朋友们,每一天都能有新的收获。
加油,2019,一切都将会越来越好。