小编Hou*_*man的帖子

socket.io删除特定的侦听器

我正在使用Socket.io v0.9.16和Chrome 34

我正在尝试删除特定的侦听器,或取消订阅特定的订阅

像这样的东西:

socket.on('testComplete',function(data){
    console.log('test complete',data);
}); 

function emitTest(){
    console.log('emitting test');
    socket.emit('test','first emit');
}

function removeListener(){
    socket.removeListener('testComplete');
}
Run Code Online (Sandbox Code Playgroud)

如果我调用该emitTest函数,然后调用该函数,我再次调用时removeListener仍会看到该'test complete'消息emitTest.如果套接字功能工作,则应该删除监听器.

我正在寻找一种方法来删除实际工作的特定侦听器.

这个答案说removeListener不起作用.

这样做是否有任何不利因素:

socket.removeListener=function(name){
        if(socket.$events.hasOwnProperty(name)){
            delete socket.$events[name];
        }
    };
Run Code Online (Sandbox Code Playgroud)

我将答案标记为正确,但我在我的代码中使用了上述代码,因为它对我的设计更有效.

javascript sockets socket.io

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

使用Android getIdentifier()

我试过这个:

r = Resources.getSystem().getIdentifier("ball_red","drawable","com.Juggle2");
Log.i("FindBall","R = "+r);
Run Code Online (Sandbox Code Playgroud)

还有这个:

r = Resources.getSystem().getIdentifier("com.Juggle2:drawable/ball_red", null, null);
Run Code Online (Sandbox Code Playgroud)

但'r'总是最终为零.

我从一个不是Activity的助手类中调用这一行,并且不会扩展任何东西,所以我不能简单地调用getResources(),但我可以从我的传递它SurfaceView.

最终,我想"ball_red"用变量替换,但首先是第一件事.这不起作用.

com.Juggle2确实是我的包名.drawableres它所在的文件夹,确实是文件的名称ball_red.

R.java说:

        public static final int ball_red=0x7f020027;
Run Code Online (Sandbox Code Playgroud)

所以我不确定它为什么不起作用.


所以我不能使用资源,我必须传递一个上下文,我这样做:在这里:

class Collection extends SurfaceView implements SurfaceHolder.Callback {
Run Code Online (Sandbox Code Playgroud)

我正在创建我的类的新实例并将其getContext()作为参数传递.

java android

50
推荐指数
2
解决办法
7万
查看次数

并发修改例外:添加到ArrayList

问题发生在

Element element = it.next();
Run Code Online (Sandbox Code Playgroud)

并且包含该行的代码位于 OnTouchEvent

for (Iterator<Element> it = mElements.iterator(); it.hasNext();){
    Element element = it.next();

    if(touchX > element.mX  && touchX < element.mX + element.mBitmap.getWidth() && touchY > element.mY   
            && touchY < element.mY + element.mBitmap.getHeight()) {  

        //irrelevant stuff..

        if(element.cFlag){
            mElements.add(new Element("crack",getResources(), (int)touchX,(int)touchY));
            element.cFlag = false;

        }           
    }
}
Run Code Online (Sandbox Code Playgroud)

所有这一切都在里面synchronized(mElements),这里mElements是一个ArrayList<Element>

当我触摸它时Element,它可能会激活cFlag,这将创建另一个Element具有不同属性的属性,这些属性将从屏幕上掉落并在不到一秒的时间内自行消失.这是我创建粒子效果的方式.我们可以称之为"粒子" crack,就像构造函数中的String参数一样.

这一切都正常,直到我添加另一个主要Element.现在我同时Elements在屏幕上有两个,如果我触摸最新的Element,它工作正常,并启动粒子.

但是,如果我触摸并激活cFlag旧版本Element,那么它会给我一个例外.

