小编Fre*_*abe的帖子

GetShortPathName函数的替代品是什么?

我正在寻找一个函数,它可以返回给定'long'路径的'short'(8.3表示法)路径.但是,GetShortPathName函数(看起来非常合适)对我不起作用,因为它要求已存在具有给定长路径的文件.

我还有哪些其他选项来计算给定长路径的8.3路径?

c c++ winapi

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

我怎样才能自动接受git rebase --interactive给我的内容?

我正在使用一个小脚本来修复过去的提交.该脚本假定已经暂停了对已损坏提交的修复,工作目录是干净的,并且在命令行上传递了损坏的提交.这是脚本的原始Python核心:

#!/usr/bin/env python
import os
import sys

broken_commit = sys.argv[1]

logmsg = os.popen( "git log --format=%%s %s~1..%s" % ( broken_commit, broken_commit ), 'r' ).read().strip()
os.system( "git commit --message \"fixup! %s\"" % logmsg )
os.system( "git rebase --interactive --autosquash %s~2" % broken_commit )
Run Code Online (Sandbox Code Playgroud)

在这一点上,我遇到了一个编辑器,只需要确认(:wq在我的情况下)所显示的更改.我怎样才能避免这最后一步?我想让这git rebase条线继续下去而不给我机会编辑显示的步骤.

我听说你可以通过EDITOR环境变量设置特殊脚本来实现.但是,我在Windows上使用msysGit,所以我在这方面有点受限.

git

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

我怎样才能知道git bisect接下来会尝试哪些提交?

在某些情况下,在git bisect会话期间,测试特定的提交需要很长时间(例如,因为我必须构建一个完整的发行包并将其部署在一个特别奇怪的机器上).实际上,测试构建需要很长时间,以至于我想在不知道当前测试是否成功的情况下开始构建接下来的两个提交.这样,我可以通过测试当前版本并并行构建接下来的两个版本来加速二等分.

有没有人知道如何git bisect显示接下来的两个版本,具体取决于当前提交是好还是坏?

git debugging git-bisect

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

文件描述符轮询

我创建了一个以下程序,我希望在其中轮询我在程序中打开的文件的文件描述符。

#define FILE "help"

int main()
{
        int ret1;
        struct pollfd  fds[1];

        ret1 =  open(FILE, O_CREAT);

        fds[0].fd = ret1;
        fds[0].events = POLLIN;

        while(1)
        {
                poll(fds,1,-1);

                if (fds[0].revents & POLLIN)
                        printf("POLLING");
        }
        return 0;
}
Run Code Online (Sandbox Code Playgroud)

它正在无限循环中。我期望在文件发生某些操作时运行循环。(它是一个 ASCII 文件)请帮助

c unix linux polling

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

如何从标记存储在变量中的树中选择节点?

请考虑以下XSLT脚本:

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:output method="text" encoding="iso-8859-1"/>

<xsl:variable name="stringmap">
<map>
<entry><key>red</key><value>rot</value></entry>
<entry><key>green</key><value>gruen</value></entry>
<entry><key>blue</key><value>blau</value></entry>
</map>
</xsl:variable>

<xsl:template match="/">
<!-- IMPLEMENT ME -->
</xsl:template>

</xsl:stylesheet>
Run Code Online (Sandbox Code Playgroud)

我想要打印这个脚本redgreenblue.

有没有办法将存储在stringmap变量中的XML标记视为自己的文档,我可以运行XPath查询?我基本上都在寻找类似的东西

<xsl:for-each select="document($stringmap)/map/entry">
    <xsl:value-of select="key"/>
</xsl:for-each>
Run Code Online (Sandbox Code Playgroud)

(除了document()函数需要URI).

动机:我有各种长<xsl:choose>元素,它们将给定的字符串映射到另一个字符串.我想用一个带有'map'参数的模板(这是一个简单的XML文档)替换所有这些模板.我的希望是我可以<xsl:choose>用一个简单的声明代替<xsl:value-of select="$stringmap/map/entry/value[../key='$givenkey']"/>

我正在使用xsltproc使用XSLT 1.0 .

xslt

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

如果我不知道集合的大小,我可以从集合中选择一个随机元素吗?

