试图从数组中过滤一些条目.它不能保证它们在主数组中,因此我正在通过迭代进行测试.
total = ['alpha', 'bravo', 'charlie', 'delta', 'echo']
hide = ['charlie', 'echo']
pick = []
for i in total
if !hide.include?(i)
puts i
pick.push(i)
end
end
puts pick
Run Code Online (Sandbox Code Playgroud)
这不起作用.有没有更好的方法来提供这种过滤器?
使用带有UTC时区的字段创建表的语法是什么?
我有这些领域:
(id INT PRIMARY KEY NOT NULL,
bravo timestamp without time zone DEFAULT now(),
charlie timestamp with time zone UTC DEFAULT now()
)
Run Code Online (Sandbox Code Playgroud)
这个名字的最后一个字段charlie不是出于某种原因.我希望它很简单,因为它只是告诉它有一个时区,然后在那里推动UTC,并now()在输入过程中弄清楚db .
PostgreSQL 10.6 和 CentOS 7
pg_ctl status
pg_ctl: could not access directory "/var/lib/pgsql/data": Permission denied`
Run Code Online (Sandbox Code Playgroud)
鉴于拥有所有权,无法pg_ctl访问此内容? /var/lib/pgsql/datapostgres:postgres
drwx------ 3 postgres postgres 94 Nov 14 06:43 pgsql
Run Code Online (Sandbox Code Playgroud)
如何在不产生漏洞的情况下修复此问题?为什么这会抛出错误?
su - postgres
cd /var/lib
/var/lib/pgsql: drwx------ 3 postgres postgres 94 Nov 14 06:43 pgsql
/var/lib/pgsql/10: drwx------ 4 postgres postgres 33 Nov 14 06:38 10
/var/lib/pgsql/10/data: drwx------ 20 postgres postgres 4096 Nov 15 03:47 data
Run Code Online (Sandbox Code Playgroud) \ tTrying以拆分此制表符分隔的数据集:
171 1000 21
269 1000 25
389 1000 40
1020 1-03 30 1
1058 1-03 30 1
1074 1-03 30 1
200 300 500
Run Code Online (Sandbox Code Playgroud)
(为清楚起见:)
171\t1000\t21\t\n
269\t1000\t25\t\n
389\t1000\t40\t\n
1020\t1-03\t30\t1\n
1058\t1-03\t30\t1\n
1074\t1-03\t30\t1\n
200\t300\t\t500\n
a = text.split(/\n/)
a.each do |i|
u = i.split(/\t/)
puts u.size
end
==>
3
3
3
4
4
4
4
Run Code Online (Sandbox Code Playgroud)
\ t \n组合似乎削掉了最后一个\ t,我需要进一步输入.我怎么能绕过这个?干杯
编辑:这是我所期待的:
4
4
4
4
4
4
4
Run Code Online (Sandbox Code Playgroud) ruby在 a 中crontab以及在终端中手动运行脚本时,我收到重复的警告。
/Users/rich/.rbenv/versions/2.7.4/lib/ruby/2.7.0/net/protocol.rb:66: warning: already initialized constant Net::ProtocRetryError
/Users/rich/.rbenv/versions/2.7.4/lib/ruby/gems/2.7.0/gems/net-protocol-0.1.2/lib/net/protocol.rb:68: warning: previous definition of ProtocRetryError was here
/Users/rich/.rbenv/versions/2.7.4/lib/ruby/2.7.0/net/protocol.rb:206: warning: already initialized constant Net::BufferedIO::BUFSIZE
/Users/rich/.rbenv/versions/2.7.4/lib/ruby/gems/2.7.0/gems/net-protocol-0.1.2/lib/net/protocol.rb:208: warning: previous definition of BUFSIZE was here
/Users/rich/.rbenv/versions/2.7.4/lib/ruby/2.7.0/net/protocol.rb:503: warning: already initialized constant Net::NetPrivate::Socket
/Users/rich/.rbenv/versions/2.7.4/lib/ruby/gems/2.7.0/gems/net-protocol-0.1.2/lib/net/protocol.rb:504: warning: previous definition of Socket was here
Run Code Online (Sandbox Code Playgroud)
我已将脚本更改为 usenet/http或Faraday,我假设后者需要第一个。最近和很久以前就看到过这种行为,这是宝石的重新加载,如果我是正确的,net这是宝石的一部分。core我只是不确定为什么要重新加载。
由于几个原因,我习惯于rbenv兼顾版本,这一点不会改变。ruby我的 shebang 是,#!/Users/rich/.rbenv/shims/ruby但我的ruby版本有点不同:
$ which ruby
==> /Users/rich/.rbenv/versions/2.7.4/bin/ruby
$ ruby -v
==> Ruby version: …Run Code Online (Sandbox Code Playgroud) 如何编写initalizer()方法来形成实例变量(空或其他),然后迭代一组args来设置实例变量?
这就是我的想法:
def initialize(*p)
@sid = "123asdf654"
@token = "abc123"
@bert = "1192875119"
@me = "4165551212"
@media_url = ""
@message = ""
args.each do |k,v|
instance_variable_set("@#{k}", v) unless v.nil?
end
end
Run Code Online (Sandbox Code Playgroud)
我希望能够设置已知的实例变量(如此处所示),然后遍历args并更新所选实例变量的值,或者创建新的变量.
我想要修改一个variable位置,复制methodname!语法而不是将新的修改值重新分配给它var.我可以这样做proc吗?我还在学习procs,看到它们非常有用,使用得当.
a = "Santol bag 85.88 www.example.com/products/16785
Shaddock kg 2.94 www.example.com/products/4109
Palm Fig 5kg 94.34 www.example.com/products/23072
Litchee lb 95.85 www.example.com/products/2557"
a = a.split("\n")
linebreak = Proc.new { |text| text.split("\n") }
linebreak![a]
Run Code Online (Sandbox Code Playgroud)
第一次重新分配似乎很麻烦.proc版本我想看看我是否可以内联执行它.这可能吗?
我需要PostgreSQL 过去 30 天的报告,其中某些日子可能没有条目。所以上周二可能没有任何记录。星期三可能有 8 条记录。
这将进入条形图,因此需要过去 30 天的每一天。只靠数据库,有没有办法强制一个最近30天的结果,加上对应的结果值,即使是nil?我必须将最后一个设置为 0。现在我的结果只显示了 16 天。
我想我必须迭代结果Ruby以获得我正在寻找的数据集。我试图依靠数据库而不是在外面运行以进行进一步处理。
SELECT DISTINCT creation_date::date as myday, count(id)
FROM queries
GROUP BY myday
ORDER BY myday DESC
LIMIT 30
Run Code Online (Sandbox Code Playgroud) 我有条件:environment为交易设置电子商务符号.当我开发时,我希望使用测试帐户.
if :environemnt == 'development'
:ssl_merchant_id = '001234'
:ssl_user_id = 'windoe6'
:ssl_pin = 'ABCDE'
elsif :environemnt == 'production'
:ssl_merchant_id = '006543'
:ssl_user_id = 'dingbat32'
:ssl_pin = 'AKEIN'
end
Run Code Online (Sandbox Code Playgroud)
我想使用类定义和对象创建来避免条件.清洁代码建议这样做.我无法看到绕过条件来选择这些符号集中的任何一个.
是否可以使用类定义来避免条件限制?我仍然需要创建两个类,然后选择一个必须在代码中选择的类.还有一个触发器可以选择使用或创建的对象.可以做到,怎么做?
我怎样才能完成下一百个?使用Ruby 2.3.2.
48 -> 100
52 -> 100
112 -> 200
试过48.round(-2)但是那个倒了下来.Trialed一些BigDecimal值,但这让我无处可去.
我正在寻找一种方法来限定文件名是否以数组内的后缀结尾。
\n\nfiletypes = %w(.flac .wv)\nDir.open(Dir.pwd).each do |filename|\n q = "." + filename.split(\'.\').last.to_s\n pp filename if filetypes.include?(q)\nend\nRun Code Online (Sandbox Code Playgroud)\n\n我认为必须有某种内置迭代器来遍历限定符数组。我在这里错过了什么吗?
\n\nfiletypes = %w(.flac .wv)\nDir.open(Dir.pwd).each do |filename|\n pp filename if filename.end_with?(filetypes)\nend\nRun Code Online (Sandbox Code Playgroud)\n\n这是行不通的。文档是这样说的:
\n\nend_with?([suffixes]+) \xe2\x86\x92 true or false
所以它表明可以遍历数组,但它对我不起作用。我怎样才能将数组传递给end_with??
ruby ×8
arrays ×3
postgresql ×3
block ×1
centos7 ×1
class ×1
conditional ×1
create-table ×1
net-http ×1
parameters ×1
pg-ctl ×1
proc ×1
rbenv ×1
rounding ×1
select ×1
split ×1
string ×1
timestamp ×1