小编Tim*_*ick的帖子

在Mercurial中,如何在过去24小时内将修订推送到回购?

我有一个Mercurial存储库,有几个人从他们自己的本地存储库推送.我希望能够在这个中央存储中查询过去24小时内到达该存储库的所有更改,特别是不仅仅是过去24小时内提交的更改.

汞日志--date选项没有做什么,我需要.它仅根据提交日期细化选择.所以,hg log --date -1让我自昨天以来提交了修订版,但是没有提交修订版,比如三天前,但是今天只推送到了这个仓库.

如果我能找到不到24小时前到达回购的最早版本的修订号(或id),那就可以了.但是我看不到任何东西 - 即使在hg帮助修改中 - 看起来它会起作用.

mercurial

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

NSData的内容是否单独引用计数?

我有一个大的malloc'd区域,我想包装在NSData对象中.一段时间后,我制作了该NSData对象的副本.我希望两个NSData对象能够独立生存.ARC负责重新计算NSData对象本身,但我试图澄清所包含的malloc'd区域的生命周期.这是一个代码草图:

float* cubeData = (float*)malloc(cubeDataSize);
printf("cubeData=%p\n", cubeData);
// cubeData=0x01beef00

for (...) { /* fill the cubeData array */ }

NSData* data = [NSData dataWithBytesNoCopy:cubeData length:cubeDataSize
  freeWhenDone:YES];

NSData* data2 = [data copyWithZone:nil]

printf("data.bytes=%p data2.bytes=%p\n", data.bytes, data2.bytes);
// data.bytes=0x01beef00 data2.bytes=0x01beef00
Run Code Online (Sandbox Code Playgroud)

对我来说没关系,copyWithZone不会对malloc'd区域[NSData dataWithData:]进行深度复制- 如果我想要深层复制,我可以使用它.我不清楚(我不确定如何最好地测试)是哪个NSData对象拥有底层的malloc缓冲区?如果他们都持有对malloc缓冲区的引用(使用某种形式的不透明引用计数)那就太棒了!但是如果在释放data对象时释放malloc'd缓冲区(如所暗示的那样freeWhenDone:YES),data2则会出现问题.

有人可以解释NSData在这种情况下做了什么吗?或者,有人可以建议一个明确的测试,以证明自己发生了什么?

memory cocoa cocoa-touch objective-c ios

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

在Mac上弹出非存储USB设备

我有一台Mac运行VirtualBox和Win 8.1客户端VM.

我有一个程序在VM中运行,需要访问USB加密狗 - 注意,而不是存储设备!遗憾的是,每当Mac重新启动时它都会抓住加密狗,因此在VM可以使用它之前,远程指针必须将其从Mac上物理移除并再次插入.

有没有办法以编程方式从Mac中弹出(实际上,当然不是物理上)这样的USB设备,以便VM可以接管所有权?我很乐意深入研究I/O Kit或者可能需要Cocoa中的任何框架才能实现这一目标.如果这显然是不可能的,我宁愿不开始.

这个问题答案与我正在寻找的类似,但第6步是"从物理机中删除USB设备".我试图避免手动摆弄物理硬件,以便我可以自动化该过程.

macos usb virtualbox

5
推荐指数
0
解决办法
451
查看次数

有没有办法将spirit :: lex字符串标记的内容与spirit :: qi语法中的文字进行匹配

我正在编写DSL并使用Boost Spirit词法分析器来标记我的输入.在我的语法中,我想要一个类似于此的规则(tok词法分析器在哪里):

header_block =
    tok.name >> ':' >> tok.stringval > ';' >>
    tok.description >> ':' >> tok.stringval > ';'
  ;
Run Code Online (Sandbox Code Playgroud)

而不是为语言指定保留字(例如"name","description")并处理词法分析器和语法之间的同步,我想只是将匹配的所有内容标记[a-zA-Z_]\w*为单个标记类型(例如tok.symbol),并让语法梳理出来.如果我没有使用词法分析器,我可能会这样做:

stringval = lexeme['"' >> *(char_ - '"') >> '"'];
header_block =
    lit("name") >> ':' >> stringval > ';' >>
    lit("description") >> ':' >> stringval > ';'
  ;
Run Code Online (Sandbox Code Playgroud)

使用词法分析器,我可以编译以下规则,但当然它匹配的比我想要的多 - 它不关心特定的符号值"name"和"description":

header_block =
    tok.symbol >> ':' >> tok.stringval > ';' >>
    tok.symbol >> ':' >> tok.stringval > ';'
  ;
Run Code Online (Sandbox Code Playgroud)

我正在寻找的是这样的:

header_block = …
Run Code Online (Sandbox Code Playgroud)

c++ dsl boost-spirit boost-spirit-qi boost-spirit-lex

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

如何过滤SCons Glob结果?

我有时想要从SCon中的Glob结果中排除某些源文件.通常是因为我想用不同的选项编译该源文件.像这样的东西:

objs = env.Object(Glob('*.cc'))
objs += env.Object('SpeciallyTreatedFile.cc', CXXFLAGS='-O0')
Run Code Online (Sandbox Code Playgroud)

当然,这会给SCons带来问题:

scons: *** Two environments with different actions were specified
       for the same target: SpeciallyTreatedFile.o
Run Code Online (Sandbox Code Playgroud)

我通常使用以下习语解决这个问题:

objs = env.Object([f for f in Glob('*.cc')
  if 'SpeciallyTreatedFile.cc' not in f.path])
Run Code Online (Sandbox Code Playgroud)

但这很丑陋,如果要过滤掉多个文件,那就更加丑陋了.

有更明确的方法吗?

scons

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