前言
写博客是一件很有意义的事情,可以加深自己对技术的理解,可以结交更多的朋友,记录自己的技术轨迹,而且分享可以让更多的人从中受益,独乐乐不如众乐乐嘛。
但是要写好博客也不是件容易的事,一是写博客是长期坚持的过程,心血来潮写个一两篇并没有什么意义,很多人写着写着就放弃了,二是写博客需要自己用心去写,一方面需要自己对分享的内容很熟悉,钻研得深,另一方面需要一些文笔和技巧,能把自己会的东西通俗得展示出来。
对于上面两个问题,第一个本文就不探讨了,我主要探讨第二个问题,如何写出好一篇文章,我将通过两方面来探讨:
- 不断学习,培养钻研精神,让自己有东西可分享
- 如何将会的东西,通俗得展示出来
我本身是一名Android程序员,所以我将以Android技术博客为例子,来讲解如何写好博客,其他行业的读者也可以对照着写。
一、不断学习,培养钻研精神
为什么我会讲钻研精神,因为你写博客首先得有东西可写,那不然就是纸上谈兵了,再好的写作技巧也没有用。而要想有好的东西分享出来,自己就得多钻研,对自己熟悉的领域砥砺深耕,让自己成为行业佼佼者,而这一切都是很不容易的。
他人励志的故事特别多,我就讲一个自己的吧,让大家见笑了。
我现在是个Android程序员,但是大学的专业是法学,可能很多人都觉得这跨度也太大了吧,一个法学的文科生居然跑去写代码,其实我高中的时候理科就比文科好,当初选法学只是觉得文理要双修,只会理科的加减乘除会让自己变得死板,即便现在我已经从事程序开发了,还是后悔当初英语为什么没好好学,因为好的文档都是英文的,语文为什么没好好学,因为写博客都没有条理,陈词滥调,所以多学点东西总是好的。
大学毕业后,同学都去考研,考公务员,然后去当法官,检察官,律师法务什么的,但是我本身还是对理科的东西感兴趣点,正好13年的时候移动互联网很火,于是我就去报了个培训班,开始了自己的Hello world!
那时自己内心是彷徨的,因为自己一点基础都没有,培训期间又没有收入,之间兼职就剩3000块钱,要管6个月,房租,吃饭,日用,每个月都过得很拮据,租的房子10平米不到,吃饭全是自己做,因为这样一天只需要8块。家里的人也不支持,好端端一个法学生,干嘛去学程序,为此还跟家里人吵了一架。。。哎,现在回想那真是一生中最艰苦的半年。
在培训班里,就我一个外行,其他都是科班出身,我从第一行System.out.println开始恶补,经常为写好一个功能熬夜到两三点,我就记得那时候老师让我们写一个五子棋的项目,用Swing来写的,一直写到凌晨五点,终于第二天交给老师看,全班就我写出来了,而且老师把源码展示给大家看,说注释写得不错,那是我进班以来第一次受到表扬,后来就一发不可收拾,经常受到老师关注,学校也破例让我直接跳到就业班,提前结束了培训。
现在回想起来,应该归功于自己对程序的热爱吧,让自己有无限的动力去钻研,不把一个东西弄出来就不甘心,每次成功之后又让自己信心大增,然后更有动力去学习,形成了良性循环。
后来到了第一家公司,接触的是跨平台开发工具Xamarin,用C#写,用Mac开发,用Git管理代码,靠!又是一堆搞不懂的东西,毕竟学校用的Eclipse+Java+Windows开发的,代码管理?压根没听说过,于是学C#,学Mac命令,学Xcode,学Git,经过疯狂补脑,不到一周时间,已经能顺利开发了。这其中关于Git的学习真是刻苦,对我而言,第一次接触命令行,一脸懵逼,当时老板强制用命令行操作,说这样快,给了我一本500页的书,不过也还是自己去写命令行 + 百度学会了,那本书基本没看。后来还为此写了篇博客,Git使用,实战版
之后到了现在的公司,15年进的,进公司又是接触新的开发工具Android Studio,那时候Android Studio还是1.3.0版本,又是重新学Android Studio,学Gradle。不过还好我会Git,公司还在用svn,领导觉得Git好,于是就安排我做了次分享,将公司代码全部用Git管理了。说白了,之前用Xamarin开发都是半调子的Android开发,因为还要开发ios,用Android Studio开发后才真正完全开发Android,于是我开始认真去研究Android,学着用ButterKnife、EventBus、Volley、Glide、Lottie等三方库,学习MVP框架,学习NDK、C++、编译so,学习Aes,Des加密算法,学习groovy,写脚本打多渠道包,皮肤包,资源混淆。
后来又学习代码组件化,Tinker热修复,MVVM,Retrofit+RxJava,Robolectric单元测试,我想说新的东西导出不穷,程序员不学习,不去钻研,很快就落伍了,下面是我这些年收集的Android资料,项目地址 AndroidDoc
如今我打算回归源码,会用的东西永远是别人的,自己却写不出来,原因就是源码读得少,所以我打算系统地看一下AOSP的源码,之前看了些Android系统启动流程,Application启动流程以及Binder的东西,还不够多,理解得也不深,现在从头再来,欢迎大家关注 AOSP
分享了自己的经历,也是想告诉大家,不管我们过去什么样,从事过什么工作,只要你现在想去改变点什么,你就去做,只要自己够努力,有刻苦钻研的精神,迟早一天也会发光发亮,谁说文科生不能写代码呢?
哈哈,说这么多让大家见笑了,接下来,我讲讲怎么写博客吧
二、如何写出通俗易懂的博客
肚子里有了好东西,我们也需要技巧把它展示出来,俗话说酒好也怕巷子深嘛,没有好的吆喝功夫,再好的酒也卖不好。接下来我将展示一些我写博客的技巧:
- 列好提纲,做到条理清晰
- 用好画图工具,制作流程图、思维导图等
- 用好录像工具,制作Gif图
- 好好学习Markdown
2.1 列好提纲,条理清晰
我们写文章之前,对自己要讲的内容必须清楚明白,不然到时候乱写一通,只会让读者看得云里雾里的。我们可以列个提纲,帮助自己整理思路,先讲什么,后讲什么,文中要注意些什么细节的探讨等等。
我们列好提纲后,可以在文章的开头写个前言,主要讲述写这篇文章的目的,然后罗列一下这篇文章要讲哪些内容,这样读者一看开头就大概知道你要讲些什么了,然后就会顺着你的思路去看。
接下来我们可以把前言中提到的几个方面作为大标题,然后开始写具体内容,如果该内容太多,可以把内容再拆分下,列出几个小标题。如果小标题内容也还是多,那可以再拆分,介最好不要超过三层,因为层级太多反而看得眼花缭乱。
对于字号,前言,大标题我一般用##,小标题我一般用###,小标题以下,我会用####,对于序号,大标题前用中文的一,二,三,小标题用数字的1.1,1.2,如果小标题以下,就是1.1.1,1.1.2。
在文章结尾写一个小结,总结一下本文讲的内容,也可以提出一些问题给读者思考。
对于内容要适当地分段落,不要把所有内容都写在一个段落里,尽量一个段落写一个方面的东西。段落里也不要一逗到底,说完一个事情就句号结束,啊。。。突然想到以前我们语文老师教我们写作文也是这么说的。
上张图吧,一篇文章大概是这样子的
2.2 画图工具使用
光是写文字有时候并不能很好地展示内容,比如我们要分享一个工具的使用,要点哪些按钮,光是文字说明并不直观,截图却能一目了然
又比如讲一个代码执行流程,如果我们画一个图出来会更加容易理解
对于上面第一种情况,截个图就可以了,截图工具我就直接用的QQ的,感觉还是很方便
对于第二种情况,就要用画图工具了,画图工具有很多,目前我只用过下面这些,当然还有其他的,大家可以在评论里推荐下。
画图工具大概分两种,一种在线版的,一种PC版的,在线版的有:
PC版的有:
2.2.1 processon 使用
我平常用的最多的是processon,它有许多优势:
- 在线版,免安装,跨平台,可以在任何时候,任何电脑上使用
- 有云端储存,只要登录账号就可以云同步
- 操作简单,容易上手
- 国内网站,不需要翻墙,速度快
首先,这个工具需要注册,这个简单,直接访问 processon ,点击注册即可
注册后登录,然后点击新建,选择一个你想要的模版类型,系统已经提供了许多常用的模版,我们可以选择一个自己最需要的进行克隆。
当然你也可以不用模版,直接点击新建后,选择一个你想绘制的类型即可
这里要注意一点,这个工具文件个数有限制,新建的文件不要删除掉了,画完一个可以清空内容重新画,这样就相当于无限使用了
下面讲讲如何画图吧,这个工具简单在无脑操作,直接拖控件就可以了
如果你觉得图形不够,你可以选择更多图形
如果你还是觉得不够,可以插入你本地的图片,网络图片
图形风格可以任意切换
插入文字在图形上直接双击就可以了,也可以去拖拽,或者点击插入菜单,文字可以调整字体大小,颜色
线条可以点击插入菜单,也可以直接从图形上拖出来,调整粗细,样式,颜色
这个工具还有许多快捷键,可以方便操作
我平常画时序图比较多,我演示下如何画时序图
画完之后我们就可以取个名字,然后保存为png,pdf,svg等格式然后下载
如果还想了解更多功能使用,官方还有 帮助文档
2.2.2 websequencediagrams 使用
websequencediagrams 这个工具很有意思,它画图是直接用代码来画的,当然这个代码只是一种类似于markdown的语法,写起来非常的方便。
它还可以用Java,PHP等语言来编写,直接转为图片, 官方文档
但是它功能比较局限,只能画时序图,而且必须付费才能有高清的图片下载,否则只是低清的图
2.2.3 Google Drawings 使用
这是Google的一个插件,也是非常方便的一个工具,但是前提要翻墙,插件安装
功能跟processon基本一致,操作也十分类似,比如画图形
插入文字,改变字体大小,颜色,样式
插入线条,改变线条粗线,颜色,样式等
画完后保存为png,pdf,svg等下载
Google Drawings 与 processon 各有优缺,下面我对比下,读者可根据自己喜好选择
功能 | processon | Google Drawings |
---|---|---|
在线版 | 是 | 是 |
支持图形、文字、线条 | 是 | 是 |
支持png,pdf,svg等高清图 | 是 | 是 |
翻墙 | 不需要 | 需要 |
可操作性 | 简单流畅 | 相对复杂,有时会有些bug,比如画线的时候要双击才能结束,有时会到处跳 |
支持画图类型 | 全面,包括UML,思维导图等,有现成的模版可以用 | 只是个画图工具,提供的图形不够全面,并且没有模版可用,全部需要手动画 |
是否收费 | 有文件个数限制,初始9个,要无限使用需要付费 | 完全免费,无限制 |
2.2.4 edraw max(亿图图示) 使用
这个软件也是非常强大的,功能比processon还丰富,毕竟是PC版!整体界面跟word很像,如果你喜欢使用word,那么你上手会觉得很熟悉,来张界面图
一进入软件,会让我们先选择我们要画哪种类型的图,种类是相当的多,并且每种都有模版可以使用,我们可以选择一个合适的,比如UML,点击创建
老规矩,我们先试下画图形,这也是非常方便,直接拖拽就是
如果觉得不够,可以添加其他类型的图
当然你也可以直接选择本地图片插入
文字方面,直接在图形或线条上双击即可,支持修改字体大小等也不在话下,而且支持插入各种特殊字符,只要word能做的,它都能做
画线方面,可以画折线,贝塞尔曲线,可以改变线条粗细,样式,颜色
它支持整体切换主题,字体,颜色,线条风格,加水印等
保存文件除了支持png,pdf,svg等外,还支持保存为word,ppt,ps,visio等,可以进行二次绘制,可谓是非常全面而强大
如果你想了解更多的功能,这里有 官方视频教程
总之,Edraw max的功能是非常强大的,整理如下:
- 提供全面而实用的模版
- 各种画图方式的支持相当完美
- 整体界面类似word,操作容易上手
- 风格切换多样,可以自由定制
- 保存格式种类全面,可以导入PS,PPT等进行二次绘图
- Windows,Linux,Mac全平台支持
官方英文版下载地址 https://www.edrawsoft.com/download-edrawmax.php
官方中文版下载地址 http://www.edrawsoft.cn/download-edrawmax.php
百度网盘下载(8.7 Windows中文版) http://pan.baidu.com/s/1kVN2mGJ
这个软件是需要注册的,不过我们可以免费用30天,如果大家要中文破解版,可以私信找我。
2.3 录像工具使用
大家在阅读本文的时候也可以看到,Gif图可以方便地展示工具的操作,不仅如此,要展示一些App的效果也是很直观的,这是我朋友的一个项目,趣闻
Gif图可以直接当作图片在Markdown中使用,所以如果录像工具可以直接把视频转换成Gif图,那将是很方便的,这种工具也比较多,今天我介绍下LICEcap
它的使用很简单:
- 调整录像位置和大小
- 点击录制,然后选择一个储存目录保存
- 显示鼠标指针选项勾选,录像会显示鼠标点击事件,展示一个圈
- 录像过程中可以暂停
- 点击停止结束录制,然后打开之前选择的目录,找到对应gif文件,就可以点击查看了
2.4 好好学习Markdown
我写博客都是用的Markdown,主要是因为各个平台都支持,而且本身写起来也比较方便,我推荐几个学习的网址:
我再推荐几个写Markdown的工具
- 简书 可能有人会笑,但是我觉得这是目前最好的工具,跨平台,云同步,支持上传图片,关键是写博客顺便就发这上面啊!
- 掘金 同理,但是需要开通专栏作家
- github github也是很好的Markdown工具,我们是可以直接在网页上修改md文件的,并且支持上传图片
- gfm插件 这个插件可以直接在Android Studio或IntelliJ里查看和编辑md文件,对于我们平常开发来说非常方便,但是官网下载太慢,我这儿有百度云的下载地址
作为Android程序员,平常写技术博客比较多,里面会有比较多代码展示,在代码展示时,最好在```后面加上代码类别,比如Java,xml,C++等,这样代码会有高亮显示,另外,写Markdown时,有时我们展示代码的时候需要在代码前加行号,方便补充说明的时候指定某行,类似
1 int main(int argc, char** argv) {
2 if (!strcmp(basename(argv[0]), "ueventd")) {
3 return ueventd_main(argc, argv);
4 }
5
6 if (!strcmp(basename(argv[0]), "watchdogd")) {
7 return watchdogd_main(argc, argv);
8 }
9
10 if (REBOOT_BOOTLOADER_ON_PANIC) {
11 install_reboot_signal_handlers();
12 }
13 }
第11行主要作用将各种信号量,如SIGABRT,SIGABRT等的行为设置为SA_RESTART
如果每次都要去手动写行号是特别麻烦的,我这里有个工具可以直接生成行号 下载地址
小结
要想写出高质量的博客,技术沉淀和写作技巧是两个不可或缺的东。一方面我们要有一颗不断学习,积极向上的心,通过自己一点一滴的积累,用博客去记录自己的成长;另一方面,多学习一些写作技巧,学会画图工具,录像工具的使用,可以更清晰地把内容展示出来。
关于我
- foxleezh
- 我的博客
- github
- 邮箱-foxleezh@gmail.com