Обновить
26
0
Голуб Михаил@mholub

Пользователь

Отправить сообщение
Вообще-то я программист на rails :)
Может просто я тормоз, но мне слабо представляется, как я вот так сходу за час это сделаю.
Хотел бы я посмотреть, как Вы это сделаете за час. Полуготовое тяп-ляп решение без тестов же сделанным не считается?
если не нужно снимать скриншоты со слоями, то очень неплох skitch (http://skitch.com)
за пример рисования круга?
через CSS и позиционирование? мысль в принципе интересная и пока кроме как отрендерить каким-нибудь движком и вернуться к картинке — альтернатив я для бота не вижу
ну и такая капча очень нестойкая, тут гораздо легче найти контур (а следовательно и распознать букву), чем в картинке
откуда вы эти get_, set_ взяли? не пишут так в ruby.
будет на днях, может сегодня вечерком, я его уже начал писать, но не закончил
точно не знаю, какой набор коллекций входит в STL, но базовые есть в core, а экзотика обязательно найдется на github.com и rubyforge.org
внимательно посмотрите на последний скриншот
collect или map (алиас) НЕ изменяет массив, а возвращает измененную копию.
А вот collect! и map! да.
mholub|mholub irb                                                         21:25
irb(main):001:0> a = [1, 2, 3]
=> [1, 2, 3]
irb(main):002:0> a.map { |x| 2 * x }
=> [2, 4, 6]
irb(main):003:0> a
=> [1, 2, 3]
irb(main):004:0> a.map! {|x| 2 * x }
=> [2, 4, 6]
irb(main):005:0> a
=> [2, 4, 6]

Вообще в ruby это такая идиома: predicate? и dangerous_method!

Ну и забыли про мой любимый итератор — inject.

inject это свертка (fold) или accumulate, известная любителям ФП.
Действует так, если inject-у указывается аргумент, то этот аргумент является начальным значением, inject проходит по массиву и для каждого элемента вызывает блок, передавая ему как параметры накопленное значение (на первой итерации как раз начальное) и сам элемент. Значение, которое вернет блок присваивается накопленному значению и идет переход к следующей итерации.
С примерами понятнее:
[1, 2, 3].inject(0) { |sum, x| sum + x } #сумма всех элементов массива

Если аргумент не передается, то начальным значением становится первый элемент, а итерация начинается со второго:
(1..10).inject { |fac, n| fac * n } #факториал от положительного n
[1, -3, 4, 5, -16, 23].inject { |min, el| min > el ? el : min } #минимальный элемент в массиве

зря вы просто побурчали, писать транслитом идентификаторы в коде это просто невообразимый пипец.

Вот жутчайший пример:
ru.wikibooks.org/wiki/Введение_в_язык_Scheme_для_школьников
зачем вам apache на девелоперской машине?
руби себя и с mongrel прекрасно чувствует и совершенно ничего настраивать не нужно
метод всегда возвращает последнее вычисленное выражение за исключением случаев с return
puts возвращает соответственно nil
никак, исключительно из эстетических соображений, ну кроме тернарного оператора:
condition ? if-expression : else-expression 
Ну вообще говоря if, for, while, etc возвращают значения и их можно теоретически использовать в выражениях (но это изврат конечно)
А вот в форме:

variable = if condition
                 some_value
               else
                 other_value
               end

встретить вполне можно.
А при чем здесь динамическая типизация?

это проблемы слабой типизации в конкретных языках (php, javascript), а не динамической.
Не вижу особого смысла в данной статье, ибо из нее совершенно непонятно, зачем язык создавался и какие у него будут ключевые особенности.

Если честно, видеть эталонный рекурсивный процесс вычисления чисел фибоначчи не очень интересно.
в макоси кстати кнопка «Закрыть» подразумевает именно закрытие окна, но не приложения — разница в том, что свернутое окно видно в списке свернутых окон, а закрытое окно именно закрыто, но если щелкнуть по, например, иконке айтюнса в доке, просто открывается новое окно

Информация

В рейтинге
Не участвует
Откуда
Москва, Москва и Московская обл., Россия
Дата рождения
Зарегистрирован
Активность