小编bea*_*mit的帖子

JSTUN vs PJNATH

我将在JavaScript中编写自己的STUN实现(带有NodeJS的服务器端),我正在寻找一个基于我的代码的库.

我找到了JSTUN和PJNATH,两者似乎都受到stackoverflow成员的支持.我下载了两者的源代码,PJNATH大约有15,000行代码,而JSTUN小于3000.

一个图书馆比另一个图书馆更完整吗?

我需要服务器和客户端组件,我希望尽可能完整,因为我不想实现TURN(太硬件密集).

我应该看一下更好的图书馆吗?最终我想制作一个完全符合ICE标准的解决方案,但现在STUN已经足够了.

ice serverside-javascript stun node.js

5
推荐指数
1
解决办法
1498
查看次数

Windows PATH 上的批处理字符串搜索

我正在 Windows 中编写一个批处理文件来运行安装后脚本,需要做的一件事是在系统路径中添加一个目录。

该脚本正在运行,它执行以下操作:

setx Path "%PATH%;c:\path\to\add" -m

这是正确设置路径,但如果用户重新安装程序,此脚本可能会多次运行。

我想搜索字符串,c:\path\to\add所以我不会一遍又一遍地向系统路径添加相同的路径。这在带有 的 Linux 中非常简单sed,但我不知道 Windows 中的命令是什么。我找到了findstr,但这似乎只适用于文件。

在不安装额外软件的情况下,这在 Windows 中是可能的吗?

编辑:

我正在使用 Inno Setup 创建安装可执行文件。

windows inno-setup path batch-file

5
推荐指数
1
解决办法
3781
查看次数

HTTP Accept-Encoding和发送未编码的数据

我构建了一个用于压缩HTTP输出的模块.阅读规范,我没有找到一些明确的区别:

Accept-Encoding:

是否应将其视为一个Accept-Encoding: *或好像没有标题?

或者,如果我不支持gzip,但我得到这样的标题:

Accept-Encoding: gzip

我应该返回406错误还是只返回未编码的数据?

编辑:

我已经阅读了几次规范.它提到了我的第一个案例,但没有定义服务器的行为应该是什么.

我应该像处理标题一样对待这种情况吗?或者我应该返回406错误,因为在给定字段值(''不是有效编码)的情况下无法对某些内容进行编码.

encoding http-headers

5
推荐指数
1
解决办法
1万
查看次数

ECM中的ECMAScript-262实现?

可能重复:微小的JavaScript实现?

我一直在寻找Javascript的C实现,但我找不到一个.我需要这个可以在没有C++编译器的平台上运行的超便携应用程序.

这是我的要求:

  • ANSI C(如果可能,C89兼容)
  • 最小的依赖关系
  • 可嵌入(不是独立的)
  • 开源(GPL v2兼容)

我不关心速度,但正确性是一个问题.我更喜欢它支持ECMAScript-262 v5,但v3现在还不错.

这样的事情存在吗?如果没有,是否有任何实现端口相对简单?

DMDScript是我发现的最简单的,所以我最终可能会移植它.显然没有参考实现,所以这可能是最好的方法.

注意:

我还发现了tiny-js,它意味着小而简单,但似乎并不符合标准.它似乎正在积极开发......

javascript c interpreter

5
推荐指数
1
解决办法
974
查看次数

程序化Windows用户配置文件创建

我正在尝试做类似于提出此问题的用户尝试执行的操作:

来自凭据提供程序DLL的HTTPS请求

关于用户配置文件的组件,我发现了这一点.

  • Windows将识别和加载的最小配置文件是什么?
  • 如何在Windows中创建和注册配置文件?

我的目标是Windows 7(专业版或企业版).我不仅仅是一个Linux人,所以在Windows上进行编程时我很无能为力,所以请保持温和.

PS有没有办法可以在Linux上开始开发,然后在不使用VM的情况下在Windows上进行测试?

这就是我想要做的

