小编180*_*ION的帖子

图搜索算法

我正在寻找具有一些不寻常属性的图算法.

图中的每条边都是"向上"边缘或"向下"边缘.

有效路径可以是无限数量的"向上",然后是无限数量的"向下",反之亦然.然而,它不能多次改变方向.

例如,有效路径可能是A"向上"B"向上"C"向下"E"向下"F无效路径可能是A"向上"B"向下"C"向上"D

找到两个节点之间最短有效路径的好算法是什么?如何找到所有等长的最短路径?

graph-theory graph-algorithm

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

UIDocumentInteractionController不显示打印选项

我有代码显示如下文档:

documentInteractionController = [UIDocumentInteractionController interactionControllerWithURL:self.thisUrl];

NSString *pathExtension = [self.thisUrl pathExtension];
if (pathExtension) {
    NSString *UTI = (__bridge NSString*)UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, (__bridge CFStringRef)(pathExtension), NULL);
    if (UTI) {
        documentInteractionController.UTI = UTI;
    }
}
documentInteractionController.delegate = self;
[documentInteractionController presentOptionsMenuFromBarButtonItem:shareButton animated:YES];
Run Code Online (Sandbox Code Playgroud)

显示选项菜单时,它会显示可以打开文档的应用程序列表(例如消息),以及下面的操作列表.

选项菜单显示的列表操作与例如Mail应用程序中显示的菜单不同.

主要区别在于Mail应用程序显示"打印"选项,而我的选项菜单则没有.如何获取选项菜单以显示打印选项?

我的应用程序中显示的选项菜单

Mail中显示的选项菜单

编辑:我做了进一步测试,我实现了方法:

- (BOOL)documentInteractionController:(UIDocumentInteractionController *)controller canPerformAction:(SEL)action
{
  return YES;
}

- (BOOL)documentInteractionController:(UIDocumentInteractionController *)controller performAction:(SEL)action
{
  return YES; // or NO, doesn't matter
}
Run Code Online (Sandbox Code Playgroud)

这具有在弹出视图中显示"打印","复制"和"保存到相机胶卷"操作的效果.当我点击它们时没有发生任何事情,可能是因为我没有正确实施-performAction.我还在控制台日志中收到有关使用旧方法的警告.

这在某些方面是向后退一步,因为在添加这些方法之前,我无法再打印一些能够使用文档交互控制器正确打印的文档.

ios uidocumentinteraction

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

在使用$ variable和$ {variable}之间在正则表达式中传递变量时,Perl有什么区别

我正在审查一些用Perl编写的ClearCase触发器.我注意到在一些正则表达式中,变量既可以直接传递,也可以用大括号中的名称传递.

例如,我在触发器中有以下代码行:

if ($baseline !~ /^${component}_(|.*_)$phase\.\d+(|[a-z]|-\d+|${automateddigit})$/ &&
        $baseline !~ /^${project_root}_$phase\.\d+(|[a-z]|-\d+|${automateddigit})$/)
Run Code Online (Sandbox Code Playgroud)

$component,$phase,$automateddigit,$project_root都是变数.

为什么有些像正则表达式$variable一样传递${variable}了?

它是否来自它们的初始化方式?

以下是初始化它们的代码行:

($project = $ENV{CLEARCASE_PROJECT}) =~ s/\@.*$//;
($component = $ENV{CLEARCASE_COMPONENT}) =~ s/\@.*$//;

($project_root, $phase) = ($project =~ /^(.*)_(R\d+.*)$/);

exit(0) if (! $phase);

$phase .= ".0" if ($phase =~ /^R\d+$/);

$automateddigit = '';

$istream = `cleartool desc -fmt "%[istream]p" project:$ENV{CLEARCASE_PROJECT}`;

$componentlist = `cleartool desc -fmt "%[components]Cp" stream:$ENV{CLEARCASE_STREAM}`;
$componentsnbr = split(',', $componentlist);

if ($componentsnbr > 1) {
    $automateddigit .= …
Run Code Online (Sandbox Code Playgroud)

regex syntax perl triggers clearcase

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

与GCD和webView的死锁

我发现了一个似乎导致WebKit陷入僵局的问题.如果我从我的主线程运行此代码,我正确地看到一个警报.我可以点击警报上的"确定"按钮,它会解散并且一切正常:

[theWebView stringByEvaluatingJavaScriptFromString:@"alert('hi');"];
Run Code Online (Sandbox Code Playgroud)

如果我进行了一些修改,那么警报信息仍会出现,但是无法点击"确定"按钮 - 您无法关闭警报,如果您闯入应用程序,它将挂在stringByEvaluatingJavaScriptFromString通话中:

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
    dispatch_async(dispatch_get_main_queue(), ^{
        [theWebView stringByEvaluatingJavaScriptFromString:@"alert('hi');"];
    });
});
Run Code Online (Sandbox Code Playgroud)

