本篇缘起是在向好友推介Linux工作环境,经过在网上、现实里与多位主要基于Windows的技术人员交谈后某发现不少习惯图形界面的开发人员对Linux或者说UNIX系以及命令行因不了解而迟迟无法应用自如。还有一些切身的体会是这样的,身边的同事都是使用Windows或者Macintosh的,随着对私有软件的依赖,不得不把习惯也一起改变。

这是一种很无奈的现状,但是往往这种惰性会带来更深层的问题,导致对自己依赖求生所需的技能以及工具不甚了解,以至于人云亦云。这样的技术人员某身边不在少数,如果放在几年前某还会积极安利,但如今放在这个“装逼需求大过实际需求”趣味的技术圈,便很难再谈笑风生(要知道,推崇“贵的就是好的”理念的技术人真不在少数)。固然花钱能解决很多需要花时间的问题,但是从实践精神出发,如果不加以筛别工具的话,甚至思想方法都会随之改变,这并非耸人听闻。

折腾技术、技巧、工具的过程诚然花时间,纵使没有到达预期的目的,知道什么是好的,什么并不够好,也绝非浪费宝贵时间,所以某决定把自己的感想总结一下。

某大约在2012年的时候还总结过自2009年来折腾Linux的感想,以现在的眼光来说,依旧稍显稚嫩。自然如今审视过去的这三年,也未必能说自己比当初高到哪里去。

最近和一位做前端页面的同事聊天,他提出和某当初也有类似的想法,即“技术人员好比江湖剑客,除了内功与身法技巧,还亟需打磨一套自己的武器”*。避开哲学与生活态度的层面,某认为作为技术人员,打造一套适合自己,并不停留在表面的工具链,还是相当有必要的。

*当然最终我们的结论不太一样,他的看法为...为了调试不同的前端页面与设备,所以应该多备几台手机,呃,不予置评。

本篇仅代表个人观点,既然是观点,自然有所偏颇,所以这里只谈事,不贬低,也不做哲学层面的比较,不引战。主要原因,某觉得自己在这个方面上大约不能算是“普通消费者”

作为计算机与信息科技的工具,会分为软件与硬件,这篇某来谈谈软件。

操作系统

GNU/Linux

谈到Linux,自然要分到不同的发行版,相对主流的某也都尝试着用过不同的时间长度。最终选择依旧是Gentoo Linux,具有一下优点

  • 元发行版(meta-distribution),即提供了如何构建系统的工具以及便捷的软件包信息,可以按照官方提供的设施构建,也可以按自己的需求定制。
  • 给用户比较大的自由选择,并且尽量不帮用户做决定。
  • 滚动更新,更新时机也是自由选择的。
  • 作出重大系统变化一般会有提前预告,并尽可能把影响降到可以接受范围内。
  • 支持同一个软件的多版本或完成同一目的软件的共存。
  • 开发者社区相当活跃,由于本身适合进阶用户,进阶用户群也便于联系。

同时,也有如下缺点

  • 一般来说,需要消耗大段的时间来编译、定制系统。
  • 国内用户群相对较小。
  • 对Linux系统熟悉程度有一定要求。
  • 联系开发者社区主要依靠外语。

总结一下用了4年左右Gentoo的感想:低调、谦虚,不会激进地替用户思考,也不会默默地停滞不前,提供最大的选择以用户,某会感受到Linux所有的可能性

曾经某考虑过如suckless一般自己做一个适合自己的发行版,最终发现需要折腾的东西多如牛毛,Gentoo已经能满足某90%的需求,如无必要就不浪费大量宝贵的时间去解决剩下并不那么重要的10%了。

某打算不定期地更新一些使用Gentoo时的实用技巧。

Windows(R) & Macintosh OS X(R)

Windows的某些专业软件可能还是需要的,但并不是主力,并且由于Windows 10开始爆出各种不尊重用户(隐私)的行为,某表示十分担忧。目前使用Windows的主要原因是QQ和玩游戏,前者同样是对隐私有隐患,所以某的解决方法是放在专门的虚拟机里运行。嗯,未来用作画图时依旧可能需要使用。

苹果相对来说更适合艺术创作用户,比如视频剪辑、录音和绘画创作,某在这方面暂时无需求。还记得某在2011年购买MBP时的兴奋,某并不否定苹果产品作为消费产品时的商业价值,但是随着时间与使用,某发现对于技术人员来说,并不能所是一款“好”的软硬件解决方案,各种意义上。为此,某打算专门撰文来谈谈自己的体会。

