小编emh*_*emh的帖子

在Neo4J中存储多个图形

我有一个应用程序,它将关系信息存储在MySQL表中(contact_id,other_contact_id,strength,recorded_at).如果我需要做的就是显示联系人的关系,甚至生成两个联系人的共同联系人列表,这很好.

但现在我需要生成以下统计数据:'2011年1月强度为3或更高的双向连接总数是多少'或(假设每个联系人都是组的一部分)'哪个组的连接数最多?到其他团体等

我很快发现用于生成这些统计数据的SQL变得非常难以实现.

所以我写了一个脚本,对于任何给定的日期,它将在内存中生成一个图形.然后,我可以根据该图表运行我想要的任何统计数据.更容易理解,总的来说,性能更高 - 除了生成图形部分.

我的下一个想法是缓存这些图,这样我就可以在需要运行新的统计数据时调用它们(或生成后面的图形:例如,对于今天的图表,我采用昨天的图表并应用自昨天以来发生的任何更改).我尝试了memcached,它工作得很好,直到图形增长> 1 MB.

所以现在我正在考虑使用像Neo4J这样的图形数据库.

唯一的问题是,我没有一个图表.或者我这样做,但它随着时间的推移而变化,我需要能够以不同的参考时间查询它.

那么,我可以:

  • 在Neo4J中存储多个图形并分别与它们进行重新交互/交互?然后我会为每个日期创建和存储单独的社交图表.

要么

  • 为时间戳添加到每个边缘的有效值并适当地过滤图形:所以如果我想要一个"5月1日"的图形,我只会跟随在"5月1日"之前创建的两个noeds之间的最新边缘(如果所有边缘都是如此)是在5月1日之后创建的,然后这些节点将不会连接).

我是图形数据库的新手,所以任何帮助/指针/提示都将受到赞赏.

graph neo4j graph-databases

16
推荐指数
2
解决办法
8919
查看次数

Apache Bench和POST数据

我正在尝试使用apache bench在我的rails应用程序中加载测试创建操作,但是ab似乎没有发送POST数据 - 尽管它确实提交了POST而不是GET请求.

这是我运行的命令:

ab -n 1 -p post -v 4 "http://oz01.zappos.net/registrations"
Run Code Online (Sandbox Code Playgroud)

这是帖子文件的内容:

authenticity_token=M18KXwSOuIVbDPZOVQy5h8aSGoU159V9S5uV2lpsAI0
Run Code Online (Sandbox Code Playgroud)

rails日志显示POST请求,但不显示任何发布的参数:

Started POST "/registrations" for 10.66.210.70 at Thu Sep 09 17:48:06 -0700 2010
  Processing by RegistrationsController#create as */*
Rendered registrations/new.html.erb within layouts/application (14.0ms)
Completed 200 OK in 24ms (Views: 14.6ms | ActiveRecord: 0.1ms)
Run Code Online (Sandbox Code Playgroud)

而来自浏览器的POST请求会导致此日志条目:

Started POST "/registrations" for 192.168.66.20 at Thu Sep 09 17:49:47 -0700 2010
  Processing by RegistrationsController#create as HTML
  Parameters: {"submit"=>"true", "authenticity_token"=>"AfNG0UoTbJXnxke2725efhYAoi3ogddMC7Uqu5mAui0=", "utf8"=>"\342\234\223", "registration"=>{"city"=>"", "address"=>"", "name"=>"", "zip"=>"", "optin"=>"0", "state"=>"", "email"=>""}}
Rendered registrations/new.html.erb within …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails apachebench

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

在嵌套对象中使用自定义to_json方法

我有一个使用Ruby标准库中的Set类的数据结构.我希望能够将我的数据结构序列化为JSON字符串.

默认情况下,将序列化设置为数组:

>> s = Set.new [1,2,3]
>> s.to_json
=> "[1,2,3]"
Run Code Online (Sandbox Code Playgroud)

在尝试反序列化之前哪个是好的.

所以我定义了一个自定义to_json方法:

class Set
  def to_json(*a)
    {
      "json_class" => self.class.name,
      "data" => {
        "elements" => self.to_a
      }
    }.to_json(*a)
  end

  def self.json_create(o)
    new o["data"]["elements"]
  end
end
Run Code Online (Sandbox Code Playgroud)

哪个效果很好:

>> s = Set.new [1,2,3]
>> s.to_json
=> "{\"data\":{\"elements\":[1,2,3]},\"json_class\":\"Set\"}"
Run Code Online (Sandbox Code Playgroud)

