如何写一篇好的技术博客
oschina 发布于: 2013年12月10日 (36评)
分享到:
收藏 +181
阿里百川,开启移动应用开发的新篇章
在工作过程中,发现对很多东西都一知半解,不是很透澈,到头来很容易模糊,如果有一篇好的技术博客予以总结,一来即使忘记了,回国头来再看,仍然能 够从自己的思路中恢复;二来总结一下,还会发现一些潜在问题;三来,有利于大家交流技术。很多大公司都有自己的内部技术博客平台,写好自己的技术博客,对 一个技术人员来说,也有一定的成就感。
在网上查阅资料,经常可以看到一些技术博客,要么废话连篇、排版紊乱,要么代码占了篇幅的60%,有些甚至是错的,会让人产生误解。因此,在这总结 一下一篇好的技术博客应该是怎样的,同时也规整自己的不良习惯。本篇博客纯属个人的一点想法,是个原则性的东西,切忌逐条对号入座啊。
本篇博客耗时2小时。
一、带着明确的目的写博客
经常看到这种博客,为了写博客而写博客。比如一篇介绍socket接口的使用方法的博客,罗列了一堆代码,凑上几句话:“首先…,其次….,最 后…”,就算OK。如果你的目的是“练习如何使用写博客的软件”,或者“罗列接口”,甚至“练习写作的方法”,那么可能达到了目的。但是我想,写一篇技术 博客,首先是要明确该博客的目的,通常是学习一项技术、解决一个技术问题什么的,比如“学习Linux内存管理机制”,“解决kernel pannic的问题”,“打发时间”等。
不是所有的的事情都要写一篇博客来记录,要有自己的判断什么东西值的写,什么东西不值的写。
二、写自己的博客
网上相互转载的帖子很多,一篇写的不错的博客经常会被转载,建议不要轻易转载别人的帖子,要写自己的博客。同样一个知识点,或者同样一个问题,你的 理解和别人的理解的程度很可能是不一样的,如果轻易的看过以后转载了别人的博客,可能意味着一次自我学习或体会的机会的放弃。可能有人会说:”同样一个 GFS的架构图,我画也是这样,他画也是这样,因为GFS就是这样设计的“,这里并不是要求任何一个细节都自己去做,而是要有自己的想法、自己的理解,比 如GFS分层的原则是什么?为什么这样分层,分层的好出?如果我要是去做的话,我会怎么搞?
写自己的博客可不是意味着不转载别人的,比如说我看了一篇博客,并且经过实验,却是与博客里面写的完全一致,不多也不少,如果要是自己的写的话,也 会写的基本一样,那就没必要再花费时间自己写了。另外,以及纯粹记录性的博客,可以转载,比如“C语言运算符的优先级”,当然转载还是原创都不重要了。
另外,把别人的好的博客作为自己的原创,不但没品,而且自欺欺人。
如果在博客中参考了别人的博客,可以在参考资料里面提及,如果是完全转载,也应注明转载出处。
三、博客是总结,不是过程
写博客有的时候是一个解决问题的过程。为了解决一个问题,今天采用了a方法,发现不行,明天采用了b方法,发现也不行,后天采用c方法,发现行了, 那么最终的博客应该是在c方法解决问题后,开始写的。当然,前面的a,b方法,是需要做记录的,但只是博客的原始材料,而不是博客本身。
在刚开始写博客时,我经常出现这种情况:对一个技术不清楚,想了解一下,就开一篇技术博客,边查资料边填写博客,结果基本上就是读、复制、粘贴、 读、复制、粘贴…的过程。最后落到自己手里也是空空如也,想起一句谚语:“狗熊掰梆子——掰一个丢一个”,在懊恼自己的缓存为什么这么少的同时,我也想是 否是方法不对?后来我想过,要想掌握一项技术、知识,大概需要这样一个过程:实践遇到问题——理论学习问题——实践解决问题——理论总结问题。我想很多情 况我是缺少了其中的三个部分,只有“理论学习问题”的过程。
后来,我就改成按下列步骤写博客了:
碰到了问题,如果解决不了,而又比较有价值的话,就先记录下来,作为一篇博客的开篇。
首先,先自己分析问题,基于已有的现象,思考,在笔记本上记录问题与可能的思路。
其次,从外界获取经验或者知识,比如请教别人,google等,学习他们,在笔记本上记录关键点。
然后,在实际中用学来的方法去解决问题,笔记本做好记录,要像水流过水渠一样流淌前面记录的思路。
最后,拿过笔记本,将以上过程再总结成一篇博客。
当然,并不是所有博客都能够先从”实践遇到问题”开始,因为很多情况下都是先从书本理论开始学习的(这也就产生了一定的局限性,有时候你学的很好, 反而陷入了固有的框架;有时你学的不好,显得自己更加无知)。这种情况,问题是需要自己总结出来的,比如ULK上会介绍中断和异常的处理机制,这包括中断 的过程、CPU的工作、内核的工作、软中断的处理、tasklet等等,我们学习中断,不仅仅是一旦发生中断,Linux内核是按照什么流程去处理,而是 要找到这么处理的原因,也就是解决了什么问题。有时,实践验证的成本过高,在有条件的前提下做吧。
知识开始学习的时候,经常是只见树木,不见森林。俗话说:”孤木不成林“,弄上三五棵树,才会有”森林“的感觉。
四、尽量拒绝三手技术
在实际学习或者工作中,一个问题不明白,那么就需要请教别人。如果能够从周围的高手、牛人那得到简单、直接的答复,那是最好的。如果不能,就需要自 己在网上查找资料,可能一个问题,林林总总的在网上能搜出很多,选择看哪些就是个问题。尽量去选择原发性的材料,如果你在查gcc的一个编译选项是什么意 思,可以使用man手册,如果还不清楚,就去gnu的官方站点去查,最好不要随便从某个转载的技术博客上获取。如果你要找x86平台CPU访问内存的方 式,应该从Intel的官方站点去找CPU的资料,最好不要随便在网上找篇博客看了拉到(起码应该先看官方材料)。
别人的博客自然带有别人的理解,而这种理解可能带有一定的主观性,有时甚至是错误的,应该养成从原产地采购的习惯。如果哪天能够发明一项技术,那么 这算一手技术;如果你在学习一项成熟的技术,那么该技术就属于二手技术了,如果你再从一个非源发性的地方去学习,那么很可能就是“三手技术”。当然,需要 考虑实践成本,有时实在找不到源发性的材料,也不要太勉强自己了。另外,英文文章的水平整体高于国人的文章水平,应该尽量看英文文章。
五、分清主次、落脚关键点
世界万事万物都有联系,凡是和本篇博客的主题有联系的问题,都在本篇博客中描述,是不现实的,也是没必要的。个人认为,一篇技术博客应该不超过两个 主题,如果超过了,就应该拆分。但是次要问题可能会有不少,这些次要问题不一定都要解决掉,但一定要分清除优先级,和主题关系比较大的,应首先解决,关系 小的,应其次解决,甚至并不在本篇博客中解决。对于没有解决的问题,可以列在”遗留问题“中,对于在其他博客中讨论的问题,给予链接。
根据自己的能力,耕耘到合适的层次。我将掌握一项技术划分为如下层次,在博客中通常应该达到第三个层次:
听说过该技术,了解该技术解决什么问题;
使用过该技术,熟悉该技术的使用方法;
解构过该技术,熟悉该技术的架构、原理;
贯通过该技术,将该技术与自己的以有知识完全融合,可以利用该技术架构或解决其他问题。
六、技术博客的风格
技术博客不是论文,技术博客由其实用性。当然,也有将论文发在博客上的,比如技术博客的作者大部分应该是工程师,而不是学院派。一篇技术博客可以 是小到的一个编程技巧,可以写该技巧的原理、实现方法、好处,但不要写前500后300年的历史介绍和展望未来。技术博客通常关心技术的实用性,而非技术 背后理论的复杂性。技术博客也不应该过分求全责备,把文章写的大而全,而应该追求小而精。
技术博客应以陈述语气,个人感情色彩应该过滤掉,技术不是生活的全部。有人写技术博客,常喜欢加入自己的心情,“xxx让我好烦啊”、“xxx很难,我一直持续搞了两天没睡觉”,我个人拒绝这种“呻吟”的风格。
忌罗列代码。代码是实现的过程,而不是原理,列代码是为了看清流程,而非为了列代码而列代码。我个人的习惯是尽量少列代码,如果能够使用校小的篇幅就能说明原理,绝不使用大篇幅的代码。但是如果简单的罗列代码能够一目了然,也绝不浪费过多的笔墨去描述过程。
图片胜过文字。图片配文字比单纯的文字更加方便理解,甚至一张图就可以省略文字了,多画图,少写字是个原则。
考虑时间成本。博客基本上是以时间换知识,因此需要越来越快,记录时间也很必要。
列出时间遗留问题,以备以后解决。
原文出处:rock3 的博客
分享到:
相关推荐
这个程序源于自己喜欢诺机里的ActiveNote程序,所以用C++写了个程序,用于转换电脑里的文本文件为HTML格式的文件,然后导到手机里阅读。该版本是一个精简版本,做成了DLL更通用。 DLL接口提供了两个函数,第一个函数...
NTFS转FAT32,这个我倒没有听说过,为了不让自已在朋友面前掉份,装出一幅不在乎的口气:“没问题!我停一会就去”。放下电话,赶忙开机上网,其实我也很急啊!打开百度,搜索关于NTFS转FAT32的相关资料。很快找到一...
这是真正的C#公历转农历代码,为什么说是真正的呢...因为这个是具有.net特色的,充分调用.net类库的代码。所有复杂的细节都封装在ChineseLunisolarCalendar类里了,简单,高效,稳定,可靠(微软提供的东西,品牌保证)
word转PDF,很多版本的word为了追求精简没有转PDF功能,只要安装了这个插件就可以轻松实现word转PDF
PDF转WORD功能 这个转出来的效果也是文本框,但是我试了别的参数,就这个文本框转的效果是最好的了,格式也不怎么丢 Excel转PDF功能 可以按sheet导出,或者整个sheet导出在一个pdf里面,导出前会自动计算一次里面的...
USB60FPW驱动 这个是USB转232串口线,但是它还提供5V电压,这个是给基恩士SR700扫码器用的 ,这USB转串口线是美国产的,驱动都是要钱买的,好不容易把驱动找出来了,分享给有需要的人
e-PDF To Word Converter 是一款将AdobePDF文档转换成 Word 文档的工具软件,它支持文字,图像及其它内容的输出。...试用了超多的PDF转Word工具了,应该说这个是所见过版面保留最好的了,虽然还是有点缺憾。
交易猫 转转 闲鱼 源码去后门永久授权,这个是那个采集信息的所以会被认为可疑
这个程序是在大学期间和同学一起在老师的指导下,不断完善所编写的成果,自编的vb转vb.net的完美程序,本来是内部使用,现在分享出来给大家参考学习。用过很多次,都很不错,只有少数地方需要自行修改一下,影响不大...
网上很难找到真正可以PDF无损转换DOC的,别跟我说迅捷之类的,转换了很难编辑!这个软件直接可以互转格式,不改变原有文档编辑格式!
这个是RGB转换MIPI接口原理图,需要的朋友可以拿去。
最终汇成了这个。大部分不是不支持xls就是不支持换行,或者excel列折页显示,或者不能再linux上显示。 这个接近完美了,包括多个sheet页也都不会出现折行现象。 唯一不足的就是实现代码冗余,并且excel在转换的时候...
3、采用专用的复位IC,保证复位可靠性,开发板上的RC复位可不能与这个比额; 4、CAN接口是内部经典电路哦,对做CAN产品的同学大胆拿去用吧。 5、外接接口采用ESD IC进行防护; 6、还实现了USB'的功能,并且进行限流...
当然,在实际应用当中有着很多方法可以打到将属性转换成cad 的方法,本次制作的这个工具就是利用模型构建器达到将arcgis中的shp转为带属性的CAD。工具集包含两个子工具,一个为等高线/高程点转CAD带高程值,一个为...
所有的WAV都有一个文件头,这个文件头音频流的编码参数。WAV对音频流的编码没有硬性规定,除了PCM之外,还有几乎所有支持ACM规范的编码都可以为WAV的音频流进行编码。 PCM:PCM(Pulse Code Modulation----脉码调制...
这是一个nodejs库,可以把一个多页的pdf转成多页png图片
我个人觉得这是一个非常好用的格式转化软件,因为我在网上找了很多这样类型的软件,但是很多都用不了,特别是我想把FLV格式的转换成MP3格式的,试了很多软件都不行,但是这个软件一试就行,我觉得这个软件还不错。
Entry.java这个类的原理是先通过OfficeToPDF.java把文档转成pdf,然后再通过Pdf2Jpg.java这个类把PDF转成JPG或者PNG,想转成什么格式图片在Pdf2Jpg.java这个类当中设置一下,代码经过测试,完全没有问题,如果碰到...
已知不同坐标系的多个坐标点的坐标,求两个坐标系的转换矩阵,是matlab写的程序,三维坐标的。 做机器人视觉导航时用到的这个转换。