小编ang*_*son的帖子

Mercurial如何与许多开发人员合作?

我看看一些已知产品的Mercurial存储库,比如TortoiseHgPython,虽然我可以看到多个人提交更改,但时间线总是看起来很干净,只有一个分支向前发展.

但是,假设您有14个人在使用相同的产品,那么在任何时候都不会很快陷入14个并行分支的分支噩梦吗?

举例来说,只有两个人,并在变更X的产品,现在开发商都开始在星期一早上独立功能的工作,所以开始都具有相同父变更.

当他们提交时,我们现在有两个分支,然后有14个人,我们很快会有10个(可能不是14个)分支需要合并回默认值.

或者......我在这里看不到什么?也许这不是一个真正的问题?


编辑:我看到对于我在这里真正要求的内容存在一些困惑,所以让我澄清一下.

我完全清楚地知道Mercurial可以轻松处理多个分支和合并,并且正如一个答案所述,即使人们处理相同的文件,他们也不会经常在相同的行上工作,即使这样,冲突也很容易处理.我也知道,如果两个人最终创建了一个合并地狱,因为他们在相同的文件中更改了很多相同的代码,这里有一些整体规划失败,因为我们已经将两个功能放在两个开发人员的完全相同的位置,而不是尝试他们一起工作,或者只是首先给两个开发人员.

所以那不是它.

我很好奇的是这些开源项目如何管理这样一个干净的历史.对我来说并不重要(正如一条评论所想的),历史是清晰的,我的意思是,我们确实并行工作,存储库能够反映出来,更好(在我看来),然而这些存储库我是我看着没有那个.他们似乎正在使用Subversion模型,在更新和合并之前你无法提交,在这种情况下,历史只是一条直线.

那他们怎么做呢?

他们是否"重新调整"这些变化,以便它们看起来跟随分支的最新提示,即使它们最初在分支历史中有所回复?移植更改集使它们看起来"已经在主分支中开始提交?

或者我看过的项目要么是如此缓慢(目前我没有在历史中看得太远)添加新事物,实际上他们一次只能为一个人工作?

或者他们是否正在向一位审核然后整合的中央维护者推动更改?它看起来并不像那样,因为我看到的许多项目在变更集上都有不同的名称.

mercurial branch

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

在没有找到模块的32位机器上,.NET 4.0中的SetWindowsHookEx失败了吗?

我在这个页面上发现了类似的问题,但我似乎无法弄清楚如何解释答案或弄清楚它们是否真的重复.

以下是我发现的可能重复项,并附有评论:

Hans Passant对最后一个删除答案的评论如下:

你在使用.NET 4.0吗?它的CLR改变了程序集的加载方式,不再有LoadLibrary调用,也没有模块句柄.使用GetEntryAssembly()代替另一种修复. - 汉斯帕斯特5月5日19:43

那么,这里的字是什么?你在使用.NET 4.0吗?您是否尝试使用LoadLibrary("user32.dll")来获取可用的DLL句柄? - Hans Passant 5月6日15:43

我很确定我不需要这样做,但显然我不是百分百肯定.如果我需要更改它,我留下的问题是,为什么它适用于64位操作系统,在编译时Any CPU,但在任何配置中都不适用于32位.

如果加载.NET程序集确实发生了一些变化,那么我没有得到类库的正确句柄,我有以下问题:

  • 有没有什么方法可以欺骗我做我想要的,而不必降级到.NET 3.5或将钩子库更改为不受管理?
  • 为什么它在64位操作系统上运行时有效,而在32位运行时无效?

背景

我在.NET 4.0中构建了一个程序,它使用带有WH_KEYBOARD_LL钩子类型的SetWindowsHookEx来捕获按键.这在我的64位Windows 7上运行良好,但在32位Windows 7上安装键盘挂钩时崩溃时出现"找不到模块".

这是我尝试过的:

  • 编译为x86,在64位操作系统上运行,崩溃时出现"找不到模块"
  • 编译x86,在32位操作系统上运行,崩溃
  • 编译任何CPU,在64位操作系统上运行,运行良好
  • 编译任何CPU,在32位操作系统上运行,崩溃
  • 切换到.NET 3.5并重复上述四种情况,它们都有效

我宁愿不将我的代码切换到.NET 3.5,因为我使用了一些类库来简化工作,而最新的代码只在.NET 4.0中.

如果需要,可以下载包含Visual Studio 2010项目的.ZIP文件,也可以粘贴以下两个文件.

要重新创建是否要沿着该路线前进:

  1. 创建一个新的控制台项目.NET 4.0
  2. 添加另一个类库项目,也就是.NET 4.0
  3. 从控制台程序项目添加对类库项目的引用
  4. 将下面的Program.cs内容粘贴到控制台项目中的Program.cs文件中
  5. 将下面的Hook.cs内容粘贴到类库项目中的文件中.您可以将其粘贴到Class1.cs默认文件中,或添加另一个文件.你不能把它放到控制台项目中