我正在编写一些JavaScript代码,如果项目符合某些要求,应该从画布中选择一个随机项.有不同种类的项目(圆形,三角形,正方形等),并且每种类型的项目数量通常不同.这些项目按层次排列(因此正方形可以包含几个圆圈,圆圈可以包含其他圆圈等等 - 它们都可以嵌套).

现在,我选择随机项目的(原始)方法是:

  1. 递归遍历画布并构建一个(可能是巨大的!)项目列表
  2. 洗牌清单
  3. 从前面迭代混洗列表,直到找到满足一些额外要求的项目.

这个问题是它不能很好地扩展.我经常遇到内存问题,因为递归深度太高或者项目总列表变得太大.

我正在考虑重写这段代码,以便在遍历画布时考虑选择元素 - 但如果我不知道总共有多少元素,我不知道如何"随机"选择一个元素.

有没有人知道如何解决这个问题?

javascript random algorithm graph-theory

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

如何使自定义Ruby类型表现得像字符串?

如果我有一个表示某种字符串类型的自定义Ruby类,就像在

class MyString
end
Run Code Online (Sandbox Code Playgroud)

我应该实现哪些功能才能使以下用例成为可能:

  1. 每当MyString期望时传递Ruby字符串
  2. MyString每当一个Ruby字符串被传递时传递一个
  3. 将Ruby字符串与MyString值进行比较(无论我使用s == t或是否都无关紧要t == s).

我见过这样有趣的各种功能to_s,cmp,==eq了,但他们每个人叫时,它不是我清楚.

我的具体用例是我正在使用C API编写一个Ruby扩展,它公开了获取(并返回)自定义字符串类型(QString确切地说)的值的函数,我的扩展也会注册这些值.但是,我想让这些自定义字符串尽可能直观.不幸的是,我不能只从我的C代码返回Ruby字符串,因为它应该可以在字符串上调用Qt方法.

ruby

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

在宏参数中使用#line指令是否合法?

我注意到这个程序用gcc编译:

#define X(A) A

int x = X(
#line 3 "test1.c"
        0
        );
Run Code Online (Sandbox Code Playgroud)

但是,Visual Studio无法编译它:

main.cpp
main.cpp(6): error C2121: '#': invalid character: possibly the result of a macro expansion
main.cpp(6): error C2065: 'line': undeclared identifier
main.cpp(6): error C2143: syntax error: missing ';' before 'constant'
main.cpp(6): error C2059: syntax error: 'constant'
Run Code Online (Sandbox Code Playgroud)

我想知道:该程序是否合法,还是它默默地依赖于未定义(或实现定义)的行为,恰好使gcc接受代码?

c c++ gcc visual-studio

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

'f(x){return x}'与'f = {x - > x}'有什么不同?

鉴于这个Groovy程序:

def f(x) { return x }

g = f

println g(42)
Run Code Online (Sandbox Code Playgroud)

将程序提供给Groovy(版本2.4.12)解释程序时,将打印一条错误消息:

groovy.lang.MissingPropertyException:没有这样的属性:f表示类:x at x.run(x.groovy:3)

但是,将程序更改为

def f = { x -> x }

g = f

println g(42)
Run Code Online (Sandbox Code Playgroud)

正如预期的那样,使解释器打印为"42".

为什么这两种定义的f处理方式不同?有没有办法调整g前一个版本运行的定义(可能使用&.运算符)?

groovy function

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

如何在定义包时获取包中的符号?

在我正在研究的Perl程序中,用户可以指定要加载的Perl模块,该模块应该定义一对(可变数量)变量.然后Perl程序处理这些变量,基本上将包视为普通哈希,除了值都在命名空间中.这样做很好,即这个程序打印'2':

use strict;
use warnings;

package P {
    my $k1 = 'v1';
    my $k2 = 'v2';
};

my $n = scalar keys %P::;
print "Number of entries: $n\n";
# print $P::x;
Run Code Online (Sandbox Code Playgroud)

但是,取消注释最后一行会使程序打印为"3".即在包中仅提及变量似乎将其添加到符号表中.

有没有办法在定义包时获取包的符号表,这样符号表只包含两个条目?

perl package

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