我正在尝试将我的socket.io代码分离到我的主文件(app.js)中的单独文件(socket.js).但是,我需要在app.js中定义我的io对象,这也用在我的socket.js文件中.
目前,我将io设置为全局变量,因此可以从app.js访问(app.js中的全局变量可以在路由中访问?),但我知道这是不好的做法.有没有更好的方法来做到这一点(在这种情况下可以注入工作,因为我需要将变量从app.js导出到socket.js而不是相反)?谢谢!
app.js
var app = express(),
server = require('http').createServer(app);
//KIV -> io is set as a global variable
io = require('socket.io').listen(server);
require('./socket');
Run Code Online (Sandbox Code Playgroud)
socket.js
io.sockets.on('connection', function(socket) {
//xxx
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试编写 Fizz Buzz,但遇到了意想不到的互动。如果我这样做std::cout << i,它会自动将 i (int) 转换为字符串并打印出来?但是如果分配i给一个字符串变量,它会打印一个空白吗?我设法通过使用来解决它std::to_string,但我只是想知道为什么打印to_print打印空白而不是整数或抛出某种错误?
#include <iostream>
#include <string>
int main() {
for (int i = 1; i <= 10; i++) {
// prints i
std::cout << i;
}
std::cout << std::endl;
for (int i = 1; i <= 10; i++) {
std::string to_print;
to_print = i;
// prints blank rather than i
std::cout << to_print;
}
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试找到关于子阵列最小切片的编码问题的解决方案,并且我已经设计了一个使用Kadane算法的修改版本的解决方案.我目前已经获得90/100并且设法通过O(n)中的几乎所有测试.但是,我似乎无法通过"medium_range,增加,减少(legth = ~100)和小功能,得到5预期3",我不知道为什么.这可能是解决方案的重复,但我使用的方法略有不同.
我的逻辑如下:
a)如果我们有一个数组MinA,其中MinA [k]表示从k开始的子阵列的最小平均切片,最小长度为2
b)然后,如果我们循环通过MinA并找到数组的最小值,那么这将是整个数组的最小平均切片(然后返回索引位置)
c)创建这个MinA,我们从数组的倒数第二个元素开始,MinA [A.length -2]是A的最后两个元素的平均值
d)我们将柜台向左移动一个位置; MinA [计数器]必须是A [计数器]和A [计数器+ 1]的平均值或元素计数器的平均值和MinA [counter + 1]中的元素
e)如果d不为真,那么这意味着MinA [counter + 1]不是从计数器+ 1到从计数器+ 2到N的某个元素的最小平均切片
我想知道我是否遗漏了什么?
/*
* Using modified version of Kadane's algorithm
* The key logic is that for an array A of length N,
* if M[k + 1] is the minimum slice of a subarray from k + 1 to any element
* between k+2 to n, then M[k] is either the …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用angular.js在/ parent root周围进行路由,如果我正在使用锚链接等工作(也就是路由纯粹从angular处理.例如,一个href为'/ parent/createstudent'的链接有效但是,当我在url栏中输入它或者当它已经在该位置时刷新它时,它会生成错误,因为后端路由尚未完成.
因此我在express中尝试了一个catchall路由('/ parent/*'),但这导致了我的所有js和css都没有被读取的错误.有谁知道如何解决这个问题?
我的静态文件目录
public
-> javascripts
-> app.js
-> angular.js
-> stylesheets
-> images
Run Code Online (Sandbox Code Playgroud)
错误:
Resource interpreted as Script but transferred with MIME type text/html: "http://localhost:3000/parent/javascripts/jquery.js". home:1
Resource interpreted as Script but transferred with MIME type text/html: "http://localhost:3000/parent/javascripts/angular.js". home:1
Resource interpreted as Script but transferred with MIME type text/html: "http://localhost:3000/parent/javascripts/main.js". home:1
Uncaught SyntaxError: Unexpected token < jquery.js:1
Uncaught SyntaxError: Unexpected token < angular.js:1
Uncaught SyntaxError: Unexpected token <
Run Code Online (Sandbox Code Playgroud)
表达
app.get('/parent', function(req, res) {
res.render('main')
});
app.get('/parent/*', …Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个方法(sum),它采用可变数量的向量并将它们添加进去.出于教育目的,我编写了自己的Vector类,并且底层数据存储在名为data的实例变量中.
我的代码@classmethod总和有效(对于传入的每个向量,循环遍历数据变量中的每个元素并将其添加到结果列表中),但它似乎不是Pythonic,并且想知道是否有更好的方法?
class Vector(object):
def __init__(self, data):
self.data = data
@classmethod
def sum(cls, *args):
result = [0 for _ in range(len(args[0].data))]
for v in args:
if len(v.data) != len(result): raise
for i, element in enumerate(v.data):
result[i] += element
return cls(result)
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用Raphael创建一个自定义角度指令来创建饼图.但是,我似乎无法让SVG正确显示(它似乎堆叠在一起(位置:绝对;顶部:0).但是,当我为每个指令创建Raphael对象时,我使用了模板中的div但是SVG似乎没有嵌入div中.我尝试过"替换:true"但它似乎也没有工作.有谁知道如何解决这个问题?
app.directive('piechart', function() {
return {
restrict: 'E',
scope: {
dset: '='
},
template: '<div></div>',
link: function(scope, element, attrs) {
var r = Raphael(element.children(0));
r.piechart(100, 100, 100, [scope.dset.male, scope.dset.female]);
}
}
});
Run Code Online (Sandbox Code Playgroud) 我目前正在跟踪视频的用户播放时间,我正在尝试确定用户观看的视频的百分比.我已经将问题推广到给定一系列可能重叠的数字范围,如何将它们组合成一系列非重叠的数字范围(即转换为"0-10,5-15,30-45,20-25")进入"0-15,20-25,30-45".
我有一个相对冗长的解决方案,前提是如果对数字范围进行排序,那么组合两个相邻的数字范围相对微不足道(如果它们重叠或者它们保持分离,则将它们组合起来).因此,我们首先对数字范围进行排序,然后遍历范围并组合它们.
由于排序是最坏的情况O(nlgn),这意味着我的解决方案应该是O(nlgn),我想知道是否有人知道O(n)问题的解决方案?
var testcase = [
[0, 30], [40, 50], [5, 15], [70, 95], [45, 75], [0, 10],
[110, 115], [115, 120], [140, 175], [125, 160]
];
//sorts the array in ascending order (based on first element)
//if the first elements are the same, order based on second element (prioritising elements that are bigger)
testcase.sort(function(a, b) {
if (a[0] !== b[0]) return a[0] - b[0];
return b[1] - a[1]
})
function evaluate(a, b) {
var result = []; …Run Code Online (Sandbox Code Playgroud) 给定一个数组(例如[3,5,2]),我试图生成一个可能的数组列表,这些数组是在数组中添加1到1个条目得到的:[[4,5,2],[3 ,6,2],[3,5,3]].
我可以通过以下方式完成它,但想知道是否有更多的pythonic方式来获得结果?
test = [3, 5, 2]
result = [t.copy() for _ in range(len(test))]
for index, _ in enumerate(result):
result[index][index] += 1
Run Code Online (Sandbox Code Playgroud) 我正在为一所学校创建一个 django 项目,主要有三种用户 - 家长、老师和学生。对于家长和老师,我希望他们使用电子邮件登录(他们目前使用电子邮件登录旧系统)。
但是,对于学生,我希望他们使用传统的用户名方法登录(因为年幼的孩子没有电子邮件)。这可以在 Django 中进行还是只允许一种用户身份验证模型?
我试图在mongoose中为字段("event_key")创建一个唯一索引,如果我尝试创建重复条目,我希望mongodb不保存.我查看了文档,似乎我需要做的就是index: {unique: true}在模式中设置,但我似乎无法让它工作.我已经尝试了几种不同的排列,仍然无法使其发挥作用.
另外,required: true由于我可以保存条目,即使我没有传入event_key ,也似乎没有工作.我可能错过了一些非常愚蠢的东西,并想知道是否有人可以提供帮助?
架构
var WistiaAnalyticSchema = new Schema({
event_key: {type: String, required: true, index: {unique: true}},
visitor_key: String,
created: {type: Date, default: Date.now},
ip: String,
})
Run Code Online (Sandbox Code Playgroud)
试图添加到数据库
WistiaAnalytic.create({event_key: '1402230270487e0.2668362990953028'}, function(err) {});
WistiaAnalytic.create({event_key: '1402229819163e0.4385743956081569'}, function(err) {});
WistiaAnalytic.create({ip: '1402229819163e0.4385743956081569'}, function(err) {});
WistiaAnalytic.create({event_key: '1402229819163e0.4385743956081569'}, function(err) {
console.log(err)
});
Run Code Online (Sandbox Code Playgroud) 我是 C# 的新手,并且为 noob 问题道歉 - 我正在尝试将字符串列表转换为单个字符串,以便我可以将它与 WWWForm 的 POST 函数一起使用。
如果我有一个字符串列表(例如kidIds = ["a#123", "b#123"]),我如何轻松地将其转换为单个字符串("a#123, b#123")?在 Javascript 中,我会简单地做kidIds.join(","),但我不确定如何在 C# 中做到这一点。
我试着做kidIds.ToArray().ToString(),但它并没有真正给我我想要的。我可以使用 for 循环遍历整个列表,但我想知道是否有一个更简单的衬里我可以使用?
我无法让 vuex mapState 函数正常工作。在我的文件 TheHeaderComponent.vue 中,我试图打印两者{{ $store.state.coins }},{{ coins }}但尽管我传入...mapState['coins']了组件,但只打印了前者。
显示的相关错误是 vue.esm.js?a026:628 [Vue warn]: Property or method "coins" is not defined on the instance but referenced during render. Make sure that this property is reactive, either in the data option, or for class-based components, by initializing the property.
想知道是否有人可以阐明我应该做什么?
# TheHeaderComponent.vue
<template>
<div>
<p>{{ $store.state.coins }}</p>
<p>{{ coins }}</p>
</template>
<script>
import {mapState} from 'vuex';
export default {
name: 'TheHeader',
computed: {
...mapState['coins'],
}, …Run Code Online (Sandbox Code Playgroud)