小编Oha*_*der的帖子

活动微调器 - 动画GIF,CSS3动画或JavaScript(spin.js)?

我想在我的网站上添加一个微调器,我想知道使用哪种方法.我的初步调查结果如下(请参阅链接和为什么不动画GIF而不是动画CSS精灵?):

动画GIF

优点

  • 根据特定的微调器,可以提供最小的占用空间(默认值为 673字节,来自AjaxLoad)
  • 浏览器兼容性高
  • 简单易用的数据绑定(只需绑定到img标签的可见性)

缺点

  • 下载后无法更改GIF
  • 无法可靠地启动/停止Gif动画
  • 所有实例以同步方式同时动画
  • 动画可能会在某些情况下冻结,例如HTML操作

JavaScript(spin.js)

优点

  • 最高的浏览器兼容性(甚至可以回退到VML)
  • 高度动态和可定制

缺点

  • 占地面积更大(spin.min.js 2.0.1 为4.02KB)
  • 可能的CPU使用问题(链接)

CSS

优点

  • 动态和可定制
  • 纯粹声明(没有JS)

缺点

  • 更大的占地面积(CSSLoad的默认微调器为4.32KB)
  • 最差的浏览器支持(需要CSS3)
  • 可能的CPU使用问题(链接)

你同意上面的分析吗?

在简单的情况下,使用GIF是否有意义,因为它们似乎在保持简单的同时兼容相当的?

javascript user-interface animated-gif css3

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

挂钩SetConsoleCtrlHandler时没有堆栈跟踪的NullReferenceException

使用代码从这个线程挂钩控制台关闭事件,我有时得到一个NullReferenceException没有堆栈跟踪(大多数时候我没有).它发生在发布和调试中,并且"抛出异常时中断"没有帮助(它中断,但堆栈跟踪仍为空).当我正常退出我的应用程序时(我正在点击进入并因此释放a Console.ReadLine),我从未得到此异常.应用程序事件日志有2个条目:

应用程序:MyApp.exe Framework版本:v4.0.30319描述:由于未处理的异常,进程已终止.异常信息:System.NullReferenceException Stack:

和:

故障应用程序名称:Gateway.exe,版本:1.0.0.0,时间戳:0x4e284101故障模块名称:未知,版本:0.0.0.0,时间戳:0x00000000异常代码:0xc0000005故障偏移:0x004d41ce故障进程id:0xf00故障应用程序启动时间:0x01cc47b827e19a6e错误应用程序路径:C:\ dev\MyApp.exe错误模块路径:未知报告ID:689c1caa-b3ab-11e0-ba1b-00247e777f12

谷歌已经发现了一些漏洞问题SetConsoleCtrlHandler,所以我不知道这是否是一个败仗.

c# console hook

7
推荐指数
1
解决办法
2320
查看次数

捕获通用非致命异常

传统观点认为我们应该只捕获我们期望的特定异常类型:

try
{           
    int.Parse(str); //I am aware of TryParse(), this is just for the sake of example
}
catch (FormatException ex)
{
    Console.WriteLine (ex);
}
catch (OverflowException ex)
{
    Console.WriteLine (ex);
}
Run Code Online (Sandbox Code Playgroud)

但是,有时我们并不关心发生了哪个异常(只要它不是致命的),可能是因为我们只是想让用户知道发生了错误.在这些情况下,我们可以这样做:

try
{           
    Foo();
}
catch (Exception ex)
{
    if (IsCriticalException(ex))
    {
        Environment.FailFast("System Error", ex);
    }

    Console.WriteLine ("Error running Foo: {0}", ex);
}   
Run Code Online (Sandbox Code Playgroud)

在哪里IsCriticalException可以类似地实施System.ClientUtils.IsCriticalException.由于以下几个原因,我一般都赞成这种方法:

  1. 有些方法可能抛出许多异常类型,捕获它们可能很麻烦.例如,File.Open可以抛出九种不同类型的异常.
  2. 某些方法可能会抛出未记录的异常.这可能是由于缺少文档,或者是由于某些错误.例如,由于一个模糊的bug ,ICommunicationObject.Close实际上可能会抛出ArgumentException.有些方法甚至不能静态地知道它们可以抛出哪些异常,因为它们动态地加载其他模块/插件.据推测,他们可以用他们自己已知的例外情况包装所有这些"外部"例外,但我相信并非所有例外都有.