直到我把Set放入哈希或其他东西:

>> a = { 'set' => s }
>> a.to_json
=> "{\"set\":[1,2,3]}"
Run Code Online (Sandbox Code Playgroud)

知道为什么to_json当Set嵌套在另一个对象中时我的自定义不被调用?

ruby serialization json

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

将rails表单提交到"友好"URL

我在我的网站上有一个搜索表单,允许用户搜索许多不同的方面,如城市,价格范围,大小等.

表单提交为GET,因此表单参数在URL中.

他们最终变得非常丑陋:

/搜索?UTF8 =✓&city_region =温哥华&property_type_id = 1&min_square_footage = 0&max_square_footage = 15000

(它们实际上更糟糕,因为搜索参数是模型的一部分,所以URL中也有很多编码的[和]和)

我想做的是让表单生成一个URL,如:

/搜索/温哥华/办公?square_footage = 0-15000

其中一些参数放在URL路径本身,而其他参数保留在查询参数中(以稍微可读的格式).

在rails应用程序中处理这个问题的最佳方法是什么?我能想到的就是在表单上使用javascript代码提交来操作表单提交的URL.

forms ruby-on-rails

8
推荐指数
2
解决办法
1044
查看次数

使用MySQL Fulltext(或sphinx?)进行模糊街道地址搜索

我有一个数据库表,其中包含来自Google Maps地理编码响应的地址.谷歌缩小所有方向(西 - > W,东 - > E等).

因此,如果我输入"100 West Pender Street"这样的地址,那么Google Maps返回的格式化地址就是"100 W Pender St",我将其插入到我的表格中.

现在,如果用户出现并搜索该地址,则以下所有内容应匹配:

pender street west pender street 100 pender 100 w pender 100 west pender

他们或多或少都这样做.然而,表中的"w"被忽略,因为它低于最小字长.落在东柏纳的地址在搜索结果中被赋予相同的权重("E"也被忽略).

处理这个问题的最佳方法是什么?

我怀疑将最小字长设置为1是"坏事".

我可以搜索并替换谷歌地址中的已知缩写(N,E,S,W,St,Ave,Dr等)并用它们的扩展替换它们 - 但是有一些街道名称,这不是有效(有些城市有单字母街道名称:J街等......)

此外,像"123 160 St"这样的地址根本无法搜索,因为街道号码(123)和街道名称(160)都低于最小字长.

MySQL FullText是正确的方法吗?Sphinx能提供更好的服务吗?

或者还有其他我尚未考虑的解决方案吗?请记住,用户的搜索查询不仅要匹配属性的地址,还要匹配其他文本列,例如属性名称和描述.

mysql search full-text-search sphinx

6
推荐指数
0
解决办法
1503
查看次数

在服务器模式下使用Ghostscript将PDF转换为PNG

虽然我能够将PDF的特定页面转换为PNG,如下所示:

gs \
  -dSAFER \
  -dBATCH \
  -dNOPAUSE \
  -sDEVICE=png16m \
  -dGraphicsAlphaBits=4 \
  -sOutputFile=gymnastics-20.png \
  -dFirstPage=20 \
  -dLastPage=20 \
   gymnastics.pdf
Run Code Online (Sandbox Code Playgroud)

我想知道我是否能以某种方式使用ghostscript的JOBSERVER模式来处理几次转换,而不必每次都产生启动ghostscript的成本.

来自:http://pages.cs.wisc.edu/~ghost/doc/svn/Use.htm

-dJOBSERVER

定义\004 (^D)以启动用于与通常在作业服务器下运行的Adobe PS解释程序兼容的新封装作业.-dNOOUTERSAVE如果-dJOBSERVER指定,则忽略该开关,因为作业服务器总是在保存级别下执行输入PostScript,尽管可以使用exitserver运算符从封装的作业中转义并执行,就像-dNOOUTERSAVE指定了一样.

这也要求输入来自stdin,否则会导致错误 (Error: /invalidrestore in --restore--).

示例用法是:

   gs ... -dJOBSERVER - < inputfile.ps
                -or-
   cat inputfile.ps | gs ... -dJOBSERVER - 
Run Code Online (Sandbox Code Playgroud)

注意:^D不会导致stdin上的文件结束操作,因为它可能会依赖于TBCP(标记二进制通信协议)的某些PostScript打印机导致带外^D信号在流输入数据中发出EOF信号.这意味着stdin上的直接文件操作,例如flushfileclosefile将影响^D流中的数据处理.

