跳过主要内容

保存的帖子

有时候少即是多

Dave Nicolette |龙头
戴夫尼科尔特
阅读: 有时候少即是多

软件开发

谈到软件开发工具时,更大更好。

显然。

特征臃肿

集成开发环境(IDE)继续生长。其中一些有很多功能我甚至不知道他们能做的所有事情。

世界在我的窗口

高端ide可以显示许多不同的面板,提供系统配置设置、项目目录树、项目配置设置、各种“控制台”和日志文件以及不同种类的源文件和数据文件的各种视图。所有或大部分面板都可以启用/禁用和扩展/收缩,有些面板会在IDE认为它们应该出现时自动出现,而不一定在我们认为它们应该出现时出现。

IDE窗口会因为面板和面板中的选项卡而变得杂乱不堪。当你试图抓住一个面板的边缘缩小它,有一个公平的机会你会无意中触摸功能的地方标记或断点激活/停用板之间通过点击在阴沟里,或者在一个点,导致一个工具提示阻止该地区你想浏览。

这是一个截屏微软博客文章从2014年开始约会,举报VisualStudio 2015年和混合。这一点是不是挑选在VisualStudio上,而只是为了说明典型的现代IDE如何看待几个面板打开。其他ides具有相同的特征。

在插图中,焦点清晰地位于窗口中心的面板上;毕竟,这就是这篇博客文章的内容。但在一般情况下,如果窗户上有四个或更多的面板,开发商应该往哪里看呢?有没有可能是其他面板让你分心了?开发者目前所从事的任务有多少屏幕空间可用?

就像信田在训练现场对阿尔格伦说的最后的武士:“太多的心灵。”

就我个人而言,我不认为把每个工具都放在一个窗口中比打开多个窗口更好的“用户体验”。这可以归结为个人偏好。

在插图中,焦点清晰地位于窗口中心的面板上;毕竟,这就是这篇博客文章的内容。但在一般情况下,如果窗户上有四个或更多的面板,开发商应该往哪里看呢?有没有可能是其他面板让你分心了?开发者目前所从事的任务有多少屏幕空间可用?

就像信田在训练现场对阿尔格伦说的最后的武士:“太多的心灵。”

就我个人而言,我不认为把每个工具都放在一个窗口中比打开多个窗口更好的“用户体验”。这可以归结为个人偏好。

如果值得这样做,值得过度

有些IDE配备嵌入式迷你应用程序(不是官方术语),以帮助您使用特定类型的文件。这是一个混合的祝福。通常它更有效地编辑文件的纯文本。以下是Spring Tool Suite,基于Eclipse的IDE呈现的Maven POM的默认视图:

公平地说,这个小应用程序封装了Maven POMs的专家系统知识。它分析POM,并指出潜在的问题。这有时是有用的;毕竟,Maven POMs在使用多年后仍然保持神秘。但大多数我们只需要编辑XML文本的时间。我们不要求IDE告诉我们我们应该写的想法。这默认视图应该是带有适当高亮显示的XML文本。为了达到这个目的,你必须选择一个不同的POM观点;也是最简单的方法是使用鼠标,许多开发人员认为障碍。

弹出疯狂

有些ide会在编辑器中自动弹出许多工具提示和提醒图标,以至于你甚至看不到你试图修改的文本。当你移动鼠标指针试图关闭工具提示时,你经常会不经意地将鼠标停在另一个产生工具提示的区域上,而这个区域与你当前的兴趣无关。当您很好地了解语言和库时,这真的会降低您的速度,并消磨您的精力。

这是Jetbrains Intellij Idea的一个例子。当开发人员跨越源代码行时,图示捕获屏幕的部分。

启动延迟和周期摊位

高端IDE需要收集有关该项目的大量信息,以便在您工作时为您提供上下文敏感的帮助。虽然有时可能会有所帮助,但每次使用IDE时,您都会为此付出代价。

