小编Pou*_*oul的帖子

使用标题字段解析CSV文件作为每行的属性

我想解析一个CSV文件,以便将每一行视为一个对象,其中header-row是对象中属性的名称.我可以写这个,但我确定它已经在那里了.

这是我的CSV输入:

"foo","bar","baz"
1,2,3
"blah",7,"blam"
4,5,6
Run Code Online (Sandbox Code Playgroud)

代码看起来像这样:

CSV.open('my_file.csv','r') do |csv_obj|
  puts csv_obj.foo   #prints 1 the 1st time, "blah" 2nd time, etc
  puts csv.bar       #prints 2 the first time, 7 the 2nd time, etc
end
Run Code Online (Sandbox Code Playgroud)

使用Ruby的CSV模块,我相信我只能通过索引访问字段.我认为上面的代码会更具可读性.有任何想法吗?

ruby csv parsing

63
推荐指数
3
解决办法
9万
查看次数

如何将"each"方法添加到Ruby对象(或者我应该扩展Array)?

我有一个对象结果包含一个result对象数组以及一些有关数组中对象的缓存统计信息.我希望Results对象能够像数组一样运行.我的第一个切入是添加这样的方法

 def <<(val)
    @result_array << val
 end
Run Code Online (Sandbox Code Playgroud)

这感觉非常像c,我知道Ruby有更好的方法.

我也希望能够做到这一点

 Results.each do |result|   
    result.do_stuff   
 end
Run Code Online (Sandbox Code Playgroud)

但我不确定这种each方法在引擎盖下真正做了什么.

目前我只是通过一个方法返回底层数组并调用它们,这似乎不是最优雅的解决方案.

任何帮助,将不胜感激.

ruby

40
推荐指数
5
解决办法
3万
查看次数

Sinatra与EventMachine WebSockets一起工作是否成功?

我一直在使用Sinatra一段时间,我想通过websockets推送数据,为我的web-app添加一些实时功能.

我已经成功地使用了gem'em-websocket',但是还没能编写一个带有sinatra Web服务器和web-socket服务器的ruby文件.

我试过旋转跑!或者开始!在单独的线程中关闭方法但没有成功.

有没有人得到这个工作?

我希望将它们放在同一个文件中,然后在两个服务器之间共享变量.

谢谢!

ruby rack sinatra eventmachine websocket

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

如何在Ruby中使对象实例成为哈希键?

我有一个Foo类,里面有一些成员变量.当类的两个实例中的所有值相等时,我希望对象"相等".然后,我想将这些对象作为哈希中的键.当我目前尝试这个时,哈希将每个实例视为不相等.

h = {}
f1 = Foo.new(a,b)
f2 = Foo.new(a,b)
Run Code Online (Sandbox Code Playgroud)

此时f1和f2应该相等.

h[f1] = 7
h[f2] = 8
puts h[f1]
Run Code Online (Sandbox Code Playgroud)

应该打印8

ruby hashmap

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

将emacs ruby​​-mode缩进更改为4个空格

从上一篇文章中我得到了Ruby模式在emacs中工作.这很有效.

为mac ruby​​开发设置.emacs文件

我们公司使用4个空格进行缩进,而不是默认2.我很难让它工作.

这是我的.emacs文件

