David Gewirtz 发布的文章

我在 Mac 上编写 WordPress 插件,这些是我的工具列表。

根据 2020 年 Stack Overflow 开发者调查报告,在 Mac 上工作的编码者(27.5%)比在 Linux 上工作的编码者(26.6%)要多一点。相比之下,使用 Windows 作为开发机器的开发者数量几乎是其两倍(45.8%)。多年来,我在不同的平台之间跳来跳去,但我发现自己经常回到 Mac 上。

事实上,我从 Mac 专用的应用程序中获得了很多生产力,尤其是用于视频制作的 Final Cut Pro X。我喜欢能够在同一台机器上运行 Windows、Linux 和 Mac 应用程序,而这只有在 Mac 上才能实现(我将在下文中详谈)。虽然 Windows 也提供了一个强大的命令行环境,但我喜欢拥有一个完全是 Linux 风格的命令行,并且 Mac 上集成良好的图形工具对其进行了完整补充。

在本文中,我将向你展示我使用的工具。许多是跨平台的,而另一些是 Mac 专用的。虽然我过去曾开发过 Mac 应用和 iOS 应用,但我现在的开发工作完全是针对 Web 的。我维护了 10 个开源的 WordPress 插件,包括一个支持了 10000 多个非营利组织的捐款插件和一个支持了 20000 多个网站的网站隐私插件。

虽然我过去用过很多编程语言(也写过自己的编程语言),但我目前的项目主要涉及 PHP 和 JavaScript,并擅长 CSS、HTML 和 SQL(及一些框架)。为了创建和维护这些代码,我使用了下面所示的各种工具。在本篇中,我将向你展示我安装的工具。在以后的文章中,我将向你展示和深入介绍有助于完成工作的云服务。

就这样,让我们开始吧。

集成开发环境:PhpStorm

关于代码编辑和开发环境的话题,引发的宗教式的争论我都数不清了。有些程序员坚持走老路,只依靠命令行和 vi、emacs 等编辑器。有些程序员喜欢轻量级的文本编辑器,有些则喜欢可扩展性更强的编辑器,比如 vi 和 emacs。其他人则喜欢更加可扩展的编辑器,比如 Atom 和 Sublime Text。还有一些编码者,包括我自己,喜欢完整的集成开发环境,比如 PhpStorm、Visual Studio Code 和 Xcode(主要是它的 Mac 和 iOS 原生开发工具)。

我选择的武器一直是 PhpStorm。我已经使用它多年了。它有一个优秀的集成调试环境,可以进行本地和远程调试。它还集成了我日常使用的各种功能,从它自带的终端窗口到文件同步,再到版本控制和逐行文件历史记录。另外,它还有丰富的插件可供选择,可以扩展和提升编码体验。

我最喜欢的一些插件包括:

  • Rainbow Brackets(彩虹括号):一个很棒的插件,它不仅能用行匹配括号,还能用颜色来匹配。它可以非常容易地看到哪些代码属于哪里。
  • String Manipulation(字符串操作):各种各样的字符串操作、大小写转换等等。
  • WordPress:语法格式化和 WordPress 式的函数格式化,以及对 WordPress 挂钩的支持。对于任何一个 WordPress 插件的编码者来说都是必备的。

本地环境:Local

在做 Web 开发时,通常最好有一个本地开发栈。Local 就是这样一个栈。它提供了 Nginx 或 Apache、MySQL、带有 Xdebug 的 PHP 安装包,以及其他一些资源,最重要的是它带有一个隧道,这样基于互联网的资源就可以访问本地环境进行编码和测试,内置了 SSL 集成,以及 MailHog —— 它可以拦截电子邮件,用于基于电子邮件的应用测试。哦,而且是免费的。

快速编辑:Sublime Text

我之前就提到过 Sublime Text,很多编码者都把它作为主要的开发环境。它几乎支持一系列传说中的插件和附加组件。当我想在 PhpStorm 固有的项目结构之外编辑项目文件时,我使用 Sublime Text 作为一个快速编辑器。它的速度快,反应灵敏,而且相当有特点。

提交文件到仓库:SmartSVN

