小编var*_*nie的帖子

vim和python脚本调试

有没有办法调试python脚本而不是在*nix系统中保留vim(执行脚本,设置断点,在监视列表中显示变量等)?

python vim

33
推荐指数
4
解决办法
3万
查看次数

在vim中自动打开NERDTree

有人知道如何在每次调用vim时强制.vimrc自动打开NERDTree吗?操作系统是*nix.

unix linux vim nerdtree

32
推荐指数
3
解决办法
2万
查看次数

jekyll和github - 如何更新博客文章?

美好的一天.

你能解决我遇到的一个小问题吗?

我在github上有一个jekyll博客.问题是在我更新了我的旧帖子,提交并推送它之后,博客文章没有显示任何更改,但我看到提交已成功推送.

如果我在本地运行jekyll --server,它会显示更新的博客帖子,并且不会报告任何错误.我没有安装jekyll插件.

我做错了什么或误解了什么?非常感谢.


Nawaz补充道:

我面临完全相同的问题.我推了添加了一个降价帖和几个CSS,并修改了布局和包含,然后我将它们推送到github.它成功完成了.我的github显示了存储库中的所有更改,但github博客(即从markdown生成的html帖子)仍然相同.根本没有变化.它显示了一些甚至不存在于存储库中的帖子.但是当我在jekyll --server本地工作时,每个更新都会显示在我托管的本地博客上http://localhost:4000.

请帮我!

github jekyll

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

vim复制粘贴缓冲区

假设我有以下文本(为了清晰起见,我对行进行了编号),光标位于第5行的开头:

1
2 var x = 1;
3 var y = 2;
4 
5 if (true) {
6     print("Hey!");
7 }
Run Code Online (Sandbox Code Playgroud)

好的,现在我尝试削减第5,6,7行(所有"如果"的东西).为此我做: Vjjd.现在看来我在第4行的开头是一个空字符串.

我的问题:此刻是否有可能删除第4行而不会丢失之前复制的第5,6,7行(即"if"thingy),以便我可以将它们粘贴到其他地方,例如1号后来?

vim

10
推荐指数
2
解决办法
7375
查看次数

在Python中混合超级和经典调用

首先,让我引用一篇来自"专家Python编程"一书的文章:

在下面的示例中,使用__init__方法调用其基类的C类将使B类被调用两次!

class A(object):
    def __init__(self):
        print "A"
        super(A, self).__init__()

class B(object):
    def __init__(self):
        print "B"
        super(B, self).__init__()

class C(A,B):
    def __init__(self):
        print "C"
        A.__init__(self)
        B.__init__(self)

print "MRO:", [x.__name__ for x in C.__mro__]  #prints MRO: ['C', 'A', 'B', 'object']
C()  #prints C A B B
Run Code Online (Sandbox Code Playgroud)

最后,这里是对这里发生的事情的解释:

这是由于A .__ init __(self)调用,它是由C实例进行的,因此使super(A,self).__ init __()调用B的构造函数.换句话说,super应该用于整个类层次结构.问题是有时这个层次结构的一部分位于第三方代码中.

我不知道为什么" super(A, self).__init__()调用B的构造函数".请解释这一刻.非常感谢.

python

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

将夹具传递给 pytest 中的测试类

考虑以下伪代码演示我的问题:

import pytest


@pytest.fixture
def param1():
    # return smth
    yield "wilma"


@pytest.fixture
def param2():
    # return smth
    yield "fred"


@pytest.fixture
def bar(param1, param2):
    #do smth
    return [Bar(param1, param2), Bar(param1, param2)]


@pytest.fixture
def first_bar(bar):
    return bar[0]


class Test_first_bar:

    # FIXME: how do I do that?
    #def setup_smth???(self, first_bar):
    #    self.bar = first_bar


    def test_first_bar_has_wilma(self):
        # some meaningful check number 1
        assert self.bar.wilma == "wilma"


    def test_first_bar_some_other_check(self):
        # some meaningful check number 2
        assert self.bar.fred == "fred"
Run Code Online (Sandbox Code Playgroud)

