Tag: ruby on rails

在ruby进程之间使用大型数据对象

如果使用Marshal.dump写入文件,我有一个大约10兆字节的Ruby哈希。 在gzip压缩之后它大约是500千字节。 迭代和更改此哈希在ruby中非常快(毫秒的分数)。 即使复制它也非常快。 问题是我需要在Ruby on Rails进程之间共享此哈希中的数据。 为了使用Rails缓存(file_store或memcached)执行此操作,我首先需要Marshal.dump文件,但是在序列化文件时会产生1000毫秒的延迟,在序列化时会产生400毫秒的延迟。 理想情况下,我希望能够在100毫秒内从每个进程保存和加载此哈希。 一个想法是生成一个新的Ruby进程来保存这个哈希,为其他进程提供API来修改或处理其中的数据,但我想避免这样做,除非我确定没有其他方法可以共享这个对象很快。 有没有一种方法可以更直接地在进程之间共享此哈希,而无需序列化或反序列化它? 这是我用来生成类似于我正在使用的哈希的代码: @a = [] 0.upto(500) do |r| @a[r] = [] 0.upto(10_000) do |c| if rand(10) == 0 @a[r][c] = 1 # 10% chance of being 1 else @a[r][c] = 0 end end end @c = Marshal.dump(@a) # 1000 milliseconds Marshal.load(@c) # 400 milliseconds 更新: […]

如何从图像中读取条形码

我正在寻找关于如何从图像中读取EAN-13条形码的图书馆,技术或建议(包括ISBN和ISSN编码)。 图像将来自手机或网络摄像头,因此分辨率可能非常差,并且没有很好地对齐。 我特别感兴趣的是可以在ruby轨道上使用的东西,但欢迎使用其他语言的答案。 首选开源解决方案。 迄今领先的解决方案: ZBar (以前称为Zebra -h / t @bgbg,@ Natim) – 在C中实现,带有Python,Perl和C ++接口 ZXing (h / t @codr) – 用Java(J2SE和Android)实现,其他模块/端口处于不同的开发状态(JavaME,C#,C ++,JRuby,RIM,iPhone / Objective C)