然后构建并运行,测试各种配置.

Program.cs中

using System;
using HookLib;

namespace HookTest
{
    class Program
    {
        static void Main() …
Run Code Online (Sandbox Code Playgroud)

64-bit 32-bit .net-4.0 .net-3.5 setwindowshookex

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

流畅的界面和漏洞抽象

什么是流畅的界面?我找不到一个好的定义,但我得到的只是我不熟悉的语言中的长代码示例(例如C++).

另外,什么是漏洞抽象?

谢谢

oop fluent-interface leaky-abstraction

13
推荐指数
4
解决办法
1798
查看次数

为什么C#collection-properties在调用它们的属性时没有被标记为过时?

我试图将类上的集合属性标记为Obsolete以查找所有出现并在我的警告列表中保留缩小的事项列表,因为我们需要用其他东西替换此集合属性.


编辑:我已通过Microsoft Connect提交此问题,问题#417159.

编辑16.11.2010:在编译.NET 3.5和4.0时,验证现在可以在C#4.0编译器中使用.我在发布的代码中收到4个警告,包括评论"Not OK?"的警告.


然而,令我惊讶的是,该列表只包含了一些内容,远远少于我所知道的,并且spotcheck告诉我,由于某种原因,警告列表中的编译器并不总是将该属性的使用标记为过时.

这是一个示例程序,可以在Visual Studio 2008中编译.

请注意标记为#1-#4的末尾附近的四行,其中,我希望所有人都报告所使用的属性已过时,但#3不是,而且似乎如果我继续前进直接对集合属性或方法,属性本身的使用不会被标记为过时.请注意,#3和#4引用相同的属性,#4标记为使用过时的属性,而#3则不是.测试显示,如果在表达式中,我访问属性返回的集合的属性或方法,编译器不会抱怨.

这是一个错误,还是我不知道的C#编译器的"隐藏的宝石"?

using System;
using System.Collections.Generic;

namespace TestApp
{
    public abstract class BaseClass
    {
        [Obsolete]
        public abstract String Value
        {
            get;
        }

        [Obsolete]
        public abstract String[] ValueArray
        {
            get;
        }

        [Obsolete]
        public abstract List<String> ValueList
        {
            get;
        }
    }

    public class DerivedClass : BaseClass
    {
        [Obsolete]
        public override String Value
        {
            get
            {
                return "Test";
            }
        }

