小编Stu*_*acy的帖子

无法在Android设备上获取Javascript中的touchevents坐标

我正在测试HTML5画布并使用Javascript来绘制支持触控的设备.虽然我在iOS设备上工作但我无法在Android上使用它.我把它缩小到event.pageX没有返回坐标,而是返回0或未定义(基于浏览器).

我在Opera Mobile和Dolphin浏览器上运行Cyanogen 7.1的手机上测试了它,并在运行标准浏览器的Galaxy Tab 10.1(Android 3.1)上进行了测试.

我修改了代码,在touchstart事件上显示警告,显示event.pageX,event.layerX和event.clientX坐标(我知道clientX应该只能在iOS上运行).

canvas.addEventListener('touchstart', function(e) {
if (readyToDraw){
    alert("PageX: "+e.pageX+","+e.pageY+"\n LayerX: "+e.layerX+","+e.layerY+"\n + clientX: "+e.clientX+","+e.clientY);
    // prevent the browsers default action!
    e.preventDefault();
    paint = true;
    // Get coordinates
    var c = getCoords(e);
    addClick(c.x, c.y, false);
}
});
Run Code Online (Sandbox Code Playgroud)

我已经在iOS中使用完整的绘图,但甚至无法让Android注册坐标,任何想法?

最终编辑:我解决了问题,看到了接受的答案.

javascript android touch-event

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

如何使Java JButton在视觉上用触摸屏压下?

我有一个简单的Swing GUI,JButton在带有触摸屏的Surface平板电脑上运行.按钮有ActionListeners.从鼠标单击这些按钮时,它们会在视觉上正确按下.然而,当他们在触摸屏上轻敲时,它们在视觉上保持相同但仍然会触发actionPerformed().如果他们是双击,那么他们在视觉上正确压下但是开火2 actionPerformed()秒.

是否有一种方法可以在按下按钮时进行此按钮动画更改,而不是单击?我已经对它进行了测试,我可以使用MouseListener并放入所有逻辑,mouseClicked()但要求触摸屏用户双击按钮并不是很优雅.

java swing touchscreen jbutton

11
推荐指数
1
解决办法
870
查看次数

使用unique_ptr将对象推入C++中的向量

我有一个简单的类结构建模离散模拟,带有状态向量,每个状态包含许多过渡,作为智能指针的向量.我已经使用智能指针来保存转换,就像在我的完整应用程序中我需要多态性一样.

#include <vector>
#include <memory>

class Transition {
    public:
        Transition() {}
};


class State {
    public:
        State(int num) : num(num), transitions() {}
        void add_transition(std::unique_ptr<Transition> trans) {
            transitions.push_back(std::move(trans));
        }

    private:
        int num;
        std::vector<std::unique_ptr<Transition>> transitions;
};


int main() {
    std::vector<State> states;
    for (int i = 0; i < 10; i++) {
        State nstate = State(i);
        for (int j = 0; j < 2; j++) {
            nstate.add_transition(std::move(std::unique_ptr<Transition>(new Transition())));
        }
        // This line causes compiler errors
        states.push_back(nstate);
    }
}
Run Code Online (Sandbox Code Playgroud)

将新状态对象添加到向量时,我遇到编译器错误:

Error: use of deleted …
Run Code Online (Sandbox Code Playgroud)

c++ smart-pointers vector move-semantics c++11

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

为什么使用Python生成器来遍历二叉树要慢得多?

我有一个二叉树,节点与数据交互.我最初实现了标准的邮政订单递归遍历.

def visit_rec(self, node, data):
    if node:
        self.visit_rec(node.left, data)
        self.visit_rec(node.right, data)

        node.do_stuff(data)
Run Code Online (Sandbox Code Playgroud)

我认为我可以通过使用生成器来改进它,以便我可以使用相同的遍历方法用于其他用途,而不必不断地传递相同的数据.该实现如下所示.

def visit_rec_gen(self, node):
    if node:
        for n in self.visit_rec_gen(node.left):
                yield n
        for n in self.visit_rec_gen(node.right):
                yield n

        yield node

for node in self.visit_rec_gen():
    node.do_stuff(data)
Run Code Online (Sandbox Code Playgroud)

然而,这比以前的版本(~50s到~17s)慢得多,并且使用了更多的内存.我的发电机功能版本有错吗?我更喜欢使用这种方法,但不是以牺牲性能为代价.

编辑:我最初应该提到的一点是,这些结果是在PyPy 2.3.1下获得的,而不是标准的CPython.

python recursion pypy generator

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

ggplot2:geom_ribbon,其中alpha依赖于每个x沿y轴的数据密度

在ggplot2中是否有办法根据点的密度生成具有不同alpha的geom_ribbon(或其他基于区域的geom)?

以下代码产生50个嘈杂的正弦波,每个样本具有随机x值.我不想绘制每一点,因为我可能想要一千个或更多的重新采样,所以我想总结所有这些要点.

一种简单的方法是绘制一个覆盖95%分位数的geom_ribbon.然而,首先,这并不容易计算,因为每个重采样的x值不相同; 通常你会计算每100个点的逐点分位数.

相反,我希望有一个色带覆盖样品所在的整个区域,具有连续的α梯度,即色带在实际线附近的中间最暗,在离群点处非常浅.这可能在ggplot2中吗?

library(ggplot2)

num_points = 100
num_samples = 50

x = seq(0, 4*pi, length.out=num_points)

sim <- lapply(1:num_samples, function(f) {
    x = runif(num_points, 0, 4*pi)
    y = sin(x) + rnorm(num_points, 0, 0.4)
    data.frame(x=x, y=y)
})

