小编sha*_*tor的帖子

查看一个文件上两个变更集之间的差异

我在Mercurial中跟踪了一个文件.我可以看到它的历史hg log.如何查看最新版本与最后一个签入变更集之间的差异?

mercurial

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

使用Fiddler模​​拟网络速度

我正在使用Fiddler并希望模拟不同的网络速度

是否有任何已公布的数据可用于使用延迟值模拟不同的速度?

以下是Fiddler的默认代码,用于模拟56kb调制解调器速度.

if (m_SimulateModem) {
    // Delay sends by 300ms per KB uploaded.
    oSession["request-trickle-delay"] = "300"; 
    // Delay receives by 150ms per KB downloaded.
    oSession["response-trickle-delay"] = "150"; 
}
Run Code Online (Sandbox Code Playgroud)

我想要256kbps,512kbps,1Mbps等延迟值...

fiddler

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

在没有事件消息文件的情况下在WiX中创建EventLog源

我在这里那里看到了一些关于使用WiX创建事件日志源的问题.令我困惑的是为什么util:EventSource/@EventMessageFile需要.当您不需要消息文件来编写事件日志条目时,必须指定它是令人讨厌的,并且.NET提供的抽象System.Diagnostics.Trace不会暴露使用它的能力.

标准建议似乎是使用目录搜索将属性设置为框架 EventLogMessages.dll,但没有人重复这个咒语给它任何理由.

如果没有使用随WiX提供的(经过测试的,强大的)自定义操作,有没有办法解决这个问题?

为什么不使用事件日志这方面的托管应用程序的作者会(显然)毫无意义地引用Framework DLL而不是他们自己的可执行文件?

.net wix wix3 event-log

9
推荐指数
1
解决办法
1615
查看次数

如何从已签名的.Net程序集中读取数字签名信息?

我正在编写一个汇编信息应用程序,用于我们的软件构建过程,并尝试从已签名的.Net程序集中读取数字签名信息.

我想在我的C#代码中执行Windows资源管理器可以通过右键单击已签名的程序集并选择"数字签名"选项卡然后单击"详细信息"按钮来执行的操作.例如

Windows 7资源管理器可以通过右键单击文件属性来完成

数字签名细节

有没有人知道如何在C#中以编程方式执行此操作?我目前正在使用Mono Cecil库从程序集中获取其余信息.非常感谢您的帮助.

c# signed authenticode digital-signature x509certificate

9
推荐指数
1
解决办法
6526
查看次数

为什么我不能发送这个IP包?

我正在尝试使用c#发送IP数据包.

    destAddress = IPAddress.Parse("192.168.0.198"),
    destPort = 80;

    // Create a raw socket to send this packet
    rawSocket = new Socket(AddressFamily.InterNetwork, SocketType.Raw, ProtocolType.IP);

    // Bind the socket to the interface specified
    IPEndPoint iep = new IPEndPoint(IPAddress.Parse("192.168.0.140"),0);
    rawSocket.Bind(iep);

    // Set the HeaderIncluded option since we include the IP header
    rawSocket.SetSocketOption( socketLevel, SocketOptionName.HeaderIncluded, 1 );

    // Send the packet!
    int rc = rawSocket.SendTo(builtPacket, new IPEndPoint(destAddress, destPort));
    Console.WriteLine("sent {0} bytes to {1}", rc, destAddress.ToString());
Run Code Online (Sandbox Code Playgroud)

builtPacket的内容如下所示.这是一个包含TCP SYN数据包的IP数据包(这就是我认为我创建的).

45 00 00 28 00 00 00 00 …

c# sockets tcp raw-sockets

8
推荐指数
1
解决办法
1131
查看次数

为什么mercurial子存储库被认为是最后的特征

我对一般的源控制和专门的mercurial相对较新.在我的工作场所,我们使用mercurial.在团队中是正常的,不同的人在不同但相关的项目上工作.这个想法是有一个主要的回购(对于项目X)和子项目的子项目.

实现这一点不是问题.但我很好奇为什么在mercurial的文档中他们考虑使用subrepos功能,"最后的功能".

version-control mercurial

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

Dispatcher不会使用C#Windows窗体应用程序

我有一个带有进度条的C#Windows窗体应用程序.我想根据某些方法状态动态地进行.我在一个单独的类中有该方法,并为该方法创建一个新线程,并使用委托将该方法的状态传递给父线程.

我可以在WPF应用程序中解决相同的情况progressbar.Dispatcher但在Windows窗体应用程序中没有Dispatcher,即使我使用System.Threading命名空间.