这more “advanced” the IDE, the longer it takes to start up as it “prepares the workspace,” “detects frameworks,” “indexes files,” searches online for available updates that you haven’t asked for, and who knows what else. From time to time during the day, the tool has to repeat these operations to refresh itself. It’s hard for developers to stay “in the zone” when the tool interrupts flow.

复杂的配置

通常需要几分钟才能找到IDE隐藏特定配置设置的位置,打开每个下拉菜单和上下文菜单,直到我们找到一些听起来像是我们正在寻找的配置设置的东西。

即使我们能够确定IDE对给定的Thing使用哪些设置,操作系统也经常会查看系统上其他地方的不同设置来控制相同的Thing。当在命令行或CI服务器上执行时,IDE是否使用与构建工具相同的编译器和库版本?

现代IDE是高度可配置的。您可以抑制面板和编辑器选项卡的显示。您可以在编辑文件时请求不太有用。所有此配置性的缺点在于弄清楚如何更改配置。

当然,谷歌是我们的好朋友,但不幸的是,它为我们定位的“帮助”很少与我们正在查看的IDE版本的实际行为相匹配。“简单*打开Foo菜单,然后…”“只有没有Foo菜单”…或者你可以使用按键序列,Ctrl+Alt+M…”这什么都不做,或一些你不想做的事情。

提醒一句:在写文档或回答问题时不要使用“简单”这个词。这是死亡之吻

产品文档通常很难导航。“搜索”功能假定您已经知道IDE设计人员使用来描述每个功能的确切术语。如果您不搜索特定术语,则无法找到帮助。所以我们在网上论坛中寻找问题和答案。问题是先前版本的产品的所有答案都在那里,并且并不总是很容易找到适用于所使用的版本的信息。

好的,坏的和丑陋的

许多开发人员由于某些有用的特征而像IDES工作一样,特别是:

  • 跨不同工具(编辑器、调试器、测试运行器、覆盖率、分析器等)的紧密集成。
  • 能够在IDE窗口的温暖包围内运行和监视外部程序(依赖性管理器,构建实用程序,HTTP服务器,Web浏览器,移动设备仿真器,终端仿真器等)
  • 编辑帮助:语言感知的语法高亮显示,自动补全,智能感知,自动缩进,插入样板代码片段,分隔符匹配,等等。
  • 协助多个基本重构
  • 了解项目元数据
  • 与版本控制系统集成

但大多数开发人员对功能膨胀、等待“索引”、嵌入式服务器和其他工具的不稳定行为、突然崩溃、操作系统和IDE之间的不同配置设置、编辑时的视觉干扰、对外部程序的有限支持(例如,关于版本控制系统,您可以检出和检入,但除此之外就没什么了),频繁地在键盘和鼠标之间切换,以及不断增长的内存占用,这通常比开发中的应用程序要大得多。

开发人员如何应对?

开发人员主要通过三种方式来应对IDE的膨胀:

  • (1)外部运行外部程序
  • (2)IDE配置
    • 定义和使用键绑定以减少或消除对鼠标的需要
    • 使用IDE功能来减少Visual Clutter,例如禁用编辑器选项卡,并启用某种封闭大部分面板的“无分心”模式
  • (3)使用文本编辑而不是IDE
    • 切换到“智能”文本编辑器,如VSCode, Atom,或Sublime text 3
    • 回到过去的可配置编辑器,如Vim和Emacs
    • 使用基于云的开发环境

这些替代方案是有取舍的。

外部运行外部程序

通过忽略用于在IDE窗口中运行外部程序的IDE特性,可以减少或消除内存膨胀、服务器挂起、难以找到控制台和日志输出以及操作系统与IDE配置设置不一致等问题。

这里的权衡是,每次启动开发平台时,您都必须打开、定位和调整多个窗口的大小,以便在监视器上获得可用的窗口排列。一旦您做好了这些工作,开发工作流几乎可以像完全在IDE窗口中工作时一样平滑和无缝,但通常会有更快的感知响应时间和更少的“意外”,如挂起的服务器或本地和CI构建的不同结果。

关键绑定