WordPress 插件库(所有通过的插件都在这里提供给 WordPress 用户)不使用 Git 或 Github,而是使用 SVN 源码控制系统。我觉得 SVN 的命令行很烦人,所以我使用一个叫做 SmartSVN 的图形化用户界面来将我的文件发送到仓库中。它大大降低了我在发布新版本时出错的几率。

潇洒的命令行:iTerm2

虽然在我的开发工具箱中,我更喜欢使用 GUI 界面来实现大部分功能,但我并不害怕在适当的时候使用命令行。虽然只使用标准的 MacOS 终端也是可以的,但我更喜欢 iTerm2。它提供了分屏、命令补全、粘贴历史等功能。它还可以根据你的心情和项目进行配置。

节省点击的每一秒:Shortcut Bar

这款 Mac App Store 的小宝贝是一款方便的工具,可以捕捉快速项目,并从 Mac 的菜单栏访问它们。我最大的用途是为我正在开发的各种网站创建管理页面和用户页面的快捷方式。与其切换到浏览器窗口,然后调用书签,我只需进入菜单,选择我要去的地方,就会打开浏览器。

这似乎是一个小功能,但当每天在 IDE 和浏览器之间切换数千次时,这些节省下来的鼠标动作确实不少。因为快捷栏允许分组,所以我还将本地和远程服务器测试位置的链接进行了分组。

Mac 上的 Windows 和 Linux:Parallels Desktop

因为我是做 Web 开发的,我必须在基于 Windows 的浏览器上检查我的代码,这意味着我需要启动 Windows 10 来测试新的 Edge、Chrome、Firefox 和 —— 请原谅我,还有 IE11。是的,还有用 IE11 的用户。

我在本文的介绍中提到了 Parallels Desktop。我发现在同一台机器上运行 Windows、Mac 和 Linux 的能力在某些情况下是非常有用的。也就是说,我一直在楼上办公室的 Mac 上运行 Windows,它是我的速度和容量最大的一台机器。那台机器也是我用于视频制作的机器。

我的主要开发机器其实是在楼下,就在沙发旁边。这要追溯到我的狗狗还小的时候,我在办公室工作的时候,它经常会觉得孤独和害怕。现在,我在工作时,它趴在我的腿上是相当愉快的,我已经建立了一个完整的工作站,可以让我坐在客厅里,与键盘和狗共享我的膝盖。

那台机器是一台 2013 年的 i7 iMac,内存 32GB。它是开发的理想之选,但它的速度实在不够快,无法满足多个 4K 视频流的需求。也不足以快到真正成功地托管 Windows 桌面。这让我想到了……

连接到远程机器:屏幕共享和微软远程桌面

尽管我的开发机器在楼下,而我的视频制作机器在楼上,但无论我在哪里,我都可以在其中任何一台机器上工作。我只需使用 MacOS 内置的“屏幕共享”应用来连接到远程机器。

当我想从楼下的开发机器连接到 Windows 时,我使用“微软远程访问”。这是从 Mac OS 应用商店免费下载的,它提供了一个进入我的 Windows 10 机器的完整的远程界面。请注意,如果你打算使用“微软远程访问”,你需要运行 Windows 10 Pro。Windows Home 不支持远程访问。

哦,如果你想知道为什么这套环境似乎没有一个用于移动环境中,在咖啡店编程的组件,这很简单:如今的大流行病。一旦明确我所有的编码工作都将在家里完成,我就把我的开发工作整合到一台容量不错的固定机器上,并针对机器之间的千兆以太网进行了优化。如果我们还生活在之前的“旧常态”中,我就会有一个更以云为中心的实现。我很怀念咖啡店。

管理 MySQL 数据的整洁界面:Sequel Pro

我的代码要做大量的 SQL 操作。因此,我需要能够查看已经存储到数据库中的内容。对我来说,最简单、最快速的方法不是 PhpMyAdmin,而是一个叫 Sequel Pro 的 Mac 本地应用(很奇妙,它的图标上把煎饼和数据存储混为一体)。

我最常用的方式是打开一个数据库表,搜索 “value contains” 或 “option\_name contains”,然后查找结果。它的速度很快,并且允许我在开发过程中对数据进行操作。我应该指出,PhpStorm 也有一个数据库浏览器,但我发现 Sequel Pro 对我来说更有效率。

