草庐IT

Unix-ish

全部标签

c++ - 了解动态链接在 UNIX 上的工作原理

考虑我们有以下情况:一个名为program的程序动态取决于libfoo.solibfoo.so这不依赖于任何东西(嗯,它依赖于libstdc++和其他东西,但我想我们可以省略它)program完美运行。突然间,libfoo代码更改,一些函数现在在内部使用func_bar()另一个库提供的函数libbar.so.libfoo.so已重新编译,现在取决于libbar.so.program保持不变,它仍然只取决于libfoo.so.现在当我执行program它提示他找不到func_bar().这是我的问题:libfoo.so接口(interface)没有改变,只有它的实现。为什么progra

c++ - 了解动态链接在 UNIX 上的工作原理

考虑我们有以下情况:一个名为program的程序动态取决于libfoo.solibfoo.so这不依赖于任何东西(嗯,它依赖于libstdc++和其他东西,但我想我们可以省略它)program完美运行。突然间,libfoo代码更改,一些函数现在在内部使用func_bar()另一个库提供的函数libbar.so.libfoo.so已重新编译,现在取决于libbar.so.program保持不变,它仍然只取决于libfoo.so.现在当我执行program它提示他找不到func_bar().这是我的问题:libfoo.so接口(interface)没有改变,只有它的实现。为什么progra

ruby-on-rails - 通过 unix shell 在控制台上执行多个命令

我目前正在尝试弄清楚是否可以通过Unixshell或在ruby​​脚本中在Rails控制台的一行中运行多个命令。例如:exec('echop=Product.first;b=Billing.first|railsc')当我尝试与示例类似的操作时,它总是会在启动控制台之前尝试执行这两个命令。希望这是有道理的,感谢我能得到的任何帮助。提前致谢! 最佳答案 是的,你可以做到这一点从unixshell提示:echo'p=Product.first;b=Billing.first'|railsc从Rails控制台本身,或者我猜是一个ruby​

ruby-on-rails - 如何将 Rails 时间自动转换为 Unix 纪元时间?

我有一个Rails应用程序,它大量使用created_at和updated_at字段。我发现像Post.last.created_at.to_f之类的东西会给我纪元时间,但我总是需要纪元时间,所以我想知道是否有某种方法可以编写自动后处理每次调用created_at和update_at时都会进行转换的查询过滤器。现在,每次我阅读created_at/updated_at时,我都会重复自己,这是一种糟糕的形式,并且在我忘记进行转换时已经导致了错误。我正在使用Rails3.2.13和Ruby1.9.3p392。此外,我不能只在我的View中编写post.created_at.to_f,因为我

ruby - 为新的 unix 工具添加安静/冗长的标志有多重要?

我正在编写一些带有选项标志的unix风格的Ruby脚本。通常,我在这些脚本中写了很多STDOUT.puts和STDERR.puts语句。现在我想知道将--verbose或-q标志用于打开或关闭对STDERR的有用输出是否是“好的形式”。反对这样做的两个论点是这会使程序更复杂,用户已经可以通过将STDERR重定向到/dev/null来静音日志输出但话又说回来,Unix哲学的一个原则是沉默是金,这意味着应该始终有一个--verbose模式标志。但这不是与制作只做一件事的小程序的宗旨相冲突吗?第二个问题是:如果静默/冗长标志是个好主意,那么冗长是否应该成为默认设置?能否请一些UNIX编程高手

ruby-on-rails - 在 Ruby 中如何将 ISO 8601 日期转换为 UNIX 时间戳?

我一直在尝试Time.parse()和Date.parse(),但看不出来。我需要将“2007-12-3123:59:59”形式的日期转换为UNIX时间戳。PHP的strtotime()函数之类的东西会很完美。 最佳答案 您给出的示例的ISO8601时间格式为“2007-12-31T23:59:59”,而不是“2007-12-3123:59:59”(注意T在数据和时间组件之间)。在Ruby中,如果您需要time库,您可以解析格式正确的ISO8601日期。如果您的日期使用空格而不是T来分隔日期和时间,只需在将其传递给Time.iso8

ruby - 如何通过 Unix 套接字与 Sinatra 网络应用程序通信?

我正在嵌入式设备上使用Sinatra编写Web应用程序,需要能够通过Unix套接字向同一设备上运行的嵌入式代码发送和接收数据。我们很可能会使用JSON作为数据格式,但我还没有找到真正说明如何设置它并与Web应用程序通信的示例。我正在寻找一个将在套接字上监听的代码示例,以及一个显示如何将该数据导入Sinatra网页的示例。我已经看到了两者的点点滴滴,但没有任何东西将这些概念联系在一起。 最佳答案 我没有亲自做过,但我知道EventMachine支持使用unix套接字。事件机的优点是您可以让代码监听套接字而不会“干扰”sinatrawe

ruby-on-rails - 在 UNIX 套接字中运行 Rails Server

是否可以在UNIX套接字中运行railsserver?我问是因为railsserver提供了如此漂亮的输出,并且很容易区分SQL查询和HTTP请求等。但是,我使用的是Nginx,所以我想连接应用程序服务器使用UNIX套接字,但我遇到了一些麻烦。以下命令会导致错误:bundleexecrailsserverthin--socket=/var/run/rails_app.sock它似乎试图将--socket解析为railsserver上的一个选项,而不是thin。有什么办法解决这个问题,还是我一直在使用thinstart并屈服于不太漂亮的日志输出? 最佳答案

Ruby 正则表达式匹配 Unix 和 Windows 文件路径

以下实例方法采用文件路径并返回文件的前缀(分隔符之前的部分):@separator="@"deftable_namepathregex=Regexp.new("\/[^\/]+#{@separator}")path.match(regex)[0].gsub(/^.|.$/,'').downcase.to_symendtable_name"bla/bla/bla/Prefix@invoice.csv"#=>:prefix到目前为止,这种方法只适用于Unix。为了让它在Windows上运行,我还需要捕获反斜杠(\)。不幸的是,那是我陷入困境的时候:@separator="@"deftabl

ruby - 用于 Unix 命令管道的 Ruby 的 `Object#tap` 的惯用模拟?

对于Unix命令管道,是否存在与Ruby的Object#tap相似的惯用方法?用例:在管道内,我想针对其副作用执行命令,但隐式返回输入,以免破坏管道的链接。例如:echo{1,2,3}|tr'''\n'|sort|tap'xargsecho'|#arbitrarycode,butimplicitlyreturntheinputuniq我来自Ruby,我会这样做:[1,2,3].sort.tap{|x|putsx}.uniq 最佳答案 tee命令类似;它将输入写入标准输出以及一个或多个文件。如果该文件是进程替换,我相信您会得到相同的效