我已经获得了一个快速修复bug的遗留项目.这是一个基于蚂蚁的项目,所以我使用eclipse文件将其导入intellij.项目有几个模块,其中一些模块没有正确编译.我想做的是:
我有我需要编译的模块,我需要编写一些单元测试来覆盖我的更改.但由于其他模块没有编译,我无法运行这些测试.我无法从项目中删除这些模块,因为我正在使用的这些模块使用这些模块中的一些类(ant magic).
有没有办法不编译和制作整个项目,只需单个模块?我希望能够像在eclipse中一样使用它,即使其他代码被破坏,你也可以随时运行测试.
我试图在Hadoop中做一些简单的事情,并发现当编写映射器和reducer时,到处定义为静态.我的任务将被分解为几个map部分和一个最终部分reduce.如果我想在其他工作中重复使用我的一个映射器怎么办?如果我将mapper类定义为内部类,static我可以在其他工作中使用它吗?此外,非平凡的问题可能需要更多更复杂的映射器,因此将它们全部放在一个巨大的文件中会在维护时变得非常糟糕.
有没有办法让mappers和reducer作为常规类(可能甚至在单独的jar中)而不是作业本身?
有一种观点认为,在构建丰富的浏览器应用程序(JS-heavy)时,应将其视为单独的应用程序,而不是"后端"应用程序的一部分.我想知道在这样的设置中如何实现构建和部署?
假设我有java WAR文件暴露基于JSON的API(无论是JAX-RS还是其他) - 没有视图.然后我有我的前端应用程序的静态内容:js脚本html视图,CSS样式,图像等.我可以使用专用的构建工具,例如GruntJS,用于缩小/预处理等项目.
但现在我有点卡住了.这种构建应该是什么结果?仅使用Grunt创建的静态文件来分隔WAR?部署怎么样?我应该将这些WAR混合到一个完整的应用程序中,还是部署两个单独的例如example.com服务静态和那些静态用于api.example.com获取数据.
另一个问题是关于发展.因此,我希望我的js和css连接和缩小,但它对开发来说不太好(调试很难等).有什么技巧可以在开发模式下使用单独的源文件并仅在prod构建时连接?
假设我需要一些不依赖于AngularJS的通用对象(例如,实现了一些特殊行为的特定集合).
我可以在AngularJS之外完全实现它,然后在服务/控制器中使用它.我也可以将其作为服务/工厂,并在其他组件中使用它.
我不知道在AngularJS之外编写代码然后在应用程序中使用它是好还是坏.一个重大的胜利是,在测试此类代码时,它更容易,因为它不需要AngularJS依赖项.
您是否将整个应用程序代码保存在应用程序的AngularJS世界中?
我正在编写简单的游戏,其中的细胞可以处于两种状态,由玩家自由拍摄.
interface Cell {
int posX();
int posY();
}
abstract class BaseCell implements Cell {
private int x;
private int y;
public int posX() {
return x;
}
public int posY() {
return y;
}
...
}
class FreeCell extends BaseCell {
}
class TakenCell extends BaseCell {
private Player owningPlayer
public Player owner() {
return owningPlayer;
}
}
Run Code Online (Sandbox Code Playgroud)
在每个回合中,我需要检查所有细胞以使用如下方法计算下一个细胞状态
// method in class Cell
public Cell nextState(...) {...}
Run Code Online (Sandbox Code Playgroud)
收集Set所有尚未服用的细胞.上面的方法返回,Cell因为单元格可能从Free变为Taken或相反.我正在做类似下面的事情来收集它们:
for (Cell cell …Run Code Online (Sandbox Code Playgroud) 我对ruby(在日常编写java)方面不是很有经验,而且我正试图找到保持连接池之类的"Ruby方式".我有多个线程的独立Ruby应用程序,我想出了类似下面的内容.
请注意,MongoClient由蒙戈本地Ruby驱动程序提供保持连接错误游泳池内,让所有我需要的是能够保持的一个实例MongoClient各地
require 'mongo'
module MongoPool
# module instance var to ensures only one exists
@mongo = nil
def self.lazy_create
@mongo ||= Mongo::MongoClient.new('localhost', 27017, :pool_size => 5, :timeout => 5)
end
# when getting connection lazily create pool by assigning to @mongo only if nil
def connection
MongoPool.lazy_create
end
end
class PeopleRepository
include MongoPool
def random_person
coll = connection['test']['people']
coll.find_one
end
end
# usage
PeopleRepository.new.find_one
Run Code Online (Sandbox Code Playgroud)
我知道有效(检查过几次调用object_id时@mongo保持不变),但这是保持一切的首选方法吗?
可能有多个存储库,因此每个存储库都可以包含MongoPool和使用它的连接.上述解决方案有任何缺点吗?还有其他方法我应该注意吗?
注意:问题更多的是关于如何以Ruby方式执行操作,而不是关于如何一般地执行此操作(因为我使用它).
我在Sinatra模块化应用程序中重定向错误时遇到问题.我正在Heroku上部署,当出现错误时,应用程序就会死掉.
我希望它能够捕获此错误,重定向到错误页面并正常运行.
我在基类中设置了如下内容:
set :raise_errors, false
Run Code Online (Sandbox Code Playgroud)
和
error do
redirect to('/')
end
Run Code Online (Sandbox Code Playgroud)
但是当我raise从路径块中发生错误时,它就会转到标准的Sinatra错误页面.
我需要做些什么来捕捉我的错误并重定向?
我试图解决这个问题,并了解javascript异步如何在单线程浏览器环境中工作.
作为异步,我们可以同时处理定时器和xhr请求.现在假设我有类似下面的内容
function doStuff() {
for(var i=0; i<100000000; i++) {
// do something to make proc busy
if(i%1000 === 0) {
console.log('in for loop');
}
}
}
setTimeout(function() {
console.log('timed out')
}, 2);
doStuff();
doStuff();
doStuff();
Run Code Online (Sandbox Code Playgroud)
定时器设置为非常小的值(2ms),所以我认为它应该如下工作:
1)定时器回调排队
2)doStuff()执行(作为一个整体?),需要一些时间(超过2毫秒)
3)运行定时器回调,因为一次doStuff()执行和另一次执行之间有一个时刻
4)接下来doStuff()叫
4)最后doStuff()被叫
我所看到的是所有三doStuff()件事都是在定时器回调触发之前完成的.它比那些2ms长得多.是的,我知道这个时间值setTimeout不能保证.
我的问题是javascript如何执行代码?在调用异步队列的某些内容之前,将立即执行的最小的原子块是什么?
我正在玩JS,并有以下代码片段
var Dog = function(name) {
this.name = name
}
Dog.prototype= {
'bark': function() {
alert(this.name + ' is barking');
},
'run': function() {
alert(this.name + ' is running');
}
}
var dogs = [new Dog('first'), new Dog('second'), new Dog('third')];
function invokeOnDog(what) {
if(what === 'bark') {
for(var i=0; i<dogs.length; i++) {
dogs[i].bark();
}
}
if(what === 'run') {
for(var i=0; i<dogs.length; i++) {
dogs[i].run();
}
}
}
Run Code Online (Sandbox Code Playgroud)
我想做的是简化这个invokeOnDog功能,因为它重复两次相同的模板.我正在考虑以某种方式返回应该在对象上调用的方法,但不知道如何做到这一点.
你能帮帮我吗?
编辑:
感谢您的快速回复.如果"what"与调用方法具有相同的名称,则它们都可以.但如果这两者之间没有匹配怎么办?
invokeOnDog('aggresive')应该调用bark方法并invokeOnDog('scared')应该调用run
java ×4
javascript ×4
ruby ×2
angularjs ×1
asynchronous ×1
browser ×1
frontend ×1
gruntjs ×1
hadoop ×1
heroku ×1
mapreduce ×1
module ×1
mongodb ×1
oop ×1
polymorphism ×1
refactoring ×1
sinatra ×1
testing ×1