关键绑定are useful, but they aren’t always consistent across IDEs, including IDEs offered by the same vendor (JetBrains comes to mind), and they can conflict with OS key bindings as well as presenting challenges for external keyboards that don’t have all possible keys. In that sense, configuring your IDE to emphasize the keyboard can involve yet another level of configuration pain. Of course, once that’s done it’s done; it isn’t an ongoing burden.

也许一个更重要的问题是,在ide世界中,键盘“快捷键”是事后才想到的,它是在一切都是由设计驱动的指针时代出现的。以只使用键盘的方式使用现代IDE可能会很笨拙,有时需要比您所知道的更多的手指,或者异常宽阔的手掌以使您能够将一只手全部伸过键盘。类似螃蟹的进化适应导致双手不对称,这可能对开发者有用。

即使有很好的关键绑定,也有IDE操作,仍然更容易与指向键盘的指针执行;特别是面板之间的导航和面板的激活/停用;因此,从工作流程中消除指向设备并不一定是可行的。

减少视觉杂乱

启用无干扰模式、禁用编辑器选项卡和消除很少需要的面板,大大简化了IDE窗口,可以实现更流畅的开发工作流程。在一些ide中,你可以关闭一些工具提示和其他弹出窗口,它们会分散你的注意力,而不是帮助你。

但它让我震惊了这些选择将我们返回编辑并远离IDES。IDE的外观和感觉变得越来越多的编辑器,就像我们去除越来越多的视觉混乱一样。

也许这不是巧合。

现代智能编辑器

智能编辑器如Sublime Text 3,Atom,Vscode,甚至更简单的Leafpad和Geany,提供大部分功能开发人员使用的大部分时间。与IDES的关键绑定有同样的问题;他们没有设计键盘中心的工作。根据环境,他们缺乏可能或可能并不重要的功能。特别是,编辑通常对支持差或不支持:

  • 对项目元数据的意识——ide通常是专门针对一种语言的,并且拥有关于该语言中项目通常是如何构造的“知识”;他们“知道”项目中不同元素之间的关系,并可以帮助确保事情始终保持一致。
  • 智能感知——在上下文中帮助使用在代码中实际可用的方法调用完成语句;在某些情况下,帮助输入正确类型的方法参数;这比自动补全稍微多一点,自动补全可能只补全您在源文件中已经使用过的令牌中的缺失字符
  • 辅助重构——手动进行重构会很繁琐而且容易出错;开发人员喜欢最好的ide提供的重构特性

这些特征对你来说可能很重要,也可能不重要。这将取决于您喜欢如何工作,您对编程语言及其库的熟悉程度,以及代码库的结构有多好。

有些语言得益于IDE支持

在我的经验中,编程语言涉及项目结构和智能敏感的知识。借助良好IDE可以更容易地使用诸如R的专业语言;在那种情况下,rstudio。使用JVM语言,很难想象在没有良好IDE的情况下实现与Java,Kotlin或Groovy的顺利工作流程。

另一方面,使用Clojure和Leiningen或Scala和Scala和SCTA(也是JVM语言)的工作流程可以使用单独的窗口中的文本编辑器和终端仿真器更平滑和更轻。

对于大多数其他语言——Python、Ruby、Go、C/ c++、JavaScript、shell语言等等——文本编辑器似乎已经足够好了。随着VSCode的出现,我们不再需要借助VisualStudio(最强大的)来使用。net语言。在这些情况下,命令行构建工具包含了项目元数据的“知识”(例如,make、rake、npm、bundler、dotnet、sbt、gradle、maven等)。

手动重构

最重要的权衡(在我看来)是缺乏协助重构支持。它可能会或可能不是你愿意贸易的东西。对于它的价值,我发现自己最常使用以下重构:

  • 提取方法 - 经常
  • 提取常数-有些频繁
  • Rename—有些频繁
  • 拉起 - 不经常
  • 提取接口 - 不经常
  • 提取类 - 非常少

但这到底是多大的权衡呢?当我们手工进行重构时,这些重构需要什么?

