我写了一个简短的bash脚本来完成一项任务,包括创建一个临时目录并在其中存储各种文件并对其执行各种操作.
在我的第一遍中,我刚刚在/tmp/$$.$script创建了临时目录,但后来我在没有写入/ tmp /的访问权限的计算机上测试了脚本,我想采取考虑到这种情况.所以我的问题是这个临时目录的第二个好位置?我应该只使用当前目录吗?主目录?〜/ tmp /?脚本的输出位置?
所有创建的文件都会在脚本退出时清除.
默认情况下,BinaryWriter类使用左侧的低位写入int值(例如,当在十六进制编辑器中查看结果文件时,(int)6变为06 00 00 00).我需要右边的低位(例如00 00 00 06).
我该如何实现这一目标?
编辑:谢谢strager为我提供了我正在寻找的名称.我编辑了标题和标签,以便于查找.
为什么下面的代码(在可可中)不起作用?
NSString *extension = [fileName pathExtension];
NSString *wantedExtension = @"mp3";
if(extension == wantedExtension){
//work
}
Run Code Online (Sandbox Code Playgroud)
在Xcode中,这只是在没有警告或错误的情况下运行,但是没有做我认为应该做的事情.
我有一个对象列表.我需要这些对象的所有可能的排列.
在C++中,有std::next_permutation().我一直试图在.NET Framework中找到一些东西,但是干涸了.
我错过了什么?
我有一个客户端(在它发送的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) 如果控制器的依赖项解析失败,如何设置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响应返回给客户端.
如果在依赖项解析期间没有抛出任何错误(我的模块设置正确),那么一切正常,控制器将被解析并按预期处理请求.
我还设置了一些其他异常记录器,但也没有记录此异常:
我有一个情况,我有一个主窗体,弹出一个高级配置表单,只有六个匹配的复选框和组合框,以选择一些高级选项(复选框启用/禁用,组合选择一个媒体如果启用).
如果我只是将检查和组合框的各个设置传递给对话框的构造函数,这显然是十几个参数,这看起来有点过分.
我的另一个显而易见的选择是,因为在主窗体中这些设置存储在一个大的IDictionary中,其中包含所有其他主要的表单设置,我可以将这个字典传入并随后用更新的值获取它,但我的理解是这个不会真的是非常好的编码练习.
我错过了一个很好的方法来做到这一点既高效又良好的编码实践?
(这个特殊的代码在C#中,虽然我觉得一般的解决方案也适用于其他语言)
我的Alt键在不知不觉中被卡住了,我试图在VS中打开我的窗口菜单,这导致从栏中删除菜单.
我的问题是,我怎么回来了?
我决定将GC用于我最新的Cocoa项目的内存管理,我发现了一些有趣的东西 - 如果我在Xcode中创建一个全新的Cocoa应用程序项目,将GC转换为支持或需要(我尝试了两者),构建和运行它泄漏,它显示内存泄漏!
大多数NSCFData,GeneralBlock,CGEvent,CFDictionary,CGSRegion等类型的微小漏洞.
重现步骤:
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的原始安装上是否发生同样的事情.
本文来自SynchronizationContext可能与ExecutionContext以下情况有关的州:
Run Code Online (Sandbox Code Playgroud)private void button1_Click(object sender, EventArgs e) { button1.Text = await Task.Run(async delegate { string data = await DownloadAsync(); return Compute(data); }); }这是我的心理模型告诉我将使用此代码发生的事情.用户单击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抑制流动过载SynchronizationContext与ExecutionContext时不使用,但我不知道什么时候,这将是.
在我的.NET 4.5的测试Task.Run似乎并不流动SynchronizationContext与ExecutionContext:
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# ×6
cocoa ×2
objective-c ×2
.net ×1
async-await ×1
asynchronous ×1
autofac ×1
command-line ×1
endianness ×1
memory-leaks ×1
soap ×1
string ×1
wcf ×1