一个不太复杂的 SFTP 客户端:Forklift

我花了很长时间才改掉了通过命令行和 SSH 隧道使用 SFTP 的习惯。而 Forklift 是一个很好的替代品。它保留了一个网站和登录信息的列表,支持加密,并提供了一个传统的拖放界面来批量移动文件。

强大的应用自动化:Keyboard Maestro

与 Final Cut Pro X 一样,Keyboard Maestro 是让我继续使用 Mac 的专用软件工具之一。我在 2011 年首次购买了 Keyboard Maestro,此后我一直使用它来制作各种专业脚本。

它是一个非常强大的跨应用脚本工具,也非常容易使用。我经常写一些特殊用途的脚本来运行一个原本需要很长时间的任务。我的一些脚本是非常强大的,可以跨多个应用程序。其他的脚本,比如截图中的 Stripe 填充测试,只做一件事,一遍又一遍。

我们来谈谈这个问题。在为我的捐赠插件开发 Stripe 支付网关时,我必须发起测试支付,大概有上千次。在我编码、测试和调试的过程中,我不得不用相同的测试数据填写相同的信用卡字段,一遍又一遍。Keyboard Maestro 中的一个简单的脚本为我完成了所有这些工作。我不需要为每一次测试手工填写数据,而是让 Keyboard Maestro 帮我完成。

特定用途的快速搜索:Alfred

Alfred 是我的生产力家族的新成员。它会弹出一个命令栏,有点像 Spotlight,但增加了功能。你可以创建工作流来完成相对复杂的任务,但到目前为止,我的主要用处是四个自定义搜索。当我按下 Alt-Space 时,就会弹出 Alfred 的输入栏。

如果我键入 “codex”,它就会把后面的任何内容作为搜索字符串来在 WordPress 开发者文档站 codex 上搜索。输入 “plugin”,会搜索 WordPress 插件库。输入 “zdme”,会搜索 ZDNet 中我写过的带有要搜索的字符串的文章。我经常使用这个方法在文章中放置链接。现在,这些可能看起来很简单,你可以设置 Chrome 浏览器来进行自定义搜索,但同样,与快捷栏一样,这可以节省鼠标移动和按键。如果我需要查看 WordPress 函数的定义,只需轻点一下按键,就能得到它,而不需要动用鼠标。

你觉得怎么样?

那么,你看到了,这些是我的主要开发工具,可以帮助我完成工作。那你呢?你是编程人员吗?如果是的话,什么软件工具能帮助你提高工作效率?请在下面的评论中告诉我们。


via: https://www.zdnet.com/article/one-developers-favorite-mac-coding-tools-for-php-and-web-development/

作者:David Gewirtz 译者:wxy 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

如果你有一台老旧的 PC,或者是基于单板计算机的小型系统,你可能希望运行的是一个占用资源较少且易于下载的 Linux 版本。在这里,我们来看看占用资源非常小的 Linux 发行版。除了 Damn Small Linux 之外,这里列出的所有 Linux 发行版都是最近才更新的。每个发行版都可以在内存不足 1GB 的机器上运行,而且大多数发行版都可以在更小资源内运行。以下排列以字母排序。

Alpine Linux

Alpine Linux - 130MB download

下载:130 MB

Alpine Linux 最初是针对虚拟服务器和设备的,它直接运行在内存中。它以安全为重点,面向最终用户的功能较少,但如果你需要的话,也可以支持桌面功能。上一次公开发布是在 2019 年 10 月。

antiX Linux

antiX Linux - about 1GB download

下载:约 1GB

antiX 发行版声称完全不含 systemd —— 这是现代 Linux 发行版的基本构件。相反,antiX 提供了“antiX Magic”(我不确定那是什么)。我会告诉你,这个安装程序很复杂,有很多选项。这是一个基于 Debian 的构建版。最后一次更新是在去年 10 月份。

ArchBang

ArchBang - 600-700MB download

下载:600 - 700MB

ArchBang 是一款受 CrunchBang 启发的发行版,其使用 Arch Linux 的 Openbox 窗口管理器。最近一次发布是在 2019 年 11 月。

