小编Ste*_*lay的帖子

为什么真实世界的服务器更喜欢gzip而不是deflate编码?

我们已经知道deflate编码在编码,解码和压缩大小方面比gzip更胜一筹.

那么为什么没有大型网站(我能找到)发送它(当我使用接受它的浏览器时)?

雅虎称,收缩率"不太有效".为什么?

我维护的HTTP服务器软件更喜欢放气,所以我想知道是否有一些非常好的理由不继续这样做.

compression encoding gzip http deflate

63
推荐指数
4
解决办法
2万
查看次数

Git:我怎样才能找到与目录最匹配的提交?

有人拿了Moodle的一个版本(我不知道),在一个目录中应用了很多变化,然后发布它(树在这里).

如何确定最有可能编辑原始项目的哪个提交以形成此树?

这将允许我使用此补丁在适当的提交中形成分支.当然,它来自1.81.9分支,可能来自发布标记,但特定提交之间的差异对我没有多大帮助.

事后更新:knittl的回答让我尽可能接近.我首先添加了我的补丁仓库作为远程"外来"(没有共同提交,没关系),然后在带有几个格式选项的循环中做差异.第一个使用--shortstat格式:

for REV in $(git rev-list v1.9.0^..v1.9.5); do 
    git diff --shortstat "$REV" f7f7ad53c8839b8ea4e7 -- mod/assignment >> ~/rdiffs.txt; 
    echo "$REV" >> ~/rdiffs.txt; 
done;
Run Code Online (Sandbox Code Playgroud)

第二个只计算了没有上下文的统一差异中的行变化:

for REV in $(git rev-list v1.9.0^..v1.9.5); do 
    git diff -U0 "$REV" f7f7ad53c8839b8ea4e7 -- mod/assignment | wc -l >> ~/rdiffs2.txt;
    echo "$REV" >> ~/rdiffs2.txt; 
done;
Run Code Online (Sandbox Code Playgroud)

有成千上万的提交要挖掘,但这个似乎是最接近的匹配.

git diff patch commit

39
推荐指数
1
解决办法
2474
查看次数

单元测试"本机"Java类在哪里?

为了"有趣"我将松散的几个Java类移植到PHP(例如java.util.regex.Matcher),所以我希望能够为这些运行/移植单元测试:

  • java.lang.StringBuilder
  • java.util.regex.Pattern
  • java.util.regex.Matcher

我在哪里可以找到它们?任何半新版本的测试都会有所帮助.

java unit-testing

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

HTTP代理缓存如何在服务身份与gzip编码资源之间做出决定?

HTTP服务器使用内容协商来根据客户端的Accept-Encoding标头提供单个URL标识或gzip编码.

现在说我们在客户端和httpd之间有一个像squid这样的代理缓存.

如果代理缓存了URL的两种编码,它如何确定要提供的服务?

非gzip实例(最初未提供服务Vary)可以提供给任何客户端,但编码实例(具有Vary: Accept-Encoding)只能发送到具有与Accept-Encoding原始请求中使用的相同标头值的客户端.

例如Opera发送,"deflate, gzip, x-gzip, identity, *;q=0"但IE8发送"gzip, deflate".根据规范,缓存不应该在两个浏览器之间共享内容编码的缓存.这是真的?

proxy caching reverse-proxy http content-encoding

7
推荐指数
1
解决办法
1681
查看次数

有没有人在用户代码中创建类似PHP会话的类(非本机)?

本机PHP会话功能很棒,但它最终是一个单例.有时您需要维护多个应用程序的状态以及已启动会话的范围(例如,在应用程序框架中).从技术上讲,人们可以在更改后停止/重新启动会话session_name(),但这在大多数应用程序中是不切实际/不可能/不安全的.session.save_path如果一个应用程序使用非磁盘适配器存储会话数据,则也不能使用共享.

本机会话中的功能无法在用户代码中完成,所以有人这样做了吗?

更新1: CI_Session确实是一个带有一些有用代码的用户态实现,但它与CodeIgniter高度耦合.

更新2:这是一个很棒的API:

// setup
$saveHandler = new UserlandSession_SaveHandler_Files('5;/tmp');
$sess = new UserlandSession($saveHandler);
$sess->name('PHPSESSID2');
$sess->gc_maxlifetime = 86400;
$sess->setProxy($state); // passed by ref
// usage
$sess->start(); // stored string unserialized to $state
$state['foo'] = 'bar';
$sess->write_close(); // $state serialized to storage
Run Code Online (Sandbox Code Playgroud)

更新3: 我已经为PHP5.3 编写了一个实现.

php session session-state userland

7
推荐指数
1
解决办法
349
查看次数

