为了将 Mac 打造成极致的开发工具,应用软件必不可少。这篇文章介绍本人 Mac 中重要的应用软件,对于一些使用门槛比较高的软件,后续还会通过专门的文章进行进一步介绍,这里重点是列出在各个方向领域所选择的软件。
当然,适合自己的才是最好的。
为了将 Mac 打造成极致的开发工具,应用软件必不可少。这篇文章介绍本人 Mac 中重要的应用软件,对于一些使用门槛比较高的软件,后续还会通过专门的文章进行进一步介绍,这里重点是列出在各个方向领域所选择的软件。
当然,适合自己的才是最好的。
这篇文章介绍 Mac 中的效率神器 Alfred,通过 Alfred 的统一入口,你可以在 Mac 中完成各项任务。对程序员而言,通过 Alfred 提供的各个快捷键或关键字,可以实现用键盘输入而非鼠标操作来完成各个流程,从而极大地提高工作效率。
以前看过一部电影 《社交网络》,讲述的是天才程序员扎克伯格在哈佛创建 Facebook 的故事。电影中有一个场景:扎克伯格一边喝着啤酒,一边在自己笔记本电脑上通过一系列 hacking 操作,利用 wget、perl、emacs 等工具收集各个学院里女生的照片放在自己的网站上供大家浏览,这也是 Facebook 的雏形。完成所有工作后,男主吃着零食,淡定地坐在电脑前、监视网站的流量。当时被这个场景深深震撼到了,这才是一名 geeker 应该有的样子。这里是这段视频的链接。
作为一名主要工作在 Linux 系统上的程序员,如何更加高效地使用 Linux 命令行,更加 geek 地操作 Bash 一直是我学习的目标。其实网络上也有很多关于这方面的资源:
本篇文章主要基于 《Command Line Kong Fu》 一书,对其中每个实例都进行了测试,同时也提供更详细的解释。这篇文章也将会不停增长,用于积累学习到的其他技巧。
Let the hacking begin.
最开始使用 bash 的原生快捷键,即 readline 的 Emacs 模式快捷键,但奈何总是记不住,导致输入效率较低。后来改成将 bash 的输入模式改为 vi 模式(set -o vi
),总算比较顺手,但是也有一些痛点不好解决:
所以还是打算重新使用 bash 的原生快捷键模式,这篇文章主要是对这些快捷键进行总结。
在 Python 中,数据属性和处理数据的方法统称为属性(attribute)。其实方法只是可调用的属性。除了这二者外,还可以创建特性(property),在不改变类接口的前提下,使用存取方法(即读值和设值方法)修改数据属性。这与统一访问原则相符:不管服务是由存储和计算实现的,一个模块提供的所有服务都应该通过统一的方式使用。
yield 对于 Python 来说,有两个含义:
从语法上来看,协程与生成器都是类似的,都是定义体中包含 yield 关键字的函数。但是在协程中,yield 通常出现在表达式的右边,可以产出值,也可以不产生。如果 yield 关键字后面没有表达式,那么生成器产出 None。协程可能会从调用方接收数据,调用方把数据提供给协程使用的是 .send(datum)
方法,而不是 next(…) 函数。通常调用方会把值推送给协程。
这里讨论 Python 用户往往会忽视或者没有充分使用的几个特性,包括:
with 语句会设置一个临时的上下文,交给上下文管理器对象控制,并负责清理上下文。这样做能够避免错误并减少样板代码,因此 API 更安全且易于使用。
程序中的形式应该仅仅反映它所要解决的问题,代码中的其他任何外加形式都是一个信号,表明对问题的抽象还不够深。迭代是数据处理的基石。扫描内存中存不下的数据集时,需要找到一种惰性获取数据项的方式,即按需一次获取一个数据项。这就是迭代器模式。
运算符重载的作用是让用户定义的对象使用中缀运算符或一元运算符。在 Python 中,其实函数调用、属性访问和元素访问其实都是运算符,但是这里只讨论一元运算符和中缀运算符。
这篇文章将讨论接口:从鸭子类型的代表特征-动态协议,到使用接口更明确、能验证实现是否符合规定的抽象基类(Abstract Base Class,ABC)。抽象基类与描述符和元类一样,是用于构建框架的工具,一般都不需要自己编写抽象基类,因为很容易过度设计。