我只在谷歌Chrome和Chromium上遇到了一个非常奇怪的问题.
背景是:
我使用多部分上传方法将文件上传到我的服务器,这意味着我将文件分成10mb的块并将每个块发送到服务器.这在所有具有任何大小的文件的浏览器中都可以完美地工作,当我需要加密每个块时问题就开始了.
对于加密我使用CryptoJS,并且在上传块之前,我加密它并获得结果Blob上传,当我必须上传少于50个块(50个blob,总共约500mb)时,这在Chrome上正常工作,之后我得到a POST http://(...) net::ERR_FILE_NOT_FOUND.
奇怪的是,这适用于所有其他浏览器,包括Opera,现在基本上是Chrome,除了Chrome和Chromium.我在IE,Firefox,Edge,Safari,Opera,Chrome和Chromium上测试过它.
下面你可以看到我的代码如何工作所以你们可以有一个想法,这不是我在应用程序中使用的真实代码,而是,它是我编写的测试代码产生相同的结果.
而不是获取文件的片段(File.slice)我将作为一个块上传并加密它以获得它blob,我将生成一个伪造blob我的块的大小.我用它setTimeout来模拟加密blob所需的时间.就像我之前说的那样,通过这样做,我得到了与我的真实代码相同的结果:
function uploadNext(prevResponse) {
if (currentPart == totalPartsFile)
return;
//var chunk = getNextChunk();
var totalSize = file.size;
setTimeout(function() {
var blob = new Blob([new ArrayBuffer(constants.chunkSize)], {
type: 'application/octet-string',
name: file.name
});
console.log(blob);
blob.encrypted = true;
blob.key = encryptionKey;
blob.mimeType = file.mimeType;
blob.name = file.name;
blob.originalFileSize = originalFileSize || file.size;
uploadFile(objectId, currentPart, blob, totalSize, prevResponse, function(resp) {
uploadNext(resp);
});
}, 1000); …Run Code Online (Sandbox Code Playgroud) 我想在我的Windows Phone 8 MVVM项目中使用async/await,我很难找到一种使用这个API实现我的ICommands的好方法.我一直在阅读一些关于这个主题的文章,我在下面的MSDN中提到了这个问题,其中指出我必须避免异步空洞,因为它很难捕获未处理的异常:http: //msdn.microsoft.com/en -us/magazine/jj991977.aspx 在另一个问题我询问过这个问题时,有人还说我不应该使用异步空洞.除非有事件.
但问题是我可以在互联网上找到的所有例子都使用异步空洞.我找到的这两篇文章是例子:http: //richnewman.wordpress.com/2012/12/03/tutorial-asynchronous-programming-async-and-await-for-beginners/和 http://blog.mycupof.net/2012/08/23/MVVM-asyncdelegatecommand乜asyncawait灿做换uidevelopment /
最后一个是使用async/await的ICommand实现,但它也使用异步空洞.我正在尝试为此提出解决方案,因此我基于RelayCommand编写了ICommand的这个实现:
public delegate Task AsyncAction();
public class RelayCommandAsync : ICommand
{
private AsyncAction _handler;
public RelayCommandAsync(AsyncAction handler)
{
_handler = handler;
}
private bool _isEnabled;
public bool IsEnabled
{
get { return _isEnabled; }
set
{
if (value != _isEnabled)
{
_isEnabled = value;
if (CanExecuteChanged != null)
{
CanExecuteChanged(this, EventArgs.Empty);
}
}
}
}
public bool CanExecute(object parameter)
{
return IsEnabled;
}
public …Run Code Online (Sandbox Code Playgroud) 我在 Ubuntu 上使用 puppeteer 和 node 和express。
我基本上有一个端点,当我在浏览器上调用它时,我会返回来自 puppeteer 的屏幕截图。
但奇怪的是,每次我这样做时,chrome 上的页面都会闪烁(我不是无头运行,因为我想看看发生了什么)。
这是发生的事情的视频:
这会导致一些奇怪的问题,在某些网站上,当您单击外部时,菜单或弹出窗口会关闭,当您截取屏幕截图时,该弹出窗口或菜单就会消失。
这是谷歌关于页面的另一个例子,说明了这一点:
这是我当前获取屏幕截图的端点的样子:
app.get("/ss/:id/*", async (req, res) => {
const { id } = req.params;
const page = await getPage(id);
const { resolution } = req.cookies;
let [width, height] = (resolution as string)
.split("x")
.map((o) => parseFloat(o));
width = Math.max(width, 1) - 4; // for netscape;
height = Math.max(height, 1) - 4; // for nestcape;
const ss = await page.screenshot({
quality: 100,
encoding: "binary",
type: …Run Code Online (Sandbox Code Playgroud) 所以,我正在尝试在我的Angular 1 Web应用程序中设置Aurelia,以便我可以慢慢升级.我需要这样做,因为应用程序太大并且一次迁移所有内容是不可能的.
所以,在我的Aurelia文件夹中,我创建了一个包含两个组件的组件文件夹(aurelia-component.js以及another-component.js它们的视图aurelia-component.html和another-component.html),我不会把它放在javascript中,因为它们只是两个带有一个属性的类,两者的html是相同的,唯一的东西更改是文本属性值,因此我可以区分它们:
<template>
<div>${text}</div>
</template>
Run Code Online (Sandbox Code Playgroud)
我的切入点main.js如下:
export function configure(aurelia) {
aurelia.use
.basicConfiguration()
.developmentLogging()
.globalResources('components/aurelia-component')
.globalResources('components/another-component');
//window.aurelia = aurelia;
aurelia.start()
.then(a => {
window.aurelia = a;
});
}
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,这将Aurelia放在窗口对象中,所以我可以从我的Angular应用程序访问它,我稍后会对此进行改进.在我的角度应用程序中,我有这个指令:
'use strict';
function AureliaContainer() {
function Link($scope, element, attrs) {
window.aurelia.enhance(element[0]);
}
//
return {
restrict: 'A',
link: Link
};
}
module.exports = AureliaContainer;
Run Code Online (Sandbox Code Playgroud)
我在我的app root中设置了这个:
app.directive('aureliaContainer', require('./directives/aurelia.container'));
Run Code Online (Sandbox Code Playgroud)
在我的Angular View中,我有这些div与我的指令调用enhanceAurelia中的函数:
<div aurelia-container>
<aurelia-component></aurelia-component>
</div>
<div aurelia-container>
<another-component></another-component>
</div> …Run Code Online (Sandbox Code Playgroud) 我在我的带有样式组件的项目中使用 React Select v2,我需要能够在菜单打开时将箭头指示器倒置,这在 v1 中受支持。
我有点设法通过这样做来做到这一点:
css`
&.react-select__control--is-focused {
& .react-select__indicators {
& .react-select__dropdown-indicator {
transform: rotate(180deg);
}
}
}
`;
Run Code Online (Sandbox Code Playgroud)
问题是,如果我按下箭头打开菜单并再次单击它关闭它,箭头保持倒置,因为选择仍然是焦点,这在 UIX 方面感觉有点奇怪。
是否有根据菜单状态旋转它的正确方法?我在文档中寻找了一些东西,但找不到。
也许我错过了,如果有人能指出我正确的方向,那就太棒了!
谢谢!
我知道这可能是一个愚蠢的问题,但在这里.我总是写我的私人成员privateMember,我一直在阅读C#中的命名约定,因为我注意到Visual Studio中的很多自动生成的代码都_variableName用于私有成员.我读到的任何地方,即使是在Microsoft文档中,您都应该使用privateMember.所以,我的问题是,如果好的做法说我应该privateMember像现在一样写,为什么Visual Studio会使用下划线(_privateMember)生成私有成员的类?
我Traefik在我的 VPS 中使用它来将流量路由到我的网站,经过几个小时的摆弄,我终于成功地https使用 Le's Encrypt 让它工作。
现在,我需要做的一件事是也能够通过普通方式访问我的网站,http因为这是旧浏览器的一个爱好项目,我添加的唯一原因tls是 Firefox 不喜欢我的网站没有它。
问题是,使用我当前的配置,我可以https正常访问我的网站,但是当我尝试使用普通方式时,http我收到404错误。
这是我的配置docker-compose:
version: "3"
services:
traefik:
image: "traefik:v2.5"
container_name: "traefik"
command:
#- "--log.level=DEBUG"
- "--api.insecure=true"
- "--providers.docker=true"
- "--providers.docker.exposedbydefault=false"
- "--entrypoints.web.address=:80"
- "--entrypoints.websecure.address=:443"
- "--certificatesresolvers.teeresolver.acme.tlschallenge=true"
- "--certificatesresolvers.teeresolver.acme.email=me@gmail.com"
- "--certificatesresolvers.teeresolver.acme.storage=/letsencrypt/acme.json"
ports:
- "443:443"
- "80:80"
- "8080:8080"
volumes:
- "./letsencrypt:/letsencrypt"
- "/var/run/docker.sock:/var/run/docker.sock:ro"
networks:
- mywebsite
# [...]
mywebsite:
image: my-web-site/site
build:
context: ~/mywebsite-runner/_work/my-web-site-php/my-web-site-php
dockerfile: Dockerfile
volumes: …Run Code Online (Sandbox Code Playgroud) 我正在使用带有导航框架的 SplitView 在 C# 中为 Windows 10 编写通用应用程序。我有一个带有动态加载的列表的侧边栏,当我单击其中一个项目时,我使用菜单中的模型导航到一个页面,以指示我应该在框架中加载哪个项目。
我遵循了这个示例:Windows-universal-samples/Samples/XamlNavigation/
唯一的区别是,我没有多个页面,而是每次选择具有特定 ViewModel 的不同项目时只加载一个页面。我使用 Autofac 加载 ViewModel 并MyFrame.Navigate(typeof(DetailsPage), idOfItem);加载页面。
问题是,每次导航到下一页时,上一页的实例似乎都丢失了,当我返回时,它会加载一个新实例。当我在 RootFrame 中导航时,这种事情似乎不会发生,而在 Windows Phone 8.1 中也没有发生。
我一直在网上寻找解决方案几个小时,但我找不到任何相关的东西。
有谁知道为什么会发生这种情况?我希望我的问题足够清楚。
预先感谢您的回答。