这种方法的批评者认为方法的例外是其合同的一部分.如果抛出的异常不是本合同的一部分,我们应该假设其状态已损坏.我们还会在方法中发现一个错误(因为我们已经吞下了意外的异常,否则我们就不会发现这个错误).然后我们可以将这个bug传递给框架的开发人员,这是一个胜利 - 特别是如果这些开发人员在我们公司,所以我们"帮助自己"可以这么说.

我承认,批评者提出了有效的观点,但我觉得他们有点理想主义.实际上,我认为通用的非致命异常捕获在很多情况下都是有意义的.我有道理吗?

相关阅读:

.net c# exception-handling

7
推荐指数
1
解决办法
1068
查看次数

XCode 6.3立即在抛出的Objective-C++异常上引发SIGABRT

考虑以下目标-C++代码

- (BOOL)application:(UIApplication *)application
        didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    try
    {
        throw std::logic_error("error message");
    }
    catch (const std::exception& ex)
    {
        NSLog(@"%s", ex.what());
    }
    return YES;
}
Run Code Online (Sandbox Code Playgroud)

在XCode 6.2中,它按预期工作(记录"错误消息").但是,由于我们升级到6.3,抛出的line(throw std::logic_error...)会引发SIGABRT(堆栈跟踪只包含_cxa_throw_pthread_kill超出applicationdidFinishLaunchingWithOptions)并使应用程序崩溃.

这只发生在我们的应用程序中 - 当我将完全相同的代码复制到新项目时,一切都运行良好,即使使用相同的编译器标志.

我已经尝试指定-fexceptions并且 -fnon-call-exceptions无效(相同的行为).

更新 似乎这只发生在32位模拟器上(它适用于实际设备和64位模拟器).

更新2 我们将其缩小到UserVoice iOS SDK.只需通过链接就可以清楚地在新的vanilla项目中显示该行为(确保调用某个方法以便进行链接).我们还没有调查该库中究竟是什么导致了它,我们还有一些内部库引发相同的行为(但它们应该与微软以外的任何人无关).

objective-c xcode6

7
推荐指数
1
解决办法
1248
查看次数

Azure订阅ID,AAD租户ID和AAD App客户端ID是否被视为secret/PII?

我想在遥测中记录以下内容以用于诊断和使用目的:

  • Azure订阅ID
  • AAD租户ID
  • AAD App客户端ID

我应该将它们视为秘密/ PII并对它们进行哈希/加密吗?

(不言而喻,我不会以任何形式或形式保留客户的秘密)

logging azure pii azure-active-directory telemetry

7
推荐指数
1
解决办法
1484
查看次数

使用ARM将Azure RBAC应用于资源

有没有办法通过ARM在资源级别应用RBAC规则?我能够按照此Microsoft指南在资源组级别而不是资源上添加用户/角色。特别是,我试图通过ARM向AppInsights添加新的读者角色。但是,当我调整范围时,模板只会因以下错误而失败:

"error": {
"code": "InvalidCreateRoleAssignmentRequest",
"message": "The request to create role assignment '{guid}' is not valid. Role assignment scope '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/Microsoft.Insights/components/{resourceGroupName}' must match the scope specified on the URI  '/subscriptions/{resourceGroupName}/resourcegroups/{resourceGroupName}'."
  }
Run Code Online (Sandbox Code Playgroud)

我不知道范围变量是什么,如果不能更改。我应该在其他地方修改范围以使此工作正常吗?

提前致谢!

json rbac azure azure-rm-template

7
推荐指数
2
解决办法
868
查看次数

覆盖非不可变类型中的==运算符

用于重载equals()和操作指引MSDN ==状态:

默认情况下,operator ==通过确定两个引用是否指示相同的对象来测试引用相等性,因此引用类型不需要实现operator ==以获得此功能.当一个类型是不可变的,意味着实例中包含的数据不能被改变时,重载operator ==来比较值的相等而不是引用相等可能是有用的,因为作为不可变对象,只要它们具有它们,它们就可以被认为是相同的相同的价值.不建议在非不可变类型中覆盖operator ==.

