20小时学会编程 互动版

在线工具推荐: Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 可编程3D场景编辑器

Codex-个人笔记本数据库

我的第一个应用工具表现得非常好。它非常简单有用。较少的运动部件意味着较少的瘫痪程序。

让我们看一些更加复杂的东西。

还记得我们之前讨论的数据库吗?基础网页不能自我更新,因为它们无法储存信息。第一个应用之所以那么有用是因为文档是静态的,它们不会改变。文档的任何改变都是通过Jekyll实现的,它是一个独立的程序。这个应用快速而稳定,因为它不依赖于数据库。

那么使用数据库的应用呢?数据库一般是网络应用的一大部分,所以我需要了解它们是如何工作的。为了学习它们的工作方式,我必须从一个依赖于数据库的项目学起。

Backpack是我每天使用的应用之一,它由37signals开发。Backpack的主要优点是可以创建包含很多东西的“页面”:文本明细表图像文档等。当你在Backpack的一个页面储存信息的时候,你稍后就可以在任何计算机上访问到它,因为所有的信息都已经储存在应用的数据库当中。

我想知道,我自己可以创建一些类似的东西吗?值得一试……但从何开始呢?

在研究Jekyll的时候,我读到了一篇由Tom Preston-Werner(创建Jekyll的程序员)发表的叫作《自述文件驱动开发》Readme Driven Development)的文章。有别于每几年就会轰动软件业一次的项目管理技巧,该文章旨在说明创建一个应用的最好方式,即做其他任何事情之前,编写一个自述文件。

一份自述文件就是和代码一起被程序员放到应用的根文件夹里的文档。该文档包含如何安装、设置以及使用程序等信息。

自述文件是非常重要的,因为许多程序都无法自我解释。一般而言,如果没有一些参考资料的话,那么要想弄明白如何使用一个程序就显得非常困难。挖掘代码并自己弄懂它的效率,不如阅读附有详细讲解的由原程序员编写的文件。

Tom认为,在开始编程之前,你最好先写程序的自述文件。大多数程序员都是先编程,然后再写自述文件,那将错失良机。先写自述文件可以帮你弄清楚这个程序将会如何运作。与其说自述文件是一个资料工具,不如说它更像一个设计工具。

我觉得有道理。在编写《在家就能读MBA》The Personal MBA)的过程中,我学到的其中一项产品开发技术就是先写销售文案,然后再进行营销,而不是先营销,然后再写销售文案。如果弄懂潜在买家的需求并将之整合到销售文案中,那么你会更加了解怎样的产品才可以吸引客户。市场研究能够反映营销的开发。

我在笔记本上记录好了我的应用应该完成的任务,以及这个应用所要达到的质量水平,具体内容如下。

  • 这个程序是一个简单的参考和笔记应用。
  • 该应用为独立的用户设计。
  • 该应用使用Sinatra和一个数据库创建、保存、更新以及删除页面记录。
  • 该应用允许用户创建具有花俏格式(如粗体、斜体和标题等)的页面。
  • 该应用要求密码访问,并尽可能安全地把信息储存在数据库当中。
  • 该应用程序看起来不错。
  • 该应用可以很容易地部署到Heroku或者另一个类似的主机当中。

我打算把这个应用称为Codex,术语“书本”的旧称,因为这个应用的主要功能就是储存参考资料和清单等。

这类应用的网络编程的专门术语是“CRUD”,它代表创建读取更新删除。值得一提的是,这些功能和GETPOSTPUT以及DELETE基本是一致的,所以创建这类应用当然有可能使用Sinatra路径。最大的不同之处在于数据库的引进。

Heroku有哪些可供选择的数据库类别?我不知道。这要回到资料文件当中去。    在默认模式下,Heroku使用一种叫作Postgres的数据库。每一个新的应用都会默认得到一个小型的数据库。那对我很有用,但是该如何使用它呢?在计算机里又该使用什么工具来测试这些程序呢?