如何找到包含某些Unicode范围内字符的PostgreSQL表的所有行,例如西里尔字符?
我们的代码呢
require "english"
Run Code Online (Sandbox Code Playgroud)
它在本地工作,但我们在CI服务器上遇到此错误:
LoadError:无法加载此类文件 - 英文
有任何想法吗?
虽然我不是Vim的专家,但我一直在努力研究一个粗略的Vim,相当于 TextMate的⌘R功能,从缓冲区运行Ruby代码并显示输出.
脚本当前只打开一个新窗口(拆分):new
并将输出放在那里.如果多次运行它,它会打开多个窗口.理想情况下,我希望它在每个标签页中重复使用相同的窗口,就像:help
它一样.
我看了,但还没有找到实现这个目标的方法.有什么指针吗?
我使用vim在我的Mac上开发,我昨天更新到Mountain Lion.我正在使用http://pqrs.org/macosx/keyremap4macbook/来将转义键的功能重新映射到大写锁定以在编辑和插入模式之间切换.如果没有这个功能,我无法在vim中进行功能开发,而且它似乎在Moutain Lion中不起作用.我真的需要尽快解决!
非常感谢你们.
假设我将此vimscript设为"/tmp/example.vim":
let g:input = "START; % END"
exec("! clear && echo " . shellescape(g:input))
Run Code Online (Sandbox Code Playgroud)
如果我打开该文件并运行它:so %
,输出将是
START; /tmp/example.vim END
Run Code Online (Sandbox Code Playgroud)
因为"%"扩展为缓冲区名称.我想要输出
START; % END
Run Code Online (Sandbox Code Playgroud)
我可以使用泛型escape()
方法来逃避百分号.这有效:
let g:input = "START; % END"
exec("! clear && echo " . escape(shellescape(g:input), "%"))
Run Code Online (Sandbox Code Playgroud)
但这真的是最好的方式吗?我敢肯定我应该逃避更多的角色.为此目的是否有特定的逃逸功能?还是一个更好的方式来掏出来?
在bash中,这以预期的顺序给出输出:
ruby -e "puts 'one'; raise 'two'"
one
-e:1:in `<main>': two (RuntimeError)
Run Code Online (Sandbox Code Playgroud)
但是如果我将STDERR重定向到STDOUT,我会在输出之前得到错误,这是我不想要的:
ruby -e "puts 'one'; raise 'two'" 2>&1 | cat
-e:1:in `<main>': two (RuntimeError)
one
Run Code Online (Sandbox Code Playgroud)
我想将输出重定向到文本文件(它的行为与cat
上面相同)并获得输出和异常,但顺序与查看终端输出时的顺序相同.这可以实现吗?
在 Ruby 2.7 中,我可以有效地解构块参数中的哈希:
>> RUBY_VERSION
=> "2.7.6"
>> [{foo: 123}].each { |foo:| p foo }
123
=> [{:foo=>123}]
Run Code Online (Sandbox Code Playgroud)
在 Ruby 3.1 中,我不能:
>> RUBY_VERSION
=> "3.1.2"
>> [{foo: 123}].each { |foo:| p foo }
(irb):7:in `block in <top (required)>': missing keyword: :foo (ArgumentError)
Run Code Online (Sandbox Code Playgroud)
可以在参数列表之外对其进行模式匹配:
[{foo: 123}].each { |x| x => {foo:}; p foo }
Run Code Online (Sandbox Code Playgroud)
但如果可能的话,我正在寻找参数列表中的某些内容。
假设我想安排 00:00\xe2\x80\x9300:59 期间的事件集合。我将它们安排在整分钟(00:01,从不 00:01:30)。
\n\n我想在那段时间内将它们间隔得尽可能远,但我事先不知道在那一小时内总共会有多少个事件。我今天可能会安排一场活动,然后明天再安排两场活动。
\n\n我脑子里有明显的算法,我可以想出暴力的方法来实现它,但我确信有人知道更好的方法。我更喜欢 Ruby 或我可以翻译成 Ruby 的东西,但我会接受我能得到的。
\n\n所以我脑子里能想到的算法是:
\n\n活动 1 于 00:00 结束。
\n\n事件 2 在 00:30 结束,因为该时间距现有事件最远。
\n\n事件 3 可能在 00:15 或 00:45 结束。所以也许我只选择第一个,00:15。
\n\n赛事 4 于 00:45 结束。
\n\n事件 5 在 00:08 左右结束(从 00:07:30 向上取整)。
\n\n等等。
\n\n因此,我们可以查看每对拍摄的分钟数(例如 00:00\xe2\x80\x9300:15、00:15\xe2\x80\x9300:30、00:30\xe2\x80\x9300:00),选择最大的范围 (00:30\xe2\x80\x9300:00),将其除以二并舍入。
\n\n但我确信它可以做得更好。分享吧!
\n我升级到Elixir 1.3。当我尝试启动Phoenix应用程序时mix phoenix.server
出现错误:
== Compilation error on file web/views/page_view.ex ==
** (UndefinedFunctionError) function Phoenix.HTML.Engine.init/1 is undefined or private
Run Code Online (Sandbox Code Playgroud)
尝试通过升级库来修复它,但出现其他错误,例如:
** (CompileError) lib/poison/parser.ex:11: Poison.SyntaxError.__struct__/1 is undefined, cannot expand struct Poison.SyntaxError
Run Code Online (Sandbox Code Playgroud)
和
== Compilation error on file lib/plug/test.ex ==
** (CompileError) lib/plug/test.ex:53: Plug.Conn.__struct__/1 is undefined, cannot expand struct Plug.Conn
(stdlib) lists.erl:1353: :lists.mapfoldl/3
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
我想将一列更改为 NOT NULL:
ALTER TABLE "foos" ALTER "bar_id" SET NOT NULL
Run Code Online (Sandbox Code Playgroud)
“foos”表有近 1 000 000 条记录。它的写入量相当低,但相当稳定。有很多阅读量。
根据我的经验,像这样将大表中的列更改为 NOT NULL 会导致应用程序停机,大概是因为它会导致 (b) 锁定。
不过,我还没有找到一个很好的解释来证实这一点。
如果这是真的,我能做些什么来避免它?
添加带有 DEFAULT 子句的列或更改现有列的类型将需要重写整个表及其索引。
我不确定更改 NULL 是否算作“更改现有列的类型”,但我相信我上次看到这个问题时确实在列上有一个索引。
也许删除索引,使列非空,然后重新添加索引会改善情况?