问题列表 - 第6491页

git DAG的增量线性化

我是GitX的作者.GitX的一个功能是分支的可视化,这可以在这里看到.

此可视化目前通过读取以正确顺序从git发出的提交来完成.对于每次提交,父母都是已知的,因此以正确的方式构建通道相当容易.

我想通过使用自己的提交池并自己线性化提交来加快这个过程.这允许我重用现有的已加载提交并允许git更快地发出提交,因为它不必以正确的顺序发出它们.

但是,我不确定使用什么算法来实现这一目标.重要的是,构建是增量的,因为提交的加载可能需要很长时间(100,000次提交> 5秒,应该全部显示).

Gitk已经以同样的方式,并有一个补丁在这里,显示它是如何实现的,但我的TCL技能薄弱,补丁是不是很详尽的注释和有点难以遵循.

我也希望这个算法有效,因为它必须处理数十万次提交.它也必须显示在表中,因此访问特定行很快很重要.

我将描述我到目前为止的输入,我想要的输出和一些观察.

输入:

  • 我有一个哈希表形式的当前提交池,它将commit id映射到提交对象.此池不必完整(必须提交所有提交)
  • 我在git的新提交中有一个单独的线程加载,每次加载新提交时都可以调用一个回调.提交没有保证顺序,但在大多数情况下,下一次提交是前一次提交的父级.
  • 提交对象具有自己的修订版ID以及其所有父项的修订版ID
  • 我有一个应该列出的分支头列表.也就是说,不应该显示DAG的单个"顶部".也不必是单个图根.

输出:

  • 我需要按拓扑顺序线性化这些提交.也就是说,在列出其父项后,无法列出提交.
  • 我还需要在上面的屏幕截图中看到的"分支线".这些可能需要预先计算,因为大多数都依赖于他们的孩子.

几点评论:

  • 有必要重新定位提交列表.例如,我们可能必须提交不相关的(分支头),直到提交显示使一个头成为另一个头的祖先.
  • 必须显示多个分支提示
  • 这个过程是增量的很重要,因此在数据仍在加载时至少可以获得部分视图.这意味着必须在中途插入新数据并且必须重新调整分支线.

git visualization objective-c directed-acyclic-graphs

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

如何在MySQL中创建行生成器?

有没有办法生成可以在JOIN中使用的任意数量的行,类似于Oracle语法:

SELECT LEVEL FROM DUAL CONNECT BY LEVEL<=10
Run Code Online (Sandbox Code Playgroud)

mysql sql generator

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

使用boost :: shared_ptr时有什么潜在的危险?

使用时,你有什么方法可以用脚射击自己boost::shared_ptr?换句话说,当我使用时,我必须避免哪些陷阱boost::shared_ptr

c++ boost pointers shared-ptr

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

如果使用Perl不存在目录,我该如何创建目录?

目前,我的Perl输出是硬编码的,可以转储到以下Unix目录中:

my $stat_dir = "/home/courses/" . **NEED DIR VAR HERE**;
Run Code Online (Sandbox Code Playgroud)

文件名是这样构建的:

$stat_file = $stat_dir . "/" . $sess.substr($yr, 2, 2) . "_COURSES.csv";
Run Code Online (Sandbox Code Playgroud)

我需要一个类似的方法来构建Unix目录,但我需要在创建它们之前先检查它们是否存在.

如何对$ stat_file进行自动编号(修订),以便当这些文件被泵入同一目录时,它们不会覆盖或附加到目录中的现有文件?

directory perl

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

检查TCP连接是否处于活动状态的最佳方法

给定IP地址列表如何以编程方式检查本地计算机是否仍具有到这些IP地址的活动TCP连接?我正在使用C#.

.net c# connection tcp ip-address

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

python中的嵌套try语句?

有没有更好的方法来做到以下几点:

try:
    a.method1()
except AttributeError:
    try:
        a.method2()
    except AttributeError:
        try:
            a.method3()
        except AttributeError:
            raise
Run Code Online (Sandbox Code Playgroud)

它看起来很讨厌,我宁愿不这样做:

if hasattr(a, 'method1'):
    a.method1()
else if hasattr(a, 'method2'):
    a.method2()
else if hasattr(a, 'method3'):
    a.method3()
else:
    raise AttributeError
