Tag: devise原则

需要实现Virgil Dobjanschi REST实现模式的示例Android REST Client项目

我想在Android手机上构build一个REST客户端。 REST服务器公开了几个资源,例如(GET) http://foo.bar/customer List of all customer http://foo.bar/customer/4711 The customer with id 4711 http://foo.bar/customer/vip List of all VIP customer http://foo.bar/company List of all companys http://foo.bar/company/4711 The company with the ID 4711 http://foo.bar/company/vip List of all VIP companys 我(想)我知道如何与REST服务器交谈并获取我需要的信息。 我会用这样的API实现一个REST客户端类 public List<Customer> getCustomers(); public Customer getCustomer(final String id); public List<Customer> getVipCustomer(); public List<Company> getCompanies(); public Customer […]

参数的sorting,以利用咖喱

我有两次最近重构的代码,以改变参数的顺序,因为有太多的代码,像flip或\x -> foo bar x 42黑客发生。 当devise一个函数签名时,哪些原则会帮助我充分利用currying?

devise中sign_in动作的不同布局

我正在尝试为sign_in操作使用名为“devise”的不同/自定义布局。 我在devisewiki中find了这个页面,第二个例子甚至说你可以按照每个动作(在这种情况下,是sign_in动作)做它,但是没有显示这样做的例子。 有人在IRC告诉我,我可以试试这个: class ApplicationController < ActionController::Base protect_from_forgery layout :layout_by_resource def layout_by_resource if devise_controller? && resource_name == :user && action_name == 'sign_in' "devise" else "application" end end end 但它似乎没有工作,因为它仍然加载默认的应用程序布局。 我将不胜感激任何帮助。

Hibernate延迟加载应用程序devise

我倾向于将Hibernate与Spring框架结合使用,它是声明式事务分界function(例如@Transactional )。 众所周知,hibernate试图尽可能保持非侵入性和透明性 ,但是在使用lazy-loaded关系时,这样做会更具挑战性 。 我看到许多不同透明度的devisescheme。 使关系不会延迟加载(例如, fetchType=FetchType.EAGER) 这违背了懒加载的整个想法。 使用Hibernate.initialize(proxyObj);初始化集合Hibernate.initialize(proxyObj); 这意味着相对较高的DAO耦合 虽然我们可以用initialize来定义一个接口,但其他的实现不能保证提供任何等价的东西。 将事务行为添加到持久Model对象本身(使用dynamic代理或@Transactional ) 我还没有尝试dynamic代理的方法,虽然我似乎从来没有得到@Transactional工作在持久对象本身。 可能是因为hibernate是在一个代理服务器上运行的。 交易实际发生时失去控制权 提供惰性/非惰性API,例如loadData()和loadDataWithDeps() 强制应用程序知道何时使用哪个例程,再次紧密耦合 方法溢出, loadDataWithA() ,…, loadDataWithX() 强制查找依赖关系,例如,仅通过提供byId()操作 需要大量非面向对象的例程,例如findZzzById(zid) ,然后getYyyIds(zid)而不是z.getY() 如果事务之间存在大量的处理开销,那么逐个获取集合中的每个对象会非常有用。 使应用程序 @Transactional,而不是只有DAO的一部分 嵌套事务的可能考虑 需要适应事务pipe理的例程(例如,非常小的) 虽然可能会导致大规模的交易,但对程序的影响很小 为DAO提供dynamic获取configuration文件 ,例如loadData(id, fetchProfile); 应用程序必须知道使用哪个configuration文件时 AoPtypes的交易,例如拦截操作,并在必要时执行交易 需要字节码操作或代理使用 交易执行失去控制权 黑魔法一如既往:) 我错过任何select吗? 试图最大限度地减less应用程序devise中lazy-loaded关系的影响时,您最喜欢哪种方法? (哦,对于WoT抱歉)

“业务逻辑层”适合MVC应用程序在哪里?

