这是我的Scene.java代码.它有不同类型的对象,所有这些对象都包含在一个常见的ArrayList中targets.所有这些都共享一个toString()返回其标识符的方法.我想使用targets列表来确定场景中是否有任何与给定标识符匹配的对象,无论其类型如何:
ArrayList<NPC> npcs = new ArrayList<NPC>();
ArrayList<Item> items = new ArrayList<Item>();
ArrayList<EnviromentalObject> enviromental_objects = new ArrayList<EnviromentalObject>();
ArrayList<Object> targets;
public Object check_for_target(String target_name){
targets.addAll(npcs);
targets.addAll(items);
targets.addAll(enviromental_objects);
for (Object target : targets){
if (target.toString() == target_name){
return target;
}
}
return null;
Run Code Online (Sandbox Code Playgroud)
这是Game.java中的代码,它检查给定的标识符.如果当前场景存在匹配,我想知道对象的类型并将其视为真实类型.现在,我有以下代码,我知道它不会起作用,但也许它有助于我的想法.
Object target = current_scene.check_for_target(target_name);
if (target == null){
System.out.println(UNRECOGNIZED_TARGET_MESSAGE);
} else {
String target_type = target.getClass().getName();
target = (target_type) target;
}
Run Code Online (Sandbox Code Playgroud)
获取对象类型然后能够使用该对象的方法的正确方法是什么?现在,我只给出了Object方法.难道我创建一个超类NPC,Item和EnviromentalObject?
我需要能够通过我的节点服务器提供副本站点(到www.google.com,www.facebook.com等任何站点).我找到了这个库:
https://github.com/nodejitsu/node-http-proxy
代理请求时我使用了以下代码:
options = {
ignorePath: true,
changeOrigin: false
}
var proxy = httpProxy.createProxyServer({options});
router.get(function(req, res) {
proxy.web(req, res, { target: req.body.url });
});
Run Code Online (Sandbox Code Playgroud)
但是,此配置会导致大多数站点出错.根据网站的不同,我会收到Unknown service来自目标网址的错误,或者来自Invalid host这些行的错误信息.但是,当我通过
changeOrigin: true
Run Code Online (Sandbox Code Playgroud)
我得到了一个正常运行的代理服务,但我的用户浏览器被重定向到他们请求的实际网址,而不是我的(因此,如果req.body.url = http://www.google.com请求将转到http://www.google.com)
我怎样才能使我的网站的网址显示出来,但是我可以准确地复制正在显示的内容?我需要能够在请求中添加一些JS文件,我正在使用另一个库.
为了澄清,这里是问题的摘要:
用户请求具有url属性的资源
这url是以.的形式http://www.example.com
我的服务器运行www.pv.com,需要能够指导用户www.pv.com/http://www.example.com
返回的HTTP响应
www.pv.com/http://www.example.com是完整的表示
http://www.example.com.我需要能够在此响应中添加自己的Javascript/HTML文件.
编辑 我找到了一个解决方案,涉及使用较旧版本的dagre-d3库(4.11).如果有人能够找到最新版本的问题,那也会有所帮助.谢谢
我正在使用Dagre d3绘制一些图表.
当我最初渲染我的图表时,我做到了
g = new dagreD3.graphlib.Graph()
.setGraph({})
.setDefaultEdgeLabel(function() { return {}; });
var svg = d3.select("svg"),
inner = svg.select("g");
svgGroup = svg.append("g");
var render = new dagreD3.render();
render(d3.select("svg g"), g);
var zoom = d3.behavior.zoom().on("zoom", function() {
inner.attr("transform", "translate(" + d3.event.translate + ")" +
"scale(" + d3.event.scale + ")");
currentZoomScale = d3.event.scale;
currentPosition = d3.event.translate;
});
svg.call(zoom);
Run Code Online (Sandbox Code Playgroud)
然后,当用户点击某个节点时,我想将HTML附加到该节点的标签上.除非我重新渲染图形,否则这不显示,我使用以下内容:
g.node(id).label += "<div>" + inputTemplate + "</div>";
var zoom = d3.behavior.zoom()
.scale(currentZoomScale)
.on("zoom", function() {
inner.attr("transform", "translate(" + d3.event.translate + …Run Code Online (Sandbox Code Playgroud) 我已经阅读了一些关于如何将Mongo与Node一起使用的指南,它们似乎都以不同的方式连接到数据库.一种对我有用的特殊方法是:
MongoClient.connect("mongodb://localhost:27017/exampleDb", function(err, db) {
if(err) { return console.dir(err); }
db.createCollection('users', function(err, collection) {});
//Do all server/database operations in here
});
Run Code Online (Sandbox Code Playgroud)
然而,这对我来说似乎是低效/奇怪的,每次有app.get()新的用户或检索信息时,我都必须重新连接到数据库.
另一种似乎更适合我的方式是
var mongoose = require("mongoose")
var db = mongoose.connect("localhost:27107/users");
db.createCollection('users', function(err, collection) {});
Run Code Online (Sandbox Code Playgroud)
我已经看到有几个网站在这些方面做了些什么,但我个人无法完成上述工作.我不断收到TypeError: db.createCollection is not a function服务器端的错误.所以,我的问题是为什么上面的代码不起作用,如果第一个代码是一个很好的选择,并且有任何其他方法可以做到这一点.
假设我想要一个人找到他们没有联系的人,我会这样做:
User.find({ _id: { $nin: req.user.connections })
Run Code Online (Sandbox Code Playgroud)
但是,我只想从返回中检索最多10个随机文档.在MongoDB中,有$ sample:
{ $sample: { size: <positive integer> } }
Run Code Online (Sandbox Code Playgroud)
我以前从未使用过Mongo,所以我不确定如何将这两个链接在一起以便我检索当前用户未连接的10个随机人员.
我想抽象传递给我的数组reduce()函数的函数,使函数成为通用的"最大的Array reducer".为了实现这一点,我想在reduce()参数中传递不同的特定函数,以便能够指定比较的标准.在我的例子中,这些是线条
return players.reduce(topPlayerReducer, players[0], getThreePointerPercentage);
和
return players.reduce(topPlayerReducer, players[0], getReboundNumber);
topPlayerReducer传递给reduce()它的泛型函数在哪里根据某些条件查找数组中的最大项.我的标准是第三个论点.如何合并我的特定比较函数(getThreePointerPercentage和getReboundNumber),以便保持这种抽象级别?现在,我收到的错误fn不是函数topPlayerReducer.我对此并不感到惊讶,因为我的其他功能不在范围内.我也尝试过
var reboundReducer = topPlayerReducer.bind(getReboundNumber);
return gameInfo.players.reduce(reboundReducer, players[0]);}
Run Code Online (Sandbox Code Playgroud)
但我得到了同样的错误.
我意识到我可以通过制作两个不同的功能来实现结果reduce(),但这并不能让我满意.我想知道是否有办法以不同的方式做到这一点.
function getGuardWithMostThreePointers(gameInfo){
return players.reduce(topPlayerReducer, players[0], getThreePointerPercentage);
}
function getPlayerWithMostRebounds(gameInfo){
return players.reduce(topPlayerReducer, players[0], getReboundNumber);
}
function topPlayerReducer(topPlayer, currentPlayer, fn){
if (fn(currentPlayer) > fn(topPlayer)){
return currentPlayer;
} else {
return topRebounder;
}
}
function getReboundNumber(player){
return parseInt(player.rebounds_offensive) + parseInt(player.rebounds_defensive);
}
function getThreePointerPercentage(player){
return parseInt(player.three_pointers_made) …Run Code Online (Sandbox Code Playgroud) 我的 Node.js 服务器上有一个验证请求的身份验证路由:
app.get('/loggedin', auth, function(req, res){
console.log(req.authenticated);
res.send(req.authenticated ? req.authenticated: false)
})
Run Code Online (Sandbox Code Playgroud)
据我了解,auth是在app.get(). 这是代码auth:
var jwt = require('jsonwebtoken');
var config = require('./config');
module.exports = function(req,res,next){
var bearerHeader = req.headers['authorization'];
var token;
console.log(bearerHeader);
req.authenticated = false;
if (bearerHeader){
console.log("11111");
var bearer = bearerHeader.split(" ");
token = bearer[1];
jwt.verify(token, config.secret, function (err, decoded){
console.log("22222");
if (err){
console.log(err);
req.authenticated = false;
req.decoded = null;
} else {
console.log("33333");
req.decoded = decoded;
req.authenticated = true;
}
}); …Run Code Online (Sandbox Code Playgroud) 这是我的 node.js 后端的代码:
app.get('/getpossibleconnections', auth, function(req, res){
if (req.authenticated == false){
res.send("Your session has expired.");
} else {
User.aggregate([
{ $match: { _id: { $nin: req.decoded.username.connections } } },
{ $sample: { size: 10 } },
]).next(function(err, docs) {
console.log("horray");
});
}
});
Run Code Online (Sandbox Code Playgroud)
我尝试按照此处的建议替换next()为toArray()和:each()
http://mongodb.github.io/node-mongodb-native/2.0/tutorials/aggregation/
但是,我每次都会收到相同的错误:
TypeError: User.aggregate(...).next is not a function
为什么我无法使用任何类型的函数迭代返回的文档?
是因为User不是合集吗?
我正在尝试更新Mongodb中的多个数据库条目:
User.findByIdAndUpdate(req.user._id,
{$push: {people_seen: person_id}},
{$push: {people_liked: person_id}},
function(err, usr){
console.log(req.user);
res.json({success: true});
});
Run Code Online (Sandbox Code Playgroud)
但是,只是people_seen得到了保存.
我的 HTML 文件中有一些 Bootstrap 选项卡:
<!doctype html>
<!-- jQuery -->
<script src="https://code.jquery.com/jquery-3.1.1.min.js" integrity="sha256-hVVnYaiADRTO2PzUGmuLJr8BLUSjGIZsDYGmIJLv2b8=" crossorigin="anonymous"></script>
<!-- Latest compiled and minified CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
<!-- Optional theme -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap-theme.min.css" integrity="sha384-rHyoN1iRsVXV4nD0JutlnGaslCJuC7uwjduW9SVrLvRYooPp2bWYgmgJQIXwl/Sp" crossorigin="anonymous">
<!-- Latest compiled and minified JavaScript -->
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
<style type="text/css">
#mainPopup {
padding: 10px;
height: 400px;
width: 288px;
font-family: Helvetica, Ubuntu, Arial, sans-serif;
}
</style>
<html lang="en">
<div class="container" id="mainPopup">
<ul class="nav nav-tabs">
<li class="nav active"><a href="#A" data-toggle="tab">A</a></li>
<li class="nav"><a href="#B" data-toggle="tab">B</a></li> …Run Code Online (Sandbox Code Playgroud) 要制作二维数组,我目前正在使用以下内容:
int * own;
own = (int *)calloc(mem_size, sizeof(int));
for (i=0;i<mem_size;i++){
own[i] = (int *)calloc(3, sizeof(int));
}
Run Code Online (Sandbox Code Playgroud)
但是,每次我引用 own[i][j] 时,都会收到一条错误消息,指出下标值既不是数组也不是指针也不是向量。
使用以下代码:
for (i=0;i<mem_size;i++){
if (mem[i] == l_priority_num){
printf("\nline1\n");
printf("line2");
return i;
}
}
Run Code Online (Sandbox Code Playgroud)
在命令行上,“line1”被打印,但随后出现“分段错误”。这怎么可能?