我有一个不受信任的字符串,我想在HTML页面中显示为文本.我需要以HTML实体的形式逃避字符' <'和' &'.越少越好.
我正在使用UTF8,并且不需要其他实体用于重音字母.
Ruby或Rails中是否有内置函数,或者我应该自己编写?
我通过git-svn镜像的svn存储库改变了URL.
在vanilla svn你会做的svn switch --relocate old_url_base new_url_base.
我怎么能用git-svn做到这一点?
只需更改配置文件中的svn url就会失败.
我很清楚source(又名.)实用程序,它将从文件中获取内容并在当前shell中执行它们.
现在,我正在将一些文本转换为shell命令,然后运行它们,如下所示:
$ ls | sed ... | sh
Run Code Online (Sandbox Code Playgroud)
ls只是一个随机的例子,原始文本可以是任何东西.sed也是一个转换文本的例子.有趣的是sh.我管道我得到的任何东西sh,它运行它.
我的问题是,这意味着启动一个新的子shell.我宁愿让命令在我当前的shell中运行.就像我能够做的那样source some-file,如果我在文本文件中有命令.
我不想创建临时文件因为感觉很脏.
或者,我想以与当前shell完全相同的特性启动我的子shell.
好吧,使用反引号的解决方案当然有效,但我经常需要在检查和更改输出时这样做,所以我更喜欢是否有办法将结果输入到最后.
啊,/dev/stdin事情看起来很漂亮,但是,在一个更复杂的情况下,它没有用.
所以,我有这个:
find . -type f -iname '*.doc' | ack -v '\.doc$' | perl -pe 's/^((.*)\.doc)$/git mv -f $1 $2.doc/i' | source /dev/stdin
Run Code Online (Sandbox Code Playgroud)
这确保所有.doc文件的扩展名都是小写的.
顺便说一下,可以处理xargs,但除此之外.
find . -type f -iname '*.doc' | ack -v '\.doc$' | perl -pe 's/^((.*)\.doc)$/$1 $2.doc/i' | xargs -L1 git …Run Code Online (Sandbox Code Playgroud) 因此,matz决定保留upcase并downcase限制/[A-Z]/i在ruby 1.9.1中.
ActiveSupport::Multibyte长期以来在ruby 1.8.x中经历了很棒的i18n案例String#mb_chars.
但是,当在ruby 1.9.1下尝试时,它似乎不起作用.这是我写的一个简单的测试脚本,以及我得到的输出:
$ cat test.rb
# encoding: UTF-8
puts("@ #{RUBY_VERSION} " + (__ENCODING__ rescue $KCODE).to_s)
sd, su = "Iñtërnâtiônàlizætiøn", "IÑTËRNÂTIÔNÀLIZÆTIØN"
def ps(u, d, k); puts "%-30s: %24s / %-24s" % [k, u, d] end
ps sd.upcase, su.downcase, "Plain ruby"
require 'rubygems'; require 'active_support'
ps sd.upcase, su.downcase, "With active_support"
ps sd.mb_chars.upcase.to_s, su.mb_chars.downcase.to_s, "With active_support mb_chars"
$ ruby -KU test.rb
@ 1.8.7 UTF8
Plain ruby : IñTëRNâTIôNàLIZæTIøN / iÑtËrnÂtiÔnÀlizÆtiØn …Run Code Online (Sandbox Code Playgroud) 我有一个字符串,其中包含现有符号链接的文件系统路径.我想获得此链接指向的路径.
基本上我想要通过这些hackery得到同样的东西:
s = "path/to/existing/symlink"
`ls -ld #{s}`.scan(/-> (.+)/).flatten.last
Run Code Online (Sandbox Code Playgroud)
但是我想在没有炮轰的情况下这样做.
基本上我想做点什么 git push mybranch to repo1, repo2, repo3
现在我只是多次打字,如果我急着推进,我只是将它们全部发送到后台 git push repo1 & git push repo2 &
我只是想知道我是否原生git支持我想要做的事情,或者是否有一个聪明的脚本,或者可能是一种编辑本地repo配置文件的方式来说应该将分支推送到多个遥控器.
是否有命令来识别当前shell的名称/类型,shell二进制文件的路径以及shell的版本?
我不需要所有这些,但我能得到的越多越好.
我想要的东西,有相同的感觉uname,pwd,whoami.只是一个简单输出的普通实用程序.(到目前为止还没有出现:/)
ps$ ps -o comm $$
COMM
-bash
Run Code Online (Sandbox Code Playgroud)
为什么-bash不像其他一切那样完整的路径呢?与那里的破折号有什么关系?
假设我有最简单的单文件Sinatra应用程序.他们主页上的你好世界会做.我想在Apache下使用Phusion Passenger,AKA mod_rails运行它.
很常见的情况,我打赌.你有一个博客或新闻网站,你有很多文章或blags或你称之为的任何东西,你想在每个网站的底部建议其他似乎相关的东西.
让我们假设每个项目的元数据非常少.也就是说,没有标签,类别.视为一大块文本,包括标题和作者姓名.
你如何找到可能相关的文件?
我对实际的算法很感兴趣,而不是现成的解决方案,虽然我可以看看在ruby或python中实现的东西,或者依赖于mysql或pgsql.
编辑:目前的答案还不错,但我想看到更多.对于一两件事,可能有一些非常简单的示例代码.
text information-retrieval machine-learning document-classification
我有一个漫长的运行过程,我需要它来启动另一个进程(这将运行一段时间).我只需要启动它,然后完全忘记它.
我设法通过从编程Ruby书中搜索一些代码来做我需要的东西,但我想找到最佳/正确的方法,并了解正在发生的事情.这是我最初得到的:
exec("whatever --take-very-long") if fork.nil?
Process.detach($$)
Run Code Online (Sandbox Code Playgroud)
那么,这是方式,还是我应该怎么做呢?
检查下面的答案后,我最终得到了这段代码,这似乎更有意义:
(pid = fork) ? Process.detach(pid) : exec("foo")
Run Code Online (Sandbox Code Playgroud)
我很欣赏有关如何fork运作的一些解释.[已经得到了]
分离$$对吗?我不知道为什么会这样,我真的很想更好地掌握这种情况.