小编Jak*_* M.的帖子

bison/flex:打印错误的行

我正在使用bison + flex来解析文件.出错时调用yyerror().如何获取违反规则的行号或字符串,并使用错误消息进行打印?

c c++ bison flex-lexer

9
推荐指数
2
解决办法
8269
查看次数

Div对事件透明

div在网格中有四个正方形,第五个正方形覆盖它们,位于中心:

小提琴http://jsfiddle.net/TLFJh/

HTML:

<div class="wrapper">
    <div id="info">info</div>
    <div id="inn1"></div>
    <div id="inn2"></div>
    <div id="inn3"></div>
    <div id="inn4"></div>
</div>
Run Code Online (Sandbox Code Playgroud)

CSS:

div.wrapper {
    position: relative;
    width:200px;
    height:200px;
}

#inn1, #inn2, #inn3, #inn4 {
    width:100px;
    height:100px;
    float:left;
}
#inn1 { background: blue; }
#inn2 { background: red; }
#inn3 { background: green; }
#inn4 { background: yellow; }

#info {
    position:absolute;
    width:100px;
    height:100px;
    top:50px;
    left:50px;
    border: 1px solid black;
    box-sizing: border-box;
}
Run Code Online (Sandbox Code Playgroud)

使用jQuery,我想将mouseover()事件绑定到四个方块(简单),但我希望它们能够捕获事件,即使指针位于信息框上方(对于事件来说,框对某些方面是"透明的").是否可能?

编辑:

我的目标是显示一些信息弹出窗口,每个信息弹出窗口都有不同的信息弹出窗口,#inn当光标结束 …

html css jquery

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

OpenMP和CPU亲和力

sched_setaffinitypthread_attr_setaffinity_np将在OpenMP下设置线程亲和力?

相关:CPU亲和力

c c++ posix openmp

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

单元测试访问私有变量

我有一个单元测试课Tester; 我希望它访问Working类的私有字段.

class Working {
    // ...
    private:
    int m_variable;
};

class Tester {
    void testVariable() {
        Working w;
        test( w.m_variable );
    }
}
Run Code Online (Sandbox Code Playgroud)

我有以下选择:

  • 使m_variable public- 丑陋
  • make方法test_getVariable()- 过于复杂
  • 添加friend class Tester到工作 - 然后明确地工作"知道"测试器,这是不好的

我的理想是

class Working {
    // ...
    private:
    int m_variable;

    friend class TestBase;
};

class TestBase {};

class Tester : public TestBase {
    void testVariable() {
        Working w;
        test( w.m_variable );
    }
}
Run Code Online (Sandbox Code Playgroud)

Working知道TestBase而不是每个测试......但它不起作用.显然友谊不适用于继承.

这里最优雅的解决方案是什么?

c++ unit-testing

8
推荐指数
3
解决办法
4356
查看次数

sqlalchemy:无需密码即可连接MySQL

我有MySQL基础"测试",根目录没有密码.我可以登录

mysql -uroot test # all fine
Run Code Online (Sandbox Code Playgroud)

我想用它来访问它sqlalchemy.我尝试使用这些网址:

mysql+mysqldb://root@localhost/test

mysql+mysqldb://root:@localhost/test
Run Code Online (Sandbox Code Playgroud)

但他们都失败了,错误:

sqlalchemy.exc.OperationalError: (OperationalError)
    (1045, "Access denied for user
    'root'@'localhost' (using password: NO)") None None
Run Code Online (Sandbox Code Playgroud)

如何在没有密码的情况下访问基地?

编辑

我也尝试过:

mysql://root@/test
mysql+mysqldb://root@/test
Run Code Online (Sandbox Code Playgroud)

使用密码的本地虚拟帐户,它可以正常工作.

python mysql sqlalchemy

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

grep - 打印行之前,不要打印匹配

如何在比赛上方轻松打印线并跳过比赛本身?grep -A,-B-o选择不解决它.也许有些awk神奇?

例如:

$ cat foo.txt
bar
foo
baz
foo

$ cat foo.txt | grep foo-SOMETHING
bar
baz
Run Code Online (Sandbox Code Playgroud)

编辑

  • 如果第2行和第3行有"foo",那么应该打印第1行和第2行(虽然我这里不是很严格)

附加功能:考虑以下示例:

bar
foo
baz
foo
foo
Run Code Online (Sandbox Code Playgroud)

这应该理想地回归

bar
baz
foo
Run Code Online (Sandbox Code Playgroud)

awk grep

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

优化此功能(在C++中)

我有一个消耗CPU资源的代码,其中执行了一些循环功能很多倍.此循环中的每个优化都会带来显着的性能提升.问题:你如何优化这个循环(虽然优化没有更多......)?

void theloop(int64_t in[], int64_t out[], size_t N)
{
    for(uint32_t i = 0; i < N; i++) {
        int64_t v = in[i];
        max += v;
        if (v > max) max = v;
        out[i] = max;
    }
}
Run Code Online (Sandbox Code Playgroud)

我尝试了一些方法,例如我用每个循环中增加的指针替换数组,但是(令人惊讶的是)我失去了一些性能而不是获得...

编辑:

  • 更改了一个变量的名称(itsMaximums,错误)
  • 该函数是一个类的方法
  • in and put are int64_t,所以是消极和积极的
  • `(v> max)可以评估为真:考虑实际最大值为负时的情况
  • 代码在32位pc(开发)和64位(生产)上运行
  • N 在编译时是未知的
  • 我尝试了一些SIMD,但是我没有提高性能......(将变量移动到_m128i执行和存储的开销高于SSE速度增益.但我不是SSE的专家,所以也许我有一个穷人码)

结果:

我添加了一些循环展开,以及来自Alex'es帖子的一个很好的黑客.下面我粘贴一些结果:

  1. 原文:14.0s
  2. 展开循环(4次迭代):10.44s
  3. 亚历克斯的戏法:10.89秒
  4. 2)和3)立刻:11.71s

strage,那4)并不比3)和4)快.以下代码为4):

for(size_t i = 1; i < N; i+=CHUNK) …
Run Code Online (Sandbox Code Playgroud)

c++ optimization performance g++

7
推荐指数
3
解决办法
1165
查看次数

sqlalchemy,将 MySQL 字符集设置为“create_engine”参数

我创建sqlalchemy连接到 MySQL 数据库的引擎。我想指定charsetcreate_engine参数。

create_engine如果我这样使用:

create_engine('mysql+mysqldb://pd:pd@localhost/pd?charset=utf8') 
Run Code Online (Sandbox Code Playgroud)

那么一切都很好。但是,当我这样使用它时:

create_engine('mysql+mysqldb://pd:pd@localhost/pd', charset='utf8') 
Run Code Online (Sandbox Code Playgroud)

然后我收到以下错误:

TypeError: Invalid argument(s) 'charset' sent to create_engine(), using
    configuration MySQLDialect_mysqldb/QueuePool/Engine. Please check that
    the keyword arguments are appropriate for this combination of components.
Run Code Online (Sandbox Code Playgroud)

根据文档,这种用法应该是可能的:

URL 的字符串形式为 dialect+driver://user:password@host/dbname[?key=value..] ...

**kwargs 采用多种选项,这些选项被路由到适当的组件。参数可能特定于引擎、底层方言以及池。特定方言还接受该方言特有的关键字参数。在这里,我们描述了大多数 create_engine() 用法中常见的参数。

charset为什么我不能单独指定?

python mysql sqlalchemy

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

在mixin中初始化实例变量

我想使用mixin为类提供一些功能.该功能使用一些额外的每对象状态.我想知道什么是最简洁的初始化本地状态的方法.考虑这个例子:

class Mixin:
    items = []
    def append(self, x):
        self.items.append(x)
    def display(self):
        print self.items

class Foo(object, Mixin): pass
class Bar(object, Mixin): pass

foo = Foo()
foo.append('foo')
foo.display()

>>> ['foo']

bar = Bar()
bar.append('bar')
bar.display()

>>> ['foo', 'bar']
Run Code Online (Sandbox Code Playgroud)

这里,状态是items列表.在Mixin体中初始化它显然是错误的.通常情况下,我会把它初始化__init__,但是对于Mixin,我不想搞砸__init__.

我可以做以下事情:

class Mixin:
    items = None

def append(self, x):
    if self.items is None:
        self.items = []
    self.items.append(x)
Run Code Online (Sandbox Code Playgroud)

但是每种情况append都要对这个条件进行评估,它似乎并不是最干净的解决方案.

任何替代品?或者也许添加__init__到mixin是方式?

(如果使用mixins是否可以,这是一个单独的问题)

相关:

python

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

fnmatch 和递归路径匹配`**`

是否有任何内置或直接的方法来递归匹配双星号的路径,例如像zsh那样?

例如,与

path = 'foo/bar/ham/spam/eggs.py'
Run Code Online (Sandbox Code Playgroud)

我可以使用fnmatch来测试它

fnmatch(path, 'foo/bar/ham/*/*.py'
Run Code Online (Sandbox Code Playgroud)

虽然,我希望能够做到:

fnmatch(path, 'foo/**/*.py')
Run Code Online (Sandbox Code Playgroud)

我知道 fnmatch将其模式映射到 regex,因此在单词的情况下,我可以使用其他**模式滚动我自己的 fnmatch ,但也许有更简单的方法

python glob fnmatch

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

标签 统计

c++ ×4

python ×4

c ×2

mysql ×2

sqlalchemy ×2

awk ×1

bison ×1

css ×1

flex-lexer ×1

fnmatch ×1

g++ ×1

glob ×1

grep ×1

html ×1

jquery ×1

openmp ×1

optimization ×1

performance ×1

posix ×1

unit-testing ×1