提取方法将一些连续文本线切割并粘贴到同一源文件中的其他位置,然后在切割线的点写入单行方法调用或函数调用。然后,您将在文件中的所有其他点粘贴到原始代码已重复(如果有的话)中的所有其他点。当你考虑(a)ides经常没有相当do the extract the way you want, and you have to do a little manual editing anyway, and (b) duplication isn’t usually exact, and you have to edit the code to produce a generalized version of the near-duplicate logic, this doesn’t seem like a high price to pay. Extract Method is the refactoring I use most frequently by far; if doing it by hand is easy, then the impact for all the remaining refactorings will be very small.

提取常量是相同的基本模式 - 将一些文本复制出一行中的一些文本并将其粘贴在其他地方,键入常量声明的其余部分,并修改原始线路以引用新的常量;然后使用编辑器的查找/替换功能来更改源文件中的其余引用。它比使用IDE时更乏味,但不是可怕的。

重命名最常用于单个源文件的范围内。编辑器的查找/替换功能就足够了。要在目录范围或项目范围重命名,使用grep和sed(或等效实用程序)编写命令并将其保存为可重用脚本非常简单。这是另一个小小的代价。

所有其他重构都不当使用,即在编辑器中缺乏内置的支持是一个非问题。

传统的可配置编辑器

“现代”智能文本编辑器仍用IDES共享一个问题,这是它们倾向于使用指向设备强调。软件开发,EMACS和Vim的旧狂暴设计,为键盘使用而设计,为键盘使用而设计,在地平线上没有鼠标的概念。使用这些工具设置键盘配置比使用IDE或当代智能编辑器更容易。

为了获得基本的编辑辅助功能——自动补全、语法高亮显示、分隔符匹配、缩进、片段——您可能遇到的任何语言都可以使用插件。这些工具提供了大量的功能,占用的资源很少,对系统资源的需求也很少。亚傅体育app一旦你的手指下有键绑定,它们对你编程的每一种语言都是一样的;您不必每次使用不同的语言时都记住如何使用不同的IDE。

基于云的环境中

一个有趣但尚未形成的选项是通过Web浏览器使用基于云的开发环境,在您自己的系统上不安装编辑器或ide。到目前为止,其中大多数都是为了支持专门的开发工作而设计的。例如,IBM的OpenWhisk编辑器旨在支持针对OpenWhisk云平台的开发。同样的,CodeSandbox.io使用React, Vue, Angular和Preact支持JavaScript的Web前端开发,仅此而已。

通用的基于云的编辑器仍处于开发的早期阶段。我发现一个非常有用的方法是代码在任何地方.它支持大约75种不同的编程语言。编辑器和周围的生态系统工作得很好。但是,在您自己的机器上,您不会在您喜欢的IDE中找到您所喜欢的特性集或定制性。这是一种权衡,可能对你有用,取决于你喜欢如何工作和你正在做什么。你可以在咖啡店使用PixelBook做很多开发工作……具体情况取决于。

设备成本

随着软件规模和资源使用量的增长,运行软件所需的硬件也会成正比增长。当我写这篇文章时,适合开发工作的笔记本电脑的定价大致如下(这篇文章不是关于定价的官方信息来源)。这些机器,以及其他许多机器,可以轻松地运行任意数量的臃肿的ide:

  • 戴尔XPS 13开发版-在同一网页上显示的价格在5分钟内从约940美元到约1550美元不等。他们可能会使用某种数据分析来预测每个潜在客户愿意支付多少钱。保持警惕!在任何情况下,你都要花大约1300美元去买一台16GB的机器,128GB的SSD和预装Ubuntu Linux。这是一个13英寸的显示器,但作为一个开发人员,你可能会使用外部显示器;所以这是另外的150到250美元,差不多。所以你需要花1700到1900美元才能买到一个非常好的开发盒。
  • 东芝Portege z30 - c - 138-制造商建议零售价为$1,530;我发现这个产品的售价在1250美元到2460美元之间,具体取决于零售商。这款手机拥有16GB内存和512GB SSD,屏幕为13.3″,属于价格区间的高端。如果我们说大约2000美元加上另外200美元的外部显示器,我们看到大约2200美元。这台机器安装了Windows;我不认为这是权威的,但多年来我在Portege的早期版本上运行Linux已经很幸运了。
  • 联想Thinkpad E480- 16GB内存,1TB硬盘,14个″屏幕,售价1200到1300美元。带外接显示器,大约1550美元。