首先,在任何人尖叫之前,我很难用一个简单的标题来概括它。 另一个标题可能是“域模型和MVC模型有什么区别?” 或“什么是模型?” 从概念上讲,我理解一个模型是视图和控制器使用的数据。 除此之外,对于模型的构成似乎有很多不同的观点。 什么是领域模型,与应用程序模型,视图模型,服务模型等等。 例如,在最近一个关于存储库模式的问题中,我被告知空白,存储库是模型的一部分。 但是,我已经读过其他观点,认为模型应该从持久模型和业务逻辑层分离。 毕竟,不是Repository模式应该将具体的持久化方法与模型分离吗? 其他人说,域模型和MVC模型是有区别的。 我们举一个简单的例子。 包含在MVC默认项目中的AccountController。 我已经阅读了几个意见,包括帐户代码是糟糕的devise,违反SRP等..如果要为MVC应用程序devise一个“适当的”成员模型,那会是什么? 你将如何分离模型中的ASP.NET服务(会员提供商,angular色提供商等)? 或者你会呢? 我看到它的方式,模型应该是“纯粹的”,也许与validation逻辑..但应该是与业务规则(validation除外)分开。 例如,假设您有一个业务规则,即在创build新帐户时必须通过电子邮件发送某人。 在我看来,这并不属于模型。 那它属于哪里? 有人在乎这个问题吗?

如何模拟更高分辨率的屏幕?

有没有什么办法让浏览器以高于我的屏幕的分辨率来testing我的网站? 例如:我有一个1440 x 900的屏幕,我想testing1920 x 1200,1920 x 1080等网站。

我们如何开发旨在防止闰年错误的编码实践?

微软刚刚宣布,计算date(超过闰年)的软件错误导致Windows Azure上周出现重大中断 。 在闰年的DateTime.Now.AddYears(1)周围的判断是否真的是一个简单的错误? 什么编码实践可以阻止这个? 编辑由于dcstraw指出闰年DateTime.Now.AddYears(1)事实上在.NET中返回正确的date。 所以这不是一个框架错误,但显然是date计算中的一个错误。

devise – 如何禁止某些用户login?

我在我的应用程序中使用Devise进行身份validation。 如何禁止某些用户login – 禁用用户的种类?

返回ImmutableMap还是Map更好?

假设我正在写一个应该返回一个Map的方法 。 例如: public Map<String, Integer> foo() { return new HashMap<String, Integer>(); } 经过一段时间的思考,我已经决定,一旦创build了这个地图,就没有理由去修改它。 因此,我想返回一个ImmutableMap 。 public Map<String, Integer> foo() { return ImmutableMap.of(); } 我应该离开返回types作为一个通用的地图,或者我应该指定我返回一个ImmutableMap? 从一方面来说,这正是为什么界面被创build的原因。 隐藏实现细节。 另一方面,如果我这样离开它,其他开发人员可能会错过这个对象是不可改变的事实。 因此,我不会实现不变的客体的主要目标; 通过最小化可以改变的对象的数量来使得代码更清楚。 甚至最糟糕的是,过了一段时间,有人可能会尝试更改此对象,这将导致运行时错误(编译器不会警告它)。

不使用存储库模式,使用ORM原样(EF)

我总是使用Repository模式,但对于我最近的项目,我想看看能否完善它的使用和“工作单元”的实现。 我开始挖掘越多,就开始问自己这个问题: “我真的需要它吗? 现在,这一切都从Stackoverflow上的一些评论开始,在他的博客上跟踪Ayende Rahien的post,其中有2个具体的, 存储库是最新单 问-ayende生活,而无需储存库,是-他们价值-生活 这可能会被永远讨论,并取决于不同的应用。 我想知道什么, 这种方法是否适合entity framework项目? 使用这种方法是业务逻辑仍然在一个服务层,或扩展方法(如下所述,我知道,扩展方法是使用NHib会话)? 这很容易使用扩展方法完成。 干净,简单,可重复使用。 public static IEnumerable GetAll( this ISession instance, Expression<Func<T, bool>> where) where T : class { return instance.QueryOver().Where(where).List(); } 使用这种方法和Ninject作为DI,我需要使Context成为一个接口,并在我的控制器注入?