我有一个错误报告信标我使用Google Apps脚本创建,它发布为我自己运行,并且"任何人,甚至匿名"都可以访问,这应该意味着允许向GAS发送X域请求.
但是,我的浏览器现在指示Access-Control-Allow-Origin
代码发布到信标后响应上没有标头.
我在这里错过了什么吗?这曾经是两个月前的工作.只要GAS发布用于公共访问,那么就是设置Access-Control-Allow-Origin
标题.
在Google Apps脚本中:
Code.gsfunction doPost(data){
if(data){
//Do Something
}
return ContentService.createTextOutput("{status:'okay'}", ContentService.MimeType.JSON);
}
Run Code Online (Sandbox Code Playgroud)
客户端:
的script.js$.post(beacon_url, data, null, "json");
Run Code Online (Sandbox Code Playgroud) 目前我们正在使用Jasmine进行单元测试,并且正处于将整个应用程序迁移到Webpack的开始阶段.一个挑战是我们的一些旧代码使用存在于配置中的字符串名称从窗口对象中获取函数/构造函数.因此,在我们可以完全重新考虑该代码之前的解决方法,我创建了一个应用程序范围的导出集合,并使用它来使用字符串名称来获取函数.
那就是说,我想做的是编写一个能够:
确保Webpack中的导出数与模块集合的长度相匹配.
确保我的modules集合中列出的函数名称与已导出的函数名称(不是别名,但实际函数名称)相匹配.
确保定义集合中的所有内容(当前不是问题).
下面是模块集合的截断示例,它在加载所有模块后触发事件后构建:
let _classList;
window.EventEmitter.once('modulesLoaded', () => {
_classList = {
'MyClass': require('./scripts/MyClass.js').default,
'MyClass2': require('./scripts/MyClass2.js').default
};
});
export default class modules {
static get(name) {
return _classList && _classList[name];
}
//for unit tests to ensure that all modules are available to use
static allAreDefined() {
if (!_classList) {
return false;
}
for (var cls in _classList) {
if (_classList.hasOwnProperty(cls)) {
if (!_classList[cls]) {
return false;
}
}
}
return true;
}
static getLength() {
return Object.keys(_classList).length; …
Run Code Online (Sandbox Code Playgroud) 我有一个包含超过 1000 万行的表。我在该表上创建了一个新列,然后尝试对其进行索引:
create index myTable_idx_myColumn on myTable(myColumn);
Run Code Online (Sandbox Code Playgroud)
该查询在大约一个小时后超时。然后我用该NOLOGGING
选项重试了它,大约一个小时后成功完成。
问题解决了,对吧?不幸的是不是,因为这仅适用于开发数据库。prod 数据库有超过 2500 万行,因此理想情况下,我希望在创建索引之前找到更快的解决方案,以避免不必要的停机。
对我来说奇怪的是,根据我的理解,Oracle 默认情况下不包含null
索引值(这正是我想要的)。对我来说,这意味着它应该只创建一个空白索引,因为新列中的所有值都是null
创建索引时的。我知道它需要检查所有 1000 万行以确保它们是null
,但即使这样似乎也不需要花费近一个小时......
有没有一种快速方法可以将索引添加到null
大型表上的新列(即所有值都在其中)?
最近,我花了一些时间研究解决Web开发中一个相当常见的问题的解决方案 - 我在透明背景上处理中间对齐的徽标,但是必须在它们下面放置文本,然后它看起来好像是文本和图像之间的空白在页面之间移动.经过一些研究,我发现我可以使用画布重新对齐左下图像,并且解决方案工作得很漂亮......至少在我将解决方案集成到我们的代码库中之前发现它失败了:
"无法从画布获取图像数据,因为画布已被跨源数据污染." (说什么!?)
调查一下,违规代码位于以下函数的第一行:
getColumn: function (context, x, y, imageHeight) {
var arr = context.getImageData(x, y, 1, imageHeight).data; //<-- CORS HATES THIS!
return pvt.normalizeRGBArray(arr)
}
Run Code Online (Sandbox Code Playgroud)
现在,我完全理解CORS标准是什么,我知道这个问题的解决方案.服务器需要首先支持CORS.服务器可以设置http标头access-control-allow-origin:"*",或允许开发人员将图像的crossDomain属性设置为"anonymous"/"use-credentials".这一切都很好,花花公子,除非你在一家大公司的前端工作,说服服务器领主改变与安全相关的任何事情是一个非首发性的对话.
所以,我的问题是,在画布上的图像中出现这种安全错误背后的逻辑是什么?他们是大声哭泣的图像!可以下载它们,热链接到它们,在内存中使用它们,但"哦不!" 不要以任何方式操纵它们,否则CORS会抛出错误!
如果你问我,图像没有被污染,那就是这个头发的CORS标准.有人可以解释为什么会发生这种情况的逻辑吗?如何使用画布操作图像可能是一个安全问题?
使用Team Server Foundation时出错。我曾要求进行代码审查,还添加了自己作为审查者,以便可以在每个文件上添加注释。完成后,我关闭了评论,却没有意识到它将对其他所有人关闭。
如何重新打开已关闭的评论?它给我的所有内容都是灰色的,或者在我尝试打开它的任何地方(源代码管理资源管理器,团队资源管理器和Web)都没有可用的操作。
我在 Microsoft Store 中有 JavaScript UWP 应用程序(适用于 Xbox),几个月来它一直向崩溃报告报告一系列神秘错误,我在网上完全找不到任何信息。仅这六个错误(偶尔也会出现类似错误)就占了失败率的 81%。我一直在尝试,但无法重现这些问题,考虑到应用程序中 99.5% 的所有会话都是无崩溃的,这并不奇怪。
moapplication_hang_cfffffff_{APPID}!hang_navigation
moapplication_hang_80000003_{APPID}!hang_navigation
moapplication_hang_80000003_{APPID}!hang_activation
moapplication_hang_cfffffff_{APPID}!hang_activation
moapplication_hang_cfffffff_{APPID}!hang_quiesce
Run Code Online (Sandbox Code Playgroud)
仔细观察各种堆栈跟踪,我看到的最常见的事情是窗口调度程序的消息循环首先发生了一些事情,我猜测这表明应用程序要么首先打开,要么正在前台运行,edgehtml。然后,dll 会在命中 HasAnyPaintObjectNeedsPreRenderNotification 之前尝试进行一些渲染,然后再走几步就会发生崩溃。
我对这一切的最佳猜测是,这些是 Edge 浏览器中的错误,而不是我的应用程序内部的错误,但没有任何信息,很难确认。有时,我确实会在崩溃前的堆栈跟踪中看到 Chakra.dll,但这些似乎总是涉及用于渲染的消息传递循环。
有没有人有此类错误的经验以及可以提供的任何其他信息?是否有潜在的代码修复?
如果在"oncomplete"回调中使用其他屏蔽输入进行setVal操作,则可以在Chrome和Safary中看到不正确的反应,在FF中工作良好
oncomplete: function(e){
$('.i-input-2').val($(e.currentTarget).inputmask('unmaskedvalue'));
}
Run Code Online (Sandbox Code Playgroud)
我想使用 NASM 编译 Win32 可执行文件,但我不知道如何。是否有任何必要的头文件告诉 Windows 这个文件是可执行的?
另外,谁能告诉我 Windows 如何知道这是表单应用程序还是控制台应用程序?
我正在学习课程和OOP,所以当我遇到编程时遇到的最奇怪的错误时,我正在做一些练习程序.
所以,我有以下文件,从我的班级"pessoa"开始,位于pessoa.h:
#pragma once
#include <string>
#include <iostream>
using namespace std;
class pessoa {
public:
//constructor (nome do aluno, data de nascimento)
pessoa(string newname="asffaf", unsigned int newdate=1996): name(newname), DataN(newdate){};
void SetName(string a); //set name
void SetBornDate(unsigned int ); //nascimento
string GetName(); //get name
unsigned int GetBornDate();
virtual void Print(){}; // print
private:
string name; //nome
unsigned int DataN; //data de nascimento
};
Run Code Online (Sandbox Code Playgroud)
其函数在pessoa.cpp中定义
#include "pessoa.h"
string pessoa::GetName ()
{
return name;
}
void pessoa::SetName(string a)
{
name = a;
} …
Run Code Online (Sandbox Code Playgroud) 我目前正在研究更好的方法来完成图像的预加载,并认为使用网络工作者可能是一种更理想的方式.但是,我不确定是不是.使用后台工作者与经典式预加载相比,在性能和用户体验方面是否有任何特定的好处?哪个更好?
function preloadBackground(a) {
new d(window.URL.createObjectURL(
new Blob([
"(function () {" +
"var x = new XMLHttpRequest();" +
"x.responseType = 'blob';" +
"x.open('GET', '" + a + "', true);" +
"x.send();" +
"}());\n"], { type: "text/javascript" })
)
)
}
function preloadClassic(a) {
var i = new Image();
i.src = a;
}
Run Code Online (Sandbox Code Playgroud) 在FileStream中设置位置时遇到了一个奇怪的错误:"需要非负数.参数名称:值".
public string this[Int64 index]
{
get
{
Byte n = Convert.ToByte(0);
Byte[] Buffer = new Byte[255];
mem.Position = (int)(index * 256); //Error occurs here
mem.Read(Buffer, 0, Buffer.Length);
Buffer = (from b in Buffer where b != n select b).ToArray();
return System.Text.Encoding.Default.GetString(Buffer);
}
set
{
mem.Position = (int)(index * 256);
value += String.Concat(Enumerable.Repeat("\0", 255 - value.Length));
Byte[] Buffer = System.Text.Encoding.Default.GetBytes(value + "|");
mem.Write(Buffer, 0, Buffer.Length);
}
}
Run Code Online (Sandbox Code Playgroud)
作为一个长期,索引的值为8,388,608并且如预期的那样(索引*256)= 2,147,483,648,但是当我将其转换为int时,我得到相同的数字,只有负数.(2,147,483,648).为什么会这样?
目标框架是.NET 4,应用程序是为"任何CPU"构建的.
背景
如果有人想知道这段代码的用途,那么它是我写的一个模仿字符串数组的类的一部分,但是没有将值存储在内存中.MappedStringArray类允许我处理几乎任何大小的文件,而不会达到RAM的限制,因为它只知道文件中行的位置并根据需要读出它们.
我有这些字符串数组:
string[] BayReplyArray1 = new string[30];
string[] BayReplyArray2 = new string[30];
string[] BayReplyArray3 = new string[30];
... up to 10
Run Code Online (Sandbox Code Playgroud)
我想在这样的循环中访问它们:
for (int i = 1; i < 11; i++)
{
BayReplyArray[i] = "test";
}
Run Code Online (Sandbox Code Playgroud)
它说BayReplyArray在当前上下文中不存在.我可以看出为什么它很困惑,但我怎么能做到这一点?