подскажите как обрабатывать данные выводимые в консоль? например я пингую и мне надо дальше обработать эти данные
Code: cmd="ping 8.8.8.8 -c 4" pipe = IO.popen(cmd) puts "REVERSE OUTPUT" pipe.readlines.each {|line| puts line.reverse} каналы точно работают только в *nix, как с виндой не знаю
луксмус!? a = system('ping -i2 10.0.100.101') pipe = IO.popen(a) puts "REVERSE OUTPUT" pipe.readlines.each {|line| puts line.reverse} что не так?? -- > in `popen': can't convert true into String (TypeError)... сам понял надо IO.popen(ping -i2 10.0.100.101) и все работает... а с реверсом ты прикалолся, молодца))
Подскажите кто силен: пришол к таму коду Code: pipe = IO.popen('ping -c5 ya.ru') mdev=pipe.readlines str=mdev[9] r = /rtt .*\/([0-9\.]{1,}) ms / t = r .match str puts t (тут регулярка отсеивает все кроме значения mdev команды ping) регулярка отказывается работать, хотя если на прямую присвоить значение , то все норм. проверял через irb
я щас пьян, поэтому возможно скажу чушь, но регулярку в таком виде нужно компилировать, помойму это Regex.compile(/rtt .*\/([0-9\.]{1,}) ms / ) Но лучше не слушай меня, а прочитай Фултона. и что такое mdev[9] ? хэш, массив, строка. какая версия 1.8.x или 1.9.x они принципиально отличаються в этом плане
Лукмус в регулярке закрался подлый пробел в конце))) а mdev[9] это 9 строка из пайпа )) к которой и применяю регулярное PS с наступающим всех рубистов с рельсовиками!!
использую редактор SCITE Code: name = gets.chomp puts name вот код ведь он должен запуститься что собственно говоря он и делает должно появиться окно консоли в котором нужно вбить данные в переменную name, но оно появляться но ввести туда ничего не получается
windows? на линуксе все прекрасно работает, но так даже лучше: Code: puts 'Input name:' name = gets.chomp puts name
Приветствую! Хочется писать проект на Рельсах, кто может посоветовать хороший и недорогой хостинг с поддержкой Ruby on Rails?
руби-парсер нашел сырой скрипт, более мение работающий.... но надо бы его заставить в файл вывести. Подскажите в каком месте попроще.... Code: require 'mechanize' class GoogleSearch def initialize @agent = Mechanize.new uagents = [] @sourceid = ["chrome","opera","navclient-ff","navclient"] Mechanize::AGENT_ALIASES.each_pair { |name, val| uagents << name } @agent.user_agent_alias = uagents[rand(uagents.size-1)] end def parse(q, n = 0, sid = 3) count, sites = 0, [] shash, sitesurl = {}, [] page = @agent.get("http://www.google.ru/search?start=#{count*10}&rls=ru&q=#{q}&sourceid=#{@sourceid[sid]}&ie=utf-8&oe=utf-8&channel=suggest") count = page.search('//a[@class="fl"]')[-1].inner_text.to_i while true if count > n and n != 0 count = n break end sleep(rand(10)) page = @agent.get("http://www.google.com/search?start=#{count*10}&rls=ru&q=#{q}&sourceid=#{@sourceid[sid]}&ie=utf-8&oe=utf-8&channel=suggest") break if page.search('//a[@class="fl"]')[-1].inner_text.to_i <= count puts count = page.search('//a[@class="fl"]')[-1].inner_text.to_i end puts "All #{count}" (0..count).each{|i| sleep(rand(3)) page = @agent.get("http://www.google.ru/search?start=#{count*10}&rls=ru&q=#{q}&sourceid=#{@sourceid[sid]}&ie=utf-8&oe=utf-8&channel=suggest") page.search('//cite').each{|s| sites << "http://"+s.inner_text } } sites.each{|s| begin sitesurl << URI.split(s)[2] rescue end } sitesurl.each{|s| begin shash[s] += 1 rescue shash[s] = 1 end } return shash end end test = GoogleSearch.new sites1 = test.parse("запрос 1",10,0) sites2 = test.parse("запром 2")
Code: require 'net/http' puts "Ykazat url" target = gets.chomp.to_s otvet = "" pochta = [] zagolovok = { 'User-Agent' => "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"} client = Net::HTTP.new("www.google.com") poisk = ["100", "200","300", "400", "500"] poisk.each { |org| resp, data = client.get2("/search?hl=en&lr=&ie=UTF-8&q=%40"+target+"&start=#{org}&sa=N&filter=0&num=100",zagolovok) otvet << data } puts "Rezultat:" otvet.gsub!(/<.?em?[>]*>/, "") otvet.scan(/[A-Z0-9._%+-]+@#{target}/i) do |t| pochta << t puts pochta.uniq end gets.chomp #File.open('log.txt', 'a'){ |f| f.puts("#{pochta.uniq}\n") } запись в файл otvet << data инетересует вот эта часть кода а именно эти << две стрелочки к сожалению пока прочел только Крис Пайна только это в этом коде понять не могу
TikTik, добавляет к существующей строке строку, что была передана в качестве аргумента. Так же как += или concat. Code: str = "www." str << "site.ru" str #=> "www.site.ru"
помогите, пожалуйста, с функцией поиска в строках. Например: есть массив mas['красный', 'синий', 'зеленый'] и строка 'красный флаг', надо найти значение массива наиболее совпадающее со строкой. Вот то что я у меня, но работает не очень хорошо. Code: def search(masiv,word) n=1 koef=0 mas=0 while mas<masiv.length while n<=word.length if word[n]==masiv[mas][n] koef+=1 end n=n+1 end if (koef/(word.length-2)*100)<60 return false end if (koef/(word.length-2)*100)>60 return true end mas=mas+1 end end n=1 потому что строка str='привет' str[0]='
Прежде всего - не надо так омерзительно именовать переменные. Годный поиск - вообще довольно сложная тема, об этом не одна книга написана, но полное вхождение подстроки реализуется довольно просто. Code: array.find_all{ |el|; el.to_s[word.to_s] } Вернет все приводимые к строке элементы массива, в которых будет вхождение приводимого к строке word. К вашему примеру это вполне подойдет.
ruby предоставляет много встроенных плюшек для обработки данных в том числе. поэтому многие вещи просто реализуются одной строкой. у фитцжеральда была неплохая книга на эту тему, советую.