sim.df <- do.call(rbind, sim)
actual = data.frame(x=x, y=sin(x))

ggplot(sim.df, aes(x=x, y=y)) +
    geom_point(alpha=0.7) +
    geom_line(data=actual, colour='blue', size=1.5) 
Run Code Online (Sandbox Code Playgroud)

嘈杂的正弦波的情节

plot alpha r ggplot2

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

以编程方式在RStudio中打开R项目?

与如何file.edit('foo.R')在RStudio中打开文件进行编辑的方式类似,如果您知道R项目的位置,是否可以打开R项目.Rproj

r rstudio

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

PyPy内存使用量随时间增加

我注意到在PyPy和Python下运行的程序的内存使用有些奇怪.在PyPy下,该程序不仅使用比CPython大得多的初始内存量,而且这种内存使用量也会随着时间的推移而显着增加.在PyPy下的程序结束时,它使用大约170MB,而在CPython下运行则为14MB.

我找到了一个具有完全相同问题的用户,尽管规模较小,但是对他有用的解决方案只为我的程序提供了一点帮助pypy内存使用量会永远增长吗? 我尝试更改的两件事是将环境变量PYPY_GC_MAX设置为100MB,将PYPY_GC_GROWTH设置为1.1,并在每一代手动调用gc.collect().

我正在确定内存使用情况

resource.getrusage(resource.RUSAGE_SELF).ru_maxrss/1000
Run Code Online (Sandbox Code Playgroud)

这是不同条件下的运行时和内存使用情况:

Version: time taken, memory used at end of run
PyPy 2.5.0: 100s, 173MB
PyPy with PYPY_GC_MAX = 100MB and PYPY_GC_GROWTH = 1.1: 102s, 178MB
PyPy with gc.collect(): 108s, 131MB
Python 2.7.3: 167s, 14MB
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,程序在PyPy下比CPython快得多,这就是为什么我首先转向它,但代价是内存增加了10倍.

该程序是遗传编程的一个实现,我正在发展一个超过100代的算术二叉树,人口中有200个人.树中的每个节点都有对其2个孩子的引用,这些树的大小可以增加,尽管在这个实验中它们保持相对稳定.根据应用程序,该程序可以运行10分钟到几个小时,但是对于结果,我将其设置为较小的数据集以突出显示该问题.

有没有人有任何想法a)可能导致这种情况的原因,以及b)是否可以将内存使用限制在更可敬的水平?

python memory pypy

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

R - 正则表达式根据第一个点分隔字符串?

我有一个填充了包含多个点的字符串的列.我想将此列拆分为两个包含第一个点之前和之后的两个子串.

comb          num
UWEA.n.49.sp   3
KYFZ.n.89.kr   5
     ...
Run Code Online (Sandbox Code Playgroud)

 a         b       num
UWEA    n.49.sp     3
KYFZ    n.89.kr     5
     ...
Run Code Online (Sandbox Code Playgroud)

我正在使用separate函数,tidyr但无法正确使用正则表达式.我试图使用这个答案的正则表达式:

foo %>%
    separate(comb, into=c('a', 'b'),
             sep="([^.]+)\\.(.*)")
Run Code Online (Sandbox Code Playgroud)

因此,该列a应该由([^.]+)包含至少一个非点字符的第一个捕获组确定,然后是第一个点,然后第二个捕获组将(.*)匹配后面的任何剩余字符.

然而,这似乎不匹配任何东西:

a   b   num
         3
         5
Run Code Online (Sandbox Code Playgroud)

这是我的虚拟数据集:

library(dplyr)
library(tidyr)
foo <- data.frame(comb=replicate(10, 
                                 paste(paste(sample(LETTERS, 4), collapse=''),
                                       sample(c('p', 'n'), 1), 
                                       sample(1:100, 1), 
                                       paste(sample(letters, 2), collapse=''), 
                                       sep='.')
                                 ),
                  num = sample(1:10, 10, replace=T))
Run Code Online (Sandbox Code Playgroud)

regex r dplyr tidyr

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

在Python中选择随机类

假设您有狗,猫,猪等类......所有这些都是从动物继承的,那么随机初始化它的最佳方法是什么?

即一个基本的方法是有一个元组,从中选择一个项目,然后创建所选值的实例.

animals = ('dog', 'cat', 'pig'...)
choice = random.choice(animals)

if choice == 'dog':
    new_animal = Dog()
elif choice == 'cat':
    new_animal = Cat()
...
Run Code Online (Sandbox Code Playgroud)

但显然这是非常低效的,如何实现这种行为最好?

在相关的说明中,如果您要求用户输入(stdin,textfile等)他们想要的动物,那么您将如何实例化正确的动物呢?再一个丑陋的方式,这将是一个很大的if,elif语句如上所述.

python oop class

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

Python样本没有替换和更改人口

如果你有一个100个值的列表,你希望以2:1:1的比例将其子集化为3,那么在Python中最简单的方法是什么?

我目前的解决方案是为每个子集取一个索引样本,然后从原始列表中删除这些值,即

my_list = [....]
num_A = 50
subset_A = []

num_B = 25
subset_B = []

num_C = 25
subset_C = []

a_indices = random.sample(xrange(len(my_list)), num_A)
for i in sorted(a_indices, reverse=True):  # Otherwise can get index out of range
    subset_A.append(my_list.pop(i))

b_indices = random.sample(xrange(len(my_list)), num_B)
for i in sorted(b_indices, reverse=True):  # Otherwise can get index out of range
    subset_B.append(my_list.pop(i))

subset_C = my_list[:]
assert len(subset_C) == num_C
Run Code Online (Sandbox Code Playgroud)

但是我确信有比这更优雅的解决方案.

python random sample

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