小编Maj*_*cRa的帖子

用于桌面的Serilog GUI

Serilog是一个日志库,具有许多日志查看/分析服务(如Glimpse或Loggly)的Sinks(适配器).这很酷但是所有这些都需要浏览器才能看到日志.

难道你不知道,桌面应用程序(使用winforms,WPF等)是否有适用于serilog的日志条目的现成GUI控件?

PS我们可以采用IObservable serilog Sink并创建我们自己的"LogGrid"但我们宁愿不重新发明自行车.

logging desktop-application wpf-controls winforms serilog

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

如何使python自动完成显示匹配?

我有一个具有自动完成功能的完成者类.简单版本:

class Completer:
    def __init__(self):
        self.words = ["mkdir","mktbl", "help"]
        self.prefix = None

    def complete(self, prefix, index):
        if prefix != self.prefix:
            self.matching_words = [w for w in self.words if w.startswith(prefix)]
            self.prefix = prefix
        else:
            pass                
        try:
            return self.matching_words[index]
        except IndexError:
            return None
Run Code Online (Sandbox Code Playgroud)

并执行类似这样的操作以使用readline进行自动完成:

import readline
readline.parse_and_bind("tab: complete")

completer = Completer()
readline.set_completer(completer.complete)
user_input =raw_input("> ")
Run Code Online (Sandbox Code Playgroud)

因此,在示例中有3个单词用于自动完成[" help "," mkdir "," mktbl "].

如果用户执行:
> he<tab>
用户获取:
> help

但如果用户执行
> mk<tab>
没有任何事情发生,因为没有一个匹配(mkdir和mktbl)

如果有多个匹配项,如何显示选项?像Bash一样使用文件名自动完成?

因此,用户可以获得如下内容:
> mk<tab>
mktbl mkdir
> mk<cursor>


PS我试图把 …

python autocomplete readline

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

MySQL C API 处理文本字段

当使用 MySQL C API 中的 Prepared Statements 来处理 TEXT 字段结果时,必须为 out 绑定指定字符串的长度:

 MYSQL_BIND    out_bind;
 char          str_data[STRING_SIZE]; 
 my_bool       is_null;
 my_bool       error;

 ....
 /* STRING COLUMN */
 out_bind.buffer_type = MYSQL_TYPE_STRING;
 out_bind.buffer = str_data;
 out_bind.buffer_length = STRING_SIZE;
 out_bind.is_null= &is_null;
 out_bind.length= &length;
 out_bind.error= &error;

 mysql_stmt_bind_result(statement, out_bind)
Run Code Online (Sandbox Code Playgroud)

在给定的示例中,STRING_SIZE 是已知常量,但如何处理数据长度从小到兆大小不等的 TEXT 字段?

有没有标准的方法呢?

c mysql mysql-connector

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

唯一持久控制标识符

我们有什么
我们有一些复杂的winforms控制.要存储其状态,我们使用一些自定义序列化类.让我们说我们已经将它序列化为xml.现在我们可以将这个xml保存为用户目录中的文件或将其包含在另一个文件中......
但是......

问题是,
如果用户在他的winform应用程序中创建了几个这样的控件(在设计时),最好使用哪个唯一标识符来了解哪些已保存的配置属于哪些控件?

所以这个标识符应该:

  • 在应用程序发布期间保持不变
  • 自动给定(或已经给定,就像我们可以假设Control.Name始终存在)
  • 独特的应用程序

我想可以想象一下这样做的几种方法,我相信可能会有一些默认的方法.

有什么好用的?为什么?

c# configuration uid winforms

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

使用Cast <T>将int []转换为double []?

可能重复:
IEnumerable.Cast <>

可以隐式地将int转换为double.为什么"指定演员表无效".异常在这里提出?

 double[] a = Enumerable.Range(0, 7).Cast<double>().ToArray();
Run Code Online (Sandbox Code Playgroud)

我已经尝试了几个"版本".

PS我知道可能的解决方案,如:

 double[] a = Enumerable.Range(0, 7).Select(x => (double)x).ToArray();
Run Code Online (Sandbox Code Playgroud)

但我很好奇Cast如何工作=>为什么它在这个看起来如此明显的例子中不起作用.

