I managed to create a little mess in my local git repository. I was trying to fix a broken commit by using the following instructions. Before running the "git commit --amend" (and after the git rebase --interactive) I decided that my changes were incorrect and so I executed "git reset HEAD --hard". Not a good idea, I tell you.
现在,交互式基础似乎被"卡住了".Git将当前分支显示为(| REBASE-m).我的存储库中的每个命令(cd ..,ls,git rebase ...)都会出现以下错误:
cat:.git/rebase-merge/head-name:没有这样的文件或目录
以下是git rebase --abort的样子:
$ git rebase --abort
cat: c:/_work/project/src/git/.git/rebase-merge/quiet: No such file or directory …Run Code Online (Sandbox Code Playgroud) 我们使用TeamCity的命令行构建运行器来调用bat文件.bat文件通过调用Visual Studio 2008的"devenv.exe"构建我们的解决方案,然后执行单元测试并创建正确的文件夹结构.
如果对devenv的调用失败并使TeamCity意识到构建失败,我们想要做的是停止执行bat文件.我们可以通过检查ErrorLevel(如果构建失败时为1)来捕获失败的devenv调用,并且我们可以在那时退出我们的bat文件.但是我们怎么能告诉TeamCity构建失败了呢?
这是我们尝试过的:
call "build.bat"
IF ERRORLEVEL 1 EXIT /B 1
Run Code Online (Sandbox Code Playgroud)
但是TeamCity无法识别我们的退出代码.相反,构建日志如下所示:
[08:52:12]: ========== Build: 28 succeeded or up-to-date, 1 failed, 0 skipped ==========
[08:52:13]: C:\_work\BuildAgent\work\bcd14331c8d63b39\Build>IF ERRORLEVEL 1 EXIT /B 1
[08:52:13]: Process exited with code 0
[08:52:13]: Publishing artifacts
[08:52:13]: [Publishing artifacts] Paths to publish: [build/install, teamcity-info.xml]
[08:52:13]: [Publishing artifacts] Artifacts path build/install not found
[08:52:13]: [Publishing artifacts] Publishing files
[08:52:13]: Build finished
Run Code Online (Sandbox Code Playgroud)
因此,TeamCity将报告构建成功.我们该如何解决这个问题?
解:
TeamCity提供了一种称为服务消息的机制,可用于处理这种情况.我已将构建脚本更新为如下所示:
IF %ERRORLEVEL% == 0 GOTO …Run Code Online (Sandbox Code Playgroud) 关于用户的区域设置,我在Windows 8 Metro应用程序(XAML和C#)中遇到了一些问题.似乎应用程序不会尊重用户的区域设置,因此即使您的Windows 8设置为以芬兰语格式显示日期和时间,应用程序仍将使用美国格式显示它们.但这是一个很大的问题,必须有一些我不知道的东西?
为了测试这一点,我首先创建了一个WPF应用程序.应用程序只打印出CurrentCulture和格式化的DateTime.Now:
private void Culture_Loaded_1(object sender, RoutedEventArgs e)
{
this.Culture.Text = System.Globalization.CultureInfo.CurrentCulture.DisplayName;
}
private void Date_Loaded_1(object sender, RoutedEventArgs e)
{
this.Date.Text = DateTime.Now.ToString();
}
Run Code Online (Sandbox Code Playgroud)
这是我的默认区域设置:

运行时,应用程序以芬兰语格式显示日期:

然后我将区域设置更改为美国:

当应用程序再次运行时,文化和格式发生了变化:

这就像我期望一切正常工作,这也是我期望WinRT应用程序的工作方式.
因此,下一步,我使用相同的代码创建了一个WinRT(XAML和C#)应用程序,并将区域设置恢复为芬兰语.问题:

即使我通过区域设置定义格式应为"芬兰语",WinRT应用程序也会以美国格式显示日期时间.然后我修改了应用程序的项目文件,并使fi-FI成为默认语言:

此更改还修改了应用程序的文化:

奇怪.我将默认语言更改回其默认值,格式化已恢复为美国.然后我在项目中创建了文件夹"Strings-fi-FI",并在项目中添加了一个空的"Resources.resw".这个空文件似乎已经足够了,因为我现在正在使用芬兰格式:

只要删除空资源文件,格式就会恢复为美国:

很奇怪.
这导致了一些问题,但我认为主要的问题是:WinRT应用程序是否故意不遵循用户的区域设置(如WPF应用程序)?
我正在从WinRT应用程序调用WCF服务.该服务要求为身份验证设置一些标头.问题是如果我同时多次调用服务,我会得到以下异常:
此OperationContextScope正在按顺序处理.
当前代码如下所示:
public async Task<Result> CallServerAsync()
{
var address = new EndpointAddress(url);
var client = new AdminServiceClient(endpointConfig, address);
using (new OperationContextScope(client.InnerChannel))
{
OperationContext.Current.OutgoingMessageProperties[HttpRequestMessageProperty.Name] = GetHeader();
var request = new MyRequest(...);
{
context = context,
};
var result = await client.GetDataFromServerAsync(request);
}
}
Run Code Online (Sandbox Code Playgroud)
我从文档中找到了以下评论:
不要在OperationContextScope块中使用异步"await"模式.当继续发生时,它可以在不同的线程上运行,而OperationContextScope是特定于线程的.如果需要为异步调用调用"await",请在OperationContextScope块之外使用它.
所以我似乎错误地调用了该服务.但是正确的方法是什么?
我有一个应用程序,在某些时候几乎同时引发了1000个事件.我想要做的是将事件批处理为50个项目的块,并开始每10秒处理一次.在开始新的批处理之前,无需等待批处理完成.
例如:
10:00:00: 10000 new events received
10:00:00: StartProcessing (events.Take(50))
10:00:10: StartProcessing (events.Skip(50).Take(50))
10:00:15: StartProcessing (events.Skip(100).Take(50))
Run Code Online (Sandbox Code Playgroud)
任何想法如何实现这一目标?我认为Reactive Extensions是要走的路,但其他解决方案也是可以接受的.
我试着从这里开始:
var bufferedItems = eventAsObservable
.Buffer(15)
.Delay(TimeSpan.FromSeconds(5)
Run Code Online (Sandbox Code Playgroud)
但是注意到延迟没有像我希望的那样工作,而是所有批次同时开始,但是延迟了5秒.
我也测试了Window方法,但我没有发现任何行为上的差异.我认为Window中的TimeSpan实际上意味着"记录在接下来的10秒内发生的每一个事件:
var bufferedItems = eventAsObservable
.Window(TimeSpan.FromSeconds(10), 5)
.SelectMany(x => x)
.Subscribe(DoProcessing);
Run Code Online (Sandbox Code Playgroud)
我正在使用Rx-Main 2.0.20304-beta.
在今天遇到Massive的一些问题后,我决定创建一个简单的测试程序来说明问题.我想知道,我在这段代码中犯的错误是什么:
var list = new List<string>
{
"Hey"
};
dynamic data = list.Select(x => x);
var count = data.Count();
Run Code Online (Sandbox Code Playgroud)
最后一行抛出错误:'object'不包含'Count'的定义
为什么"数据"被视为对象?出现此问题是因为我正在调用扩展方法吗?
以下代码有效:
var list = new List<string>
{
"Hey"
};
dynamic data = list.Select(x => x);
foreach (var s in data)
{
}
Run Code Online (Sandbox Code Playgroud)
为什么在这种情况下"数据"被正确地视为IEnumerable?
jQuery的插件TableSorter似乎没有处理它附加到空表的情况.这有什么好的方法吗?
在我的应用程序中,用户可以过滤和搜索数据,最终他或她将提出不返回任何值的搜索条件.在这些情况下,最好"分离"TableSorter或以某种方式修复它的代码,以便它与空表一起使用.
我目前正在使用这样的插件:
$("#transactionsTable")
.tablesorter({ widthFixed: true, widgets: ['zebra'] })
.tablesorterPager({ container: $("#pager"), positionFixed: false });
Run Code Online (Sandbox Code Playgroud)
这很有效,直到表为空.然后我收到以下错误:
Line: 3
Error: '0.length' is null or not an object
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?是否可以更改脚本,以便只有表格行才有表格才能添加到表格中?
我一直在测试官方MongoDB C#驱动程序,副本集为3个实例.我创建了一个简单的应用程序,它可以在循环中访问副本集.
我的问题是:当我关闭主服务器时,是否有可能让C#驱动程序自动重新运行查询,而不像现在那样抛出EndOfStreamException?
这是MongoServerSettings的初始化代码:
var settings = new MongoServerSettings()
{
ConnectionMode = ConnectionMode.ReplicaSet,
ReplicaSetName = "mongors",
ReadPreference = new ReadPreference(ReadPreferenceMode.PrimaryPreferred),
SafeMode = SafeMode.True,
DefaultCredentials = new MongoCredentials("user", "password"),
Servers = new[] { new MongoServerAddress("server.net", 27020),
new MongoServerAddress("server.net", 27019),
new MongoServerAddress("server.net", 27018)}
};
Run Code Online (Sandbox Code Playgroud)
这是我查询服务器的代码:
while (true)
{
var server = MongoServer.Create(settings);
var db = server.GetDatabase("db");
var collection = db.GetCollection<TaggedAction>("actions");
var query = Query.EQ("_id", id);
var entity = collection.FindOne(query);
Console.WriteLine(DateTime.Now +" " + entity.ActionName);
Thread.Sleep(2500);
}
Run Code Online (Sandbox Code Playgroud)
如果我关闭主服务器,客户端会抛出以下异常:
System.IO.EndOfStreamException was unhandled
HResult=-2147024858
Message=Attempted …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用GIT-SVN,但是我遇到了问题.我可以克隆svn-repository(或者使用git svn init然后使用git svn fetch)而不会出现任何错误,但是在命令停止处理之后,git存储库为空,并且没有本地主分支.
我的svn存储库位于:
项目文件夹的结构如下:
/projectA/trunk
/projectA/branches
/projectA/tags
/projectB/trunk
/projectB/branches
/projectB/tags
Run Code Online (Sandbox Code Playgroud)
(注意,branches和tags-folders为空,trunk-folder包含文件).
我正在尝试克隆项目,所以我使用了这个命令:
git svn clone --username myUsername https://localhost:8443/svn/projects/ gitFolder --trunk projectA/trunk --branches projectA/branches --tags projectA/tags
Run Code Online (Sandbox Code Playgroud)
处理大约需要10分钟,并将所有文件名输出到屏幕.最后一行看起来像这样:
r233 = 2bfb031dda74e0ae8340688892197d647729b256 (refs/remotes/trunk)
Run Code Online (Sandbox Code Playgroud)
现在,如果我切换到gitFolder并输入git log,我会得到:致命:错误的默认修订版'HEAD'.
git branches -a 报告这个:
遥控器/中继.
gitFolder中有一个.git文件夹,但没有别的.我也尝试过git svn init而git svn fetch不是git svn clone最终结果是相同的.
有什么想法发生了什么?提前致谢.
更新:
刚刚意识到最后一行(r233 = 2bf ...)必须指向修订号.所以最后处理的svn修订版是233.我已经多次重新测试了这个,并且git-svn克隆总是在修订版233之后停止.问题是原始的svn存储库包含超过10100个修订版.我不确定为什么git-svn会在它之前停止,因为没有任何错误或警告.是否有某个日志文件可以提供更多线索?
另一个更新:
我能够解决我的问题.这是由VisualSVN(版本2.1.3)和Msysgit(版本1.7.0.2-preview20100309)之间的通信问题引起的.似乎在某些时候git-svn只是失去了与VisualSVN服务器的连接而无法显示错误而只是关闭.从http协议切换到svn协议解决了这个问题.
在VisualSVN中使用svn-protocol非常简单:
您可以使用TortoiseSVN并将其指向您的存储库来检查一切是否正常工作:svn:// localhost/repositories/myProject
我有C#字符串,其中包含句子.有时候这些句子都可以,有时它们只是用户生成的随机字符.我想做的是修剪这些句子中的单词.例如,给定以下字符串:
var stringWithLongWords = "Here's a text with tooooooooooooo long words";
Run Code Online (Sandbox Code Playgroud)
我想通过过滤器运行:
var trimmed = TrimLongWords(stringWithLongWords, 6);
Run Code Online (Sandbox Code Playgroud)
并获得一个输出,其中每个单词最多只能包含6个字符:
"Here's a text with tooooo long words"
Run Code Online (Sandbox Code Playgroud)
有什么想法可以通过良好的性能来完成吗?.NET中有什么可以自动处理的吗?
我目前正在使用以下代码:
private static string TrimLongWords(string original, int maxCount)
{
return string.Join(" ", original.Split(' ').Select(x => x.Substring(0, x.Length > maxCount ? maxCount : x.Length)));
}
Run Code Online (Sandbox Code Playgroud)
这在理论上是有效的,但如果长词以空格之外的分隔符结尾,则它会提供不良输出.例如:
这是sweeeeeeeeeeeeeeeet!还有更多.
结尾看起来像这样:
这是sweeeeeeee还有更多.
更新:
好的,评论非常好,我意识到这可能有太多"假设".如果忘记分隔符也许会更好.相反,如果一个单词被修剪,它可以用三个点显示.以下是一些修剪最多5个字符的示例:
现代启示录! - > Apoca ...现在!
启示! - > Apoca ......
!例! - >!考试......
这是sweeeeeeeeeeeeeeeet!还有更多. - >这很好......还有一些......更多.
c# ×6
git ×2
asynchronous ×1
command-line ×1
dynamic ×1
exception ×1
git-rebase ×1
git-svn ×1
javascript ×1
jquery ×1
mongodb ×1
msysgit ×1
svn ×1
tablesorter ×1
teamcity ×1
teamcity-5.1 ×1
wcf ×1
wcf-client ×1
xaml ×1