小编Law*_*ton的帖子

访问/ tmp /被拒绝时在哪里创建临时文件?

我写了一个简短的bash脚本来完成一项任务,包括创建一个临时目录并在其中存储各种文件并对其执行各种操作.

在我的第一遍中,我刚刚在/tmp/$$.$script创建了临时目录,但后来我在没有写入/ tmp /的访问权限的计算机上测试了脚本,我想采取考虑到这种情况.所以我的问题是这个临时目录的第二个好位置?我应该只使用当前目录吗?主目录?〜/ tmp /?脚本的输出位置?

所有创建的文件都会在脚本退出时清除.

command-line

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

如何使用右侧的低位写入文本文件(Bigendian)

默认情况下,BinaryWriter类使用左侧的低位写入int值(例如,当在十六进制编辑器中查看结果文件时,(int)6变为06 00 00 00).我需要右边的低位(例如00 00 00 06).

我该如何实现这一目标?

编辑:谢谢strager为我提供了我正在寻找的名称.我编辑了标题和标签,以便于查找.

c# endianness

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

为什么我的比较if语句不起作用?

为什么下面的代码(在可可中)不起作用?

NSString *extension = [fileName pathExtension];
NSString *wantedExtension = @"mp3";
if(extension == wantedExtension){
//work
}
Run Code Online (Sandbox Code Playgroud)

在Xcode中,这只是在没有警告或错误的情况下运行,但是没有做我认为应该做的事情.

string cocoa objective-c object-comparison

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

如何在C#中置换对象列表?

我有一个对象列表.我需要这些对象的所有可能的排列.

在C++中,有std::next_permutation().我一直试图在.NET Framework中找到一些东西,但是干涸了.

我错过了什么?

.net c#

3
推荐指数
1
解决办法
1377
查看次数

WCF SOAP服务在(反)序列化时更改数组项元素的名称

我有一个客户端(在它发送的SOAP中不是很灵活),它从带签名的方法生成类似于以下内容的SOAP void Test(int[] test):

<?xml version="1.0" encoding="UTF-8" ?>
<SOAP:Envelope xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <SOAP:Body>
        <Test xmlns="http://www.mydomain.com/">
            <test>
                <item>1</item>
                <item>2</item>
                <item>3</item>
                <item>4</item>
                <item>5</item>
                <item>7</item>
            </test>
        </Test>
    </SOAP:Body>
</SOAP:Envelope>
Run Code Online (Sandbox Code Playgroud)

我需要我的WCF SOAP Web服务来正确地反序列化它.

默认情况下,它会抛出以下异常:

System.ServiceModel.Dispatcher.NetDispatcherFaultException: The formatter threw an exception while trying to deserialize the message: Error in deserializing body of request message for operation 'Test'. End element 'test' from namespace 'http://www.mydomain.com/' expected. Found element 'item' from namespace 'http://www.mydomain.com/'. Line 6, position 7. ---> System.Xml.XmlException: End element 'test' from namespace 'http://www.mydomain.com/' expected. Found …
Run Code Online (Sandbox Code Playgroud)

c# wcf serialization soap

3
推荐指数
1
解决办法
2750
查看次数

如何在Web API项目中记录依赖项解析期间抛出的异常?

如果控制器的依赖项解析失败,如何设置IIS中托管的Web API 2(版本5)项目以记录错误?我正在使用Autofac Web API 2集成(版本3.1)进行DI.

在我的Global.asax.cs中,我有以下内容:

public class Global : HttpApplication {
    protected void Application_Start() {
        var resolver = new AutofacWebApiDependencyResolver(_container);
        GlobalConfiguration.Configuration.DependencyResolver = resolver;

        // other initialization

        GlobalConfiguration.Configuration.EnsureInitialized(); 

    }

