我目前正在评估常春藤,maven和buckminster,以简化我们的构建过程.概念上buckminster似乎是最先进的,但也有相当复杂的.
我无法在网上找到这么多的第一手经验,因此我向Stackoverflow社区提问.
我想知道是否有一种简单的方法来解析vb.net中的HTML.我知道HTML不是XML的sctrict子集,但如果可以这样对待它会很好.有没有什么可以让我在VB.net中以类似XML的方式解析HTML?
我是C#的新手,对使用命名空间的最佳实践感到好奇.
我有一个包含单个类库项目的解决方案,以及几个小型控制台应用程序项目.所有控制台应用程序项目都是解析命令行参数,并在库项目中调用不同的类.库项目使用标准的CompanyName.Tool约定.
我的问题是,既然给定控制台应用程序的唯一目的是库项目中的一个类,并且永远不会从另一个项目或类调用它,我是否需要将它放在命名空间中?这似乎没必要.
有人能给我一个很好的理由为什么在C#中链接的构造函数总是在任何构造函数体之前被调用?
.NET允许您在构造函数中的任何位置调用链式构造函数,那么为什么C#强制您在构造函数体执行之前执行它?
我曾写信给安德斯H并问过他,尽管他一定很忙,但他还是很乐意花时间回复.不幸的是,他设法回答了我实际上没有问过的问题(关于命名的构造函数.)
所以,出于好奇,我想我会在这里问,因为我个人认为这个限制没有一个好的理由,所以希望我会再教育:-)
只是为了澄清..NET CLR规则是必须调用1个构造函数,只有1个构造函数,并且只能调用一次.所以在CLR中这些都是有效的
public class Meh
{
public Meh()
{
Console.WriteLine("Meh()");
this("Hello");
}
public Meh(string message)
{
Console.WriteLine("Meh {0}", message);
base();
}
}
Run Code Online (Sandbox Code Playgroud)
但不是在C#
如何在Swing界面中创建切换图像按钮?我有两个图像,imageon.jpg和imageoff.jpg,我基本上想要一个可点击的元素来切换图像并触发一个事件.
更新:有没有办法覆盖图像周围通常的'铬'?我更喜欢简单的图像到里面有图像的按钮.
我有一个包含UNICODE-16字符串的文件,我想将其读入Linux程序.字符串是从Windows的内部WCHAR格式原始编写的.(Windows总是使用UTF-16吗?例如日文版)
我相信我可以使用原始读取和使用wcstombs_l进行转换来读取它们.但是,我无法确定要使用的语言环境.在我最新的Ubuntu和Mac OS X机器上运行"locale -a"会产生零区域设置,其名称中包含utf-16.
有没有更好的办法?
更新:正确的答案和下面的其他人帮助我指出使用libiconv.这是我用来进行转换的功能.我目前在一个类中将它转换为一行代码.
// Function for converting wchar_t* to char*. (Really: UTF-16LE --> UTF-8)
// It will allocate the space needed for dest. The caller is
// responsible for freeing the memory.
static int iwcstombs_alloc(char **dest, const wchar_t *src)
{
iconv_t cd;
const char from[] = "UTF-16LE";
const char to[] = "UTF-8";
cd = iconv_open(to, from);
if (cd == (iconv_t)-1)
{
printf("iconv_open(\"%s\", \"%s\") failed: %s\n",
to, from, strerror(errno));
return(-1);
}
// How much space do we …Run Code Online (Sandbox Code Playgroud) 假设我有一个变量"counter",并且有几个线程通过使用Interlocked访问和设置"counter"的值,即:
int value = Interlocked.Increment(ref counter);
Run Code Online (Sandbox Code Playgroud)
和
int value = Interlocked.Decrement(ref counter);
Run Code Online (Sandbox Code Playgroud)
我可以假设,Interlocked所做的更改将在所有线程中可见吗?
如果没有,我该怎么做才能使所有线程同步变量?
编辑:有人建议我使用volatile.但是当我将"计数器"设置为volatile时,会出现编译器警告"对volatile字段的引用不会被视为volatile".
当我阅读在线帮助时,它说:"通常不应使用ref或out参数传递易失性字段".
我使用Hudson自动测试一个非常大的重要产品.我想让我的测试主机能够运行尽可能多的并发构建,因为它们理论上会支持,除了excel-tests,它必须在每台机器上随时运行一个.任何数量的非excel测试都可以同时运行,但每台机器最多只能运行一次excel测试.
背景:
我的大多数测试都是正常的单元测试 - 我可以轻松地并行运行.遗憾的是,我的单元测试计划中的一个实质性且耗时的部分包括已在Excel中实现的测试.
您可能认为在Excel中实施测试很疯狂 - 实际上有一个重要原因:我们的大多数用户通过Excel访问我们的系统.Excel有自己古怪的数据处理方式,所以保证我们的东西适用于Excel用户的唯一方法就是逐字实现我们的Excel应用程序的注册测试.
我编写了一个测试运行工具,它允许我轻松地启动一组excel测试:每个测试都是一个.xls文件.每个组都是一个充满excel文件的文件夹.我有大约30个小组需要运行进行端到端测试.我的工具将每个测试的结果转换为Hudson能够理解的JUnit样式XML.测试使用pywin32com库来自动化excel.当他们自己运行时,他们是可靠的.
我有一组专门用于运行测试的计算机.每台机器都是四核的,理论上可以同时运行很多东西.不幸的是,我发现COM不能用于一次安全地控制每台机器超过1个excel.
也就是说,如果第二个构建星试图通过COM与Excel通信它可能会干扰已经运行的那个并导致两个测试都失败.
我可以运行许多其他非excel进程,因为机器将允许但我需要找到一种方法,以便Hudson不会尝试启动任何超过1个进程,这需要同时在任何一台机器上excel.
我有一个界面:
IRepository<T> where T : IEntity
Run Code Online (Sandbox Code Playgroud)
我正在使用一些虚假的存储库实现来破坏我的UI,只返回任何旧数据.
它们看起来像这样:
public class FakeClientRepository : IRepository<Client>
Run Code Online (Sandbox Code Playgroud)
目前我这样做:
ForRequestedType<IRepository<Client>>()
.TheDefaultIsConcreteType<FakeRepositories.FakeClientRepository>();
Run Code Online (Sandbox Code Playgroud)
但我所有的IEntities都有很多次.是否可以使用Scan自动注册我的所有虚假存储库以用于其各自的IRepository?
编辑:这是我得到的,但我得到错误说请求的类型没有注册:(
Scan(x =>
{
x.TheCallingAssembly();
x.IncludeNamespaceContainingType<FakeRepositories.FakeClientRepository>();
x.AddAllTypesOf(typeof(IRepository<>));
x.WithDefaultConventions();
});
Run Code Online (Sandbox Code Playgroud)
谢谢
安德鲁
c# ×5
java ×2
.net ×1
buckminster ×1
eclipse ×1
html ×1
hudson ×1
interlocked ×1
linux ×1
namespaces ×1
parsing ×1
posix ×1
structuremap ×1
swing ×1
unicode ×1
vb.net ×1
visibility ×1
wchar-t ×1
windows ×1