首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

架构之美:教你如何分析一个接口?

任一项目中,接口都很多,理解接口就是一个个读接口源码吗? 相信没有人能把所有接口细节记住, 如何才能理清繁杂的接口呢? 找主线,看风格。...这一讲,我们就来一起来学习怎样看接口,我选择的项目是Ruby on Rails,因为它的接口设计风格是带给我最多震撼的,无论是编程接口的优雅,还是开发过程接口的顺畅。 看设计要先看模型。...接下来,我们就一个个地深入其中,了解它们的风格,以及它们给行业带来的不同思考。 REST 接口 先说应用对外暴露的接口:REST API。...Article.find_by_title_and_author("foo", "bar") 从功能的角度说,这样的查询在功能上是完全一样的,但显然Rails程序员和Java程序员的工作量是天差地别的,...写程序库和写应用虽然都是写代码,但二者的要求确实相差极大。把细节暴露给所有人,显然是一个增加犯错几率的事情。 Rails的API接口让人们开始关注API的表达性。

2.2K20

不要让框架控制你的项目,过度依赖框架会害了你

第三种危害是,框架的使用导致我们需要付出额外的努力,但这部分工作并不能为客户提供价值,比如框架升级、弃用、教育和信息摄入(例如学习新功能)等。...为了让项目使用最新版本的Rails,你需要更新或移植框架,但这些工作都需要资源。 再者,即便眼下框架与你的目标完全一致,但将来呢?尤其是对于刚刚启动的项目来说,谁又能预知未来呢?...当我们的领域和业务逻辑与框架代码混在一起;当高级业务概念与底层的架构机制混在一起;当业务逻辑混入底层架构,我们必须阅读控制器、视图、模型、工厂、服务、配置文件、库、框架代码,才能搞明白为什么案例A中创建了...关键不是永远不要使用框架,而是要隔离它们,并统一从一个地方调用。将框架的影响范围降到最低,这是我们的责任。 然而,大多数框架预先定制了很多技术细节,并且都混合在一起。因此,我们很难将它们分开。...最后,维护工作的难易程度与使用特定的工具或框架无关。正如Symfony指出的那样: 最佳实践可以保证应用程序的稳定性、可维护性和可升级性。 而“最佳实践”之一就是不要让框架控制你的项目!