任何人都可以解释大胆背后的推理吗?

编辑 - 此外,该指南是否==仅与运营商相关,还是也适用于该Equals方法?

.net c# equality operator-overloading immutability

6
推荐指数
1
解决办法
1506
查看次数

在TestCleanup中传递参数

我想在单元测试中执行TestCleanup,但我需要将参数传递给清理方法.但由于自动调用默认的TestCleanup,我无法将任何参数传递给它.

有人可以建议一种方法吗?

.net unit-testing mstest

6
推荐指数
1
解决办法
1269
查看次数

Azure存储模拟器(v4.2)和Micorosft.WindowsAzure.Storage(v7.0.0)=> Azure SDK 2.9的错误请求

当尝试调用CloudBlobContainer的CreateIfNotExistsAsync方法(连接字符串的"UseDevelopmentStorage = true")时,我收到以下错误:

例外:Microsoft.WindowsAzure.Storage.StorageException:远程服务器返回错误:(400)错误请求.---> System.Net.WebException:远程服务器返回错误:(400)错误请求.在Microsoft.WindowsAzure.Storage.Shared.Protocol.HttpResponseParsers.ProcessExpectedStatusCodeNoException [T](HttpStatusCode expectedStatusCode,HttpStatusCode actualStatusCode,T retVal,StorageCommandBase`1 cmd,Exception ex)中c:\ Program Files(x86)\ Jenkins\workspace\release_dotnet_master\Lib\Common\Shared\Proto col\HttpResponseParsers.Common.cs:第50行....

在异常堆栈跟踪结束时,我看到以下信息:

请求信息请求ID:6981043b-1ca2-4788-ba8e-bab39fb95956 RequestDate:星期五,2016年4月8日19:18:21 GMT StatusMessage:此版本的存储仿真器不支持此请求的REST版本.请将存储模拟器升级到最新版本.有关详细信息,请参阅以下URL:http://go.microsoft.com/fwl ink /?LinkId = 392237

我正在使用当前最新的模拟器(v4.2)以及当前最新的 Micorosft.WindowsAzure.Storage库(v7.0.0).我应该使用其他什么吗?

azure azure-storage azure-storage-blobs

6
推荐指数
1
解决办法
814
查看次数

既然 Storage Sense 可以随时清理 %TEMP% 文件夹,为什么还要使用它呢?

从 Windows 10 开始,Storage Sense 允许用户指定%TEMP%文件夹清理频率为每天一次。从技术上讲,如果将其设置为在磁盘空间不足时激活,它可以更频繁地运行,具体取决于用户的磁盘使用模式。

鉴于此,这样做的意义何在?%TEMP%文件夹的意义何在?我如何使用一个文件夹,让我放在那里的每个文件在技术上可以在我完成写入后立即被系统删除?

这是一个真实的场景,这让我印象深刻(为简洁起见,简化了代码):

var ffmpegPath = Path.Combine(Path.GetTempPath(), "ffmpeg");
DownloadFfmpeg(path: ffmpegPath); 

foreach (var videoFile in videoFiles) { //suppose there are dozens of files to process
   DoSomeHeavyProcessing(ffmpegPath);   //suppose each file takes an hour to process
}
Run Code Online (Sandbox Code Playgroud)

这在最初的几个小时内效果很好,但随后在某个任意时间点,下载的ffmpeg文件夹被删除,并且无法处理所有后续文件。事实上,如果我理解正确的话,理论上即使是这样的代码也可能会失败:

var path = Path.Combine(Path.GetTempPath(), "foo");
File.WriteAllText(path, "bar");
Console.WriteLine(File.ReadAllText(path));
Run Code Online (Sandbox Code Playgroud)

现在,我知道如何解决这个问题 - 只需使用%APPDATA%,%LOCALAPPDATA%%PROGRAMDATA%。但这就是重点 - 自从 Storage Sense 出现以来,为什么我会使用%TEMP%而不是以前的文件夹?

programdata temp appdata windows-10

6
推荐指数
1
解决办法
2291
查看次数