也许有人可以帮助我.
从像这样的CSV文件开始:
Ticker,"Price","Market Cap"
ZUMZ,30.00,933.90
XTEX,16.02,811.57
AAC,9.83,80.02
Run Code Online (Sandbox Code Playgroud)
我设法把它们读成一个数组:
require 'csv'
tickers = CSV.read("stocks.csv", {:headers => true, :return_headers => true, :header_converters => :symbol, :converters => :all} )
Run Code Online (Sandbox Code Playgroud)
要验证数据,这有效:
puts tickers[1][:ticker]
ZUMZ
Run Code Online (Sandbox Code Playgroud)
但是,这不是:
puts tickers[:ticker => "XTEX"][:price]
Run Code Online (Sandbox Code Playgroud)
如何使用自动收录器字段作为唯一键将此数组转换为哈希值,以便我可以轻松地按照输入的第1行中的定义查找任何其他字段?处理更多的列和行.
非常感激!
我知道漂亮的UDP和TCP之间的差异一般(如http://www.onsip.com/about-voip/sip/udp-versus-tcp-for-voip)
问题是,在什么情况下使用TCP作为传输在SIP VOiP通信中具有明显的优势?
有没有办法让ruby脚本回显(或记录到文件我可以尾随-f)每一行执行,类似于DOS中的bash -x或@echo?
ruby -w不这样做 - 只会增加警告的冗长等.
研究了Unroller,但它不起作用,可能过于陈旧.无法编译的依赖项.
我经常使用irb但在这种情况下我需要一些非交互式的东西,例如.检验验尸.
多年来我一直注意到GNU在Unix中的grep(不仅仅是Linux风格)检测到我正在使用像xterm/gnome-terminal/kconsole这样的具有颜色功能的TERM,并在上下文中很好地着色了我的搜索表达式.
什么可能是一个简单的cli工具,只能加强/突出你的正则表达式或简单的搜索字符串,但不像grep,否则不会过滤掉任何行?也许一个sed技巧可以做到这一点,我可以别名,后来管道命令?
例
所以我写了一个程序pricehist.sh,它通常为另一个程序生成类似CSV的数据,但我经常在视觉上检查它:
./pricehist.sh mostalexp-GPW 28 |sort -r -g -k 3 -t ' ' |column -t -s", "
MOSTALEXP,20120222,0.78,0.79,0.76,0.77,63900,0.77 0.04000 5.00000 -0.01000 -1.25000 49203
MOSTALEXP,20120203,0.82,0.82,0.78,0.78,446089,0.78 0.04000 4.87805 0 0 347949
MOSTALEXP,20120124,0.71,0.71,0.69,0.71,61478,0.71 0.03000 4.16667 -0.01000 -1.38889 43649
MOSTALEXP,20120130,0.73,0.73,0.70,0.73,59488,0.73 0.03000 4.10959 0 0 43426
MOSTALEXP,20120210,0.79,0.81,0.77,0.81,104120,0.81 0.03000 3.75000 0.01000 1.25000 84337
MOSTALEXP,20120213,0.80,0.80,0.78,0.80,86606,0.80 0.03000 3.70370 -0.01000 -1.23457 69284
MOSTALEXP,20120126,0.69,0.75,0.69,0.72,146353,0.72 0.02000 2.81690 0.04000 5.63380 105374
MOSTALEXP,20120131,0.72,0.73,0.71,0.72,72734,0.72 0.02000 2.73973 0 0 52368
MOSTALEXP,20120123,0.72,0.73,0.71,0.72,24133,0.72 0.02000 2.73973 0 0 17375
MOSTALEXP,20120214,0.78,0.81,0.78,0.79,56990,0.79 …
Run Code Online (Sandbox Code Playgroud) 我需要一些看似简单但让我感到困惑的事情的帮助.尝试编写一些模糊匹配方法,以处理根据需要计算的值与实际可从选择列表中获得的值之间的格式差异.
值(选项执行价格)始终是计算的Float like 85.0
或Int.
数组包含字符串形式的数字,在任何一个增量中都是不可预测的,或者它们是否会显示为舍入到某个小数(包括额外的零5.50
)或没有小数(如85
),例如:
select_list = ["77.5", "80", "82.5", "85", "87.5", "90", "95", "100", "105"]
Run Code Online (Sandbox Code Playgroud)
我不确定如何编写一行或两行代码,这些代码将返回数组中出现的最接近的匹配元素(按数字值).例如,如果select_list.contains? 85.0
返回 "85"
实际上,选择选项来自Watir::Webdriver browser.select_list(:id, "lstStrike0_1")
HTML对象,其可见文本(不是HTML值)是那些数字; 也许有更直接的方式来调用 browser.select_list(:id, "lstStrike0_1").select X
Watir如何将所有这些选择转换为Ruby数组?
我不知道这是什么名字,这使我的搜索变得复杂.
我的数据文件OX.session.xml是(旧的?)形式
<?xml version="1.0" encoding="utf-8"?>
<CAppLogin xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://oxbranch.optionsxpress.com">
<SessionID>FE5E27A056944FBFBEF047F2B99E0BF6</SessionID>
<AccountNum>8228-5500</AccountNum>
<AccountID>967454</AccountID>
</CAppLogin>
Run Code Online (Sandbox Code Playgroud)
那个XML数据格式究竟叫什么?
无论如何,我想要的是在我的Ruby代码中最终得到一个哈希,如下所示:
CAppLogin = { :SessionID => "FE5E27A056944FBFBEF047F2B99E0BF6", :AccountNum => "8228-5500", etc. } # Doesn't have to be called CAppLogin as in the file, may be fixed
Run Code Online (Sandbox Code Playgroud)
什么可能是最短的,最内置的Ruby方式来自动化哈希读取,我可以更新SessionID值并将其轻松存储回文件以供以后的程序运行?
我玩过YAML,REXML但是还不想打印我的(坏)示例试验.
检查美国证券交易所今天是否开放交易的最简单方法是什么?
我希望避免的长期方法是创建例程来解析带有日历信息的提要,例如https://business.nasdaq.com/trade/US-Options/Holiday-Trading-Hours.html
我更喜欢Ruby,但即使是使用curl进行简单的 URL 查找来生成真/假,或者直到下一个市场开盘的时间,也会很棒。
选修的
能够查找任意日期会更好,并解决这个问题。即什至是来自外壳的
东西。curl google.com/search?q="Is the NYSE open on $(date +%Y-%m-%d)"
我很惊讶那里似乎没有太多讨论.
在Mechanize中,我可以轻松地从浏览器中读取整个cookie jar,将其存储到文件中,然后将其加载到以后的会话/运行中,然后再次加载该网站的页面.
如何用watir-webdriver做同样的事情?
UPDATE
现在用0.5.2 我确实看到了新的方法browser.cookies.to_hash
,可以将这个问题变成"如何使用例如.和?来实现.from_hash或类似的加载器"..clear
.add
但是,我特别热衷于使用之前版本(0.4.1)加载和保存所有cookie,我的服务器可能会暂时停留一段时间.通过Selenium司机可能吗?
经过最后从我的Ubuntu开发沙箱中清除发行版ruby软件包以取代强烈推荐的rvm后,我必须误解一些基本的东西:
我不想更改所有.rb源文件中的所有shebang行
#!/usr/bin/ruby
Run Code Online (Sandbox Code Playgroud)
进入/ usr/local/rvm/bin/ruby也没有任何版本特定的.
我的源文件需要使用系统默认的ruby二进制文件(而不是rvm)与生产服务器上的对应文件保持不变.
任何保持通用代码一致性的建议?我应该一次又一次地将shebangs转换成类似的东西
#!/usr/bin/env ruby
Run Code Online (Sandbox Code Playgroud)
或者(尽管那个链接的网站说的)是否有一些干净的方式让rvm挂钩到/ usr/bin/ruby,假设所有冲突的.deb包都被删除了?更不用说,如何获取其他.deb软件包依赖于ruby + libs的存在来识别非发行版ruby ......但这可能是一个单独的问题.