小编And*_*rew的帖子

使用IDisposable时放置try/catch的位置

我只是被建议将整个using块放在一个内部try,否则using范围将阻止异常被捕获.但是,using如果抛出异常,是否会阻止正确处理其资源?如果我有下面的代码,我应该把try块放在哪里?

using (connSQL = new SqlConnection(strConn)) 
{
    connSQL.Open();
    using (SqlCommand commSQL = new SqlCommand(strPreparedStatement, connSQL)) 
    {
        if (sqlParameters != null)
        {
            for (int i = sqlParameters.GetLowerBound(0); i <= sqlParameters.GetUpperBound(0); i++)
            {
                commSQL.Parameters.Add(sqlParameters[i]);
            }
        }
        drSQL = commSQL.ExecuteReader();
        dtReturn.Load(drSQL);

        commSQL.Parameters.Clear();
    }
}
Run Code Online (Sandbox Code Playgroud)

在此应用程序中,确保与数据库的连接不会因异常而开始累积更为重要.

c# idisposable try-catch

5
推荐指数
1
解决办法
1544
查看次数

将承诺传递给Angular-UI状态控制器

是否可以$state从外部控制器(例如触发状态的控制器)将承诺传递给UI.Router ?

我知道这会$state.go()带来许诺; 是否有可能用自己的承诺覆盖,直接自己解决这个承诺或使用新承诺解决它?

此外,文档说,返回的承诺$state.go()可以被另一个承诺拒绝(表示transition superseded),但我找不到任何指示如何在州内进行此承诺.

例如,在下面的代码中,我希望能够$scope.buttonClicked()在继续之前等待用户单击按钮()doSomethingElse().

我知道我可以发出一个事件,但由于承诺被深深地融入Angular,我想知道是否有办法通过promise.resolve/ 来做到这一点promise.reject.

angular.module('APP', ['ui.router'])
.config(['$stateProvider', function ($stateProvider) {
    $stateProvider
    .state('myState', {
        template: '<p>myState</p>',
        controller: ['$state', '$scope', '$q', function ($state, $scope, $q) {
            var deferred = $q.defer();

            $scope.buttonClicked = function () {
                deferred.resolve();
            }
        }]
    });
}])
.controller('mainCtrl', ['$state', function ($state) {
    $state.go('myState')
    .then(doSomethingElse)
}]);
Run Code Online (Sandbox Code Playgroud)

更新 我接受了@ blint的答案,因为它让我最接近我想要的.下面是一些代码,可以更好地充实这个答案的想法.我不认为我写这个方式是一个非常优雅的解决方案,如果有人可以提出一个更好的方法来解决触发状态的承诺,我很高兴.

我选择的解决方案是像你通常在你的控制器中链接你的承诺,但留下一个$scope.next()附加到该范围的方法(或类似的东西)来解决/拒绝承诺.由于状态可以继承调用控制器的作用域,因此它可以直接调用该方法,从而解析/拒绝该promise.以下是它的工作原理:

首先,使用调用$scope.next()方法的按钮/控制器设置状态:

.config(function ($stateProvider) …
Run Code Online (Sandbox Code Playgroud)

javascript promise angularjs angular-ui angular-ui-router

5
推荐指数
1
解决办法
4966
查看次数

无法连接到生产Apple推送通知服务器

使用开发认证和gateway.sandbox.push.apple.com向配置的设备发送通知没有问题.但现在我们的应用程序已经在商店中,看起来我们甚至无法连接到生产apn服务器(gateway.push.apple.com)来发送推送,即使我们正在使用创建证书的机器第一名.

我们通过PushMeBaby运行它,看起来像gateway.push.apple.com的连接被拒绝了.当它执行握手(SSLHandshake(context))时,结果是错误代码-9044,或者errSSLConnectionRefused - 对等体在响应之前删除了连接.

我对ssl和加密有足够的了解,知道我不知道什么,但我很确定问题是(或者从我们的生产SSL证书开始).推送通知已启用iPhone门户中的生产(我们有一个绿灯).证书已经安装在运行PushMeBaby的机器上,我在钥匙串中看到了证书和签名密钥.当我导出开发推送证书并在PushMeBaby中使用它时,我能够连接(和发送推送)没问题.但凭借生产证书,我们无处可去.我们在两台独立的计算机上反复撤销并重新创建了dev证书和prod证书,所以如果这是人为错误,我们会反复进行.

可能有一个因素是我的钥匙串上有"团队代理"钥匙,但我不是她.我可以并且已经将二进制文件提交到App商店而没有任何问题.

此外,我们在创建生产证书后未设置配置文件.我不确定这是否是一个因素,但我看不出它对店内应用程序的影响.

我当然希望有人有一些想法,因为我不在他们身边!

iphone ssl notifications push

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

页面刷新后,ExternalInterface在IE中不起作用

我在IE中有一个奇怪的情况,在我点击"刷新"后,JS无法使用ExternalInterface调用闪存.我知道电影正在加载,执行该操作的代码ExternalInterface.addCallback()似乎没有任何错误

以下是重现步骤的简要说明:

  1. 打开IE并首次加载电影,可以使用ExternalInterface回调方法.
  2. 如果我点击刷新,回调方法不可用,我收到错误Object doesn't support this property or method.
  3. 如果我清除缓存并刷新页面,它们将再次可用.
  4. 如果我再次点击刷新而不清除缓存,则它们不可用.
  5. 如果我关闭浏览器并重新打开,它们将再次可用.

我之前遇到过这种情况,我很确定下载和实例化swf所需的额外延迟是允许ExternalInterface正确设置的.之前解决这个问题的方法是在swf的url末尾添加一个随机数,这样它就不会从缓存中使用,但这不是一个真正的解决方案.

有谁知道如何解决这个问题?

编辑:

我还应该提到,刷新后,'ExternalInterface.available'为'true',但'ExternalInterface.objectId'为'null'.

我试过随机化对象的值id和嵌入name和容器div的id,并且在每种情况下,ExternalInterface.objectId仍然存在null.


更多信息:

我无法看到我插入电影的方式会有什么影响,但我想我会包含代码以确保.我的电影不受"点击激活"问题的影响,我不想在这种情况下使用SWFObject,因为在HTML5音频不可用的情况下,flash电影是一个后备.

var docContainer = document.createElement('div');
docContainer.innerHTML = '<object '
        + 'classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" '
        + 'codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=10,0,0,0" '
        + 'id="mp3player" '
        + 'width="300" '
        + 'height="500">'
    + '<param name="allowScriptAccess" value="always" />'
    + '<param name="movie" value="mp3player.swf" />'
    + '<param name="quality" value="high" />'
    + '<param name="bgcolor" value="#ffffff" />'
    + '<embed ' 
        +'src="mp3player.swf" '
        + …
Run Code Online (Sandbox Code Playgroud)

javascript flash internet-explorer actionscript-3

4
推荐指数
2
解决办法
4237
查看次数

防止在Android浏览器中滚动

有没有办法阻止在Android浏览器中滚动呈现的HTML页面?以下内容似乎对Android浏览器中的页面滚动没有任何影响:

var preventDefault = function(e) {
    e.preventDefault();
    return false;
};
document.addEventListener('touchmove',preventDefault,false);
document.body.addEventListener('touchmove',preventDefault,true);
window.addEventListener('touchmove',preventDefault,true);
Run Code Online (Sandbox Code Playgroud)

(我试过开和关.)

在我看来,Android Webkit使"窗口"与文档的长度相同,因此在浏览器本身上进行滚动,而不是在文档正文或DOM窗口对象上进行滚动.有点奇怪的是,这正是iOS上的webkit所做的,但上面的代码仍然有效.

android scroll webkit

4
推荐指数
1
解决办法
5084
查看次数

使用requirejs进行无头单元测试的设置

这似乎是一种搜索圣杯,但我正在寻找一个JavaScript单元测试环境的设置.要求是:

  • 测试需要AMD模块
  • 通过模拟依赖关系来隔离每个模块
  • 可在开发期间在浏览器中测试
  • 可在无头环境中测试,以实现持续集成

除了无头嘲笑之外的一切似乎都是直截了当的.

到目前为止,我已经测试了JS-Test-Driver,KarmaPhantomjs,并且为了模拟,我使用了SquireIsolate - 以及在这里答案中的代码实现,似乎没有什么工作正常.我一次又一次地遇到的主要问题是测试框架在所有测试运行之前返回 - 主要是因为模拟需要它们自己的require()依赖项.

任何帮助(或脚手架)都会有所帮助!

[编辑]

我在Github上建立了一个基本的,有效的Karma项目,并使用chai-expect作为匹配库,进行了一些模拟测试.我将尝试添加更多有用的文档,但如果您熟悉Karma,则扩展应该非常简单.只是git clone然后npm install让它运行.

javascript unit-testing mocking requirejs

4
推荐指数
1
解决办法
1552
查看次数

CRONTAB没有完成svndump

我刚刚发现我创建的SVN存储库的自动转储已经提前中断,基本上只有一半的转储存在.这不是紧急情况,但我讨厌处于这种情况.它首先打败了自动备份的目的.

我正在使用的命令如下.如果我在终端中手动执行它,它就完成了; output.txt文件大小为16兆,包含所有335个修订版.但如果我把它留给crontab,它会在中途标记,大约8.1兆,只有前169个版本.

# m h  dom mon dow   command
18 00 * * * svnadmin dump /var/svn/repos/myproject > /home/andrew/output.txt 
Run Code Online (Sandbox Code Playgroud)

我实际上保存到一个过时的gzip文件,并且服务器上没有空间,所以这不是磁盘空间问题.它似乎在两秒后保释,所以这可能是一个时间问题,但过去一个月的每一次文件大小都是一样的,所以我不认为那也是.crontab是否在有限的内存空间内执行?

svn crontab

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

使用JS编写一个noscript标记

有没有任何实际的理由说明你<noscript>用JavaScript 编写标签document.write()?我们的广告部门多年来一直这样做,在我指出之后仍然这样做.我99%肯定这是因为一个古老的广告模板是由一个不知道自己在做什么的人编写的,没有人想过改变它,因为"为什么要解决没有破坏的东西?" 或者也许有人正在阅读他们的"最佳实践"错误("总是包含已禁用JS的浏览器的替代方案").或许我不知道这是一个非常好的理由.

我能想到的唯一可想到的事情是,你可以使用它来修改DOM,而不会在页面上显示可见的东西,并且可能像模板一样使用该内容供以后使用,但这看起来相当牵强.

(编辑)

在这种情况下,标签包含一个标准<a href="/path/to/advertiser"><img src="/path/to/image" /></a>.因为这是原始的,非动态的广告代码看起来像,这让我觉得这只是复制粘贴的垃圾.

我应该说的另一件事是我不是百分之百确定这是一个过分的原因是因为最近放置了html模板的模式<script type="text/x-my-custom-template">...</script>.我怀疑有人会在我们自己的基础上提出这个问题,但这可能是一个非常聪明的人的标准广告实践.

javascript dom

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

缺少PHP脚本<?php将无法运行

我已经为Yii下载了一个模块库,其中每个PHP文件都以此开头:

<?
Run Code Online (Sandbox Code Playgroud)

...而不是:

<?php
Run Code Online (Sandbox Code Playgroud)

在我的本地Apache服务器上,这些文件作为平面文件而不是可执行脚本加载,尽管这些文件都被修改为可写和可执行文件.有没有办法强制这些文件作为PHP运行,或者我是否必须修改所有文件(并且可能有一百个).

php apache

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

解决 webpack 中外部子模块的依赖

我想包括一个模块化的第三方库(PhysicsJS)到我的WebPack项目。这个库是 AMD 和 CommonJS 友好的,并且有我想要访问的格式良好的子模块。然而,它主要是为 RequireJS 构建的,通过它的packages定义规范 in require.config(),所以入口点不是标准的index.js. 相反,入口点是physicsjs.js.

换句话说,我似乎无法弄清楚如何配置 webpack 来解析库的主文件及其子模块。看起来如果库的入口点不是index.js并且它有子模块,那么你就不走运了,我简直不敢相信这是正确的,所以我一定错过了一些东西。

那么,如何才能做出以下陈述来解决呢?

require('physicsjs'); // entry point
require('physicsjs/bodies/rectangle');  // submodule
Run Code Online (Sandbox Code Playgroud)

我尝试过此配置的变体:

resolve: {
    modulesDirectories: [
        'js/bower_components'
    ],
    alias: {
        'physicsjs': 'PhysicsJS/dist/',
        // doesn't find physicsjs.js

        'physicsjs': 'PhysicsJS/dist/physicsjs.js'
        // doesn't find the submodules
    }
},
Run Code Online (Sandbox Code Playgroud)

目录结构如下所示:

+ js
  - main.js
  + bower_modules
    + PhysicsJS
      + dist
        - physicsjs.js // module entry point
        + bodies
          - rectangle.js // desired submodule …
Run Code Online (Sandbox Code Playgroud)

javascript dependencies physicsjs webpack

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