        [Obsolete]
        public override String[] ValueArray
        {
            get …
Run Code Online (Sandbox Code Playgroud)

c# properties obsolete

13
推荐指数
2
解决办法
2277
查看次数

使用Intellisense的开源C#语法编辑器

任何人都可以建议我一个良好的开源C#代码编辑器控件,语法高亮和intellisense在我的应用程序中使用.我不是要求任何IDE,如VS或#develop,我只需要一个winform代码编辑器控件,以便我可以在我的应用程序中使用它来编写脚本.能告诉我一个好的......

我找到了ScintillaNET,但我想要一些其他选择..

.net c# intellisense syntax-highlighting editor

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

如何设置div的样式以使内容的整个宽度具有背景颜色,而不仅仅是显示的宽度?

我有一个HTML页面,为了这个问题看起来像这样:

<html>
<head>
<style>
div { width: 100%; }
.success { background-color: #ccffcc; }
</style>
</head>
<body>
<div class="success">
<nobr>This is a very long line. This is a very long line. This is a very long line. This is a very long line. This is a very long line. This is a very long line. This is a very long line. This is a very long line. This is a very long line. This is a very long line. This …
Run Code Online (Sandbox Code Playgroud)

html css background-color

13
推荐指数
2
解决办法
20万
查看次数

为什么从Async CTP/Release中删除"SwitchTo"?

我今天尝试使用SwitchTo方法切换到GUI线程,并发现我解除它的示例不起作用,仅仅是因为该方法不存在.

然后我在这里发现了这个模糊:

我们摆脱它的原因是因为它太危险了.另一种方法是在TaskEx.Run中捆绑你的代码......

我的问题很简单:为什么它很危险?使用它会带来哪些特定的危险?

请注意,我确实阅读了该帖子的其余部分,因此我确实理解这里存在技术限制.我的问题仍然是,如果我意识到这一点,为什么它很危险

我正在考虑重新实现帮助方法来给我指定的功能,但如果有一些根本性的破坏,除了有人认为它是危险的,我不会这样做.

具体来说,非常天真,这是我如何考虑实现所需的方法:

public static class ContextSwitcher
{
    public static ThreadPoolContextSwitcher SwitchToThreadPool()
    {
        return new ThreadPoolContextSwitcher();
    }

    public static SynchronizationContextSwitcher SwitchTo(this SynchronizationContext synchronizationContext)
    {
        return new SynchronizationContextSwitcher(synchronizationContext);
    }
}

public class SynchronizationContextSwitcher : INotifyCompletion
{
    private readonly SynchronizationContext _SynchronizationContext;

    public SynchronizationContextSwitcher(SynchronizationContext synchronizationContext)
    {
        _SynchronizationContext = synchronizationContext;
    }

    public SynchronizationContextSwitcher GetAwaiter()
    {
        return this;
    }

    public bool IsCompleted
    {
        get
        {
            return false;
        }
    }

    public void OnCompleted(Action action) …
Run Code Online (Sandbox Code Playgroud)

c# asynchronous async-await async-ctp

13
推荐指数
2
解决办法
1114
查看次数

NUnit和TestCaseAttribute,参数的交叉连接可能吗?

我有一个测试各种情况的单元测试,如下所示:

public void Test1(Int32 a, Int32 b, Int32 c)
Run Code Online (Sandbox Code Playgroud)

假设我想创建没有循环的测试代码,所以我想使用TestCase来指定这样的参数:

[TestCase(1, 1, 1)]
public void Test1(Int32 a, Int32 b, Int32 c)
Run Code Online (Sandbox Code Playgroud)

我有可能用这个属性这样说:

  • 对于第一个参数,这是一组值
  • 对于第二个参数,这是一组值
  • 对于第三个参数,这是一组值
  • 现在,测试上面的所有组合

IE浏览器.这样的事情:

[TestCase(new[] { 1, 2, 3, 4 }, new[] { 1, 2, 3, 4 }, new[] { 1, 2, 3, 4 })]
public void Test1(Int32 a, Int32 b, Int32 c)
Run Code Online (Sandbox Code Playgroud)

看起来不像,但也许我忽略了什么?

c# nunit testcaseattribute

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

.NET ListView列顺序问题

我在表单中遇到问题,我按以下顺序将列添加到.NET ListView控件:

A   | B   | C   | D
Run Code Online (Sandbox Code Playgroud)

AD列的显示索引按顺序为0-3,但它们显示的顺序错误:

A   | B   | D   | C
            ^-----^  these are switched at runtime
Run Code Online (Sandbox Code Playgroud)

注意:在设计时,一切看起来都像我想要的那样.

我猜,但我不知道为什么,这是因为我在添加了列D之后将列C添加到ListView.我在列编辑器对话框中将其移动了一个档位,调整了显示索引,并检查了创建在.Designer.cs文件中,按顺序排列AD顺序.

然而问题仍然存在.

另请注意:这不仅仅是标题标签问题,还会交换列,包括其数据.数据按我希望显示的顺序添加,但最后两列是交换的.

还有什么我需要检查以弄清楚为什么我的一个列处于错误的位置?

我解决了这个问题.由于某种原因,即使我在对话框中设置了DisplayIndex属性,也不会保留它.

如果我完全关闭了表单,并在Visual Studio中重新打开它,那么它就会转移.显然,对话框编辑器没有将这些属性检测为"已更改",因此保存机制也不关心为我保存它.

添加列的代码如下:

this.lvResult = new System.Windows.Forms.ListView();
this.colResultId = new System.Windows.Forms.ColumnHeader();
this.colResultTitle = new System.Windows.Forms.ColumnHeader();
this.colResultLanguage = new System.Windows.Forms.ColumnHeader();
this.colResultTags = new System.Windows.Forms.ColumnHeader();
// 
// lvResult
// 
this.lvResult.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
            | System.Windows.Forms.AnchorStyles.Left)
            | System.Windows.Forms.AnchorStyles.Right)));
this.lvResult.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
this.colResultId,
this.colResultTitle,
this.colResultLanguage,
this.colResultTags});
this.lvResult.FullRowSelect = true;
this.lvResult.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable;
this.lvResult.HideSelection = …
Run Code Online (Sandbox Code Playgroud)

.net listview

12
推荐指数
2
解决办法
4748
查看次数

基于Gomoku阵列的AI算法?

返回的方式(想想20多年)我在一本杂志中遇到了一个Gomoku游戏源代码,我为我的电脑输入了它并且玩得很开心.

游戏很难赢,但计算机AI的核心算法非常简单,并没有考虑到很多代码.我想知道是否有人知道这个算法并且有一些关于它的源或理论的链接.

我记得的是它基本上分配了一个覆盖整个电路板的阵列.然后,无论何时我或它放置一块,它都会在板上的所有位置添加一些重量,这些位置可能会影响该块.

例如(注意权重肯定是错误的,因为我不记得那些):

1   1   1
 2  2  2
  3 3 3
   444
1234X4321
  3 3 3
 2  2  2
1   1   1
Run Code Online (Sandbox Code Playgroud)

然后,它只是扫描阵列中的最低或最高值的开放位置.

我模糊的事情:

  • 也许它有两个数组,一个用于我,一个用于自身,并且有一个最小/最大权重?
  • 算法可能还有更多,但其核心基本上是数组和加权数字

这对任何人都响铃吗?任何人都有任何有用的东西吗?

algorithm artificial-intelligence weighted gomoku

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