图形界面

Xmonad

Xmonad是一款用Haskell语言写成的窗口管理器,除了有其他平铺式窗口管理器的优点以外

  • 稳定,高效,占用资源少,默认配置只需要1MiB不到的内存,稍微复杂的配置也可以控制在15MiB以内。
  • 可定制性强,虽然插件数量、特殊视觉效果可能没Awesome那么多,酷炫,但是很实用。
  • 为Haskell语言所写,耐折腾。

缺点

  • 配置文件入门门槛稍高,要懂一些Haskell语言
  • 插件不如Awesome那般丰富(老师傅可能要吐槽某玩不来)

总结,某之前是Awesome用户,催生更换为Xmonad的原因是Awesome插件质量层次不齐,内存泄漏问题时常出现,运行效率总感觉有些问题。另外布局方面得依靠第三方的实现,社群虽然不小,但作者依旧还是独挑大梁。

编辑器

nano

这几乎要成某的第一推荐了,原因是入门容易(界面上就带有操作提示),对于简单的编辑需求也能很好的满足。要说缺点的话,无法做比较复杂的事情。当然好处也体现在简单上,不会有莫名其妙的问题。

Emacs

优点各种多,某就不一一介绍了,否则安利不完。某就提几点个人用下来比较开心的地方

  • 由于操作的修饰键是Ctrl,所以与拼音输入法一般情况下都不冲突,这点是导致某放弃Vim的最主要原因
  • 有服务端/客户端模式,可以减少每次冷启动的时间
  • 图形的功能也非常丰富

缺点:

  • Windows下用起来并没有那么顺
  • 上手不易

总结:之前为了学Emacs借口买了个HHKB键盘。但实际上某还是习惯按左下角的Ctrl,最终学会Emacs到比较熟练,还是依靠两个诀窍。第一,学会打开、编辑、保存、关闭后就把系统上别的编辑器都删除;第二,不断花时间去学习配置与内部机制。毕竟总是绕不开的,不过这些投入都很值得。

Notepad 2

Windows下使用,简单,就这么一点,某在Windows下也很少写程序,有也是SSH连到其他机器。

终端模拟器

rxvt-unicode

也尝试过其他比urxvt更小的实现,总会有各种细节问题,虽然urxvt本身代码臃肿,但好在本身依赖不多。

优点:

  • 依赖少
  • 能很好的满足一个终端模拟器应该完成的工作

缺点:

  • 偶尔会莫名其妙僵死,尤其不敢用那个服务端/客户端模式
  • 占用资源稍稍有点大

其他常用工具的一句话总结

  • Firefox

Mozilla的浏览器,优点感觉像是一辆坦克,各种可定制,也得到主流的支持。缺点,JS引擎没有Chromium的私货总感觉不够流畅、高效,占用内存有点夸张,除了虚拟机几乎无人能敌,标签页,插件一多也是卡到飞起,Windows下必须经常重新开

  • Chromium

由于Google的前科,虽然必备,但不是常用,主要应用在网站不能很好地支持Firefox时,以及某些JS效果飞上天的网站。

  • tmux

终端用户好朋友,这值得专门写一篇来介绍,新的2.1版作出了一些无法接受的变化,所以暂时还在使用1.9版。解放终端管理与进程管理的瑞士军刀。

  • mpd & mpv & ffmpeg

mpd用来播放音乐,占用资源少,还可以用来搭建个人的网络电台。 mpv代码比mplayer更新与简洁,历史包袱较少。ffmpeg则是视频文件处理的瑞士军刀。

都是年轻所犯的错误啊

以下这些都是曾经为了装逼和晒小资,(对自己)编造各种借口而犯的错误,实在要不得,血泪教训

  • 借口“用户体验”良好的苹果电脑而入手MBP
  • 借口为了学Emacs而入手HHKB键盘
  • 借口方便上网而入手上网本
  • 借口研究Android而入手廉价的原道平板

为此换来的教训,着实难说是“买到个教训”,这些,下次逐一吐槽。

总结

促进某换成简洁,小巧,灵活风格的工具链的初衷是:某希望自己能够成为一名实实在在,脚踏实地深入理解与精通各门技术领域,同时又谦虚,低调,不华而不实,停留在表面的技术人

这篇原本是想写得深入一些,却没想到真开写后不知道如何才能写得不致引战。也许程序员惯例如此。写地比较急,这系列内容持续更新,想到一些再补充。

__END__