小编Ben*_*lte的帖子

访问Linux中C++(或python)输入的多个键盘

我想阅读在我自己的应用程序中连接计算机的(最多4个)键盘的输入.

我的情况

对于小型活动,我想将三个USB条形码扫描仪连接到笔记本电脑(带键盘)

默认情况下,条形码扫描仪只是像键盘一样工作.如果它扫描条形码,它只输入数字并按"返回"键.这很棒,开箱即用.

对于我的应用程序,三个条形码扫描器将同时工作,并可能与默认应用程序冲突.还应该有一个意见是在笔记本电脑键盘上手动输入条形码.

目标

因此,我需要使用我的自定义应用程序(C++或python)读取四个键盘的输入并单独处理它们.

环境

我的特定环境是Ubuntu 11.04,笔记本电脑上连接了三个条码扫描器.该应用程序是用C++或python编写的(取决于这个问题的答案).

提前感谢任何提示或答案

c++ python linux keyboard

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

获得小数的下一个最小的最近数字

介绍

对于某些计算,我需要找到可以在指定数字中添加/减去的最小可能数,而不会使内部使用的数据类型出现问题.

目标

我试着编写一个函数,它能够在值DIR的方向上将下一个最接近的数字返回到VALUE.

function nextNearest(value, direction) {
    // Special cases for value==0 or value==direction removed

    if (direction < value) {
        return value - Number.MIN_VALUE;
    } else {
        return value + Number.MIN_VALUE;
    }
}
Run Code Online (Sandbox Code Playgroud)

这个问题是,JavaScript使用64位浮点类型(我认为),它具有不同的最小步长,具体取决于它的当前指数.

问题详细

问题是步长取决于其当前指数:

var a = Number.MIN_VALUE;

console.log(a);
// 5e-324

console.log(a + Number.MIN_VALUE);
// 1e-323 (changed, as expected)


var a = Number.MAX_VALUE;

console.log(a);
// 1.7976931348623157e+308

console.log(a - Number.MIN_VALUE);
// 1.7976931348623157e+308 (that's wrong)

console.log(a - Number.MIN_VALUE == a);
// true (which also is wrong)
Run Code Online (Sandbox Code Playgroud)

摘要

那么我怎样才能找到可以在任何方向上从参数中指定的值加/减的最小可能数?在C++中,通过访问数字二进制值可以很容易地实现这一点.

javascript math

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

许多图像及其调色板的算法

对于一个项目,我正在寻找一种算法,将大量图像转换为调色板图像,这些图像可以共享相同的调色板.


短篇小说

鉴于:

  • 图像列表(RGB),已经具有应该使用的最终颜色.

结果:

  • 图像列表(显示)
  • 调色板列表
  • 通过使用不同的调色板,可以将多个RGB图像转换为一个指示图像.
  • 我想使用所需的最少量调色板所需的最少量图像.

限制:

  • 最多有n个调色板
  • 每个调色板最多有m种颜色
  • 最多可以在结果中生成u图像

我的问题是什么:

  • 我不知道如何构建算法,因此它可以决定先前的决定是否对未来的问题是错误的.(见下文)
  • 我不知道如何解决重新排列调色板颜色和图像数据,因为重新排列一个图像数据可能会导致重新排列的后续问题,这可能会在无休止的重新排列战中结束:D(见下文)

这是完整的故事

结果

因此,这应该是结果:在这种情况下,一个颜色索引表(也称为指示图像)使用两个不同的调色板生成两个不同的RGB图像.

图像渲染过程

第一步

由于输入文件都是RGB图像,我们需要先将它们转换为具有匹配颜色索引的调色板.

在下图中,您可以看到算法如何开始使用前三个图像:

  1. 它们转换调色板颜色索引
  2. 检查两个图像是否共享相同的颜色索引,如果是这样,我们可以重用颜色索引但创建一个调色板(不是必需的!)
  3. 否则,我们可以四种新颜色添加到第一个调色板创建一个新的颜色索引.(此图中未显示)
  4. 对于第三个图像,我们找到了一个已包含所有必需颜色的调色板,因此我们决定重复使用调色板,但重新排列我们的颜色索引以匹配现有调色板.

我们算法的第一步

让我们变得复杂!

到现在为止还挺好.但是我们应该如何继续使用最后一张图片呢?它可以共享前一个的颜色索引,但它与任何现有的调色板都不匹配.实际上它与任何现有的调色板都不匹配.

因此下图描述了实际问题:如何确定最适合图像的内容?创建一个新的调色板,创建一个新的颜色索引,如果我们过去另有决定,一切都会好的怎么办?我们怎么知道?

问题

重新排列

那么,这四个图像仍然是简单的情况.让我们假设算法已经处理了很多图像,并生成了一个调色板.我们的input-image-list中的下一个图像找到一个匹配的调色板,因此它可以很容易地创建新的颜色索引并且没问题.但是:结果应该是最少的图像和调色板,所以可能有另一种方式!

通过检查所有先前的图像,我们发现,我们可以使用前一图像的现有调色板和 …

javascript sorting algorithm image colors

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

Rails 5 logstash 产生太多的日志项而不是一个

有什么方法可以自定义记录标准错误的方式?从 Rails 5 开始,logstash 收到一个致命错误作为许多错误项。Rails 4 只创建了一个项目(我喜欢它的方式)

问题似乎是,从 Rails 5 开始,中间件的log_error方法单独DebugExceptions打印回溯调用的所有行logger.fatal,而不是 Rails 4,后者在logger.fatal仅调用一次之前将所有行连接到一个字符串。

比较的:

Rails 4:debug_exceptions.rb

message = "\n#{exception.class} (#{exception.message}):\n"
message << exception.annoted_source_code.to_s if exception.respond_to?(:annoted_source_code)
message << "  " << trace.join("\n  ")
logger.fatal("#{message}\n\n")
Run Code Online (Sandbox Code Playgroud)

Rails 5:debug_exceptions.rb

logger.fatal "  "
logger.fatal "#{exception.class} (#{exception.message}):"
log_array logger, exception.annoted_source_code if exception.respond_to?(:annoted_source_code)
logger.fatal "  "
log_array logger, trace
Run Code Online (Sandbox Code Playgroud)

我正在通过 UDP使用带有格式化程序的logstash-logger:json_lines

我使用的 logstash 配置非常适用于 rails 4 和其他应用程序,但不适用于 rails 5(因为它将一个错误分成几个)。

我知道,我可以rescue_from用来挽救控制器中的错误,但这不会捕获路由或其他方面的错误,我猜?

先感谢您。

logging ruby-on-rails logstash kibana

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

将非矩形图像分割成相同大小的块

我正在寻找一种算法来将非矩形图像(即透明图像)分块为(例如)16x16像素大小的块。这些块可能重叠,但是目标是获得最小数量的块。

原始图片

目标

摘要

  • 块必须大小相等
  • 块可能重叠
  • 目标是最小的矩形

先感谢您

algorithm image-processing sprite

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