Pull to refresh
17
0
Андрей @morr

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

Send message
парсер кавычки побил
User.find_by_nickname("test'\"")
Кто-то явно не в теме

pry(main)> User.find_by_nickname(«test'\»")
User Load (0.2ms) SELECT `users`.* FROM `users` WHERE `users`.`nickname` = 'test\'\"' LIMIT 1
А чем вас прямой редирект с текущей страницы на OAuth точку доступа не устроил? Даже если весь сайт на аяксе построен, то ничего страшного в разовой перезагрузке страницы для авторизации не будет.
Допускаю присваивание внутри if при двух условиях:
1. переменная используется исключительно внутри блока if
2. присваивание происходит в начале условия, а не где-то в середине
if (($var = foo()) == ...)
Во всех остальных случаях согласен, это абсолютное зло.
из description гугл снипет часто составляет
Все сеошники должны гореть спички жидкость для розжгига проивопожарные системы не дорого в аду. (с)
Раньше ruby не могли использовать в embedded systems (как это по русски будет?) из-за требования к наличию ISO стандарта у встраиваемого языка программирования. Так толи только в Японии, толи во всём мире — не знаю точно.
Ещё под это дело Матц(а может и не только он) пишет отдельный интерпретатор. Когда закончит, можно будет купить новенький холодильник и запустить на нём рельсы -)
Этот гем решит все ваши проблемы с бекапами
github.com/meskyanichi/backup
Простите за сарказм.
Я лишь искренне не понимаю, зачем вы так бездарно расходуете свой талант.
Ваша программа открывает такие возможности, а вы хотите раздавать её, тем более бесплатно, всяким бездельнкам? Заработайте сами с её помощью миллионы, и после этого, если есть желание помогать другим, спонсируйте детские дома, школы, университеты, больницы, обустройте прилегающий к вашему дому район — вариантов так много…
А бесплатная брошюрка на тему «как заработать свой первый милилон на форексе?» к вашей программе не прилагается? Или, что ещё лучше, видеокурс скачать онлайн бесплатно без регистрации и смс?
> Перегрузка метода
Имхо тут проблема не в самом руби, а том, что вы хотите программировать на нём, как на си/яве/шарпе.
Уврен, этого никогда не сделают, и не только потому, что в руби2 обещают ввести именованные аргументы фукцииям, но и потому, что ваш пример использования перегрузки сам по себе является примером дурного кода.

if arg.is_a? String
'string version ' + arg.to_s
elsif args.is_a? Array
'array version ' + arg.to_s
elsif args.is_a? Numeric
'numeric version ' + arg.to_s
end

Вернее конечно в совсем тривиальных случаях, с логикой в одну-две строчки, подобный подход имет право на жизнь, но во всех остальных ситуациях следует доработать иерархию классов и использовать полиморфизм. (кстати, не рекомендуют использовать is_a?, а вместо применять kind_of?)

Ещё одна причина в том, что логика работы самого руби проста как доска, и для любого идентификатора действуют лишь два правила:
1. Это локальная переменная
2. Если это не локальная переменная, то это вызов фунции из self.
Ну а при вызове ф-ии, ф-ия ищется в синглетон классе, в текущем классе, а затем по всем ancestors, после чего идёт вызов method_missing.
И усложнять эту логику ради ситуаций, нарушающих принцип «не спрашивай меня, кто я, а говори мне, что делать»… зачем?

> Отобразить хэш и получить из него другой хэш, а не массив
Вот тут соглашусь, inject не всегда удобно использовать.

> Преобразовать экземпляр класса в экземпляр его же собственного подкласса
Мне кажется, всё дело опять в коде, нарушающем принцип «не спрашивай меня, кто я, а говори мне, что делать».