这两者中唯一不同的是,在第二个中,它在调度队列的上下文中在主线程中运行JS.

另一方面,如果我执行以下操作,则不会发生挂起:

- (void) showHi:(id) it
{
    [(UIWebView*)it stringByEvaluatingJavaScriptFromString:@"alert('hi');"];
}

....

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
    [self performSelectorOnMainThread:@selector(showHi:) withObject:theWebView waitUntilDone:NO];
});
Run Code Online (Sandbox Code Playgroud)

有人可以对导致挂起的问题有所了解吗?

编辑:

相关问题:

使用dispatch_async或performSelectorOnMainThread在主线程上执行UI更改?
什么是主队列上的performSelectorOnMainThread和dispatch_async之间的区别?
Grand Central Dispatch(GCD)与performSelector - 需要更好的解释

非常相似的问题:

当使用GCD调用时,UIWebView stringByEvaluatingJavaScriptFromString在iOS5.0/5.1上挂起

webkit objective-c grand-central-dispatch ios

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

重新排序位置项列表

我有一个Request对象,其中包含一个Approvers列表.审批人具有名称和批准职位.

  1. 马修
  2. 标记
  3. 卢克
  4. 约翰

最终,请求将从Mathew开始并在John处结束.

我需要能够重新订购这些允许添加和删除,如下所述.

批准人可以 -

在某个位置添加 - 即.在第3位添加Peter,在这种情况下新订单将是

  1. 马修
  2. 标记
  3. 彼得
  4. 卢克
  5. 约翰

删除 - 即.删除标记新订单的情况

  1. 马修
  2. 卢克
  3. 约翰

编辑 - 即您可以将John的位置更改为1,在这种情况下新订单是

  1. 约翰
  2. 马修
  3. 标记
  4. 卢克

我已经提出了许多解决方案,但是没有一个是特别优雅的.

任何帮助将非常感激

c#

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

pthread-based event waking up only waiting threads

In my C++ program I have a class CEvent with trigger and wait member functions based on pthreads (running on Linux). Implementation is quite obvious (i.e. many examples online) if there is one waiting process. However now I need to satisfy the requirement that multiple threads are waiting on the event and should ALL wake up reliably when trigger() is called. As a second condition, only threads that were waiting when trigger() was called should wake up.

My current code: …

events pthreads

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

如何在纯托管C#中编写IE 8附加组件

我想为IE 8编写一个附加组件,但我想使用纯托管C#.这可能吗?我知道最长的时间我们只谈论C++.

c# internet-explorer add-in

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

存储对象列表

假设我有一个通用的Object类和一个通用的List类.我想维护这些对象的列表.我应该将它们存储为List<Object>List<Object*>

如果我使用List<Object>,我有一个方法,如:

if(some_condition) {
    Object obj;
    myObjectList.append(obj);
}
Run Code Online (Sandbox Code Playgroud)

而我的列表类只保留对该对象的引用,因此只要if语句终止,对象就会被销毁,并且我推送的对象变得无效.那么我最终做了类似的事情:

Object *obj = new Object;
myObjectList.append(*obj);
Run Code Online (Sandbox Code Playgroud)

这样它就不会被破坏.但现在这些物体是不可取的,不是吗?因为现在它们被安全地存储在List作为对象,而不是指向对象的指针,所以我不能在它们上调用delete ...或者当它们从列表中弹出时它们会自动被销毁吗?

在那种情况下,List<Object*>当我完成它们时,我应该使用并从列表中删除它们,不是吗?

如此困惑......我确信我在某处有一个根本的误解.

c++ pointers

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

如何根据条件运行一些gulp任务

假设我在gulpfile中有这个:

gulp.task('foo', ...);

gulp.task('bar', function () {
  if (something) {
    // how do I run task 'foo' here?
  }
});
Run Code Online (Sandbox Code Playgroud)

gulp

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

如何在OpenOffice中进行简单的邮件合并

我需要在OpenOffice中使用C++,VBScript,VB.Net或C#通过OLE或本机API进行简单的邮件合并.有没有好的例子?

c# c++ com ole openoffice.org

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