让我们的小

在上一篇之前的几篇文章中,我探讨了只使用一个文本编辑器在小虚拟机(512MB内存,20GB存储)中开发的可行性,NeoVim(的实现vim.).我发现在这种设置下,使用35种不同的语言工作相当容易。

每个项目的自定义虚拟机

这段经历让我开始思考“变小”的问题。没有人能同时使用35种语言。对于任何给定的项目,我们大多数人只需要两种语言。鉴于在我的机器上工作问题,对每个项目量身定制的原始环境是一个好主意。

所以,为什么不启动一个VM,并为它提供我们项目所需的工具呢?VM可以在下面本地运行VMware(跨平台),VirtualBox(跨平台),或hyper - v(Microsoft Windows 10)。

提供模板实例

我决定尝试创建操作系统的“基础”或“模板”实例,这些实例可以通过支持不同编程语言和其他必要工具快速提供。这是一个正在进行的工作,但到目前为止,我已经有了配置脚本来准备基于五个不同的模板实例Linux和Unix Distrs,这样你就可以选择自己的口味了。这些实例具有Openbox已安装显示管理器和NeoVim编辑器。

所有发行版都带有shell语言和C / C ++编译器,模板也有Python和Python3安装,因为一些新媒体插件需要它们。大多数也安装了Ruby 2.4.4,因为我想玩厨师我在它,厨师要求。

最重要的是,您可以为任何给定的开发项目添加任何编译器,测试工具和Neovim插件。由此产生的开发环境将在一个小的内存足迹中运行很好。

在我写这篇文章的时候,我还没有编写基于这些模板的定制开发环境配置的脚本,但这是一个正在进行的副项目。

为什么传统的编辑?

为什么Neovim(或Emacs)而不是vscode(或sublime text 3)?嗯,我过去常常使用的我的一位同事经常强调开发人员在键盘上流利的重要性。过度使用鼠标减缓了编码和测试的步伐,并转移了注意力掌握了手头的问题。所以,我想到了没有老鼠的环境,使用不会让我们有“错过”的工具。与键盘围绕键盘建造的新域内,与键盘快捷键添加作为事后的智慧。

赤裸裸的窗口经理

模板开发实例将OpenBox作为默认窗口管理器。OpenBox可以打开Windows,但默认情况下仅显示无特色黑屏;它所做的一切都是由关键绑定控制的。有两三个窗户开放 - 几个终端仿真器和新域 - 您可以对您可以想到的任何应用软件开发工作。你有六tty,这样你就可以有多个终端,而根本没有Windows,如果你想真的小。

这是覆盆子PI的屏幕截图,如下所述。它正在运行其中一个模板配置,使用OpenBox托管上面的Neovim窗口,分为两个窗格,以编辑Bash脚本和相应的Microtest脚本,以及底部的终端仿真器窗口。

廉价的硬件

这和硬件成本有什么关系?如果一个开发环境可以在一个512MB的虚拟机和一个20GB的虚拟硬盘上轻松运行,那么它应该可以在一个1GB内存和32GB micro-SD卡的树莓派上更轻松地运行。与上面提到的开发者笔记本电脑相比,硬件成本如何?

  • 覆盆子PI 3B +套件包括所有必要的位:60美元 - 70美元。
  • USB电源线扩展与开/关开关:$0 - $7
  • 低端显示器:15 - 60美元
  • 低端键盘:$ 3 - 12美元
  • USB鼠标:3 - 10美元
  • 以太网电缆:3 - 10美元
  • 漂亮的NeoVim标志贴纸:4美元