我正在构建一个配置文件同步程序,供那些移动很多的人使用,这样他们就不必到处携带笔记本电脑.此问题解决了用户登录到新计算机的情况.可能的应用是:

  • 经常在办公室之间旅行的商人
  • 每天使用不同电脑的学生
  • 国外网吧用户
  • 不喜欢在获得新计算机时复制文件的家庭用户

我希望尽可能提供最好的用户体验,这意味着近乎即时的配置文件创建.漫游配置文件很慢并且充满了错误.让Windows创建一个配置文件实际上不是一个选项,因为我需要进行自定义身份验证(我想出这个),我需要从服务器复制设置.

我需要的是一种方法:

  • 仅在用户登录时创建基本要素
  • 如果配置文件已更新,则从云更新设置
  • 让用户从登录屏幕在30秒内工作(最好快得多)

这就是我在想的事情:

  • 使用服务器验证用户
  • 联系Windows服务以处理配置文件创建/更新
  • Windows服务将在创建配置文件时下载裸设置
  • 设置已应用
  • 用户已登录

windows winlogon user-profile windows-7

4
推荐指数
1
解决办法
6687
查看次数

Bash:简单变量赋值的"命令未找到"

这是我的脚本的简单版本,显示失败:

#!/bin/bash
${something:="false"}
${something_else:="blahblah"}
${name:="file.ext"}

echo ${something}
echo ${something_else}
echo ${name}
Run Code Online (Sandbox Code Playgroud)

当我回显变量时,我得到了我输入的值,但它也会发出错误.我究竟做错了什么?

输出:

./test.sh: line 3: blahblah: command not found
./test.sh: line 4: file.ext: command not found
false
blahblah
file.ext
Run Code Online (Sandbox Code Playgroud)

前两行被发送到stderr,而接下来的三行被输出到stdout.

我的平台是fedora 15,bash版本4.2.10.

bash

4
推荐指数
1
解决办法
7806
查看次数

在jsp中上传文件的问题

我想使用commons-fileupload-1.2.2将doc文件上传到servlet.

我在前端使用此代码:

<form action="fileuploader" method="post" enctype="multipart/form-data">
<br>File : <input type="file" name="uploadedFile">
<br><input type="submit">
Run Code Online (Sandbox Code Playgroud)

并在servlet中使用此代码:

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // TODO Auto-generated method stub
    boolean isMultipart = ServletFileUpload.isMultipartContent(request);
}
Run Code Online (Sandbox Code Playgroud)

但系统给了我一个错误

SEVERE: Servlet.service() for servlet FileUploaderServlet threw exception
java.lang.ClassNotFoundException: org.apache.commons.fileupload.servlet.ServletFileUpload
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1680)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526)
    at org.jspFileUploader.fileUploader.FileUploaderServlet.doPost(FileUploaderServlet.java:31)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:291)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
    at java.lang.Thread.run(Unknown Source)

我认为问题在于这一行: …

jsp servlets file-upload

4
推荐指数
1
解决办法
1万
查看次数

在NodeJS中覆盖res.write

我已经和NodeJS玩了一段时间了,我真的很喜欢它,但我已经把自己弄到墙上了......

我正在尝试创建一个连接模块来拦截http.ServerResponse方法.我的最终目标是允许用户对传出数据应用某种过滤器.例如,他们可以选择在数据输出之前应用压缩等.

我有这个奇怪的错误...这个方法被调用的次数是它应该的两倍.

这是我的代码:

var http = require('http'), orig;

orig = http.ServerResponse.prototype.write;

function newWrite (chunk) {
    console.log("Called");

    orig.call(this, chunk);
}

http.ServerResponse.prototype.write = newWrite;

http.createServer(function (req, res) {
    res.writeHead(200, {'Content-Type': 'text/plain'});
    res.write("Hello");
    res.write(" World");
    res.end();
    console.log("Done");
}).listen(12345);
Run Code Online (Sandbox Code Playgroud)