.net c# linq ienumerable

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

如何序列化委托

让我们看一个网格填充的例子。

我们有Column类。它有一个委托FormatCell,它接受一些数据并将其转换为字符串FormatCell委托在设计时未知 - 它可能由插件设置。

public class ColumnFormatter
{
    public Func<Data, string> FormatCell {get; set;}
    //...
}
Run Code Online (Sandbox Code Playgroud)

以下是如何使用此类列的示例。

public class Table
{
    public List<Column> Columns;

    public List<List<string>> BuildTable(List<Data> dataRows)
    {
        var table = new List<List<string>>();

        foreach (var data in dataRows)
        {
            var line = new List<string>();                    
            foreach (var column in Columns)
            {
                line.Add(column.FormatCell(data));
            }

            table.Add(line);
        }

        return table;
    }
}
Run Code Online (Sandbox Code Playgroud)

现在每一列都应该保存它的状态。问题是如何序列化这个 FormatCell 委托?

PS 我知道这个问题,但我的问题更具体。也许有人有针对这种情况的特定可靠的磨合解决方案?

c# serialization delegates

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

更改 youtrack 问题 ID

简明扼要:
有没有办法(使用 YouTrack-API 或其他方式)更改问题 ID。比如说从s-5到s-30?

全文:
我们创建了 YouTrack 项目来跟踪我们生产的科学设备。一台设备 - 一个问题。通过我们创建的自定义字段,这是处理“设备故事”的非常方便的方法。

我们遇到的唯一问题是设备有自己的 ID 号。如果我们可以更改问题 ID,使其与设备 ID 相对应,那将会非常有帮助。当我们从其他问题和其他项目引用设备,并与真实设备 ID 等建立链接时,特别有用。

youtrack

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

将日志消息格式化为树

我想让python日志输出以对应于记录树的树的形式.看看例子.

让我们说我们有一个代码:

import logging

logger_a = logging.getLogger("a")
logger_a_b = logging.getLogger("a.b")
logger_a_b_c = logging.getLogger("a.b.c")
# ...


logger_a.debug("One")

logger_a_b.warning("two")
logger_a_b.warning("three")

logger_a_b_c.critical("Four")

logger_a_b.warning("Five")
Run Code Online (Sandbox Code Playgroud)

输出应该是这样的:

<--"a"
   |   DEBUG: One
   |
   o<--"a.b"
   |   | WARNING: Two
   |   | WARNING: Three
   |   |
   |   o<--"a.b.c"
   |       | CRITICAL: Four   
   |       |
   |   | WARNING: Five
Run Code Online (Sandbox Code Playgroud)

我可以手动为每个日志编写格式化程序,但它没有解决插入类似o < - "ab"的问题,我宁愿通过日志记录结构自动计算偏移量.

有一个名为日志记录树的模块.它打印日志记录布局.我想要的是以大致相同的方式打印日志消息.

你知道任何图书馆,方法吗?

python logging

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

使用 volatile 类成员进行中断处理

让我们假设它是一些ARM控制器的嵌入式开发。假设我们有一些变量,它可以从中断或“​​mainThread”分配 - (它是“主循环”还是 RTOS 线程)。在volatile这种情况下应该使用C world关键字,代码可能如下所示:

/* Some subsystem .C file */
static volatile uint8_t state;

void on_main_thread(void) {
    state = 1;     /* Changing state in this context */
}

void on_interrupt(void) {
    state = 0;     /* Changing state from interrupt */
}

uint8_t get_state(void) {
    return state;  /* Getting the state in whatever context */
}
Run Code Online (Sandbox Code Playgroud)

volatile在这种情况下,关键字是必不可少的。现在我们公司把一些代码改写成C++,同样的子系统例子是这样的(我这里用enum来强调这个问题)

class SomeSubsystem
{
public:
    enum class States
    {
        Off,
        Idle,
        Up,
        Down,
    };


    States getState() const { return mState; …
Run Code Online (Sandbox Code Playgroud)

c++ embedded interrupt

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

在Windows上为IPC命名管道与UDP

为什么命名管道更适合本地Windows机器上的IPC(进程间通信)?或者UDP有时可能更好?

windows udp ipc named-pipes

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