    protected void Application_Error(Object sender, EventArgs e){
        Exception exception = Server.GetLastError();
        if (exception != null) {
            _log.Error("Application error", exception);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

在一个类似的MVC项目中使用AutofacDependencyResolver这个就足以记录Autofac.Core.DependencyResolutionException当Autofac在创建控制器时无法解析依赖关系时抛出的东西,但在我的Web API项目中,这似乎不起作用,要么不抛出异常,要么我不要t设置了正确的日志记录处理程序.相反,不会记录任何消息,而是将500响应返回给客户端.

如果在依赖项解析期间没有抛出任何错误(我的模块设置正确),那么一切正常,控制器将被解析并按预期处理请求.

我还设置了一些其他异常记录器,但也没有记录此异常:

  • 处理未处理的异常事件:AppDomain.CurrentDomain.UnhandledException + = CurrentDomain_UnhandledException(在Global.asax.cs中)
  • 设置从ExceptionFilterAttribute派生的异常日志记录筛选器.这会记录控制器处理请求时抛出的异常,但不记录在依赖项解析期间抛出的异常.

c# autofac asp.net-web-api

3
推荐指数
1
解决办法
2000
查看次数

将大量参数传递到配置对话框的最佳方法

我有一个情况,我有一个主窗体,弹出一个高级配置表单,只有六个匹配的复选框和组合框,以选择一些高级选项(复选框启用/禁用,组合选择一个媒体如果启用).

如果我只是将检查和组合框的各个设置传递给对话框的构造函数,这显然是十几个参数,这看起来有点过分.

我的另一个显而易见的选择是,因为在主窗体中这些设置存储在一个大的IDictionary中,其中包含所有其他主要的表单设置,我可以将这个字典传入并随后用更新的值获取它,但我的理解是这个不会真的是非常好的编码练习.

我错过了一个很好的方法来做到这一点既高效又良好的编码实践?

(这个特殊的代码在C#中,虽然我觉得一般的解决方案也适用于其他语言)

c#

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

如何将菜单还原到Visual Studio 2008菜单栏?

我的Alt键在不知不觉中被卡住了,我试图在VS中打开我的窗口菜单,这导致从栏中删除菜单.

我的问题是,我怎么回来了?

visual-studio-2008 visual-studio

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

使用垃圾收集时,新创建的Cocoa应用程序中的内存泄漏?

我决定将GC用于我最新的Cocoa项目的内存管理,我发现了一些有趣的东西 - 如果我在Xcode中创建一个全新的Cocoa应用程序项目,将GC转换为支持或需要(我尝试了两者),构建和运行它泄漏,它显示内存泄漏!

大多数NSCFData,GeneralBlock,CGEvent,CFDictionary,CGSRegion等类型的微小漏洞.

重现步骤:

  1. 文件 - >新项目 - > Cocoa app
  2. 项目 - >编辑项目设置 - > GC必需(或支持,任一个)
  3. 建设 - >构建
  4. 运行 - >运行性能工具 - >泄漏
  5. 等待泄漏检测触发(我将其设置为10秒,默认为30)

80%的时间左右我得到了大约2-20 Kb的上述各种物体的泄漏.

有没有其他人有同样的行为?


编辑:我通过重命名InputManagers文件夹测试了下面的情况(此时日志消息消失了,所以它们肯定不再被加载)并且仍然得到内存泄漏.所以它似乎与它有任何关系.我将文字留在那里,所以Ashley Clark的回答仍然有意义.

我知道的唯一奇怪的情况是,当我运行启用了GC的应用程序时,我在控制台中收到以下消息:

2008-12-12 13:03:09.829 MemLeakTest[41819:813] Error loading /Library/InputManagers/Inquisitor/Inquisitor.bundle/Contents/MacOS/Inquisitor:  dlopen(/Library/InputManagers/Inquisitor/Inquisitor.bundle/Contents/MacOS/Inquisitor, 265): no suitable image found.  Did find:
    /Library/InputManagers/Inquisitor/Inquisitor.bundle/Contents/MacOS/Inquisitor: GC capability mismatch
2008-12-12 13:03:09.840 MemLeakTest[41819:813] Error loading /Library/InputManagers/Saft/SaftLoader.bundle/Contents/MacOS/SaftLoader:  dlopen(/Library/InputManagers/Saft/SaftLoader.bundle/Contents/MacOS/SaftLoader, 265): no suitable image found.  Did find:
    /Library/InputManagers/Saft/SaftLoader.bundle/Contents/MacOS/SaftLoader: GC capability mismatch
Run Code Online (Sandbox Code Playgroud)

我猜这与两个试图加载到每个启动的程序中的插件有关,而不仅仅是Safari(它们是插件).我不确定这是否与此有关,但它看起来似乎是一种可能性.我没有方便的访问干净而不是OS X 10.5与Dev工具来测试在没有SAFT或Inquisitor的原始安装上是否发生同样的事情.

cocoa garbage-collection memory-leaks objective-c

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

Task.Run什么时候使用ExecutionContext流动SynchronizationContext?

本文来自SynchronizationContext可能与ExecutionContext以下情况有关的州:

private void button1_Click(object sender, EventArgs e)  { 
    button1.Text = await Task.Run(async delegate 
    { 
        string data = await DownloadAsync(); 
        return Compute(data); 
    });  
}
Run Code Online (Sandbox Code Playgroud)

这是我的心理模型告诉我将使用此代码发生的事情.用户单击button1,导致UI框架在UI线程上调用button1_Click.然后代码启动一个工作项以在ThreadPool上运行(通过Task.Run).该工作项启动一些下载工作并异步等待它完成.然后,ThreadPool上的后续工作项对该下载的结果执行一些计算密集型操作,并返回结果,从而导致在UI线程上等待的任务完成.此时,UI线程处理此button1_Click方法的其余部分,将计算结果存储到button1的Text属性中.

如果SynchronizationContext不作为ExecutionContext的一部分流动,我的期望是有效的.然而,如果它确实流动,我将非常失望.Task.Run在调用时捕获ExecutionContext,并使用它来运行传递给它的委托.这意味着调用Task.Run时当前的UI SynchronizationContext将流入Task,并在调用DownloadAsync并等待生成的任务时为Current.这意味着await将看到Current SynchronizationContext并将异步方法的剩余部分作为在UI线程上运行的延续.这意味着我的Compute方法很可能会在UI线程上运行,而不是在ThreadPool上运行,从而导致我的应用程序出现响应问题.

故事现在变得有点混乱:ExecutionContext实际上有两个Capture方法,但只有一个是公共的.内部的(mscorlib内部)是mscorlib公开的大多数异步功能所使用的,它可选地允许调用者禁止捕获SynchronizationContext作为ExecutionContext的一部分; 对应于此,还有一个Run方法的内部重载,它支持忽略存储在ExecutionContext中的SynchronizationContext,实际上假装没有捕获一个(这也是mscorlib中大多数功能使用的重载).这意味着几乎任何其核心实现驻留在mscorlib中的异步操作都不会将SynchronizationContext作为ExecutionContext的一部分流,但是其核心实现驻留在任何其他位置的任何异步操作都会将SynchronizationContext作为ExecutionContext的一部分进行流动.我之前提到异步方法的"构建器"是负责在异步方法中流动ExecutionContext的类型,并且这些构建器确实存在于mscorlib中,并且它们确实使用内部重载...因此,SynchronizationContext不作为ExecutionContext的一部分流动等待(再次,这与任务等待者如何支持捕获SynchronizationContext和Post'ing回到它是分开的).为了帮助处理ExecutionContext确实流动SynchronizationContext的情况,异步方法基础结构尝试忽略由于流动而设置为Current的SynchronizationContexts.

然而,它是不完全清楚,我这件事会发生.看来,当公众会发生ExecutionContext.Capture使用方法和内部Task.Run抑制流动过载SynchronizationContextExecutionContext使用,但我不知道什么时候,这将是.

在我的.NET 4.5的测试Task.Run似乎并不流动SynchronizationContextExecutionContext:

private async void button1_Click(object sender, EventArgs e) {
    Console.WriteLine("Click context:" + SynchronizationContext.Current);
    button1.Text = await Task.Run(async delegate {

        // In my tests this always returns …
Run Code Online (Sandbox Code Playgroud)

c# asynchronous synchronizationcontext async-await

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