小编Mik*_*rds的帖子

我可以调用$(document).ready()来重新激活所有on load事件处理程序吗?

有没有人碰巧知道IF以及我如何重新调用所有的on-load事件处理程序?我正在引用一些我无法控制的.js文件,这些.js库在$(document).ready()中进行初始化,遗憾的是,它们没有提供任何简单的函数来重新初始化.

我目前正在尝试用ajax调用中的内容替换大的div块,因此我必须重新初始化外部库.因此,只需调用$(document).ready()以重新初始化一切就好了.

到目前为止,我已经在ajax调用上尝试了这个:

success: function(data) {
    alert('1'); // Displays '1'
    $('#content').html(data);
    alert('2'); // Displays '2'
    $(document).ready();
    alert('3'); // Does not display
}
Run Code Online (Sandbox Code Playgroud)

呼叫$(document).ready();也很安静.JavaScript控制台显示没有错误.有谁知道这是否可能(没有修改javascript库文件)?

javascript jquery onload

39
推荐指数
4
解决办法
7万
查看次数

Amazon S3 Cloudfront部署最佳实践

我们当前的网站计划是使用亚马逊的Cloudfront服务作为资产文件(如CSS,JavaScript和图像)以及任何其他静态文件的CDN.

我们目前在S3中有一个包含所有这些静态文件的存储桶.这些文件根据它们分为不同的文件夹,"脚本"是JS文件,"图像"是图像等yadda yadda yadda.

因此,我从一开始就没有意识到,一旦您将一个Bucket从S3部署到Cloudfront Distribution,那么对该存储桶的每个后续更新都不会再次部署到同一个Distribution.因此,每次进行静态文件更新时,您似乎都必须将存储桶重新部署到另一个Cloudfront实例.

这对于图像来说很好,因为我们可以轻松确保如果图像发生了变化,那么我们只需创建一个新图像.但是,对于CSS和JS来说,这很难做到.

所以,这让我想到了最佳实践问题:

  1. 最佳做法是为每个生产部署创建另一个Cloudfront Distribution吗?这里的问题是导致CNAME记录出现问题.
  2. 最好不要在Cloudfront中存储CSS和JS,因为这些文件的性质,以及它们是否需要轻松修改?似乎答案是否定的,因为这是CDN的目的.
  3. 是否还有一些我不了解的Cloudfront方法?

cdn amazon-s3 amazon-cloudfront

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

HttpClient GetAsync在Windows 8上的后台任务中失败

我有一个Win RT应用程序,它有一个后台任务,负责调用API来检索自己更新所需的数据.但是,我遇到了一个问题; 在后台任务之外运行时,调用API的请求可以正常工作.在后台任务中,它失败了,并且还隐藏了任何可以帮助指出问题的异常.

我通过调试器跟踪此问题以跟踪问题点,并验证执行在GetAsync上停止.(我传递的URL有效,URL在不到一秒的时间内响应)

var client = new HttpClient("http://www.some-base-url.com/");

try
{
    response = await client.GetAsync("valid-url");

    // Never gets here
    Debug.WriteLine("Done!");
}
catch (Exception exception)
{
    // No exception is thrown, never gets here
    Debug.WriteLine("Das Exception! " + exception);
}
Run Code Online (Sandbox Code Playgroud)

我读过的所有文档都说允许后台任务拥有所需的网络流量(当然会受到限制).所以,我不明白为什么会失败,或者知道任何其他方法来诊断问题.我错过了什么?


UPDATE/ANSWER

感谢史蒂文,他指出了解决问题的方法.在确保定义的答案就在那里,利益在这里是后台任务前和修复程序后:

之前

public void Run(IBackgroundTaskInstance taskInstance)
{
    BackgroundTaskDeferral deferral = taskInstance.GetDeferral();

    Update();

    deferral.Complete();
}

public async void Update()
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

