我经常看到人们说某些软件"非常自以为是",或者微软倾向于编写"无意见"的框架.这究竟意味着什么?
半开玩笑地半开玩笑:为什么我不能++i++
用C语言,特别是在C#中?
我希望它增加值,在我的表达式中使用它,然后再次递增.
这可能听起来有点挑衅,但它实际上是一个真正的问题.如果您不喜欢这种语气,请随时编辑.
现在,就像我在10年前的短暂体验中所理解的那样,它是一个原始的文本编辑器,在滚动条发明之前在屏幕底部创建了一条可编辑的行,并有一些疯狂的捷径来克服这个限制.
有人可以解释一下如何使用它比用普通的VS.NET编辑器更高效吗?此外,为什么有人想使用viEmu,据说可以将你的VS.NET变成一个古老的vi?
我愿意试一试,但我需要一些动力来克服学习曲线.
关闭代码编辑器选项卡时,其他任何人的VS2010都非常慢?
打开.cs文件是即时的,但关闭选项卡需要大约8秒.我已经卸载了Power Commands和Productivity Power Tools,唯一安装的其他扩展是ReSharper(禁用它没有帮助)和Color Theme Editor.我确实安装了UI Automation Performance Fix.
我尝试了Visual Studio Optimizations问题中的大多数建议; 确保设置在本地保存; 禁用概述模式; 禁用反病毒 - 没有任何帮助.
谷歌搜索只发现通用的"VS2010是猪"投诉从Beta1时代回来.我甚至尝试从https://connect.microsoft.com/VisualStudio/Downloads(KB2201993,KB2123002,KB2106584,KB981107,B2268081)安装一些最近的热修复程序,但似乎没有任何帮助.
任何人的想法?
--update ---
另一条线索:它似乎只发生在一些解决方案中而不是其他解决方案!为什么它会特定于解决方案?!!
是否有相当于单反的.NET Reflector?快速谷歌搜索没有找到任何东西......或者我可以在Mono上运行Reflector(比如说,在Mac OS X中)?
- 编辑 -
我相信这是可能有多种答案(如其中一个有效的问题在这里).这不是讨论也不是民意调查.此外,这个问题显然不具争议性,因为到目前为止,没有一个受访者似乎互相争论.
- 原文 -
惊人!我现在做软件大约15年了,我仍然不知道我在做什么:)
说真的,我还在努力学习基础知识:
但最糟糕的是代码复杂性.我的代码往往变得邪恶.几周后它甚至会咬自己.我付出了巨大的努力来保持它简单,可读,可维护,优雅,美观,有凝聚力,松散耦合,基于非常直接的抽象.但所有这些努力都耗尽了!
不要误解我的意思,根据大多数人的标准,我的代码非常好.我的意思是它灵活,或多或少可单元测试,并做它需要做的事情.然而,它远非简单.
每一次变革都需要大量的重构.如果另一个人打开我的代码是为了添加一个功能,他就必须做一些愚蠢的事情.即使他是GENIUS,即使他是我自己的不熟悉代码库的CLONE,他也无法做到这一点.为什么,为什么上帝的缘故呢?是不是有一些方法论,一些技术,一些冥想技巧,什么都没有?!
如何保持我的代码简单?
我有一堆用.NET编写的win服务,它们使用相同的可执行文件和不同的配置.所有服务都写入同一个日志文件.但是,由于我使用相同的.exe,服务不知道自己的服务名称要放在日志文件中.
有没有办法我的服务可以以编程方式检索自己的名字?
在我的iPhone应用程序中,我需要显示对象计数然后我本地化,因为英语区分单数和复数,我做以下
//伪代码
if (objectList.count == 1) { NSLog(@"%@", NSLocalizedString(@"1 object", @"display one objects"); } else { NSLog(@"%@", NSLocalizedString(@"%d objects", @"display multiple objects"); }
这适用于英语,但在许多其他语言中,复数形式的名词不是简单地通过添加's'来构造的.
正如本页所解释的,语言之间有两点不同:
- 复数形式如何构建的形式不同.这是具有许多不规则性的语言的问题.例如,德国就是一个极端的案例.虽然英语和德语是同一语系(日耳曼语)的一部分,但在德语中很难找到几乎常规的复数名词形式(附加's').
- 复数形式的数量不同.对于那些只有罗马语和日耳曼语经验的人来说,这有点令人惊讶,因为这里的数字是相同的(有两个).
我应该如何在我的代码中处理这个问题?
发现自己试图找到这个设计模式的官方定义的链接,我相信我在Go4中看到但似乎无法在任何地方找到它.
class Processor{
ProcessParameter(AbstractParameter x){
x.Process(this);
}
ProcessParameter(ParameterA x){
... A-specific logic...
}
ProcessParameter(ParameterB x){
... B-specific logic...
}
}
abstract class AbstractParameter{
abstract void Process(Processor p);
}
class ParameterA : AbstractParameter{
override void Process(Processor p){
p.ProcessParameter(this);
}
}
class ParameterB : AbstractParameter{
override void Process(Processor p){
p.ProcessParameter(this);
}
}
Run Code Online (Sandbox Code Playgroud) 关于如何限制异步I/O操作和/或它们的延续的并发性有很多答案 - 使用自定义调度程序,SemaphorSlim等.我的问题是:在标准ASP.NET MVC中执行此操作是否有意义/WebAPI场景?
我们有一个典型的企业API,作为面向客户的SPA的后端.许多API请求涉及调用许多下游Web服务,我们现在通常使用TAP(async/await)将其转换为异步I/O. 许多远程服务调用是并行启动的,无需等待,然后等待批量使用Task.WhenAll
.有时WhenAll是在一定数量的任务上完成的,有时我们会在集合中为每个项目启动一个远程调用- 这会导致产生一个未知(但通常是低,十几个)的任务,然后用WhenAll等待它们.
据我所知,这会导致这些任务的延续(即反序列化其响应的逻辑)在ThreadPool上进行调度.这导致了我的问题:并行运行这些CPU绑定的延续不会导致ThreadPool上的压力过大?我们是否应该开发某种中间件,通过将它们安排到自定义调度程序来限制在单个请求中启动的异步I/O任务的延续的并发性?
通过减少任何给定请求分配的ThreadPool线程的数量,这将允许我们的应用程序更好的可伸缩性,这将允许在我们开始耗尽ThreadPool线程之前提供更多的并发请求(或者被ThreadPool限制增长)?
或者这是相当无用的,我们应该简单地相信默认的ThreadScheduler + ThreadPool能够将所有任务安排到可用的CPU核心上,无论多少并发请求?
这是一个非常大的公司的一个相当成熟的系统,由几十位专家(包括我自己)仔细审查,在一个美国州的生产中,即将进入国家层面的生产.诸如"先测量","知道你是否与CPU绑定","尝试AppInsights"和"不要试图比微软更聪明"等建议是我们自己明显想到的第一件事.我们正在寻求的指导级别更像是:有没有人在美国国家层面实现了一个全异步的ASP.NET Web API系统,并且拥有async/WhenAll并发的真实体验?
.net ×1
.net-core ×1
architecture ×1
asp.net ×1
asynchronous ×1
c ×1
c# ×1
concurrency ×1
iphone ×1
localization ×1
mono ×1
oop ×1
reflector ×1
scalability ×1
terminology ×1
vi ×1
viemu ×1
vim ×1