Bodhi Linux

Bodhi Linux - 700MB download

下载:700MB

Bodhi 是一款基于 Ubuntu 的轻量级发行版,这款发行版采用的是 Moksha(一种基于 Enlightenment 的桌面)。它的模块化和可定制性很强,可以让用户构建非常简单或合理的系统。它最近刚刚更新过。

BunsenLabs Helium

BunsenLabs Linux Helium - 600MB to 1.2GB download

下载: 600MB 至 1.2GB

前有 CrunchBang 和 CrunchBang++,今有 BunsenLabs Helium 和 ArchBang,这两者都是在 CrunchBang++ 发行版的基础上构建的。Helium 基于 Debian,采用 Openbox 窗口管理器。最新的版本是在 2019 年 7 月发布的。

Damn Small Linux

Damn Small Linux - 50MB download

下载:50MB

Damn Small Linux 自 2008 年以来一直没有正式发布,虽然 2012 年曾经有过一个候选版本。如果你有旧的硬件,这应该没什么问题,但不要在互联网上多用,因为较新的漏洞还没有打补丁。其最轻量级的形式可以在 16MB 的内存中运行,完全加载也只需要 128MB 内存。

Elive

Elive - 2.4GB download

下载:2.4GB

Elive 是一款即用版 Enlightenment 发行版,其中还包含了 Elpanel 控制面板。按照真正的 Linux 风格,它的口号是:“虽然 Elive 并不适合所有人,但你是例外吗?” 它只要 256MB 内存就能运行。Elive 最后一次更新是在 2019 年 10 月。

Linux Lite

Linux Lite - 1.4GB download

下载:1.4GB

Linux Lite 并不像一些微型发行版那样小,但它也不会让你感到多么庞大。它配备了你需要的所有组件,基于 Ubuntu,运行着一个令人感到愉快的 Linux 桌面环境。它可以在 768MB 内存中运行,但 1GB 内存更好。它最近刚刚更新。

Lubuntu

Lubuntu - 1.6GB download

下载:1.6GB

Lubuntu 名字的意思是“轻量级 Ubuntu”,顾名思义,你就知道这个发行版是怎么回事了。它是使用 LXQt 桌面环境构建的,你可以选择你想安装什么典型的 Ubuntu 软件包。它也是最近刚刚更新的。

LXLE

LXLE - 1.2GB download

下载:1.2GB

LXLE 基于 Ubuntu,有一个非常具体的口号:“重新唤醒那台老旧的 PC。”它的设计理念是拥有丰富的功能和应用,可以让你把一台老旧的 PC 变成一台可以工作的台式机,基本的 PC 使用所需的一切都有。最后一次公开发布是在 2019 年 9 月。

Puppy Linux

Puppy Linux - around 300 MB download

下载:约 300MB

Linux 从来都不会让事情变得简单,Puppy Linux 也不例外。Puppy Linux 并不是一个发行版,而是有 11 个不同版本的 Puppy Linux。它不再像以前那样小,1GB 的内存运行的比较好。尽管如此,它是最早的轻量级发行版之一。它最后一次更新是在 2019 年 3 月。

Raspberry Pi OS

Raspberry Pi OS - 400MB - 1.2GB

下载:400MB 至 1.2GB

Raspberry Pi OS(以前叫 Raspbian)是一个适用于树莓派的 Debian 发行版。在这里列出的所有发行版中,Raspberry Pi OS 是我日常使用的一个。我在三台正在运行的树莓派服务器上运行着它,另外还有几台暂时不活跃的服务器也加载着它。我不使用 Linux 图形界面。相反,我连接到一个 OctoPi 网络界面,可以让我控制我的 3D 打印机。最近刚刚更新。

SliTaz

SliTaz - 50MB download

下载:50MB

SliTaz 是一款完全运行在内存中的 Linux,可以通过 CD-ROM 或 USB 盘启动。它的体积很小,只有 50MB 左右,但具有强大的安全功能,可以只安装基础系统,或安装一个精简的 X 环境。最新的滚动发布是在 2018 年。

SparkyLinux 基础版

SparkyLinux base edition - 540MB download

下载:540MB

