我编写了Chrome扩展程序页面操作,其中包含以下实现:
在manifest.json中:
"permissions" : [
"declarativeContent"
],
Run Code Online (Sandbox Code Playgroud)
在background.js中:
chrome.runtime.onInstalled.addListener(function() {
// Replace all rules ...
chrome.declarativeContent.onPageChanged.removeRules(undefined, function() {
// With a new rule ...
chrome.declarativeContent.onPageChanged.addRules([
{
conditions: [
new chrome.declarativeContent.PageStateMatcher({
pageUrl: { urlMatches: 'www\.somewebsite\.com/(translate|revise)/' },
})
],
// And shows the extension's page action.
actions: [ new chrome.declarativeContent.ShowPageAction() ]
}
]);
});
});
Run Code Online (Sandbox Code Playgroud)
我注意到在大多数Chrome浏览器中,页面操作图标在地址中正确显示,并且仅在满足匹配页面时才会显示:
但是,在某些浏览器中,最近页面操作开始显示为已启用/已禁用的浏览器操作,即在地址栏之外,这很笨拙,因为围绕页面操作图标的整体想法是当且仅当页面与它们相关时才显示.在大多数情况下,没有必要显示禁用的页面操作.实际上,它发生在几天前用于工作的浏览器上,就像Chrome更新有一些副作用一样.
我认为这与某些Chrome设置有关,现在可以显示所有扩展程序,但有什么方法可以强制页面操作在地址栏中始终显示,并且只有在它真正有用时才会显示?
我正在尝试Delphi XE7 Update 1的并行编程功能.
我创建了一个简单的TParallel.For
循环,基本上做了一些虚假的操作来消磨时间.
我在AWS实例(c4.8xlarge)上的36 vCPU上启动了该程序,试图了解并行编程的优势.
当我第一次启动程序并执行TParallel.For
循环时,我看到了显着的增益(虽然admitelly比我预期的36个vCPU少很多):
Parallel matches: 23077072 in 242ms
Single Threaded matches: 23077072 in 2314ms
Run Code Online (Sandbox Code Playgroud)
如果我不关闭程序并在不久之后再次在36 vCPU机器上运行传递(例如,立即或大约10-20秒后),并行传递会恶化很多:
Parallel matches: 23077169 in 2322ms
Single Threaded matches: 23077169 in 2316ms
Run Code Online (Sandbox Code Playgroud)
如果我没有关闭程序并等待几分钟(不是几秒钟,但几分钟)再次运行传递之前,我再次得到第一次启动程序时得到的结果(响应时间提高了10倍) .
在36个vCPU机器上启动程序后的第一次传递总是更快,因此看起来这种效果仅TParallel.For
在程序中第二次调用a时发生.
这是我正在运行的示例代码:
unit ParallelTests;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
System.Threading, System.SyncObjs, System.Diagnostics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Memo1: TMemo;
SingleThreadCheckBox: TCheckBox;
ParallelCheckBox: TCheckBox;
UnitsEdit: TEdit;
Label1: TLabel;
procedure Button1Click(Sender: TObject);
private
{ …
Run Code Online (Sandbox Code Playgroud) 我有一个Windows 2008 EC2实例,我在EBS启动驱动器上做了一些自定义.
我将实例作为m1.small(或m1.large)启动,实例存储不会显示为附加驱动器.
我已经读过ec2-run-instances命令中的-b开关允许你为ephymeral实例存储创建映射.ec2-run-instances命令创建一个新实例,但是,在我的情况下,实例已经存在,因此我将其作为ec2-start-instances启动,它没有用于empymeral实例存储的-b开关.
有没有什么办法可以让我的现有EBS启动实例的m1.small实例附带的ephymeral实例存储?
更新:现在似乎(2015年2月)Windows机器在Z:驱动器中安装了ephymeral实例存储.
Delphi XE8编辑器具有视觉提示,以便您知道哪个begin
与哪个相关end
.在我们的团队中,我们总是将惯例begin
与owner子句放在同一行.
有没有办法让视觉提示与相应的对齐end
而不是它begin
?
更新:此问题似乎在Delphi Seattle 10中得到修复.
The following code generates an exception (c0000005 ACCESS_VIOLATION) in Delphi 10.3.1 only when compiled to 64-bit.
However, the same code does not generate an exception in Delphi 10.3.1 when compiled to 32 bits. Also, it does not fail in Delphi 10.2.3 when compiled to either 32 bits or 64 bits.
program CrashOn64;
{$APPTYPE CONSOLE}
{$R *.res}
uses
System.SysUtils;
type
TMyBaseClass = class
protected
procedure Setup(aParams: array of const); virtual;
public
end;
type
TMyWorkClass = class(TMyBaseClass)
protected
procedure DoSetup; virtual;
public …
Run Code Online (Sandbox Code Playgroud) 如果我将一个单元放在单元的实现部分的uses子句中,则在该单元中声明的标识符不可用于接口部分.
这样做有什么好处,而且无法在界面中使用被引用单元的标识符?
如果您在实现部分中添加使用过的单元而不是简单地在接口部分进行操作,是否有任何实际优势(例如避免不必要的副作用)?
第三方应用程序使用 MS SQL Server 作为数据存储。在第 3 方应用程序 API 中,他们忘记为事件添加 webhooks,所以我试图通过在他们的 SQL Server 数据库上添加相关表触发器来在他们的 API 中添加 webhooks 的概念。
这个想法是使用表触发器捕获 UPDATE 事件,如果它们更改给定字段,则通知进程(在 SQL Server 框之外)执行一些批处理操作。
我正在考虑让 SQL Server 以某种方式调用 URL(也称为“webhook”)而不等待响应(或立即超时),最好使用 T-SQL。
有没有办法在 SQL Server 中做到这一点(来自 T-SQL 的异步 URL 调用),或者与外部系统通信而不会意外锁定 SQL Server 的唯一安全方法是从 SQL Server 发送电子邮件?(我使用的是 SQL Server 2012)
我想将Mac Eject Key重新映射到Insert,特别是在Windows应用程序中模拟Ctrl + Insert,Alt + Insert,Shift + Insert和其他常用键组合.
哪个是弹出键的虚拟键代码?我找到了一些虚拟密钥表,但由于某种原因,永远不会包含弹出密钥.
我将运行在.NET 1.1服务器上的ASP.NET站点移动到另一台运行.NET 2.0的服务器上.
在其中一个页面中,我有以下代码来检测过期的会话:
protected void Page_Init(object sender, System.EventArgs e) {
if ( Session["XBCPEmail"] == null ) {
Response.Redirect("signin.aspx?expired=yes");
return;
}
}
Run Code Online (Sandbox Code Playgroud)
(会话["XBCPEmail"] == null)在单击其中一个按钮后,在一个意外情况下解析为true(就像会话已过期一样).它只发生在其中一个按钮上.就像同一页面中的其他按钮一样,按钮事件处理程序以此代码重定向到同一页面结束:
Response.Redirect("cpanel.aspx");
Run Code Online (Sandbox Code Playgroud)
我检查并且在Response.Redirect("cpanel.aspx");
值的时候(string)Session["XBCPEmail"]
是一个有效的字符串,所以我不确定在它之间会发生什么Response.Redirect
,Page_Init
这可能使得Session["XBCPEmail"]
变为null.
哪个可以使.NET 2.0中的Session变量变为null?此代码在1.1中没有该问题,即使在2.0中,它也只影响页面上的一个按钮.
更新:仅当按钮事件处理程序使用下面的代码调用外部.exe程序时才会出现此问题.如果注释掉此代码,则Session变量不为null.如果Session变量为null,创建运行命令行程序的外部进程有什么影响?
private string CallBridge3(string task, string arg1, string arg2, string arg3) {
Process process = new Process();
process.StartInfo.FileName = MapPath("bridgefcp.exe");
process.StartInfo.Arguments = "-" + task + " \"" + arg1 + "\" \"" + arg2 + "\" \"" + arg3 …
Run Code Online (Sandbox Code Playgroud) 我正在尝试移植一个Chrome扩展程序,该程序可以使用Firefox 45.0.1以编程方式创建文件并将其下载到Firefox WebExtension。
这是Javascript代码:
text = '{"greeting":"Hello, World!"}';
var a = document.createElement('a');
var file = new Blob([text], {type: 'text/json'});
a.href = URL.createObjectURL(file);
a.download = 'hello.world'; // Filename
a.click(); // Trigger download
Run Code Online (Sandbox Code Playgroud)
所有行似乎都可以正常执行,但是没有文件下载(我在console.log()
后面放了一个a.click()
)。
截至目前,Firefox WebExtensions中还没有chrome.downloads API。
上面的代码是否与Firefox不兼容?除了使用Firefox WebExtension以编程方式下载文件之外,还有其他选择吗?
delphi ×4
amazon-ec2 ×1
asp.net ×1
c# ×1
delphi-xe8 ×1
firefox-addon-webextensions ×1
keyboard ×1
macos ×1
rtl-ppl ×1
session ×1
sql-server ×1
triggers ×1