我正在尝试预加载几个图像,并希望我的页面保持不变,直到所有图像都加载完毕.所以我在做的是:
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开始)并且在这个网站上也读过这样的问题,但还没找到任何答案.
此外,它似乎不是缓存相关的问题,因为破坏它(或将随机查询字符串附加到图像源)没有任何区别.
使用无服务器框架,我尝试构建一个 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
我将内容从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)时,将省略该字符,从而产生gypten或sterreich.如果变音符号位于String(Russische Föderation)的中间,则会正确传输.对于喜欢ß或类似的é东西也是如此.
所有文件均采用UTF-8编码,并以UTF-8格式提供.
对我来说,这似乎很奇怪,而且我可能会错过一些东西,这里有很多聪明的人.
我试图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有关.
我正试图找到一种方法来使用粗体字体权重来强调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)
这是有效的,但远非灵活和可维护.
我正在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?
我有一个页面,有相当重(中等重量)canvas操作正在进行.为了满足移动设备和旧计算机上的用户,我想我可以实现一种机制来检查canvas元素是否实际可见,并决定是否必须完成常量计算和画布更新(以30fps运行的动画) .
这工作正常,但在使用Chrome开发工具进行性能测试时,我注意到即使我禁用了我的可见性检查,只是让事情一直呈现,所讨论的函数的CPU使用量在没有任何部分时会下降很多canvas元素是可见的(虽然理论上它应该仍然执行相同的任务).所以:至少在运行Chrome 17的计算机上,如果我检查元素的实际可见性,它并没有真正的区别.
简而言之:我是否需要这样做或者浏览器是否足够聪明以便在不告诉他们的情况下处理这种情况(我可以保存可见性检查)?
编辑:
所以我对这个话题做了一些"研究",并建立了这个小提琴.
会发生什么是它只会产生每秒30帧的噪音.不太好看,但是,嗯......上部只是一个平原来div阻挡视口.当我向下滚动并canvas在视口中使用元素CPU Usage告诉我它占用了大约40%,所以显然浏览器确实有很多事要做.当我向上滚动以便我div在我的视口中将栗色变为彩色时,它会将CPU使用率降低到10%左右.当我向下滚动时:使用率再次上升.
因此,当我在这个修改过的小提琴中实现可见性检查时,我确实看到CPU使用率增加(实际上是一个小小的)而不是丢弃(因为它有额外的任务来检查画布是否在视口内) .
所以我仍然想知道这是否是我不知道的某些副作用(或者我在分析时遇到了一些重大错误),或者我是否可以期待浏览器足够智能来处理这种情况?
如果有人能说清楚我会非常感激!
我正在尝试将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(见volumes中docker-compose.yml)和VS代码是由突然偏移混淆.
当我在容器外运行应用程序(即本地,没有偏移)时,它按预期工作,我可以按预期使用调试器.
似乎有一个cwd启动配置的选项,但我不确定这是否与我的情况有任何区别.
我可以修复此路径偏移吗?我在这里错过了什么吗?
我试图更好地了解 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 …
我正在将Go 1.10应用程序迁移到Go 1.11.这还包括从迁移dep到mod管理依赖项.
由于应用程序依赖于数据库,我使用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 ×3
docker ×2
html5 ×2
node.js ×2
amazon-iam ×1
aws-lambda ×1
browser ×1
canvas ×1
channel ×1
cpu-usage ×1
csv ×1
diacritics ×1
go-modules ×1
http ×1
javascript ×1
jquery ×1
node-pdfkit ×1
pdf ×1
php ×1
select ×1
unit-testing ×1
vgo ×1
video ×1
xml ×1