当前位置: 首页 > 编程日记 > 正文

【转】Mac 程序员的十种武器

http://chijianqiang.baijia.baidu.com/article/3733

在写 Mac 程序员的十个武器之前,我决定先讲一个故事,关于 Mac 和爱情的。(你们不是问 Mac 和爱情有个鸟关系吗?)

从前有一个孩子叫做小明,他不是高帅富,与高大上也毫无瓜葛,只有低调、无聊和内涵。他住在全国房价最贵的城市,租着最贵的单间,写着各种垃圾或垃圾回收的代码,干着程序员这份前途若有若无的职业,一切都朝着注定孤独一生的方向发展着,如果没有变数的话。

终于有一天他的朋友小强为他介绍了另一位朋友,这个朋友不是女朋友,而是一款笔记本,笔记本的名字叫做Macbook Pro。见到 Mac 小明似乎遇到了久违的情人,呆滞的双眼放出绿油油的光芒,他花掉了所有的积蓄购买了这款笔记本,开始没日没夜的学习 iOS 和 OS X 开发的相关知识。

他在写 Java 代码的间隙写 Objective-C,在编译 Java 的同时构建 IPA,在运行完 Web Server 之后运行 iOS 虚拟机。每个清晨和夜晚他都在编程……他与 Mac 相依相偎,他们是最好的朋友。

终于有一天,他掌握了 Mac 的一部分奥秘,他编写出了自己的第一个 iOS App,花了99美元申请了开发者账户,传到了 App Store 上。又过了一段时间,他告诉他的技术主管:我要去远行。于是他去了另一个房价很贵的城市,带着增长了75%的薪资,从此杳无音讯。

两年后,小强去那个城市看望小明,发现小明身边除了升级的视网膜屏 Macbook 之外,还多了一个水灵灵的女朋友,小强和他的女朋友握了握手,发现是真人,小强觉得很欣慰。小明告诉小强,他现在是公司 iOS 开发组的 Team leader,还和女朋友一起买了套小房子,他们准备,从此幸福的生活在一起……

这就是 Mac 和爱情的故事,这是一个真实的故事,故事的主角不是我。我用 Mac 的时候孩子已经两岁了,没有机会去完成这样一个美丽的爱情故事,是我毕生的遗憾。

今天的文章到此结束。

喂喂,说好的十个 Mac 工具呢?好吧,没看到这只是上吗?

再回答一个问题:问:是不是买了 Mac 就会变得很有钱?

答:错,这当然是个伪命题,真实的情况是:

1、Mac 本来就比其他品牌的笔记本贵不少,一般情况下有钱人才会买。

2、不是有钱人的,买了 Mac 天天抱着看各种动作片和爱情片,一样无法改变注孤生的命运。

以前在 Mac 指引系列里写过一个工具列表,主要是面向普通 Mac 用户的,完整文章已经收录到纸版《MacTalk·人生元编程》中。今天的文章主要是面向程序员的,有重合,但侧重点不同。

大部分用户第一次使用 Mac 都会有个短暂的情绪反转。打开包装后马上为 Mac 精美的硬件工艺击节赞叹,进入OS X 之后随即陷入一种蛋蛋的忧伤,因为,用了十几年的开始菜单不见袅!妈妈开始菜单不见袅肿么办?这时候需要的是:淡定和冷静!

要清楚的认识到,我们寻找的不是开始按钮,而是程序入口,任何一个操作系统,用户要做的事情并不是找到开始菜单,而是找到程序,然后打开它们完成自己的工作。在 Mac 里,完成这个职责的最佳角色不是 Dock,而是 Alfred。所以我的建议是,任何用户进入 OS X 之后,第一步就是去 App Store 下载 Alfred。普通用户使用免费版就够了,开发人员可以购买 Powerpack,物超所值。

(一)Alfred 是 Mac 平台上最为传奇的效率工具,用一篇长文来介绍都不为过,幸好 Mac 君在之前已经写过了,回复「alfred」阅读。

Mac 对原生 Shell 的支持是无数程序员喜爱 Mac 的理由之一,程序员用 Mac 而不用 Shell,基本等于自断一臂,威力将大打折扣。Shell 并非凭空而来,它的入口是终端工具。OS X自带的终端工具虽然不错,但是和 iTerm 2一比,就逊色很多了。

