小编m90*_*m90的帖子

IE9问题jQuery load()事件没有触发

我正在尝试预加载几个图像,并希望我的页面保持不变,直到所有图像都加载完毕.所以我在做的是:

var numPics = $('#bg img').length;
var picsLoaded = 0;
$('#bg img').load(function(){
    picsLoaded++;
    if (picsLoaded == numPics){
        buildPage();
    }

});
Run Code Online (Sandbox Code Playgroud)

除了(你猜对了)IE之外,这在所有浏览器中都能正常工作.不知何故,Internet Explorer将下载所有图片(我可以看到它们被加载到开发工具中),但只会随机启动load-Event(每次刷新都会给我一个新的数字,通常它会计入大约一半的我尝试了不同版本的jQuery(我最初从1.6.1开始)并且在这个网站上也读过这样的问题,但还没找到任何答案.

此外,它似乎不是缓存相关的问题,因为破坏它(或将随机查询字符串附加到图像源)没有任何区别.

jquery internet-explorer-9

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

如何授予对 AWS Secrets Manager 的轮换 Lambda 访问权限

使用无服务器框架,我尝试构建一个 Lambda 函数,该函数会定期轮换存储在 AWS Secrets Manager 中的秘密。

我在配置 Secret Manager 执行 Lambda 所需的角色时遇到问题。在我的serverless.yml我定义了以下资源:

resources:
  Resources:
    RotateKeysRole:
      Type: AWS::IAM::Role
      Properties:
        RoleName: rotate-keys-role
        ManagedPolicyArns:
          - arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole
        AssumeRolePolicyDocument:
          Version: '2012-10-17'
          Statement:
            - Effect: Allow
              Principal:
                Service:
                  - lambda.amazonaws.com
                  - secretsmanager.amazonaws.com
              Action: sts:AssumeRole
Run Code Online (Sandbox Code Playgroud)

并将此角色附加到轮换 Lambda,如下所示:

functions:
  rotateKeys:
    handler: lambdas.rotate_keys.handler
    role: RotateKeysRole
Run Code Online (Sandbox Code Playgroud)

然而,当我尝试设置 Secrets Manager 以使用此 Lambda 来轮换密钥时,我会收到以下错误消息:

Secrets Manager 无法调用指定的 Lambda 函数。确保函数策略授予对主体 secretsmanager.amazonaws.com 的访问权限

这让我感到困惑,因为指定了这个主体。检查 IAM 控制台中的角色并没有发现任何我觉得有问题的地方。

在这种情况下如何正确配置角色设置?

amazon-web-services amazon-iam aws-lambda serverless-framework aws-secrets-manager

9
推荐指数
2
解决办法
6270
查看次数

如果它是变音符号,fgetcsv正在吃字符串的第一个字母

我将内容从Excel生成的CSV文件导入XML文档,如:

$csv = fopen($csvfile, r);
$words = array();

while (($pair = fgetcsv($csv)) !== FALSE) {
    array_push($words, array('en' => $pair[0], 'de' => $pair[1]));
}
Run Code Online (Sandbox Code Playgroud)

插入的数据是英语/德语表达.

我将这些值插入XML结构并输出XML,如下所示:

$dictionary = new SimpleXMLElement('<dictionary></dictionary>');
//do things
$dom = dom_import_simplexml($dictionary) -> ownerDocument;
$dom -> formatOutput = true;

header('Content-encoding: utf-8'); //<3 UTF-8
header('Content-type: text/xml'); //Headers set to correct mime-type for XML output!!!!

echo $dom -> saveXML();
Run Code Online (Sandbox Code Playgroud)

这工作正常,但我遇到一个非常奇怪的问题.当String的第一个字母是变音符号(如in ÖsterreichÄgypten)时,将省略该字符,从而产生gyptensterreich.如果变音符号位于String(Russische Föderation)的中间,则会正确传输.对于喜欢ß或类似的é东西也是如此.

所有文件均采用UTF-8编码,并以UTF-8格式提供.

对我来说,这似乎很奇怪,而且我可能会错过一些东西,这里有很多聪明的人.

php xml csv diacritics character-encoding

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

应用程序缓存错误事件:资源提取失败(-1)

我试图mp4在本地应用缓存中存储一个视频文件(相当小~2.5MB).

清单看起来像:

CACHE MANIFEST
viddy.mp4
Run Code Online (Sandbox Code Playgroud)

Chrome(22.0.1229.94米)将在控制台中记录以下内容:

Creating Application Cache with manifest http://example.net/cache.manifest
Application Cache Checking event
Application Cache Downloading event
Application Cache Progress event (0 of 1) http://example.net/viddy.mp4
Application Cache Error event: Resource fetch failed (-1) http://example.net/viddy.mp4
Run Code Online (Sandbox Code Playgroud)

当我点击错误旁边的链接时,它打开文件很好.

我的清单以正确的MIME类型提供(我正在使用HTML5 Boilerplate .htaccess-file)并且提供了视频Content-Type:video/mp4

我的档案太大了吗?我完全能够以这种方式缓存1MB图像,所以我认为文件大小应该不是问题?台式机和iPad上的Safari确实可以很好地缓存视频.

备注:我已经看到了这个问题,但它没有涵盖我的问题,因为解决方案似乎与Python有关.

video html5 google-chrome cache-manifest html5-appcache

8
推荐指数
2
解决办法
7055
查看次数

使用pdfkit时,我可以在同一段落中混合字体权重吗?

我正试图找到一种方法来使用粗体字体权重来强调pdfkit中的内联强调

不幸的是,我找不到一种方法来改变字体而不强制换行(对于内联强调不好......).

我在尝试这样的事情:

pdf.text('Hello ', LEFT, 200).font(bold).text('World!');
Run Code Online (Sandbox Code Playgroud)

但这会输出

你好

世界

我也挖掘了源代码,但找不到任何防止这种情况的选择.

任何人有任何想法或解决方法来解决这个问题?

编辑:

我现在能想到的只是一个丑陋的黑客,看起来像这样:

pdf.text('Hello ', LEFT, 200).moveUp(1).font(bold).text('World!', {indent: pdf.widthOfString('Hello ')});
Run Code Online (Sandbox Code Playgroud)

这是有效的,但远非灵活和可维护.

javascript pdf pdf-generation node.js node-pdfkit

8
推荐指数
2
解决办法
4100
查看次数

如何在请求体读取时测试错误?

我正在golang中编写http Handlers的单元测试.在查看代码覆盖率报告时,我遇到了以下问题:从请求中读取请求正文时,ioutil.ReadAll可能会返回我需要处理的错误.然而,当我为我的处理程序编写单元测试时,我不知道如何以一种会触发这种错误的方式向我的处理程序发送请求(内容的过早结束似乎不会产生这样的错误但会产生错误解构身体).这就是我想要做的:

package demo

import (
    "bytes"
    "io/ioutil"
    "net/http"
    "net/http/httptest"
    "testing"
)

func HandlePostRequest(w http.ResponseWriter, r *http.Request) {
    body, bytesErr := ioutil.ReadAll(r.Body)
    if bytesErr != nil {
        // intricate logic goes here, how can i test it?
        http.Error(w, http.StatusText(http.StatusBadRequest), http.StatusBadRequest)
        return
    }
    defer r.Body.Close()
    // continue...
}

func TestHandlePostRequest(t *testing.T) {
    ts := httptest.NewServer(http.HandlerFunc(HandlePostRequest))
    data, _ := ioutil.ReadFile("testdata/fixture.json")
    res, err := http.Post(ts.URL, "application/json", bytes.NewReader(data))
    // continue...
}
Run Code Online (Sandbox Code Playgroud)

如何编写测试用例HandlePostRequest还包括bytesErr不存在的情况nil

error-handling unit-testing http go

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

浏览器是否渲染不在视口内的画布元素?

我有一个页面,有相当重(中等重量)canvas操作正在进行.为了满足移动设备和旧计算机上的用户,我想我可以实现一种机制来检查canvas元素是否实际可见,并决定是否必须完成常量计算和画布更新(以30fps运行的动画) .

这工作正常,但在使用Chrome开发工具进行性能测试时,我注意到即使我禁用了我的可见性检查,只是让事情一直呈现,所讨论的函数的CPU使用量在没有任何部分时会下降很多canvas元素是可见的(虽然理论上它应该仍然执行相同的任务).所以:至少在运行Chrome 17的计算机上,如果我检查元素的实际可见性,它并没有真正的区别.

简而言之:我是否需要这样做或者浏览器是否足够聪明以便在不告诉他们的情况下处理这种情况(我可以保存可见性检查)?


编辑:

所以我对这个话题做了一些"研究",并建立了这个小提琴.

会发生什么是它只会产生每秒30帧的噪音.不太好看,但是,嗯......上部只是一个平原来div阻挡视口.当我向下滚动并canvas在视口中使用元素CPU Usage告诉我它占用了大约40%,所以显然浏览器确实有很多事要做.当我向上滚动以便我div在我的视口中将栗色变为彩色时,它会将CPU使用率降低到10%左右.当我向下滚动时:使用率再次上升.

因此,当我在这个修改过的小提琴中实现可见性检查时,我确实看到CPU使用率增加(实际上是一个小小的)而不是丢弃(因为它有额外的任务来检查画布是否在视口内) .

所以我仍然想知道这是否是我不知道的某些副作用(或者我在分析时遇到了一些重大错误),或者我是否可以期待浏览器足够智能来处理这种情况?

如果有人能说清楚我会非常感激!

browser html5 canvas cpu-usage

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

如何将VS代码附加到在docker容器中运行的节点进程

我正在尝试将Visual Studio代码调试器附加到在Docker容器内运行的node.js应用程序.

我启动应用程序,如:

node --debug-brk app.js
Run Code Online (Sandbox Code Playgroud)

我公开调试器端口docker-compose.yml:

app:
  build: .
  working_dir: /code
  volumes:
    - .:/code
  command: npm run debug
  ports:
    - "3004:3000"
    - "5858:5858"
Run Code Online (Sandbox Code Playgroud)

launch.json看起来像:

{
    "version": "0.1.0",
    "configurations": [
        {
            "name": "Attach",
            "type": "node",
            "address": "localhost",
            "port": 5858
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

现在,当我启动应用程序并连接调试器时,这将正确连接(我可以看到调试器UI中已经闪烁的值),但它会停止,告诉我以下内容:

Error opening 'app.js' (File not found: /code/app.js).
Run Code Online (Sandbox Code Playgroud)

这是由于这样的事实,码头工人将无法安装应用程序根,但/code(见volumesdocker-compose.yml)和VS代码是由突然偏移混淆.

当我在容器外运行应用程序(即本地,没有偏移)时,它按预期工作,我可以按预期使用调试器.

似乎有一个cwd启动配置的选项,但我不确定这是否与我的情况有任何区别.

我可以修复此路径偏移吗?我在这里错过了什么吗?

node.js docker docker-compose visual-studio-code

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

为什么当第一个案例实际执行时,这个选择总是运行默认案例?

我试图更好地了解 golang 通道。在阅读本文时,我正在研究非阻塞发送,并提出了以下代码:

package main
import (
    "fmt"
    "time"
)

func main() {
    stuff := make(chan int)
    go func(){
        for i := 0; i < 5; i ++{
            select {
            case stuff <- i:
                fmt.Printf("Sent %v\n", i)
            default:
                fmt.Printf("Default on %v\n", i)
            }
        }
        println("Closing")
        close(stuff)
    }()
    time.Sleep(time.Second)
    fmt.Println(<-stuff)
    fmt.Println(<-stuff)
    fmt.Println(<-stuff)
    fmt.Println(<-stuff)
    fmt.Println(<-stuff)
}
Run Code Online (Sandbox Code Playgroud)

这将打印:

Default on 0
Default on 1
Default on 2
Default on 3
Default on 4
Closing
0
0
0
0
0
Run Code Online (Sandbox Code Playgroud)

虽然我确实明白只有0 …

select channel go

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

我怎样才能坚持在Docker容器中使用1.11模块?

我正在将Go 1.10应用程序迁移到Go 1.11.这还包括从迁移depmod管理依赖项.

由于应用程序依赖于数据库,我使用a docker-compose来设置本地开发环境.使用Go 1.10,我只需将本地存储库(包括vendor文件夹)安装到容器中的正确位置GOPATH:

web:
  image: golang:1.10
  working_dir: /go/src/github.com/me/my-project
  volumes:
    - .:/go/src/github.com/me/my-project
  environment:
    - GOPATH=/go
    - PORT=9999
  command: go run cmd/my-project/main.go
Run Code Online (Sandbox Code Playgroud)

由于Go 1.11沟渠GOPATH(当使用模块时),我想我可以做以下事情:

web:
  image: golang:1.11rc2
  working_dir: /app
  volumes:
    - .:/app
  environment:
    - PORT=9999
  command: go run cmd/my-project/main.go
Run Code Online (Sandbox Code Playgroud)

这是有效的,但每次我docker-compose up(或任何其他命令调用Go工具)它将从头开始解析并重新下载依赖关系树.当我在容器外部运行命令时(即在我的本地操作系统上),这不会发生(而只是一次).

如何改进设置,以便Docker容器持久保存go工具下载的模块?

go docker docker-compose vgo go-modules

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