这有效,当我使用浏览器访问它时,我得到'Hello World'作为输出,但我得到4'被调用'到控制台,'完成'得到输出两次.这让我相信,由于某种原因,我的服务器代码被调用了两次.我在this.constructor上的newWrite方法中做了一个console.log,两个实例中的构造函数都是ServerResponse,所以这没什么用.

我真的很困惑这里发生了什么.什么可能会发生?这不会直接影响输出,但我可能会同时向许多客户端提供数十亿字节的压缩数据,并且两次执行任务都会给我的服务器带来不必要的压力.

这将成为更大的文件服务器的一部分,因此强调不做两次所有事情.

编辑:

我已经读过这个问题,以防你想知道:

我可以在node.js中使用http.ServerResponse作为原型吗?

javascript http stream connect node.js

3
推荐指数
1
解决办法
3725
查看次数

D或Go用于集群游戏服务器

我正在设计一个游戏,但这个问题适用于需要群集中的节点和主服务器之间的双向通信的任何情况.我对集群很陌生,但我积极参与Go计划,偶尔在D计划.

我真的想使用现代语言(而不是C/C++),所以我选择了这两种语言,因为:

  • 数组切片
  • 良好的并发支持
  • 跨平台和本地编译(具有多个编译器实现)
  • GC(均在精确GC上工作)

我已经阅读了/sf/ask/248846951/用于游戏开发的D编程语言.

在高级别,我的游戏将完成大部分处理服务器端,客户端只是从他们的角度呈现游戏状态.游戏旨在扩展,因此它需要在群集中运行.组件主要是CPU绑定的,并且异步更新到主服务器,它与客户端共享游戏状态.大多数计算取决于用户输入,因此需要将这些事件发送到单个组件(因此是双向RPC).

我喜欢D的原因:

  • 手动内存管理
  • 模板/ CTFE
  • 代码安全(@safe,合同,进/出)

我喜欢Go的原因:

  • 标准库(pprof,RPC)
  • 去常规
  • go工具(尤其go get -u是安装/更新远程依赖项)

客户端可能会用D编写,但这不应该对服务器产生影响.

我倾向于D,因为手动内存管理已融入语言.虽然它没有很好的RPC库,但我理论上可以实现它,但我不能优雅地在Go中实现手动内存管理.

鉴于两种语言之间的选择,您会针对此问题使用哪种方法?

rpc d go

3
推荐指数
1
解决办法
679
查看次数

这种形式的范围如何称为?

我或多或少偶然发现了这种形式的范围

DataSource *dataSource =({
    NSInteger idx = [[self.tableView indexPathForSelectedRow] row];
    DataSource *dataSource = [DataSource new];
    dataSource.address = self.destinations[idx][0];
    dataSource.name    = self.destinations[idx][1];
    dataSource;
});
Run Code Online (Sandbox Code Playgroud)

我认为这是一种创建和实例化对象和变量的好方法,因为临时变量只有在需要创建我真正需要和关心的对象时才会存在.在idx我将内部写入dataSource外部时dataSource,上面的代码将会消失,因为范围将很快被留下.
此外,我发现一个吸引人的事实是完全实例化和配置的对象将被设置为外部对象.
实际上我甚至不知道这是C或Objective-C功能还是添加到clang的语法糖果.


@Unheilig
这是组织代码的语法.它不像块或闭包.在代码的末尾,您只需要一个完全实例化和配置的对象.

如果您只需要一个对象将它作为参数传递给方法,这会派上用场,但该对象的配置需要多个语句.您可以传入语句表达式,而不是将其分配给本地临时变量.

[[MYViewController alloc] initWithDataSource:({
    NSInteger idx = [[self.tableView indexPathForSelectedRow] row];
    DataSource *dataSource = [DataSource new];
    dataSource.address = self.destinations[idx][@"address"];
    dataSource.name    = self.destinations[idx][@"name"];
    dataSource;
})];
Run Code Online (Sandbox Code Playgroud)

在非ARC环境中,您甚至可以在表达式语句中调用autorelease.

所以它只是关于代码组织和我猜的很多个人品味.

c objective-c clang

3
推荐指数
1
解决办法
357
查看次数