(二)iTerm2 是 OS X 下一款开源免费的的终端工具,我基本用它替代了原生的 Terminal。网址:http://www.iterm2.com

一些基本功能如下:

1、分窗口操作:shift+command+d(横向)command+d(竖向)

2、查找和粘贴:command+f,呼出查找功能,tab 键选中找到的文本,option+enter 粘贴

3、自动完成:command+; 根据上下文呼出自动完成窗口,上下键选择

4、粘贴历史:shift+command+h5、回放功能:option+command+b

6、全屏:command+enter

7、光标去哪了?command+/

8、Expose Tabs:Option+Command+E

功能还有很多,多用多体会。

另外,很多朋友说自己的终端一直是黑白的,如何换成彩电?在用户目录的.profile里加上这两行即可:export CLICOLOR=1export LSCOLORS=gxfxcxdxbxegedabagacad

(三)有了优秀的终端,我们终于可以使用 Shell 了。不过,万里长征才开始了第一步,Shell 也是分门派的,我推荐给大家的是:终极 Shell——ZSH。

(四)文本编辑器同样是程序员最喜爱的开发工具之一,我个人偏爱 Vim。Vim号称编辑器之神,可以脱离鼠标全键盘操作,良好的插件体系几乎适配各类编程语言,使用起来充满推背的速度感,如果你是个赛车迷,你会喜欢上这款软件的。

推荐阅读 Vim 系列。

其他可选工具:Emacs、TextMate、Sublime Text等。

(五)IDE 是图形化的集成开发工具,具备精准的词法分析、编程提示、调试等功能,功能之繁复用户自知,如果做工业级编程和团队协作的话,推荐使用 IDE。

在这里给大家推荐如下几个工具:

1、Xcode,Mac 上优秀的集成开发工具,几乎所有的 Mac App 和 iOS App 都由此而生,免费软件。无论你是 写 Java 的还是写 Python,用了 Mac 一定要安装 Xcode,为什么?我准备写一篇「更有效率的 XCode」说一下这个事情,当然,这样的内容没那么干,如果各位不同意就算了。

2、JetBrains 系列,产品线丰富,几乎都是精品,Java、Python、Ruby、Php、Objective-C、Web 等一应俱全,收费,还挺贵。

3、Eclipse 系列,通过插件方式几乎支持所有的常用编程语言,免费。

(六)Homebrew 是 OS X 的包管理工具,Ruby 社区的作品,功能类似 Ubuntu 下的apt-get。使用 Homebrew 可以非常容易的安装 OS X 中没有包含的 Unix 工具包和语言包,比如 wget,node,lua,rabbitmq,nginx 等。当然,我们得首先安装 Homebrew,安装脚本如下:

ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"

一段类似黑客帝国里的脚本过去之后,Homebrew 就装好了。尝试一下安装命令行下载工具 wget:brew install wget一段类似黑客帝国里的脚本过去之后,wget 就装好了。

那有没有工具可以用类似的方式安装Chrome 浏览器、离线迅雷、虾米、QQ 呢?答案是肯定的,程序员无所不能,他们开发了Homebrew-Cask用来一键安装应用软件,有了 Cask,再也不用手动下载软件包 DMG,打开,拖进应用程序文件夹了,一切都可以交给程序去做。

安装 Cast:brew tap phinze/homebrew-cask && brew install brew-cask

用法:brew cask search 列出所有可以被安装的软件brew cask search xx 查找所有和 xx 相关的应用brew cask info xx 查看xx应用的信息brew cask uninstall xx 卸载 xx

尝试一下吧。

(七)Git 是一款分布式版本控制和软件配置管理软件,类似 SVN 和 CVS,是 Linus 的第二个惊世之作。关于 Linus 和 Git 的故事,我们会在 Linus 系列里描述,这里就不细聊了。

Git 是目前主流的版本管理工具,基于 Git 构建的 Github 网站则是这个星球上最大的开源集散地。还在使用 SVN 和 CVS 的童靴,该换换脑筋了。

回复「git」,你将获得一份Git 简明教程。

图形化的 Git 工具推荐:GitHub、SourceTree。

