都在IT圈子混,为什么有些人可以成为一流高手,有些人搞了10年研发还只能靠吃老本儿过日子。简单来说,搞这行儿您得勤奋。特喜欢电影《霸王别姬》中的一句:“要想人前显贵,您就得背后受罪”。这人呐,就得学会自已个儿成全自个儿。好多DDD初级玩家上来就特喜欢聊“聚合”啊、“框架”啊、“事件溯源”啊,刘震云先生管这个叫“喷空”。其实他忘了一个重要的事儿:人家之所以能成为高手,那凭得是台下几年的“功夫”,靠得是“悟性”,不是光靠喷空得来的。这个圈子没有傻人,痴人太少。
有些人这辈子也成不了高手,不是不聪明,是“懒”!这个懒包含两面:一是身体上,就喜欢天天躺在床上刷抖音,搞王者荣耀;二是思想上,不愿意思考。这两类人基本是懒癌晚期,没救儿。那位问了:“说了半天,搞技术的目标是什么”?两词以蔽之:“有深度”、“有广度”。总得有些东西可以拿出去显呗显呗吧 ?
别人讲DDD喜欢上来就告诉你各种概念,我上来就喜欢打击您。所谓“良药苦口”,不从根源找到自身问题你也没法上升至更高的维度对其它人实施降维打击。“人为万物之灵”,在DDD这门学问中,“人”的作用是第一位的。因为人是活的,技术是死的,业务是客观的,能否操纵死的技术对客观业务进行完美支撑靠得是有血有内有灵魂的您。面对这个花花世界的诱惑,踏踏实实的坐下来钻研一门学问,您哪知道后面有什么好事儿等着呢?有这么一个理儿叫“士人有百折不回之真心,才有万变不穷之秒用”,您琢磨琢磨是不是这个意思。
说了半天,想要钻研DDD要应该如何修身呢?概括下来有三点,有图有真相。这些事儿您都知道未必能做到,路长着呢,“积跬步才得以致千里”。

