小编And*_*odi的帖子

快速处理快速,同时管道流到响应

我在Express js app中处理错误时遇到了一些问题.

我的问题是我正在将流传递给响应,我不知道处理可读流中可能发生的错误的最佳方法是什么.

我正在使用errorHandler中间件,在路由中间件之后配置:

...
app.use(app.router);
app.use(express.errorHandler());
...
Run Code Online (Sandbox Code Playgroud)

这是我的路线:

exports.folders = function(req, res, next) {
    //throw new Error("TEST ERROR");
    var path = decodeURIComponent(req.params.path),
        foldersStream = wd.listFolders(path);

    foldersStream.on("error",function(err){
        console.log("STREAM ERROR")
        console.dir(next.name)
        return next(err);
    });


    res.setHeader("content-type", "application/json");
    foldersStream.pipe(res);
};
Run Code Online (Sandbox Code Playgroud)

如果我抛出TEST ERROR函数的主体,它将按照预期的方式处理errorHandler.

无论如何,如果在流中发出错误事件,则会调用错误事件处理程序,因为我可以在控制台中看到该消息,但errorHandler永远不会被调用.

如果我不处理错误事件,整个节点进程崩溃.如果我处理它,服务器会向客户端发送500响应,但errorHandler不会被调用,所以我错过了日志中的堆栈跟踪.

我做错了什么?

javascript stream node.js express

7
推荐指数
1
解决办法
2407
查看次数

运行时创建Visual Studio表单设计器源代码

我正在重构一个包含很多从运行时信息动态创建的表单的程序.

为了降低系统的复杂程度,我想为每个表单编写单独的代码文件.由于表单很多,我正在考虑一种方法来自动化从运行时收集的数据创建表单源代码文件的过程.

例如,如果我有一个名为EditPeople的表单的运行时实例,我想创建EditPeople.designer.cs的源代码,以便我可以在Windows窗体设计器中编辑该窗体.

你知道是否有一些框架或工具可以简化这项任务吗?

.net c# visual-studio-2010 winforms c#-4.0

6
推荐指数
1
解决办法
1839
查看次数

如何评论包含正则表达式的块

你知道是否有一种聪明的方法来评论包含正则表达式的代码块,其中包含*/?

例如,我发现自己正在评论包含此指令的块:

...

messageParser.run('messageFetched',/.*/);

...
Run Code Online (Sandbox Code Playgroud)

但如果我评论该块:

/*

messageParser.run('messageFetched',/.*/);

*/
Run Code Online (Sandbox Code Playgroud)

然后javascript将regexp解释为注释关闭,无法解析文件.我试图将//置于违规行之前,但它没有帮助,我不想评论块中的每一行,也不想改变正则表达式.

有一个聪明的方法来做到这一点?

javascript

6
推荐指数
1
解决办法
89
查看次数

如何将多个数组元素转换为对象

我正在尝试创建一个包含多个对象的数组.

我写了这段代码(它是现有类的成员)

public static $Roles = [
    (object) ['code' => 'SO', 'name' => 'Socio'],
    (object) ['code' => 'RESP', 'name' => 'Responsabile zona'],
    (object) ['code' => 'AMM', 'name' => 'Amministratore'],
];
Run Code Online (Sandbox Code Playgroud)

但我得到这个错误:

语法错误,意外'(对象)'(对象)(T_OBJECT_CAST),期待')'

在第二行.

我认为这应该有效,因为我已经使用相同的强制语法来定义关联数组元素:

return view('edit-headquarter', [
  'hq' => (object)['name' => '', 'id' => 0],
  'submitAction' => 'insert'
]);
Run Code Online (Sandbox Code Playgroud)

我做错了什么?

编辑:我使用的是PHP 5.4.45

我不确定,但这可以与 Martin Persson建议的相关

php

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

为什么Application.DoEvents使cpu使用率提高到100%

我经常在winforms应用程序中使用此代码来等待事件,而不使用线程.