public async void Run(IBackgroundTaskInstance taskInstance) // added 'async'
{
    BackgroundTaskDeferral deferral = taskInstance.GetDeferral();

    await Update(); // added …
Run Code Online (Sandbox Code Playgroud)

c# background-process windows-8 windows-runtime

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

什么相当于迅捷的CAGradientLayer?

我正在尝试移植一些创建渐变层的Objective-C代码

CAGradientLayer *gradientLayer = [CAGradientLayer layer];
gradientLayer.colors = colors;
gradientLayer.locations = locations;
gradientLayer.frame = view.bounds;

[view.layer insertSublayer:gradientLayer atIndex:index];
Run Code Online (Sandbox Code Playgroud)

但是在Swift中,CAGradientLayer似乎没有静态"层"方法或构造函数.尝试将其用作类型会产生:

let a:CAGradientLayer? = null
Run Code Online (Sandbox Code Playgroud)

错误:使用模块"CAGradientLayer"作为类型

据我所知,CAGradientLayer不是我可以导入的模块.在Swift中执行渐变图层的正确方法是什么?

core-animation ios swift ios8

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

在AWS QLDB中提交事务时如何获取/计算CommitDigest?

我一直在阅读文档,试图弄清楚如何在QLDB中提交事务,为了做到这一点,CommitDigest需要a,文档将其描述为:

指定要提交的事务的提交摘要。对于每个活动事务,必须传递提交摘要。如果客户端上计算的摘要与QLDB计算的摘要不匹配,则QLDB会验证CommitDigest并拒绝提交,并显示错误。

因此,必须计算CommitDigest,但在此示例中,我不太确定其计算需要什么:

// ** Start Session **
const startSessionResult = await qldbSession.sendCommand({
        StartSession: {
            LedgerName: ledgerName
        }
    }).promise(),
    sessionToken = startSessionResult.StartSession!.SessionToken!;

// ** Start Transaction **
const startTransactionResult = await qldbSession.sendCommand({
        StartTransaction: {},
        SessionToken: sessionToken
    }).promise(),
    transactionId = startTransactionResult.StartTransaction!.TransactionId!;

// ** Insert Document **
const executeStatementResult = await qldbSession.sendCommand({
        ExecuteStatement: {
            TransactionId: transactionId,
            Statement: `INSERT INTO sometable { 'id': 'abc123', 'userId': '123abc' }`
        },
        SessionToken: sessionToken
    }).promise(),
    documentId = getDocumentIdFromExecuteStateResult(executeStatementResult)

// ** Get Ledger Digest
const getDigestResult …
Run Code Online (Sandbox Code Playgroud)

node.js aws-sdk amazon-qldb

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

锁定一个非线程安全的对象,这是可以接受的做法吗?

我在前几天发表的评论中对此感到悲痛,所以我想发布这个问题,试图让人们告诉我,我疯了,我会接受,或者告诉我,我可能是对的,我也很乐意接受.我也可以接受两者之间的任何事情.

假设您有一个非线程安全的对象类型,例如Dictionary<int, string>.为了论证,我知道你也可以使用ConcurrentDictionary<int, string>哪个是线程安全的,但我想谈谈在多线程环境中围绕非线程安全对象的一般做法.

请考虑以下示例:

private static readonly Dictionary<int, string> SomeDictionary = new Dictionary<int, string>();
private static readonly object LockObj = new object();

public static string GetById(int id)
{
  string result;

  /** Lock Bypass **/
  if (SomeDictionary.TryGetValue(id, out result)
  {
    return result;
  }

  lock (LockObj)
  {
    if (SomeDictionary.TryGetValue(id, out result)
    {
      return result;
    }

    SomeDictionary.Add(id, result = GetSomeString());
  }

  return result;
}
Run Code Online (Sandbox Code Playgroud)

锁定模式称为Double-Checked Locking,因为如果已使用该id初始化字典,则会主动绕过锁定.在锁中调用字典的"添加"方法,因为我们只想调用该方法一次,因为如果您尝试添加具有相同键的项,它将引发异常.

我的理解是,这种锁定模式基本上同步了Dictionary的处理方式,这使它成为线程安全的.但是,我得到了一些负面评论,说明它实际上是如何使其线程安全的.

所以,我的问题是,在多线程环境中非线程安全对象的锁定模式是否可以接受?如果没有,那么什么是更好的模式?(假设没有相同的C#类型是线程安全的)

c# multithreading locking thread-safety

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

使用来自控件的动态图像为WP8创建实时磁贴会抛出"NotSupportedException"

我正在使用以下代码来获取自定义用户控件,从中制作位图,然后将其保存到隔离存储中以用于WP8 Live Tile.

public static void UpdateTile()
{
    var frontTile = new LiveTileRegular(); // Custom Control
    frontTile.Measure(new Size(173, 173));
    frontTile.Arrange(new Rect(0, 0, 173, 173));

    var bmp = new WriteableBitmap(173, 173);
    bmp.Render(frontTile, null);
    bmp.Invalidate();

    const string filename = "/LiveTiles/LiveTileRegular.jpg";

    using (var isf = IsolatedStorageFile.GetUserStoreForApplication())
    {
        if (!isf.DirectoryExists("/LiveTiles"))
        {
            isf.CreateDirectory("/LiveTiles");
        }

        using (var stream = isf.OpenFile(filename, FileMode.OpenOrCreate))
        {
            bmp.SaveJpeg(stream, 173, 173, 0, 100);
        }

        Debug.WriteLine("Image Exists: " + (isf.FileExists(filename) ? "Yes" : "No")); // Displays "Yes"
    }

    ShellTile.ActiveTiles.First().Update(new FlipTileData
    {
        Title = …
Run Code Online (Sandbox Code Playgroud)

c# isolatedstorage dynamic-image-generation live-tile windows-phone-8

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