总的来说,与Struct相比,使用OpenStruct有什么优缺点?什么类型的一般用例适合这些?
我想通过ruby脚本从命令行运行blender,然后逐行处理blender给出的输出以更新GUI中的进度条.混合器是我需要读取的stdout的外部进程并不重要.
当blender进程仍在运行时,我似乎无法捕获blender正常打印到shell的进度消息,并且我尝试了几种方法.在搅拌机退出后,我似乎总是访问搅拌机的标准配置,而不是在它仍在运行时.
这是尝试失败的一个例子.它确实得到并打印了搅拌机输出的前25行,但只有在搅拌机过程退出后:
blender = nil
t = Thread.new do
blender = open "| blender -b mball.blend -o //renders/ -F JPEG -x 1 -f 1"
end
puts "Blender is doing its job now..."
25.times { puts blender.gets}
Run Code Online (Sandbox Code Playgroud)
编辑:
为了使它更清晰一点,调用blender的命令会在shell中返回一个输出流,指示进度(第1-16部分已完成等).似乎任何"获取"输出的调用都会被阻止,直到混合器退出为止.问题是如何在blender仍在运行时访问此输出,因为blender将其输出打印到shell.
我的ssh密钥肯定设置正确,因为我在使用ssh时从未提示输入密码.但是在部署时,capistrano仍然要求输入密码cap deploy.我设置的时候不会要求密码cap deploy:setup,奇怪的是.如果没有密码提示,它将使部署周期更加顺畅.
细节:我正在将一个Sinatra应用程序部署到Dreamhost共享帐户(使用Passenger).我曾经按照教程做了很长时间,这在当时完美无缺.从那以后出现了什么.我正在使用capistrano(2.5.9)和git版本1.6.1.1.这是我的Capfile:
load 'deploy' if respond_to?(:namespace) # cap2 differentiator
set :user, 'ehsanul'
set :domain, 'jellly.com'
default_run_options[:pty] = true
# the rest should be good
set :repository, "ehsanul@jellly.com:git/jellly.git"
set :deploy_to, "/home/ehsanul/jellly.com"
set :deploy_via, :remote_cache
set :scm, 'git'
set :branch, 'deploy'
set :git_shallow_clone, 1
set :scm_verbose, true
set :use_sudo, false
server domain, :app, :web
namespace :deploy do
task :migrate do
run "cd #{current_path}; /usr/bin/rake migrate environment=production"
end
task :restart do
run "touch #{current_path}/tmp/restart.txt"
end
end
after …Run Code Online (Sandbox Code Playgroud) 除了ruby-prof和核心Benchmark类之外,你用什么来分析你的Ruby代码?特别是,您如何找到代码中的瓶颈?几乎感觉我需要使用我自己的小工具才能找出在我的代码中花费的所有时间.
我意识到ruby-prof提供了这个,但输出坦率地说非常混乱,并且不容易找出你自己的代码的哪些实际块是问题的根源(它告诉你哪些方法调用占用了最多的时间)虽然).因此,我并没有像我想的那样得到更多的东西,而且还没有真正能够利用它.
也许我做错了?还有替代品吗?谷歌搜索不会为我带来任何东西.
许多工作网站已经破坏了不会让您按经验水平缩小工作范围的搜索.即使他们这样做,通常也是错误的.这需要您在找到相关的帖子之前浏览数百个您无法申请的帖子,这非常繁琐.由于我宁愿专注于写封面信等,我想编写一个程序来查看大量的帖子,并保存那些不需要多年经验的工作的URL.
我不需要帮助编写刮刀来获取可能相关职位的html主体.问题是准确地检测工作所需的经验水平.这不应该太困难,因为工作岗位通常非常明确("必须有5年的经验......"),但是过于简单的解决方案可能存在一些问题.
就我而言,我正在寻找入门级职位.他们通常不会说"入门级",但包含这些词语可能意味着应该保存这份工作.
接下来,我可以安全地排除一项工作说它需要"5年"的经验,所以像/\d\syears /这样的正则表达式似乎是合理的排除工作.但后来,我意识到一些工作表明他们将花费0到2年的经验,与排除的正则表达相匹配但显然是我想看的工作.嗯,我可以用另一个正则表达式处理它.但有人说"不到2年"或"不到2年".也可以处理,但它让我想知道我没有想到的其他模式,并可能排除许多工作.这就是把我带到这里的原因,找到比正则表达式更好的方法来做到这一点,如果有的话.
我想尽量减少假阴性率,并保存所有似乎可能不需要多年经验的工作.排除匹配/ [3-9]\syears | 1\d\syears /似乎合理的任何内容?或者,还有更好的方法?培训贝叶斯过滤器可能吗?
编辑:有一个类似但更难的问题,可能更有用的解决.有很多工作需要"工程学位",因为你只需要了解一些技术方面的东西.但是,搜索"工程"可以为您提供数千个工作,这些工作大多无关紧要.
我如何将其缩小到那些需要任何工程学位而不是特定学位的工作,而不是自己看每一个?
我有一个两元素的ActiveRecord对象数组slots_to_import.这些对象具有begin_at列,因此具有属性.我试图获得具有唯一begin_at值的对象.唉,没用slots_to_import.uniq_by(&:begin_at).但begin_at两个对象的值相等:
(rdb:1) p slots_to_import.first.begin_at == slots_to_import.last.begin_at
true
(rdb:1) p slots_to_import.uniq_by(&:begin_at).map(&:begin_at)
[Mon, 26 Nov 2012 19:00:00 UTC +00:00, Mon, 26 Nov 2012 19:00:00 UTC +00:00]
(rdb:1) p [slots_to_import.first.begin_at, slots_to_import.last.begin_at].uniq
[Mon, 26 Nov 2012 19:00:00 UTC +00:00, Mon, 26 Nov 2012 19:00:00 UTC +00:00]
Run Code Online (Sandbox Code Playgroud)
还有一些检查:
(rdb:1) p [slots_to_import.first.begin_at.to_datetime, slots_to_import.last.begin_at.to_datetime].uniq
[Mon, 26 Nov 2012 19:00:00 +0000]
(rdb:1) p [slots_to_import.first.begin_at.usec, slots_to_import.last.begin_at.usec].uniq
[0]
(rdb:1) p [slots_to_import.first.begin_at.to_f, slots_to_import.last.begin_at.to_f].uniq
[1353956400.0]
(rdb:1) p [slots_to_import.first.begin_at.utc, slots_to_import.last.begin_at.utc].uniq
[Mon, 26 Nov …Run Code Online (Sandbox Code Playgroud) 几年前,我开始从Rails的初学者指南中学习Ruby/Rails.我已经学习了Rails的基础知识,比如一些关于模型和路线配置的约定,以及如何使用帮助器等等.但是,我没有长时间坚持,因为我很快就找到了Sinatra,并决定我个人喜欢它好多了.
我最终真的很喜欢Ruby,而且我已经编写了很多Ruby,几乎没有任何一个用于任何Rails项目.但是,事实证明,大多数可用的Ruby工作都适用于Rails应用程序.所以我现在想再次尝试Rails.
现在,参考很好,有很多很好的信息,但我只看一个参考我需要的特定事物,不记得我的头脑.但我不太可能script/console在参考文献中遇到细节.
我也不想通过初学者的教程,因为他们似乎都认为你不了解Ruby或甚至编程.我不想通过解释条件语句的内容或者我已经知道在Rails信息中穿插的Ruby的细节.
我只想要一个简洁,严谨的Rails概述/指南(没有Ruby信息混合).它存在吗?
编辑:我刚刚意识到这个问题可能更适合ServerFault.主持人请将其移动,而不是复制它?谢谢.
我已经检查了php-info,并且Postgresql扩展已经存在(pg_connect()未定义).我也可以使用psqllocalhost 连接到postgresql (我已经适当地编辑了我的pg_hba.conf文件).这是不起作用的代码:
<?php
$dbconn = pg_connect("host=localhost port=5432 dbname=mydb user=myuser password=mypass") or die('Could not connect: ' . pg_last_error());
?>
Run Code Online (Sandbox Code Playgroud)
此代码只会导致浏览器中显示"无法连接:".
我检查了我的apache日志,这是相关的错误消息:
PHP Warning: pg_connect() [<a href='function.pg-connect'>function.pg-connect</a>]:
Unable to connect to PostgreSQL server: could not connect to server: Permission
denied\n\tIs the server running on host "localhost" and accepting\n\tTCP/IP
connections on port 5432?
Run Code Online (Sandbox Code Playgroud)
我该如何修复/调试这个?
编辑:我在Centos 5.4 btw.
我正在尝试使用JRuby的samppipe.我已经看过从JRuby调用Java 的指南,并且已经成功地将它用于另一个Java包,但是无法弄清楚为什么同样的东西不能用于samppipe.
我试图基本上从JRuby做相当于这个Java:
URL url = new URL("http://www.example.com/some-location/index.html");
String text = ArticleExtractor.INSTANCE.getText(url);
Run Code Online (Sandbox Code Playgroud)
在JRuby尝试过这个:
require 'java'
url = java.net.URL.new("http://www.example.com/some-location/index.html")
text = Java::DeL3sBoilerpipeExtractors::ArticleExtractor.INSTANCE.getText(url)
Run Code Online (Sandbox Code Playgroud)
这是基于用于samppipe 的API Javadocs.这是错误:
jruby-1.6.0 :042 > Java::DeL3sBoilerpipeExtractors::ArticleExtractor
NameError: cannot load Java class deL3sBoilerpipeExtractors.ArticleExtractor
from org/jruby/javasupport/JavaClass.java:1195:in `for_name'
from org/jruby/javasupport/JavaUtilities.java:34:in `get_proxy_class'
from /usr/local/rvm/rubies/jruby-1.6.0/lib/ruby/site_ruby/shared/builtin/javasupport/java.rb:45:in `const_missing'
from (irb):42:in `evaluate'
from org/jruby/RubyKernel.java:1087:in `eval'
from /usr/local/rvm/rubies/jruby-1.6.0/lib/ruby/1.8/irb.rb:158:in `eval_input'
from /usr/local/rvm/rubies/jruby-1.6.0/lib/ruby/1.8/irb.rb:271:in `signal_status'
from /usr/local/rvm/rubies/jruby-1.6.0/lib/ruby/1.8/irb.rb:270:in `signal_status'
from /usr/local/rvm/rubies/jruby-1.6.0/lib/ruby/1.8/irb.rb:155:in `eval_input'
from org/jruby/RubyKernel.java:1417:in `loop'
from org/jruby/RubyKernel.java:1190:in `catch'
from /usr/local/rvm/rubies/jruby-1.6.0/lib/ruby/1.8/irb.rb:154:in `eval_input'
from /usr/local/rvm/rubies/jruby-1.6.0/lib/ruby/1.8/irb.rb:71:in `start'
from …Run Code Online (Sandbox Code Playgroud) 我有一个连接的,定向的循环图.任务是发现图中的每个节点而不会陷入无限循环,就像常规树遍历算法一样.
您可以假设我已经知道要启动哪个节点以便到达有向图中的所有点,并且对于每个节点,我有一个函数将返回它指向的节点.是否有已知的查找所有节点的算法?
主要问题是避免循环,如果有办法在不跟踪每个节点并将其与已遍历的节点列表进行比较的情况下,我会喜欢它.
如果您需要更多详细信息,实际任务是获取JavaScript中每个命名函数的列表,包括作为其他对象属性的函数.所以我尝试了类似下面的内容,因为我认为JS对象对彼此的引用构成了一个树(当然它没有):
function __findFunctions(obj){
for (var f in obj){
// for special case of edge with self
if (obj === obj[f]){
continue
}
if (typeof obj[f] === 'function' &&
obj.hasOwnProperty(f) &&
// exclude native functions, we only want user-defined ones
!(/\[(native\scode|object\sfunction)\]/i).test(obj[f].toString()) &&
// exclude functions with __ prefix
!(/^\s*function\s*__/).test(obj[f].toString())
){
document.write(f + "<br/>" + obj[f].toString() + "<hr/>");
}
//alert(typeof obj[f] + "\n" + obj + "\n" + obj[f] + "\n" + f)
__findFunctions(obj[f]);
}
}
__findFunctions(window);
Run Code Online (Sandbox Code Playgroud)
这段代码的问题在于它会在周期中陷入困境.