小编Meh*_*ran的帖子

在PHP动态创建HTTP响应时缓存它们

我认为我的问题似乎很随意,但随着它变得有趣(至少对我来说:)).

考虑一个PHP页面,其目的是从文件系统读取请求的文件并将其作为响应回显.现在的问题是如何为此页面启用缓存?需要指出的是,文件可能非常庞大,启用缓存是为了避免客户端一次又一次地下载相同的内容.

理想的策略是使用"If-None-Match"请求头和"ETag"响应头来实现反向代理缓存系统.尽管我知道这一点,但我不确定这是否可行,或者我应该将其作为响应返回以实现此技术!

php caching http-headers

14
推荐指数
1
解决办法
3724
查看次数

使用PhantomJS嵌入网页的所有图像会产生警告,但有效

我试图通过嵌入所有图像(以及我通过此点后的其他外部资源)将网页转换为单个文件.以下是我运行PhantomJs的方法:

./phantomjs --web-security=false ./embed_images.js http://localhost/index.html > output.txt
Run Code Online (Sandbox Code Playgroud)

这是embed_images.js:

var page = require('webpage').create(),
    system = require('system'),
    address;

if (system.args.length === 1) {
    console.log('Usage: embed_images.js <some URL>');
    phantom.exit(1);
}
else {
    page.onConsoleMessage = function(msg) {
        console.log(msg);
    };
    address = system.args[1];
    page.open(address, function(status) {
        page.evaluate(function() {
            function embedImg(org) {
                var img = new Image();
                img.src = org.src;
                img.onload = function() {
                    var canvas = document.createElement("canvas");
                    canvas.width = this.width;
                    canvas.height = this.height;

                    var ctx = canvas.getContext("2d");
                    ctx.drawImage(this, 0, 0);

                    var dataURL = …
Run Code Online (Sandbox Code Playgroud)

javascript embed phantomjs

14
推荐指数
1
解决办法
8321
查看次数

svn:泛型失败

我知道这个问题在全球多次被问到,但我相信我的问题与其他问题有点不同.

方案如下:

第1天:在远程服务器上使用Subversion 1.6.6在云服务器上安装Ubuntu Server 10.04.

第2天:通过svn + ssh协议将第一个项目导入svn.一切都很好,直到一天结束.

第3天:尝试在另一台计算机上签出项目.结果: svn:泛型失败

在大多数报告相同问题的案例中,似乎问题与SASL有关,但在我的情况下,它已被禁用,而且我没有使用SASL.不久前,我在安装了CentOS的不同服务器上遇到了同样的问题.

在下一步中,我通过SSH登录远程服务器,并尝试使用"file:///"协议从存储库中签出相同的项目.它工作正常!似乎无论问题是什么,它都与身份验证协议有关.但由于错误提示很少,我不知道从哪里开始.

更新:从'file:///'切换到'svn + ssh://'也可以在远程服务器上正常工作.

更新:从第三台计算机测试,一切正常,似乎只是我的本地计算机无法检出和/或提交存储库!它可能是某种防火墙阻塞问题吗?

svn

13
推荐指数
2
解决办法
7599
查看次数

在事务完成后执行触发器

在PostgreSQL中,是在事务完成之前(之内)还是之后执行的DEFERRED触发器?

文件说:

DEFERRABLE
NOT DEFERRABLE

这可以控制是否可以延迟约束.在每个命令之后立即检查不可延迟的约束.检查可延迟的约束可以推迟 到事务结束(使用SET CONSTRAINTS命令).

它没有指定它是否仍在事务内部或外部.我个人的经验说它在交易中,我需要它在外面!

DEFERRED(或INITIALLY DEFERRED)触发器是在事务内部执行的吗?如果是,我怎么能将他们的执行推迟到交易完成的时间?

为了给你一个提示,我正在使用pg_notify和RabbitMQ(PostgreSQL LISTEN Exchange)发送消息.我在外部应用程序中处理此类消息.现在我有一个触发器,它通过在消息中包含记录的id来通知外部应用程序新插入的记录.但是,以一种非确定性的方式,偶尔,当我尝试通过其手头的id选择记录时,无法找到记录.那是因为事务尚未完成,并且记录实际上没有添加到表中.如果我只能在事务完成后推迟执行触发器,那么一切都会成功.

为了得到更好的答案,让我更接近现实世界来解释情况.实际情况比我之前解释的要复杂一些.该源代码可以在这里找到,如果任何人的兴趣.由于我不打算深入研究的原因,我必须从另一个数据库发送通知,以便实际发送通知,如:

PERFORM * FROM dblink('hq','SELECT pg_notify(''' || channel || ''', ''' || payload || ''')');
Run Code Online (Sandbox Code Playgroud)

我确信这使得整个情况变得更加复杂.

postgresql notifications triggers transactions deferred-execution

13
推荐指数
2
解决办法
3800
查看次数

在Jmeter中对WebSockets进行压力测试

我正试图WebSocketJmeter插件(jmeter-websocket)来测试我的服务器.问题是该插件没有文档如何使用它,因此我不确定我对它的期望是否得到支持.

我设法使用上面提到的插件运行一个示例测试,并且它已成功连接到服务器.它还设法与服务器通信,但一旦完成它接收到它断开的第一个响应.我希望以某种方式配置此插件,以便与WebSocket服务器保持持续连接几分钟,在断开连接之前发送和接收几条消息.

通过压力测试,我想看看并发连接的数量如何影响我的应用程序的行为.这个插件适合我的需求吗?如果是那么我应该如何使用它?

jmeter websocket jmeter-plugins

12
推荐指数
2
解决办法
9219
查看次数

如何使用require.ensure在Webpack中拆分代码进行生产?

我正在使用Webpack,我想将我的客户端代码分成几个部分,并在用户需要时加载它们.

这是我的文件结构:

app.js       <-- Entry point as introduced to Webpack
Module.js    <-- To be loaded dynamically
Run Code Online (Sandbox Code Playgroud)

app.js和之间没有直接连接Module.js,而第二个文件是由第一个加载的,如下所示:

require.ensure([], (require) => {
    let path = "Module";
    let module = require("./" + path).default;
});
Run Code Online (Sandbox Code Playgroud)

"./" + path只是用来确保Webpack不会对我很聪明,并尝试静态地解决路径.无论如何,这段代码在webpack-dev-server的开发模式下工作.我的意思Module.js是直到我触发事件来运行上面的代码才下载.然后,它被加载并完美执行.

但是当我打包生产项目时,它就会停止工作.它发出以下错误(在我触发下载事件时在浏览器中),甚至没有尝试发送请求:

未捕获错误:找不到模块'./Module'.

此外,当我动态组合路径时(如上面的代码),构建过程会发出以下警告:

./src/app/app.js中的警告关键依赖项:74:34-47依赖项的请求是表达式

为生产配置Webpack的正确方法是什么,因此它支持动态下载代码拆分?


我已经测试了@wollnyst给出的解决方案,结果如下.当我像这样实现它时,它的工作原理:

require.ensure(["./Module"], (require) => {
    let path = "Module";
    let module = require("./" + path).default;
});
Run Code Online (Sandbox Code Playgroud)

但那不是我想要的,我想这样:

let path = "Module";
require.ensure(["./" + path], (require) => {
    let module = require("./" + path).default; …
Run Code Online (Sandbox Code Playgroud)

commonjs webpack

11
推荐指数
1
解决办法
2847
查看次数

Are DynamoDB Updates strongly consistent?

The whole reason why DynamoDB is fast and scalable is based on the fact that it is eventually consistent. But at the same time, it comes with this ConsistentRead option for operations like get, batchGet, and query which helps you make sure that the data you are reading is the latest one.

My question is about the update operation. First of all, it does not have the ConsistentRead option (one reason would be, update is not a read!). …

consistency eventual-consistency amazon-web-services amazon-dynamodb

11
推荐指数
1
解决办法
3027
查看次数

在C#中等效C++的reinterpret_cast

我想知道reinterpret_castC#中的C++相当于什么!

这是我的样本:

class Base
{
    protected int counter = 0;
}

class Foo : Base
{
    public int Counter
    {
        get { return counter; }
    }
}

Base b = new Base();
Foo f = b as Foo; // f will be null
Run Code Online (Sandbox Code Playgroud)

我没有异议,f因为它应该是null.但如果它是C++我可以编写Foo f = reinterpret_cast<Foo>(b);并获得我想要的东西.我能做些什么来在C#中实现同样的目标?

PS.我假设Base并且Foo数据一致.

[UPDATE]

这是一个简单的场景,其中a reinterpret_cast可能会有所帮助:

考虑编写一个XXX-RPC库,您无法控制传入的参数,也无法控制要调用的服务的签名.您的库应该使用给定的参数调用所请求的服务.如果支持C#,reinterpret_cast我可以简单地reinterpret_cast将给定的参数放入预期的参数并调用服务.

c# reinterpret-cast

10
推荐指数
2
解决办法
7259
查看次数

如何将本地项目(而不是jar)作为依赖项添加到Maven项目中

我将两个Maven项目作为两个模块添加到Intellij Idea的项目中.项目B取决于项目A.

以下是他们的pom.xml文件的简化版本.

项目A:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.group</groupId>
    <artifactId>a</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>jar</packaging>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>

    <dependencies>
    </dependencies>
</project>
Run Code Online (Sandbox Code Playgroud)

项目B:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.group</groupId>
    <artifactId>b</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>jar</packaging>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>

    <dependencies>
        <dependency>
            <groupId>com.group</groupId>
            <artifactId>a</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
    </dependencies>
</project>
Run Code Online (Sandbox Code Playgroud)

项目A很容易编译,因为它没有依赖性.但是项目B依赖于项目A,因为我没有告诉maven如何找到它,所以它无法编译mvn package.但是如果我没弄错的话,可以使用Intellij Idea的"Meven Projects"菜单,因为Intellij Idea这两个项目都是众所周知的.

但是现在,由于某种未知的原因,我甚至无法在Intellij Idea中编译项目B. 当我这样做时,它会提示:

[ERROR] Failed to execute …
Run Code Online (Sandbox Code Playgroud)

java intellij-idea maven

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

在哪里可以找到 Lambda@Edge 的日志?

作为我遇到的上一个问题的步骤之一,我需要查看某些 Lambda@Edge 的日志,但我无法在任何地方找到它们。

根据Lambda@Edge 上的文档

当您在对错误进行故障排除时查看 CloudWatch 日志文件或指标时,请注意它们显示或存储在离函数执行位置最近的区域中。因此,如果您的网站或 Web 应用程序的用户位于英国,并且您有一个与您的分配关联的 Lambda 函数,例如,您必须更改区域以查看伦敦 AWS 区域的 CloudWatch 指标或日志文件。

us-east-1当我在加拿大时,我试图查找其日志的 lambda 函数位于(由 CloudFront 强制要求,因为它被用作分发的事件处理程序),所以我假设最近的区域是ca-central-1. 但由于我不是在发展ca-central-1. 在任何情况下,我都看不到 Lambda@Edge 的日志。为了完整起见,我检查了所有区域,但找不到 lambda 函数的任何日志痕迹。需要明确的是,我正在寻找一个带有 lambda 函数名称的日志组。

我肯定应该有日志,因为console.log()我的代码中有日志,而且我可以下载请求的内容(lambda 函数负责选择保存内容的 S3 存储桶),这意味着 lambda 函数已成功执行。如果不是,我应该无法获得 S3 内容。

在哪里可以找到我的 Lambda@Edge 函数的日志?

amazon-web-services amazon-cloudwatch aws-lambda-edge

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