我的想法是在进程中运行ghostscript.该脚本将收到对pdf的特定页面的请求,并将使用ghostscript生成指定的图像.我不想每次都启动一个新的ghostscript进程.

ghostscript

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

你可以在HTML Canvas中有多个剪辑区域吗?

我有一些代码将一堆图像加载到隐藏的img元素中,然后是一个Javascript循环,将每个图像放到画布上.但是,我想剪切每个图像,使其在放置在画布上时为圆形.

我的循环看起来像这样:

    $$('#avatars img').each(function(avatar) {
        var canvas = $('canvas');
        var context = canvas.getContext('2d');

        var x = Math.floor(Math.random() * canvas.width);
        var y = Math.floor(Math.random() * canvas.height);

        context.beginPath();
        context.arc(x+24, y+24, 20, 0, Math.PI * 2, 1);
        context.clip();

        context.strokeStyle = "black";

        context.drawImage(document.getElementById(avatar.id), x, y);

        context.stroke();
    });
Run Code Online (Sandbox Code Playgroud)

问题是,只绘制(或可见)第一个图像.

如果我删除剪切逻辑:

    $$('#avatars img').each(function(avatar) {
        var canvas = $('canvas');
        var context = canvas.getContext('2d');

        var x = Math.floor(Math.random() * canvas.width);
        var y = Math.floor(Math.random() * canvas.height);

        context.drawImage(document.getElementById(avatar.id), x, y);
    });
Run Code Online (Sandbox Code Playgroud)

然后绘制我的所有图像.

有没有办法让每张图片分别剪裁?

我尝试将剪切区域重置为图像之间的整个画布,但这不起作用.

html javascript canvas clipping

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

使用 Ruby 的 Net:HTTP 保留 HTTP 标头中的大小写

尽管 HTTP 规范规定标头不区分大小写;Paypal 及其新的自适应支付 API 要求其标头区分大小写。

使用 ActiveMerchant 的 paypal 自适应支付扩​​展 ( http://github.com/lamp/paypal_adaptive_gateway ) 似乎虽然标头全部设置为大写,但它们以混合大小写发送。

下面是发送 HTTP 请求的代码:

headers = {
  "X-PAYPAL-REQUEST-DATA-FORMAT" => "XML",
  "X-PAYPAL-RESPONSE-DATA-FORMAT" => "JSON",
  "X-PAYPAL-SECURITY-USERID" => @config[:login],
  "X-PAYPAL-SECURITY-PASSWORD" => @config[:password],
  "X-PAYPAL-SECURITY-SIGNATURE" => @config[:signature],
  "X-PAYPAL-APPLICATION-ID" => @config[:appid]
}
build_url action

request = Net::HTTP::Post.new(@url.path)

request.body = @xml
headers.each_pair { |k,v| request[k] = v }
request.content_type = 'text/xml'

proxy = Net::HTTP::Proxy("127.0.0.1", "60723")

server = proxy.new(@url.host, 443)
server.use_ssl = true

server.start { |http| http.request(request) }.body
Run Code Online (Sandbox Code Playgroud)

(我添加了代理线,这样我就可以看到 Charles 发生了什么 - http://www.charlesproxy.com/) …

ruby networking paypal http

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

如何使用Paypal的自适应支付API与Ruby避免身份验证和时间问题?

我在尝试从Ruby访问Paypal的Adaptive Payment API时遇到了多个问题.

我最初遇到的主要问题是,Paypal要求他们的HTTP标头全部为大写,但Net :: HTTP不保留HTTP标头的情况(它将它们存储为'downcased'然后输出'大写' - 所以如果您设置标题'X-PAYPAL-SECURITY-USERID',它存储为'x-paypal-security-userid'并输出为'X-Paypal-Security-Userid').

当我尝试将API与这些错误的标头一起使用时,我收到"500000内部服务器"错误.

所以我monkeypatched Net :: HTTP来保留标题的情况.但现在我得到超时异常:

Timeout::Error (execution expired):
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/timeout.rb:60:in `rbuf_fill'
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/net/protocol.rb:132:in `rbuf_fill'
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/net/protocol.rb:104:in `read_all'
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/net/http.rb:2220:in `read_body_0'
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/net/http.rb:2173:in `read_body'
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/net/http.rb:2198:in `body'
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/net/http.rb:2137:in `reading_body'
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/net/http.rb:1052:in `request'
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/net/http.rb:543:in `start'
Run Code Online (Sandbox Code Playgroud)

那么,回到我原来的问题:是否有人使用Ruby成功访问自适应支付API?如果是这样,你的秘密是什么?

ruby api paypal

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