Sparky 是另一个基于 Debian 的发行版,它的设计是为了让家庭用户能有一个相对简单的开箱即用的 Enlightenment 体验,尽管它确实支持大约 20 个窗口管理器和桌面环境。它在 2019 年 11 月进行了更新。

Tiny Core Linux

Tiny Core Linux — 11MB download

下载:11MB

有三个版本,最小的是 11MB 的下载。在没有图形界面的情况下,Tiny Core Linux 的运行内存为 64MB。最后一次更新是在 2019 年 1 月。

结语

就是这些了,你用过哪个轻量级发行版?如果有我们没有提及的轻量级发行版,也可以在下面留言。

经常有人问哪个编程语言最流行?这问题很简单,但是回答起来可没那么简单。

首先,我们要知道,为什么人们会问这样的问题?

一般问这样的问题是人大多是学生,他们想知道这个问题的答案是因为他们想要找份工作,所以寻求一种可以增加面试成功率的技能。对于大多数人来说,进入一个新的领域时了解什么是最流行的,是很有意义的。

而对于其他人来说,比如说已经掌握了一种或几种编程语言的程序员,他可能在想要掌握一门新的编程语言时,会考虑一下当前最流行的编程语言作为参考。而对于要开发一个产品的程序员来说,也希望了解当前最流行的编程语言是因为他们希望所开发的产品能够迎合客户的环境和需求,显然支持流行的语言的 API 会被更多人使用。

甚至,就算是你想启动一个项目时,你也需要考虑是否选择一个流行的编程语言。虽然你首先要考虑的是这种语言能够满足你的需求,比如说如果用一个流行的编程语言你需要花费更多的时间和成本,而不那么流行的编程语言或许会更快捷和轻松,显然你还是会选择那个不太流行的——但是如果各个方面都差不多,不用说你会选择流行的那个,因为这样你可以找到更多的程序员,遇到问题也有更多的解决方案。

怎么才算是流行?

那么,哪个语言是最流行的?其实回答这个问题并没有你想象的那么简单。关键是,你该怎么定义这个“流行”?

这个问题并没有固定的答案,不过在维基上有一篇文章提到了如何测量编程语言的流行度。在这篇文章中,列出了几个测量流行度的因素:

  • 该语言在搜索中提及的次数,比如在谷歌趋势中
  • 在招聘广告中提及该语言的次数
  • 传授和介绍该语言的书籍销售量
  • 以该语言编写的现存代码的行数,不流行的语言在公开搜索中可能根本就找不到
  • 在 GitHub、Freecode 上使用该语言的项目数量
  • 在论坛和新闻组中讨论该语言的帖子数量

此外,你还可以考量如下指标:

  • 编程培训班里面该语言的培训课程销售数量
  • 编程培训班里面学生的数量
  • 视频网站里面关于该语言的视频数量
  • Stack Overflow 和 Reddit 里面关于该语言的帖子数量

甚至,你还可以增加一些其它的统计维度,比如根据国家和城市来统计,你知道在北京哪种编程语言最流行么?上海呢?

所以,这个问题的回答并不是一个简单的答案。

统计数据来源的不同

即使我们知道了流行度取决于多种因素,但是人们还是希望能够了解到底哪个语言比较流行,以此来指导他们的培训和公司的决策。

有一些网站依据不同的标准,公开发布了一些语言流行度指标。 IEEE Spectrum 对这些指标做了一个有趣的整合,它可以让你通过自行设置不同因子的权重来得到你自己的编程语言流行度排行榜。

Coding Dojo 也有一个图表,聚合了工作搜索引擎 Indeed.com 的数据;而有名的 Tiobe 排行榜一直使用搜索引擎聚合来计算流行度; PyPl 则是根据谷歌来查看语言的流行度。

然而,这并没什么大用。如果你想知道你该学习那种语言,或者是你需要支持的语言,最困难的还是你并不知道这里的哪个图表才是适合你的。

好吧,我明白了,那么到底那种编程语言是流行的?

为了帮助你找到方向,我组合了上述提及的几种数据源,包括三种 IEEE 分类:“趋势”代表语言的增长度,“工作”代表 Dice.com 和 CareerBuilder 上的招聘量,“开源”代表开源项目数量。