Run Code Online (Sandbox Code Playgroud)

保持最高效率.

python try-catch

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

透视投影 - 帮助一个菜鸟

我希望确定3D空间(x,y,z)中点的2D屏幕坐标(x,y).

我希望投射的点是由GPS坐标和海拔高度表示的真实世界点.

例如:Point(Lat:49.291882,Long:-123.131676,Height:14m)

摄像机位置和高度也可以确定为ax,y,z点.我还有相机的标题(罗盘度),它的倾斜度(地平线上方/下方)和滚动(绕z轴).

我没有3D编程的经验,因此,我已经阅读了透视投影的主题,并了解到它需要矩阵,变换等知识 - 所有这些都使我目前感到困惑.

有人告诉我,OpenGL可能用于构建真实世界点的3D模型,设置相机方向并检索3D点的2D坐标.

但是,我不确定使用OpenGL是否是解决此问题的最佳解决方案,即使它是我不知道如何创建模型,设置相机等

有人可以提出解决问题的最佳方法吗?如果OpenGL是一个可行的解决方案,我必须使用OpenGL ES,如果这有任何区别.哦,无论我选择哪种解决方案,都必须快速执行.

谢谢你的帮助

java opengl projection

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

从shell脚本中的目录中选择随机文件的最佳方法

从shell脚本中的目录中选择随机文件的最佳方法是什么?

这是我在Bash中的解决方案,但我会对在Unix上使用的更便携(非GNU)版本非常感兴趣.

dir='some/directory'
file=`/bin/ls -1 "$dir" | sort --random-sort | head -1`
path=`readlink --canonicalize "$dir/$file"` # Converts to full path
echo "The randomly-selected file is: $path"
Run Code Online (Sandbox Code Playgroud)

有人还有其他想法吗?

编辑: lhunath对解析提出了一个很好的观点ls.我想这取决于你是否想要携带.如果您有GNU findutils和coreutils,那么您可以:

find "$dir" -maxdepth 1 -mindepth 1 -type f -print0 \
  | sort --zero-terminated --random-sort \
  | sed 's/\d000.*//g/'
Run Code Online (Sandbox Code Playgroud)

哇,这很有趣!此外,它更符合我的问题,因为我说"随机文件".但是很幸运的是,现在很难想象在安装了GNU而不是Perl 5的情况下部署的Unix系统.

random bash shell file

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

抑制Outlook现场打印

我们为Outlook编写了一个附加组件,用于将电子邮件存入我们的CRM系统.在此过程中,它将Outlook消息ID作为UserField保存在消息本身上.

例如.

currentUserProperty = Constants.APPLICATION_NAME + "EntryID";
mailItem.UserProperties.Add(currentUserProperty,
       Microsoft.Office.Interop.Outlook.OlUserPropertyType.olText,
       Missing.Value,
       Missing.Value).Value = entryId;
Run Code Online (Sandbox Code Playgroud)

不幸的是,这是一个HUUUGGEE号码,很像:

"00000000D502D779150E2F4580B1AADDF04ECDA6070097EF5A1237597748A4B4F9BFF540020800000006E9E4000068BB5B6DFC36924FAEC709A17D056583000002DE0E350000"

问题是,当用户打印消息时,Outlook坚持要包含此字段(在From/To下面)并且因为它没有空格,所以无法包装ID并压缩A4页面直到它可以水平放置.这会产生极小的电子邮件打印输出.

有什么方法可以纠正这个吗?我曾想过用一个空格分隔的覆盖字段OriginalEntryID(导致问题的那个),但是我从COM层得到一个异常.我的下一步是尝试抑制Outlook上此和其他用户定义字段的输出静止.

有谁知道如何实现这一目标?

c# outlook

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

使用time.h获取C中的当前小时

总新手问题在这里; 我提前道歉.

假设我有一个用C编写的守护进程,它每五分钟左右唤醒一次,如果输入队列中有任何内容,则进行一些处理,然后再回到睡眠状态.现在假设有一些处理,它只需要在某个(可配置的)时间之后 - 例如,下午2点(和午夜之前)).

在C中,将当前时间小时变为int变量的最快,最好的方法是什么,以便可以轻松检查 - 以确定实际上是否在今天下午2点之后?

c time

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