小编pet*_*ter的帖子

检查是否已定义常量

我希望这是一个简单的问题.在下面的示例中,如何检查是否已定义常量?

#this works
var = var||1
puts var
var = var||2
puts var

#this doesn't
CONST = CONST||1
puts CONST
CONST = CONST||2
puts CONST

=> 1
   1
   uninitialized constant CONST (NameError)
Run Code Online (Sandbox Code Playgroud)

ruby constants

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

基准测试:python有更快的方式走网络文件夹吗?

我需要浏览一个包含大约一万个文件的文件夹.我的旧vbscript在处理这个问题时非常缓慢.从那时起我就开始使用Ruby和Python,我在三种脚本语言之间做了一个基准测试,看看哪种语言最适合这项工作.

以下测试的结果是共享网络上4500个文件的子集

Python: 106 seconds
Ruby: 5 seconds
Vbscript: 124 seconds
Run Code Online (Sandbox Code Playgroud)

Vbscript会是最慢的并不奇怪,但我无法解释Ruby和Python之间的区别.我对Python的测试不是最佳的吗?有没有更快的方法在Python中执行此操作?

thumbs.db的测试仅用于测试,实际上还有更多的测试要做.

我需要一些东西来检查路径上的每个文件,并且不会产生太多输出而不会干扰时序.结果每次运行都有点不同,但不是很多.

#python2.7.0
import os

def recurse(path):
  for (path, dirs, files) in os.walk(path):
    for file in files:
      if file.lower() == "thumbs.db":
        print (path+'/'+file)

if __name__ == '__main__':
  import timeit
  path = '//server/share/folder/'
  print(timeit.timeit('recurse("'+path+'")', setup="from __main__ import recurse", number=1))
Run Code Online (Sandbox Code Playgroud)
'vbscript5.7
set oFso = CreateObject("Scripting.FileSystemObject")
const path = "\\server\share\folder"
start = Timer
myLCfilename="thumbs.db"

sub recurse(folder)
  for each file in folder.Files
    if lCase(file.name) = myLCfilename then
      wscript.echo file
    end if
  next …
Run Code Online (Sandbox Code Playgroud)

ruby python vbscript benchmarking

30
推荐指数
1
解决办法
4462
查看次数

在控制台中打印ASCII旋转"光标"

我有一个Ruby脚本,可以完成一些长期的工作.它只是命令行,我想表明脚本仍在运行而不是停止.我以前喜欢所谓的"旋转光标",我设法在Windows下用Ruby重现它.

问题:这在其他操作系统中有效吗?如果没有,是否有与操作系统无关的方法来实现这一目标?

请不要IRB解决方案.

10.times {
  print "/"
  sleep(0.1)
  print "\b"
  print "-"
  sleep(0.1)
  print "\b"
  print "\\"
  sleep(0.1)
  print "\b"
  print "|"
  sleep(0.1)
  print "\b"
}
Run Code Online (Sandbox Code Playgroud)

ruby command-line progress

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

虾:有没有办法垂直对齐盒子里的所有内容?

我试图将一些内容垂直居中放置在bounding_box中.使用单个文本,这没有问题:

bounding_box([0, bounds.top], :width => pdf.bounds.right, :height => pdf.bounds.top) do
  text "vertically aligned in the surrounding box", :valign => :center
end
Run Code Online (Sandbox Code Playgroud)

但是如果我的边界框中有多个元素,我该怎么办:

bounding_box([0, bounds.top], :width => pdf.bounds.right, :height => pdf.bounds.top) do
  text "vertically aligned in the surrounding box", :valign => :center
  text "vertically aligned in the surrounding box", :valign => :center
end
Run Code Online (Sandbox Code Playgroud)

这不起作用,当你尝试这个时,文本被重叠......

我正在寻找一种方法来分组bounding_box的整个内容,然后垂直对齐整个组.有没有办法用大虾做这个?

非常感谢你的帮助!克里斯

ruby alignment prawn bounding-box valign

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

如何从ARGV获取长文件名

我想制作一个工具,将一些文件名作为参数,但是当我使用这段代码时:

ARGV.each do|a|
  puts "Argument: #{a}"
end
Run Code Online (Sandbox Code Playgroud)