学会客观的看待事物是研究DDD 所应持有的态度。看过无数文章,一提DDD尤其是在技术阶段,一定是对标书上那套ODD(对象驱动设计,就是“值类型”、“聚合根”那套)方式。咱们不评价其它人的想法,只谈个人感受。我其实挺喜欢经典三层的,简单且直观;我也搞ODD,拿出来成就感爆棚也挺能唬人。总体而言呢,两者所用比例大概是7:3。这个选择不是因为我不会玩儿“实体”、“聚合”,是因为没必要。如果您接触过DDD尤其是其战术部分,我劝您一句:莫要拘泥于书上所定义的形式,过去管这叫“形势主义”。ODD仅仅是软件的落地方式之一,写面向过程的代码不代表您的整体系统不是以DDD为指导设计的,这事儿得从宏观上看。再说了,DDD两部分呢,战略部分才是核心。所以说我劝您眼里别只有某个具体的技术,站得高方能看得远,这叫格局。
就ODD本身而言,复杂且麻烦。就算是一个微服务架构系统,也是由业务复杂度各异的服务或模块构成。您的团队中,有初级、中级程序员,也有不是一般的战士。让适当的人以适当的开发方式做适当的功能模块(或服务),安排妥妥的。建个“数据字典”功能也考虑怎么设计“聚合”,您不累吗 ?
人都说“文人相轻”,其实程序员之间也好不到哪儿去儿,同水平人谁也看不上谁的东西。再说了,IT技术这个东西吧,也没一个具体的衡量标准,从程序的结果上看其实也没差个多少。两者比拼的就是系统在上线后在可维护性与扩展性上面谁更高效。
总而言之,想学习DDD学问的您,要注意个人修养的锻炼,尤其要务实、客观,莫要好高骛远、人云亦云。微服务挺帅、DevOps也比较酷,不一定适合您。毕竟对于我辈之打工人,公司不是咱们家开的。花里胡哨的后面,那是有成本作为代价的。
这一节讲了个人修养,后面我们来分析分析为什么大家都天天喊着“DDD很难”,下回见。
我有一个模型:classItem项目有一个属性“商店”基于存储的值,我希望Item对象对特定方法具有不同的行为。Rails中是否有针对此的通用设计模式?如果方法中没有大的if-else语句,这是如何干净利落地完成的? 最佳答案 通常通过Single-TableInheritance. 关于ruby-on-rails-Rails-子类化模型的设计模式是什么?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.co
我将应用程序升级到Rails4,一切正常。我可以登录并转到我的编辑页面。也更新了观点。使用标准View时,用户会更新。但是当我添加例如字段:name时,它不会在表单中更新。使用devise3.1.1和gem'protected_attributes'我需要在设备或数据库上运行某种更新命令吗?我也搜索过这个地方,找到了许多不同的解决方案,但没有一个会更新我的用户字段。我没有添加任何自定义字段。 最佳答案 如果您想允许额外的参数,您可以在ApplicationController中使用beforefilter,因为Rails4将参数
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭10年前。问题1)我想知道rubyonrails是否有功能类似于primefaces的gem。我问的原因是如果您使用primefaces(http://www.primefaces.org/showcase-labs/ui/home.jsf),开发人员无需担心javascript或jquery的东西。据我所知,JSF是一个规范,基于规范的各种可用实现,prim
本教程将在Unity3D中混合Optitrack与数据手套的数据流,在人体运动的基础上,添加双手手指部分的运动。双手手背的角度仍由Optitrack提供,数据手套提供双手手指的角度。 01 客户端软件分别安装MotiveBody与MotionVenus并校准人体与数据手套。MotiveBodyMotionVenus数据手套使用、校准流程参照:https://gitee.com/foheart_1/foheart-h1-data-summary.git02 数据转发打开MotiveBody软件的Streaming,开始向Unity3D广播数据;MotionVenus中设置->选项选择Unit
目录前言滤波电路科普主要分类实际情况单位的概念常用评价参数函数型滤波器简单分析滤波电路构成低通滤波器RC低通滤波器RL低通滤波器高通滤波器RC高通滤波器RL高通滤波器部分摘自《LC滤波器设计与制作》,侵权删。前言最近需要学习放大电路和滤波电路,但是由于只在之前做音乐频谱分析仪的时候简单了解过一点点运放,所以也是相当从零开始学习了。滤波电路科普主要分类滤波器:主要是从不同频率的成分中提取出特定频率的信号。有源滤波器:由RC元件与运算放大器组成的滤波器。可滤除某一次或多次谐波,最普通易于采用的无源滤波器结构是将电感与电容串联,可对主要次谐波(3、5、7)构成低阻抗旁路。无源滤波器:无源滤波器,又称
项目介绍随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱小学生兴趣延时班预约小程序的设计与开发被用户普遍使用,为方便用户能够可以随时进行小学生兴趣延时班预约小程序的设计与开发的数据信息管理,特开发了小程序的设计与开发的管理系统。小学生兴趣延时班预约小程序的设计与开发的开发利用现有的成熟技术参考,以源代码为模板,分析功能调整与小学生兴趣延时班预约小程序的设计与开发的实际需求相结合,讨论了小学生兴趣延时班预约小程序的设计与开发的使用。开发环境开发说明:前端使用微信微信小程序开发工具:后端使用ssm:VU
我在我的项目中有一个用户和一个管理员角色。我使用Devise创建了身份验证。在我的管理员角色中,我没有任何确认。在我的用户模型中,我有以下内容:devise:database_authenticatable,:confirmable,:recoverable,:rememberable,:trackable,:validatable,:timeoutable,:registerable#Setupaccessible(orprotected)attributesforyourmodelattr_accessible:email,:username,:prename,:surname,:
我正在尝试创建密码规则来设计可恢复的密码更改。我通过passwords_controller.rb做了一个父类(superclass),但我需要在应用规则之前检查用户角色,但我所拥有的只是reset_password_token。 最佳答案 假设您的模型是用户:User.with_reset_password_token(your_token_here)Source 关于ruby-on-rails-设计通过reset_password_token获取用户,我们在StackOverflow
我已经使用Apartment设置了一个Rails5应用程序(1.2.0)和Devise(4.2.0)。由于某些DDNS问题,应用只能在app.myapp.com下访问(请注意子域app)。myapp.com重定向到app.myapp.com。我的用例是每个注册该应用的用户(租户)都应该通过他们的子域(例如tenant.myapp.com)访问他们的特定数据。用户不应限定在其子域内。基本上应该可以从任何子域登录。重定向到租户的正确子域由ApplicationController处理。根据Devise标准,登录页面位于app.myapp.com/users/sign_in。这就是问题开始的
我在关注RyanbatesRailsCast的devise和omniauth(第235集-devise-and-omniauth-revised)。当我尝试使用Twitter登录时,标题中不断出现错误。defself.new_with_session(params,session)ifsession["devise.user_attributes"]new(session["devise.user_attributes"],without_protection:true)do|user|user.attributes=paramsuser.valid?end完整跟踪:C:/Ruby20