在React中渲染Redirect总是比使用this.props.history.push更好吗?

如果我总是重定向到应用内路由,那么Redirectreact-router-dom(v4)中的组件和this.props.history.push()?之间的区别是什么?

例如,假设我希望用户给定的标题添加到URL和重定向/foo/123/foo/123/some-title(均含有相同的路线/组件渲染).

我看到了Redirect传递状态的一些用途.这到底在哪里?

是否为反模式指定要在状态中重定向到的位置?为什么示例代码看起来不像这样:

save() {
  this.setState({ redir: '/new-path'; });
}
...
render () {
  if (this.state.redir) {
    return <Redirect to={this.state.redir} />;
  }
  ...
}
Run Code Online (Sandbox Code Playgroud)

redirect reactjs react-router

7
推荐指数
1
解决办法
3605
查看次数

我可以在init()方法中取消Zend Controller操作吗?

在期间Zend_Controller_Action::init(),有没有办法取消行动(因此不会被调用)?

<?php
class JsonApiController extends Zend_Controller_Action {
    function init()
    {
        // try JSON decoding the raw request body
        if ($jsonDecodingFailed) {
            echo '{"error":"invalid JSON"}';
            $this->_cancelAction(); // something like this exist?
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我目前的解决方法是创建一个空nullAction()方法并调用$this->_forward('null')转发它.

php model-view-controller zend-framework controller

6
推荐指数
1
解决办法
4689
查看次数

在Javascript中使用参数替换局部变量是否有性能损失?

编写函数是否会影响本地var语句被参数替换?例:

function howManyMatch(arr, pattern, /*ignored:*/ i, l, total) {
  l = arr.length;
  total = 0;
  for (i = 0, i < l; i++) {
    if (pattern.test(arr[i]))
      total++;
  return total;
}
Run Code Online (Sandbox Code Playgroud)

一些优点:

  • 较小的缩小尺寸:没有var陈述;
  • 程序员少花的时间试图用尽可能少varS作为可能的
  • 在一个地方定义的所有本地变量

...和缺点:

  • arguments可以以意想不到的方式改变.见下文
  • 身体不太明显,变量是本地的
  • 混淆看到没有做任何事情的论据
  • 如果有人在不知不觉中删除它们,您的代码会写入全局变量

仍然可能是一个简单的方法让minifier自动挤出更多的位.

更新:目前尚未提及的一大缺点:如果使用N个参数调用函数,则前N个项arguments将绑定到参数列表中的前N个标识符(请参阅10.1.8中最后一个项目符号).考虑一下:

function processStuff(/*ignored:*/i, j, k) {
    // use i/j/k to loop
    // do stuff with the arguments pseudo-array
}
Run Code Online (Sandbox Code Playgroud)

在上面的例子,如果你叫processStuff(stuff1, stuff2),设置ij …

javascript variables arguments local-variables minify

6
推荐指数
2
解决办法
294
查看次数

使用HMAC进行消息签名时,将密钥,消息或两者兼容是否明智?

假设我正在设计一个库,用SHA-256 HMAC签名/验证消息.如果最终用户使用弱共享密钥并发送大量短消息,我认为存在攻击者发现密钥的风险.

我的直觉说我应该在密钥上添加一个唯一的(每个消息)盐,以便对密钥进行逆向工程更难.

关键盐腌有多少帮助,我还能通过腌制消息获得任何收益吗?

hash salt digital-signature hmac

6
推荐指数
1
解决办法
2063
查看次数

为什么Travis git ref有时候不符合我的拉动请求?

我有一个Travis-CI脚本,用于检查拉取请求的提交消息.GitHub为它提供了一系列提交,它用于git log --format=online "<lastref>..<firstref>"构建要检查的SHA列表.

这在大多数情况下都很有用,但偶尔会发生这种情况:

我的拉取请求(将分支2.2合并到2.x,多次提交)在Travis上生成此命令:

git log --format=oneline b5d12909dacd80d21c4e4f4ca6d5683d6e547f9e..b349be9418371c1f694dabeccbce0e946fde3a0a
Run Code Online (Sandbox Code Playgroud)

在本地,这可以按预期工作.我得到了PR的提交.但是,在Travis上,b5d129提交没有出现,因此它会将每次提交转储回项目的开头.

这里发生了什么?

更新:我做了另一个合并PR,这次是Travis的默认git clone深度为50,但也不包括2.x上的新提交.无论如何,这个新PR的构建工作正常.我还是难过.克隆深度不应该有任何影响,因为如果没有必要的提交,结账会失败.

git git-log pull-request travis-ci

6
推荐指数
1
解决办法
113
查看次数