progressbar.Dispatcher 似乎只在WPF应用程序中可用.

c# multithreading dispatcher windows-applications

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

使用并发字典 - 线程安全集合修改

最近,当使用通用字典时,我遇到了以下异常

发生InvalidOperationException.一个集合被修改

我意识到这个错误主要是因为我正在使用的静态字典上的线程安全问题.

一点背景:我目前有一个应用程序有3种不同的方法与这个问题有关.

  1. 方法A使用字典迭代foreach并返回一个值.
  2. 方法B将数据添加到字典中.
  3. 方法C更改字典中键的值.

有时在迭代字典时,也会添加数据,这是导致此问题的原因.我继续在foreach我的代码中获取此异常,我遍历字典的内容.为了解决这个问题,我用通用字典取代了ConcurrentDictionary,这里是我所做的细节.

目标:我的主要目标是完全删除异常

对于方法B(向字典添加新密钥),我替换.AddTryAdd

对于方法C(更新字典的值),我没有做任何更改.代码的草图如下:

  static public int ChangeContent(int para)
  {
      foreach (KeyValuePair<string, CustObject> pair in static_container)
      {
             if (pair.Value.propA != para ) //Pending cancel 
             {
                pair.Value.data_id = prim_id;    //I am updating the content
                return 0;

             }
      }
     return -2;
  }
Run Code Online (Sandbox Code Playgroud)

对于方法A - 我只是迭代字典,这是运行代码停止的地方(在调试模式下),Visual Studio告诉我这是发生错误的地方.我使用的代码类似于以下

    static public CustObject RetrieveOrderDetails(int para)
    {
            foreach (KeyValuePair<string, CustObject> pair in static_container)
            {                   
                if (pair.Value.cust_id.Equals(symbol))
                {
                    if (pair.Value.OrderStatus …
Run Code Online (Sandbox Code Playgroud)

c# concurrency

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

重写的Equals方法不会被HashSet调用

我有一个名为'x'的类,它覆盖Equals(),如下所示:

    public override bool Equals(object obj)
    {
        if(obj is x)
        {
            return ((obj as x).key == this.key);
        }
        return false;
    }
Run Code Online (Sandbox Code Playgroud)

当以下扩展方法尝试使用上面的覆盖进行比较时,不会使用Equals():

    public static bool Contains(this HashSet<x> set, char key)
    {
        x SearchKey = new x(key);
        return set.Contains(SearchKey);
    }
Run Code Online (Sandbox Code Playgroud)

只有当我修改extensio方法中的第一行时,我才会得到预期的行为,如下所示:

x SearchKey = new x(key);
Run Code Online (Sandbox Code Playgroud)

你能解释一下这种行为吗?

我曾经预料到,Equals()将被调用x本身的实例,因为它是Object的一个子集.我错过了什么?

c#

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

STLifying C++类

我正在尝试编写一个包含几个std :: vectors作为数据成员的类,并提供了一个vector的接口子集来访问它们:

class Mesh
{
public:
private:
  std::vector<Vector3> positions;
  std::vector<Vector3> normals;
  // Several other members along the same lines
};
Run Code Online (Sandbox Code Playgroud)

你可以用网格做的主要事情是添加位置,法线和其他东西.为了允许类似STL的方式访问Mesh(从数组,其他容器等添加),我很想要添加这样的方法:

public:
  template<class InIter>
  void AddNormals(InIter first, InIter last);
Run Code Online (Sandbox Code Playgroud)

问题是,根据我对模板的理解,这些方法必须在头文件中定义(似乎有意义;没有具体的迭代器类型,编译器不知道如何生成目标代码用于明显的实现方法).

  1. 这实际上是个问题吗?我的直觉反应是不要在头文件中粘贴大量的代码,但我的C++有点生疏,玩具示例之外的STL经验不多,而且我不确定"可接受的"C++编码实践是什么.

  2. 是否有更好的方法来公开此功能,同时保留类似STL的通用编程风格?一种方式是这样的:

(结束名单)

class RestrictedVector<T>
{
public:
  RestrictedVector(std::vector<T> wrapped)
    : wrapped(wrapped) {}

  template <class InIter>
  void Add(InIter first, InIter last)
  {
    std::copy(first, last, std::back_insert_iterator(wrapped));
  }

private:
  std::vector<T> wrapped;
};
Run Code Online (Sandbox Code Playgroud)

然后在Mesh上公开这些实例,但是这开始有点过度工程:P非常感谢任何建议!

c++ stl class-design

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