while(checkSomething()){
    Application.DoEvents();
}
Run Code Online (Sandbox Code Playgroud)

循环运行时程序和PC仍然响应,但是如果我在任务managart中查看cpu使用情况,则使用率报告为100%.你知道为什么会这样吗?

c# winforms

2
推荐指数
2
解决办法
3185
查看次数

为什么在构造函数上创建新线程是不好的做法?

可能重复:
Java:为什么不在构造函数中启动一个线程?如何终止?

我习惯在我的代码上运行FindBugs以查找错误或不良做法.今天它抱怨我正在类构造函数中启动一个线程.

真的是坏事吗?你能解释一下为什么吗?

如果我的班级是最终的,那至少是安全的吗?

编辑:

该线程是作为内部类实现的,它只使用在启动时已经初始化的主类的字段:

public final class SingletonOuter {
    private static SingletonOuter ourInstance = new SingletonOuter();

    public static SingletonOuter getInstance() {
        return ourInstance;
    }

    private final SomeOtherClass aField;

    private SingletonOuter() {
        aField=new SomeOtherClass(); 
        thread=new InnerThread();
        thread.start();
    }

    private boolean pleaseStop;

    private synchronized boolean askedStop(){return pleaseStop;}
    public synchronized void stop(){
        pleaseStop=true;  
    }

    private final InnerThread thread ;
    private class InnerThread extends Thread{
        @Override public void run() {
            //do stuff with aField until askedStop()
        }
    } …
Run Code Online (Sandbox Code Playgroud)

java multithreading

2
推荐指数
1
解决办法
3156
查看次数

如何更改play 2.0.1中的上传文件目录?

我试图在我的application.conf文件中指定attachments.path属性,但这没有任何影响.

在play 2.0.1的文档中,我没有找到任何解释如何更改上传文件目录的内容.

我错过了什么吗?

java playframework playframework-2.0

2
推荐指数
1
解决办法
3244
查看次数

为什么反射调用方法需要将varargs包装在数组中?

在SO上回答这个问题,我遇到了一个我无法理解的奇怪问题.为什么反射'invoke'方法类需要将varargs参数包装在一个数组中才能工作?

使用vararg参数的其他类方法运行正常只是以正常方式调用它们...

public class Main {
   public static void main(String[] args){


    try {
        Class<?> p = Main.class;

        String[] arguments1 = {"ciao"};
        String[] arguments2 = {"salve"};
        String[] arguments3 = {"buonasera"};

        Method m = p.getDeclaredMethod("showIt",String[].class);


        //this is ok
        showIt(arguments1);

        //this is ok
        m.invoke(null, new Object[]{arguments2});

        //this throws IllegalArgumentException!!
        m.invoke(null, arguments3);

    } catch (Exception e) {
        e.printStackTrace();
    }
  }

  public static void showIt(String[] result) {
    System.out.println(result[0]);
  }


}
Run Code Online (Sandbox Code Playgroud)

调用方法有什么特别之处?

java

2
推荐指数
2
解决办法
2578
查看次数

Android生成的ID真的不可变吗?

我在包含9按钮的Android应用中定义了一个Activity.每个按钮都必须侦听同一个事件监听器.

查看生成的R类,定义了它们的ID:

 public static final int btn1=0x7f040001;
 ...
 public static final int btn1=0x7f040009;
Run Code Online (Sandbox Code Playgroud)

我的问题是:可以在for循环中添加循环ID的侦听器吗?

for (int i= R.id.btn1; i<=R.id.btn9;i++)
{
   Button button = (Button)findViewById(i);
   button.setOnTouchListener(new View.OnTouchListener() {
        @Override public boolean onTouch(View v, MotionEvent event) {
             ...
        }
   });
}
Run Code Online (Sandbox Code Playgroud)

或者在某些情况下,Id会被编译器重新分配,破坏我的代码?

我正在使用Intellij Idea环境来构建应用程序.

java android

0
推荐指数
1
解决办法
111
查看次数