总价格在88美元到173美元之间。高端ide或云订阅的许可证成本:0美元。和你可以放弃鼠标,把成本压缩到85美元。编写代码不需要它;仅用于GUI环境中的测试。

当然,硬件成本并不是软件开发中最大的成本。然而,随着气候变化和资源枯竭,其他成本也变得越来越重要。当然,树莓派比传统的台式机或笔记本电脑消耗的能源更少。当需要处理或回收材料的时候,需要处理或回收的材料就少了很多。

足够的谈话

下面是我们要做的:

  1. 组装一台廉价机器
  2. 安装最小操作系统
  3. 安装最少的开发工具
  4. 为代表性的应用程序开发类别添加对环境的支持

您可以从Github尝试此项目以构建Raspberry PI并将其配置为轻量级开发的基本环境:bootstrap-raspbian-jessie-dev-base.一旦你组装好了装置和拉斯比安·杰西,引导脚本将执行一些安装和配置。

我希望你真的会做这个而不仅仅是浏览。我认为抽象地理解一个主题是很有用的,但如果是基于内心层面的理解,那就更好了。

为“真正的”开发做准备

基本配置将单元设置为轻量级开发环境。然后,您必须添加您需要使用的任何工具来处理您需要处理的语言。根据你需要做的工作,细节会有很大的不同,但它通常包括以下资源:亚傅体育app

  • 编译器
  • 建立公用事业
  • 依赖关系管理
  • 测试工具
  • Neovim编辑器的插件
  • 数据库(也许)
  • HTTP服务器(也许)

并非所有工具在PI上使用APT安装,因为并非所有包都以Bar架构的二进制形式提供。某些语言比其他语言更容易设置。为了在这里提供一个现实的例子,而不是一个欺骗性的简单,让我们填充配置来支持以下开发工作:

  • 用Ruby编写的服务,提供RESTful API并访问关系数据库
  • 基于浏览器的单页前端应用程序作为服务的客户端
  • 自动检查单位,API和UI级别

这只是众多堆栈中的一个,但它是一个相当现实的示例。许多开发人员使用这些或类似的技术开发应用程序。对于您所使用的技术,您也必须做类似的事情,所以您可能想自己尝试一下,或者至少通读一遍。

我们需要安装以下工具(当然也有其他选择):

  • 红宝石
    • Ruby语言支持
    • 绑定程序(依赖项管理器,构建实用程序)
    • Sinatra(适合RESTful Services的Web框架)
    • RSPEC(面向行为规格框架)
    • Cucumber(行为导向的UI检查)
  • HTTP服务器
    • 薄(轻量级HTTP服务器适用于开发/测试)
    • Node.js(前端应用程序的HTTP服务器支持)
  • 关系数据库系统
    • SQLite3(适用于DEV /测试的关系数据库)
  • JavaScript语言支持
    • 节点(JavaScript环境和执行)
    • NPM(依赖关系管理器,构建实用程序)
    • React(单页面应用支持)
    • 茉莉(以行为为导向的规格框架)
  • NeoVim插件
    • vim-ruby/vim-ruby (Ruby编辑支持)
    • Pangloss / Vim-JavaScript(JavaScript编辑支持)

Ruby相关安装

Ruby语言支持

正如这是写的,您可以在PI上安装Ruby 2.1.x,但当前版本为2.5。幸运的是,我们不是第一个拥有这种需求的人,并且有助于在线找到。

让我们跑步汤姆·布莱克的剧本在pi上安装rbenv和Ruby 2.5。此安装不依赖于ARM二进制文件,因为它从源代码构建Ruby。这意味着运行需要一些时间。

汤姆在他的脚本中捕获了运行时,所以我们可以看到需要多长时间。在我的情况下,在pi 3b +上,构建花了15分钟和47秒。

脚本完成后,我必须获取.bashrc文件的源代码,以运行rbenv init命令。

. bashrc。

之后,我运行了“rbenv版本”以查看Ruby版本的列表RBenv已安装。

rbenv版本

该命令只返回版本2.5.1。命令:

Ruby -version.

2.5.1返回。

Bundler.