82630
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    如何在CentOS 6.5上使用 Nginx+Passenger 部署Railes应用程序

    该过程需要用到Phusion Passenger应用服务器,该服务器以其简单性和出色的功能著称,并与前面运行的Nginx HTTP服务器一起处理和管理连接。...当然只有一个人可以完成这项工作,但可能不是很好,因为它们并不适合所有目的。 在本教程中,我们将使用Phusion Passenger作为应用程序服务器。...为了简化操作而不是手动安装它们,我们将为YUM和其他包管理器添加EPEL软件存储库以供使用。...由于Rails首先需要一个JavaScript解释器才能工作,我们还需要设置Node.js. 为此,我们将使用默认的系统包管理器YUM。...创建示例应用程序/上传源代码 让我们首先在我们的主目录中创建一个非常基本的Rails应用程序,以便与Passenger和Nginx一起使用。

    5K20

    DHH:2017年Rails 框架还值得学习吗?

    他们只是从各种库里找到自己的工具, 把它们组装起来, 从未满意过. Rails 的核心原则非常独特, 虽然也一直有争议, 那就是约定大于配置....我已经在其他地方进一步详细阐述了在Rails 核心原则中关于配置的约定方法, 以及点菜 / omakase冲突的说明, 和集成系统的吸引力以及 Rails 社区的其他核心价值....笔者注: 可以到 DHH 博客里了解一二. 如果读过这些资料之后, 你应该能准确判断出 Rails 是否适合你了....当人们听到 “web 框架”, 有时他们会想, “哦, 那只是一些生成 HTML 的东西, 是吗?”. 在这种看法下, 有的开发者可能认为这跟 React 之类前端框架是竞争关系....虽然 Rails 默认是全栈包括 HTML 端渲染, 并且我们缺省提供了 Turbolinks 和 SJR 供大家选择, 但如果这条路不那么有吸引力, 也可以很容易进行替换.

    2K90

    如何在CentOS 6.5上使用Unicorn和Nginx部署Rails应用程序

    这种真实的部署设置与使用单一开发服务器有很大不同,后者设计用于测试目的,因为由于缺乏功能和特性,它们无法在实际网站流量的负载下工作。...Unicorn是一个卓越的应用服务器,它包含你的Rails应用程序来处理传入的请求,最好是在它们被前端HTTP服务器(如Nginx)过滤和发送之后。...要安装它们,请运行以下命令: yum install -y curl-devel nano sqlite-devel libyaml-devel 设置Ruby环境和Rails 我们将使用Ruby Version...创建示例应用程序 让我们首先在我们的主目录中创建一个非常基本的Rails应用程序,以便与Unicorn一起服务。...为此,您可以使用SFTP或图形工具(如FileZilla)安全地传输和管理远程文件。同样,您可以使用Git和Github等中央存储库来下载和设置代码。

    4.1K20

    Rails存储库从SVN转向Git

    在版本存储库迁移的同时,我们也会将问题跟踪系统转移到基于Rails开发的Lighthouse应用之上,于是到目前为止,我们的存储库和问题跟踪系统都是使用的Rails应用,这对我们是一个很好的鼓励。...这两个系统都会保留较长一段时 间,但是我们并不建议使用者再去访问它们。这意味着我们的Subversion存储库依然可以访问,但是如果你想获得最新的代码,需要在新的Git存储库 上更新。...Scott认为,了解Git是如何工作的,对于正确的使用Git有着积极的意义。...Git的绝大部分操作都在本地完成,不用和集中的SCM服务器交互,使用者可以放心的随时随地提交代码。...除此之外,分支之间合并时,不仅代码会 合并在一起,Check In的历史也会保留下来。

    1.4K90

    如何在Ubuntu 18.04上使用RVM安装Ruby on Rails

    RVM将允许您管理和使用多个Ruby环境,并允许您在它们之间切换。项目存储库位于git存储库中。...本教程将指导您完成Ruby和Rails安装过程并通过RVM进行设置 课程准备 本教程将通过RVM引导您完成Ruby on Rails安装过程。...安装特定的Ruby和Rails版本 如果您需要为您的应用程序安装特定版本的Ruby,而不仅仅是最新版本的Ruby,则可以使用RVM。...结论 我们已经介绍了如何在这里安装RVM和Ruby on Rails的基础知识,以便您可以使用多个Ruby环境。...为了在Ruby on Rails应用程序中实现更多可伸缩性,集中化和控制,您可能希望将它与PostgreSQL或MySQ一起使用,而不是使用默认的sqlite3数据库。

    8.9K00

    如何让服务器从30台缩减到2台的:从Ruby迁移到Go语言

    我们过去是一个顾问公司,为其它公司开发应用,在当时有两个东西被炒得非常火:亚马逊的Web Services和Ruby on Rails。...我们都有多年的开发Java的经历,曾经写过很多东西只需要很少的资源就能处理大量负载,远比Ruby on Rails的处理能力强的多,我知道我们可以做出很多改进。...选择一种语言   我对任何新建议都持开放的态度,最不济,我还可以重回到Java。Java是一个在很多方面(比如性能上)很棒的语言(是吗?)...我们是首个公司公开的宣称在我们的产品中使用Go,首个公司在Go语言邮件列表里贴出Go语言工作职位招聘。很多顶级程序员希望来我们这里,就是因为这样他们可以在每日的编程中使用Go语言。   ...它们就像是根本没有被使用,完全就像没有任何程序在上面运行。我们的CPU使用率低于5%,整个应用的运行启动只消耗了几百KB的内存(仅在启动时),相比之下Rails应用要耗用50MB。

    1.6K150

    像一名教育者一样思考代码质量

    1 了解你的受众 Rails 在工作中,我们使用 Rails、Node 和 Vue。...但是,如果你工作在一个对 Rails 都是新手的团队中时,这些菜鸟绝对会陷入绝望和沮丧中。 这就是需要像一名教育者一样思考的地方。假设你是一名教授。...同样,当有一些术语和概念很难被人们理解时,慢慢介绍这些概念而不是完全避免使用这些概念可能更有意义,这样学生们就可以学习这些概念并在将来使用它们。...当我们编写代码时,这些工具对我们开发者还有使用意义吗? 其中一些是不适用的。例如,一个完整的教学视频。其它则是有点儿傻。例如,测验。但是,我认为至少有些工具是可以使用的。...我通常默认假定: 我注意到人们在工作中使用解释性注释,而我不会在那些场景中这样做,但我发现这些注释确实很有用; 这种“像教育者一样思考”的框架让我觉得它们很有价值。

    76130

    JVM并不是那么重量级

    它生成了一堆的PDF文件,然后将它们上传到iSign (现在已经不存在了)用于存储和共享。iSign本身就是一个经典的Rails应用,它托管在3个AMI上。...我或多或少地关注了JRuby的发展和成功的故事,并在Rubyfuza 2015与Charles Nutter一起度过了一段美好的时光。...这些问题可以让我们在考虑JVM时,帮助我们减少个人的情感障碍。这些情感和偏见可能会让我们后面付出昂贵的代价,从长远的角度来看对我们不利。 所以,让我们来看看下面的内容。 前期成本真的很高吗?...通过这些小的增量步骤,可以将Node和Ruby所需的真实的膨胀量隐藏起来。如果你停止并对其进行评估,不考虑花费的时间,你将会看到200MB的JVM效率更高。 ? JVM的运行很笨重吗?...与JVM的日常工作 我在我的的2012 MacBook Pro上运行了至少5个JVM进程,内存为8GB。我从来没有尝试过同时启动5个Rails应用程序。 为什么同时开启5个?

    1.7K50

    程序员播客(podcast)推荐

    几个主要的主持人是牛掰的ruby on rails的程序猿。...我比较喜欢的几期 牛掰的程序员访谈 和《深入浅出Node.js》作者朴灵一起聊聊Node.js 与Rails创始人DHH聊Rails 英文的,装逼一下~ 和中国著名Common Lisp程序员冰河聊聊...和鲁葳聊聊软件咨询公司是如何工作的 漂亮的女程序员~声音也好听 你应该知道的 Agile 和 Scrum 跟天使湾聚变计划负责人王磊聊天使投资 是不是有很多干货 XD ps:不支持firefox的在线收听...It公论 「IT 公论」是由李如一、李楠和 Rio 创办的科技类播客 (podcast) 节目 内核恐慌 类似IT公论,但更技术一点 IT 乱谈 你想了解大数据与云计算吗,你想知道3D...打印和智能硬件吗,对百度、阿里、腾讯的乱战很有兴趣吗?

    2.8K30

    《环球时报》专访Rails Girls :程序媛,女性力新战场

    “近日,中国第二大英文报纸 Global Times(《环球时报》)对Rails Girls China的组织者文洋和Rails Girls Beijing'5th workshop 的教练——来自ThoughtWorks...>>>>什么是Rails Girls? Rails Girls项目是一个免费的公益活动,该项目为女性提供为时1天的Web开发入门工作坊。...工作坊为女性提供工具,帮助她们更好地认识编程艺术,掌握Ruby on Rails技术,并在最快的时间内实施自己的想法。...Rails Girls项目起源于芬兰,到目前为止,Rails Girls 已经在全球很多国家成功地组织了工作坊。...Loic参加Rails Girls ▷▷连续多年世界多地Rails Girls的Partner 除了中国,ThoughtWorks在新加坡、巴西等多地与Rails Girls一起推广Rails Girls

    96050

    CDN 适合您的 Rails 应用程序吗?适合大规模应用吗?

    CDN 是分布在世界各地的服务器网络,用于存储网站静态资产的缓存版本,例如图像、JavaScript 和 CSS 文件。...提高可用性 CDN 旨在处理大量流量,因此它们可以帮助确保您的网站在高需求期间保持可用。...提高安全性 许多 CDN 提供额外的安全功能,例如 DDoS 保护和 SSL 证书,可以帮助保护您的网站免受攻击。 ---- 你应该在 Rails 中使用 CDN 吗?...---- 如何在 Rails 中使用 CDN 如果您决定在 Rails 7 应用程序中使用 CDN,您可以通过将 Web 服务器配置为从 CDN 服务器提供静态资产来实现。...但是,在做出决定之前考虑潜在的缺点(例如额外的复杂性和成本)很重要。

    17830

    rails, django, phoenix,你们错了

    Phoenix 和 Elixir 大抵也是如此。 在 django / phoenix 上能看得出 rails 的很多影子。...通过这些框架,工程师可以快速地创建一个 web 项目的脚手架,和数据库(一般是 RDBMS)绑定,生成 model,controller 和 view,不消数日,一个可以运行部署的「网站」就攒出来了。...似乎也很优秀 —— 如果让你我从头写一套 web framework,决计赶不上它们的水平。 那它们错在哪里?...经典的 MVC 分层设计是一种纵向的解耦,数据有序流动,各层只管自己的工作,「上帝的归上帝,凯撒的归凯撒」,不必关心其他层次如何实现。...起初,这种解耦会带来很多工作量,但随着系统的发展,你会发现,这样设计会为系统的扩展和可重用带来很多的好处。

    1.8K70

    框架分析(6)-Ruby on Rails

    框架分析(6)-Ruby on Rails 主要对目前市面上常见的框架进行分析和总结,希望有兴趣的小伙伴们可以看一下,会持续更新的。希望各位可以监督我,我们一起学习进步。...约定优于配置 Rails框架倡导“约定优于配置”的开发理念,通过一系列的约定和规则,减少开发人员在配置方面的工作。...例如,Rails会根据命名规范自动映射URL路径到控制器和动作,减少了手动配置路由的工作。...优缺点 优点 快速开发 Rails框架采用了“约定优于配置”的开发理念,通过一系列的约定和规则,减少了开发人员在配置方面的工作。...这主要是由于Ruby语言本身的特性和Rails框架的设计理念所致。然而,通过一些优化措施和使用缓存技术,可以改善性能问题。

    39020

    不要学习“网红”编程语言

    但从 2016 年开始明显下跌后,它们的命运就基本已经注定了。不知道为什么 2020 年这里又有一次断崖式下降,这可能只是 Google 数据出了问题。但不管怎么说,状态不好是肯定的。...虽然和 Java 基本上可以算是同时期(Java 诞生于 1993 年,正式发布于 1995 年),但在 2004 年 David Heinemeier Hansson 发布 Ruby on Rails...剩下的工作让 Ruby 完成就可以了。不过,为了建立你的试点项目,你首先需要创建一个案例,让 Ruby 看起来足够吸引眼球,从而让大家甘心冒这个风险。接着,你得在你的试点策略里面添筋加骨。...从 2000 年开始,到该时代中期,Ruby 受欢迎程度在 TIOBE 指数评级中逐渐达到顶峰,人们认为 Ruby 还有它的旗舰级 Rails 框架,可以大大提高生产力。...可以肯定地说,Rails 这类框架确实拥有比较明确的市场定位,但还不至于火到那个程度。

    2.1K30

    使用spring提高rails开发效率

    ###声明 目前spring只支持MRI 1.9.3, MRI 2.0.0, Rails 3.2,没有达到要求的人赶紧升级你们的ruby,rails版本吧 ###问题 想必采用TDD/BDD方式进行开发的...再回过头来想想,我享受这段pair的过程吗? pair很给力,很快就把一个taks实现成一个测试用例 桌子上的水果也很好吃。 。。。...做为一个有追求的程序员,我当然不愿意把宝贵的工作时间浪费在这无谓的等待中去 :-)。 ###现有方案 有追求的程序员还是大多数,google之后才发现已经有人尝试解决这个问题,如spork,zeus。...###安装 建议把spring安装到rvm的global gemset中去,这样就可以在多个project使用spring 安装命令非常简单: gem install spring ###使用 执行测试的命令也非常简单...###总结 spring把对项目代码的影响减少到了没有,并且能够去掉加载rails环境的时间,极大地提升rails开发者的效率,是现有rails开发者必不可少的利器。enjoy coding!!!

    3.5K60

    在Debian 9上使用Apache安装Ruby on Rails

    什么是Ruby on Rails? Ruby on Rails是一个服务器端Web应用程序框架。它维护了一组策划组件和“约定优于配置”的理念,使得我们可以快速开发应用程序而无需大量样板。...在你开始之前 熟悉我们的入门指南并完成设置Linode主机名和时区的步骤。 本指南将尽可能使用sudo。完成“ 保护您的服务器 ”部分以创建标准用户帐户,加强SSH访问并删除不必要的网络服务。...Ruby将与Ruby Version Manager(RVM)一起安装,这使得在同一系统上轻松安装和管理不同版本的Ruby。...使用Rubygems包管理器安装Rails: gem install rails --version=5.1.4 将您的Rails应用程序移动到您的Linode,或者如果您还没有应用程序,则创建一个新应用程序...您应该看到显示的默认Rails页面。 更多信息 有关此主题的其他信息,您可能需要参考以下资源。虽然提供这些是希望它们有用,但请注意,我们无法保证外部托管材料的准确性或及时性。

    5.8K30

    慢的不是 Ruby,而是你的数据库

    垃圾收集器、JIT 编译器、其高度动态的特性、更改代码运行时的能力等等,所有这些加在一起,都使得 Ruby 显得较为迟缓。...其中一个 Rails 的问题是它与数据库的高度耦合(也可以说是一种好处)。Rails 专注于掌控数据库的一切。没有数据库,Rails 将毫无用处,甚至可能阻碍工作进展,而不是提供帮助 [2]。...Rails 的 163500 行 Ruby 代码当然无助于加快速度。 “代码行” 并非性能指标,但它们是一种指示。即使是最小的 Rails 项目也包含数十万行代码,即使你只使用其中一小部分数据。...如果添加(或删除)了索引,它们必须伴随着至少调优索引的迁移。 保持所有数据库调用简单。尽可能少的连接,尽可能少的过滤器和排序。一般来说,数据库可以更容易地为此进行优化。...在这种情况下,经过优化以过滤和获取数据的 Postgresql 可以比 SQLite-inside-ruby 更快地完成这项工作。在典型的生产设置中,Postgresql 更适合这一点。

    15130

    选择一个异步应用程序服务器还是多阻塞服务器?

    应用程序),当一个Rails应用程序阻塞了,操作系统将把流程转换至一个不同的Rails应用程序。最后,他们说CPU们将会做相同的工作量并且我们将会得到相同的性能。 你怎么认为?...或者你从来不需要转换,Rails将为你使用用例工作,它极具魅力。并且你一直如此成功地让你的客户高兴那么现金就会滚滚而来。 一个单机阻塞服务器方式的缺点: 增加了内存的使用。...以下是一些使用了这些从Rails到Node.js和Golang的转换的例子: LinkedIn Moved From Rails To Node: 27 Servers Cut And Up To...成本真的会下降吗?不管服务器数量做不相同的计算量?这取决于完成的工作量的类型和规模。典型的Web服务是IO绑定,等待来自其他服务器如数据库、缓存等的响应。...如果延迟响应并不真正影响到你的工作,那么你可以使用较少的节点。 如果你的工作量是CPU绑定的,那么你至少将需要更多盒子,因为服务器不会在IO阻塞,对于平行那不会有相同的机会。

    1.6K80
    领券