“Ruby on Rails(简称)中的Active Record是DSL的一个典型。” “又一个新词!什么是Active Record? ” 隔着屏幕,我都能感受到张大胖有点儿不满。...“举个例子,你有两个业务相关的类,一个是Author, 另外一个是Book, 现在你想把他们之间建立关联, 也就是说一个作者可以有多本书,DSL可以这么写:” class Author < ApplicationRecord...#创建一个Author对象author = Author.new(name: "Andy")#创建一个Book对象,这个对象和Author是关联的book = author.books.create(title...: "xxxx")#删除这个Author,注意,所有相关的Book也会删除author.destroy 张大胖说:“果然是厉害,就通过has_many这么简简单单的一句话,框架就可以获取这么多信息,自动生成这么多代码...“这样,你先看看一本书吧,也是Martin Fowler写的,名称就叫做《领域特定语言》!” (*本文仅代表作者观点,转载请联系原作者)
Diesel 的作者 sgrif 曾经也是 ActiveRecord (知名 Web 框架 Ruby on Rails 内置的 ORM )的核心贡献者。...“Active Record ,是一种领域模型模式,特点是一个模型类对应关系型数据库中的一个表,而模型类的一个实例对应表中的一行记录。...至少你现在已经对 ActiveRecord 有了一个初步的印象: 数据模型 和 数据表 存在一一映射的关系,命名上甚至可能还有默认约定存在。...比如,设置表关系的 DSL 方法:has_many 和 belongs_to 。...ModelTrait 中定义了 一个 Model 应该可以 Get/Set 一个字段的值(Value),并且可以通过 find_related 方法可以查询 belongs_to 关系。
1.客户端缓存 一个客户端经常会访问同一个资源,比如用浏览器访问网站首页或查看同一篇文章,或用app访问同一个api,如果该资源和他之前访问过的没有任何改变,就可以利用http规范中的304 Not...:etag => [@article.cache_key, current_user_favorited] 另外提一个坑,如果nginx开启了gzip,对rails执行的结果进行压缩,会将rails输出的...,处理这种生成静态文件缓存可以用内置的caches_page, rails 4之后变成了一个独立gem actionpack-page_caching,和手工代码对比一下, class CategoriesController..., "xxx", :expires_in => 1.day do 小技巧2:关联对象的自动更新 常使用对象update_at时间戳来作为cache key,可以在关联对象上加上touch选项,自动更新关联对象时间戳...,比如我们可以在更新或者删除文章评论的时候,自动个更新: class Article has_many :commentsendclass Comment belongs_to :article
Rails一个重要的设计理念就是约定优于配置,无需配置,按照缺省的风格就可以完成基本的功能,这样的理念贯穿在Rails各个接口的设计中。...这就是一种约定,不需要你费心思考,因为这是人家总结出来的行业中的最佳实践。只要按照这个规范写,你写的就是一个符合REST规范的代码,这就是Rails引导的外部接口风格。...当年我接触Rails时,最让我感到震惊的是它的数据库查询方式,与传统开发的风格截然不同,就这么简单的一句: Article.find_by_title("foo") 要知道,那个时候用Java写程序,即便是想做一个最简单的查询...当我们需要有更多的查询条件时,只要一个一个附加上去就可以了。...写程序库和写应用虽然都是写代码,但二者的要求确实相差极大。把细节暴露给所有人,显然是一个增加犯错几率的事情。 Rails的API接口让人们开始关注API的表达性。
要让ProductService跑起来,我得先让DBProductRepository跑起来,要让DBProductRepository跑起来,我还得先给它准备数据库连接字符串。...一时间,我们开始怀疑人生,这是我该做的事儿吗? 其实,在我们开始创建对象的时候,就出现了问题。...比如,从Rails的对外暴露的REST接口设计中,可以看到,它对REST的使用方式做了一个约定,只要遵循Rails的习惯写法,写出来的结果就基本上符合REST规范的。...又如,从Rails的程序员编写的API接口设计中,可以发现它十分关注API的表达性,可以很方便地表达一对多的关系: class Article < ApplicationRecord has_many...记得我在2018年学习Spring Cloud的时候,接触了Spring Data JPA这个框架,现在看来,它就参考了Rails的接口设计,这时如果再需要表达一对多关系的时候,就可以在Java中写成这个样子了
最近的一个多月时间其实都在做数据库的迁移工作,我目前在开发的项目其实在上古时代是使用 MySQL 作为主要数据库的,后来由于一些业务上的原因从 MySQL 迁移到了 MongoDB,使用了几个月的时间后...也就是把所有 embeds_many 和 embeds_one 的关系都改成 has_many 和 has_one,同时将 embedded_in 都替换成 belongs_to,同时我们需要将工程中对应的测试都改成这种引用的关系...而枚举的实现在 Mongoid 的插件和 ActiveRecord 中就截然不同了: ?...,就需要对业务逻辑进行详细地测试以保证不会有遗留的问题,这也就对我们项目的测试覆盖率有着比较高的要求了,不过我相信绝大多数的 Rails 工程都有着非常好的测试覆盖率,能够保证这一部分代码和逻辑能够顺利迁移...MySQL 中对应的表中,并将所有的 _id 转换成 uuid、xx_id 转换成 xx_uuid,而后者就是前面提到的:通过 uuid 和 xx_uuid 的关联重新建立模型之间的关系并在最后删除所有的
我想更深入地研究最后一个问题,但在此之前,我们先解决前两个问题。 Ruby 每年都在提高性能,这受到了大家欢迎,但从更大的角度来看,这可能并不重要: 速度并不是减缓 Ruby 应用的主要因素。...为了进行对比,我尝试用 Rust 和 Ruby 创建了一个内部尽可能相似的版本。结果令人失望,Ruby 和 Rust 的性能都很差劲,甚至存在一些错误,而且都没有进行性能优化。...针对 Rails 的基准测试已经进行了许多次。我现在将获得更多元数据,而不是继续讨论整个堆栈的 “基准” 和火焰图。少谈数字,多谈概念。因为对于 Rails,我确信性能问题是概念性的。...未优化的连接。添加简单的 has_many 太容易了,这使得开发人员可以在数据库中启动过于繁重的查询。一旦通过应用程序引入和传播,这几乎不可能解决。...使用难以筛选、分组或排序或优化不佳的列。使用非索引列。 我的经验法则是,每个添加或删除的 where、has_many、group 或任何此类 active-record 方法都必须伴随着数据库迁移。
如果用小时为单位来规划任务,会把任务限制得太死,那么就以天为单位吧。 依赖、优先级、整体 通过书稿的第四章和第五章的练习,我发现了另外一个问题。...好了,现在我可以心无旁骛地写书和工作了…… 化失望为力量吧。把力量注入到写书和新的工作中。...“不行,我得回家写书。” 第一本书的撰写经验告诉我,在时间管理中,三点一线并不一定是不好的东西。...我已经养成这样一个生活节奏: 早上7点起床,写1小时,去楼下买一根煮玉米 写到10点,上班 18:00下班 18:30写到23点 睡觉 经过几个月每天养成的习惯,现在每一个动作,都变成了条件反射,时间到了...失去P酱以后,另一个出版社找到我,问我要不要再写一本书。我想到了之前写给P酱的文档,于是就同意了。 此时已经是2018年4月,我前往了杭州。机缘巧合认识了和P酱长得非常像的H酱。
注:本文作者指明文章中的Tungsten Fabric、OpenContrail和Contrail为混用,翻译时统一为Tungsten Fabric。...在撰写本文时,master分支是与OpenStack的第18个发行版Rocky相关联的。...API和仪表板终端,我决定创建一个VIP,以平衡TF API和analytics服务之间的流量。...在Rocky中,一个TF插件所依赖而被OpenStack弃用的模块被删除了。不要担心,它只是移动到了另一个模块/文件中。...但是在尝试创建IPv6子网时遇到了问题。
随后,《重构》一书的作者 Martin Fowler 基于 Cunningham 的比喻,创建了一个“技术债务四象限”,包括: 鲁莽 / 有意:“我们没有时间去设计”; 谨慎 / 有意:“我们必须现在交付...曾经 Ruby on Rails 独有的东西,现在也可以在其他语言中使用了。 Watson 表示,编程语言来来往往,开发人员不希望学习工作中不需要的技能。...然而,在复杂的企业应用程序中,想要升级时可能会出现许多潜在的问题。这就成为了一笔必须解决的重大技术债。否则,开发者最终会陷在一个古老的版本中。 这些主要版本的更新,最终会成为重大的技术债项目。...如今,它的持有公司已经在新冠疫情的冲击下倒闭。据我所知,我做过的所有其他工作最终都被取代了,或者是雇主倒闭,总之成果消失在了历史的长河中。当然,有些可能仍被使用,这个我也不敢完全确定。...用户 com2kid 表示,他曾于 2008 年前后在微软工作,当时他看到过一个版权为 1994 年的头文件,里面还有作者姓名。搜索后发现,那位程序员已经在微软当上副总裁了。
而你只能像一只忠实的小狗一样默默跟随。 我敢肯定,大多数框架的创始人对用户没有任何敌意,他们发自真心关心用户,而DHH肯定也希望用户在使用Rails时感受到快乐。...许多Web框架,比如Django、Rails、Spring、Gatsby 和 Symfony等的营销词中都提到了维护以及可维护性。 Symfony:加快创建和维护PHP Web应用程序的速度。...每次我们在Rails中编写:belongs_to(:author),或者在Django中编写:models.ForeignKey("Band"),就会导致我们的项目与框架的绑定更加紧密。...当我们的领域和业务逻辑与框架代码混在一起;当高级业务概念与底层的架构机制混在一起;当业务逻辑混入底层架构,我们必须阅读控制器、视图、模型、工厂、服务、配置文件、库、框架代码,才能搞明白为什么案例A中创建了...如果你看好一个事情,一定是坚持了才能看到希望,而不是看到希望才去坚持。相信我,只要坚持下来,你一定比现在更好!如果你还没什么方向,可以先关注我,这里会经常分享一些前沿资讯,帮你积累弯道超车的资本。
不过,为了建立你的试点项目,你首先需要创建一个案例,让 Ruby 看起来足够吸引眼球,从而让大家甘心冒这个风险。接着,你得在你的试点策略里面添筋加骨。...鉴于人们对采用一门新语言与生俱来的抵抗力,你要选择一个不给疑虑留任何余地的方法。最终,你得愿意为成功建立制度根基。”...现在,Ruby 确实不咋行了 接下来,让我们一起从课程、实践、社区情况来看看当年盛极一时的网红编程语言发展现状。 现在,很多朋友可能注意到,专门的 Ruby 播客或者新闻网站已经越来越少。...我能想到的诞生于 2010 年之后、而且运行在 Ruby 或 Rails 上的成功厂商就只有 Stripe(2011 年)和 Gitlab(2014 年)。...在过去的十年里,开发领域的创新成果可谓百花齐放。HTML5、Node.js、Angular 和 React 已经在前端和后端遍地开花。
在此示例中,我将开发一个有关书籍、作者和出版商的 Schema 。然后,我们将看看 LLM 是否可以复制这项工作。 我们从我们事物之间的 关系 开始。一本书由一位作者编写,并由一位出版商出版。...事实上,一本书的出版定义了作者和出版商之间的关系。...我们不使用一个大表,而是使用三个表并在需要时引用它们。一个用于作者,一个用于出版商,一个用于书籍。我们在 Authors 表中编写作者的详细信息,然后使用 外键 在 Books 表中引用它们。...我将使用 Llama 3,但我还查看了 OpenAI 的 LLM,并得到了大致相同的结果。 我们的第一个查询:“创建一个关系数据库模式来描述书籍、出版商和作者。” 结果: 到目前为止还不错。...它还创建了一个表: 这样就解决了为一本书创建多位作者的问题 - 我之前并未考虑过此类问题。桥表一词表明通过外键联接了两张表(书籍和作者)。
抛开那些高大上的框架、中间件、分布式什么的理论,我把所有我认为一个Java开发者需要掌握的基础知识全部都放到这本书里面了。...所以,我又改了第二版、第三版、第四版....不断地删除了原来的一些"概念"、"用法",不断地新增进去更多的"原理"和"思考",不断地尝试着通过各种通俗的语言、例子把这些道理讲清楚。...其他人,无论是刚工作一两年的新手,还是工作了五六年的老司机;无论是准备找工作需要一本面试宝典,还是需要一本书来帮你躲避工作中的那些坑;无论是体系化学习作为知识体系,还是日常学习作为查缺补漏。...因为Java体系中的很多知识点都是相关联的,所以本书在提到其他知识点时,为了方便读者进行关联性学习,会标注相关章节和内容提要。 本书更加注重对原理的解读,很多语法的概念介绍及使用方式并不是本书的重点。...怎么买 现在书籍已经在京东、当当等平台开启预售了。现在京东、当当自营的价格是7折左右。 但是,对待自己的亲粉丝,怎么能没有专属优惠呢?
2,多对多关系 一本书可以有多个作者,一个作者可以写多本书,从而书和作者就构成了多对多的关系,我们在创建模型的时候,把多对多关系写在其中的任何一张表都可以。...) #直接把Publish的id赋值给book表的publish_id就行了 2,多对多关系 之前我们创建了Book表和Author表,两者就是多对多关系,我是把多对多关系写在book表中的...()方法,移出关系方法 现在book1关联着author1和author2两个作者 book1.author.remove(author1) #此时book1就关联author2一个作者 反向也行author2...的所有关联关系给删除,现在book1就没有关联作者了 author1.book_set.clear() 一样的,把author1的所有关联书籍的关联关系删除 4,set()方法,先把关联关系清空,再添加关联关系...表和Author_Info表之间就是一对一关系,我把关联字段写在了Author表中。
谈不上精通Rails,如果把Rails作者定为最高等级,他是F1赛车手,我该是个跑出租的老司机。...怎么接触到Rails 当公司的一个PHP的多人即时聊天项目接近尾声时,我们在思考能不能将程序员生产力解放出来?是不是可以尝试一些其他的技术架构。很快,经过多方研究,发现Rails是单兵作战的神器。...相比PHP,可以达到Rails : PHP = 1 : 4 的效率。但对于一个技术架构成熟的技术团队来说,放弃原有的技术架构去使用一个从未接触过新技术,时间成本和决心是很重要的。...其实接触一门新语言并不是多难,这是一个循序渐进的过程。好在前端底子厚,学习ERB,UJS,RJS的过程比较轻松,但是Turbolinks对于前端工程师来说就是噩梦,一直到现在我都用的Pjax。...前端JS处理 随着JS的增多,维护起来会越来越难,在Rails的项目中并没有做JS模块化,而是将JS用工厂模式汇集到了一起,新的功能代码会放到工厂车间去,在使用的时候 new 一个工厂,调用需要的功能即可
在这篇发表于2016年4月的文章中,据作者称:他在软件公司HubSpot工作了近两年,当有人被解雇时,被称为“毕业”。...她35岁,已经在公司工作了四年,28岁的经理在没有任何解释的情况下告诉她,她有两周的时间休假。在她工作的最后一天,那位经理为她组织了一场欢送会。 这个让DD想到了之前有个网友的这条留言......在这种新的工作模式中,员工应该感到对公司的完全奉献和忠诚,即使老板并不觉得有这样的义务作为回报。 不幸的是,在一家初创企业工作,往往会受到培训不足(或未经培训)的经理的指手画脚,并因一时兴起而被解雇。...------ 我们创建了一个高质量的技术交流群,与优秀的人在一起,自己也会优秀起来,赶紧点击加群,享受一起成长的快乐。...如果你看好一个事情,一定是坚持了才能看到希望,而不是看到希望才去坚持。相信我,只要坚持下来,你一定比现在更好!如果你还没什么方向,可以先关注我,这里会经常分享一些前沿资讯,帮你积累弯道超车的资本。
我是很多年前在周老师的一个群里,看到周老师的推荐,便买了来看,觉得很有收获。 这是一本关于学习、思维、心理学和时间管理的书,如果你是程序员,可能会更加喜欢,后面有些章节跟计算机有些关联。...我很喜欢作者的一个观点是:如果不将一些方法进行实践,那么读完书其实也没有多大的作用。...作者很喜欢读书,也建议我们多读书,在本书的最后给了一个大的书单,我整理在我的豆瓣书单中: https://www.douban.com/doulist/149016910/#/ 幸运的是,这本书的翻译依然是王小刚...松本行弘的程序世界 松本行弘是 ruby 语言的创建者,08 年,我自学过一段时间的 ruby,当时 ruby on rails 如日中天,思想和理念还是非常先进的。...去年看过作者之一的茹炳晟的一场直播讲座,提到了这本书,而且他在极客时间中的专栏也有看,质量还不错。 再加上软件研发效能是任何一个开发者或开发团队都非常关注的,所以便买了回来,现在才刚开始看。
CoolWulf 对于 Neuralrad 的介绍 去年的时候,我一个在芝加哥比我小几级的南京大学校友去世了。乳腺癌,发现得晚了,才 34 岁,留下了一个 4 岁的孩子。非常可惜。...为了做成这件事情,我在本地搭建了一个 50 个 Nvidia Geforce GTX 1080 Ti 的 GPU cluster, 这是搭成之后的硬件: ? ?...最终的结果我在欧洲的 InBreast 数据上做了测试,达到了 90% 的准确度 (AUC)。 我觉得这个 Model 已经可以给大众实用了,在这里公开出来。...University of Kentucky Hospital 和国内的一家合作公司已经在测试了这个模型。...由于使用的是常规图片格式,没有像 dicom 的标题信息,所以检测过程中没有使用到患者信息。同时,在分析过后,所有 jpg 图片都会被服务器删除。
我是一个web前端开发者和rails程序员,计算机专业出身,掌握Python、Ruby、C、Java编程语言,具有较为扎实的计算机理论基础。 现在工作之外的时间里想学习一下数据分析或者数据挖掘。...回答你的问题: 不过现在要学数据分析的话,我可以从哪里着手?...首先,依据你的情况,最好是有一个你熟悉背景的项目或者例子,不一定是「数据分析」项目,只要你能弄到数据,然后清楚要分析的对象和目的就好。...适合入门的教程: 集体智慧编程 学习数据分析、数据挖掘、机器学习人员应该仔细阅读的第一本书。作者通过实际例子介绍了机器学习和数据挖掘中的算法,浅显易懂,还有可执行的Python代码。...最近pandas也很火,可以提供类似R中dataframe的数据结构,pandas的作者 最近出版了一本书 Python for Data Analysis。 Python Rocks!
领取专属 10元无门槛券
手把手带您无忧上云