Bundler是一个广泛使用的依赖者管理器,并为Ruby构建实用程序。它分发给红宝石宝石。

要在安装gems之前再次检查所需的Ruby版本是否有效,可以使用以下命令:

宝石env回家

在我的例子中,它指向用户“pi”下的2.5.1版本,这是正确的。此时,您可以按照通常的方式安装gems。我安装Bundler像这样:

宝石安装Bundler.

而且效果很好。

额外的宝石

其他宝石,包括Sinatra、Rspec和Cucumber,将由Bundler在构建项目的上下文中安装。

JavaScript语言支持

节点

Pi自带了数量惊人的开发工具。让我们检查一下Node的版本。

节点- v

在我的情况下,报告v4.8.2。截至写作时间,节点进入了9年代。

和Ruby一样,Pi也安装了Node,但不是当前版本。和Ruby一样,其他的也需要在Pi上安装当前版本的Node,并发布了我们可以使用的帮助。我们会尝试理查德斯坦利的安装脚本:

wget - o - https://raw.githubusercontent.com/audstanley/NodeJs-Raspberry-Pi/master/Install-Node.sh | sudo bash

那跑得很快,没有问题,后来'node -v'报告的9.11.1版。

NPM

NPM是Node的依赖管理器和构建工具。在我的例子中,它已经安装在Pi上了,而且是当前版本!

反应

我们需要react和react-dom包。这些是Node包而不是Linux包,所以我们用npm安装它们:

NPM安装React React-DOM

茉莉花

对于微和单位水平的自动检查,我们想使用Jasmine:

npm安装茉莉花

sqlite3关系数据库

一般认为Sqlite3不适合生产,但它通常用于开发。我安装了:

Sudo apt安装sqlite3

我没有遇到任何问题,但是你应该知道有几个关于覆盆子π论坛课件安装时的错误。如果您确实获得错误,请不要担心,因为解决方案可用。由于报告了这些问题,因此可能会纠正这些错误。

NeoVim插件和配置

Neovim Ruby支持

引导脚本将PI作为基础开发环境提供包括安装NeoVIM插件,用于编辑Ruby源。这是因为我使用厨师的几个其他环境处理一些配置,厨师需要Ruby 2.4或更高版本。厨师未在Bootstrap脚本的PI版本中使用,但是NeoVim插件的安装仍然存在。

为了验证这一点,我启动了NeoVim并输入了一些Ruby源代码。我观察到语法突出显示和缩进按照预期工作。我没有安装自动完成支持,所以我没有预料到它会发生。

NeoVim JavaScript插件和配置

NeoVim有许多JavaScript插件。现在,我们将安装从pangloss。

Git clone https://github.com/pangloss/vim-javascript ~/.config/nvim/bundle/vim-javascript

结论

我们不会在这里开发应用程序。我的目的是要展示搭建Raspberry Pi用一个轻量级的工具栈来做“真正”的开发工作所涉及的工作的总体水平……没有ide,只是一个编辑器加上测试和部署所需要的任何软件。现在,我们已经拥有了所有的工具来开发一个基于Ruby的微服务应用,它的前端是一个React应用。

关键的东西是要完成一个轻量级Linux实例的配置来支持任何给定的编程语言,你可能会发现一些步骤非常简单,其他步骤更繁琐。

I don’t want to oversell this as a simple thing to do, but I do think it can be a useful setup for many types of application development, and it solves or mitigates some of the problems that are on the rise as a consequence of the increasing complexity of IDEs.

在我看来,这也表明我们并不绝对需要一台昂贵的机器来建立有效和可用的开发工作站。对于所有类型的发展可能不是真的,但对于大多数主流应用程序开发工作似乎是正确的。我觉得我可以自信地处理任何开发项目,刚刚使用PI建造,增强基于云的静态代码分析,连续集成,部署和托管服务。

谁会在乎吗?

我可以想到至少两组可能对这种设置感兴趣的人。

开发人员受困于沉重的工具