我在Windows中使用拖放或"发送到",我得到短文件名.所以像文件一样"C:\Ruby193\bin\test\New Text Document.txt"成为 C:\Ruby193\bin\test\NEWTEX~1.TXT参数.

从命令行运行脚本时没有问题,longfilenames作为参数.

当我使用拖放或发送到时,如何获得长文件名?

ruby windows command-line drag-and-drop long-filenames

7
推荐指数
2
解决办法
902
查看次数

SVG与HTML5 Canvas中的图表

我想开始一个项目,我需要绘制图表,包括用线条连接的圆角矩形和点击某些元素时的JavaScript动作.这需要适用于所有现代浏览器.

SVG和HTML5 Canvas似乎都能够做到这一点,所以我想知道什么是最好的.

此外,我不想重新发明轮子,所以如果有图书馆做我想知道的事情; 我看了一下Raphaël和其他一些JavaScript绘图库,但是它们没有提供我需要的所有功能.在Google的API中有一个这样的工具,但它非常有限.

html5 svg canvas

7
推荐指数
1
解决办法
3798
查看次数

Rsync:纯Ruby实现?

我有一个Rsync程序Deltacopy,可执行文件作为客户端和服务器,但如果可能的话,我想用Rsync的纯Ruby实现替换它.我发现了像six-rsync和rsync-update这样的宝石,但它们似乎不是一般的实现.我正在寻找一个纯Ruby解决方案,因此不涉及任何可执行文件,并且最好在多个操作系统上运行.如果可能的话,简单的样本会很棒.

我只寻找Rsync,没有其他传输或备份解决方案.

ruby rsync

7
推荐指数
1
解决办法
4613
查看次数

在控制台中向左移动一个字符

在控制台中,您可以打印"\b"以擦除光标左侧的字符(退格键)

print "the last char is going to be erased\b" # the last char is going to be erased
Run Code Online (Sandbox Code Playgroud)

如何只向左移动一个位置而不是擦除(左箭头)?

ruby console

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

Ruby => Javascript翻译

好奇......你怎么用JS写这个Ruby?

Array.new(3, Array.new(3, 0))
Run Code Online (Sandbox Code Playgroud)

返回

[[0, 0, 0], [0, 0, 0], [0, 0, 0]]
Run Code Online (Sandbox Code Playgroud)

我尝试过各种各样的东西,但它们看起来都很混乱.我想有些东西不能像Ruby一样干净,但你会怎么做呢?

也许我会学习一两个JS技巧;)

编辑 据透露,这个Ruby代码实际上并没有创建3个数组.它创建了1个数组,其他引用.这不是意图.我正在寻找一种方法来轻松地映射具有X个元素的2维数组,以及JS中的Y个嵌套元素.

还......这是一个人为的例子.内涵是能够用任何数字代替3.这只是一个使用3的例子.

javascript ruby deep-copy

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

从SQL查询制作图表的工具

我有一个复杂的Oracle SQL查询,我希望在图表中可视化,以使我的同事可以理解.我试过http://snowflakejoins.com,但它只是呛到它.

有人有更好的建议吗?我更喜欢互联网上的网络应用程序,如果不是Windows的桌面应用程序.

with 
  logs as (
    select 
      l.job_id, 
      l.subjob,
      sum(l.verwerkt) verwerkt, 
      sum(l.errors) errors, 
      max(l.datum) laatst
     from 
      dinf_monitor_logs l, 
      dinf_monitor_jobs j 
     where 
      l.datum>sysdate-j.dagen
      and j.job_id=l.job_id(+)
     group by 
      l.job_id, 
      l.subjob
  ),
  alllogs as (
    select job_id, subjob, max(datum) laatst from dinf_monitor_logs group by job_id, subjob
  )
  select row_number() over(order by alllogs.job_id, alllogs.subjob) r,
    alllogs.job_id,
    alljobs.naam,
    alllogs.subjob,
    logs.verwerkt, 
    logs.errors, 
    alllogs.laatst datum,
    alljobs.wikilink,
    alljobs.loglink,
    alljobs.contact,
    case 
      when alllogs.laatst is null then 1
      when round(sysdate-(alllogs.laatst+alljobs.dagen))<0 then 0
      else round(sysdate-(alllogs.laatst+alljobs.dagen))
    end overtijd,
    case …
Run Code Online (Sandbox Code Playgroud)

sql oracle diagram erd toad

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