0%

为了将 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 配置,除非你每次都将当前登录的 shell 设置为 vi 模式输入,否则还是难以高效地输入
  • 使用 mysql 等客户端工具时,它们都是默认使用 readline 的 Emacs 模式,此时也需要修改其输入模式

所以还是打算重新使用 bash 的原生快捷键模式,这篇文章主要是对这些快捷键进行总结。

阅读全文 »

在 Python 中,数据属性和处理数据的方法统称为属性(attribute)。其实方法只是可调用的属性。除了这二者外,还可以创建特性(property),在不改变类接口的前提下,使用存取方法(即读值和设值方法)修改数据属性。这与统一访问原则相符:不管服务是由存储和计算实现的,一个模块提供的所有服务都应该通过统一的方式使用。

阅读全文 »

yield 对于 Python 来说,有两个含义:

  • yield item 会产生一个值,提供给 next(…) 的调用方
  • 此外还会做出让步,暂停执行生成器,让调用方继续工作,直到需要使用另一个值时再调用 next()。调用方会从生成器中拉取值

从语法上来看,协程与生成器都是类似的,都是定义体中包含 yield 关键字的函数。但是在协程中,yield 通常出现在表达式的右边,可以产出值,也可以不产生。如果 yield 关键字后面没有表达式,那么生成器产出 None。协程可能会从调用方接收数据,调用方把数据提供给协程使用的是 .send(datum) 方法,而不是 next(…) 函数。通常调用方会把值推送给协程。

阅读全文 »

这里讨论 Python 用户往往会忽视或者没有充分使用的几个特性,包括:

  • with 语句和上下文管理器
  • for、while 和 try 语句的 else 子句

with 语句会设置一个临时的上下文,交给上下文管理器对象控制,并负责清理上下文。这样做能够避免错误并减少样板代码,因此 API 更安全且易于使用。

阅读全文 »

这篇文章将讨论接口:从鸭子类型的代表特征-动态协议,到使用接口更明确、能验证实现是否符合规定的抽象基类(Abstract Base Class,ABC)。抽象基类与描述符和元类一样,是用于构建框架的工具,一般都不需要自己编写抽象基类,因为很容易过度设计。

阅读全文 »