 07-28 15:36:59.815: ERROR/AndroidRuntime(4026): FATAL …
Run Code Online (Sandbox Code Playgroud)

java iteration android exception arraylist

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

+ =和= +之间的差异

我错了+ = = = +一次多次,我想我一直都忘了,因为我不知道这两者之间的区别,只有那个给了我期望它的值,而另一个没有.

为什么是这样?

java

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

git从存储中删除文件

我有一堆文件藏在里面.

但由于存在冲突文件,我无法应用我的存储.我在我的藏匿处找到了有问题的文件,我想将其删除.

如何在不破坏整个内容的情况下从存储中删除单个文件?

git git-stash merge-conflict-resolution

30
推荐指数
2
解决办法
3万
查看次数

开发人员控制台打开时Flash播放器消失

我正在使用swfObject嵌入swf.如果我将wmode参数设置为"direct","window"或"gpu",那么当我打开chrome开发者控制台时,swf将会消失.其他wmodes(透明和不透明)不会发生这种情况.我真的希望"直接"模式适用于硬件加速,但我需要打开控制台进行调试.

flash google-chrome

12
推荐指数
1
解决办法
588
查看次数

替换已弃用的函数mysql_connect

所以我已经设置了这个Amazon Web Service数据库

我正在为一个我计划使用它的应用程序编写一个旧教程.

我注意到mysql_connect在我查找时已经弃用了.

我可以用什么作为替代品?如何连接到我的亚马逊数据库?

<?
mysql_connect("localhost", "username", "password") or die ("Can't connect to database server");
mysql_select_db("videoRecorderDemo") or die ("Can't select database");
mysql_query("SET NAMES 'utf8'");
?>
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

Warning: mysql_connect() [function.mysql-connect]: Access denied for user 'username'@'192.168.1.1' (using password: YES) in /www/zxq.net/r/e/d/red5vptest/htdocs/utility/db.php on line 2
Can't connect to database server
Run Code Online (Sandbox Code Playgroud)

无论我使用什么凭据.亚马逊的代码示例显示您以完全不同的方式进行连接也无济于事.

php amazon-web-services

10
推荐指数
2
解决办法
7万
查看次数

上传某种扩展类型的所有文件

我正在尝试使用来自Windows Server 2008命令行的AWS CLI将所有类型为.flv的文件上传到S3存储桶.

我这样做:

aws s3 sync . s3://MyBucket --exclude '*.png'

它开始上传.png文件.

我正在尝试遵循文档,它给出了一个示例:

Local directory contains 3 files:
MyFile1.txt
MyFile2.rtf
MyFile88.txt
'''
aws s3 sync . s3://MyBucket/MyFolder --exclude '*.txt'
upload: MyFile2.rtf to s3://MyBucket/MyFolder/MyFile2.rtf
Run Code Online (Sandbox Code Playgroud)

那么我做错了什么?

amazon-s3 amazon-web-services aws-cli

10
推荐指数
1
解决办法
4356
查看次数

$ unset是空的.您必须指定如下字段:{$ unset:{<field>:...}}

mongodb版本3.0.1
mongoose版本4.0.3

我正在尝试这样做:

groupsModel.updateQ({_id:group._id},{
    $unset:{"moderators":""},
    $set:{"admins":newAdmins}
})
Run Code Online (Sandbox Code Playgroud)

而且我从catch陈述中得到一个MongoError

'\'$unset\' is empty. You must specify a field like so: {$unset: {<field>: ...}}'

但它不是空的.

moderators但是,不在架构中,这就是为什么我要删除它.

mongoose mongodb node.js

10
推荐指数
1
解决办法
4727
查看次数

GraphicsMagick进程导致空文件

我这样做

gm(jpgName).setFormat('jpg')
    .resize(160,158)
    .compress('JPEG')
.write(fs.createWriteStream(jpgName),function(err){
    if(err){
        console.log(err,jpgName);
    res.send(400);
    }else{
        console.log('file formated to jpg' + jpgName);
Run Code Online (Sandbox Code Playgroud)

我明白了

{ [Error: Command failed: gm convert: Empty input file (/home/ubuntu/node/uploads/icon.jpg). ] code: 1, signal: null }
Run Code Online (Sandbox Code Playgroud)

如果我在此处写入的第一行之前停止代码,然后查看该文件,则它具有文件长度.如果我让这个过程发生(错误输出)然后查看文件,那么它的大小为0字节.

我也试过这个:

fs.stat(jpgName, function (err, stats) {
    console.log('file size:',stats.size);
    gm(jpgName).setFormat('jpg')
        .resize(160,158)
        .compress('JPEG')
        .write(fs.createWriteStream(jpgName),function(err){
            if(err){
                console.log('console.log error writing jpg file',err,jpgName);
                    fs.unlink(jpgName);
                        callback(400);
                        return;
                    }else{//...
Run Code Online (Sandbox Code Playgroud)

而且我得到了一个文件大小,所以我知道在开始这个过程之前它并不是空的.

编辑:我现在开始这个过程,form.on('end')所以我可以确定整个上传过程已经完成.

整个功能:

function formatProfileImage(req,form,file,callback){
    console.log('formatting profile image');
    var ext = file.name.split('.')[1].toLowerCase();
    var name = encodeURIComponent(file.name.split('.')[0].toLowerCase());
    var smallName = form.uploadDir+"/"+"small_"+name+".jpg";
    var jpgName = …
Run Code Online (Sandbox Code Playgroud)

javascript node.js graphicsmagick formidable

9
推荐指数
1
解决办法
2195
查看次数