24 декабря Архивач восстановлен после серьёзной аварии. К сожалению, значительная часть сохранённых изображений и видео была потеряна. Подробности случившегося. Мы призываем всех неравнодушных помочь нам с восстановлением утраченного контента!
1. C чего мне начать, чтобы стать рубистом? Отличным началом будет Programming Ruby (The Pragmatic Programmers Guide), читать Eloquent Ruby и The Well Grounded Rubyist после прочтения первой толку особо не даст, одни и теже вещи, дальше читаем Ruby Way, затем познаем метапрограммирование с Metaprogramming Ruby. А дальше открываем Ruby cookbook 2015 года, Пишем свой код во время чтения.
2. Какой gem посмотреть, чтобы понять, как писать код? Лучше всего посмотреть небольшие gem'ы вроде cancancan, pundit, camping. А еще можешь полистать на гитхабе гемы с нарастающей популярностю. https://github.com/trending?l=ruby Там еще нет тысяч строк, и тебе будет легче понять.
3. Есть ли GUI для руби? Да. Есть обвязки к Qt, GTK, wxWidgets, Shoes, fxruby (одобренный).
4. Можно ли писать на руби мобильное ПО? Да. Для iOS есть RubyMotion терпимого качества, для Android - лагающий и падающий, но всеми силами развивающийся ruboto. Для WinPhone до сих пор ничего не завезли.
7. Хорошие практики по руби и рельсам? Читаем Rails AntiPatterns, смотрим Rails Best Practices, также неплохо посмотреть Rails Recipes. Почитайте еще Grimm A. - Objects on Rails Еще продвинутое чтиво - http://tutorials.jumpstartlab.com/
13. Где можно задать глупые и не очень вопросы? - здесь - stackoverflow.com - тематические slack-конфы - а вообще, гугли, с вероятностью в 90% ответ на твой вопрос уже висит на stackoverflow.
14. Как фокнуть\сделать фичу\исправить баг, сложно ли это? Нет, не сложно. На rubyflow появляется много новостей с реализацией новой библиотеки, вы можете сделать тесты, фичу для него, старые либы также обрастают багами, улучшайте их! пишите код.
15. В чём писать код? Atom, Brackets, Sublime Text, TextMate, Vim, GNU Emacs. Для особо упоротых энтерпрайз-макак есть rubymine, плагины к эклипс и нетбинс.
16. Можно ли писать на руби с под windows? Можно, но придется обрасти костылями в виде виртуальной машины, придется сходу разбираться с Vagrant и многим другим. Чем дальше ты продвигаешься, тем ближе становится ясно, что пора перекатываться на linux/mac
17. Руби язык одного фреймворка? Есть еще Sinatra, Hanami (ранее Lotus), Volt, Grape, отличные штуки для DevOps - Chef, Puppet и годные генераторы для бложиков - Jekyll, Middleman, всё это активно используется в продакшене
18. Можно ли делать игры на Ruby? Можно, но не нужно. Гем Gosu.
20. Как и где искать работу? Легко и просто - http://rubyjobs.ru/ Не так просто - https://upwork.com/ Еще вконтакте есть группы по руби/рельсам, там иногда постят вакансии. Еще в русской гугл группе постят вакансии. Новичку будет сложно, но возможно.
TODO лист для ньюфагов: И так, ты поставил руби, уже сгенерировал свой первый проект rails new pidaras Начни уже с платинового пути, блог >> клон твиттера >> своя имейджборда >> свой гем >> дальше сам придумаешь. Рекомендации: 1. Для блога, создать роли, Админ, Пользователь (можно использовать паттерн form object). Прикрутить лайки, комментарии. 2. По твиттеру, следуя гайду Хартла, пиши все то что он предлагает в качестве доп. заданий, например оповещение по нику (@eblan: привет) 3. По имиджборде: воссоздать по возможности полный функционал, в этом случае придется ознакомится с javascript/jquery/coffeescript, но тебе так или иначе придется. Еще хорошей фичей будет использование background job и крон тасков (sidekiq, whenever), чтобы заполнять свою борду тредами и постами с другой борды, можно использовать api двача, чтобы вытягивать треды и посты - https://github.com/ID25/api_2ch 4. Не стесняемся постить свои репозитории, наши эксперты с радостью отревьювят вас.
Прочитал? Теперь рефактори то, что уже написал. И не забывай покрывать тестами.
Хорошим финалом будет деплой, это пожалуй самое болезненное, и ничего общего с деплоем на heroku, где тыц тыц и готово. Придется поковыряться со смежными вещами и узнать много нового, уже устоявшийся гем для таких дел - Capistrano.
Не забывайте спрашивать у анонасов вопросы, код лучше показывать через gist или pastebin с подсветочкой. Ну, а мы открываем очередной Ruby Thread.
Взял гем double_entry для работы с внутрисайтовыми платежами, теперь появилась необходимость построить график цены отдельного товара. Думаю сделать отдельную таблицу со средней ценой за день, которую будет считать крон скрипт (гем whenever) на основе данных из таблицы созданной гемом (пикрелейтед). Я все правильно делаю ?
Сап, анон. Я тут рельсы последние пол года задрачивал, хочу уже собеседования проходить. Расскажи, задают ли ебучие логические задачки на собеседования из разряда ПОЧЕМУ ЛЮКИ КРУГЛЫЕ, или эта хуйня уже в прошлом? Стоит ли задрочить с десяток таких задач, или на теории Руби/Рельс сконцентрироваться? Вообще че джуниору из мухосрани посоветуете?
Блять, анон, я нихуя не понимаю этих ваших регулярок. Делаю коанс.
def test_period_is_a_shortcut_for_any_non_newline_character assert_equal "abc", "abc\n123"[/a.+/] end
Это типа правильно, но это же нихуя не правильно. Потому что онлайн проверщик регулярок говорит мне что должна соответствовать вся строка. Точка это b, + все остальное. Но руби упорно мне продолжает говорить что я хуй и правильно abc. Халп.
Привет всем, работаю на руби два года, не прочитал до конца нет одной книги. Коллеги постоянно добываются, что я апдейт не делаю, а делать промывание атрибутов модели и сейв. Добываются что я не так формы пишу и тд. Вроде не тупой. В команде все кидают понты. Подскажите книжек, чтобы прочитать и пить смузи как все эти хипстеры. Я по правде никогда веб прогером не был и попал сюда случайно.
>>966892 Алсо, твоя проблема в том, что тебе надо найти автоматом имейл и поставить айди? Либо модифицировать параметры , либо сделать имейл собственно ключом. Не думал об этом, лол?
>>967045 Только тебе все равно так или иначе придется фильтровать входные параметры, потому что если ты просто сделаешь апдейт из параметров формы, я боюсь у тебя образуется либо связи на юзера с несуществующим мылом или , еще хуже, новый юзер с новым имейл, в зависимости как напишешь. Остерегайся, кек
Почему все используют рубокоп, который превращает мой няшный руби в петон и с каждой новой версией (которые еще постоянно обновляют) энфорсит все новую и новую хуйню? Сколько можно уже? Кодофашизм какой-то. То есть каждый месяц прилетают какие то охуительные истории от чувака, который указывает нашей команде, как писать простейшие вещи типа %r() vs //, && vs and и приходится подчиняться все новым и новым маразматическим правилам. И все это хавают
>>967324 вы таки уверены, что нельзя считать быдлом тех, кому каждый день могут указать, что вот такие скобочки в их коде теперь неправославные, причем на прошлой неделе, предположим, неправославными были одни, а теперь другие? Между прочим всякий %w синтаксис при использовании strict параметров выглядит уебищно. К сожалению, опять же, команда это хавает и следует этим копам, переписывая старый код под новые копы.
>>967320 Потому что всех уже тошнит от руби-выебонов со 100500 способов написать одну и ту же хуйню и хочется порядка и единообразия. Это сначала весело, когда ты у мамы художник и артист, а потом заебывает. Чем крупнее проект и чем больше людей над ним работает - тем больше заебывает.
>>967384 Так пиздуй к ним на гитхаб и открывай обсуждения - мол, заебали скобочки менять и вообще ваши копы говно, если такой умный. Либо меняй конфигурацию копов локально для своей команды и клади хуй на то что там в апстриме происходит - если у вас уже большая и констистентная кодобаза, то скобочки менять мало мысла.
>>967388 с одной стороны да, хуй с ним, конечно. Бесит не суть рубокопа а то, что один мужик определяет как мне писать и как мне переписывать уже написанное.
>>967391 Я тут права голоса не имею, зато каждый апдейт рубокопа (обновление последней версии которого еще и в gitlab-ci прописано ) за всю кодовую базу садится сеньор и начинает заменять одни скобочки на другие. Сраться на гитхабе - есть ли смысл? я особо на гитхабе не зависаю, попал в руби кодинг почти случайно, просто бесит вот эта хуйня. Ну зафиксировали бы версию и все - нет, над душой стоит удаленный вахтер.
>>967826 БЛЯЯЯДЬ И ТУТ ХИПСТОРЫ ДОКОЛЕ БЛЯДЬ СМУЗИ БОРОДЫ МАКБУК Я ПРОСТОЙ ПАРЕНЬ ИЗ СЕЛА ДА Я ТОЖЕ ЗНАЮ РУБИ И ЧТО Я НЕДОСТОИН ПУФИКА АААА БЛЯДЬ СРАНЫЕ ХИПСТОРЫ
В общем нужно микро-сайт на джекилле где-то захостить, хотелось изящного решения. Дело в том, что раньше у битбакета была такая штука как aerobatic.io, это был полный аналог github pages только еще и с поддержкой плагинов и с приватными репами. Такая няшота. А сейчас они отделились и отобрали кастомные домены для бесплатных аккаунтов. Хочу что-нибудь дешевое придумать, чтобы и приватная репа была, и кастомный домен и деплой из CI-ки. Что там сейчас есть, гитлаб пейдж, хероку (но спит в бездействии), амазон (?), диджитал ошен?
>>964886 >double_entry Чет я не догоняю при чем тут гем бухгалтерской записи и график средней цены товара?
Кстати, расскажи про гем, зечем его понадобилось использовать, в чем профиты этой системы. Всегда было интересно про двойную запись, но никогда не встречал на практике.
>>969314 Это просто облачная иде с обрезком линукс-машины. В бесплатной версии после 24 часов простоя выключается. Проще запустить свою машину в виртуалочке или купить дешевый впс, если не хочешь перекатываться на мак/линукс.
>>969363 Не нужно ничего прописывать, нужно пропустить через себя философию вим. Алсо, программировать и ничего не настраивать - это оксюморон какой-то.
Рубаны, нужен совет. Есть один content_tag, в data аттрибут которого я передаю переменную, которая содержит n количесво записей из бд. Все это выглядит так:
<%= content_tag :div, "", id: "my_id", data: { houses: @houses } %> где @houses это что-то вроде House.last(15)
Затем я на одной из джаваскрипт библиотек из data-houses атрибута извлекаю в жс файле информацию, делаю с ней всякие манипуляции и тд. Но мне нужно, чтобы ActionCable следил за этим data-houses атрибутом и в случае обновления (появления новых иснтансов модели Ноuse), снова обновлял этот дата атрибут, запуская жс скрипт, в результате чего ререндерилась и вьюха. Как это сделать? С actioncable знаком, но кроме чатика и комментов на нем ничего такого не делал,
Котаны, я только начал руби подучать, попытался написать парсер, и вроде все работает, но почему-то блядь ключ [:description] выводит nil при том, что если просто обратиться к ["agi"] - все видно. И ключ, и значение. Код прилагаю: https://pastebin.com/7tdn1VTh
Поставил PaperСlip с сохранением локально. Всё работает, но адрес изображения типа 'localhost\......\1231.jpg' из за чего на другой пекарне картинок не видно. Как пофиксить? Чтобы был локальный ip-адрес типа 192.168.1.2?
>>971755 а напомните, зачем asset digest? перед тем как использовать документ из кэша, браузер разве не шлет запрос - content modified? if no -> fetch the document from the server.
Как сделать, чтобы гет на какую-то страницу показывал index, а гет с параметром на тот же адрес - create? Понимаю, что это немного не по договоренности в рельсомирке, но легаси говно такое легаси.
>>971760 немного разобрался. у документа в кэше есть параметр, max-age который контролирует длительность кэширования. max-age можно выслать веб сервером для js, и других статических документов.
если документ был получен ранее чем max-age назад, то браузер пошлет запрос серверу. у запроса есть заголовок: If-Modified-Science: time
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/If-Modified-Since >makes the request conditional: the server will send back the requested resource, with a 200 status, only if it has been last modified after the given date. If the request has not been modified since, the response will be a 304 without any body;
для не нагруженной херни можно и без digest обойтись, установив max-age в несколько мин.
minitest или rspec? когда используешь другие библиотеки, часто бывает что их легче тестировать rspec'ом?
в rspec: include_examples "blah"
в minitest: module Blah ... # your tests end
class Test __ include Blah end
в minitest понятнее, что происходит.
с другой стороны, у rspec есть it_behaves_like, который вместе с форматированием, дает некоторую инфу. у minitest есть паралельный запускатель тестов. может и у rspec есть.
Что почитать по руби на русском языке? Начал путь руби, но он не заходит, изложение ебанутое. Например, начали рассказывать про классы, привели пример класса, а рассказать чем отличаются переменные классы от переменных экземпляра забыли. Ну это пиздец вообще.
>>974713 Я что, в филиал /b попал что-ли? Причем тут ангуляр поехавший? Ты можешь, блядь, писать более развернуто чем одно - два слова? Ты блядь слышал что спрашивалось вообще? Меня не ебет на чем это сделано, в качестве бэкенда у подобного говна обязательно будет рельса пусть и ангуляр на фронтенде (про это будет отдельный ответ).
Вопрос остается тем же. Сколько по времени делать подобное говно для погромиста на рельсах и сколько это говно собственно может стоить если ты конечно не совсем хуй мамин а немного шаришь в вопросе.
>>974727 я не он но отвечу смари бэк там простой, очень простой сделать его на рубях можно, но смысел нанимать узкого относительно спеца для почти одностраничника ? Хочешь заплатить больше
далее по фронту я с угловым мало работал но принцип думаю один и тот же: для начала пикрил это плохо
во вторых я бы взял тысяч 50 за все под ключ дизайн, верстка, бэкенд и по времени месяца два ( просто чтоб можно было поебланить и не загоняться по поводу дедлайнов ) за 80 тысяч сделал бы такое за месяц но это я макаки с fl.ru сделают на стэке WP+JQ за две недели и 10к
проблема не в сложности а в том, что заказов обычно у сколько нибудь нормального спеца столько, что можно на подобные одностраничники выставлять прайс в разы превосходящий реальную стоимость/сроки
>>974735 Вообще я думал такое делается на базе какой-нибудь Spree если речь идет о рельсах. В качестве фронтенда Bootstrap который там уже есть к тому же. Заодно и платежные системы подключить не проблема будет. корзина и все остальное там уже реализовано, так что останется только настроить функционал. Плюс административная часть в которой будут проходить все заказы с состоянием доставки и всего подобного. Срок на все про все с учетом уточнений - месяц максимум, осталось определиться с ценой.
>>964778 (OP) Хочу встать на рельсы, в данный момент знаю C#, могу в верстку. ASP.NET MVC по паре причин забросил, но о MVC в целом имею представление. Такие вопросы: 1) С какой книги начинать читать, чтобы для меня не разжевывали с нуля переменные, коллекции и прочее. Могу разбираться на примерах. Желательно, чтобы сразу начать пилить сайт. 2) Есть ли у какой-нибудь IDE аналог IntelliSence для Ruby?
>>974270 Учи английский, иначе так и будешь >экземплярами оперировать вместо нормального языка. Ну и информация двухлетней давности в лучшем случае прилагается как должное. Технический английский на самом деле элементарный, поначалу туго, но дальше как по маслу. >>975132 http://stackoverflow.com/questions/55574/learning-ruby-on-rails
Арон, как сделать так, чтоб ruby шел на сайт, копировал <head>Вот это </head> и вставил в .txt док. Какие гемы поставить, если с ванилы не может? Заранее спасибо. С .txt, все понятно
>>975735 1.+ 2. Искал, но там относительно сложные примеры с большим кодом. И поиск идет по css. 3.+ Я бы и сам сюда за помощью не шел(анон, занятой человек, а не я высокомерная мразь), но понимание, так и не приходит...
>>975893 C:/Ruby/lib/ruby/2.3.0/delegate.rb:87:in `method_missing': undefined method `match' for #<Tempfile:0x0000000331ef18> (NoMethodError) from C:/Work/rb/testing.rb:5:in `<main>' Вот такая. Я знаю, что даун, раз на винде руби знаю, знаю...
А как обычно в рельсах назначают выполнение действий в определенное время, вот допустим у меня есть поле с датой в бд и я хочу именно в это время отправить смс/письмо/сделать что-то еще? Очевидно что можно написать простой крон скрипт который будет дергать анус бд каждые n минут, но это ведь нихуя не правильно, всякие delayed job вроде позволяют ставить конкретное время запуска задания, но как они будут дружить с тем что в бд могут быть тысячи записей ? Вообщем в гугле не нашел, пришел сюда. пик стронгли анрилейтед
>>975932 можно вместо 'open-uri' пользовать gem 'httparty'. почитай в документации nokogiri как парсить по css элементы, свобода действий достаточна. для вывода данных советую поработать над приведением к удобному виду, что-то типа my_data = el.search('header').text и пуш в массив, а затем с помощью гемов 'json' или 'csv' получай чьотенкий лист данных: puts JSON.pretty_generate(my_data) или CSV.open('my_data.csv, 'w') do |csv| csv << my_data end и вот тебе файл с выгребаемым
>>976472 >>977229 Ну и толку что он быстрый (быстрый в обработке задач?), причем здесь это? Я спрашиваю о том как это сделали бы люди которые что-то понимают, потому то что я назвал мне не кажется оптимальным решением.
>>977506 а требования какие по надежности, ничего страшного если сообщение не будет доставленно в случае редкого сбоя? ничего если сообщение будет отправленно дважды? тебе вот эти вещи нужно разобрать. сайдкик использует редис и тебе нужно будет проверить сохраняет он очередь или хранит в временно памяти и очередь теряется при сбое. если тебе нужно отослать разным получателям в разное время и получателей - много заданий. то нужно подумать про очереди с разным приоритетом. да и тебе нужно с какой точностью обработки, до секунды или плевать если сообщение отправится на несколько мин позже? я бы так рассуждал и уже из соображений выбрал сайдкик или еще что.
>>977886 От наркомана слышу. Хера ты умного корчишь? Использовать для скрапера HTTP клиент вместо OpenURI - как раз по делу. HTTParty uses Net::HTTP under the hood. В чем я не прав? HTTParty через GET запрос на страницу возвращает весь html в виде строки. Ну и накой нам тогда OpenURI, если HTTParty все делает сам. К тому же, цитирую: "While good for basic tasks, open-uri has some issues which mean you may want to look elsewhere for an http client to use in production". ОК?
И пойди расскажи, что они наркоманы всем этим ребятам:
>>978064 Хуярить скрейпера через нативный Net::HTTP это пиздецовая идея. В итоге придешь к тому что будешь хуярить тред-пул чтобы с горем пополам это работало хоть как-то оперативно.
>Использовать для скрапера HTTP клиент вместо OpenURI - как раз по делу. Так если оба базируются на Net::HTTP - то какой резон-то?
Что мы знаем о Rails?Аноним23/04/17 Вск 03:38:30#127№978208
В Rails первее всех собрали воедино множество инструментов для повышения удобства разработки. Но сейчас вы не найдете в нем "революционности". По сути, ничего нового в Rails не изобретено. ActiveRecord, MVC? Это паттерны прямиком из книжек 90-х годов. Шаблонизатор вроде .erb? Смешно. REST API? Тоже не ново. LESS, SCSS? Никого этим не удивишь. Миграции для БД, скаффолдинг тоже везде есть. Таким образом, в Rails есть всё то же самое, что и в других веб-фреймворках. Сейчас, когда все догнали и перегнали Rails, рубистам только и остается говорить, что всё спиздили у них. Что мы имеем в сухом остатке? Зрелое коммьюнити и очень зрелый фреймворк, т.к. все хипстеры, которые гоняются за технологиями, перепрыгнули куда-то в JavaScript-джунгли. Только вот эти хипстеры и вывели руби в люди, а не какие-то нудные корпоративные инженеры, как джаву и дотнет. Ах, да. Многопоточность и модель акторов сюда не завезли.
>>978064 > использовать для скрапера HTTP клиент вместо OpenURI - как раз по делу.
Ты заостряешь внимание на малозначимых вещах.
Низкоуровевые сетевые библиотеки не нужны хотя бы потому, что не дадут ощутимого прироста в скорости, пока не научишься в многопоточность, оптимизированный парсинг тяжелых страничек и т.д. Начни писать код, решай реальные проблемы.
--- Бонусы в виде того, что кто-то гарантирует работу скраппера над кучей протоколов - это приятно, нужен uri - ты его берешь, забывая про то, что в интернете, оказывается много разных схем http, https, ftp, irc (lol) и т.д.
Исходя из этих соображений, я бы не стал писать паучка с Net::HTTP, в худшем случае - запилил какой-нибудь интерфейс, чтобы такие извращенцы как ты могли запилить свою реализацию данной части скпаппера. Но пока не попросят, заниматься овер инженерингом - нет.
>>978219 Вот сейчас ты себя прям очень высоко поставил фразами, типа "Начни писать код, решай реальные проблемы." и " Но пока не попросят, заниматься овер инженерингом - нет.". Высоты не боишься? Не мог бы тогда уважаемый сеньор привести пример своего скрапера для описанных выше задач, ну или хотя бы намекнуть как он его напишет.
Проблема 10000 соединенийАноним23/04/17 Вск 12:20:03#133№978276
>>978283 Я редко очень подстригаюсь, смузи ни разу не пил, на улицу редко выхожу. Сам я точно буду осваивать этот язык больше года, а с курсами было бы не плохо их укоротить на полгода хотябы.
>>978269 >Не мог бы тогда уважаемый сеньор привести пример своего скрапера для описанных выше задач, ну или хотя бы намекнуть как он его напишет.
Если смотреть на задачу глобально - то я бы не стал писать скрейпер html страниц в принципе. Если же локально - то я выше написал что использовать в качестве http агента - faraday с excon.
посмотрел гемы для jsonapi. ну вот такие вещи 1. многие патчат ActionController мне было бы понятнее render json: UserSerializaer.new(user) или render_serializer user они же патчат render() если же у меня есть TrivialSerializer и UserSerializer, то какой из них будет использоваться? --- render user, serializerClass: ... гулопсть.
2. добавляется метод класса к ActionController. чем your_class_method понятнее include YourMixin? тоже самое, но не нужно патчить.
а есть список проверенных гемов которые не делают таких глупостей? не jsonapi, а любых.
>>973847 >minitest пик что у меня получилось с minitest. немного времени потратил.. форматированный вывод неочень, надеюсь можно будет написать formatter. никаких rails-minitest, только то, что вместе с руби. кроме minitest-reporters для вывода. я включаю Minitest::Spec::DSL в Rails TestCase, не ок.
>>978915 >А как нагрузку балансируют в вашем стеке? Так же как и в любом другом. Балансировка нагрузки не имеет отношения к используемым технологиям. Дрочево на requests per instance пустое.
Навязывание TDD в Ruby/RoR wayАноним25/04/17 Втр 02:33:37#152№979518
TDD было придумано для того, чтобы взвалить на разработчика работу тестировщика, но при этом не платить за это. TDD противоречит принципу разделения задач.
Q: Рубаны, как вы админку кодируете? Какой гем ставить? Искаробки ведь не поддерживается? Почему так, кстати? A: Искаробки не поддерживает. Юзай Administrate или ActiveAdmin.
>>979550 >И это тоже в шапку. Или запилите годный установочный гайд сами.
Например:
Ставим Ruby и RoR: 1. Ставишь RVM 2. Ставишь Ruby 3. gem install bundler 4. gem install rails 5. rails new foobar && cd foobar 6. bundle install Всё.
Ставим Postgres: 1. sudo apt-get install postgresql postgresql-server-dev-all (без второго пакета не скомпилируется гем pg) 2. sudo -u postgres psql В pg-консоли: 3. CREATE ROLE foobar WITH LOGIN CREATEDB PASSWORD 'foobar'; Далее меняешь в config/database.yml имя пользователя и пароль на "foobar". Готово.
>>979518 В рельсах нет тру-тдд и быть не может, потому что юнит-тесты не предусмотрены из коробки. Нужно бороться с фреймворком, вводить service/query/presenter/validator объекты, чтобы было нормальное разделение обязанностей, а не огромная куча спагетти >взвалить на разработчика работу тестировщика Если разработчик пишет нерабочий код, который нужно отдельно тестировать, то нахуй такой разработчик нужен? Что он разрабатывает?
>>979566 >Если разработчик пишет нерабочий код, который нужно отдельно тестировать, то нахуй такой разработчик нужен? Что он разрабатывает? Может он вручную тестирует или небольшими говнокодиками. Вместо всяких кукумберов и прочих анально-навязываемых вещей, которые не оплачиваются.
>>979566 >то нахуй такой разработчик нужен? Чтобы писать нескончаемый говнокод. косарь баксов разрабу на лапу, а 4 косаря себе в карман. Галеры так и плывут.
>>979566 > Нужно бороться с фреймворком Чот рельсы такие жирные стали. Последний раз заглядывал в версию 2 и 3 и было няшно, а сейчас посмотрел и охуел.
>>979568 А зачем он тестирует вручную, если можно написать автоматизированный тест, который будет работать всегда, и сейчас, и через десять минут, и через неделю, когда потребуется что-то переделать? И как он может быть уверен, что протестированный минуту назад функционал не сломался после добавления строчки кода? Прогонять все тесты вручную каждый раз? Это то же самое тестирование, только контр-продуктивное и ненадежное. > которые не оплачиваются Твое рабочее время не оплачивается или что? Тебе платят не за "напиши там чет в блоноте", а за "напиши там чет в блокноте и чтобы работало". >>979573 По сути нихуя не поменялось.
>>979606 >лучшим и наиболее быстрым Хуита, уже год прототипирую свои велосипеды на elixir + phoenix или на haskell, по скорости от рельс отличий не заметил. И перекат с рельс тоже вполне себе реальность, знаю уже несколько рубистов укатившихся кто-куда, в основном на жс, яву и го, даже на эликсир у одного получилось укатиться (работы пока маловато). Да и я сам, например, уже тот же год на руби только на работе пишу и следующая работа будет 100% не на руби. мимочетырегоданаруби-кун
>>979626 Захуячить MVP на руби проще чем на других стеках.
>>980026 >по скорости от рельс отличий не заметил Скорее всего это значит что просто медленно вел разработку на RoR. Просто из базиса языка и подходов, писать на фениксе сложнее.
А слушать про "перекаты" - мне каждый раз доставляет не иллюзорное удовольствие. Пока одни используют подходящие под задачу технологии, другие расценивают переход на другую технологию как явление схожее со сменой миллениума.
сап, программач. надеюсь на то, что кто-то потратит пару минут и поможет, вместо отсылок в гугл (там бывал). вопрос по ActiveRecord. есть таблица бд User, есть таблица File. в юзере есть поля preview и detail, которые ссылаются на таблицу файлов через id (то есть к каждой записи юзера надо присоединить две разные записи из таблицы файлов). еще эту штуку надо сериализовать в json (выбрать только некоторые поля для сериализации). не прошу писать полностью код, просто подскажите описание моделей и пример запроса для консоли, когда могу просмотреть юзера, у него получить preview файл и detail файл.
Чем нужно заниматься: Работать в команде Анализировать требования Проектировать решения у доски и в коде Писать автоматизированные тесты Оформлять разработческую документацию Что нам хотелось бы видеть в тебе: Уровень — middle/senior developer; Опыт разработки на Ruby, Rails от 3-х лет; Умение писать модульные и интеграционные тесты на Rspec, Cucumber; Знание глубинных механизмов хранения и оптимизации PostgresSQL; Опыт работы с Docker; Опыт работы с очередями сообщений Sidekiq, RabbitMQ; Умение проектировать, писать чистый код; Должен быть с Linux на “ты” Уметь автоматизировать рутинные задачи; Желательно иметь опыт развертывания приложений с помощью Puppet, Chef, Ansible, bash; Знание JS фреймворков и техник будет огромным плюсом (особенно React.js); Наличие опенсорс портфолио (будет плюсом).
Описание отдаёт ЧСВ человеком, который её писал. Ну и плюс коммерческой разработки на рубях у меня нету, ибо в наших краях только пхп-гопота обитает. Каков шанс соснуть на собеседовании? И стоит ли лезть в подобное говно?
>>980342 >Описание отдаёт ЧСВ человеком, который её писал Проблема в твоем восприятии
>Ну и плюс коммерческой разработки на рубях у меня нету Если умеешь все описанное - похуй. Умеешь = сделал как минимум один проект "для себя" с использованием технологии.
>Каков шанс соснуть на собеседовании? Велик
>И стоит ли лезть в подобное говно? Определенно да (опыт)
>>980409 Ну я на мида не потяну, наверное. Там слишком много смуззи вроде докера/чиф/кукумба. Я, конечно, знаю, что они из себя представляют. Но работать с ними мне не было нужды.
>>980245 >Просто из базиса языка и подходов, писать на фениксе сложнее. Это что за такая разница? Тотальная иммутабельность только добавляет удобства, а о всяких эрланговых процессах и прочих сложностях в фениксе, при желание, можно вообще не думать. Единственное, что мне проходит в голову это возможность в рельсах по-быстрому нахуярить лапшу из before/after_save и их друзей + логики в контроллеры напихать (хотя это и в фениксе можно), но так делать даже в MVP зашквар делать.
>Пока одни используют подходящие под задачу технологии Множество задач решаемых руби/рельсами является подмножеством множества задач решаемых эликсиром/фениксом.
>>980306 Нормально. По моим постам, наверное, можно подумать, что я очень не люблю руби, но это на так, я просто разочарован его темпами и направлением развития. Матц обещает руби 3 в хрен знает каком году, гильды выглядят прямо скажем не очень, опциональную типизацию вообще не факт, что запилят, да и прибавки скорости всего в 3 раза, учитывая насколько руби тормозной сейчас, будет маловато. В рельсах с каждом релизом добавляют пару небольших хороших фич и кучу хуйни уровня suppress. Вот из-за всего этого и возникает чувство "пошло оно все, я съебывая".
>>980746 Может года полтора назад я бы с тобой и согласился, но сейчас давай-ка приведи несколько примеров чего такого уникального есть в рубийной экосистеме?
Cравнивая с чем? Ну давай тыкну пальцем в небо, и предположу, что половину платежек и/или библиотек для рассылки смс (локализованных под рыночек) ты не найдешь и будешь пилить сам.
>>980736 >Это что за такая разница >Тотальная иммутабельность только добавляет удобства И отсутствие стейта, которое для полноформатных приложений не шибко то и плюс.
>>980766 Ну кстати если говорить конкретно про эликсир, то например с MQ все не то чтобы очень хорошо. Часть библиотек в начальном этапе, часть уже в полузабвении.
Как же меня доебала экосистема рельсов вокруг реакта. Проебался весь день, то компоненты не импортятся, то редакс наебнется. В конце концов ебанул бин рельсов. Обоссыте мне ебало что-ли. Суть такова, хочу чтобы у меня был рельсовый апп, в котором в одну вьюшку маунтится весь мой реактовый апп, и больше ничего из ассет пайплайна не бралось, чтобы реактоговно все жило отдельно, собиралось вебпаком, юзало нод модули и слало реквесты например через аксиос на рельсовый сервер с которого и засервилось. То есть чтобы это говно было в одном аппе но как я хочу. И чтобы я мог развернуть на хероке или например деплоить с капистрано. Это вообще запиливаемо или нужно ебаться с двумя аппами? Сорри за корявый язык, но я уже умер в нутри с этих приколов
Котаны, а как в ваших рубях вывести больше одного пробельного символа подряд? Пробовал и puts " " , и puts "\s\s" - нихуя. Что блядь за недружелюбность?
Анон, это вновь этот аутист>>975516 У меня вновь проблема, не OpenURL, по какой-то причине, не хочет открывать сайт. Вот код. Простите, что пришел снова со своими вопросами... require 'open-uri' [CODE] nump = rand 1..88500 url = 'https://anidb.net/perl-bin/animedb.pl?show=character&charid=' + nump.to_s open(url) {|f| f.each_line {|line| p line} } [/CODE]
Сап, для лабы надо рельсы, скачал Railsinstaller, установил, PATH прописал да, шин10, но если написать в консоли rails, пишет что "Системе не удается найти указанный путь." И правда, в /bin я не нашел такого файла. Что я делаю не так?
>>969667 Все 56 минут можно заключить в одну фразу - "пользуйтесь правилами бухучета". Больше полезной для слушателя информации нет. Ну зато он молодец какой, серьезный парень, с докладом выступил, не хуе мое.
>>983634 Кстати, двачеаноны, может кто-нибудь рассказать в чем суть системы двойной записи. Залип сегодня на видосах, смотрел туториальчики, но так и не понял в чем смысл. Ведут счета, каждую проводку отражают на каждом счете, если просуммировать дебет-кредит, то они сойдутся, легко проверять корректность (читаемость при этом сомнительная какая-то). Но суть всей этой возни не понятна, тем более в современных условиях.
>>982091 В СНГ рельсы есть в Москве и Киеве. Ну и ещё немножко в Питере. Всё. Больше можешь даже не пытаться. Вкатился на рельсы, теперь вот думаю, куда укатываться. От js дрисни течёт кровь из глаз, пхп оплачивается как труд копирайтера. Хз, что делать.
>>984442 Дебич. params это strong parameters. Которые в свою очередь наследуются от HashWithIndifferentAccess, у которого есть все свойства рельсового хэша.
Сам, анон. Пишу гем-враппер, столкнулся с проблемой. Перед запросом нужно инициировать сессию, которая активна 15 минут, после чего она уничтожается и сервер ее не принимает. Как сохранить сессию для следующих запросов? В файлике хранить как-то некрасиво. ответ приходит такой {"ret_msg"=>"Approved", "session_id"=>"A1C7DFC2EBC642429CD08831B80605EC", "timestamp"=>"5/4/2017 10:09:40 AM"}, где "session_id" ключ для других запросов
Чем отличается обсервер от коллбеков? Сначала я вообще не мог понять разницу - например, в модели я определил коллбек after_create с отправкой письма нет, я так не делаю или написал обсервер, который отправляет письмо и вызвал после создания. Ни какой разницы, кроме того, что код в другом месте. Потом я нашел 2 тезиса: 1. Коллбек является частью объекта и потому сильно с ним связан. Если реализовывать в нем логику не относящуюся к объекту, то нарушается принцип SRP. 2. Observer pattern предусматривает механизм регистрации обсерверов - то есть мы не только их уносим из объекта, но и можем менять их состав. То есть это масштабируемость.
Посоны, а какая еще есть принципиальная разница? Кто понимает архитектуру, объясните суть этих вещей.
>>983863 Не знаю, о чем вы там говорили, но если вопрос о бухгалтерии, то суть в том, что каждая транзакция дублируется и идет отдельным путем. Если в итоге сумма всех транзакций выходит в ноль, то все правильно и можно подтверждать. Если нет, то ищешь ошибку. Это как перепроверка или тестирование, гарантия того, что нигде не обосрался и не ввел неправильное число. Потому что если обосрался и ввел лишний нолик, то это стоит компании дохуища бабла, а ты уезжаешь на бутылку. >>984673 Ну как обычно сессии хранят? Либо на стороне клиента, либо на стороне сервера. Если на стороне клиента - шифруешь всю нужную информацию(в том числе дату) ключом, отдаешь клиенту зашифрованную строку, а он тебе ее отдает обратно при запросах. Расшифровываешь ключом, сверяешь дату и обрабатываешь запрос. На стороне сервера - вся информация в файлике(БД). >>984828 В рельсах - шо то хуйня, шо это хуйня. Советую прочитать про Service Objects, а не лепить спагетти из обсерверов с колбэками.
>>984842 > суть в том, что каждая транзакция дублируется и идет отдельным путем. >Если в итоге сумма всех транзакций выходит в ноль, то все правильно и можно подтверждать Анон, если ты разбираешься, то объясни более понятно. Что понял я: - Сначала была простая запись, это был просто лог всех операций. - Потом Лука описал двойную запись, где появились счета и понятия дебета/кредита. - Как объясняют это в литература, мол это позволяет избегать ошибки очевидно, что это чисто ручной фактор и, что типа гораздо важнее, гибко строить аналитику. - Система дошла до наших дней и используется во всем мире, являясь единственным стандартом.
Вот я не понимаю, в условиях IT, что дает двойная запись? Такое ощущение, что с современной точки зрения главная идея двойной записи - понятие счета. Что дают понятия дебета и кредита и дублирование их при каждой операции на каждом счете, не понимаю.
>>984925 > Вот я не понимаю, в условиях IT, что дает двойная запись? Такое ощущение, что с современной точки зрения главная идея двойной записи - понятие счета. Что дают понятия дебета и кредита и дублирование их при каждой операции на каждом счете, не понимаю. Проследуй лучше в 1С тред, там тебе лучше пояснят зачем это нужно и как с этим мириться. мимо
Итак рубаны вкачусь чтоб задать своих глупых вопросов. И вам меня не остановить! 1.Ставил ли кто себе это https://msdn.microsoft.com/en-us/commandline/wsl/about если да, то как ощущения? 2. Почему на руби не пытаются поднять нейросеть? Или если есть такое, линконите, а?
>>984925 >что дает двойная запись Перепроверка при наборе цифр руками. Если все транзакции в кампуктере и руками туда ничего не вводится, то я тоже не вижу практического смысла. Но в бухгалтерском учете это имеет статус закона, либо хуяришь double-entry, либо ты не бухгалтер и идешь нахуй. Это как если бы врач сказал "ну нахуя мне давать клятву гиппократа, >2017 год на дворе".
Котанва, что вы используете для т.н. сериализации объектов? Я вот недавно вкатываюсь и возникла у меня проблема с YAML/Psych: есть двумерный массив, строка и объект Process::status и вот он как бы не очень в yaml итоговый пролезает (при лоаде в nil), можно ли вложенный в массив объект тоже пропихнуть в yaml?
>>985005 >Почему на руби не пытаются поднять нейросеть? Вопрос уровня "Почему отвёрткой не пытаются забивать гвозди?". Для всего есть свои инструменты, и задачи руби - клепать круды, не более.
>>985105 Объект нельзя сериализовать. Можно только маршализировать, через Marshal.dump.
Сериализатор ничего не знает о типах объектов, соотв-но раскладывает в свои примитивы(которые обычно стандартизированы - число, строка, бул, массив, ассоциативный массив).
>>985005 Я понимаю, что переходить по ссылкам с двача фу, и все такое, но что по первому вопросу? Ставил ли кто себе Оффициальный баш под виндовс и как оно вам?
>>986059 >всякие сетевые хуйлоады c трафиком 300к/с Ты походу путаешь с Go или Scala. Эликсир если разобраться он для задач где важна стабильность и consistency.
Но я с тобой в корне не согласен. Функциональщина есть и в нативных рубях, причем если подумать - то ее довольно много. С другой точки зрения, вся разница функционального подхода и объектно-ориентированного в том, что во втором случае у тебя есть(при неправильной методике разработки) есть куча stateful говна, которое существует только потому что разработчик не придумал способа лучше.
Если ты возьмешь стандартизированный образец модели Request-Response и разложишь ее на составляющие - ты увидишь абсолютно ту же матрешку последовательных вызовов себя-куда-то, которую ты встретишь в функциональной парадигме. За тем лишь исключением, что в OOP у тебя будет гора обвязочного хлама существующего параллельно стеку вызовов функций.
>>986796 Ну например, что делает module_function и как можно сделать тоже самое без нее? Но описание я могу посмотреть и в документации - делает доступным метод для вызова на модуле, а так же доступными как приватные методы при миксовании. При этом методы являются копиями и могут изменяться независимо.
Но такое формальное объяснение не объясняет сути, его просто нужно запомнить. Как можно запомнить что делает include/extend, а можно знать, что руби создает анонимные классы для объекта/класса объекта. Формальный ответ про include/extend простой, а реально тема большая и сложная.
>>986841 > анонимные классы ancestor, а не просто анонимный класс. Тема ни разу не сложная. И вот что я тебе скажу. В практике - module_function не применяется. Если требуется Mixin - используется include/prepend/append. Если требуется синглтон - используется классический def self. Если требуется динамическое объявление - используется define_method/define_singleton_method.
Вечер в хату рубаны. Собственно такой вопрос, нужно написать определение локали по ip-адресу, для стран СНГ - ru локаль, для остальных en локаль. Сталкивался ли кто - нибудь с таким, или направьте мой поиск в нужное русло, ибо в инете суют дефолт локаль, которая никоим образом тут не поможет.
Ананасы, только начал изучать Ruby: почему в данном коде https://ideone.com/mYRRmY при условии если переменная consonant не пустая, она не плюсуется к перменной sentence в 21 строке?
Суть задачи такова: # Rule 1: If a word begins with a vowel sound, add an "ay" sound to the end of the word. # Rule 2: If a word begins with a consonant sound, move it to the end of the word, and then add an "ay" sound to the end of the word.
>>964778 (OP) Сап, аноны. Что бы работать с БД мне нужно сделать active records для необходимых таблиц и связи так же как и в БД? Как можно обойтись без этих records и просто делать запросы sql ? (postgresql)
А почему не распространена практика использования чего-то типа JRuby. С чем в нем проблема?
Звучит вроди здорово, потоки без GIL. Рельсы при этом потокобезопасны. Можно брать и использовать для нового проекта. Но что-то не встречал, чтобы его использовали на практике. Почему?
>>989008 Потому что такая хуйня никогда не имеет успеха. Все эти трансляторы в JS с каких-либо других языков, приблуды, чтобы посадить на JVM (BEAM или любую другую), трансляторы в С (как Nim) - от лукавого. Например, для меня это какая-то мутная приблуда, которая обязательно прибавит дополнительный Лэйер, соответственно, плюс новых багов, нового пердолинга и т.д. плюс хз, хорошо ли ее мейнтейнят и не бросят ли. Короче, дополнительный источник головной боли.
>>989013 Причем тут транслятор, если JRuby нативен? >для меня это какая-то мутная приблуда Ну то что у тебя мозгов не хватило допереть это в целом объяснимо. Назвать elixir (а именно его ты имел ввиду упоминая BEAM) приблудой и транслятором это ебанись просто.
>>989008 Потому что зоопарк гемов оптимизированных для работы с JRuby ограничен и приходится искать подходящий вариант либо костыли наворачивать.
Второй проблемой является иная парадигма разработки требуемая от разработчика. Понимание особенностей и преимуществ JVM и грамотное их использование.
>>989008 еще есть rubinius. но я не смог его установить, падает с segmentation fault. и нет желания компаться в этом. до этого тоже думал, вот же есть rubinius, если нужно будет, то...
Аноны, подскажите, анализирую бинарные данные, затем записываю все в БД. 1. Можно ли использовать Rails для визуализации этих данных, целесообразно ли это? 2. Как правильно записывать данные, прямо из модуля парсинга на си++ коннектится в БД или через web интерфейс, который Rails предоставляет?
Анон, делаю Model.eager_load(:association).limit(10) - получаю 2 запроса, которые в итоге дают мне 10 объектов класса Model. Обычно это то, что нужно, но вот у меня есть кейс, где мне нужны именно 10 строк сджойненой таблицы, как мне это сделать?
у меня id, это не глобальный идентификатор. а локлен для пользователя: /users/1/blog/1 /users/2/blog/1 --- разные объекты.
и по спецификации, название атрибута - id.
пришлось id переименовать в local_id, но так-как по спецификации, имя полю должно быть id, то получается хрен знает что. т.е. json запрос {id: 123, attributes: ...} user.models.find_by(local_id: attrs[:id])
primary_id - primary_key нужен только для model.destroy() так-как с локальным ключем удалит user1.blog_id_1.destroy() - удалит и user2.blog_id_1
Объясните мне, что такое ActiveModelSerializers и трейлблейзеровский Roar? Какой это паттерн? Я ничего не нагуглил про "репрезентеры". Чем они отличаются, что вообще делают. (Я неоднократно работал с AMS и понимаю что делают оба гема, но не могу осмыслить их суть в архитектурном плане и к какому паттерну они относятся)
прогач, подскажи Есть две модели Bitches - шлюхи, сосущие хуи и Сlients - клиенты у которых шлюхи хуйцы уже соснули. Вывожу шлюх в bitch_controoler в виде списка, нужно что бы по нажатию на строчку, появлялся список клиентов шлюхи. У меня отношения стоят что у одной шлюхи может быть много клиентов(так криво сделал, но пока норм) Идея только одна, вызывать client_controller, метод show, передавая в него id шлюхи и по id шлюхи делать выборку из Clients
>>996493 Во-первых, а почему гем в 2017? Вроде же в рельсу вебпак добавили. Весь фронт перекатился на js инфраструктуру, зачем эти приблуды? >Сасс категорически не нравится Блять... слов не хватает.
>>996566 resources :bitches do resources clients, on: :member, only: :index end
# GET /bitches/:bitch_id/clients
class ClientsController def index @clients = Client.where(bitch_id: params[:bitch_id]) end end
>>996925 Сам не знаю что это, какой-то новый сборщик в js мире, типа стандарт. И вроде как его добавили в новую рельсу. Чему я рад если это так, потому что весь этот ассетс пайплайн такой бред, что пиздец просто - чтобы прикрутить какую-нибудь фронтовую библиотеку, ее нужно специально адаптировать под рельсы.
По счет стилуса ничего не посоветую, третий раз в жизни о нем слышу и нахуй он нужен. Ты же не фронтовик, чтобы выбирать себе инструмент для достижения дзена, у тебя другие задачи, а в смежных областях лучше придерживаться мейнстрима.
>>996990 > чтобы прикрутить какую-нибудь фронтовую библиотеку, ее нужно специально адаптировать под рельсы. Ты наркоман полный? Адаптировать это положить в assets/js и сделать include в манифесте?
Webpack в рамках рельсовых приложений тот еще бред. Сама парадигма разделения frontend/backend приложений (для целей коих и служит вебпак и прочие) подразумевает что не имеет смысла включать фронт в рельсы, это должно быть отдельное клиентское JS приложение.
>>997006 >Хуй знает что тебе ответить. Очевидно что ты и этого никогда не делал. Делал и сразу забил на это дело и разнес приложение на две раздельно живущие составляющие.
>Значение знаешь? Козырнуть снобизмом не выйдет, мне похуй так-то.
>>996994 у js есть тоже свой пакетный управляющий, как bundler у руби. с ним не нужно копипастить обновления js библиотек. ах да, у js библиотек тоже есть зависимости.
>>997108 примеры есть, инфа 100%. я не помню, кажется я добавлял два маршрута для разных моделей. но там есть какой-то метдо, типа redirect_on_sign_in или сгенирируй devise контроллеры и будет видно.
>>998549 Исключили? Тогда скоро у тебя будет веселая, интересная, насыщенная жизнь. Научишься драить очки, познакомишься с горячими джигитами Дагой и Магой, которые помогут тебе расстаться с девственностью. Зачем какой-то гитхаб?
>>997390 Должно хватить фотки студбилета действительного. Найди кого-нибудь в ближайшем университете и попроси студенческий на минуту.
>>998553 После универа по-прежнему нужно в армию идти, военная кафедра в общем случае либо проплачена, либо отсутствует. У меня треть группы таких же затравленных заучек, считающих, что раз они круглыми сутками изучают бесполезные предметы, то и все остальные должны. Иначе "армия, собирать лужи в ведро, подтираться колючей проволокой" и прочие ехидные насмешки над теми, кого отчислили.
Аноны, подскажите, есть данные модели, которые вывожу на экран в виде строк, при клике на строчку, нужно записывать в бд значение 1, которое говорит, что сообщение было просмотренно, что-то даже не пойму, как там че, вызывать?
Как в rails принято обновлять отображение модели, при добавлении в модель новых данных, т.е. в бд что-то попадает, как сказать view что надо перерисоваться.
>>1000202 тебе для всех юзеров обновить в реалтайме надо или одному? если одному то аякс, если всем то всякие костыли типа ActionController::Live или вебсокеты
>>964778 (OP) На чем поднять вебсокет сервер для существуещего рельсоприложения? Помню когда-то пользовался websocket-rails, впечатления не самые лучшие. На пятые рельсы переползать пока нет возможности, так что их встроенную приблуду не предлгайте.
>>1000352 Я бы взял faye-websocket он вроде позволяет прямо внутри рельсового процесса держать вебсокет-сервер. Сам я использовал только em-websocket и все было отлично, но он не обновлялся с 2014 и faye-websocket выглядит по-свежее.
>>964778 (OP) >https://netguru.co/blog/service-objects-in-rails-will-help - о сервисах Меня эта статья пиздец напрягает. Во-первых, у него дохуя ненужного кода и рассуждений, а про сервисы не сказано почти ничего, даже определиться не может, как их вызывать. Сам я не так давно начал их к себе в приложение вводить, но уже сделал вывод, что нет смысла в initialize пихать что-то, кроме зависимостей через опциональное DI. Потому что в итоге получается одноразовый объект, для каждого нового сета данных его нужно создавать заново, вместо того, чтобы отдать этот сет данных в call() и не париться с инициализацией. http://multithreaded.stitchfix.com/blog/2015/06/02/anatomy-of-service-objects-in-rails/ Тут написано гораздо лучше и нет лишней воды.
>>1000258 у юзера есть страница с сообщениями от приборов, приборы кладут в базу, я рельсой выбираю данные и формируют список сообщений, в общем пришло новое сообщение в БД, значит мне надо "наверное" постоянно мониторить БД на наличие новых сообщений или просто ее перерисовывать
Анон! Мечтаю начать прогнать, прогнать для андроида, не заработка ради, лишь для себя. Скажите, подойдёт ли руби для такого? Или же стоит смотреть в сторону ява/котлин?
>>979576 А зачем писать код, который ломается от добавления строки кода, м? single responsibility как бы. Имплементировал модуль, тестанул в сосноли или вручную, забыл.
>>1001351 Нормальный SOLID от TDD неотделим, без TDD все твои SRP отправляются прямиком нахуй. Если опыта нет, то нормальный код ты не напишешь. А если есть, то знаешь, что нормального поддерживаемого кода не бывает без тестов.
>>1001359 Машка выполняет работу компьютера раз за разом и от количества машек и тестов, которые они должны прогонять, цена их труда растет по экспоненте. И нет, труд человека никогда не будет дешевле компьютера, который тот же самый тест кейс прогоняет быстро, бесплатно и без ошибок.
QA - это профессия, которая существует только из-за ленивых непрофессиональных пидорасов-макак, типа тебя, которые даже блять! Не проверяют! Работу! Собственного! Кода! Вдумайся, пидорас, ты пишешь код и ты не знаешь, работает он или нет, не сломал ли он чего в системе. Какой ты нахуй программист, если то, что ты пишешь, не работает?
>>1002440 >Не проверяют! Работу! Собственного! Кода! Диван, лол. Сам прграммист из-за замыленого взгляда и самолюбия творца не может беспрестрасно сломать и хакнуть свой код. Для деструктивной работы нужен специальный человек у которого задача ломать и проверять. >Вдумайся, пидорас, ты пишешь код и ты не знаешь, работает он или нет, не сломал ли он чего в системе. Диван х 2. Программист не думает в мастштабе всей системы и не может сразу телепатически сказать где чего отвалиось и какие подводные камни всплыли. Это отдельная задача следить за связаностью всей системы после написания кода в разных местах разными людьми.
>>1002476 Я хуй знает, проигрывать с дебила или принимать как должное и объяснять неопытному рельсоребенку на пальцах.
>самолюбия творца Это самая блядская идея, которая особенно сильно проявляется в динамопараше, что якобы программист должен себя позиционировать не как software engineer, а как ТВАРЕЦ ГУМАНИТАРИЙ. >сломать и хакнуть свой код >писать тесты Дядя, ты дебил? >нужен специальный человек у которого задача ломать и проверять. И этот человек, внезапно, не QA. QA ничего не ломает, у них задача подтвердить работу системы. Люди, которые берут систему предварительно как следует протестированную и готовую, вертят ее в попытках сломать и найти баги, с которыми может столкнуться пользователь, называются по-другому, и такое ручное "тестирование" вполне оправдано. >не может сразу телепатически сказать где чего отвалиось и какие подводные камни всплыли Для этого, хуесос, у тебя должны быть тесты. Которые ты прогоняешь одной консольной командой или хоткеем и сразу видишь, "где чего отвалилось". >Это отдельная задача следить за связаностью всей системы после написания кода Твоя ебаная задача - следить за работой своего быдлокода и за работой системы, которую ты написал/пишешь. Это не может быть чьей-то еще обязанностью, никто эту обязанность нормально выполнить не сможет, кроме программиста.
Наивный даун думает что писать тесты на фронт, под все 100500 версии браузеров дешевле чем нанять Машку. Иди нахуй писать тесты на свои абстрактные фасолины, подменщик понятий, ты мамкин.
>>1002541 Какие тесты на фронт, ебанутый? Я говорю про серверную логику, а не про "эта формочка отображается вот так, а в том браузере по-другому". UI в плане отображения вообще нет смысла тестировать, но это и должна быть одна из самых простых частей приложения, которая тупо парсит ответ сервера и расставляет его по местам на экране.
ну и сейчас же это сложное дерьмо на тысячи строк js. там тоже самое, что и с серверной хуитой. тоже есть вью и модели и контроллеры. ток модели дергают данные с твоего http сервера, а не из субд. правда, пока не знаю как эти react какахи тестировать.
>>1002618 >как эти react какахи тестировать. Если там есть какая-то логика, которая не связана с отображением, то так же, как и везде. Выносишь логику - тестируешь логику. Другое дело, конечно, что 90% фронтенд JS параши - это еще больший спагетти-пиздец, чем рельсы. А уж сколько "программных творцов", которые про тесты с архитектурой и краем уха не слышали, охуеешь.
1. Обязательно ли нужен Линух? Да, на Винде проблемы, но есть же всякие сайты типа c9.io, так что можно комфортно ебаться с рельсами прямо в облаке. 2. Поясните за mailer в рельсах. Видеоуроки с рутрекера по запиливанию своего говносайта на рельсах рекомендуют устанавливать для подверждения регистрации по мылу какие-то сторонние гемы, которым нужно вводить номер банковской карты. Я не хочу вводить такие свои данные. What do? 3. Зачем нужен json? Я нихуя не понял.
Аноны, подскажите, есть форма где задаются разные поля для поиска, дата, период и т.д. все эти параметры передаю через params. Соответственно, в зависимости от params надо писать разные запросы. Т.е. если номер есть, то один запрос, если его нет, то второй.
>>1005347 1. Если ты хочешь дальше продолжить работать с руби и созданием сайтов, то обязательно, на виндах никто не крутит сайты и точка. Ты пишешь не только под какой-то язык, но и под платформу и линукс в том числе. На винде можно поиграть и рельса даже как-то заработает, но всё это баловство будет работать пока ты модули какие-то сторонние не захочешь попробовать.
Другое дело, что линукс не обязательно себе на десктоп ставить, достаточно просто научить работать в виртуальной машине и командной строке и заодно избавиться от предубеждения о том, что линуксовая командная строка это типа ДОСОВСКОЕ окно из винды. Кстати сходная ситуация с каким-нибудь питоном. А C# как раз таки на винде лучше катит, так что если не можешь без винды жить, то го учить C#.
2. Сам пока не дошёл до этого)))
3. JSON нужен для того чтобы в индустрии был какой-то формат передачи данных между сервисами который будет понятен всем. Для этой же цели используется XML и просто текстовые файлы некого доморощенного формата. Один формат нужен для того, чтобы тебе не приходилось каждый раз писать синтаксический анализатор нового формата и чтобы ты сразу мог строить некую таблицу с ключами и значениями.
Тред не читал. Привет шахтёрам из солнечного дотнета. Как себя чувствует экосистема раби? Есть ли работа? Есть ли фриланс? Работают ли стартапы с раби или она осталась только в легаси, которое не перекатилось на что-нибудь?
>>1006311 Я про реальный мир говорю, а не какие-то экстремальные случаи типа mono с огрызками от МС (оно как бы работает, но поддержки на это не будет или только на каком-нибудь ушибленом по голове редхате).
>>1007450 Поэтому наверное Gett ищет уже больше 7 месяцев, Wheely больше полугода, Поток открыл вакансии. Инсейлс джуниоров ищет, Мили по прежнему ищут в свой финстартап.
>>1008540 Так предлагайте бабос нормальный - найдете сразу же. Вечно рашкинские сео жалуются, что КАДРОВ НЕТ, а сами зп предлагают в 4 раза ниже рыночной
>>1008540 Если кто может не в курсе, на пике Инсейлс. Хотите попилить легаси-говно в таком курятнике? Юр а велком.
По поводу остальных: >Gett ищет уже больше 7 месяцев, Wheely больше полугода Видел только гетт где-то мелькнул один раз, приглашая вроде как на удаленку, виз перфект инглиш скилс. Второго вообще не видел. >Мили по прежнему ищут в свой финстартап. Поток открыл вакансии, интерфакс, Не кажется странным что их вакансии уже чуть-ли не год висят? Учитель дурак или ученики плохие? Опять же везде доработка легаси, а в случае с интерфаксом так еще и каких-то гос-порталов. >Гарант Ну это вообще пушка.
>>1008908 Не две недели. У ведомостей позиция открыта уже очень давно. Я к ним ходил еще в 2016. >>1008882 Gett набирали в ДС с августа, в феврале в ДС приехала команда из зарубежа и начали интервьюировать самостоятельно.
Мили - у них новый проект с веб2.0, года там точно нет.
>>1008989 Ну не надо путать "очень давно открыта" и "была вакансия в 2016". Я тоже помню, что в 2016 они искали рубиста. И тоже это было что-то около нескольких недель. А чего не пошел, отказали?
По поводу гетт не знаю. Но они ищут через хрюш почему-то (мне рассылка падает от хрюш). Блять, хотел бы к ним попроситься, если бы не ебаный английский. Мили сейчас конкретно не висят, но я помню они очень долго искали. А у интерфакса я сам был на собесе, так что не рассказывай.
>>1008540 >>1008882 >>1008989 О, анонимусы, вы похоже разбираетесь в рынке труда. Скажите, какие есть сейчас интересные вакансии? Вот я открывал хедхантер, видел в частности те про которые вы пишите, но они достаточно унылые все, потому что сводятся к поддержке и рефакторингу. Кто занимается созданием? Или кто занимается большими системами? Вот все хотят хайлоад(тм), а где его брать-то?
>>1009209 > для рельсов чего брать, angular или react? А то эти js фреймворки успеваются появиться раньше чем я и их изучаю Разве выбор фронта зависит от того, что у тебя на бэке? Я на vue.js делаю.
Собственно у меня есть набор переменных которые нужно сохранять в файлы и загружать из них, но я тупенький и у меня не хватает мозгов понять как можно всё это через итератор организовать, а очень хочется отдраить этот код, потому что файлов будет больше.
Затруднения у меня вызывает непонимание того как увязать имя переменной с именем файла в каком-нибудь ассоциативном массиве или хеше, особенно в случае load, когда в переменную надо загружать данные из файла.
Можно как-то изменить длину уже запущенного цикла изнутри цикла? Не запускать while/until/step и рвать его по условию, а именно запустить цикл от одного числа до другого, а потом в процессе второе число подкрутить? Исключительно из эстетических соображений интересуюсь.
>>1009696 >Смотря что ты вкладываешь в понятие "мидл сеньор". Давай без вот этих виляний хвостом. Какая нормальная зарплата для специалиста с опытом коммерческой разарботки несколько лет?
>>1010236 Ты по первой странице rape_all_the_babies забыл долбануть. Забей, там на деле чуть больше строк, и повторять кусок кода отдельно перед циклом вообще не прикольно получается. И в функцию он не выносится нормально, нужно несколько параметров передавать, несколько значений возвращать, только больше навала получается. Но всё равно спасибо.
>>1010285 Я видел имбецилов которые имели опыт в 5 лет и стояли на позиции тимлида, и новичков которые умели строить адекватную архитектуру.
Сейчас в ДС middle может пойти где-то на 140-150, нормальный senior с зачатками лида найдет 180-200к. Нормальный лид который еще не ушел в управление - 250k.
>>1010749 Фриланс? Долго строить портфолио и доказывать опыт, фактически с нуля. Работа из дома это не работа, я для себя понял. Слишком много отвлекающих факторов. Много геморроя с налоговой, которая доебется до источников дохода из-за рубежа.
>>1010800 Сам себя убедил в невозможности, кек. Я на удаленке работаю уже полгода 30 часов в неделю, выходит 2к$ в месяц. С налоговой пока все в порядке, работаю легально через ИП. Вся прелесть в том что, я работаю на постоянной работе, но через Upwork, в итоге профиль нехило раскачивается.
>>1010800 >>1011208 Ну по хорошему оно у тебя всегда должно быть. даже если ты работаешь в конторе. что то на гитхабе и пара отзывов на линкедине я думаю сойдут. Я спокойной работаю из дома уже 1.4 года. По 5 часов каждый день. никаих проблем нет. Про налоговую мне какжеться это байки с двача. мне работо датель просто закидывет на пейонер около 2к долларов каждый месяц. никакой налоговой нет.
Каким образом твое ИП имеет вес для компании работающей в другой стране?
>Я спокойной работаю из дома уже 1.4 года. По 5 часов каждый день. никаих проблем нет. Я попробовал несколько месяцев и понял что удаленка не для меня. Периодически по надобности бывают потребности поработать из дома, но не более.
>>1011234 Я работаю через Upwork на постоянке, для компании нет никакого дела есть у меня ИП или нет - они просто закидывают деньги на мой счет в upwork'e дальше я уже сам ебусь с их выводом, ИП зарегал, чтобы налоговая не взяла меня за жопу о том, откуда у меня деньги. Я живу в регионе, где действуют налоговые льготы - 0% первые 3 года.
>>966926 > не прочитал до конца нет одной книги. Коллеги постоянно добываются, что я апдейт не делаю, а делать промывание атрибутов модели и сейв. Разве нужно читать книги, чтобы понять, что если действие можно выполнить за одну команду, то выполнять его за две - это неправильно?
>>967401 > зато каждый апдейт рубокопа (обновление последней версии которого еще и в gitlab-ci прописано ) за всю кодовую базу садится сеньор и начинает заменять одни скобочки на другие. Может пора сменить упороту тиму на нормальную?
>>1010388 пиздец, зашёл в руби-тред и расстроился. работаю за 1к баксов (милионник), зато интересно. до этого было 1.6к евро, но очень скучно. а бывает чтоб интересно и нормально платили?
>>1013642 Ох, анончик. У меня тоже беда с этим. Почему-то кругом одни вакансии с развитием каких-то старых проектов ("развитие" == поддержка на языке вакансий) со стеком рельсы + реляционка. А так хочется просто работать и делать новые проекты. Я что, многого прошу? Кто-то может не хочет работать, а я хочу. А нету. Ну почему, почему, блять?
Хочу захостить на своём компе одностраничный сайт для другого устройства в локали. Ткните пожалуйста нуба мордой, в какую сторону гуглить. БЕЗ рельсов, ибо это оверкил дикий будет.
Уже есть опенсервер с пихой, там это дело пяти секунд, но хотелось бы на руби, если это не требует каких-то запредельных усилий.
Ребят я чувствую себя Мидлом. Неплохо знаю реакт редукс. совсем капельку машил лернинга. имею очень хорошии рекомендации на линкедине и апворке. на гитхабе у меня лежит имлпементация фид форвард нейросети и веб приложуха на реакте и синатре к ней. Английский у меня неплохой. вышки нет и нет оффициального трудоустройства от слова вообще. каковы мои шансы на имиграцю отсуда нахуй? если тут успешные аноны которые получили супорт визы?
>>1014591 Тебе лишь бы в countryname, но не в Rashke? Может достаточно город РФ поменять? Свои проблемы переездом не решить, везде есть свои заморочки. Обдумывание свалинга вообще стоит начинать не с вопроса "куда я хочу" (если ты не гениальный специалист уровня мыщъха), а с вопроса "кому я там нужен". Найдётся ответ (работодатель) - отлично, можно приступать к решению задачи. Просто свалить из РФ ради сваливания - не цель, жить везде можно и неплохо. Сначала хоть в туристическую поездку в несезон съезди - может сразу выбор по климату сузится, в Европе зимы весьма противные, мне мои (Челябинские) сухие -30 больше устраивают, чем Венгерские -10. Жевание газа и сопли в лужах "каковы мои шансы..." = 100% никуда не поедешь. При этом надо знать куда именно валить, почему именно туда. А не "отсюда". Тебе может фрилансом заняться? Работать без территориальной привязки по удалёнке и всё. И вся Земля перед тобой. В любую жопу уехал и клепай заказы. Там по ходу дела и оценишь, где стоит пускать корни.
>>1014733 ну понятное дело что не в пакистан. Климат не так важен. сейчас я присматриваюсь к польше и чехии. И вакансии есть и климат под меня. Почему свалить из рф ради сваливания не цель? не хочу ташить суда политоту но, я просто не хочу жить в стране в которой нет базовых коституционных свобод, и полицейский скорее всего мой враг. я сейчас на фрилансе, но мне кажеться максимум что я на свои 1500$ потяну это тайланд потому что я с тянкой.
>>1014743 Насколько я знаю, в Польше есть тонкости вроде языка, налогов, полицейских-взяточников даже в Польше, касательно Чехии на двоих 70к крон нормально, на этом знания кончаются и я в ридонли, попробуй параллельно и асинхронно потусоваться в 2ch.hk/em/res/384254.html и 2ch.hk/em/res/387355.html
>>1014942 Дохуя было. из последнего от чего я просто ахуел. Хотел себе на киви закинуть 3 куска. И черт меня дернул закинуть не там где я это всегда делаю а в каком то левом магазине. Такого открытого наеба я ещё никогда не видел. Фейковый автомат киви. но юай и внешка 1 в 1. все минус 5к. вот тут у чувака такая же история, собственно нашел его по тому что у нас в чеках ИП совпадает. https://dublikat.one/threads/razvod-terminal-oplaty.63191/ .после того как я написал заяву в ментуру. началось . участковый просто начал меня мурыжить. 5 дней мне перезванивал ! и спрашивал не дошли ли деньги. я вежливо ему отвечал мол нет, и не дойдут. потом он сказал мол они ему чек дали. Прислал мне фотку этого чека. я ему в ответочку принес выписку из банка мол нихуя. ну и он начал гаситься какое то время. постояно обещал перезвонить и нихуя не перезванивал. ну и потом мне просто сказл что нихуя не выйдет у тебя друг, на резоный вопрос почему он начал воду лить. и тут конечно я ахуел. очевидно что этот чувак их крышует. потому что 1. всем похуй что на этом автомате лого киви и юай киви. как так нахуй? 2. Ну я не детектив и могу понять когда не ловят кого то за мошеничество в интернете. но у тебя сука автомат стоит. ИП стоит, какие могут быть проблемы?
У меня досих пор горит с этой ситуации. Надо бы конечно продолжить их ебать из принципа и писать в прокуратуру но бля это столько времени занимает я ебу. Да и я не против развестись по умному но так это ну пиздец же. из другого другу мент пытался подкинуть гаш. хорошо 3ий друг снимал
>>1015304 Думал к вам попробовать устроиться (нравится идея попилить банк и заодно узнать кухню изнутри), не поделишься немного инсайдом? Есть ли овертаймы, как команда (напрягает, что вакансии постоянно висят одни и те же, хотя может просто никто не обновляет страницу), может ли помидор рассчитывать на 200-250к?
>>1015331 >Есть ли овертаймы Если поджаривает время - считай есть.
>как команда (напрягает, что вакансии постоянно висят одни и те же, хотя может просто никто не обновляет страницу) Команда большая, но много подпроектов. Каждый своим занимается. Вакансий много потому что идет массовое расширение, куча нового делается.
>может ли помидор рассчитывать на 200-250к? В теории наверное может.
>>1015346 Никитушка? Ты слабоумный хипстоблядок. И офис ваш говно и банк ваш говно. >Команда большая 4 человека блять? Или ты всяких пезд-менеджеров под командой понимаешь.
Посоны, а расскажите, какие "необычные" вещи/практики вы знаете в рубях (ну или в рельсах тоже)?
Я, например, узнал, что оказывается в рубях есть множества http://ruby-doc.org/stdlib-2.4.1/libdoc/set/rdoc/Set.html: >s1 = Set.new [1, 2] # -> #<Set: {1, 2}> >s2 = [1, 2].to_set # -> #<Set: {1, 2}> >s1 == s2 # -> true Прикольно, потому что может пригодиться в случае если нам нужно отсутствие упорядоченности и еще сеты контролируют уникальность.
А вот другой любопытный пример. Flip Flop Operator: >5.times do |i| > print i if (i==2)..(i==4) >end ># => 234 Оператор создает набор условий и хранит состояние ? и работает так: возвращает true c того момента как встретит первое условие и до того, как встретит второе. На самом деле может быть более полезен: >lines.each do |line| > puts line if line =~ /^from/ .. line =~ /^to/ >end
Сап, аноны. Есть некий скрипт на Ruby, есть ли способ собрать все зависимости в один файл так, чтобы на другой машине скрипт запустился, не требуя скачивания дополнительных пакетов?
>>1017072 На ум приходит Docker и виртуалка. Но тебе наверное надо все гемы, можно конечно сказать, что у тебя тебя какая-то задача неправильная, но проблема интересная в некотором роде.
Можно погрепать код на предмет всех require'ов и с этим списком вытянуть гемы через gem fetch (или просто вытащить уже скачанные из директории с гемами) и потом грузить как-нибудь через require_relative.
>>1017776 высунь голову из манямирка и не пытайся обернуть говно фантиком. если ты на самых банальных задачах выжираешь в десятки раз больше других решений(включая JVM-экосистему) - тут становится все просто: бери свое поделие и катись нахуй, всем будет насрать на твои росты памяти и старты, инфа 100 и так оно и происходит. если бы это не было байкой, то этот ваш jruby таки хоть кто-то использовал. а так это просто игрушка для эксперементов и некритичной скриптопараши. вакансий почти нет, известных пользователей тоже.
>>1017957 https://github.com/jruby/jruby/wiki/SuccessStories JRuby юзают в коммерческих проектах и вообще до сих пор пилят и не забросили. Основные причины: получить удобство рельсы и поддержку уникальных java-библиотек и java-legacy. С памятью там всё нормально (не идеально, но вполне нормально).
>>1017957 >то этот ваш jruby таки хоть кто-то использовал.
Тащемта, всё оперативное планирование и контроль высокоскоростного движения в РЖД (считай, вся служба Д и околовертящиеся, нет, конечно Гид-Урал и Сетунь еще не похоронили, но...). Ну и в метро МСК кое-где (как минимум в службе Э).
>>1017922 О чем поподробнее? Говнометания на Jruby и Java в целом идут из-за того что она долго и муторно разогревается, сразу алокейтя кучу пространства. О чем ньюфаги не знают, это то, что разогнавшись машина ебет все интерпретируемое говно взашей, при этом имеет адекватные alloc-и, нормальный gc, который не блокирует мир, нормальные треды, которые не зависят от потоков операционной системы, не лимитированы по GIL в cpu-bound и где нет танцев с бубном по thread safety. Плюс к этому они получают доступ к использованию почти любого Java окружения.
>>1018416 С каких это пор оно не блокирует мир? Почти все интерпритации JVM делают остановку мира, кроме платного Azul. Она ебет, только если пользоваться непосредственно жабой, скалой или котлином и зная как. Запуская там скриптовые хреновины типа жруби, нэшхорнов, итд оверхед будет слишком велик.
>>1020818 короче думаю ты <%= screensots.each do |screenshot| %> вместо <% screensots.each do |screenshot| %> хуйнул, и он тебе высрал жсон с screensots
ActiveAdmin.register News do index do column :screenshots do |object| object.screenshots.each do |shot| span do image_tag shot.screenshot_img.thumb end end end end end
P.S: и если бы я хуйнул <%= в ERB, то картинок бы не выводилось.
>>1021058 Лол, так тебе про .html.erb народ говорит в котором вьюха рендерится? Ясен пень, что просто поставив знак равно вначале строки интерпретатор назовёт тебя бакланом.
column :screenshots do |object| object.screenshots.each do |shot| span img(src: shot.screenshot_img.thumb) end nil end
Короче span просто выводит span, a column принимает блок и выводит результат его выполнения, а результат его выполнения - массив скриншотов, а если в конце добавить nil это получается return nil.
>>1021983 Кажется понял, файловая система msdoc и тут таких флагов вообще нет. Смутил файловый менеждер минта, который отображает это флаг в свойсвтвах файла.
И еще, посоветуйте что-нибудь простое и понятное по рспеку. Я его сразу не вкурил и продолжил пользоваться минитестом. Потом еще делал подход, опять обилие dsl-магии меня отпугнуло. Но все-таки хочу на него перекатиться. Доки какие-то уебанские, хочется простой обзор, как им правильно пользоваться-то.
Сап, ребята. Подскажите плс по следующему вопросу. Чуть меньше месяца вкатываюсь в руби. Знаю, понятное дело, самые основы пока что. Тем не менее, у меня цель как можно скорее начать на этом хотя бы что-то зарабатывать, а для этого, как я понял, нужно переходить к рельсам. Собственно вопрос: насколько надо знать руби, чтобы начинать вливаться в рельсы?
>>1024431 Да можно толком и не знать. С рельсами совсем другая проблема - их нужно учить. Я бы даже сказал зубрить. Потому что все сплошь на соглашениях и шагу без них не ступишь - приходится искать и читать, как делается элементарная хуйня.
И что же ты использовал, синтаксический сахар для объявления любого кол-ва переменных? Это несерьезно и решается через одну строчку типа a,b,c = *params.
Или может различия в поведении на ретурн? Хуевое у тебя ооп тогда получается, очень хуевое. Ломать инкапсуляцию и менять логику в инкапсулированном методе-адресанте - это пиздец такое поддерживать.
Добавил return и потом на весь садик: `Мама, мама у меня сломались каллбеки!1!!! Что делать?!?`
>>1025801 Там ему сразу вопрос задали "вы сами на собеседовании давно были?". Мне кажется вся суть. Но мне больше пригорает с другого, что вот такие вот собеседователи ищут себе скиловых чуваков, вместо джунов (которые бы были благодарны и развивались), а потом отправляют их на круды, где это все не нужно и люди там тухнут. А потом он еще не доволен, что убив два года на "вырабатываение задач в джире" чувак не может ему про продукт рассказать. Епт, блять, да за два года такой зомби-работы не то что про продукт не расскажешь, а вспомнить не сможешь, что ты там вообще делал.
>>1026059 Предполагается что ты сначала на PHP попишешь года два в офисе, выучишь паттерны и потом руби за недельку и рельсы за месяц. И всё это во время работы в своей конторе. Там же ты должен поднять какой-нибудь побочный проект и в течении года-двух его разрабатывать и поддерживать. После чего этого (через год-два) можешь робко смотреть на вакансии джунов в руби конторы. А так никаких руби-джунов не подразумевается обычно.
Сап, пацантрэ. Вкатываюсь в рельсы. Учусь на программема, сейчас проходит летняя практика. По знакомствам нашел практику в одной маленькой конторе. Руководитель практики сказал, что ему в принципе похеру на меня, но если хочу что-то сделать, то нужно сделать веб-приложение. И дал на выбор пару тем. Делаю приложение для городских игор (Типа бегаешь по городу, выполняешь задания). Возникла проблема: Есть 2 модели : Игры и блок игры. Т.е. игра содержит несколько блоков, соответственно связь belongs_to. C созданием игры все ок, но когда хочу прикрутить добавление блоков сразу при создании игры возникает пролбема (пик 2). Контроллер для создания блока игры (пик 1)
Какие понты? Тебя спросили как ты используешь отличия, на что был вскукарекек про проки в скоупах. Ты бы хоть доки посмотрел сначала актив рекордские, в них лямды используют.
Так что раз уж начал спорить с тем что проки (не лямбды) используются повсеместно, давай валидные кейсы их использования или слейся по-тихому.
> And finally, the proc method should never be used as it is inconsistent and has unexpected behavior. In Ruby 1.8 it actually returns a lambda! In Ruby 1.9 this has been fixed and it returns a Proc. If you want to create a Proc, stick with Proc.new.
В общем есть проект в директории, под гитом. Я хочу некоторые файлы этого проекта заменить своими на локальной машине, или добавить файлы только для себя (это в основном конфиги, которые лично меня не устраивают и я хочу иметь свои). Частично это можно решить глобальным гитигнором, но это хуевое решение. Кое-что я сложил в директории рядом с проектом, типа докер-композа и dot-env файлов, который можно так запускать. В идеале хотелось бы, чтобы моя директория-расширение, как бы монтировалась поверх проекта. Но при этом чтобы гит видел оригнал. Или например что-то типа личного гит-игнора, но локалного для проекта.
Сижу перепиливаю свой «процедурный» скрипт на классы (специальная олимпиада), у меня там erb использовался и пришлось разбираться что такое биндинг. А вы чем заняты?
>>1026454 Бранч и стеш не подойдут. Гитэксклюдес это глобальный игнор. Но пока гуглил его наткнулся на .git/info/exclude - типа локальный exclude, и это уже теплее.
Парни, как относитесь к принципу рефакторинга extract method? Пикрелейтед. Если код дублируется, тогда, конечно, очевидно нужно выносить. Но вот как в этом конкретном примере мне кажется это ненужно шизофазия. Имхо, код сверху понятнее и читабильнее. Но я часто вижу, что начинают дробить обособленный метод на множество мелких, создавая такую лапшу, что чтобы прочитать код, приходится бегать по файлу и воссоздавать стек вызовов. И зачастую это объясняют "чтобы метод лучше читался".
Но это мне так кажется. Хочется узнать, что думают другие и если используют, то почему. Алсо, если есть где-нибудь субъективная критика этой практики, поделитесь ссылочкой.
--- Принцип рефакторинга хороший, если уметь его применять в связках с другими паттернами.
Давай возьмем пример посложнее, пусть отчет состоит не из двух частей, а из пятидесяти. Все написаны в одном методе printOwning.
И тебе приходит задача - подготовить три вида отчетов, один полный на пятьдесят частей, два кусками по 5, и 35 частей.
Первым делом ты откроешь код и охуеешь, увидев полотно на 400 строк кода. Но т.к. ты владеешь паттерном extract method, то за 1 коммит сможешь разделить огромный метод на множество маленьких частей. Эта хуйня отвечает за это, та - за то. Стало чуть понятнее.
Вторым шагом применяется инверсия зависимостей, чтобы метод printOwning печатал нужный вид отчета (полный, частичный, минимальный, whatever).
То что я знаю больше тебя, не значит что я хочу что-то перед другими, особенно на анонимном форуме.
Извлечение методов это не только читабельность, задел под расширение, но и удобство в тестировании.
Когда тест крашится в маленьком методе, его проще поправить, а остальная часть программы тебя не волнует.
Если думаешь, что можно научиться эффективно ходить на одной ноге, то тебе не следует идти в программисты. Тем не менее неоспоримость пользы одной ноги в связке с другой - неоспорима.
Поэтому не выебывайся, и учи как бы глупо тебе не казалос и рднажды картина сложится в голове. Увы, но ооп по частям не работает.
>>1028141 Даже башевские скрипты дроблю на отдельные функции, что сильно упрощает отладку и прочие НИОКРы. Может показаться, что кода несколько больше, но с практикой станет ясно, что разбираться в коде действительно проще, чем в простыне с if/while, принтами и циклами.
Принимаются изменения в шапку треда в виде пулл-реквестов:
https://github.com/meoweg/2ch-pr-ruby
Как показывать код:
Быстро - https://pastebin.com
С исполнением - https://ideone.com
Требуется аккаунт GitHub - https://gist.github.com
Конференция
https://2chpr.slack.com/messages/ruby/
Получить приглашение: https://invite-me-to-2chpr.herokuapp.com/
FAQ:
1. C чего мне начать, чтобы стать рубистом?
Отличным началом будет Programming Ruby (The Pragmatic Programmers Guide), читать Eloquent Ruby и The Well Grounded Rubyist после прочтения первой толку особо не даст, одни и теже вещи, дальше читаем Ruby Way, затем познаем метапрограммирование с Metaprogramming Ruby. А дальше открываем Ruby cookbook 2015 года, Пишем свой код во время чтения.
Следующий уровень, продвинутые книги по руби:
Confident Ruby by Avdi Grimm
Practical Object-Oriented Design in Ruby
Refactoring Ruby Edition
Ruby Under a Microscope для любителей залезть под капот.
Документация по стандартным библиотекам http://ruby-doc.org/
Можно пройти руби онлайн - http://tryruby.org/levels/1/challenges/0
И ещё раз онлайн: http://www.codewars.com/?language=ruby
Не веришь в свои силы? Прочитал уже книжек много и силы свои хочешь познать, сделай - http://rubykoans.com
И вот еще https://rubymonk.com/ - Матц одобряет.
2. Какой gem посмотреть, чтобы понять, как писать код?
Лучше всего посмотреть небольшие gem'ы вроде cancancan, pundit, camping.
А еще можешь полистать на гитхабе гемы с нарастающей популярностю.
https://github.com/trending?l=ruby
Там еще нет тысяч строк, и тебе будет легче понять.
3. Есть ли GUI для руби?
Да. Есть обвязки к Qt, GTK, wxWidgets, Shoes, fxruby (одобренный).
4. Можно ли писать на руби мобильное ПО?
Да. Для iOS есть RubyMotion терпимого качества, для Android - лагающий и падающий, но всеми силами развивающийся ruboto. Для WinPhone до сих пор ничего не завезли.
5. Как установить разные версии рубей?
Легко и просто: https://github.com/sstephenson/rbenv
И это тоже, легко и просто: https://rvm.io
6. Что почитать по рельсам?
http://guides.rubyonrails.org
http://ruby.railstutorial.org
API: http://api.rubyonrails.org
Прекрасные туториалы в стиле for dummies - http://www.theodinproject.com/ruby-on-rails , а вот тут все тоже, но на русском http://codenamecrud.ru/
Классический вводный туториал, где делается с нуля клон твиттера, для новичков в rails самое то - https://www.railstutorial.org/book
Для дотошных читателей есть The Rails 4 Way.
7. Хорошие практики по руби и рельсам?
Читаем Rails AntiPatterns, смотрим Rails Best Practices, также неплохо посмотреть Rails Recipes.
Почитайте еще Grimm A. - Objects on Rails
Еще продвинутое чтиво - http://tutorials.jumpstartlab.com/
8. Ruby/Rails блоги, рассылки и твитторы
IRC каналы на FreeNode: #ruby, #ruby-core, #RubyOnRails, #rails (не очень активен).
Твитторы @rails, @dhh, @yukihiro_matz, @wycats, @tenderlove
Рассылки ruby-core, rails-core, rails-talk
Подкасты:
- http://rubyrogues.com
- http://ruby5.envylabs.com
Скринкасты:
- http://railscasts.com
- https://peepcode.com
- https://www.destroyallsoftware.com
- http://railsforzombies.com
Блоги:
- rubyflow.com - каждый день новости, новые библиотеки, обновления, все дела.
- rubysource.com - читаем интервью, хорошие практики, и безумные сравнения упоротого дибила-индуса на самом деле их пропускаем
- rubyinside.com - новости, туториалы.
- rubyweekly.com
- http://37signals.com/svn
- http://yehudakatz.com
- http://afreshcup.com
9. Я не могу в английский, что делать, анон?
Идти учить английский, без него тут делать нечего.
10. Есть ли у руби русское коммьюнити?
Нет. Вернее есть, но оно протухло и там полно людей у которых чсв высоко.
Яркий пример - [email protected]
А еще есть русская слак конфа - https://russiandevs.slack.com она общая, но есть очень активный руби канал.
Так же русская гугл группа, активная - https://groups.google.com/forum/#!forum/ror2ru
Еще вот - https://onrails.club/
11. Какие гемы стоит знать?
capybara, rack, rspec, devise, cancancan, simple_form, solr, sinatra, тысячи их.
Поиск гемов https://www.ruby-toolbox.com
12. Зачем нужны тесты и как их писать?
http://rusrails.ru/a-guide-to-testing-rails-applications
http://habrahabr.ru/post/163597/
Вместо этого можно прочитать классную книгу Everyday Rails Testing
13. Где можно задать глупые и не очень вопросы?
- здесь
- stackoverflow.com
- тематические slack-конфы
- а вообще, гугли, с вероятностью в 90% ответ на твой вопрос уже висит на stackoverflow.
14. Как фокнуть\сделать фичу\исправить баг, сложно ли это?
Нет, не сложно. На rubyflow появляется много новостей с реализацией новой библиотеки, вы можете сделать тесты, фичу для него, старые либы также обрастают багами, улучшайте их! пишите код.
15. В чём писать код?
Atom, Brackets, Sublime Text, TextMate, Vim, GNU Emacs. Для особо упоротых энтерпрайз-макак есть rubymine, плагины к эклипс и нетбинс.
16. Можно ли писать на руби с под windows?
Можно, но придется обрасти костылями в виде виртуальной машины, придется сходу разбираться с Vagrant и многим другим. Чем дальше ты продвигаешься, тем ближе становится ясно, что пора перекатываться на linux/mac
17. Руби язык одного фреймворка?
Есть еще Sinatra, Hanami (ранее Lotus), Volt, Grape, отличные штуки для DevOps - Chef, Puppet и годные генераторы для бложиков - Jekyll, Middleman, всё это активно используется в продакшене
18. Можно ли делать игры на Ruby?
Можно, но не нужно. Гем Gosu.
19. Ютуб каналы
Youtube driven development...
Вот тебе пара каналов, но никому не говори что учишься по видео.
https://www.youtube.com/channel/UCIQmhQxCvLHRr3Beku77tww/videos
https://www.youtube.com/channel/UCfWZwsP8trUy5uHJg8gcGIQ
https://www.youtube.com/channel/UCSI77lJlzlCFPLdV1RSAoYQ
https://www.youtube.com/channel/UCPIyDzf1vwWc8EQJGUX-vYw - тут на ру$$ком даже.
20. Как и где искать работу?
Легко и просто - http://rubyjobs.ru/
Не так просто - https://upwork.com/
Еще вконтакте есть группы по руби/рельсам, там иногда постят вакансии. Еще в русской гугл группе постят вакансии. Новичку будет сложно, но возможно.
TODO лист для ньюфагов:
И так, ты поставил руби, уже сгенерировал свой первый проект rails new pidaras
Начни уже с платинового пути, блог >> клон твиттера >> своя имейджборда >> свой гем >> дальше сам придумаешь.
Рекомендации:
1. Для блога, создать роли, Админ, Пользователь (можно использовать паттерн form object). Прикрутить лайки, комментарии.
2. По твиттеру, следуя гайду Хартла, пиши все то что он предлагает в качестве доп. заданий, например оповещение по нику (@eblan: привет)
3. По имиджборде: воссоздать по возможности полный функционал, в этом случае придется ознакомится с javascript/jquery/coffeescript, но тебе так или иначе придется. Еще хорошей фичей будет использование background job и крон тасков (sidekiq, whenever), чтобы заполнять свою борду тредами и постами с другой борды, можно использовать api двача, чтобы вытягивать треды и посты - https://github.com/ID25/api_2ch
4. Не стесняемся постить свои репозитории, наши эксперты с радостью отревьювят вас.
После этого тебе будут нужны паттерны, без них твой код превратится в говно. Один из часто используемых - Service Object.
https://netguru.co/blog/service-objects-in-rails-will-help - о сервисах
Еще паттернов - https://robots.thoughtbot.com/back-to-basics-solid
Но самый читаемый код, как и следовало ожидать, даёт функциональное программирование. Начни отсюда:
http://www.sitepoint.com/functional-programming-techniques-with-ruby-part-i/
http://www.sitepoint.com/functional-programming-techniques-with-ruby-part-ii/
http://www.sitepoint.com/functional-programming-techniques-with-ruby-part-iii/
http://www.sitepoint.com/functional-programming-pure-functions/
http://www.sitepoint.com/functional-programming-ruby-value-objects/
Только не переборщи. Руби - не функциональный язык, и иногда такой код может работать медленней.
Прочитал? Теперь рефактори то, что уже написал. И не забывай покрывать тестами.
Хорошим финалом будет деплой, это пожалуй самое болезненное, и ничего общего с деплоем на heroku, где тыц тыц и готово. Придется поковыряться со смежными вещами и узнать много нового, уже устоявшийся гем для таких дел - Capistrano.
Не забывайте спрашивать у анонасов вопросы, код лучше показывать через gist или pastebin с подсветочкой.
Ну, а мы открываем очередной Ruby Thread.