Просмотр полной версии : [Ruby] - Задай вопрос, получи ответ
В этой специальной теме новички могут задавать простые вопросы по языку Ruby и всему что с ним связано.
ок.
буду первым. недавно начал изучение. вопрос вызвал один код
class Array
def inject(n)
each { |value| n = yield(n, value) }
n
end
def sum
inject(0) { |n, value| n + value }
end
def product
inject(1) { |n, value| n * value }
end
end
здесь всё работает, и я отлично понимаю как..
но вот если его изменить на
class Array
def inject(n)
each { |value| yield(n, value) }
n
end
def sum
inject(0) { |n, value|n = n + value; return n}
end
def product
inject(1) { |n, value|n = n * value; return n}
end
end
то работать он перестаёт. при суммировании он возвращает тока первый элемент. думаю надо копать в сторону локальности переменных. но понять точно не могу. видимо у меня немного не правильное понимание работы блоков. Зарание благодарен
geezer.code
24.08.2009, 23:47
yield в функции inject инвокирует(вызвает исполнение) кодблока переданного функции inject.
то есть суммирование происходит по настоящему в функции inject,
алсо return вызывает выход из функции а не из кодблока.
поэтому то как ты переписал класс- бред. имхо.
Я понимаю что это бред ) Просто вызвал вопрос как оно всё же работает.. и почему конкретно...
p.s. тоесть после ретурна всё прекращается? и другие элементы массива уже не трогаются?
дак а если ретурн в блоке не ставить.. просто написать { |n, value| n = n + value}
то это всё также не работает.. и возвращает 0
geezer.code
25.08.2009, 01:01
Я понимаю что это бред ) Просто вызвал вопрос как оно всё же работает.. и почему конкретно...
p.s. тоесть после ретурна всё прекращается? и другие элементы массива уже не трогаются?
дак а если ретурн в блоке не ставить.. просто написать { |n, value| n = n + value}
то это всё также не работает.. и возвращает 0
Ноль возвращается потому что
в инжекте не увеличивается n
оно как пришло inject(0) , так нулем и осталось.
def inject(n)
each { |value| yield(n, value) }
n
end
а в кодблоке n уже другое n - локальное для кодблока.
{ |n, value|n = n + value;}
login999
25.08.2009, 14:30
В Ruby есть GIL aka Global Interpreter Lock?
И если нету, то дайте пожалуйста пример элементарного многопоточного приложения ...
Это просто интерес, не более того )
geezer.code
25.08.2009, 14:46
В Руби есть Global VM Lock, но появился он только в интерпретаторе начиная с версии 1.9.
и для 1.8
канонический пример (=
require 'net/http'
pages = %w( forum.antichat.ru habrahabr.ru ya.ru)
threads = []
for page in pages
threads << Thread.new(page) { |myPage|
h = Net::HTTP.new(myPage, 80)
puts "Loading: #{myPage}"
resp, data = h.get('/', nil )
puts "Finished #{myPage}: #{resp.message}"
}
end
threads.each { |thread| thread.join }
А что означает вот этот код?
aString = <<END_OF_STRING
The body of the string
is the input lines up to
one ending with the same
text that followed the '<<'
END_OF_STRING
а то я что то не догнал..
особенно вот такой пример
print <<-STRING1, <<-STRING2
Concat
STRING1
enate
STRING2
geezer.code
30.08.2009, 11:55
А что означает вот этот код?
aString = <<END_OF_STRING
The body of the string
is the input lines up to
one ending with the same
text that followed the '<<'
END_OF_STRING
а то я что то не догнал..
особенно вот такой пример
print <<-STRING1, <<-STRING2
Concat
STRING1
enate
STRING2
ммм... на каком уровне ты знаешь английский ?
в первом коде дано объяснение
The body of the string
is the input lines up to
one ending with the same
text that followed the '<<'
то есть '<<' - метка начала строки, а то что написано за ней END_OF_STRING - метка окончания строки.
Дальше по тексту
A here document consists of lines in the source up to, but not including, the terminating string that you specify after the << characters. Normally, this terminator must start in the first column. However, if you put a minus sign after the << characters, you can indent the terminator.
то есть метка конца строки не должна иметь индентацию, но если это нужно перед меткой надо написать "-"
да я второй пример плохо понял.. вернее не был уверне что правильна.. а интерпретатора небыло дня три.. вот и запстил.. я надеюсь правильно понял что есть есть - то другие строки исключаются?
superboy4
04.09.2009, 19:42
Информация об установке Curl в Ruby
curb (http://curb.rubyforge.org/)
curl-multi (http://curl-multi.rubyforge.org)
вместо курла намного удобнее использовать open-uri или mechanize или watir или selenium или webrat
Excalibur
04.09.2009, 23:49
Начал изучение с книжки Криса Пайна и сразу же наткнулся на грабли: как только запускаю сохраненный скрипт он так быстро выполняется в консольном окне что не видно даже результата, что делать?
1) скрипт в студию
2) попробую всеже быть телепатом. консоль закрывается после выполнения скрипта?
нажми выполнить и набери cmd . а лучше ставль linux
superboy4
05.09.2009, 07:35
To Excalibur
Не ставь Linux, раз сидишь под Windows
Чтобы окно не закрывалось используй CMD
//////////////////////////////////////////
Я установил Watir.
gem install watir
Как его теперь полностью удалить?
Excalibur
05.09.2009, 10:15
да причём тут скрипт, пусть будет просто puts 2+2
C:\ruby>test.rb так получилось, а просто двойным кликом по скрипту не как?
superboy4
05.09.2009, 11:06
да причём тут скрипт, пусть будет просто puts 2+2
C:\ruby>test.rb так получилось, а просто двойным кликом по скрипту не как?
То есть ты говоришь если кликнуть по иконке скрипта, чтобы его запустить?
Нет, ведь они выполняются из консоли всегда, это не самостоятельные программы.
geezer.code
05.09.2009, 11:17
Так, детки, не ссоримся.
Excalibur, чтобы увидеть результат программы достаточно в конец скрипта поставить
gets, тогда скрипт будет ожидать нажатия любой клавиши.
superboy4, тебе гем мешает ?
удалять гемы можно командой
gem uninstall имя_гема
superboy4
05.09.2009, 12:50
require "watir"
#Адрес сайта
site_url = "http://vkontakte.ru"
#открываем обозреватель IE
ie = Watir::IE.new
#перейти на сайт
ie.goto site_url
#Заполняем поля ввода
ie.text_field(:name, "email").set "rebz@gmail.com"
ie.text_field(:name, "pass").set "rebzone"
#Кликаем по кнопке 'Вход'
.....
Иссяк. Не могу осуществить логин, так как не знаю как добраться до кнопки "Вход"
помогите..
geezer.code
05.09.2009, 13:05
watir потестить не могу. потому как он для win32.
но думаю что нужно копать в сторону исполнения яваскриптов.
http://justaddwater.dk/2007/11/20/how-to-run-javascript-from-watir-scripts/
superboy4
05.09.2009, 14:13
geezer.code
что-то я запыхался, английский знаю хорошо, а понять таки немогу
но тут точно через JavaScript делается..
superboy4
06.09.2009, 15:16
geezer.code
Было бы хорошо, если бы ты помог, с php у меня нет проблем, там Curl и все дела, пересел на руби, так он уже начинает выводить из себя.
geezer.code
06.09.2009, 16:31
перед использованием watir или какой другой библиотеки, попробуй сначала Net::HTTP .
Когда осовоишься пробуй уже чтонибудь. другое.
зы ну нет у меня руби на винде.
кстати, какую книгу посоветуете для изучения ruby?
я бы посоветовал http://www.ruby-doc.org/docs/ProgrammingRuby/
щас сам по ней изучаю.. пока почти всё понятно..
а что нибудь на русском есть почитать?
Excalibur
06.09.2009, 18:26
Крис Пайн "Учись программировать" (http://www.shokhirev.com/mikhail/ruby/ltp/title.html)
Хэл Фултон "Программирование на языке Ruby" (http://www.onlinedisk.ru/file/73199/)
Д. Томас, Д. Х. Хэнссон "Гибкая разработка веб-приложений в среде Rails" (http://www.onlinedisk.ru/file/91110/)
ещё есть в викиучебнике достаточно неплохой справочник
geezer.code
07.09.2009, 10:02
Учим английский, потом учимся программировать. (=
Приличные книги по Руби еще можно встретить на русском, а вот по рельсам - нет. Довольно слабый перевод, к тому же пока их переведут они успевают устареть.
от себя советую Programming Ruby: Progmatic Programmers' Guide и Design Patterns in Ruby.
Учим английский, потом учимся программировать. (=
Приличные книги по Руби еще можно встретить на русском, а вот по рельсам - нет. Довольно слабый перевод, к тому же пока их переведут они успевают устареть.
от себя советую Programming Ruby: Progmatic Programmers' Guide и Design Patterns in Ruby.
английский я знаю, но мне как бэ впадлу сидеть переводить. тем более когда есть аналоги на русском
gisTy "английский я знаю, сидеть переводить " как то не сочитается )
на самом деле сам неособо знал английский.. а когда читаешь то
1) почти всё понятно..
2) код он и в африке код
3) если что непонятно то в соседней вкладке гугльтранслейт и он поможет..
и я снова задам вопрос..
вот пример из тойже книжки
удваиваем слешы
str = 'a\b\c'
str=str.gsub(/\\/, "\\\\\\")
почему работает именно "\\\\\\" ?
как это работает ? в моё понимании
заменяем все /\\/ - бекслешы на "\\" двойные. каким образом делается подстановка?
geezer.code
08.09.2009, 17:29
Может уже стоит читать книжку внимательнее??
However, when the substitution occurs, the regular expression engine performs another pass through the string, converting "\\'' to "\'', so the net effect is to replace each single backslash with another single backslash. You need to write gsub(/\\/, '\\\\\\\\')!
geezer.code
я это читал)
но это не объясняет причину) я понял что это изза "движка" но почему он " replace each single backslash with another single backslash" вот это хотелось бы понять)
geezer.code
08.09.2009, 20:21
the regular expression engine performs another pass through the string
что в этой строке не понятно ? )
таким образом строка при таком использовании пройдет через двиг регулярок дважды.
кстати чуть ниже написано , что если использовать кодблок
.gsub(str){} , то прогон через двиг регулярок будет один. слешей нужно в 2 раза меньше
superboy4
13.09.2009, 11:27
При вызове контроллера получаю следующую ошибку.
invalid byte sequence in UTF-8
В чём же может быть проблема? Google ничего не знает.
FireFenix
13.09.2009, 11:47
омг.... ты вообще гуглом ползовацо умеешь?
1 из первых 10 линков - http://po-ru.com/diary/fixing-invalid-utf-8-in-ruby-revisited/
superboy4
13.09.2009, 15:40
омг.... ты вообще гуглом ползовацо умеешь?
1 из первых 10 линков - http://po-ru.com/diary/fixing-invalid-utf-8-in-ruby-revisited/
способ, описываемый в статье, применим только для Ruby проектов. Я получаю эту ошибку под rails,
<% form_for :photo, :html => { :multipart => true } do |form| %> <label for="first_name">Имя:</label> <%= form.text_field :first_name %> <label for="last_name">Фамилия:</label> <%= form.text_field :last_name %> <label for="file">Загружаемый файл:</label> <%= form.file_field :picture %> <%= submit_tag "Залить" %> <% end %>
обращаюсь к localhost:3000/upload/
выводится ошибка invalid byte sequence in UTF-8
форма, даже не показывается...
geezer.code
14.09.2009, 09:17
Ты пользуешься Руби 1.9 ?
это все еще нестабильная ветка, и многие вещи там могут не работать.
Откатись на 1.8.*
Эта проблема еще висит в тикетах на лайтхаузе
https://rails.lighthouseapp.com/projects/8994/tickets/2476
superboy4
18.09.2009, 13:57
Юзаю Руби 1.8
Обращаюсь к контроллёру Upload и получаю следующие ошибки, причём под Руби 1.9 они не всплывали
compile error
C:/Users/BitNami RubyStack projects/killerapp/app/views/upload/index.html.erb:6: unterminated string meets end of file
C:/Users/BitNami RubyStack projects/killerapp/app/views/upload/index.html.erb:6: syntax error, unexpected $end, expecting ')'
А вот код странички вьюшки index
<% form_for :picture, :html => { :multipart => true } do |form| %>
<label for="first_name">Имя:</label>
<%= form.text_field :first_name %>
<label for="last_name">Фамилия:</label>
<%= form.text_field :last_name %>
<%= submit_tag "Залить" %>
<% end %>
В чём же проблема? Помогите, пожалуйста.
geezer.code
21.09.2009, 10:48
что то с синтаксисом... залей весь проект куда-нибудь. я посмотрю.
DarkMist
21.09.2009, 11:23
Здра Уважаемые!
Хотелось бы изучить Руби, помогите пожалуйста: с чего начать, где взять инсталяху Руби???
в ру нете мало толковых мануалов на эт тему......
приму любые варианты ответов с ув -= DarKmist from KapeX=-
geezer.code
22.09.2009, 09:54
Здра Уважаемые!
Хотелось бы изучить Руби, помогите пожалуйста: с чего начать, где взять инсталяху Руби???
в ру нете мало толковых мануалов на эт тему......
приму любые варианты ответов с ув -= DarKmist from KapeX=-
учим английский, потом идем в программирование.
http://coolnamehere.com/geekery/ruby/rubytut/part01.html
usamafia
24.09.2009, 00:16
надо подредактировать небольшой скрипт, у меня чет не получается
аська 4360602
с меня причетается за помощь :)
superboy4
24.09.2009, 14:34
создание простого клона Twitter (статья в 3-х частях) (http://www.noupe.com/ajax/create-a-simple-twitter-app.html)
подготавливаем рабочий стол к разработке с Rails в Windows (создание новых проектов будет для Вас кайфом, как будто вы работаете в Macintosh) (http://garbageburrito.com/blog/entry/391/a-macesque-rails-development-environment-on-windows)
Лучший материал для быстрого изучения фреймворка (http://guides.rubyonrails.org/)
superboy4
03.10.2009, 13:31
geezer.code
можешь посоветовать, что почитать об ассоциациях в Rails для чайника (желательно на русском)! Дело в том, что тема это важная, и я всё время путаюсь в них, подглядываю и местами недопонимая кода. С меня +, еси чо.
извиняюсь за банальный вопрос... но есть число 153 к примеру.. как можно получить из него 1+5+3 ?? я сделал 153.to_s.split("").each { |x| x.to_f } но это не помогло.. в массиве почему то так и остаются ["1", "5", "3"].
или как хотябы из ["1", "5", "3"] сделать [1, 5, 3] чтобы через inject просумировать...
сорри за нубизм..
geezer.code
05.10.2009, 20:50
superboy4 гугл гугл гугл.
http://translated.by/you/ruby-on-rails-guides-active-record-associations/into-ru/trans/
Flcn может использовать вместо each - map или collect
Спасибо. работает )
а почему вариант с each не проходил?
Calls block once for each element in self, passing that element as a parameter.
я правильно понял что each просто не возвращает результат?
superboy4
05.12.2009, 14:36
Почему не делают сайтов на чистом Ruby?
Нигде не встречал таких проектов, а уж тем более туториалов
geezer.code
05.12.2009, 14:43
Что подразумевается под сайтами на чистом Руби?
сами Rails написаны на руби
Merb - написан на руби
Sinatra - написан на руби
Нужны еще примеры ??
извиняюсь за банальный вопрос... но есть число 153 к примеру.. как можно получить из него 1+5+3 ?? я сделал 153.to_s.split("").each { |x| x.to_f } но это не помогло.. в массиве почему то так и остаются ["1", "5", "3"].
или как хотябы из ["1", "5", "3"] сделать [1, 5, 3] чтобы через inject просумировать...
сорри за нубизм..
153.to_s.split("").join("+") #"1+5+3"
Что подразумевается под сайтами на чистом Руби?
сами Rails написаны на руби
Merb - написан на руби
Sinatra - написан на руби
Нужны еще примеры ??
лично я писал целиком веб-сервер на ruby и соответственно он был полностью заточен под цели моего сайта.
Но это не выход.
lukmus, сомнительная польза от написания своего веб-сервера.
superboy4
05.12.2009, 17:49
Что подразумевается под сайтами на чистом Руби?
сами Rails написаны на руби
Merb - написан на руби
Sinatra - написан на руби
Нужны еще примеры ??
Ты мне перечислил популярные фреймворки. Будто ты не знал, что я имел ввиду?
Есть огромное число проектов, написанных на чистом PHP без применения фреймворков. Эти фреймворки они как обёртки, добавляют целый пакет свойств и характеристик, чем определяют, иногда очень жёстко, создание какого либо проекта!!
superboy4, Ruby (как собственно и Python) не создавался конкретно для веба. Если хочешь пиши на CGI.
А вообще если мыслить, как ты, то ЯВУ предоставляет программисту массу ненужных функций, которые он может за всю свою жизнь не будет использовать. Думаю тут есть выход - писать ЯВУ для каждого своего проекта.
geezer.code
05.12.2009, 18:22
superboy4,
Можно написать на "чистом руби" чтото, но как это заставить работать?
1 написать свой сервер, как сделал lukmus
2 написать прослойку для сопряжения(модуль апача например)
3 использовать cgi интерфейс.
4 еще что-то
У каждого из решений своя специфика.
наиболее низкоуровневый фреймворк - синатра, есть свой сервер, а также возможно сопряжение с апачем через пассажир например. Вещи нужные чтобы "делать" сайты уже есть из коробки. Пользуйтесь на здоровье.
Не нужно сравнивать PHP и Ruby, они имеют разные идеологии и изначальную направленность. PHP изначально направлен на вэб, с руби всё сложнее.
superboy4
05.12.2009, 18:25
superboy4, Ruby (как собственно и Python) не создавался конкретно для веба. Если хочешь пиши на CGI.
Ruby как раз и создавался СПЕЦИАЛЬНО для веб-разработки ;)
geezer.code
05.12.2009, 18:27
Ruby как раз и создавался СПЕЦИАЛЬНО для веб-разработки ;)
Может закончишь писать глупости и пойдешь для начала почитаешь что-нибудь?
superboy4
13.12.2009, 18:05
require 'rubygems'
require 'fastercsv'
FasterCSV.parse(File.open("ip-to-country.csv")) do |row|
if row[2] == "RU" then
puts "#{row[0]} #{row[1]} #{row[4]}"
end
end
Друзья, как сделать, чтобы найденные строчки последовательно добавлялись в файл outer.csv?
В моём коде я делаю следующее:
Ищу в файле ip-to-country.csv поле, содержащее текст RU.
Если такое находится, то просто вывожу поля 1, 2 и 5.
geezer.code
13.12.2009, 18:28
1) можно запускать так ruby script.rb > outer.csv
2)
перенаправить вывод stdout в файл
fresult = File.new("outer.csv", "w")
default = $stdout
$stdout = fresult
# тут вывод через puts или print
$stdout = default
fresult.close
superboy4
13.12.2009, 18:34
geezer.code
Да нет, я пробовал в коде написать строку для открытия файла и добавления в него строки, но при каждом выполнении файл снова и снова открывался, а строка переписывалась.
Я же передал блок функции parse класса FasterCsv
Решил попробывать себя в изучение языка....Где тут ошибка)
$tokens = gets.scan( /\)|\(|-?\d+/ )
def parse
if tokens.first =~ /-?\d+/
$tokens.shift.to_f
else
$tokens.shift
r = (parse + parse)/2.0
$tokens.shift
r
end
end
puts parse
geezer.code
14.12.2009, 11:39
superboy4, не совсем понимаю о чем ты, но попробуй открывать файл с модификатором "a"
RexTiam, сначала определись с синтаксисом.
переменная у тебя называется то $tokens то tokens.
К тому же нужно определять области видимости, внутри функции parse tokens это уже совсем другой объект.
может твой код должен выглядеть как-то так ?
tokens = gets.scan( /\)|\(|-?\d+/ )
def parse(tokens)
if tokens.first =~ /-?\d+/
tokens.shift.to_f
else
tokens.shift
r = (parse + parse)/2.0
tokens.shift
r
end
end
puts parse(tokens)
superboy4
14.12.2009, 16:49
Я последовательно добавляю строчки в файл .csv
Но всегда получается, что добавление строчек начинается со второй строки файла .csv
ps: Я открыл файл .csv в OpenOffice и вижу что первая строчка пуста и записи начинаются, начиная со второй.
Как сделать, чтобы файл заполнялся с первой строки?
require 'rubygems'
require 'fastercsv'
FasterCSV.parse(File.open("ip-to-country.csv")) do |row|
if row[2] == "RU" then
myfile = File.open("output.csv", "a")
myfile.puts "#{row[0]}, #{row[1]}, #{row[4]}"
myfile.close
end
end
geezer.code
14.12.2009, 17:01
может сразу и то как ты это делаешь покажешь? ) хотя бы код
а то я же не телепат.
added
Тебе стоит проверить свой csv файл. возможно там есть какой-то whitespace.
про то,что постоянно открывать - закрывать файл я наверное говорить уже не буду.
superboy4
28.12.2009, 17:10
Как грамотно отобразить содержимое массива в Rails?
Например, как вывести фотографии на странице по 5 штук на каждой строке, чтобы фотографии распологались в тегах <td></td>, а строки соответсвенно в <tr></tr>???
geezer.code
28.12.2009, 17:28
ну например так
<% all_photos.in_groups_of(5).each do |group| -%>
<tr>
<% group.each do |photo| -%>
<td>
<%= image_tag(photo.public_path) unless photo.nil? %>
</td>
<% end -%>
</tr>
<% end -%>
superboy4
28.12.2009, 17:31
geezer.code
спасибо, дальше по ходу сам разбирусь, да тут ещё и rubyclub.com.ua не доступен уже 2 дня.
Cпасибо, с наступающим!!!
http://s41.radikal.ru/i094/0912/fc/4548faf871e4.jpg
Майкл Фитцджеральд Изучаем Ruby
Ребят не у кого нет этой чудо книги в электроном варианте на русском поделитесь пожалуйста !
http://s41.radikal.ru/i094/0912/fc/4548faf871e4.jpg
Майкл Фитцджеральд Изучаем Ruby
Ребят не у кого нет этой чудо книги в электроном варианте на русском поделитесь пожалуйста !
Согласен даже заплатить за книжечку в PDF !!!!
superboy4
04.01.2010, 16:09
Предположим у нас есть набор объектов
@photos
Как вывести из этого набора, например, скажим, только первые два объекта?
Вот, что у меня на данном этапе
<% for photo in @photos %>
<%= photo.name %>
<% end %>
Но код выше распечатает все объекты набора, а мне надо только первые два!
и пусть модераторы подчистят тему!!!
ps: :limit при создании набора @photos мне не подходит ;)
superboy4
04.01.2010, 17:58
up
тема, надеюсь не мертва!
geezer.code
04.01.2010, 18:08
TikTik, лучше все-таки учить английский
superboy4 вообще-то это элементарно
<% for photo in @photos[0..1] %>
<%= photo.name %>
<% end %>
superboy4
05.01.2010, 11:48
geezer.code
У меня есть приложение, в котором все странички пользователей (профайлы) открыты публике, но отдельные действия требуют входа участника, например, чтобы оставить комментарий.
Вопрос: Мне нужно как то узнать, что на конкретной странице находится пользователь, которому и принадлежит его профайл, чтобы только он мог иметь право редактировать свои данные, а никто другой, по сути, это очень важная фишка социальных сетей, в данный момент у меня на всех страницах пользователей присутствуют ссылки - редактирования, что конечно не правильно, я использую метод logged_in? Но как мне определить, что какая-то страница принадлежит конкретно пользователю, который сейчас в системе?
geezer.code
05.01.2010, 12:06
superboy4
ты используешь плагин для аутентификации? или код написан самостоятельно?
ну в любом случае. Предположим что ты хранишь user_id в сессии.
тогда достаточно доопределить один хелпер и в нём сравнивать , чтото вроде
def owner?
@user.id==session[:user_id]
end
или если есть метод , возвращающий текущего пользователя то так
def owner?
@user==current_user
end
superboy4
06.01.2010, 14:08
geezer.code
Что лучше всего использовать для отправки почты пользователю сайта, если сайт высоконагружен? Sendmail, SMTP или ...?
Пытаюсь установить sendmail, установил, в файлах конфигурации всё чётко дописал. Запускаю сервак,
иду на страницу пользователя, нажимаю конопку добавить в друзья, она заносит данные в базу и вызывает функцию отправки письма, и это процесс идё примерно 80.000 ms !!!!!!
В результате в ящике никакого пиьсма, а в логе девелопмен ни одной ошибке, хотя опция показа ошибок доставки почты - включена!
Помогите, пожалуйста!
ps У меня на localhost под Ubuntu на Vmware
geezer.code
06.01.2010, 17:27
geezer.code
Что лучше всего использовать для отправки почты пользователю сайта, если сайт высоконагружен? Sendmail, SMTP или ...?
Пытаюсь установить sendmail, установил, в файлах конфигурации всё чётко дописал. Запускаю сервак,
иду на страницу пользователя, нажимаю конопку добавить в друзья, она заносит данные в базу и вызывает функцию отправки письма, и это процесс идё примерно 80.000 ms !!!!!!
В результате в ящике никакого пиьсма, а в логе девелопмен ни одной ошибке, хотя опция показа ошибок доставки почты - включена!
Помогите, пожалуйста!
ps У меня на localhost под Ubuntu на Vmware
по поводу долгого таймаута не скажу ничего. правда слышал что такая проблема была именно на убунту + сендмэйл у пхпшников.
по поводу того что письмо не дошло - собственно, а чего ты хотел, отправляешь с локал хоста, который и доменного имени не имеет. То-то был бы рай для спамеров. ну ты понел :)
Далее, насчет высоконагруженности - да лучше sendmail.
superboy4
06.01.2010, 17:43
ok, спасибо
+ тебе не могу поставить, но могу поставить на днях
superboy4
08.01.2010, 19:27
geezer.code
please, tell me what this short code does....
I got it from guides.rubyonrails.org ;)
class ApplicationController < ActionController::Base
helper :all # include all helpers, all the time
protect_from_forgery # See ActionController::RequestForgeryProtection for details
# Scrub sensitive parameters from your log
# filter_parameter_logging :password
private
def current_user
@_current_user ||= session[:user_id] && User.find(session[:user_id])
end
def require_login
unless logged_in?
flash[:error] = 'Войдите либо зарегистрируйтесь!'
redirect_to root_url
end
end
def logged_in?
!!current_user
end
end
Помогите пожалуйста) Мне сказали обратиться в этот раздел. И что мне нужен "накрутчик"
Вопрос))
Как сделать так чтобы сайт не определял АйПи.
Пока пользуюсь программой Прокси Свитчер.
Но все равно получается медленно голосовать и не всегда Прокси получается обмануть сайт.
(ну или как очень очень быстро менять айпи...и чтобы я инет не сломала))
Соперники набирают голоса слишком быстро...вероятно у них лучше способы, чем мой.
Вот ссылка на сайт (Голос начисляется только после подтверждения с почты)
http://yournewstyle.com.ua/styles/167
А не проще воспользоваться программой IP Address Change ? в паблике она есть.
Подскажите, как можно узнать id капчи Recaptcha, например отсуда http://www.xilero.net/forums/login.php?do=lostpw
Нужно вызвать оригинальную функцию при перегрузке ее же, что-то типа этого (только это не правильно):
require 'net/http'
class Net::HTTP
def get(path,headers)
puts "my code"
return self.get(path,headers)
end
end
http=Net::HTTP.new('mail.ru', 80)
puts http.get('/','')
делать дополнительный метод класса, в котором вызвать необходимую-для-перегрузки функцию т.е. вот так
require 'net/http'
class Net::HTTP
def my_get(path,headers)
puts "my code"
return self.get(path,headers)
end
end
http=Net::HTTP.new('mail.ru', 80)
puts http.my_get('/','')
не катит, нужно именно перегрузить
Вопрос. Существуют ли скрипты которые отслеживают активность пользователя вконтакте и в ICQ?
Пример, того что нужно: Пользователь ICQ:123456 вышел в онлайн в 22:30 покинул ICQ в 23:10
И вообще, цена вопроса написания данных скриптов?
vitaliy_n73
02.04.2010, 09:58
Так как роздел для новачков в программировании решил запостить сюда,подскажите с какого языка лудше начинать учить программирование?
А в чем разница между классом у сущности и суперклассом ?
заранее спасибо
geezer.code
06.04.2010, 16:04
vitaliy_n73
с английского.
А в чем разница между классом у сущности и суперклассом ?
заранее спасибо
как это называется по-английски?
superboy4
06.04.2010, 17:26
как это называется по-английски?
What is the difference between class and superclass?
Thanks anyway.
Например у объекта класс .class это Class а superclass это Object
в свою очередь у Class класс это он сам и есть, а superclass это Module и так далее..
это в 1.8
geezer.code
07.04.2010, 15:05
Например у объекта класс .class это Class а superclass это Object
в свою очередь у Class класс это он сам и есть, а superclass это Module и так далее..
это в 1.8
эээ... ну чтото вы путаете. class и superclass это не термины руби
class - это класс
superclass - это класс предок(наследованный класс)
class Tree
...
end
class Oak < Tree
...
end
myOak = Oak.new
Тогда классом для myOak будет Oak, a superclass для myOak будет Tree.
ответ придумайте сами. и то класс и это
как однозначно определить тип входной переменной для метода.
что-то типа
def (String a)
...
end
только это не верно
geezer.code
09.04.2010, 17:41
как однозначно определить тип входной переменной для метода.
что-то типа
def (String a)
...
end
только это не верно
в чем сокровенный смысл?
Насколько я знаю, средствами языка - никак. Это противоречит принципу duck-typing.
P.S.
есть сторонние либы,которые позволяют провернуть такой трюк.
http://mephle.org/StrongTyping/
http://www.rubyist.net/~nobu/ruby/overload.tar.bz2
однако такой подход не ruby-style.
в чем сокровенный смысл?
Насколько я знаю, средствами языка - никак. Это противоречит принципу duck-typing.
P.S.
есть сторонние либы,которые позволяют провернуть такой трюк.
http://mephle.org/StrongTyping/
http://www.rubyist.net/~nobu/ruby/overload.tar.bz2
однако такой подход не ruby-style.
можно и проще это сделать без сторонних библиотек, напр:
def fucn (a)
if !(a.is_a? String) then return -1 end
...
end
но только это не круто
geezer.code
20.04.2010, 12:06
можно и проще это сделать без сторонних библиотек, напр:
def fucn (a)
if !(a.is_a? String) then return -1 end
...
end
но только это не круто
это не совсем то о чем я хотел написать.
эти либы дают возможность не просто проверить тип, а именно вызвать ту функцию, переданный аргумент которой соответствует принимаемому.
то есть банальная перегрузка методов, которая с самого начала не предусмотрена в языке.
Что посмотрел я на этот руби выводы: он по ходу более объектно ориентированный чем питон, синтаксис у него избыточный(эти if then endif else endelse). Помню когда-то читал что тормознутый он, насколько слабее питона, никто не скажет? Покажите мне хотя бы одну программу на руби.
Что посмотрел я на этот руби выводы: он по ходу более объектно ориентированный чем питон, синтаксис у него избыточный(эти if then endif else endelse). Помню когда-то читал что тормознутый он, насколько слабее питона, никто не скажет? Покажите мне хотя бы одну программу на руби.
metasploit, есть nmap на ruby, ROR итд, их немерянно, а насчет тормознутости ты частично не прав, вот тест скорости хабравцев:
http://anychart.com/batsuev/smth/benchmark.png
полная статья про этот тест (http://habrahabr.ru/blogs/ruby/48952/)
по ООП он уступит только Smalltalk
это не совсем то о чем я хотел написать.
эти либы дают возможность не просто проверить тип, а именно вызвать ту функцию, переданный аргумент которой соответствует принимаемому.
то есть банальная перегрузка методов, которая с самого начала не предусмотрена в языке.
такого конечно нету.
В том плане что красиво объявить аргументы функции не получится. Но можно создать прокси-объект и еще тонну извращений.
В общем я потихоньку копаю си и сорсы руби и могу сделать своё глупое заключение -> разработчики просто не стали париться.
(да и нафига оно надо? -> как уже кто-то здесь сказал: "return unless args.kind_of? Array"
Объект в руби это обычная си-структуфра.
Когда мы передаем объект в аргумент функции, передаётся не сам объект, а только указатель на него (сам объект лежит в хипе).
Так что возможно разработчики решили упростить. Что в общем вполне нормально для языка такого типа.
+ не смотря на то, что указать класс явно нельзя - возможности аргументов в руби просто шикарны ( *args/ procs-objects/ blocks )
Что посмотрел я на этот руби выводы: он по ходу более объектно ориентированный чем питон, синтаксис у него избыточный(эти if then endif else endelse). Помню когда-то читал что тормознутый он, насколько слабее питона, никто не скажет? Покажите мне хотя бы одну программу на руби.
1.8 конечно медленный.
1.9 -> в 5 раз быстрее (потому как встроили виртуальную машину)
есть реализация Jruby которая работает вроде бы в 1.5 раза быстрее 1.9
+ есть реализация на C# (IronRuby)
+ есть реализация с использованиями llvm (или какой-то другой вирт машины)
В целом можно сказать что скорость последних версий руби сравнима со скоростью пайтона. (конечно же обычного)
В любом случае, движуха в сторону ускорения руби имеется.
P.S. синтаксис аля перл. можно сказать что избыточен, по началу напрягает то, что можно обходиться без return ->
def is_equal()
true if object
end
с другой стороны писать return xxx if yyy иногда очень удобно.
конечно никто не запрещает писать старое доброе
if yyy
xxx
или даже
if yyy then xxx;
можно даже ставить ';' в конце :D
+ очень крутые нововведения в нейминге методов, например:
def finded?(object)
return true if Objects.exists?(object)
end
def baaang!(object)
и т.д. )
Например у объекта класс .class это Class а superclass это Object
в свою очередь у Class класс это он сам и есть, а superclass это Module и так далее..
это в 1.8
там вот в чем фигня, есть так называемые области видимости. (контексты)
class Base
puts "#{self.class.name}"
end
выведет Class, потому что описание класса тоже является объектом ( а мы знаем, что в руби ВСЁ является объектом )
Раз self в теле описания класса является объектом 'Class' (всё кроме объявления методов экземпляров класса)
то мы можем вот что сделать:
class Base
def self.test(string)
puts "#{string} from #{self.class.name}"
end
end
def self -> объявляем метод в контексте класса Class, то есть создаём метод для объекта этого класса.
Теперь мы сможем сделать следующее:
// для наглядности унаследуем новый класс от класса Base
// все методы, в том числе и методы класса Class тоже унаследуются
class Core < Base
test "This is test str"
end
этот код напишет:
This is test str from Class
В общем то на этом принципе основано море программ (например Rails)
class User
named_scope :not_activated, :conditions => ["active = ?", 0]
end
и затем где угодно в Rails-app:
users_to_clear = User.not_activated()
users_to_clear.each do |user|
user.destroy()
end
:)
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot