查看原文
其他

作为一个有追求的程序员,你应该掌握的七种武器

2017-12-27 腊伍璐 码农翻身

1科学上网


虽然国内互联网一片热闹的景象,但我们不得不承认,从硬件到软件,从协议到标准,我们现在使用的绝大部分技术都是起源于墙外,而Google是检索这些第一手技术的最好的手段,没有之一。


所以对码农来说,可以自由地浏览是非常有必要的。


有很多种科学上网方式,笔者推荐自己买海外主机搭建SS Server,可以和亲近朋友一起使用一台,具体怎么做就不是这篇文章能展开的了,大家可以百度下。


2剪贴板


相信大家最常用的快捷键就是复制和粘贴了。


假如你刚刚从Wiki的设计文档把一个API的URL复制下来准备写代码,发现经常聊天的一个技术群弹出一个消息,有个妹子问一个技术问题,凭借自己对技术的感觉很快在Stackoverflow搜到了答案, 赶紧把答案复制过去;突然又收到产品群发的一个邮件需要你去撕逼,写了几句之后,觉得某个措辞应该放到后面,刚剪切了第一句;经理在IM上让你把某个需求的Jira链接发给他......


你如果经常遇到这种情况,首先考虑的应该是把所有的打扰都屏蔽掉,如果做不到,那就安装一个剪贴板工具吧。


Windows下推荐ditto,Mac下推荐Alfred自带的。顺便提一下,类似Mac下的Alfred这种工具(Windows下的有TotalCommander),如果能研究透彻,会极大的提高工作效率。


3抓包


现在很多产品和需求都需要通过网络与用户或其他服务打交道。如果能细细的查看通过网络发送接收的数据内容,那发现和定位问题就会方便得多,这也是抓包工具的重要功能了。


Windows下的Fiddler,Mac下 的Charles都非常强大。这两者通过安装证书,甚至可以直接抓取Https的网络。


基于Web的应用,也可以直接考虑浏览器的开发者工具。例如,Chrome的开发者工具就非常强大:用XPath可以直接找到元素,可以直接修改元素的值和属性。 


如果想做更深层次的抓包,可以研究下Wireshark。


4文本编辑器


程序员经常要跟各种日志和数据打交道,一个熟悉的文本编辑器可以事半功倍。


笔者比较常用的功能有列模式,例如把一些数据直接编辑成SQL;正则替换,例如从不太标准的日志中提取自己所需的内容。


文本编辑器免费的有Sublime Text/Atom,商业软件有UltraEdit等。另外还有一种基于终端的文本编辑器,例如Nano/Vim/Emacs。如果从事Server开发,掌握这些编辑器的查找、修改、行号等功能是非常有必要的。


5笔记


在这个信息爆炸的时代,搜索引擎有时候也捉襟见肘。


子曰:"吾日三省吾身",做笔记是一个非常好的反省自己的手段,对每天的收获进行记录和整理,也方便后续快速解决类似问题。


市面上的笔记产品大同小异,笔者一直使用有道云笔记:支持MarkDown语法,免费,跨平台。 另外,思维导图也是一个非常好的整理自己知识的工具。


6脚本语言


假如突然接到一个这样的临时需求:需要给客户端提供一个模拟服务器,根据请求内容的不同,返回相应的JSON。


这个需求用Python SimpleHTTPServer十几行代码就能实现。很多类似的临时需求,还有需要快速验证的想法,以及粘合多个系统,脚本语言是最合适的。


在自己的主力开发语言之外熟悉一门脚本语言做很多事都可以事半功倍,也可以体验到另一种编程文化。


有很多脚本语言(shell,Ruby,Perl等等)可以选择,笔者推荐Python。Python这些年在很多领域都重新受到追捧。Python有2和3两种,推荐直接上手3,虽然很多老版本服务器系统自带的还是2,但是现在基本上所有的主流库都已经支持Python3了。 


如果单纯的当做一个脚本语言,只需要了解如何处理字符串,常用数据结构,如何处理文件和网络IO,基本就满足日常需求了。  


7自己的CodeBase


将自己编程经验提炼为一个CodeBase,这是非常有价值的做法。


经常需要的用模块,如Web框架、模板引擎、Http请求、单元测试以及Mock、Cache、调度、Metric、时间处理、安全、日志、XML/Excel解析等等,每一个模块都有三四种可以选择的技术,选择一个自己熟悉的,构建自己的软件开发栈,这样遇到各种需求都能快速基于自己的CodeBase的实现。


(完)

你看到的只是冰山一角, 更多精彩文章,请移步《2016文章精华》或者《2017上半年文章精华


码农翻身

用故事讲述技术

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存