小编DrA*_*rAl的帖子

你如何强制在点上的节点上排名?

我有一些graphviz点格式的相对简单(自动生成)的图形.这些显示了通过状态机的路径,但是当我希望图形处于状态顺序时,dot有一个稍微混乱的习惯,即决定两个节点必须在同一个等级上.我已经尝试了很多的设置(包括:n:sweight下面列出的),但我无法说服点,放置第三个国家以上的第四个国家.

我有很多图表存在这个问题:点似乎有一些东西可以决定如果两个节点在同一个等级上会更好,并且没有什么可以覆盖它.我甚至有代码指定一个节点应该是a rank=sink,但是dot决定将另一个节点放在它下面.

有没有办法建议点,节点的顺序比任何其他约束更重要?

用于生成图形的代码如下所示:

digraph {
    ERROR [label="Error"];
    FirstSTATE [label="Initial State" URL="\ref FirstSTATE"];
    FirstSTATE -> SecondSTATE;
    SecondSTATE [label="Second State" URL="\ref SecondSTATE"];
    SecondSTATE -> ThirdSTATE;
    ThirdSTATE [label="Third State" URL="\ref ThirdSTATE"];
    FourthSTATE [label="Fouth State?" shape="diamond"];
    ThirdSTATE:s -> FourthSTATE:n [weight=50];
    FourthSTATE -> FifthSTATE [label="Yes" ];
    FourthSTATE -> ThirdSTATE [label="No"];
    FifthSTATE [label="Fifth State" URL="\ref FifthSTATE"];
    SixthSTATE [label="Sixth State?" shape="diamond"];
    SixthSTATE -> ERROR [label="Yes" ];
    SixthSTATE -> SeventhSTATE [label="No"];
    FifthSTATE -> SixthSTATE;
    SeventhSTATE [label="Seventh State" …
Run Code Online (Sandbox Code Playgroud)

graph dot state-machine graphviz graph-layout

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

识别C项目中所有变量的类型

我正在尝试编写一个程序来检查某些C源代码是否符合变量命名约定.为此,我需要分析源代码并确定所有本地和全局变量的类型.

最终结果几乎肯定是一个python程序,但分析代码的工具可以是python模块,也可以是生成易于解析的报告的应用程序.或者(更多内容如下),它可以是一种从编译器中提取信息的方式(通过报告或类似方式).如果有用的话,很可能是Keil ARM编译器.

我一直在尝试使用ctags,这对于查找所有typedef和宏定义等非常有用,但它没有提供直接查找变量类型的方法,特别是当定义分布在多行时(我希望它不会!).

示例可能包括:

static volatile u8 var1; // should be flagged as static and volatile and a u8 (typedef of unsigned 8-bit integer)
volatile   /* comments */   
    static /* inserted just to make life */
        u8 /* difficult! */   var2 =
        (u8) 72
           ; // likewise (nasty syntax, but technically valid C)
const uint_16t *pointer1;  // flagged as a pointer to a constant uint_16t
int * const pointer2; // flagged as a constant pointer to …
Run Code Online (Sandbox Code Playgroud)

c python variables code-analysis coding-style

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

为嵌入式应用程序选择C中的唯一标识符

我目前正在尝试实现一种算法来选择唯一的(16位)标识符.挑战是以不使用太多内存的快速方式执行此操作.当前使用的标识符列表是通过一系列SPI事务扫描外部闪存设备来确定的,因此是一个相对较慢的过程.此外,该算法将在小型微控制器上运行,因此我不能真正将所有条目读入RAM并在那里处理它们.

到目前为止我的想法是:

  1. 选择一个数字,然后扫描列表,看看它是否被使用.冲洗并重复.遭受相当缓慢(特别是如果有很多文件).
  2. 如上所述,但是使用具有适当种子的伪随机数生成器来选择数字.这具有以下优点:不太可能存在如此大量的迭代.
  3. 扫描列表并使用找到的所有条目填充数组.对它进行排序然后变得微不足道.这可能会占用大量内存.
  4. 使用一个巨大的(好的,可笑的,巨大的)位掩码.不太实际.
  5. 接受该工具的生命周期,使其在将65534个文件写入Flash之前很久就被丢弃或"格式化",因此只需将目前使用的最高值存储在Flash或备份内存中并继续增加.老实说,这可能对这个特定的应用程序非常有效.

目前,我正准备使用第二个或第五个,但我有兴趣知道是否有人有任何其他想法.我想认为有一种类似于CRC的算法,可以用来依次处理每个数字,并给出一个尚未使用的数字的公平概念,但我不知道这可能是怎样的工作.

c embedded algorithm

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

逃避.vimrc中的双引号

我想添加这个映射:

map <C-K> "_dd
Run Code Online (Sandbox Code Playgroud)

如何逃避双引号,以免被解释为评论?

vim

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

NumPy/Pandas:删除顺序重复值(相当于没有排序的bash uniq)

给出像这样的Pandas系列(或numpy数组):

import pandas as pd
myseries = pd.Series([1, 2, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 3, 3, 2, 2, 3, 3, 1])
Run Code Online (Sandbox Code Playgroud)

有没有一种很好的方法来删除顺序重复,就像unix uniq工具一样?numpy/pandas unique()和pandas drop_duplicates函数删除所有重复项(如unix的| sort | uniq),但我不想这样:

>>> print(myseries.unique())
[1 2 3 4]
Run Code Online (Sandbox Code Playgroud)

我要这个:

>>> print(myseries.my_mystery_function())
[1, 2, 3, 4, 3, 2, 3, 1]
Run Code Online (Sandbox Code Playgroud)

python numpy pandas

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

在Qt类实例中访问(非指针)成员变量时出现分段错误

我遇到一些问题,因为访问Qt应用程序中的成员变量会导致分段错误.我对分段错误的经验表明,它们通常是访问超出范围的内存位置的结果.但是,我正在努力弄清楚为什么在我的代码中会出现这种情况.

有问题的类是QFrame的子类,包含许多成员变量,包括一个最初调用m_Zoom的类型 unsigned int.创建框架时,会调用许多函数,这些函数会设置缩放级别,然后绘制窗口.一切正常.然后可以通过多种方式更改缩放级别:打开新文件或按+或 - .这些读取现有缩放级别,然后决定是否更改它.只需读取现有的缩放级别就会导致分段错误.

请注意,此变量不是指针或数组中的任何异常.定义如下:

class MyClass : public QFrame
{
    Q_OBJECT

public:
    MyClass(QWidget *parent = 0);
    void SetZoomLevel(unsigned int zoom);
    void ZoomIn();

protected:
    void mousePressEvent(QMouseEvent *event);
    void mouseReleaseEvent(QMouseEvent *event);
    void mouseMoveEvent(QMouseEvent *event);
    void paintEvent(QPaintEvent *event);

private:
    // A number of private functions for performing calculations

    // Some variables including:
    double m_OriginShift;
    unsigned int m_Zoom;
    // Some more variables
};
Run Code Online (Sandbox Code Playgroud)

函数paintEvent和所有mouse*事件函数访问 m_Zoom,这些工作正常(鼠标用于移动视图).构造函数调用SetZoomLevel(基本上是 m_Zoom = zoom).同样,这没有问题. ZoomIn以..开始: …

c++ qt

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

Pandas DataFrame 按列标题将编号列拆分为行

我有一个看起来像这样的数据框:

df = pd.DataFrame({
    'A': [0, 1, 2, 3, 4],
    'B': ['a', 'b', 'c', 'd', 'e'],
    'V1': [0.0, 0.1, 0.2, 0.3, 0.4],
    'V2': [1.0, 1.1, 1.2, 1.3, 1.4],
    'V3': [2.0, 2.1, 2.2, 2.3, 2.4],
    'X': ['alpha', 'beta', 'gamma', 'delta', 'epsilon'],
})
Run Code Online (Sandbox Code Playgroud)
   A  B   V1   V2   V3        X
0  0  a  0.0  1.0  2.0    alpha
1  1  b  0.1  1.1  2.1     beta
2  2  c  0.2  1.2  2.2    gamma
3  3  d  0.3  1.3  2.3    delta
4  4  e  0.4  1.4 …
Run Code Online (Sandbox Code Playgroud)

python dataframe pandas

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