小编Mic*_*der的帖子

如何安全地写入文件?

想象一下,您有一个用于处理某种XML文件或配置文件的库.该库将整个文件读入内存并提供编辑内容的方法.完成操作内容后,可以调用a write将内容保存回文件.问题是如何以安全的方式做到这一点.

覆盖现有文件(开始写入原始文件)显然不安全.如果write方法在完成之前失败,则最终会得到一个半写文件并且您丢失了数据.

更好的选择是在某处写入临时文件,当write方法完成后,临时文件复制到原始文件.

现在,如果副本以某种方式失败,您仍然可以在临时文件中正确保存数据.如果复制成功,您可以删除临时文件.

在POSIX系统上,我猜你可以使用rename系统调用,这是一个原子操作.但是你如何在Windows系统上做到最好?特别是,你如何使用Python处理这个问题?

另外,还有另一种安全写入文件的方案吗?

python windows file

15
推荐指数
4
解决办法
7403
查看次数

你如何调试XamlParseException?

我正在尝试在Silverlight应用程序中使用第三方组件,当我尝试创建控件的实例时,我得到一个XamlParseException:

{System.Windows.Markup.XamlParseException: **Set property 'System.Windows.FrameworkElement.Style' threw an exception.** [Line: 0 Position: 0] 
---> System.Windows.Markup.XamlParseException: **Elements in the same ResourceDictionary cannot have the same x:Key** [Line: 1739 Position: 47]    
at MS.Internal.XcpImports.CreateFromXaml(UnmanagedMemoryStream stream, String sourceAssemblyName, boolean createNamescope, Boolean requireDefaultNamespace, Boolean allowEventHandlers)    
at System.Windows.Controls.Control.GetBuiltInStyle(IntPtr nativeTarget, IntPtr& nativeStyle)    
--- End of inner exception stack trace ---    
at System.Windows.Application.LoadComponent(Object component, Uri resourceLocator)    
at SpellCheckerSample.StandardSpellDialog.InitializeComponent()    
at SpellCheckerSample.StandardSpellDialog..ctor()}
Run Code Online (Sandbox Code Playgroud)

我该怎么调试呢?我如何知道位置47所在的文件行1739?

silverlight xaml

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

如何使用MonoDevelop调试单元测试?

我在OSX上有MonoDevelop 2.4.2.我有一个失败的单元测试,我想调试.有办法吗?我在MonoDevelop邮件列表上找到了一个参考,但我的版本没有提到选项.

我错过了什么吗?

testing nunit unit-testing monodevelop

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

Mercurial:通过ssh和http访问的性能

我注意到,无论是来自我自己的服务器还是BitBucket,通过ssh克隆repo比通过http慢得多.在我的情况下,相当于在相同的BitBucket存储库中使用ssh 超过2分钟的 http为10秒.

我在Windows上使用Mercurial(TortoiseHg 1.5,Mercurial 1.7).两个测试都是从GUI和CLI完成的.

这是一个常见的"问题"还是我做错了什么?

mercurial tortoisehg bitbucket

11
推荐指数
1
解决办法
2037
查看次数

如何在FAKE脚本中检查变量?

我在我的FAKE脚本中有一个错误代码中的错误,我与遗留构建基础设施接口.我有一个错误,我想在Visual Studio中调试我的脚本.我使用--breakflag来附加Visual Studio 2013调试器,我可以设置一个断点.但我无法检查任何FAKE脚本的变量.

有没有办法使用Visual Studio 2013调试器来检查FAKE脚本的状态?常规F#程序似乎没有问题.

debugging visual-studio-2013 f#-fake

11
推荐指数
1
解决办法
405
查看次数

用于Razor Pages路由的IntelliSense

我在ASP .NET Core 2.0中玩弄了新的Razor页面并注意到了IntelliSense的一些问题.

当为MVC控制器使用标签助手时,我得到通常的帮助:

带有IntelliSense的MVC

但是asp-page,Razor Pages中使用的标记助手没有这样的帮助:

剃刀页面没有帮助

这是我的Visual Studio的问题,还是Razor Pages标签不支持它?

我在VS 2017 15.5.5上使用ASP .NET Core 2.0和框架4.7.

asp.net-core visual-studio-2017 asp.net-core-2.0 razor-pages

11
推荐指数
1
解决办法
294
查看次数

如何更改用于访问本地SVN存储库的默认作者?

我使用TortoiseSVN来访问基于文件的本地仓库.在我的所有提交中,作者是我的Windows登录名.是否可以使用不同的名称?

我知道如何在提交后更改作者,但之前如何更改?安装apache/svnserver不是一种选择.

svn tortoisesvn default author

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

iPhone上的屏幕关闭事件或属性

有没有办法通过顶部电源按钮确定屏幕是否已关闭?

我只需要知道屏幕是否以某种方式设置为关闭以杀死更新位置的循环.

谢谢

iphone cocoa-touch ios-simulator

10
推荐指数
1
解决办法
900
查看次数

多次记录(或运行)单元测试

我有这个简单的测试:

protected readonly ILog logger = LogManager.GetLogger(MethodBase.GetCurrentMethod().ReflectedType);
private static int count = 0;
[Test]
public void TestConfiguredSuccessfully()
{
    logger.Debug("in test method" + count++);
}
Run Code Online (Sandbox Code Playgroud)

log4net设置如下:

[TestFixtureSetUp]
public void SetUp()
{
    log4net.Config.BasicConfigurator.Configure();
}
Run Code Online (Sandbox Code Playgroud)

问题是,如果我在nUnit中运行一次测试,我得到输出(如预期的那样):

1742 [TestRunnerThread] DEBUG Tests.TestSomthing (null) - in test method0
Run Code Online (Sandbox Code Playgroud)

但是,如果我再次在nUnit.exe中按RUN(或更多),我会得到以下内容:

1742 [TestRunnerThread] DEBUG Tests.TestSomthing (null) - in test method1
1742 [TestRunnerThread] DEBUG Tests.TestSomthing (null) - in test method1
Run Code Online (Sandbox Code Playgroud)

等等(如果我运行5次,我会得到5条重复的线条).现在,如果我从reSharper单独运行相同的测试,输出就可以了,不会重复.但是,如果我在同一个类中的另外两个测试中运行此测试,则输出重复三次.

我完全糊涂了.这到底是怎么回事?

c# resharper log4net nunit

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

在线文本编辑器如何工作?

我正在尝试开发一个在线编辑器(如FCKEditor/etc),但我不知道它们是如何工作的.我知道WYSIWYG的有Javascript和IFrame,但它们实际上如何工作?

我特别好奇能够实时预览编辑器中输入的内容.

javascript wysiwyg fckeditor editor

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