(八)对于程序员来说,文件比较也属必备工具,OS X 中提供了原生的比较工具 FileMerge,不过这个工具对非 ASCII 内容的文件支持非常不好,推荐 VisualDiffer。VisualDiffer 支持文件和文件夹比较、文件过滤、多重比较模式、颜色标注等,操作简单,响应迅速,实乃程序员居家旅行之必备工具。收费软件,可以直接从 AppStore 下载。

另外,习惯命令行操作的朋友,直接使用 diff 和 vimdiff,也是不错的选择。

(九)xScope 是一款强大的辅助设计工具,可以精确度量屏幕上的 UI 元素,尤其适合全栈工程师。xScope 可以方便的取得屏幕上任意位置的颜色,可以动态智能监测元素边界并显示距离,可以针对移动设备和各种浏览器设定屏幕尺寸,可以设定屏幕辅助线,放大屏幕等。如果你不想事事求人,xScope是个不错的选择。收费软件。

(十)Pixelmator 号称 Mac 上的精简版 PhotoShop,设计更为人性化,适合非专业人士使用,不是平面设计人员也可以作出非常专业的图像设计。像我这样的老程序员,也开始时不时设计个物件,让团队里的美工 MM 为之侧目。收费软件。

推荐一个Podcast视频教程:http://www.pixelmator.com/tutorials/itunes/

有了这些武器,你将如猛虎加之羽翼而翱翔四海,到时候再说英雄谁是英雄……

转载于:https://www.cnblogs.com/exmyth/p/6419237.html

相关文章:

git ignore linux,为什么说.gitignore不能忽视

我注意到很多开发者没有使用 .gitignore 文件,尽管使用 .gitignore 文件来指定你不希望 Git 在版本控制中跟踪的文件是最佳实践之一。.gitignore 可以提高代码质量,所以你不应该忽略版本库中的 .gitignore。什么是 .gitignore?Git 仓库中的文件可以是&a…

java arcengine_在Java程序中调用ArcEngine

ArcEngine一般在C#中用的比较多,不过esri也是为Java提供了AE的类库的,不过文档确实没做的C#那么好。下面我记录一下如何在项目中配置使用AE的环境。第一步:将arcobject.jar包加到build path下;第二步:要使用AE&#xf…

matlab 实例均命名为,MATLAB复习题

第一章MATLAB 概述1、标点符号( ; )可使命令行不显示运算结果,( % )用来表示该行是注释行。(常用标点符号的功能见P9)2、用“format”命令设置数据输出形式,(format long )将pi 显示为3.14159265358979,(format short e )将pi 显示…

爬虫之Scrapy

Scrapy初步 Scrapy基于Twisted设计实现,Twisted的特殊特性是以事件驱动,并且对于异步的支持性很好,集成了高性能的异步下载,队列,分布式,持久化等。 Scrapy的安装 在Linux中可以直接在命令行中输入&#xf…

java 8 lambda reduce_JDK8新特性Lambda表达式体验

“Lambda 表达式”(lambda expression)是一个匿名函数,Lambda表达式基于数学中的λ演算得名,直接对应于其中的lambda抽象(lambda abstraction),是一个匿名函数,即没有函数名的函数。Java 8的一个大亮点是引入Lambda表达式&#xf…

php display_errors

// 检测开发环境public function setReporting(){if (APP_DEBUG true) {error_reporting(E_ALL);ini_set(display_errors,On);} else {error_reporting(E_ALL);ini_set(display_errors,Off);ini_set(log_errors, On);ini_set(error_log, RUNTIME_PATH. logs/error.log);}} 在p…

