小编buk*_*zor的帖子

bash:评论一条长管道

我发现在bash脚本中创建长流水线非常强大,但我看到的主要缺点是似乎没有办法插入注释.

例如,是否有一种向此脚本添加注释的好方法?

#find all my VNC sessions
ls -t $HOME/.vnc/*.pid                  \
    | xargs -n1                         \
    | sed 's|\.pid$||; s|^.*\.vnc/||g'  \
    | xargs -P50 --replace vncconfig -display {} -get desktop \
    | grep "($USER)"                    \
    | awk '{print $1}'                  \
    | xargs -n1 xdpyinfo -display       \
    | egrep "^name|dimensions|depths"
Run Code Online (Sandbox Code Playgroud)

bash comments pipeline sh

5
推荐指数
2
解决办法
1025
查看次数

通过API将数据透视表添加到Google电子表格中

我想自动创建其中一个数据透视表:

https://drive.googleblog.com/2011/05/summarize-your-data-with-pivot-tables.html

给定一些数据和参数,该脚本将以非交互方式创建一个新的Google电子表格,其中包含数据透视表和图表.

这可能吗?

pivot-table google-api google-docs google-docs-api

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

在Perl中,如何将二进制字符串转换为整数?

我有一个从二进制文件读取的四字节字符串,它应该表示一个整数.我如何设置整数?

例:

my $s = '\xa8e2~';
my $i = stoi($s);
printf "%X", $i;  #gives "0x7e3265a8"
Run Code Online (Sandbox Code Playgroud)

C中的解决方案很简单:

fread(&i,4,1,fp);
Run Code Online (Sandbox Code Playgroud)

string binary perl

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

tcl:包装一个同名的proc

我想用一个具有相同名称和调用约定的proc替换"proc N"的定义,但是需要一些额外的错误检测代码.

在python中,我可以按照下面的方式执行我想要的操作,但是我没有掌握命名空间和函数句柄如何在tcl中工作.

__orig_N = N
def N(arg1, arg2):
    if arg1 != 'GOOD VALUE':
        exit('arg1 is bad')
    return __orig_N(arg1, arg2)
Run Code Online (Sandbox Code Playgroud)

tcl decorator wrapper proc-object

4
推荐指数
2
解决办法
952
查看次数

xpath:我们如何选择最后一个文本节点?

如何使用xpath选择全局最后一个文本节点?我试过这个,但它给了我文档每个上下文中的最后一个节点.

lxml.html.fromstring('1<a>2<b>3</b>4<c>5</c>6</a>').xpath('//text()[last()]')
['1', '3', '5', '6']
Run Code Online (Sandbox Code Playgroud)

我可以做到这一点,但它在时间和空间上都是低效的,特别是当文档变大时.

lxml.html.fromstring('1<a>2<b>3</b>4<c>5</c>6</a>').xpath('//text()[last()]')[-1]
'6'
Run Code Online (Sandbox Code Playgroud)

我试图使用-1的索引,但这给了我一个空列表.我试图使用一些反向轴(这样我可以用1索引),但我无法让它们在全局上下文中工作.

xslt xpath lxml libxml2

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

Python:静态变量装饰器

我想创建一个像下面这样的装饰器,但我似乎无法想到一个有效的实现.我开始认为这是不可能的,但我想我先问你们.

我意识到在Python中有各种其他方法可以创建静态变量,但我发现这些方法很难看.如果可能的话,我真的想使用下面的语法.

@static(x=0)
def f():
    x += 1
    print x

f() #prints 1
f() #prints 2
Run Code Online (Sandbox Code Playgroud)

我不在乎执行static是长期还是黑客,只要它像上面那样工作.

我创建了这个版本,但它只允许<function>.<varname>使用更长的函数和变量名来快速繁琐的语法.

def static(**assignments):
    def decorate(func):
        for var, val in assignments.items():
            setattr(func, var, val)
        return func
    return decorate
Run Code Online (Sandbox Code Playgroud)

我想到的各种事情,但无法开展工作的是:

  1. 将f(装饰函数)更改为可调用类,并以某种方式self透明地存储静态变量.
  2. 修改装饰器内的f()的全局变量,并以某种方式将'global x'语句插入到f的代码中.
  3. 将f更改为生成器,我们手动绑定变量,然后直接执行f代码.

python variables static namespaces decorator

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

grep:"^." 不正确匹配

有人可以解释为什么这段代码没有按预期工作?我希望它只匹配第一个字符,它与文字字符匹配,但通配符(.)和字符类表现奇怪:

我使用-o只是为了证明事物是如何匹配的,它根本不会改变匹配的东西.

$ echo foo | grep -o '^.'
f
o
o
Run Code Online (Sandbox Code Playgroud)

一些更意外的行为:

$ echo foobarbazquux | grep -o '^[foarqux]'
f
o
o

$ echo foobarbazquux | grep -o '^.[^u]'
fo
ob
ar
ba
zq
Run Code Online (Sandbox Code Playgroud)

实际上,行首匹配器(^)在这些情况下的行为并不像预期的那样.有没有办法让它表现得更正常?

regex grep posix

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

git:找到`the`中不存在的最早的`mine`提交

我希望能够在我的git-graph中找到上游不存在的最长路径.该路径的一端显然是HEAD,所以这很容易.另一端是我最早的提交,它不存在于上游.我不知道怎么找到这个.

[otherguy]   H--I--J   
            /       \
[master]   A--B--C--M1--D--E--M2--F--G
              \      \             \
[mine]         H---I--M3---J---K---M4--M--HEAD
Run Code Online (Sandbox Code Playgroud)

我想要一个命令,它会指向H(或B),给定HEADmaster.请注意,一个简单的git merge-base master HEAD给我F.

git branch git-branch

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

selenium:测试"禁用提交"行为

我们使用Selenium WebDriver来测试具有双后预防行为的表单.有一些简单的javascript可以在点击时禁用按钮,这样用户就不会意外地发布两次相同的内容.

我们如何测试?

问题是button.click()直到下一页加载的块,此时我们当然无法断言前一页上的按钮.即使我们以某种方式得到.click()非阻挡,也存在固有的竞争条件; 如果浏览器/ javascript比测试系统快得多,它将能够在测试可以断言关于按钮的任何内容之前卸载页面.

没有javascript注入黑客的解决方案的奖励积分.

selenium webdriver selenium-webdriver

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

UNIX:在$ PWD以上的目录中查找文件

我想找到一个包含特定名称的文件,但在direcotories搜索上述当前的而不是下面.

我想要类似的东西:(功能除外)

$ cd /some/long/path/to/my/dir/

$ find -maxdepth -1 -name 'foo'
/some/long/path/to/foo
/some/foo
Run Code Online (Sandbox Code Playgroud)

Shell脚本或单行首选.


在回答几个问题时,上述示例与实际查找之间的区别在于搜索从当前目录向上进行(并且-maxdepth不采用否定参数).

unix bash shell posix find

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