(add-to-list'load-path"〜/ rdoc-mode.el")

(需要'ruby-mode)

(setq indent-tabs-mode nil); 始终用空格替换制表符

(setq-default tab-width 4); 为所有缓冲区设置标签宽度为4

有谁看到我做错了什么?

谢谢!

ruby emacs ruby-on-rails dot-emacs

9
推荐指数
2
解决办法
5729
查看次数

ExtJs如何滚动到网格底部?

我正在使用extjs制作基于Web的logviewer.

我希望将新的日志行添加到gridview的底部,因为它通过不需要排序将其移动到网格顶部(以及我的同事喜欢它的方式)来节省cpu.

我的问题是理想情况下,在添加新行后,网格将滚动到底部.

我一直在查看文档,我无法弄清楚如何做到这一点.我只看到滚动到顶部的方法.

有任何想法吗?

谢谢!

javascript user-interface extjs

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

选项卡中每个选项卡上的ExtJS关闭按钮

Extjs API站点为您执行的每个搜索添加一个新选项卡.

每个选项卡上都有一个红色X,用于关闭选项卡,类似于浏览器所具有的选项卡.

看看这里:

我想复制它,它似乎是内置于API的东西,但找不到它.

有任何想法吗?

html javascript extjs

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

麻烦在我的mac上安装ruby gem json

尝试通过ruby gems安装json模块时,我收到此警告.

有任何想法吗?

Mac-Mini poulh $ sudo gem install json

密码:

警告:文件'/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8 /specifications/json-1.2.0.gemspec'未评估为gem规范

构建原生扩展.这可能需要一段时间......

错误:安装json时出错:

错误:无法构建gem原生扩展.

/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby extconf.rb install json mkmf.rb在/System/Library/Frameworks/Ruby.framework/Versions/找不到ruby的头文件1.8/usr/lib中/红宝石/ ruby​​.h

ruby macos json rubygems

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

通过FTP通过TLS/SSL连接到未经认证的主机

我从中获取文件的供应商正在通过SSL从FTP更改为FTP.

我正在尝试将代码更新net/ftpnet/ftptls

我需要连接的新主机未经过认证,我的脚本会报告此错误.

hostname与服务器证书不匹配

供应商不会解决这个问题.

看着/usr/lib/ruby/1.8/net/ftptls.rb 我认为通过猴子修补FTPTLS来忽略不受信任的主机并不会太难.

我试图改变verify_modeOpenSSL::SSL::VERIFY_NONE和注释掉post_connection_check`线.

既没有奏效.

有关如何做到这一点的任何想法?

require 'socket'
require 'openssl'
require 'net/ftp'

module Net
  class FTPTLS < FTP
    def connect(host, port=FTP_PORT)
      @hostname = host
      super
    end

    def login(user = "anonymous", passwd = nil, acct = nil)
       store = OpenSSL::X509::Store.new
       store.set_default_paths
       ctx = OpenSSL::SSL::SSLContext.new('SSLv23')
       ctx.cert_store = store
       ctx.verify_mode = OpenSSL::SSL::VERIFY_PEER
       ctx.key = nil
       ctx.cert = nil
       voidcmd("AUTH TLS")
       @sock = OpenSSL::SSL::SSLSocket.new(@sock, ctx)
       @sock.connect
       @sock.post_connection_check(@hostname)
       super(user, passwd, acct)
       voidcmd("PBSZ 0") …
Run Code Online (Sandbox Code Playgroud)

ruby ftp ftps

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

boost hash为不同的输入返回相同的值

我有两个对象,帐户和交易,其中交易是唯一的帐户对和递增的ID号.我想使用boost :: hash来获取这些值的唯一值,并按照说明重载hash_value方法:http://www.boost.org/doc/libs/1_53_0/doc/html/hash/custom.html

class Account {
  ...
};

class Transaction
{
    Account account;
    unsigned int id;
};
Run Code Online (Sandbox Code Playgroud)

Account的hash_value方法正常工作,并且返回的值对于给定的帐户始终是唯一的,但是要创建唯一的对,Transaction的方法需要使用hash _combine(根据boost的说明):

inline std::size_t hash_value( const Account& acct )
{
    boost::hash<int> hasher;
    size_t rval = hasher( acct.id() ); //just an int. guaranteed to be unique
    return rval;
}


inline std::size_t hash_value( const Transaction& t )
{
    std::size_t seed = 0;
    boost::hash_combine( seed, t.account );        
    boost::hash_combine( seed, t.id );

    return seed;
}
Run Code Online (Sandbox Code Playgroud)

这有时会返回不同输入的相同值.为什么??我只有几千个账户,而且身份证号码只有几十万.这似乎不是一个上限问题.

有谁知道这是一个错误,还是我需要种子提升哈希?

谢谢

c++ hash boost

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

Html5 音频在我的 Javascript 代码中仅播放一次

我有一个仪表板网络应用程序,如果连接出现问题,我想播放警报声音。该站点的 ajax 代码将轮询数据并在无法连接时降低其刷新率。服务器恢复后,站点将继续工作。

同时,我希望每次无法连接时播放声音(所以我知道检查服务器)。这是该代码。这段代码有效。

var error_audio = new Audio("audio/"+settings.refresh.error_audio);
error_audio.load();

//this gets called when there is a connection error.
function onConnectionError() {
   error_audio.play();
}
Run Code Online (Sandbox Code Playgroud)

但是,第二次使用该功能时,音频无法播放。在 Chrome 的调试器中深入研究,音频元素中的“played”属性被设置为 true。将其设置为 false 没有任何结果。有任何想法吗?

html javascript audio

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

Ruby:如何使我的程序陷阱并从信号中正确退出?

当我在Linux上按Ctrl键我的程序时,我经常得到类似于堆栈转储(崩溃)的输出.

我可以捕获Ctrl-C信号并正常退出吗?

谢谢!

ruby linux

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

Sinatra以编程方式获取有关服务的端口和其他信息

我有一个sinatra服务foo.rb

要运行它,我在不同的端口上输入"ruby foo.rb -p 5000".

当程序运行时,我希望能够获得端口(在这种情况下为5000)和其他信息.有没有办法在应用程序运行时获取这样的信息?

谢谢

ruby web-services sinatra

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