小编Rub*_*rgh的帖子

iTerm2 - 使用鼠标滚动较少的输出

我刚刚从OSX终端切换到iTerm2,我似乎失去了一项功能.在Terminal中,我可以用鼠标滚动less命令的输出,因为我已经安装了MouseTerm.

但是,当我尝试less在iTerm2中滚动输出时,窗口的滚动条会移动.奇怪的是,滚动按预期工作vim.

如何less在iTerm2中使用鼠标滚动输出?

macos terminal mouse scroll iterm

29
推荐指数
2
解决办法
1万
查看次数

Node.js中速度最快,非基于内存的多进程键值存储

Node.js支持多个进程的最快的非内存键值存储是什么?

我需要存储简单的键值字符串/字符串对(不是文档或JSON,只是字符串).
以下是一些示例(将有数百万个):

  • 12345678 - abcdefghijklmnopabcdefghijklmnop
  • 86358098 - ahijklmnopbcdefgahijklmnopbcdefg
  • abcdefghijklmnopabcdefghijklmnop - 12345678
  • ahijklmnopbcdefgahijklmnopbcdefg - 86358098

我试过了:

  • Redis:它真的很快,可以完成我需要的一切,但是占用的内存太多了.
  • LevelDB:它在RAM上速度快且不太重,但只有单一进程.

LevelDB的解决方法是多级的,它通过HTTP公开单个LevelDB进程.
但那当然需要付出代价; 我需要快速的东西.

是否有任何键值存储:

  • 支持Node.js或具有绑定;
  • 存储字符串/字符串对;
  • 支持多个流程;
  • 并不完全存在于记忆中;
  • 很快?

我只关心阅读.快速的多进程读取是必要的,但不是写入.
我对LevelDB的当前速度感到满意,只是因为它是单进程的事实.


额外细节:

  • 我说的是大约5000万个键/值对,键和值在8到500个字符之间.
  • 代码将在常规Linux服务器上运行.
  • 内存使用量应限制在几千兆字节(4GB很好,8GB是可以接受的)
  • 阅读不仅仅是写作; 实际上,我可以不写作.
  • 速度比任何事情都重要(考虑到内存和多进程约束).

key-value redis key-value-store node.js leveldb

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

使用参数定义新的Vim运算符

我一直在寻找在Vim中映射一个带有额外参数的新运算符.

例如,我们知道ciw将"切入内部单词"并将使您进入插入模式,我正在寻找的是一个自定义动作来替换c(例如s)iw需要额外参数的动作.

一个简单的例子是:

Given a line in a text file
Run Code Online (Sandbox Code Playgroud)

并执行正常模式(给定光标在第一列)siw*,这将围绕第一个单词,*如下所示:

*Given* a line in a text file
Run Code Online (Sandbox Code Playgroud)

我知道,这是最优秀的surround.vim插件.但我只是在这里给出一个例子,并寻找一个关于如何获得映射以便上述工作的答案.

我试着用打onoremapopfunc,但似乎无法让他们打我想要的方式.

所以这是运动和运算符挂起映射的组合.

vim

22
推荐指数
2
解决办法
2520
查看次数

Shadow DOM可以保护我的元素吗?

目标:一个封闭的小部件

假设我是FakeBook™的朋友小部件的开发者.我为网站所有者提供了一个小部件,可以将这样的个性化消息添加到他们的页面:

你的朋友Michael,Anna和Shirley喜欢这个网页!

第一种方法:创建的脚本 span

天真地,我创建了一个脚本,将这些信息span放在网站上.但是,ExampleSite的所有者现在可以通过简单的DOM操作访问您朋友的名字!
这是一个很大的隐私/安全问题.

第二种方法: iframe

我不希望ExampleSite访问他们朋友的名字.所以相反,我让网站所有者添加小部件iframe:

<iframe src="http://fakebook.com/friends?page=http%3A%2F%2Fexample.org%2F"></iframe>
Run Code Online (Sandbox Code Playgroud)

这样做,因为ExampleSite的所有者无法刮掉内容iframe.然而,整个iframe事情相当丑陋,因为它没有融入网站的样式,而一个span.

期望的方法:Shadow DOM

在昨天阅读Shadow Dom时,我想知道这是否可以解决这两个问题.这将允许我有一个脚本,创建一个span原始网站无法访问:

var host = document.querySelector('#friends');
var root = host.webkitCreateShadowRoot();
root.textContent = 'Your friends Michael, Anna and Shirley love this webpage!';
Run Code Online (Sandbox Code Playgroud)


但是,Shadow DOM是否会将其内容隐藏在周围的页面中?
这里的假设是除了我的脚本之外没有人可以访问root,但这是正确的吗?

影子DOM规范毕竟说,它提供的功能封装,但其实我是想相信封装.虽然组件模型用例实际列出了这个用例,但我不确定Shadow DOM是否实现了nesessary confinement属性.

security dom widget web-component shadow-dom

16
推荐指数
1
解决办法
1768
查看次数

