我正在使用Rails 5.我想使用下面的代码解析.xls(不要与.xlsx doc混淆)
book = Roo::Spreadsheet.open(file_location)
sheet = book.sheet(0)
text = sheet.to_csv
csv = CSV.parse(text)
arr_of_arrs = csv
text_content = ""
arr_of_arrs.each do |arr|
arr.map!{|v| v && v.to_f < 1 && v.to_f > 0 ? TimeFormattingHelper.time_as_str(v.to_f * 24 * 3600 * 1000) : v}
text_content = "#{text_content}\n#{arr.join("\t")}"
end
Run Code Online (Sandbox Code Playgroud)
这是我在上面引用的方法
def time_as_str(time_in_ms)
regex = /^(0*:?)*0*/
Time.at(time_in_ms.to_f/1000).utc.strftime("%H:%M:%S.%1N").sub!(regex, '')
end
Run Code Online (Sandbox Code Playgroud)
我遇到麻烦的一个方面是我的.xls doc中出现的单元格
24:08:00
Run Code Online (Sandbox Code Playgroud)
被处理为
1904-01-02T00:08:00+00:00
Run Code Online (Sandbox Code Playgroud)
使用上面的代码.如何解析我在屏幕上看到的值?也就是说,如何将日期值转换为时间值?
作为另一个Excel文档的示例,显示为的单元格
24:02:00
Run Code Online (Sandbox Code Playgroud)
正在被上面的代码解析为
1899-12-31T00:02:00+00:00
Run Code Online (Sandbox Code Playgroud) 我有一个Rails 4应用程序,我与它一起使用sidekiq
来运行异步作业.我通常在我的Rails应用程序之外运行的一个作业是一大堆复杂的SQL查询,它们无法真正由ActiveRecord建模.这组SQL查询与我的Rails应用程序的连接是,它应该在我的一个控制器操作被调用时执行.
理想情况下,我会从控制器中的Rails应用程序中为Sidekiq排队,继续运行查询.现在它们存储在一个外部文件中,我不完全确定Rails运行所述SQL的最佳方法是什么.
任何解决方案都很受欢
如何在bash for循环中内联一个字符串数组?这有效:
array=(one two)
for i in ${array[*]};do echo $i; done
Run Code Online (Sandbox Code Playgroud)
但我想消除额外的局部变量.我尝试了许多似乎合理的变体,例如:
for i in ${("one" "two")[*]};do echo $i; done
Run Code Online (Sandbox Code Playgroud)
要么
for i in ${"one" "two"};do echo $i; done
Run Code Online (Sandbox Code Playgroud)
在每种情况下,它对待one
和two
作为命令:(
给出了一些Java 8方法函数:
class Foo { Bar getBar() {} }
class Bar { Baz getBaz() {} }
Run Code Online (Sandbox Code Playgroud)
两个访问器的组合看起来像:
Function<Foo, Bar> getBarFromFoo = Foo::getBar;
Function<Bar, Baz> getBazFromBar = Bar::getBaz;
Function<Foo, Baz> getBazFromFoo = getBarFromFoo.andThen(getBazFromBar);
Run Code Online (Sandbox Code Playgroud)
有更简洁的方法吗?这似乎有效
((Function<Foo, Bar>) Foo::getBar).andThen(Bar::getBaz)
Run Code Online (Sandbox Code Playgroud)
但它相当难看.由于优先原因,外围有意义,但为什么演员必要?
(Foo::getBar::getBaz
会很好,但唉...)
我已经构建了一些精心制作的FactoryGirl工厂定义来测试Rails项目,为此它们运行良好.
我现在想用脚本(Ruby,Rake,等等......)使用相同的定义,用大量有效的,正确关联的记录来填充Rails开发数据库.
我确信这是一项常见任务,但无法找到有用的参考资料.
什么是最佳做法?如何进行?
说工厂在spec/factories.rb
.接下来是什么?谢谢.
更新
还在苦苦挣扎.试过这个rake
任务.
require 'factory_girl'
require 'spec/factories'
namespace :db do
desc "Fill database with trial data"
task :populate => :environment do
Rake::Task['db:reset'].invoke
50.times do |n|
# Make a consistent set of related records.
team = FactoryGirl.create(:team, :completed)
team.members << FactoryGirl.create(:member)
FactoryGirl.create(:design, :team => team)
end
end
end
Run Code Online (Sandbox Code Playgroud)
唉,这找不到我的factories.rb
:
rake aborted!
cannot load such file -- spec/factories
Run Code Online (Sandbox Code Playgroud)
在其他任何地方,项目根相对要求路径工作正常.什么是秘密握手?
标题是大多数问题.我有一组圆圈,每个圆圈由中心C和半径r给出.两个圆之间的距离是它们中心之间的欧氏距离减去它们的半径.对于圆圈a和b,
d_ab = | C_a - C_b | - r_a - r_b.
请注意,如果圆圈重叠,这可能是负数.
那么找到集合中给定圆的最近(最小距离)邻居的最快数据结构是什么?
必须支持添加和删除以"任意顺序交错"的"查找最近"查询的圆圈.事先没有人知道该集的几何分布.
这将是系统的核心,其中典型的圈数为50,000,并且将需要成千上万的查询,插入和删除,理想情况是高端平板设备上的用户交互速度(一秒或更短).
该点最近的邻居进行了研究,死亡,但这个版本与圈似乎有点困难.
我看过kd-trees,四棵树,r-trees以及这些变种.关于哪些可能是最好的尝试以及新建议的建议都将是一个非常好的帮助.
任何人都可以帮助我区分常规语言(即那些可以用正则表达式描述的语言)和其他常规语言正式定义不常规的语言吗?此外,你能否提供双方的一些例子?
我有这个公式:
index = (a * k) % M
Run Code Online (Sandbox Code Playgroud)
它将数字'k'从不同数字的输入集K映射到哈希表中的位置.我想知道如何编写一个非暴力程序,找到这样的'M'和'a',使'M'最小,并且给定的集合K没有碰撞.
我的应用程序中有一个(大)字符串文件,其中包含一系列随机字符[aZ]和[0-9]以及";","/","?",":"和"@".我希望我的申请告诉我连续显示6位数的最近位置(如"105487"或"558463").
实现这一目标的最佳方法是什么?感谢您对此进行调查.
我正在尝试调试错误版本的函数被调用导致段错误的问题.我正在编译的代码是机器生成的,包含一个名为'times'的函数,它复杂地对它的两个参数进行乘法运算.在链接到更高级别的目标文件之前,此代码被编译为.o.
运行此代码时,segfaults和gdb表示它处于glibc的'times'版本中,甚至不会使用相同数量的参数.这个代码中没有'#include任何地方的实例.
将时间名称更改为times1可以解决问题.这不是一个长期的解决方案,但由于机器生成的代码性质和手动编辑此函数的名称一直没有吸引力.
整个烂摊子用-Wall编译清洁,所以我不知道在哪里看.关于如何解决这个问题的任何想法?
Compile chain:
gcc -Wall -I. -g --shared -o dpd.o -fPIC *.c (mahine generated code here)
gcc -g --std=c99 -c -fpic getData.c -I/usr/local/include -L/usr/local/lib -lmatio -I/usr/local/include/iverilog -I$(MATLAB)
gcc -g -shared -o getData.vpi getData.o $(MATLAB)/dpd.o -lvpi -lmatio -L/usr/local/lib
Run Code Online (Sandbox Code Playgroud)