Ведь и сейчас рабочих вариантов для подобной ситуации достаточно.
Можно не наследовать Bird от Animal, а делегировать.
Можно нужный функционал Bird вынести в модуль и полученное от Animal.get_flying_animal расширить этим модулем.
Можно манкипатчнуть сам Animal, чтобы он возвращал сразу нужное.
Или писать код так, чтобы ему всё равно было, что там Animal или Bird или что-то другое.

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

> Метод Object#in?(collection)
В активсуппорте много всяких вкусностей, и всем нравятся разные. Тогда уж сразу весь гем в стандартную библиотеку, чтобы никому не было обидно.
Хотя опять зачем? Можно просто подключить этот гем в ваш проект :)

> Отрицательная форма вопросительных методов
if !arr.empty? -> if arr.any? -> unless arr.empty?
if !a.nil? -> if a -> unless a.nil?
Плюс .blank? ещё в активсуппорте

> Отрезаем расширения файлов
По-моему это тоже есть, толи какой-то класс, толи метод в одном классов. Не помню, кажется где-то видел и даже использовал.
Хороший пример. К чёрту вендор префиксы и откат на яваскрипт для всех, у кого не работает.
30% пользователей оперы, 5% эксплорера и 2% старого фаерфокса сами виноваты, что не пользуются браузером верстальщика.
Есть потрясающий(для меня точно) доклад от Yehuda Katz «Why ruby isn't python» с конференции RuPy
blip.tv/rupy-strongly-dynamic-conference/yehuda-katz-tradeoffs-and-choices-why-ruby-isn-t-python-5726460
где он рассказывает о некоторых принципах, лежащих в основе ruby, почему оно всё работает именно так как есть, сравнивая с аналогичными вещами в python, и почему некоторые концепции в других языках с точки зрения рубиста 'сломаны'
> Т.е. в руби вы в строку впихиваете ещё и исполняемый код? Как-то мне это смешение не очень нравится.
Есть два вида синтаксиса.
Можно вставлять выражения напрямую в строки: «some text #{some_ruby_expression}»
Можно использовать аналог format: «some text %s» % string_expression или «some text %s %f» % [string_expression, float_expression]

На практике если надо вставить всего одну переменную или какое-то простое выражение, то часто используют первый вариант, в более же сложных ситуациях — второй.
Благодаря наличию удобных фреймворков и различных библиотек тот или иной язык может быть удобен для разработки определённых вещей.
И в области математических задач или написания гуевых приложений руби как раз блистать не будет.
Но если вы возьмёте область веба, то всё будет ровно наоборот.
Про переход ruby на 1.9. Он всё-таки можно сказать уже завершен.
Старые проекты могут ещё крутиться на 1.8.7, но все новые гемы пишут под работу с 1.9, некоторые даже начинают дропать совместимость с 1.8, те же рельсы 4е, да и другие гемы тоже, плюс ree выпуск новых релизов сворачивают в пользу mri 1.9.
Соответственно всё, что вы записываете в минус из-за поддержки только в 1.9 для начинающих новые проекты таковым уже не будет.

Плюс если вы уж сравниваете переходы на новые версии, сравните заодно уже близкую миграцию python на 3.0 Тут всё на порядок или два печальнее.
IE6 сколько уже лет хоронят, а он всё никак до конца не умрёт. XP с IE 8 будет умирать ещё дольше.

Что же до реализации, то с современными темпами развития стоит вебкиту или геко ввести поддержку этого черновика, остальные за скорее всего за месяцы подтяутся.
«Чтобы быстрее разобраться с тем, как работает Grid Layout, давайте сразу же начнем с ...»
Предлагаю начать с того, что у пользователей IE в Windows Vista и Windows XP всё это никогда не будет работать, и на этом, собственно, можно закончить статью.
Для интересующихся темой ещё можно почитать книгу на английском Programming Collective Intelligence, там одна из глав посвящена составлению рекомендаций — Collaborative Filtering.
имхо всем было бы лучше, если бы гугл на CoffeeScript внимание обратили

Information

Rating
Does not participate
Location
Тула, Тульская обл., Россия
Registered
Activity