哪些CDN解决方案支持内容协商缓存?

我通过内容协商提供一系列资源.具体而言,任何URL都可以用不同的格式表示,具体取决于客户端的Accept标题.

Facebook的一个例子可以在Facebook上看到:

  • curl -H "Accept: application/json" http://graph.facebook.com/daft-punk
    结果是JSON
  • curl -H "Accept: text/turtle" http://graph.facebook.com/daft-punk
    结果龟

我正在寻找一个基于URL和客户端标题来缓存内容的CDNAccept.

出了什么问题的例子

CloudFlare不支持这一点:如果一个客户端要求HTML,那么对该URL的所有后续请求都会收到HTML表示,而不管其首选项如何.其他人有类似的问题.

例如,如果我将CloudFlare置于其上graph.facebook.com(并将其配置为缓存"无扩展"资源,默认情况下不会这样),那么它将表现不正确:

  1. http://graph.facebook.com/daft-punk通过卷曲请求JSON;
    作为回应,CloudFlare从服务器询问JSON原始文件,缓存它并提供服务.
  2. 我要求http://graph.facebook.com/daft-punk通过我的浏览器(因此在HTML中);
    作为响应,CloudFlare发送缓存的JSON(!)表示,即使原始服务器已发送HTML版本.

反而需要什么

正确的行为将是CloudFlare的再次询问服务器,因为第二个客户端有不同的Accept标题.在此之后,Accept可以从缓存提供具有类似标头的请求.

哪些CDN解决方案支持内容协商,还缓存协商内容?
所以请注意,仅尊重接受是不够的; 协商响应也应该缓存.



PS1:很容易让自己的缓存服务器支持它.例如,对于nginx:

proxy_cache_key "$scheme$host$request_uri$http_accept";
Run Code Online (Sandbox Code Playgroud)

请注意客户端的Accept标头是如何为缓存编制索引的键的一部分.我希望在CDN上.


PS2:不能为不同的表示使用不同的URL.我的应用程序位于Linked Data域中,其中URL在识别中起着重要作用.

caching http cdn content-negotiation cloudflare

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

如何避免错误"javax.servlet-api-3.0.1.jar - jar not loaded"?

我使用的是Windows 7,Java 1.7,Grails 2.1.4,Groovy 2.0.4和Tomcat 7.0.37.
执行我的项目时,我收到以下错误:

Apr 5, 2013 11:08:00 AM org.apache.catalina.loader.WebappClassLoader validateJarFile
    INFO: validateJarFile(/software/apache-tomcat-7.0.37/webapps/aaaportal-0.1/WEB-INF/lib/javax.servlet-api-3.0.1.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class
    Apr 5, 2013 11:08:13 AM org.apache.catalina.loader.WebappClassLoader loadClass
    INFO: Illegal access: this web application instance has been stopped already.  Could not load org.bouncycastle.jce.provider.JDKKeyPairGenerator$RSABeanInfo.  The eventual following stack trace is caused by an error thrown for debugging purposes as well as to attempt to terminate the thread which caused the illegal access, and …
Run Code Online (Sandbox Code Playgroud)

grails maven-2 maven-3 maven tomcat7

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

RxJS可以以拉动方式使用吗?

RxJS README中示例似乎表明我们必须订阅源代码.换句话说:我们等待源发送事件.从这个意义上说,来源似乎是基于推送的:来源决定何时创建新项目.

然而,这与迭代器形成对比,严格来说,只需要在请求创建新项目,即在进行呼叫时next().这是pull-based行为,也称为懒惰生成.

例如,流可以返回所有维基百科页面的素数.这些项目仅在您要求时生成,因为预先生成所有项目都是一项投资,并且可能只有2或3项可能会被阅读.

RxJS是否也有这种基于拉的行为,因此只有在您要求时才生成新项目?

反压页似乎表明,这是不可能的呢.

stream reactive-programming rxjs

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

如何在内存缓冲区中实现seekg / seekpos?

内存流上的答案seekoff上的答案结合在一起,我实现了内存中的缓冲区,如下所示:

struct membuf : std::streambuf {
    membuf(char const* base, size_t size) {
        char* p(const_cast<char*>(base));
        this->setg(p, p, p + size);
    }
};
struct imemstream : virtual membuf, std::istream {
    imemstream(char const* base, size_t size) :
        membuf(base, size),
        std::istream(static_cast<std::streambuf*>(this)) {
    }

    std::iostream::pos_type seekoff(std::iostream::off_type off,
                                    std::ios_base::seekdir dir,
                                    std::ios_base::openmode which = std::ios_base::in) {
        if (dir == std::ios_base::cur) gbump(off);
        return gptr() - eback();
    }
};
Run Code Online (Sandbox Code Playgroud)

然而,在第一aswer的意见作为解释,我们仍然需要得到seekg/ seekpos工作。那么如何在seekpos这里正确实现呢?

PS:这个问题的方向相同,但是给出了更具体的答案。

c++ buffer iostream

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