linux esd转iso,window_Win10 TH2正式版10586官方ESD映像怎么转换成ISO镜像?,今天phpstudy分享了Win10 TH2(Build - phpStudy...

Win10 TH2正式版10586官方ESD映像怎么转换成ISO镜像?今天phpstudy分享了Win10 TH2(Build 10586)各版本官方ESD映像下载地址,不过旧转换工具可能已不适用于新版ESD映像,特别是新版本增加了专业版和家庭版二合一映像,而以往都是单版本。本文使…

mysql在线上建索引,mysql 5.6在线DDL建索引测试

基本信息:mysql版本:(product)rootlocalhost [(none)]> select version;------------| version |------------| 5.6.29-log |------------1 row in set (0.00 sec)表payment的记录数:(product)rootlocalhost [sakila]> select count(*) from paym…

接口测试(postman jmeter)

接口:把client(前端)和server(后端)联系起来的就是接口,接口测试就是功能测试,进行接口测试首先得需要接口文档。 json是一种通用的数据格式,接口返回的数据都是json,jso…

c语言中delay找不到标识符,51单片机的c语言,请问哪里错了?延时没有效果,但是编译又不报错。delay应该怎么写,怎么引用啊?...

最佳答案西岸风2019-01-07 15:15i){LED00;LED21;LED40;delay(5000);}void main(void){while(1){for(i0;i<10;sbit LED0P1^0;sbit LED1P1^1;sbit LED4P1^4;sbit LED5P1^5;sbit LED2P1^2;sbit LED3P1^3;unsigned char i;sbit LED6P1^6;sbit LED7P1^7;void delay(unsigned int …

java 数据类型转换的一场_Java基础 — 四类八种基本数据类型

整型&#xff1a;整数类型int    一般的数据。long    极大的数据。short   用于特定的场合&#xff0c;比如底层的文件处理或者需要控制占用存储单元空间量的大数组。byte   用于特定的场合&#xff0c;比如底层的文件处理或者需要控制占用存储单元空间量的大数组。by…

vs 代理登入

https://msdn.microsoft.com/zh-cn/vstudio/dn771556.aspx转载于:https://www.cnblogs.com/CodingArt/p/6424180.html

php 为啥报错,php Soap 报错 求大神帮忙看看为什么

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼代码&#xff1a;$client new SoapClient("http://116.218.12.10:7012/businessService?wsdl", array(*trace* > true, *exceptions* > true));var_dump($client->__getFunctions());var_dump($client->__…

UWP: ListView 中与滚动有关的两个需求的实现

在 App 的开发过程中&#xff0c;ListView 控件是比较常用的控件之一。掌握它的用法&#xff0c;能帮助我们在一定程度上提高开发效率。本文将会介绍 ListView 的一种用法——获取并设置 ListView 的滚动位置&#xff0c;以及获取滚动位置处的项目。这里多说一句&#xff0c;由…

Deepin ROMS 安装详细流程

按照这个过程&#xff0c;完美安装&#xff0c;当然并不能排除会出现其他的问题。如果遇到了&#xff0c;那就老老实实上网搜吧。 转载于:https://www.cnblogs.com/haoorhuai/p/9502859.html

java struts2值栈ognl_Struts2 (三) — OGNL与值栈

一、OGNL表达式1.概述1.1什么是OGNL​ OGNL是Object-Graph Navigation Language的缩写&#xff0c;俗称对象图导航语言. 它是一种功能强大的表达式语言&#xff0c;通过它简单一致的表达式语法&#xff0c;可以存取对象的任意属性&#xff0c;调用对象的方法&#xff0c;遍历整…

c语言课程设计商品销售系统,c语言课程设计商品销售管理系统.pdf

C语言课程设计商品销售管理系统12020 年 4 月 19 日文档仅供参考商品销售管理系统目录一、 需求分析 2二、概要设计 2三、详细设计 4四、调试分析 14五、用户手册 14六、测试数据 15七、 附录 18— 1—22020 年 4 月 19 日文档仅供参考一、需求分析商品销售管理程序商品信息&am…

uploadhandler.php,WordPress Kernel Theme ‘upload-handler.php’任意文件上传漏洞

javascript中apply、call和bind的区别在JS中,这三者都是用来改变函数的this对象的指向的,他们有什么样的区别呢.在说区别之前还是先总结一下三者的相似之处:1.都是用来改变函数的this对象的指向的.2.第一个参数都是this要指向的对 ...AIX UNIX 系统管理、维护与高可用集群建设—…

selenium--driver.switchTo()

在自动化测试中&#xff0c;会遇到多窗口、多iframe、多alert的情况。此时&#xff0c;会使用driver.switchTo()来解决。 下面时关于driver.switchTo()的详细介绍&#xff1a; 1.多windows操作。 在页面A上操作时&#xff0c;点击某个元素之后&#xff0c;可能会打开新的窗口。…

代理模式-积木模式

代理模式&#xff0d;积木模式 代理模式在实际开发中的确非常常见和常用&#xff0c;表面上代理模式是产生出一个代理类&#xff0c;作为访问实际实现类的代理&#xff0c;控制了外界对实际代理类的访问&#xff0c;在此基础上增加一些增强性的功能。实际上&#xff0c;还将实际…

java调用系统时间函数_JAVA自学笔记:不使用系统函数来计算日期处于当年的第多少天...

前段时间练习了一个求闰年的功能&#xff0c;现在就可以用上啦&#xff0c;这次写一个不借助类库的时间函数&#xff0c;利用基础代码写一个计算求日期处于当年的第多少天的函数。虽然也有简单的方法&#xff0c;例如直接定义每月的天数累加&#xff0c;然后加上当月的天数就可…

c语言输入学生成绩q退出,哭诉、拜求C语言学生成绩管理系统

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼/* Note:Your choice is C IDE */#include "stdio.h"#include "stdlib.h"#include "conio.h"#include "string.h"struct student{int num;char name[20];float score1;float score2;float…

php 所有魔术方法,PHP常用的魔术方法及规则

转&#xff1a;https://www.cnblogs.com/wanglijun/p/10926303.html1. __construct 具有构造函数的类会在每次创建新对象时先调用此方法;初始化工作执行。2. __desstruct 对象的所有引用都被删除或者当对象被显式销毁时执行。3.__call()在对象中调用一个不可访问方法时&#xf…

mysql启动后在哪里编程_启动mysql后怎么连接数据库

推荐答案一.mysql安装百度mysql下载一个即可。只是注意一下几个重要的数据&#xff1a;第一个就是Port Number :3306。端口号默认3306&#xff0c;一般不需要改&#xff0c;如果改了&#xff0c;请记住这个端口号。第二个就是password&#xff1a;本地数据库密码&#xff0c;默…

Python 出现 can't use a string pattern on a bytes-like object

# codingutf-8import urllib.requestimport reurl http://www.163.comfile d:/test.htmldata urllib.request.urlopen(url).read() r1 re.compile(<.*?>)c_t r1.findall(data)print(c_t)发现读取下来后,运行到第9 行,出现: cant use a string pattern on a bytes-l…

2018牛客网暑期ACM多校训练营(第十场)J(二分)

题目描述&#xff1a; 给你n个字符串&#xff0c;要让它们一个一个的合并成一个串。在合并的过程中&#xff0c;要保证被合并的串S是合并后的串r的前缀&#xff0c;模式串t是串r的子序。问你将这n个字符串合并后所得到的字典序最小的串是什么。 题目分析&#xff1a; 首先&…

实用c语言函数源码,C语言编写简单朗读小工具(有源码)

原标题&#xff1a;C语言编写简单朗读小工具(有源码)最近不少人在后台留言说学C都是面对枯燥的控制台程序&#xff0c;能不能体现一下C语言的实际用途&#xff0c;今天我们就理论结合实践一把&#xff1a;C语言结合VBS脚本编写一个简单的朗读小工具&#xff0c;做一个能够发音的…

php监听订单状态,ecshop数据库订单状态判断

order_info 表刚下完订单order_status 0shipping_status 0pay_status 0取消order_status 2shipping_status 0pay_status 0确认order_status 1shipping_status 0pay_status 0已付款order_status 1shipping_status 0pay_status 2配货中order_status 1shipping_status 3pay_status…

flask异步操作_Python Flask后端异步处理(三)

前一篇博文我们已经将基础知识和环境配置进行了介绍&#xff1a;首先编写一个celerytask.py文件进行Celery的配置&#xff0c;同时耗时任务也写在该文件中from celery import Celeryfrom init import appfrom SZheConsole import SZheScanapp.config[CELERY_BROKER_URL] redis…

Codeforces Round #308 (Div. 2) C. Vanya and Scales dfs

题目链接: http://codeforces.com/contest/552/problem/C 题意: 给你100个砝码&#xff0c;第i个砝码质量是w^i&#xff0c;然后问你能不能在有m的情况下&#xff0c;左边和右边都放砝码&#xff0c;使得这个天平平衡 题解: dfs直接暴力 对于这个砝码来说&#xff0c;只有3种选…