首先,有些开发人员可能会对重量级工具感到“卡住”,因为他们正在处理“总是以这种方式进行开发”的遗留系统。考虑:

  • 在Microsoft Windows上使用VisualStudio进行。net开发。使用NeoVim、Emacs或VSCode等工具,可以在占用空间很小的Linux实例上很好地完成这类工作。命令行工具' dotnet '封装了关于。net项目结构、包管理和构建的所有必要知识;不需要重量级IDE来支持这个堆栈上的开发。FWIW,我遇到过一些在微软工作的人,他们在体验了VSCode之后最后一次关闭了VisualStudio,并且没有后悔。
  • 针对IBM大型机环境的COBOL开发。这种工作通常是用(a)在大型机上OEDIT本身,(b) IBM Rational开发人员,涉及一个沉重的IDE在Microsoft Windows与一个或多个额外的服务器(Greenhat RD&T)或(c) Compuware黄玉工作台,沉重的基于eclipse的IDE,必须有一个连接到主机支持它的所有功能。在GnuCOBOL的帮助下,可以在Linux实例上以一种更轻量级的方式完成这项工作Cobol单元测试和BerkeleyDB。适当的脚本工作可以包装FTP命令,以便在开发实例和大型机之间传输源文件和copybook文件。轻量级的设置适用于使用TDD工作流程的“测试自动化金字塔”的底层。
  • 用于Java应用程序的Oracle JDeveloper。文本编辑器并不适合使用Java;一个好的支持java的IDE可以更好地支持这类工作,这在很大程度上是因为目录结构必须反映包结构,而文本编辑器不能提供任何帮助来导航项目文件。拥有Java类路径的底层管理也是很好的。但是JDeveloper把钟摆摆得太远了;运行本地构建可能需要5分钟以上的时间,这使得短的红绿重构周期很难保持重点。轻量级Linux实例可以托管像JetBrains IntelliJ IDEA或Eclipse这样的IDE,提供比JDeveloper更流畅的工作流程。

边缘化的人希望推进

第二组可能对此感兴趣的人是那些由于资源成本而被拒之门外的人。亚傅体育app这可能包括长期资金不足的公立学校,它们通常依赖于企业的慷慨捐助,以及边缘化或弱势群体,还有发展中国家的年轻人,他们想学习软件开发,为未来做准备,但又买不起2000美元的笔记本电脑和每年1000美元的工具和服务订阅费。

非常实用和健壮的开发机器(更不用说web服务器、数据库服务器、无线接入点、路由器、防火墙和你所知道的)可以由廉价的单板计算机和使用过的外围设备组装而成。有有效的无限人们可以利用这些资源创造什么。亚傅体育app这取决于他们的想象力和决心。

结束

我进行这个练习是为了找出在没有任何“繁重”ide的情况下做“真正的工作”是否可行。这是对IDE产品过度膨胀的一种反应,(在我看来)这些产品在许多年前就已经足够好用了,不需要越来越多的特性。我不会在所有类型的开发中使用文本编辑器;在许多情况下,IDE提供了很好的价值。但我了解到,对于我们的大多数工作来说,我们真正需要的是非常适中的工具。

如果您同意我的同事Junilu的观点,即在IDE中使用鼠标会减慢速度,那么实际上您可能会更喜欢如这里描述的设置。vim和emacs使毫无忌惮地使用感觉正常和舒适。从IDE中删除鼠标会产生速度颠簸和阻碍流动的死角,尽管有能力定义键盘快捷键。那些工具没有设计用于这种方式。vim和emacs是。

下一个>TDD被认为有害?

Dave Nicolette自1977年以来一直是一名IT专业人员。他担任过各种技术和管理职务。从1984年开始,他主要从事咨询工作,一只脚站在技术阵营,一只脚站在管理阵营。

评论(1)

  1. 鲍勃·切斯利
    回复

    我最近看到的编辑和ides最好的概述。我也在管理阵营中一直保持一只脚,并在技术方面的一个,目前使用vscode,webstorm,intellij和vi + -m。

    回复

发表评论

您的电子邮件地址将不会被公布。必填字段已标记*