排名结果如下表:

但是问题是,上图并不能告诉我们重点所在。要解决这个问题,我们需要做一点数据分析。我聚合了这六个数据源中的五个(我去掉了 Coding Dojo 是因为它仅显示了前九),然后我根据编程语言出现在图表中的位置和次数进行加权,这样我得到了如下的前十排名。

如你所见,这些语言分成了三大类。第一梯队包括 Java、C、Python 和 C++,毫无疑问,你肯定经常听到它们的名字。第二梯队包括 JavaScript、C#、PHP 和 Swift。剩下的两个是 Objective-C 和 R。

这给我们带来什么启发?

第一梯队的语言 Java、C、Python 和 C++ 都是非常通用的语言,它们并不局限于特定的编程平台或用途。

最值得关注的是第二梯队,它包括 JavaScript、C#、PHP 和 Swift。JavaScript 和 PHP 是主要的 Web 开发语言。C# 是微软的编程语言,而 Swift 是苹果新推出的主力语言。基本上来说,第二梯队是平台相关的。

那么这反映了什么?如果你懂一点现代编程,你就知道编程其实不仅仅是使用这种语言,而更重要的是开发一些什么,比如说嵌入式系统、iPhone 应用、Web 应用或者微软的服务器端应用等等。

对语言的熟悉程度其实只是一小部分。举个例子说,不管你是多么的喜欢 Python 或者古老而常青的 C,但如果你要为 WordPress 开发插件或主题,你只能使用 JavaScript 和 PHP。这无关于哪个语言更流行。

字里行间的发现

或者你会注意到一些有趣的地方。

首先,Coding Dojo 的编程语言排行榜的第一名是 SQL,只有它一家是这样。你很少会单独在 SQL 里面编程,通常都是在其它的语言里面使用它来管理数据。所以,学会 SQL 是很有用的,甚至是必要的。然而,去上一门 SQL 的培训课程并不能帮你找到一份工作,也不会多挣多少钱。

其次,苹果特有的语言在排行榜中排名很低,这或许和你的预期不同,因为 iOS 的应用是如此的流行。不过确实是这样的,如果你不是要开发你自己的应用的话,那学它们其实不如学习别的语言,因为其实没有那么多的公司雇佣苹果应用开发人员。这就是 Swift 语言掉到了榜尾的原因,而 Objective-C 正在被 Swift 所替代,在前面也看到了它也处于榜单的后面。

C 家族的语言仍然是主流。Java、C++、C、C#,甚至 Objective-C 都是基于 C 的语言。如果你只想学一门语言,你可以从其中选择一个。我推荐你选择 Java 或 C++,它们可以为你打开进入 C 语言家族的大门。

以我的职业生涯的经验来看,不是特别复杂的场景的话,我大概能用 20 来种语言来编程,通常我只用几天就可以学会一门新的语言。这是因为我在学校的专业就是语言设计,我也教编程超过了 20 年了。掌握这么多的语言对我很有帮助,因为我总是根据我要做的事情选择一种语言,而不是专门去上课学习一种语言。这听起来好像有点难,但是其实你也能做到的。

我的建议就是,如果你要编程,那么就去学习多种编程语言和各种框架吧。用编程语言去做点东西出来,编程不仅仅是一种智力锻炼,而且你可以实际用它做点什么出来。

掌握多种语言和框架是重要的,因为计算机行业变得太快了。C 语言依然历久弥新,而 Swift 虽然出现才几年就登上了排行榜。你今天学习到的或许不够你整个职业生涯挥霍,所以“怎样学习语言”要比“学习语言”更重要,最好的办法就是多学几门。

我的推荐非常简单,无论是 C++ 还是 Java,选一个学习就好了。然后是 JavaScript,越来越多的基于 Web 的应用需要良好的 JavaScript 技能。再然后是 PHP、Swift 或 Python 中选一个,这要看你的工作种类了。当你在这三个梯队中都学会一门后,你就可以根据你的情况学习更多的语言和框架了。

好了,努力吧,学习一些编程语言,做点漂亮的成绩出来。如果你有什么想法,欢迎在下面和我们分享。