我对 NodeJS/Express/Socket.IO 很陌生,并且使用 Socket.IO 通信制作了一个简单的石头剪刀布应用程序(在客户端我使用的是 AngularJS)。到目前为止,应用程序的那部分工作得很好。
但是,我开始致力于使用 Redis 实现会话,并偶然发现了一些问题。由于我这样做是为了学习,因此我决定使用套接字来制作应用程序的一部分(玩石头剪刀布游戏的整个实时部分),而另一部分则不需要真正的- 使用常规 REST 的时间组件(排行榜、查看其他人的个人资料等)。
我遇到的问题是 connect.sid cookie 从未在客户端上设置。我做了一个简单的checkSessionREST 调用来测试会话是否持续存在,但似乎不是。我在checkSession通话中还注意到,req.sessionID总是给我一个全新的 sessionID。现在,我不确定是否应该connect.sid手动创建,还是节点应该自动处理?如果我应该做,我该怎么做?“设置授权”回调也从不包含connect.sid握手对象中的cookie。
另外,从我在研究这个过程中读到的内容来看,在常规 REST (Express) 和 Socket.IO 之间共享会话可能有点麻烦。这是我的代码(我关闭了整个石头剪刀布逻辑以确保这不是导致问题的原因)。
package.json:
{
"name": "RPSLS.Node",
"version": "0.0.1",
"private": true,
"scripts": {
"start": "node app.js"
},
"dependencies": {
"express": "3.5.1",
"session": "0.1.0",
"socket.io": "0.9.16",
"redis": "0.10.2",
"connect-redis": "1.4.7"
}
}
Run Code Online (Sandbox Code Playgroud)
app.js:
var express = require('express');
var parseCookie = express.cookieParser("megaultrasupersecret");
var http = require('http');
var path = …Run Code Online (Sandbox Code Playgroud) 是否有可能以某种方式使JSHint和JSCS在同一下一行的内联忽略上很好地发挥作用?
我想做的事情如下:
/* jshint camelcase: false, jscs requireCamelCaseOrUpperCaseIdentifiers: false */
Run Code Online (Sandbox Code Playgroud)
我尝试了几种不同的变体(单独的"注释块",中间用分号,忽略不同的行),但无法使其工作.也许我错过了一些明显的东西?或者它根本不可能?日Thnx.
我有这样的事情:
$i = 0;
foreach($tracks['results'] as $track){
$trackName[$i] = $track['name'];
$trackPlaycount[$track['name']] = $track['playcount'];
$trackPercent[$track['name']] = $track['percent'];
$i++;
}
$this->trackName = $trackName;
$this->trackPlaycount = $trackPlaycount;
$this->trackPercent = $trackPercent;
Run Code Online (Sandbox Code Playgroud)
我怎么能用playcount对这些对象进行排序?从我到目前为止阅读的内容中我了解到我应该创建一个比较函数,然后使用usort(),对吧?但我不太清楚如何实现这一目标......
谢谢
编辑:好的,所以现在我有这样的:
public function firstmethod(){
// there are some more parameters here of course
// but they worked before, not important for the problem
$i = 0;
foreach($tracks['results'] as $track){
$trackName[$i] = $track['name'];
$trackPlaycount[$track['name']] = $track['playcount'];
$trackPercent[$track['name']] = $track['percent'];
// this part is new
$tracksArray[$i] = array(
'name' => $trackName[$i],
'playcount' …Run Code Online (Sandbox Code Playgroud) 我刚开始学习一些红宝石,我想做这样的事情:
print "Insert two numbers: "
a, b = gets.split(" ")
Run Code Online (Sandbox Code Playgroud)
但是我想让a和b同时成为整数(在同一行).如果我添加.to_i到第二行(之前或之后split(" ")),它不起作用......所以,我该怎么办这个?映射,分裂,切片?好吧,我知道我可以使用scanf,但除了scanf之外,我该怎么做?
抱歉这样一个noobish问题,但我只是找不到一个足够好的答案只有谷歌搜索...
我有一段看起来像这样的代码:
downloadsByExtensionCount = defaultdict(int)
downloadsByExtensionList = []
logFiles = ['file1.log', 'file2.log', 'file3.log', 'file4.log']
for logFile in logFiles:
log = open(logFile, 'r', encoding='utf-8')
logLines = log.readlines()
for logLine in logLines:
date, time, c_ip, cs_method, s_port, cs_uri_stem, cs_user_agent = logLine.split(" ")
downloadsByExtensionCount[cs_uri_stem] += 1
downloadsByExtensionList.append([date, time, c_ip, cs_method, s_port, cs_uri_stem, cs_user_agent])
Run Code Online (Sandbox Code Playgroud)
这四个文件中的每一个大约150MB,每个文件大约有6万到8万行.
我开始只使用其中一个文件制作脚本,因为我以更快的方式测试功能,但现在我拥有了所有逻辑和功能,我当然尝试在所有四个日志文件上同时运行它.当脚本开始从第四个文件中获取数据时,我得到的是:
Traceback (most recent call last):
File "C:\Python32\lib\codecs.py", line 300, in decode
(result, consumed) = self._buffer_decode(data, self.errors, final)
MemoryError
Run Code Online (Sandbox Code Playgroud)
所以 - 我看看这个东西消耗了多少内存,这就是我发现的:
脚本读取前三个文件并到达大约1800-1950MB的某个位置,然后它开始读取最后一个文件增加50-100MB,然后我得到错误.我尝试运行脚本,最后一行(追加)被注释掉,然后它总共达到500MB左右.
那么,我做错了什么?这四个文件总共大约600MB,并且脚本消耗大约1500个用于填充列表,只有四个文件中的三个
我真的不明白为什么......我怎么能改善这个?谢谢.
我有一段Jison的代码,看起来像这样:
%lex
%options flex
%{
if (!('regions' in yy)) {
yy.regions = [];
}
%}
text [a-zA-Z][a-zA-Z0-9]*
%%
\s+ /* skip whitespace */
\n+ return 'NL';
"," return ',';
"-" return '-';
"[" return '[';
"]" return ']';
{text} return 'TEXT';
<<EOF>> return 'EOF';
/lex
%start expressions
%%
expressions
: content EOF
{
console.log(yy.regions);
return yy.regions;
}
| EOF
{
console.log("empty file");
return yy.regions;
}
;
content
: line NL content
{ console.log("NL"); }
| line content
{ console.log("no NL"); …Run Code Online (Sandbox Code Playgroud)