Обновить
65
Илья Воронцов@VorontsovIE

Programming for science

15
Подписчики
Отправить сообщение
Ничего не могу сказать про него. Насколько я понял, он используется на системах с ограниченными ресурсами. На сайте BusyBox, кстати, чуть ли не сразу предлагают сделать симлинки.
В некотором смысле это похоже на программный пакет, разбитый на части постфактум. Вероятно, это неплохой тул для своих задач. Но я не уверен, что это самая удачная архитектура «на каждый день».
Не знаю, честно говоря. Подозреваю, что сейчас это исправили: разработчики ядра и rubygems в последнее время немало работали над совместимостью и платформонезависимостью. А в том рассказе ошибка точно не из-за yum?
Отчасти вы правы. Но разным приложениям нужно разное, я же не знаю, что у вас за приложение.
Мне, например, бывало полезным работать с потоками. Утилитам diff и less, наверное, нужно работать с цветами и интерактивным вводом команд. Таким крупным игрокам как gem, rspec и git зачем-то понадобились конфигурационные файлы. Держать приложение модульным и протестированным — просто правило хорошего тона. А отсутствие кодов возврата может несколько смутить человека, который вставляет вызов вашей программы в середину sh-файла, а тот и не упадет, и не завершается адекватным результатом.
Большая часть правил довольно проста в реализации, и отнюдь не занимает 3 недели, если не пытаться всё «вылизать» до идеала.
Про getopts, вы правы, стоило сказать.

Про тесты — всё зависит от задачи. Для большинства задач fakefs всё-таки хватает. А граничные ситуации — это скорее удел юнит-тестов, нет разве? Но в целом вы правы, есть ситуации, где работать всё будет немного по-разному.

Про конфликты 1.8 и 1.9 я не знаю. Нашел, что можно поставить в спецификации гема строку:
s.required_ruby_version = Gem::Requirement.new(">= 1.9.3")
Похожая строка используется в последних рельсах, чтобы не устанавливать несовместимый гем на 1.8.

Кроме того можно для разных платформ (mswin/linux/… ) ставить разные наборы зависимостей. Так что сейчас можно сказать, что всё неплохо с разрешением этих конфликтов.
Надо сказать, что с тем, что у меня ruby 1.9 у меня проблем не было. А вот с установкой гемов по виндой — бывают, когда приходится код компилировать.
Вас же никто не заставляет следовать всем рекомендациям. Вы можете выбрать те из них, которые лучше всего подойдут в вашем случае.
Ну и помимо строки подсказки, хорошо бы следовать хотя бы соглашениям на опции.
В статье про зависимости без наркомана никуда.
Ну всё-таки, вольфрам альфе обычно задают вопросы с однозначным ответом. А гуглу нередко задают вопросы, ответ на которые не может быть иным, чем подборка из сотен текстов разной степени релевантности.
У вас DataDriven «вырождается» в то, что называется DCI. Он фактически строится вокруг идеи анемичной модели. Далее, как я понимаю, всякие методы вида «получи то-то» отправляются в роли (ведь правда же для роли Customer совершенно не важен метод getAvatar), а взаимодействия описываются отдельными классами в терминах ролей.
Сам пока не пробовал эту модель, но звучит очень разумно, не как антипаттерн, а вполне себе как парадигма программирования (довольно модная нынче). Одна проблема, что в чистом виде реализовать это можно не в любом языке, но это вопрос не к парадигме, а к языку.
Боюсь я такой опции не нашел. На всякий случай поясню, мне нужно, чтобы табы открывались те же, что были при закрытии браузера, но не грузились, пока я на них не перехожу
Надеюсь когда-нибудь переехать на яндекс-браузер, но главное что меня удерживает на FF, это то, что он не грузит все старые табы при включении. При 100+ табах это критично влияет и на скорость, и на память.
Кстати, ура-ура, oj теперь компилируется и под виндой тоже.
Перенесите плюсы не в начала строк, а в конец — и будет вам счастье. А ещё в большинстве языков в конце строки можно поставить символа переноса
А кто вам сказал, что точки с запятой лишние. Нет, не так… Кто вам сказал, что только точка с запятой лишняя. Слово return в вашем примере тоже явно лишнее. ;)
Ruby, например, и без этого слова вернет значение последнего вычисленного внутри функции выражения.
def a

{a: 'b'}
end
И да, и нет. При правильно подобранных названиях и хорошем знании языка такой код читается проще, даже если ты не знаешь конкретной функции. Мне из написанного не нравится только функция keep, её название не самое говорящее (более того, я не очень понимаю, почему skip не может сам справиться с задачей).
И retry, и skip говорят сами за себя. А уж map / filter питонист обязан знать.
Про поверхностность — это правда. Зато достаточно широкий охват методов.
Если не секрет, то за задача у вас?
Да, Кормена, конечно, читайте!
Рефакторинг — Мартин Фаулер
Программируем коллективный разум — Тоби Сегаран (основы машинного обучения с примерами на питоне и данными полученными с реальных интернет-сервисов)
Design Patterns in Ruby — если вам захочется изучить паттерны проектирования, отложите GoF в сторону, слишком скучно и тяжеловесно. Лучше возьмите эту книгу: выучите лучший-в-мире-язык-руби, поймете паттерны и как их легко и правильно применять (и как не применять их почем зря), заодно потренируете английский лишний раз (впрочем лишним это не бывает)

из непрограммистского, но полезно-интересного выделю:
«Структура магии» — Бендлер, Гриндерс
С программами в научных областях тоже часто так. Когда пишешь программу, часто не знаешь, подход вообще рабочий или его придется выкинуть сразу, как посмотришь на полученные никуда не годные результаты. И приходится придумывать как по-друому решить задачу, ответ которой неизвестен. Нереально просто быстро склепать десяток программ по всем правилам, если из них жить останется одна (вот потом её и можно будет порефакторить или даже переписать).
Выложил лог. gist.github.com/3769663
Он пишет о двух ошибках — отсутствие pthread.h (с этим я справился, скачав библиотеку и запихнув её в папку установки гема)
И что-то о gettimeofday — кажется конфликт версий библиотеки у руби и девкита. Как это вылечить я сходу не понимаю
Скажите, это только у меня в процессе установки под виндой все падает на установке json-парсера oj (не компилируется и все тут)? Есть ли возможность сделать парсер подменяемым, чтобы использовать что-нибудь более стандартное?

Информация

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