基本上我想将first_bar夹具传递给我的Test_first_bar类,以便在其所有测试方法中重用该对象。遇到这种情况我该怎么办? …

python pytest

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

以Pythonic的方式拿着列表的尾巴?

from random import randrange
data = [(randrange(8), randrange(8)) for x in range(8)]
Run Code Online (Sandbox Code Playgroud)

我们必须测试第一个项目是否等于尾部之一.我很好奇我们怎么会做的最简单的方法不复制尾项新的名单?请考虑到这一段代码获取,比如说,update()方法执行多次,因此它必须是快速地.

使用额外的列表(不必要的内存浪费,我猜):

head = data[0]
result = head in data[1:]
Run Code Online (Sandbox Code Playgroud)

好的,这是另一种方式(太冗长):

i = 1
while i < len(data):
    result = head == data[i]
    if result:
        break
    i+=1
Run Code Online (Sandbox Code Playgroud)

解决这个问题的Pythonic方法是什么?谢谢.

python

6
推荐指数
2
解决办法
7422
查看次数

Perl内部和Moose:恒定折叠优化

我一直对Perl执行的常量折叠优化感到好奇,但是当代码中有Moose涉及的机会是不会执行常量折叠时(如果我错了请纠正我).

我有Moose代码,其中包含如下方法:

sub foo {
    my ($self) = shift;
    my $test_y = $self->pos->[1];
    #...
    if ($self->is_map_val($self->pos->[0]+8, $test_y+32) ||
        $self->is_map_val($self->pos->[0]+32-8, $test_y+32)) { 
    {
        heavy_stuff();
    }
    #...
}
Run Code Online (Sandbox Code Playgroud)

当我运行时,perl -MO=Deparse ./program.pl我得到几乎相同的代码行:

if ($self->is_map_val($self->pos->[0] + 8, $test_y + 32) or    
    $self->is_map_val($self->pos->[0] + 32 - 8, $test_y + 32)) 
{
    heavy_stuff();
}
Run Code Online (Sandbox Code Playgroud)

我想知道为什么Perl没有优化32-824?是否有任何真正的原因Perl没有这样做(也许Moose子系统让生活变得更难?).

如果它有帮助,我运行Perl(v.5.14.2)

perl internals moose constantfolding

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

提升精神2.x:如何处理关键字和标识符?

美好的一天.

我过去一直在使用提升精神经典,现在我正在努力坚持更新的,提升精神2.x. 有人可以如此友善地指出我如何处理关键字?比如,我想区分"foo"和"int",其中"foo"是标识符,"int"只是一个关键字.我想保护我的语法免于错误的解析,比如"intfoo".

好的,我有

struct my_keywords : boost::spirit::qi::symbols<char, std::string> {
                my_keywords() {
                    add
                    ("void")
                    ("string")
                    ("float")
                    ("int")
                    ("bool")
                    //TODO: add others
                    ;
                }
            } keywords_table_;
Run Code Online (Sandbox Code Playgroud)

并且标识规则声明为:

boost::spirit::qi::rule<Iterator, std::string(),  ascii::space_type> ident;
ident = raw[lexeme[((alpha | char_('_')) >> *(alnum | char_('_'))) - keywords_table_]];
Run Code Online (Sandbox Code Playgroud)

并且,比方说,一些规则:

boost::spirit::qi::rule<Iterator, ident_decl_node(),  ascii::space_type> ident_decl;
ident_decl = ("void" | "float" | "string" | "bool") >> ident;
Run Code Online (Sandbox Code Playgroud)

如何正确地写它,说"void","float"等是关键字?提前致谢.

c++ boost-spirit

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

Clojurescript:处理具有核心/异步通道的块的请求

我有以下场景:

有一些服务我用来检索一些数据传递给我输入.

有一些输入参数我需要针对上述服务执行N个请求,收集输出并为每个输出执行一些CPU繁重的任务.

我试图使用核心/异步通道实现这一目标.

这是我的尝试(示意图)哪种有效,但它不表现我想要它.将对如何改进它的任何提示表示感谢.

(defn produce-inputs
  [in-chan inputs]
  (let input-names-seq (map #(:name %) inputs)]
    (doseq [input-name input-names-seq]
      (async/go
        (async/>! in-chan input-name)))))

(defn consume
  [inputs]
  (let [in-chan (async/chan 1)
        out-chan (async/chan 1)]
        (do
          (produce-inputs in-chan inputs)
          (async/go-loop []
                   (let [input-name (async/<! in-chan)]
                     (do
                         (retrieve-resource-from-service input-name 
                                                         ; response handler
                                                         (fn [resp]
                                                           (async/go
                                                             (let [result (:result resp)]
                                                               (async/>! out-chan result)))))
                         (when input-name
                           (recur)))))

     ; read from out-chan and do some heavy work for each entry
     (async/go-loop []
                   (let [result (async/<! out-chan)]
                         (do-some-cpu-heavy-work …
Run Code Online (Sandbox Code Playgroud)

asynchronous channel clojure clojurescript

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

消除方法的重复

是否有可能重构以下代码以消除重复?

我希望我的GameObject实现"更新"任务的逻辑,调用不同的更新处理程序(比如我的"AfterUpdate").当前版本有效,但有两个"更新"实现,它们是相同的.在GameObject上调用的AfterUpdate应该对其属性进行操作,在HeroGameObject上调用的AfterUpdate应该可以访问HeroGameObject的属性(例如"健康").

我能做得更好吗?谢谢.

package main

import "fmt"

type Point struct {
    x, y int
}

///////////////////////
type GameObject struct {
    Point
    title       string
    status      int
    ticks       float32
    spriteIndex int
}

func (g *GameObject) Update() {

    if g.ticks == 0 {

        g.spriteIndex++
        g.AfterUpdate()
    }
}

func (g *GameObject) AfterUpdate() {
    g.status = 0 //suppose it does something meaningful
    fmt.Println("GameObject afterUpdate handler invoked")
}

///////////////////////
type HeroGameObject struct {
    GameObject
    health float32
}

func (h *HeroGameObject) Update() {

    if h.ticks == 0 …
Run Code Online (Sandbox Code Playgroud)

go

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

Clojure RegEx:如何在正则表达式中嵌入注释?

我正在寻找一种将注释嵌入到Clojure中的正则表达式中的方法,以解释这段代码或这段代码的作用。我在文档中找不到此类功能。

Clojure中具有以下正则表达式:

 #"\$[A-Z]+|\((?:(?:\$[A-Z]+|[\w\'\-\_]+)(?:\|(?:\$[A-Z]+|[\w\'\-\_]+))*)\)"
Run Code Online (Sandbox Code Playgroud)

如何在正则表达式中添加注释?在Perl中,我会坚持使用尾随/x修饰符,例如:

$_ =~ m/ abc    # some comment explaining what abc is about
         /x;
Run Code Online (Sandbox Code Playgroud)

这样几天后就可以轻松处理它。

我该如何在Clojure中进行操作?

regex clojure

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

Precalculate Perl常量基于某些运行时计算值

这应该是相当微不足道的,但我无法自己解决这个问题.有了下面的代码,有没有办法摆脱许多调用dirname(rel2abs($0))

package Foo;

use File::Basename;
use File::Spec::Functions qw/rel2abs/;
use Carp qw/croak/;
use 5.010;

use constant BAR_NAMES => {
    WATER => dirname(rel2abs($0)) . '/../data/water.png',
    FIRE => dirname(rel2abs($0)) .'/../data/fire.png',
    GRASS => dirname(rel2abs($0)) .'/../data/grass.png'#,
    #and so on
};

sub get {
    my ($self, $name) = (shift, shift);
    if (exists BAR_NAMES->{$name}) {
        #return some calculated data based on $name value
    } else {
        croak("Constant `$name` is not declared.");
    }
};

1;
Run Code Online (Sandbox Code Playgroud)

谢谢.

perl constants

0
推荐指数
2
解决办法
99
查看次数