我之前没有问过这种性质的问题,所以这可能不适合这个.
我在连接到热键的下拉模式下使用xfce终端.当另一个窗口变为活动状态时它会关闭,这很好.然而,不好的是,当我使用git并将其拉或推到https网址时,会弹出一个有趣的框来询问我的密码,而不是让我直接在命令行输入密码.
通常我会谷歌周围找到答案,但遗憾的是大多数人都试图让git完全停止要求输入密码而不是阻止对话框,所以这对我来说很难谷歌(相信我;我已经当我生气的时候,我已经尝试了几个月了.
如何阻止git弹出任何图形窗口来获取密码等内容?Git说它/usr/lib/seahorse/seahorse-ssh-askpass用于询问密码,所以如果有一些配置选项阻止它使用它(或具有相同的效果),那就太好了.
非常感谢您的帮助.
我一直在搞乱在我的一个项目中使用RapidXML.直到我决定使用它写出xml之前,一切都进展顺利.我的代码或多或少如下:
//attempt to open the file for writing
std::ofstream file(fileName.c_str());
if (!file.is_open())
return false; //the file didn't open
xml_document<> doc;
//creates the contents of the document...
//...
//...
//write the document out to the file
file << doc; //if I remove this line it compiles...but I kinda need this line to output to the file
file.close();
Run Code Online (Sandbox Code Playgroud)
在编译时,我收到以下错误:
In file included from ../Engine/xmlfileloader.cpp:12:0:
../Engine/include/rapidxml_print.hpp: In instantiation of 'OutIt rapidxml::internal::print_node(OutIt, const rapidxml::xml_node<Ch>*, int, int) [with OutIt = std::ostream_iterator<char, char, std::char_traits<char> >; Ch …Run Code Online (Sandbox Code Playgroud) 目前,我使用RazorEngine v2.1作为后台进程的一部分,该进程发送模板化电子邮件(数千个).为了加快速度,模板使用md5 sum作为名称进行编译.这使得当模板被更改时,它被重新编译,并且使用该模板的所有电子邮件都能够使用相同的编译模板.我在列表中跟踪已编译模板的名称,以便我知道何时再次调用编译(并执行其他一些操作).
问题:我发现经过很长一段时间后,经过大量的模板修改,所有这些缓存的编译模板可能仍然在内存中,因为它看起来像是存储在一个dynamic.对于这个可能一次运行几个月而不重启的特定进程,如果所有以前版本的模板仍然存在,这可能构成严重的内存泄漏.
问题:是否有办法取消缓存旧模板,以便它们不再闲置在dynamic?
例如,如果我能够自己保留已编译的模板对象并在我想使用它们时将它们传递到RazorEngine中,我可以决定何时将它们抛出并消除内存泄漏.然而,如果RazorEngine已经解决了这个问题,那么了解它也会很方便,因为我在互联网上找不到很多关于这个特定问题的引用.关于为什么应该使用编译模板来减少内存使用量的原因有很多,但我很难找到任何关于在长期应用程序中累积的大量未使用的编译模板的信息.
编辑:我刚刚读了一些关于缓存是如何工作的,如果使用不同的模板传入相同的名称,它将重新缓存它并丢弃旧的.然而,这里的问题仍然存在,因为随着时间的推移,将添加和删除电子邮件,并且随着时间的推移,所有旧的删除的电子邮件仍将存在(即使它不会存储模板的每个版本的副本).
我一直在努力与一些异步等待的东西.我正在使用RabbitMQ在某些程序之间发送/接收消息.
作为一个背景,RabbitMQ客户端使用我可以看到的3个左右的线程:一个连接线程和两个心跳线程.每当通过TCP接收消息时,连接线程就会处理它并调用我通过接口提供的回调.文档说最好避免在这个调用期间做很多工作,因为它在与连接相同的线程上完成并且事情需要继续.它们提供了一个QueueingBasicConsumer具有阻塞'Dequeue'方法的方法,该方法用于等待接收消息.
我希望我的消费者能够在这个等待时间内实际释放他们的线程上下文,以便其他人可以做一些工作,所以我决定使用async/await任务.我写了一个以下列方式AwaitableBasicConsumer使用TaskCompletionSources 的类:
我有一个等待的Dequeue方法:
public Task<RabbitMQ.Client.Events.BasicDeliverEventArgs> DequeueAsync(CancellationToken cancellationToken)
{
//we are enqueueing a TCS. This is a "read"
rwLock.EnterReadLock();
try
{
TaskCompletionSource<RabbitMQ.Client.Events.BasicDeliverEventArgs> tcs = new TaskCompletionSource<RabbitMQ.Client.Events.BasicDeliverEventArgs>();
//if we are cancelled before we finish, this will cause the tcs to become cancelled
cancellationToken.Register(() =>
{
tcs.TrySetCanceled();
});
//if there is something in the undelivered queue, the task will be immediately completed
//otherwise, we queue the task into deliveryTCS
if (!TryDeliverUndelivered(tcs))
deliveryTCS.Enqueue(tcs);
}
return tcs.Task; …Run Code Online (Sandbox Code Playgroud) c# multithreading asynchronous rabbitmq task-parallel-library
我正在进行一个批处理过程,它从一个缓慢的遗留数据库(每个记录获取时间1.4-2ms ......它加起来)转储~800,000条记录到MySQL中,它可以执行得更快一点.为了优化这一点,我一直在将所有MySQL记录加载到内存中,这使得使用量大约为200MB.然后,我开始从遗留数据库转储并更新记录.
最初,当这将完成更新记录时,我会调用SaveContext,然后使我的内存从~500MB-800MB跳到1.5GB.很快,我会失去内存异常(运行的虚拟机有2GB的RAM),即使我要给它更多的RAM,1.5-2GB仍然有点过分,这只是一个乐队 - 问题.为了解决这个问题,我开始每10,000条记录调用一次SaveContext,这有点帮助了一些事情,因为我使用委托来从遗留数据库中获取数据并在MySQL中更新它,因此我没有收到太可怕的性能影响.在保存时等待5秒左右,然后在内存中更新已经备份的3000个左右的记录.但是,内存使用量仍在不断增加.
以下是我的潜在问题:
我想到的一个可能的解决方案是以某种方式释放实体使用的内存,我知道我永远不会再次触摸,因为它们已经更新(比如清除缓存,但只针对特定项目),但我不知道如果甚至可以使用Entity Framework.
有人有想法吗?
c# entity-framework memory-management out-of-memory objectcontext
我正在学习使用HTML5 WebSockets,作为其中的一部分,我正在用Python编写服务器,所以我可以知道它们如何工作的细节.我前几天创建了一个非常好的,但是我想扩展它以便它支持多个端点,每个端点都是一个可以处理websocket客户端的不同"服务".
目前,我的实现适用于产生进程等(我使用多处理而不是线程,因为我读到线程在CPython中并不是真正的多线程,这就是我认为我正在使用的(Ubuntu 12.04上的默认安装)),但是我无法将收到的客户端套接字发送到服务进程.
这是我发送它们的方式(这是循环运行):
try:
#get a new client
conn, addr = server.accept()
print "Client connected from", addr
request = conn.recv(4096)
response, close, service = self.handshake(request)
conn.send(response)
if close:
print "Invalid request from", addr
conn.close()
continue
client = WebSockets.WebSocketClient(conn, addr)
service.clientConnQueue.put(client)
Run Code Online (Sandbox Code Playgroud)
'server'是一个侦听传入连接的套接字.握手方法负责验证其请求并确定将客户端放入哪个服务进程.'response'是要发送的http响应,如果出现错误,'close'为True,'service'是继承自multiprocessing.Queue的类.WebSocktes.WebSocketClient是存储我的发送和接收实现的地方,它基本上用作套接字的包装器.
'clientConnQueue'的创建方式如下:
class Service(multiprocessing.Process):
"""Base class for all services."""
def __init__(self, manager):
multiprocessing.Process.__init__(self)
self.manager = manager
self.clientConnQueue = self.manager.Queue()
self.shutdownFlag = multiprocessing.Event()
Run Code Online (Sandbox Code Playgroud)
manager是一个multiprocessing.Manager()
我尝试将客户端放在clientConnQueue中时得到的错误如下:
File "./WebSocketServer.py", line 183, in <module>
main()
File "./WebSocketServer.py", line 180, in main
server.runServer() …Run Code Online (Sandbox Code Playgroud) 目前似乎缺乏针对python的GObjects模块的文档,所以也许有人可以帮助我.
我正在制作一个应用程序,偶尔必须通知用户发生了一个事件.我发现使用from gi.repository import Notify和相关的类使用一个简短的片段来获取Skype通知和C文档,但是当我调用Notify.uninit时它似乎没有关闭.程序关闭,但小通知窗口的东西保持不变,必须通过右键单击并选择"删除"来关闭.所以,我想知道是否有另一种方式,如果有类似的东西,如果有什么类似于Mac OS中的应用程序图标震动/反弹时发生的事情或在Windows中应用程序图标发出不同的颜色?
我喜欢带有消息堆栈等的Gnome 3通知系统,但是因为当我的应用程序退出时我似乎无法让它消失,我真的不想使用它(除非有人知道如何正确地做到这一点.. .it可能是我忘了设置超时,但这仍然没有意义,为什么我不能让通知点消失).
我今天注意到我的intellisense中出现了一些关于System.Type.NET 4.5项目对象的新属性.其中一个叫做CustomAttributes.
我对此很感兴趣,因为我之前已经知道这GetCustomAttributes是最昂贵的反射调用之一(DynamicInvoke当然除此之外).据我了解,每次调用都会GetCustomAttributes导致调用构造函数的属性(以及内存分配).我经常使用单独缓存自定义属性来避免在处理大量类型等时出现性能瓶颈.
所以,我写了一个测试,看看是否CustomAttributes有更高的性能GetCustomAttributes:
static void Main(string[] args)
{
var sw = Stopwatch.StartNew();
Debug.WriteLine(typeof(Attributed).GetType());
for (int i = 0; i < 10000; i++)
{
var attrs = typeof(Attributed)
.CustomAttributes
.Select(a => a.AttributeType)
.ToList();
}
sw.Stop();
Debug.WriteLine("Using .NET 4.5 CustomAttributes property: {0}", sw.Elapsed);
sw = Stopwatch.StartNew();
for (int i = 0; i < 10000; i++)
{
var attrs = typeof(Attributed)
.GetCustomAttributes(true)
.Select(a => a.GetType())
.ToList();
}
sw.Stop(); …Run Code Online (Sandbox Code Playgroud) 我有两个部分正在处理的网站:一个使用普通表单身份验证,另一个使用基于HMAC的身份验证.基于表单的表单正常工作(使用自定义成员资格提供程序除外).
最令人沮丧的是,默认情况下,如果决定使用表单身份验证,则会将所有401响应重定向到身份验证标记下的根Web.config中指定的loginUrl.为了让我的网站的HMAC部分关闭,我创建了一个单独的区域,这些控制器存在.但是,无论我在哪里放置<authentication mode="None"></authentication>标签(无论是在区域/视图Web.config,Web .config我已经放置在区域文件夹中,或者放在根Web.config中的位置标记下(这实际上会导致关于那个标签不属于那里的错误))我似乎无法让这件事停止将所有401重定向到loginUrl .
任何帮助都会非常感激,因为这会让我把头发撕掉.
顺便说一句,这个问题已经被问过不同的方式至少2 次没有(可行)的反应.虽然我的重点是将身份验证模式设置为None,但他们通常专注于更改路径的角色(在我看来[Authorize(Roles="role1,role2,role3")],每种方法的属性更容易),这使我的问题略有不同.如果这是不可能的,请告诉我,以便我能找到更好的方法来做到这一点.
我目前正在从事一个项目,该项目需要我从其端点与JSON一起输出XML。我有以下模型:
[DataContract(Namespace="http://www.yale.edu/tp/cas")]
[XmlType("serviceResponse")]
[XmlRoot(Namespace="http://www.yale.edu/tp/cas")]
public class ServiceResponse
{
[XmlElement("authenticationSuccess")]
public AuthenticationSuccess Success { get; set; }
[XmlElement("authenticationFailure")]
public AuthenticationFailure Failure { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
成功不为空时,输出如下:
<serviceResponse>
<authenticationSuccess />
</serviceResponse>
Run Code Online (Sandbox Code Playgroud)
现在,我可以很明显地看到,我没有为分配给名称空间的前缀分配前缀。我的问题是我找不到使用媒体格式化程序在MVC4中添加名称空间前缀的位置。我的global.asax中包含以下内容:
GlobalConfiguration.Configuration.Formatters.XmlFormatter.UseXmlSerializer = true;
GlobalConfiguration.Configuration.Formatters.XmlFormatter.RemoveSerializer(typeof(Models.ServiceResponse));
GlobalConfiguration.Configuration.Formatters.XmlFormatter.SetSerializer(typeof(Models.ServiceResponse), new Infrastructure.NamespaceXmlSerializer(typeof(Models.ServiceResponse)));
Run Code Online (Sandbox Code Playgroud)
我创建了一个基于XmlSerializer的自定义序列化程序,以尝试拦截写入请求并在此处添加名称空间列表。这种方法的问题是,现在我在每个可重写方法中都有断点,并且在序列化时都没有断点,这使我相信没有使用我的序列化器。
是否有一些内置的方法来完成我想做的事情,还是我不得不重新实现XmlMediaTypeFormatter以在序列化对象时传递名称空间?