Это копия, сохраненная 20 июля 2017 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Принимаются изменения в шапку треда в виде пулл-реквестов:
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. Есть ли у руби русское коммьюнити?
Нет. Вернее есть, но оно протухло и там полно людей у которых чсв высоко.
Яркий пример - rub|mGyANUSconference.jabberW$,PUNCTUMr)'Fu
А еще есть русская слак конфа - 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.
Впервые слышу. Чот тухлый у вас тред, рубаны.
Делаю коанс.
def test_period_is_a_shortcut_for_any_non_newline_character
assert_equal "abc", "abc\n123"[/a.+/]
end
Это типа правильно, но это же нихуя не правильно.
Потому что онлайн проверщик регулярок говорит мне что должна соответствовать вся строка. Точка это b, + все остальное. Но руби упорно мне продолжает говорить что я хуй и правильно abc. Халп.
Регулярки бывают разных "стандартов".
В perl-регулярках точка к символу новой строки вроде как не относится.
Может сюда копнёшь.
Удаленка для джуна фантастика?
Используй /m
чтобы защитить модель юзера, можешь использовать стрикт парамс.
Алсо, твоя проблема в том, что тебе надо найти автоматом имейл и поставить айди? Либо модифицировать параметры , либо сделать имейл собственно ключом. Не думал об этом, лол?
Спасибо, анон. Лол, я даже забыл, что эмейлы уникальны для юзеров и их можно использовать вместо айдишника для джоин модели.
Я пошел отсыпаться. Мир.
Только тебе все равно так или иначе придется фильтровать входные параметры, потому что если ты просто сделаешь апдейт из параметров формы, я боюсь у тебя образуется либо связи на юзера с несуществующим мылом или , еще хуже, новый юзер с новым имейл, в зависимости как напишешь. Остерегайся, кек
То есть каждый месяц прилетают какие то охуительные истории от чувака, который указывает нашей команде, как писать простейшие вещи типа %r() vs //, && vs and и приходится подчиняться все новым и новым маразматическим правилам. И все это хавают
Потому что питон - это стандарт в современной разработке
вы таки уверены, что нельзя считать быдлом тех, кому каждый день могут указать, что вот такие скобочки в их коде теперь неправославные, причем на прошлой неделе, предположим, неправославными были одни, а теперь другие? Между прочим всякий %w синтаксис при использовании strict параметров выглядит уебищно. К сожалению, опять же, команда это хавает и следует этим копам, переписывая старый код под новые копы.
Потому что всех уже тошнит от руби-выебонов со 100500 способов написать одну и ту же хуйню и хочется порядка и единообразия. Это сначала весело, когда ты у мамы художник и артист, а потом заебывает. Чем крупнее проект и чем больше людей над ним работает - тем больше заебывает.
Так пиздуй к ним на гитхаб и открывай обсуждения - мол, заебали скобочки менять и вообще ваши копы говно, если такой умный. Либо меняй конфигурацию копов локально для своей команды и клади хуй на то что там в апстриме происходит - если у вас уже большая и констистентная кодобаза, то скобочки менять мало мысла.
с одной стороны да, хуй с ним, конечно. Бесит не суть рубокопа а то, что один мужик определяет как мне писать и как мне переписывать уже написанное.
>>967391
Я тут права голоса не имею, зато каждый апдейт рубокопа (обновление последней версии которого еще и в gitlab-ci прописано ) за всю кодовую базу садится сеньор и начинает заменять одни скобочки на другие.
Сраться на гитхабе - есть ли смысл? я особо на гитхабе не зависаю, попал в руби кодинг почти случайно, просто бесит вот эта хуйня. Ну зафиксировали бы версию и все - нет, над душой стоит удаленный вахтер.
ASP.NET - адепт
пишешь свой проект - пиши как хочешь.
контрибьютишь в опен-сорс - смотри как автор пишет.
на работе - настроенный под вашу команду рубокоп.
'охуительные истории' от чуваков нужны для новичков, чтобы те дичь не городили.
> В отклике, пожалуйста, подтвердите готовность пройти техническое тестовое задание
Спасибо, нет.
БЛЯЯЯДЬ И ТУТ ХИПСТОРЫ ДОКОЛЕ БЛЯДЬ СМУЗИ БОРОДЫ МАКБУК Я ПРОСТОЙ ПАРЕНЬ ИЗ СЕЛА ДА Я ТОЖЕ ЗНАЮ РУБИ И ЧТО Я НЕДОСТОИН ПУФИКА АААА БЛЯДЬ СРАНЫЕ ХИПСТОРЫ
В общем нужно микро-сайт на джекилле где-то захостить, хотелось изящного решения. Дело в том, что раньше у битбакета была такая штука как aerobatic.io, это был полный аналог github pages только еще и с поддержкой плагинов и с приватными репами. Такая няшота.
А сейчас они отделились и отобрали кастомные домены для бесплатных аккаунтов.
Хочу что-нибудь дешевое придумать, чтобы и приватная репа была, и кастомный домен и деплой из CI-ки.
Что там сейчас есть, гитлаб пейдж, хероку (но спит в бездействии), амазон (?), диджитал ошен?
Гитлаб пейджс есть с жекилом. Есть битбакет пейджс, но там хз. Не занимайся халявной ерундой и захости по человечески.
>double_entry
Чет я не догоняю при чем тут гем бухгалтерской записи и график средней цены товара?
Кстати, расскажи про гем, зечем его понадобилось использовать, в чем профиты этой системы. Всегда было интересно про двойную запись, но никогда не встречал на практике.
Даже cock.li не хочет регистрировать, не говоря уже о временной почте. Да и оно платное, наверное?
мимо
Это просто облачная иде с обрезком линукс-машины. В бесплатной версии после 24 часов простоя выключается.
Проще запустить свою машину в виртуалочке или купить дешевый впс, если не хочешь перекатываться на мак/линукс.
вот обзор ( https://habrahabr.ru/company/mr_gefest/blog/247147/ ) за 14 год, рассказывают про альтернативы, тарифы, для ценителей были какие-то приложения и под андроид.
Koding был единственный с полноценной рутовой машиной, но умер.
И тарифы сейчас у всех эти сервисов такие, что проще купить впску.
ты же понимаешь, сравнивать надо с ide + хостингом. Подписка на рубимайн стоит около 12 долларов в месяц, бтв.
>рубимайн
А он то зачем нужен? Там что, такой же вендерлок, как и с джавой? Уж на руби можно писать где угодно, хоть в саблайме или виме.
но я хочу пить смузи, а не трахаться с настройкой очередного сломавшегося плагина в сублайм-виме!
>линух
>не надо пердолиться
Там чтобы вим не печатал хуйню при нажатии на стрелочки и удалял символы уже нужно конфиги прописывать
Саблайм, атом.
Не нужно ничего прописывать, нужно пропустить через себя философию вим.
Алсо, программировать и ничего не настраивать - это оксюморон какой-то.
Не настраивать - это нормально, но конкретно от вима я пригорел
Написание скриптов интегрируюших rvm в сублайм - это красноглазие, а не коммерческое программирование, увы.
А зачем их писать, если и так всё написано? Ты что, йоба-хацкер и тебе нужны какие-то особые сниппеты и изъебы?
Затем что автоматизация. Что сублайм, что тем более вим - нужно достраивать и если ты делаешь это в рабочее время, то ты какой-то хуевый работник.
Меня выворачивает когда Васян пишет if !blah.nil?, а Петян - unless blah.nil?, в одном и том же проекте, в одном и том же файле.
В понедельник настрою, товарищ начальник
<%= content_tag :div, "", id: "my_id", data: { houses: @houses } %>
где @houses это что-то вроде House.last(15)
Затем я на одной из джаваскрипт библиотек из data-houses
атрибута извлекаю в жс файле информацию, делаю с ней всякие манипуляции и тд.
Но мне нужно, чтобы ActionCable следил за этим data-houses атрибутом и в случае обновления (появления новых иснтансов модели Ноuse), снова обновлял этот дата атрибут, запуская жс скрипт, в результате чего ререндерилась и вьюха. Как это сделать? С actioncable знаком, но кроме чатика и комментов на нем ничего такого не делал,
https://pastebin.com/7tdn1VTh
Это локальные оскорбления?
Всё работает, но адрес изображения типа 'localhost\......\1231.jpg' из за чего на другой пекарне картинок не видно. Как пофиксить? Чтобы был локальный ip-адрес типа 192.168.1.2?
Или на google cloud storage еще можно
статья как подружить js/css asset digest c gulp:
https://blog.bugsnag.com/replacing-the-rails-asset-pipeline-with-gulp/#monkeypatching-rails
нет уже готового?
что с иконками которые раньше были в app/assets/images?
а напомните, зачем asset digest?
перед тем как использовать документ из кэша, браузер разве не шлет запрос - content modified? if no -> fetch the document from the server.
в config/routes.rb
match "my_action", via: :all # post and get
def my_action
if params[:param]; create; else; blah; end
Как раз только что сделал через эти constraints. Странно, все работает, но роутинг спек все равно говорит, что я не прав.
немного разобрался. у документа в кэше есть параметр, 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 в несколько мин.
Не прогоняй, плиз. Лучше посоветуй книжку. Вот я нашел design pattern in ruby, она хорошая?
На почитай
http://www.rubyletter.com/newsletter/2017/04/07/patterns.html
На гитхабе можешь подрочить на код postmodern'а
когда используешь другие библиотеки, часто бывает что их легче тестировать rspec'ом?
в rspec:
include_examples "blah"
в minitest:
module Blah
... # your tests
end
class Test
__ include Blah
end
в minitest понятнее, что происходит.
с другой стороны, у rspec
есть it_behaves_like, который вместе с форматированием, дает некоторую инфу.
у minitest есть паралельный запускатель тестов. может и у rspec есть.
Ну?
Объясни в чем заключается сложность и почему такой срок? Ну и цену интересно бы услышать
Я что, в филиал /b попал что-ли? Причем тут ангуляр поехавший? Ты можешь, блядь, писать более развернуто чем одно - два слова? Ты блядь слышал что спрашивалось вообще? Меня не ебет на чем это сделано, в качестве бэкенда у подобного говна обязательно будет рельса пусть и ангуляр на фронтенде (про это будет отдельный ответ).
Вопрос остается тем же. Сколько по времени делать подобное говно для погромиста на рельсах и сколько это говно собственно может стоить если ты конечно не совсем хуй мамин а немного шаришь в вопросе.
я не он но отвечу
смари бэк там простой, очень простой сделать его на рубях можно, но смысел нанимать узкого относительно спеца для почти одностраничника ? Хочешь заплатить больше
далее по фронту
я с угловым мало работал но принцип думаю один и тот же:
для начала пикрил
это плохо
во вторых я бы взял тысяч 50 за все под ключ
дизайн, верстка, бэкенд
и по времени месяца два ( просто чтоб можно было поебланить и не загоняться по поводу дедлайнов ) за 80 тысяч сделал бы такое за месяц но это я макаки с fl.ru сделают на стэке WP+JQ за две недели и 10к
проблема не в сложности а в том, что заказов обычно у сколько нибудь нормального спеца столько, что можно на подобные одностраничники выставлять прайс в разы превосходящий реальную стоимость/сроки
Вообще я думал такое делается на базе какой-нибудь Spree если речь идет о рельсах. В качестве фронтенда Bootstrap который там уже есть к тому же. Заодно и платежные системы подключить не проблема будет. корзина и все остальное там уже реализовано, так что останется только настроить функционал. Плюс административная часть в которой будут проходить все заказы с состоянием доставки и всего подобного. Срок на все про все с учетом уточнений - месяц максимум, осталось определиться с ценой.
Хочу встать на рельсы, в данный момент знаю C#, могу в верстку. ASP.NET MVC по паре причин забросил, но о MVC в целом имею представление.
Такие вопросы:
1) С какой книги начинать читать, чтобы для меня не разжевывали с нуля переменные, коллекции и прочее. Могу разбираться на примерах. Желательно, чтобы сразу начать пилить сайт.
2) Есть ли у какой-нибудь IDE аналог IntelliSence для Ruby?
Учи английский, иначе так и будешь
>экземплярами
оперировать вместо нормального языка. Ну и информация двухлетней давности в лучшем случае прилагается как должное. Технический английский на самом деле элементарный, поначалу туго, но дальше как по маслу.
>>975132
http://stackoverflow.com/questions/55574/learning-ruby-on-rails
С .txt, все понятно
А если мне нужно просто вывести название сайта в блокнот?
Ставь правильные вопросы и задавай их гуглу.
1) Как запросить html по url.
2) Как парсить строку.
3) Как выводить в файл.
1.+
2. Искал, но там относительно сложные примеры с большим кодом. И поиск идет по css.
3.+
Я бы и сам сюда за помощью не шел(анон, занятой человек, а не я высокомерная мразь), но понимание, так и не приходит...
[code]
html = %{
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>OP XYU</head>
<body></body>
</html>
}
html.match(/<head>(.*?)<\/head>/m).captures # => ["OP XYU"]
[/code]
[CODE]require 'open-uri'
require 'nokogiri'
url = 'http://www.nokogiri.org/tutorials/searching_a_xml_html_document.html'
html = open(url)
html.match(/<title>(.*?)<\/title>/m).captures
[/CODE]
Подскажешь, где ошибочка?
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>'
Вот такая.
Я знаю, что даун, раз на винде руби знаю, знаю...
А где у тебя вызов этой самой Nokogiri?
open(url) возвращает не строку, а файл, который нужно прочитать через read
nokogiri -это библиотека для парсинга html/xml документов. Если у тебя такой простой пример, то можно обойтись без нее:
require 'open-uri'
url = 'http://www.nokogiri.org/tutorials/searching_a_xml_html_document.html'
html = open(url).read
html.match(/<title>(.?)<\/title>/m).captures.first
С nokogiri:*
require 'open-uri'
require 'nokogiri'
url = 'http://www.nokogiri.org/tutorials/searching_a_xml_html_document.html'
file = open(url)
doc = Nokogiri::HTML(file)
doc.css('head').children.to_html
можно вместо '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
и вот тебе файл с выгребаемым
Для мудака, который не может в гугл.
Твои стулья: https://www.ruby-toolbox.com/categories/Background_Jobs
По сути, стула всего два: Resque или Sidekiq. Оба используют редис. Рескью я не пользовался, к сайдкику нареканий никогда никаких не возникало, из коробки есть все, ебаться ни с чем не нужно. Судя по всему, у остальных такая же ситуация. Если ты все еще не можешь в гугл с запросом из трех слов Resque vs Sidekiq, то на первую ссылку с СО: http://stackoverflow.com/questions/11580954/resque-vs-sidekiq и FAQ сайдкика со сравнениями: https://github.com/mperham/sidekiq/wiki/FAQ
Вот нахуй ты это написал, ты читать не умеешь или что ?
а требования какие по надежности, ничего страшного если сообщение не будет доставленно в случае редкого сбоя?
ничего если сообщение будет отправленно дважды?
тебе вот эти вещи нужно разобрать.
сайдкик использует редис и тебе нужно будет проверить сохраняет он очередь или хранит в временно памяти и очередь теряется при сбое.
если тебе нужно отослать разным получателям в разное время и получателей - много заданий. то нужно подумать про очереди с разным приоритетом. да и тебе нужно с какой точностью обработки, до секунды или плевать если сообщение отправится на несколько мин позже?
я бы так рассуждал и уже из соображений выбрал сайдкик или еще что.
А, нет, это я еблан.
Рандомное действие зависящее от значения в строке БД по определению решается периодическим поллингом базы.
Попробуй описать изначальную задачу, до этапа как какая-то дата попадает в БД и возможно тебе предложат решение лучше.
Ты наркоман. OpenURI - библиотека работы с URI. HTTParty - клиент HTTP. Как тут можно одно использовать "вместо" другого - не ясно.
Более того, если речь о множественной загрузке, то нужен не httparty а faraday с excon'ом или аналоги.
Atom если похуй на память.
Ну вот очевидный таск-менеджер с функцией отправки email, если ты проебал сроки выполнения(т.е не поменял статус на выполнено)
Тогда очевидный воркер запускаемый раз в Х, выбирающий просроченные тикеты по всей системе и рассылающий уведомления.
В ином случае это какая-то комбинация из event-driven системы хранения данных и экосистемы.
От наркомана слышу. Хера ты умного корчишь? Использовать для скрапера 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". ОК?
И пойди расскажи, что они наркоманы всем этим ребятам:
https://www.distilled.net/resources/web-scraping-with-ruby-and-nokogiri-for-beginners/
http://www.mattmorgante.com/technology/webscraper
https://github.com/RaDeleon/Ruby-Web-Scraper-Nokogirl-HTTParty-Pry/blob/master/web_scraper.rb
https://medium.com/@LindaHaviv/the-beginner-s-guide-scraping-in-ruby-cheat-sheet-c4f9c26d1b8c
Хуярить скрейпера через нативный Net::HTTP это пиздецовая идея. В итоге придешь к тому что будешь хуярить тред-пул чтобы с горем пополам это работало хоть как-то оперативно.
>Использовать для скрапера HTTP клиент вместо OpenURI - как раз по делу.
Так если оба базируются на Net::HTTP - то какой резон-то?
> использовать для скрапера HTTP клиент вместо OpenURI - как раз по делу.
Ты заостряешь внимание на малозначимых вещах.
Низкоуровевые сетевые библиотеки не нужны хотя бы потому, что не дадут ощутимого прироста в скорости, пока не научишься в многопоточность, оптимизированный парсинг тяжелых страничек и т.д. Начни писать код, решай реальные проблемы.
---
Бонусы в виде того, что кто-то гарантирует работу скраппера над кучей протоколов - это приятно, нужен uri - ты его берешь, забывая про то, что в интернете, оказывается много разных схем http, https, ftp, irc (lol) и т.д.
Исходя из этих соображений, я бы не стал писать паучка с Net::HTTP, в худшем случае - запилил какой-нибудь интерфейс, чтобы такие извращенцы как ты могли запилить свою реализацию данной части скпаппера. Но пока не попросят, заниматься овер инженерингом - нет.
Вот сейчас ты себя прям очень высоко поставил фразами, типа "Начни писать код, решай реальные проблемы." и " Но пока не попросят, заниматься овер инженерингом - нет.". Высоты не боишься?
Не мог бы тогда уважаемый сеньор привести пример своего скрапера для описанных выше задач, ну или хотя бы намекнуть как он его напишет.
>Есть какие подводные камни?
Станешь носить кардиган, стричься в барбершопах, пить смузи и кататься на гироскутере.
про вейп забыл
Я редко очень подстригаюсь, смузи ни разу не пил, на улицу редко выхожу. Сам я точно буду осваивать этот язык больше года, а с курсами было бы не плохо их укоротить на полгода хотябы.
Помимо самого руби ещё много чего придется осваивать. Уверен, что зочешь влезать в айти? Ещё раз подумай хорошенько...
Хочу продвигаться на китайском рынке ИТ.
Либо свои проекты делать на китайский\снг рынок.
> намекнуть как он его напишет
http://infolab.stanford.edu/~olston/publications/crawling_survey.pdf
Понятно. Специфическое чувство юмора, конечно. Удачи тебе!
>Не мог бы тогда уважаемый сеньор привести пример своего скрапера для описанных выше задач, ну или хотя бы намекнуть как он его напишет.
Если смотреть на задачу глобально - то я бы не стал писать скрейпер html страниц в принципе.
Если же локально - то я выше написал что использовать в качестве http агента - faraday с excon.
В Rails никак не решается, это фреймворк.
А так вообще - решается тем что никто в здравом уме не будет пытаться выжать 10000 одновременных коннектов с одного процесса. Такие дела.
1. многие патчат ActionController
мне было бы понятнее
render json: UserSerializaer.new(user)
или
render_serializer user
они же патчат render()
если же у меня есть TrivialSerializer и UserSerializer, то какой из них будет использоваться? --- render user, serializerClass: ...
гулопсть.
2. добавляется метод класса к ActionController.
чем
your_class_method
понятнее
include YourMixin?
тоже самое, но не нужно патчить.
а есть список проверенных гемов которые не делают таких глупостей? не jsonapi, а любых.
А как нагрузку балансируют в вашем стеке? Какие инструменты, техники, технологии? Ссылка есть почитать?
это JSON сериализатор.
jsonapi - http://jsonapi.org/
стандарт для структуры json ответов.
есть гем active_model_serializers, но вот что он делает:
http://www.benjaminfleischer.com/2015/06/02/understanding-rails-model-serializers/
он подменяет метод
_render_with_renderer_json
это, что бы ты мог сделать:
render json: user
было бы понятнее если бы они просто добавили:
_render_with_renderer_jsonapi
тогда можно было сделать:
render jsonapi: user
из этой записи ясно, что будет использоваться jsonapi.
а так, получаются вот такие дуратские вопросы:
http://stackoverflow.com/questions/20101179/how-to-disable-activemodelserializers-for-a-specific-controller
т.е. человек не хочет использовать jsonapi,
и ему приходится вместо
render json: user
писать:
respond_with user, serializer: nil
это JSON сериализатор.
jsonapi - http://jsonapi.org/
стандарт для структуры json ответов.
есть гем active_model_serializers, но вот что он делает:
http://www.benjaminfleischer.com/2015/06/02/understanding-rails-model-serializers/
он подменяет метод
_render_with_renderer_json
это, что бы ты мог сделать:
render json: user
было бы понятнее если бы они просто добавили:
_render_with_renderer_jsonapi
тогда можно было сделать:
render jsonapi: user
из этой записи ясно, что будет использоваться jsonapi.
а так, получаются вот такие дуратские вопросы:
http://stackoverflow.com/questions/20101179/how-to-disable-activemodelserializers-for-a-specific-controller
т.е. человек не хочет использовать jsonapi,
и ему приходится вместо
render json: user
писать:
respond_with user, serializer: nil
что бы соединений или много запросов?
соединений, не знаю.
есть 10 rails серверов. перед ними ставят http балансировщик.
>minitest
пик что у меня получилось с minitest.
немного времени потратил..
форматированный вывод неочень, надеюсь можно будет написать formatter.
никаких rails-minitest, только то, что вместе с руби. кроме minitest-reporters для вывода.
я включаю Minitest::Spec::DSL в Rails TestCase, не ок.
>А как нагрузку балансируют в вашем стеке?
Так же как и в любом другом. Балансировка нагрузки не имеет отношения к используемым технологиям. Дрочево на requests per instance пустое.
http://michaelhartl.com/ – author of Ruby on Rails Tutorial.
http://russolsen.com/ – author of Eloquent Ruby and Design Patterns in Ruby.
http://yehudakatz.com/ – один из разработчиков Ember.js, а также core team member в Ruby on Rails, jQuery и других проектах.
https://mackenziechild.me/ – Rails Courses.
Дополняйте список.
http://bundler.io/ – gems manager.
https://ruby-toolbox.com/
https://github.com/bayandin/awesome-awesomeness
https://github.com/trending?l=ruby
http://stackoverflow.com/questions/55574/learning-ruby-on-rails
Лучший способ изучить Rails (2012)
http://habrahabr.ru/post/138101/
Обучение онлайн (2013) для изучающих Ruby/Rails
http://habrahabr.ru/post/203064/
A: Искаробки не поддерживает. Юзай Administrate или ActiveAdmin.
Тоже в шапку, это часто спрашивают.
https://gorails.com/setup/ubuntu/14.04
https://gorails.com/setup/ubuntu/16.04
How To Install and Use PostgreSQL on Ubuntu 14.04
https://digitalocean.com/community/tutorials/how-to-install-and-use-postgresql-on-ubuntu-14-04
И это тоже в шапку. Или запилите годный установочный гайд сами.
>И это тоже в шапку. Или запилите годный установочный гайд сами.
Например:
Ставим 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".
Готово.
will_paginate
Kaminari
В рельсах нет тру-тдд и быть не может, потому что юнит-тесты не предусмотрены из коробки. Нужно бороться с фреймворком, вводить service/query/presenter/validator объекты, чтобы было нормальное разделение обязанностей, а не огромная куча спагетти
>взвалить на разработчика работу тестировщика
Если разработчик пишет нерабочий код, который нужно отдельно тестировать, то нахуй такой разработчик нужен? Что он разрабатывает?
>Если разработчик пишет нерабочий код, который нужно отдельно тестировать, то нахуй такой разработчик нужен? Что он разрабатывает?
Может он вручную тестирует или небольшими говнокодиками. Вместо всяких кукумберов и прочих анально-навязываемых вещей, которые не оплачиваются.
>то нахуй такой разработчик нужен?
Чтобы писать нескончаемый говнокод. косарь баксов разрабу на лапу, а 4 косаря себе в карман. Галеры так и плывут.
> Нужно бороться с фреймворком
Чот рельсы такие жирные стали. Последний раз заглядывал в версию 2 и 3 и было няшно, а сейчас посмотрел и охуел.
А зачем он тестирует вручную, если можно написать автоматизированный тест, который будет работать всегда, и сейчас, и через десять минут, и через неделю, когда потребуется что-то переделать? И как он может быть уверен, что протестированный минуту назад функционал не сломался после добавления строчки кода? Прогонять все тесты вручную каждый раз? Это то же самое тестирование, только контр-продуктивное и ненадежное.
> которые не оплачиваются
Твое рабочее время не оплачивается или что? Тебе платят не за "напиши там чет в блоноте", а за "напиши там чет в блокноте и чтобы работало".
>>979573
По сути нихуя не поменялось.
Двачую, рубипидоров заставляют покрывать свой и не только код тестами и сверху хуй доплачивают...
Ой, эти вообще квинтессенция айти-рабов.
Нет. Elixir в принципе для другого и вряд-ли когда-то получит преимущества RoR.
RoR как был для быстрого прототипирования лучшим и наиболее быстрым инструментом, так и остался.
http://blog.bigbinary.com/2017/04/24/rails-5-1-has-introduced-date-all_day-helper.html
А как ты раньше жил без Date#all_day helper, а? а? а?
>лучшим и наиболее быстрым
Хуита, уже год прототипирую свои велосипеды на elixir + phoenix или на haskell, по скорости от рельс отличий не заметил. И перекат с рельс тоже вполне себе реальность, знаю уже несколько рубистов укатившихся кто-куда, в основном на жс, яву и го, даже на эликсир у одного получилось укатиться (работы пока маловато). Да и я сам, например, уже тот же год на руби только на работе пишу и следующая работа будет 100% не на руби.
мимочетырегоданаруби-кун
Захуячить MVP на руби проще чем на других стеках.
>>980026
>по скорости от рельс отличий не заметил
Скорее всего это значит что просто медленно вел разработку на RoR. Просто из базиса языка и подходов, писать на фениксе сложнее.
А слушать про "перекаты" - мне каждый раз доставляет не иллюзорное удовольствие. Пока одни используют подходящие под задачу технологии, другие расценивают переход на другую технологию как явление схожее со сменой миллениума.
http://rgho.st/8GtlFQfVp
Чем нужно заниматься:
Работать в команде
Анализировать требования
Проектировать решения у доски и в коде
Писать автоматизированные тесты
Оформлять разработческую документацию
Что нам хотелось бы видеть в тебе:
Уровень — middle/senior developer;
Опыт разработки на Ruby, Rails от 3-х лет;
Умение писать модульные и интеграционные тесты на Rspec, Cucumber;
Знание глубинных механизмов хранения и оптимизации PostgresSQL;
Опыт работы с Docker;
Опыт работы с очередями сообщений Sidekiq, RabbitMQ;
Умение проектировать, писать чистый код;
Должен быть с Linux на “ты”
Уметь автоматизировать рутинные задачи;
Желательно иметь опыт развертывания приложений с помощью Puppet, Chef, Ansible, bash;
Знание JS фреймворков и техник будет огромным плюсом (особенно React.js);
Наличие опенсорс портфолио (будет плюсом).
Полный текст тут: https://hh.ru/vacancy/20345159
Описание отдаёт ЧСВ человеком, который её писал. Ну и плюс коммерческой разработки на рубях у меня нету, ибо в наших краях только пхп-гопота обитает. Каков шанс соснуть на собеседовании? И стоит ли лезть в подобное говно?
>Описание отдаёт ЧСВ человеком, который её писал
Проблема в твоем восприятии
>Ну и плюс коммерческой разработки на рубях у меня нету
Если умеешь все описанное - похуй. Умеешь = сделал как минимум один проект "для себя" с использованием технологии.
>Каков шанс соснуть на собеседовании?
Велик
>И стоит ли лезть в подобное говно?
Определенно да (опыт)
обычная вакансия как по мне, ничем относительно других не примечательна
Сходи посмотри, вакансия попахивает чуток, но это Казахстан, и у вас там не такой большой выбор, чтобы придираться к мелочам типа повторов
> Писать автоматизированные тесты
> Умение писать модульные и интеграционные тесты на Rspec, Cucumber;
Или бибилиотекам типа > Cucumber
И т.д. ЧСВ особого незаметил, требования для middle/senior как требования.
Ну я на мида не потяну, наверное. Там слишком много смуззи вроде докера/чиф/кукумба. Я, конечно, знаю, что они из себя представляют. Но работать с ними мне не было нужды.
>Просто из базиса языка и подходов, писать на фениксе сложнее.
Это что за такая разница? Тотальная иммутабельность только добавляет удобства, а о всяких эрланговых процессах и прочих сложностях в фениксе, при желание, можно вообще не думать. Единственное, что мне проходит в голову это возможность в рельсах по-быстрому нахуярить лапшу из before/after_save и их друзей + логики в контроллеры напихать (хотя это и в фениксе можно), но так делать даже в MVP зашквар делать.
>Пока одни используют подходящие под задачу технологии
Множество задач решаемых руби/рельсами является подмножеством множества задач решаемых эликсиром/фениксом.
>>980306
Нормально. По моим постам, наверное, можно подумать, что я очень не люблю руби, но это на так, я просто разочарован его темпами и направлением развития. Матц обещает руби 3 в хрен знает каком году, гильды выглядят прямо скажем не очень, опциональную типизацию вообще не факт, что запилят, да и прибавки скорости всего в 3 раза, учитывая насколько руби тормозной сейчас, будет маловато. В рельсах с каждом релизом добавляют пару небольших хороших фич и кучу хуйни уровня suppress. Вот из-за всего этого и возникает чувство "пошло оно все, я съебывая".
Может года полтора назад я бы с тобой и согласился, но сейчас давай-ка приведи несколько примеров чего такого уникального есть в рубийной экосистеме?
Cравнивая с чем? Ну давай тыкну пальцем в небо, и предположу, что половину платежек и/или библиотек для рассылки смс (локализованных под рыночек) ты не найдешь и будешь пилить сам.
>Это что за такая разница
>Тотальная иммутабельность только добавляет удобства
И отсутствие стейта, которое для полноформатных приложений не шибко то и плюс.
>>980766
Ну кстати если говорить конкретно про эликсир, то например с MQ все не то чтобы очень хорошо. Часть библиотек в начальном этапе, часть уже в полузабвении.
Суть такова, хочу чтобы у меня был рельсовый апп, в котором в одну вьюшку маунтится весь мой реактовый апп, и больше ничего из ассет пайплайна не бралось, чтобы реактоговно все жило отдельно, собиралось вебпаком, юзало нод модули и слало реквесты например через аксиос на рельсовый сервер с которого и засервилось. То есть чтобы это говно было в одном аппе но как я хочу. И чтобы я мог развернуть на хероке или например деплоить с капистрано.
Это вообще запиливаемо или нужно ебаться с двумя аппами?
Сорри за корявый язык, но я уже умер в нутри с этих приколов
В 5.1 обещают добавить чуть-чуть смазки для программиста, так что держись! http://nithinbekal.com/posts/rails-5.1-features/
Ща чекнул, у них одна ишью осталась. Было бы здорово если бы завтра утром выкатили, но это все мои влажные
>То есть чтобы это говно было в одном аппе но как я хочу
Будет гемор. Разделяй на два разных.
зчем, что бы webpack не запускать в отдельном терминале?
капистрано не сложно, запустить две команды: npm install и webpack.
Посмотрим сколько хуев натащу в рот но пока делает что я хотел
Пробовал и puts " " , и puts "\s\s" - нихуя. Что блядь за недружелюбность?
У меня вновь проблема, не 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]
Нашел ошибку, исправил, словил бан.
На других я/п то же самое. Валютные курсы, индия, чо ты хотел...
params.require(:blah).transform_keys(&:underscore).permit(...)
а в jbuilder есть параметр для обратной трансформации в camelCase.
Это только для рельсы, если используешь Active* что-то там вне рельсы, то я тебя хочу обоссать.
Ты bunde install забыл похоже
Все 56 минут можно заключить в одну фразу -
"пользуйтесь правилами бухучета". Больше полезной для слушателя информации нет. Ну зато он молодец какой, серьезный парень, с докладом выступил, не хуе мое.
Кстати, двачеаноны, может кто-нибудь рассказать в чем суть системы двойной записи. Залип сегодня на видосах, смотрел туториальчики, но так и не понял в чем смысл. Ведут счета, каждую проводку отражают на каждом счете, если просуммировать дебет-кредит, то они сойдутся, легко проверять корректность (читаемость при этом сомнительная какая-то). Но суть всей этой возни не понятна, тем более в современных условиях.
В СНГ рельсы есть в Москве и Киеве. Ну и ещё немножко в Питере. Всё. Больше можешь даже не пытаться. Вкатился на рельсы, теперь вот думаю, куда укатываться. От js дрисни течёт кровь из глаз, пхп оплачивается как труд копирайтера. Хз, что делать.
так точно.
короче, у рельсов, params - возвращает параметры запроса. это блять метод наследуется от базового контроллера. но это не Hash, нет метода deep_transform_keys. есть просто transform_keys, не рекурсивный.
http://stackoverflow.com/questions/17240106/what-is-the-best-way-to-convert-all-controller-params-from-camelcase-to-snake-ca
как можно додуматься до этого^^^ и не додуматься до пикрелейтед?
пикрел будет работать всегда.
Олигофрен, веб-макака. Кроме рельсов php и js ни до чего не допер.
Особенно смешно когда рельсы это 150k+, js до 220к.
Дебич. params это strong parameters. Которые в свою очередь наследуются от HashWithIndifferentAccess, у которого есть все свойства рельсового хэша.
https://github.com/rails/rails/blob/v5.1.0/actionpack/lib/action_controller/metal/strong_parameters.rb#L228
Ну раз ты сказал, то точно так.
В Арбат Престиж.
ответ приходит такой
{"ret_msg"=>"Approved", "session_id"=>"A1C7DFC2EBC642429CD08831B80605EC", "timestamp"=>"5/4/2017 10:09:40 AM"}, где "session_id" ключ для других запросов
Сначала я вообще не мог понять разницу - например, в модели я определил коллбек after_create с отправкой письма нет, я так не делаю или написал обсервер, который отправляет письмо и вызвал после создания. Ни какой разницы, кроме того, что код в другом месте.
Потом я нашел 2 тезиса:
1. Коллбек является частью объекта и потому сильно с ним связан. Если реализовывать в нем логику не относящуюся к объекту, то нарушается принцип SRP.
2. Observer pattern предусматривает механизм регистрации обсерверов - то есть мы не только их уносим из объекта, но и можем менять их состав. То есть это масштабируемость.
Посоны, а какая еще есть принципиальная разница? Кто понимает архитектуру, объясните суть этих вещей.
Не знаю, о чем вы там говорили, но если вопрос о бухгалтерии, то суть в том, что каждая транзакция дублируется и идет отдельным путем. Если в итоге сумма всех транзакций выходит в ноль, то все правильно и можно подтверждать. Если нет, то ищешь ошибку. Это как перепроверка или тестирование, гарантия того, что нигде не обосрался и не ввел неправильное число. Потому что если обосрался и ввел лишний нолик, то это стоит компании дохуища бабла, а ты уезжаешь на бутылку.
>>984673
Ну как обычно сессии хранят? Либо на стороне клиента, либо на стороне сервера. Если на стороне клиента - шифруешь всю нужную информацию(в том числе дату) ключом, отдаешь клиенту зашифрованную строку, а он тебе ее отдает обратно при запросах. Расшифровываешь ключом, сверяешь дату и обрабатываешь запрос. На стороне сервера - вся информация в файлике(БД).
>>984828
В рельсах - шо то хуйня, шо это хуйня. Советую прочитать про Service Objects, а не лепить спагетти из обсерверов с колбэками.
> суть в том, что каждая транзакция дублируется и идет отдельным путем.
>Если в итоге сумма всех транзакций выходит в ноль, то все правильно и можно подтверждать
Анон, если ты разбираешься, то объясни более понятно.
Что понял я:
- Сначала была простая запись, это был просто лог всех операций.
- Потом Лука описал двойную запись, где появились счета и понятия дебета/кредита.
- Как объясняют это в литература, мол это позволяет избегать ошибки очевидно, что это чисто ручной фактор и, что типа гораздо важнее, гибко строить аналитику.
- Система дошла до наших дней и используется во всем мире, являясь единственным стандартом.
Вот я не понимаю, в условиях IT, что дает двойная запись? Такое ощущение, что с современной точки зрения главная идея двойной записи - понятие счета. Что дают понятия дебета и кредита и дублирование их при каждой операции на каждом счете, не понимаю.
> Вот я не понимаю, в условиях IT, что дает двойная запись? Такое ощущение, что с современной точки зрения главная идея двойной записи - понятие счета. Что дают понятия дебета и кредита и дублирование их при каждой операции на каждом счете, не понимаю.
Проследуй лучше в 1С тред, там тебе лучше пояснят зачем это нужно и как с этим мириться.
мимо
1.Ставил ли кто себе это https://msdn.microsoft.com/en-us/commandline/wsl/about если да, то как ощущения?
2. Почему на руби не пытаются поднять нейросеть?
Или если есть такое, линконите, а?
>что дает двойная запись
Перепроверка при наборе цифр руками. Если все транзакции в кампуктере и руками туда ничего не вводится, то я тоже не вижу практического смысла. Но в бухгалтерском учете это имеет статус закона, либо хуяришь double-entry, либо ты не бухгалтер и идешь нахуй. Это как если бы врач сказал "ну нахуя мне давать клятву гиппократа, >2017 год на дворе".
Я вот недавно вкатываюсь и возникла у меня проблема с YAML/Psych: есть двумерный массив, строка и объект Process::status и вот он как бы не очень в yaml итоговый пролезает (при лоаде в nil), можно ли вложенный в массив объект тоже пропихнуть в yaml?
>Почему на руби не пытаются поднять нейросеть?
Вопрос уровня "Почему отвёрткой не пытаются забивать гвозди?". Для всего есть свои инструменты, и задачи руби - клепать круды, не более.
Объект нельзя сериализовать. Можно только маршализировать, через Marshal.dump.
Сериализатор ничего не знает о типах объектов, соотв-но раскладывает в свои примитивы(которые обычно стандартизированы - число, строка, бул, массив, ассоциативный массив).
>и задачи руби - клепать круды, не более.
Поэтому у нас есть АБС на рубях. Потому что круды, да?
Я понимаю, что переходить по ссылкам с двача фу, и все такое, но что по первому вопросу?
Ставил ли кто себе Оффициальный баш под виндовс и как оно вам?
Говно, тупой сигвиновский порт.
>2. Почему на руби не пытаются поднять нейросеть?
https://www.crondose.com/2016/12/practical-machine-learning-ruby/?utm_campaign=Revue newsletter&utm_medium=Newsletter&utm_source=revue
>https://www.crondose.com/2016/12/practical-machine-learning-ruby/
Там тащемта ничего нет про нейросети, в его списке другие ML-алгоритмы приведены, но нейросети.
>эликсира
всякие сетевые хуйлоады c трафиком 300к/с
>кристала
все остальное, где функциональщина будет не к месту
на эликсир + феникс достаточно удобно разрабатывать обычный веб в духе рельс
>всякие сетевые хуйлоады c трафиком 300к/с
Ты походу путаешь с Go или Scala.
Эликсир если разобраться он для задач где важна стабильность и consistency.
Но я с тобой в корне не согласен. Функциональщина есть и в нативных рубях, причем если подумать - то ее довольно много.
С другой точки зрения, вся разница функционального подхода и объектно-ориентированного в том, что во втором случае у тебя есть(при неправильной методике разработки) есть куча stateful говна, которое существует только потому что разработчик не придумал способа лучше.
Если ты возьмешь стандартизированный образец модели Request-Response и разложишь ее на составляющие - ты увидишь абсолютно ту же матрешку последовательных вызовов себя-куда-то, которую ты встретишь в функциональной парадигме. За тем лишь исключением, что в OOP у тебя будет гора обвязочного хлама существующего параллельно стеку вызовов функций.
К концу года хотят 1.0 версию выпустить.
По мне выглядит вкусно, кристалл - возможность расширить стек для казуального байтоебства (Не го же учить), и всего за полцены.
Эликсир где-то мимо.
Может кто-нибудь дать ссылку на хороший гайд по модулям, перменным, приватности и всем такому? Сложная тема с множеством нюансов.
Ну например, что делает module_function и как можно сделать тоже самое без нее?
Но описание я могу посмотреть и в документации - делает доступным метод для вызова на модуле, а так же доступными как приватные методы при миксовании. При этом методы являются копиями и могут изменяться независимо.
Но такое формальное объяснение не объясняет сути, его просто нужно запомнить. Как можно запомнить что делает include/extend, а можно знать, что руби создает анонимные классы для объекта/класса объекта.
Формальный ответ про include/extend простой, а реально тема большая и сложная.
> как можно сделать тоже самое без нее
набросал на коленке https://pastebin.com/FCwyErum
> Как можно запомнить что делает include/extend,
Почитай хабрапарашу, все разжевано, есть список. доп.литературы в комментах https://habrahabr.ru/post/143483
> анонимные классы
ancestor, а не просто анонимный класс.
Тема ни разу не сложная. И вот что я тебе скажу. В практике - module_function не применяется.
Если требуется Mixin - используется include/prepend/append.
Если требуется синглтон - используется классический def self.
Если требуется динамическое объявление - используется define_method/define_singleton_method.
Ах ты наверное решил просто теорию подрочить, ну тогда удачи.
Во-первых, как он работает?
Во-вторых, ты че, предлагаешь пацану при каждом запросе лезть в гугл геокодить? Ты ебанулся блять?
Бтв, можешь погуглить в сторону Accept-Language request HTTP header, геолокация там вообще не используется.
Суть задачи такова:
# 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.
Сап, аноны. Что бы работать с БД мне нужно сделать active records для необходимых таблиц и связи так же как и в БД? Как можно обойтись без этих records и просто делать запросы sql ? (postgresql)
Звучит вроди здорово, потоки без GIL. Рельсы при этом потокобезопасны. Можно брать и использовать для нового проекта. Но что-то не встречал, чтобы его использовали на практике. Почему?
Потому что такая хуйня никогда не имеет успеха. Все эти трансляторы в JS с каких-либо других языков, приблуды, чтобы посадить на JVM (BEAM или любую другую), трансляторы в С (как Nim) - от лукавого.
Например, для меня это какая-то мутная приблуда, которая обязательно прибавит дополнительный Лэйер, соответственно, плюс новых багов, нового пердолинга и т.д. плюс хз, хорошо ли ее мейнтейнят и не бросят ли.
Короче, дополнительный источник головной боли.
Причем тут транслятор, если JRuby нативен?
>для меня это какая-то мутная приблуда
Ну то что у тебя мозгов не хватило допереть это в целом объяснимо.
Назвать elixir (а именно его ты имел ввиду упоминая BEAM) приблудой и транслятором это ебанись просто.
>>989008
Потому что зоопарк гемов оптимизированных для работы с JRuby ограничен и приходится искать подходящий вариант либо костыли наворачивать.
Второй проблемой является иная парадигма разработки требуемая от разработчика. Понимание особенностей и преимуществ JVM и грамотное их использование.
еще есть rubinius.
но я не смог его установить, падает с segmentation fault. и нет желания компаться в этом.
до этого тоже думал, вот же есть rubinius, если нужно будет, то...
1. Можно ли использовать Rails для визуализации этих данных, целесообразно ли это?
2. Как правильно записывать данные, прямо из модуля парсинга на си++ коннектится в БД или через web интерфейс, который Rails предоставляет?
Model.primary_key = 'primary_id'
m = Model.new(id: 123)
m.primary_id
=> 123
m.primary_id = 321
m.id
=> 321
у меня 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
ооо
>eager_load
>получаю 2 запроса
Чего? Какие 2 запроса, если eager_load это версия с LEFT OUTER JOIN, делающая один запрос?
>мне нужны именно 10 строк сджойненой таблицы
>>992995
А ты чего несешь? То есть так кончено, но наоборот:
Table.joins(:model).limit(10)
>>991890
А при чем тут рельсы вообще и какая тебе визуализация нужна? Если ты про веб-морду, то используй. В базу пиши как удобнее.
> где мне нужны именно 10 строк сджойненой таблицы
>Table.joins(:model).limit(10)
Просто охуительное решение.
(Я неоднократно работал с AMS и понимаю что делают оба гема, но не могу осмыслить их суть в архитектурном плане и к какому паттерну они относятся)
https://rubygems.org/gems/stylus-source
https://rubygems.org/gems/stylus
* https://rubygems.org/gems/stylus_rails
Сасс категорически не нравится.
Есть две модели Bitches - шлюхи, сосущие хуи и Сlients - клиенты у которых шлюхи хуйцы уже соснули.
Вывожу шлюх в bitch_controoler в виде списка, нужно что бы по нажатию на строчку, появлялся список клиентов шлюхи. У меня отношения стоят что у одной шлюхи может быть много клиентов(так криво сделал, но пока норм)
Идея только одна, вызывать client_controller, метод show, передавая в него id шлюхи и по id шлюхи делать выборку из Clients
Во-первых, а почему гем в 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
>Вебпак
Что это и с чем его едят? Я только начинаю изучать рельсы.
Что можешь посоветовать на счет стайлуса?
Сам не знаю что это, какой-то новый сборщик в js мире, типа стандарт. И вроде как его добавили в новую рельсу. Чему я рад если это так, потому что весь этот ассетс пайплайн такой бред, что пиздец просто - чтобы прикрутить какую-нибудь фронтовую библиотеку, ее нужно специально адаптировать под рельсы.
По счет стилуса ничего не посоветую, третий раз в жизни о нем слышу и нахуй он нужен. Ты же не фронтовик, чтобы выбирать себе инструмент для достижения дзена, у тебя другие задачи, а в смежных областях лучше придерживаться мейнстрима.
> чтобы прикрутить какую-нибудь фронтовую библиотеку, ее нужно специально адаптировать под рельсы.
Ты наркоман полный? Адаптировать это положить в assets/js и сделать include в манифесте?
Webpack в рамках рельсовых приложений тот еще бред. Сама парадигма разделения frontend/backend приложений (для целей коих и служит вебпак и прочие) подразумевает что не имеет смысла включать фронт в рельсы, это должно быть отдельное клиентское JS приложение.
> Адаптировать это положить в assets/js и сделать include в манифесте?
Хуй знает что тебе ответить. Очевидно что ты и этого никогда не делал.
>Сама парадигма разделения frontend/backend приложений
>(для целей коих и служит вебпак и прочие)
Значение знаешь?
Подскажи, пожалуйста, как можно реализовать функционал нескольких профилей используя devise?
Например, есть пользователь Employer, и есть Jobseeker. Профили у них существенно разделяются. Что лучше сделать? Смотрел STI, но это говно какое-то.
Хочу, чтоб при регистрации выбирался тип пользователя, и от этого уже ему создавалось поле либо в таблице JobseekerInfo либо в EmployerInfo.
Подскажи, пожалуйста, я отчаиваюсь.
>Хуй знает что тебе ответить. Очевидно что ты и этого никогда не делал.
Делал и сразу забил на это дело и разнес приложение на две раздельно живущие составляющие.
>Значение знаешь?
Козырнуть снобизмом не выйдет, мне похуй так-то.
у js есть тоже свой пакетный управляющий, как bundler у руби. с ним не нужно копипастить обновления js библиотек. ах да, у js библиотек тоже есть зависимости.
>>997108
примеры есть, инфа 100%.
я не помню, кажется я добавлял два маршрута для разных моделей.
но там есть какой-то метдо, типа
redirect_on_sign_in
или сгенирируй devise контроллеры и будет видно.
>примеры есть, инфа 100%.
Если есть возможность - скинь пожалуйста. Очень важно, я правда искал, замахался уже.
>у js есть тоже свой пакетный управляющий
https://sheerdevelopment.com/posts/using-yarn-with-rails
И никаких вебпаков, интеграций с рельсами и прочего.
Имеется линукс и руби 2.1.5. Нужно обновить до 2.1.9. Как это сделать? Гугл молчит.
rbenv/rvm
> сделают на стэке WP+JQ за две недели и 10к
ссылки на макак в студию, а то пиздишь ты походу
Исключили? Тогда скоро у тебя будет веселая, интересная, насыщенная жизнь. Научишься драить очки, познакомишься с горячими джигитами Дагой и Магой, которые помогут тебе расстаться с девственностью. Зачем какой-то гитхаб?
Должно хватить фотки студбилета действительного. Найди кого-нибудь в ближайшем университете и попроси студенческий на минуту.
>>998553
После универа по-прежнему нужно в армию идти, военная кафедра в общем случае либо проплачена, либо отсутствует. У меня треть группы таких же затравленных заучек, считающих, что раз они круглыми сутками изучают бесполезные предметы, то и все остальные должны. Иначе "армия, собирать лужи в ведро, подтираться колючей проволокой" и прочие ехидные насмешки над теми, кого отчислили.
В интернете найди фотографию студенческого билета и отфотошопь. Они сильно не рассматривают. Мне через 15 минут апрув пришел.
Идея неплохая, реализация не оч.
сорян, тупанл. Имел в виду, как деды в рельсах вьюих обновляли, при изменении данных модели.
тебе для всех юзеров обновить в реалтайме надо или одному? если одному то аякс, если всем то всякие костыли типа ActionController::Live или вебсокеты
На чем поднять вебсокет сервер для существуещего рельсоприложения? Помню когда-то пользовался websocket-rails, впечатления не самые лучшие. На пятые рельсы переползать пока нет возможности, так что их встроенную приблуду не предлгайте.
Я бы взял faye-websocket он вроде позволяет прямо внутри рельсового процесса держать вебсокет-сервер. Сам я использовал только em-websocket и все было отлично, но он не обновлялся с 2014 и faye-websocket выглядит по-свежее.
>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/
Тут написано гораздо лучше и нет лишней воды.
у юзера есть страница с сообщениями от приборов, приборы кладут в базу, я рельсой выбираю данные и формируют список сообщений, в общем пришло новое сообщение в БД, значит мне надо "наверное" постоянно мониторить БД на наличие новых сообщений или просто ее перерисовывать
А зачем писать код, который ломается от добавления строки кода, м? single responsibility как бы. Имплементировал модуль, тестанул в сосноли или вручную, забыл.
>А зачем он тестирует вручную, если можно написать автоматизированный тест,
Дешевле нанять Машку, чтобы вручную кликала, ты заебешься на каждый кейс писать тесты, да и дорого это.
>Имплементировал модуль, тестанул в сосноли или вручную, забыл.
Запахло интернет-магазинами и перепилами редмайна.
Нормальный SOLID от TDD неотделим, без TDD все твои SRP отправляются прямиком нахуй. Если опыта нет, то нормальный код ты не напишешь. А если есть, то знаешь, что нормального поддерживаемого кода не бывает без тестов.
>>1001359
Машка выполняет работу компьютера раз за разом и от количества машек и тестов, которые они должны прогонять, цена их труда растет по экспоненте. И нет, труд человека никогда не будет дешевле компьютера, который тот же самый тест кейс прогоняет быстро, бесплатно и без ошибок.
QA - это профессия, которая существует только из-за ленивых непрофессиональных пидорасов-макак, типа тебя, которые даже блять! Не проверяют! Работу! Собственного! Кода! Вдумайся, пидорас, ты пишешь код и ты не знаешь, работает он или нет, не сломал ли он чего в системе. Какой ты нахуй программист, если то, что ты пишешь, не работает?
>Не проверяют! Работу! Собственного! Кода!
Диван, лол. Сам прграммист из-за замыленого взгляда и самолюбия творца не может беспрестрасно сломать и хакнуть свой код. Для деструктивной работы нужен специальный человек у которого задача ломать и проверять.
>Вдумайся, пидорас, ты пишешь код и ты не знаешь, работает он или нет, не сломал ли он чего в системе.
Диван х 2. Программист не думает в мастштабе всей системы и не может сразу телепатически сказать где чего отвалиось и какие подводные камни всплыли. Это отдельная задача следить за связаностью всей системы после написания кода в разных местах разными людьми.
Я хуй знает, проигрывать с дебила или принимать как должное и объяснять неопытному рельсоребенку на пальцах.
>самолюбия творца
Это самая блядская идея, которая особенно сильно проявляется в динамопараше, что якобы программист должен себя позиционировать не как software engineer, а как ТВАРЕЦ ГУМАНИТАРИЙ.
>сломать и хакнуть свой код
>писать тесты
Дядя, ты дебил?
>нужен специальный человек у которого задача ломать и проверять.
И этот человек, внезапно, не QA. QA ничего не ломает, у них задача подтвердить работу системы. Люди, которые берут систему предварительно как следует протестированную и готовую, вертят ее в попытках сломать и найти баги, с которыми может столкнуться пользователь, называются по-другому, и такое ручное "тестирование" вполне оправдано.
>не может сразу телепатически сказать где чего отвалиось и какие подводные камни всплыли
Для этого, хуесос, у тебя должны быть тесты. Которые ты прогоняешь одной консольной командой или хоткеем и сразу видишь, "где чего отвалилось".
>Это отдельная задача следить за связаностью всей системы после написания кода
Твоя ебаная задача - следить за работой своего быдлокода и за работой системы, которую ты написал/пишешь. Это не может быть чьей-то еще обязанностью, никто эту обязанность нормально выполнить не сможет, кроме программиста.
Наивный даун думает что писать тесты на фронт, под все 100500 версии браузеров дешевле чем нанять Машку. Иди нахуй писать тесты на свои абстрактные фасолины, подменщик понятий, ты мамкин.
Какие тесты на фронт, ебанутый? Я говорю про серверную логику, а не про "эта формочка отображается вот так, а в том браузере по-другому". UI в плане отображения вообще нет смысла тестировать, но это и должна быть одна из самых простых частей приложения, которая тупо парсит ответ сервера и расставляет его по местам на экране.
пишется один набор тестов и пускается из браузера.
как бы, раньше Машка: устанавливает дополнение к браузеру и пишет скрипты которые ей кликают и все делают.
сейчас наверное чет похожее по принципу.
>>1002554
это то, что люди видят.
ну и сейчас же это сложное дерьмо на тысячи строк js. там тоже самое, что и с серверной хуитой. тоже есть вью и модели и контроллеры. ток модели дергают данные с твоего http сервера, а не из субд.
правда, пока не знаю как эти react какахи тестировать.
тесты - часть работы, за них платят деньги.
>как эти react какахи тестировать.
Если там есть какая-то логика, которая не связана с отображением, то так же, как и везде. Выносишь логику - тестируешь логику. Другое дело, конечно, что 90% фронтенд JS параши - это еще больший спагетти-пиздец, чем рельсы. А уж сколько "программных творцов", которые про тесты с архитектурой и краем уха не слышали, охуеешь.
Пара вопросов от новичка.
1. Обязательно ли нужен Линух? Да, на Винде проблемы, но есть же всякие сайты типа c9.io, так что можно комфортно ебаться с рельсами прямо в облаке.
2. Поясните за mailer в рельсах.
Видеоуроки с рутрекера по запиливанию своего говносайта на рельсах рекомендуют устанавливать для подверждения регистрации по мылу какие-то сторонние гемы, которым нужно вводить номер банковской карты. Я не хочу вводить такие свои данные. What do?
3. Зачем нужен json? Я нихуя не понял.
Вот это, если не ошибаюсь (я оптом дохуя всего скачал):
Udemy - The Complete Ruby on Rails Developer Course
https://rutracker.org/forum/viewtopic.php?t=5105361
Ещё просмотрел какой-то из Rails for Zombies - там тоже говорят, мол, устанавливай какие-то гемы, которые требуют платного аккаунта.
Дичь какая-то. Возьми Michael Hartl - Ruby on rails tutorial.
1. Если ты хочешь дальше продолжить работать с руби и созданием сайтов, то обязательно, на виндах никто не крутит сайты и точка.
Ты пишешь не только под какой-то язык, но и под платформу и линукс в том числе.
На винде можно поиграть и рельса даже как-то заработает, но всё это баловство будет работать пока ты модули какие-то сторонние не захочешь попробовать.
Другое дело, что линукс не обязательно себе на десктоп ставить, достаточно просто научить работать в виртуальной машине и командной строке и заодно избавиться от предубеждения о том, что линуксовая командная строка это типа ДОСОВСКОЕ окно из винды.
Кстати сходная ситуация с каким-нибудь питоном.
А C# как раз таки на винде лучше катит, так что если не можешь без винды жить, то го учить C#.
2. Сам пока не дошёл до этого)))
3. JSON нужен для того чтобы в индустрии был какой-то формат передачи данных между сервисами который будет понятен всем. Для этой же цели используется XML и просто текстовые файлы некого доморощенного формата. Один формат нужен для того, чтобы тебе не приходилось каждый раз писать синтаксический анализатор нового формата и чтобы ты сразу мог строить некую таблицу с ключами и значениями.
Ну вот как-то так примерно.
Привет шахтёрам из солнечного дотнета. Как себя чувствует экосистема раби? Есть ли работа? Есть ли фриланс? Работают ли стартапы с раби или она осталась только в легаси, которое не перекатилось на что-нибудь?
Я про реальный мир говорю, а не какие-то экстремальные случаи типа mono с огрызками от МС (оно как бы работает, но поддержки на это не будет или только на каком-нибудь ушибленом по голове редхате).
Ага, видимо поэтому я работу найти не могу уже 2 месяца.
3 года опыта, 1 проект в качестве лида
У тебя похоже в резюме что-то не так или еще какие-то проблемы. В начале года за 2 недели получил 4 оффера. 4 года опыта.
На стаковерфлоу могут и не ответить, так что запощу ещё сюда с небольшой ремаркой. Я таки нагуглил один похожий вопрос, там было предложено возможное решение, я его попробовал применить, но это ни к чему не привело:
https://github.com/Groogy/rbSFML/issues/22
Поэтому наверное Gett ищет уже больше 7 месяцев, Wheely больше полугода, Поток открыл вакансии.
Инсейлс джуниоров ищет, Мили по прежнему ищут в свой финстартап.
Гарант, интерфакс, рамблер.
Не можешь найти потому что дурень видимо.
Так предлагайте бабос нормальный - найдете сразу же. Вечно рашкинские сео жалуются, что КАДРОВ НЕТ, а сами зп предлагают в 4 раза ниже рыночной
>лид
>3х летним опытом
А раньше с тремя годами опыта и помидором-то не все соглашались считать.
Если кто может не в курсе, на пике Инсейлс. Хотите попилить легаси-говно в таком курятнике? Юр а велком.
По поводу остальных:
>Gett ищет уже больше 7 месяцев, Wheely больше полугода
Видел только гетт где-то мелькнул один раз, приглашая вроде как на удаленку, виз перфект инглиш скилс.
Второго вообще не видел.
>Мили по прежнему ищут в свой финстартап. Поток открыл вакансии, интерфакс,
Не кажется странным что их вакансии уже чуть-ли не год висят? Учитель дурак или ученики плохие? Опять же везде доработка легаси, а в случае с интерфаксом так еще и каких-то гос-порталов.
>Гарант
Ну это вообще пушка.
Алсо за последнее время было только пара хороших вакансий - ведомости и шармер. Они закрыли их за 2 недели.
Не две недели. У ведомостей позиция открыта уже очень давно. Я к ним ходил еще в 2016.
>>1008882
Gett набирали в ДС с августа, в феврале в ДС приехала команда из зарубежа и начали интервьюировать самостоятельно.
Мили - у них новый проект с веб2.0, года там точно нет.
У интерфакса не госпортал.
Ну не надо путать "очень давно открыта" и "была вакансия в 2016". Я тоже помню, что в 2016 они искали рубиста. И тоже это было что-то около нескольких недель. А чего не пошел, отказали?
По поводу гетт не знаю. Но они ищут через хрюш почему-то (мне рассылка падает от хрюш). Блять, хотел бы к ним попроситься, если бы не ебаный английский.
Мили сейчас конкретно не висят, но я помню они очень долго искали.
А у интерфакса я сам был на собесе, так что не рассказывай.
>>1008882
>>1008989
О, анонимусы, вы похоже разбираетесь в рынке труда. Скажите, какие есть сейчас интересные вакансии? Вот я открывал хедхантер, видел в частности те про которые вы пишите, но они достаточно унылые все, потому что сводятся к поддержке и рефакторингу. Кто занимается созданием? Или кто занимается большими системами? Вот все хотят хайлоад(тм), а где его брать-то?
Вот и тексты вакансий кагбэ намекают, всем нам.
> для рельсов чего брать, angular или react? А то эти js фреймворки успеваются появиться раньше чем я и их изучаю
Разве выбор фронта зависит от того, что у тебя на бэке? Я на vue.js делаю.
я на си++ за деньги пишу с 2009, мне до этих фреймворков всю жизнь как до луны было, вот последние три года параллельно в веб вкатываются
В рельсах же какое-то свое говно для фронта?
HAML вместо HTML, SASS вместо CSS, CoffeeScript вместо JavaScript. Все не как у людей.
да не, это просто шаблонизаторы, тот же jade php это заимствованый slim из рельс.
Учатся за пару дней, кофескрипт по желанию.
JQUERY и всякая хуета из бутстрап
Че за мили? Нагуглились какие микрозаймы, в вакансиях у них ничего нет.
А вот еще вопрос, какой адекватный уровень зп в ДС для мидла-сеньора?
>Че за мили? Нагуглились какие микрозаймы, в вакансиях у них ничего нет.
Веб2.0 это они же.
>А вот еще вопрос, какой адекватный уровень зп в ДС для мидла-сеньора?
Смотря что ты вкладываешь в понятие "мидл сеньор".
Собственно у меня есть набор переменных которые нужно сохранять в файлы и загружать из них, но я тупенький и у меня не хватает мозгов понять как можно всё это через итератор организовать, а очень хочется отдраить этот код, потому что файлов будет больше.
Затруднения у меня вызывает непонимание того как увязать имя переменной с именем файла в каком-нибудь ассоциативном массиве или хеше, особенно в случае load, когда в переменную надо загружать данные из файла.
Не запускать while/until/step и рвать его по условию, а именно запустить цикл от одного числа до другого, а потом в процессе второе число подкрутить?
Исключительно из эстетических соображений интересуюсь.
Сразу вдогонку, из эстетических соображений, какой из вариантов оставить? выкинуть оба нахуй
max = get_page(1)
something
2.upto(max).each do |iteration|
rape_all_the_babies(get_page(iteration))
end
>Смотря что ты вкладываешь в понятие "мидл сеньор".
Давай без вот этих виляний хвостом.
Какая нормальная зарплата для специалиста с опытом коммерческой разарботки несколько лет?
Оу, вот это прикольно на самом деле, спасибо!
Ты по первой странице rape_all_the_babies забыл долбануть.
Забей, там на деле чуть больше строк, и повторять кусок кода отдельно перед циклом вообще не прикольно получается. И в функцию он не выносится нормально, нужно несколько параметров передавать, несколько значений возвращать, только больше навала получается. Но всё равно спасибо.
Я видел имбецилов которые имели опыт в 5 лет и стояли на позиции тимлида, и новичков которые умели строить адекватную архитектуру.
Сейчас в ДС middle может пойти где-то на 140-150, нормальный senior с зачатками лида найдет 180-200к. Нормальный лид который еще не ушел в управление - 250k.
Ну мутные или нет - но деньги есть. Пусть сами по себе они и жадные довольно.
>что ты вкладываешь в понятие сеньор
>заебал вилять хвостом
>заебал путать мягкое с теплым
Определение дашь, просветленный?
Ну а в чем проблема то? документацию к хуйнянейм ты как читаешь? а конферецнции/cтатьи ?
чукча - не писатель, чукча - читатель
Фриланс?
Долго строить портфолио и доказывать опыт, фактически с нуля.
Работа из дома это не работа, я для себя понял. Слишком много отвлекающих факторов.
Много геморроя с налоговой, которая доебется до источников дохода из-за рубежа.
А вот с релокейтом я бы куда-нибудь перекатился.
Сам себя убедил в невозможности, кек.
Я на удаленке работаю уже полгода 30 часов в неделю, выходит 2к$ в месяц. С налоговой пока все в порядке, работаю легально через ИП. Вся прелесть в том что, я работаю на постоянной работе, но через Upwork, в итоге профиль нехило раскачивается.
>>1011208
Ну по хорошему оно у тебя всегда должно быть. даже если ты работаешь в конторе. что то на гитхабе и пара отзывов на линкедине я думаю сойдут.
Я спокойной работаю из дома уже 1.4 года. По 5 часов каждый день. никаих проблем нет.
Про налоговую мне какжеться это байки с двача. мне работо датель просто закидывет на пейонер около 2к долларов каждый месяц. никакой налоговой нет.
ну и как сказал анон выше Ремоут > фриланс
>работаю легально через ИП
>upwork
Каким образом твое ИП имеет вес для компании работающей в другой стране?
>Я спокойной работаю из дома уже 1.4 года. По 5 часов каждый день. никаих проблем нет.
Я попробовал несколько месяцев и понял что удаленка не для меня. Периодически по надобности бывают потребности поработать из дома, но не более.
Я работаю через Upwork на постоянке, для компании нет никакого дела есть у меня ИП или нет - они просто закидывают деньги на мой счет в upwork'e дальше я уже сам ебусь с их выводом, ИП зарегал, чтобы налоговая не взяла меня за жопу о том, откуда у меня деньги. Я живу в регионе, где действуют налоговые льготы - 0% первые 3 года.
Бл#, мне с даже больше нравится... Что со мной не так???
Что надо делать в этой ситуации?
>Could not find rake-10.4.2 in any of the sources
Run bundle install to install missing gems.
Если можно - по шагам.
мимо-js-пидор
bundle install в папке с gemfile
А потом УСН будешь делать или как?
> не прочитал до конца нет одной книги. Коллеги постоянно добываются, что я апдейт не делаю, а делать промывание атрибутов модели и сейв.
Разве нужно читать книги, чтобы понять, что если действие можно выполнить за одну команду, то выполнять его за две - это неправильно?
> зато каждый апдейт рубокопа (обновление последней версии которого еще и в gitlab-ci прописано ) за всю кодовую базу садится сеньор и начинает заменять одни скобочки на другие.
Может пора сменить упороту тиму на нормальную?
пиздец, зашёл в руби-тред и расстроился. работаю за 1к баксов (милионник), зато интересно. до этого было 1.6к евро, но очень скучно. а бывает чтоб интересно и нормально платили?
Что это за редактор?
> а бывает чтоб интересно и нормально платили?
Бывает, но ответственности больше, как и компетенций.
Ох, анончик. У меня тоже беда с этим.
Почему-то кругом одни вакансии с развитием каких-то старых проектов ("развитие" == поддержка на языке вакансий) со стеком рельсы + реляционка.
А так хочется просто работать и делать новые проекты. Я что, многого прошу? Кто-то может не хочет работать, а я хочу. А нету. Ну почему, почему, блять?
Уже есть опенсервер с пихой, там это дело пяти секунд, но хотелось бы на руби, если это не требует каких-то запредельных усилий.
Спасибо.
>>1014259
Считайте, что я ушел поддерживать интернет-магазин автозапчастей "ИП Шарыгин". То что это билет в один конец, думаю догадываетесь.
в чем проблема, перепиши все на es6 и новые рельсы, потом не стыдно будет показывать
jekyll
Тебе лишь бы в countryname, но не в Rashke? Может достаточно город РФ поменять? Свои проблемы переездом не решить, везде есть свои заморочки. Обдумывание свалинга вообще стоит начинать не с вопроса "куда я хочу" (если ты не гениальный специалист уровня мыщъха), а с вопроса "кому я там нужен". Найдётся ответ (работодатель) - отлично, можно приступать к решению задачи. Просто свалить из РФ ради сваливания - не цель, жить везде можно и неплохо. Сначала хоть в туристическую поездку в несезон съезди - может сразу выбор по климату сузится, в Европе зимы весьма противные, мне мои (Челябинские) сухие -30 больше устраивают, чем Венгерские -10. Жевание газа и сопли в лужах "каковы мои шансы..." = 100% никуда не поедешь. При этом надо знать куда именно валить, почему именно туда. А не "отсюда". Тебе может фрилансом заняться? Работать без территориальной привязки по удалёнке и всё. И вся Земля перед тобой. В любую жопу уехал и клепай заказы. Там по ходу дела и оценишь, где стоит пускать корни.
ну понятное дело что не в пакистан. Климат не так важен. сейчас я присматриваюсь к польше и чехии. И вакансии есть и климат под меня. Почему свалить из рф ради сваливания не цель? не хочу ташить суда политоту но, я просто не хочу жить в стране в которой нет базовых коституционных свобод, и полицейский скорее всего мой враг. я сейчас на фрилансе, но мне кажеться максимум что я на свои 1500$ потяну это тайланд потому что я с тянкой.
Насколько я знаю, в Польше есть тонкости вроде языка, налогов, полицейских-взяточников даже в Польше, касательно Чехии на двоих 70к крон нормально, на этом знания кончаются и я в ридонли, попробуй параллельно и асинхронно потусоваться в 2ch.hk/em/res/384254.html и 2ch.hk/em/res/387355.html
Спасибо анон!
Дохуя было. из последнего от чего я просто ахуел. Хотел себе на киви закинуть 3 куска. И черт меня дернул закинуть не там где я это всегда делаю а в каком то левом магазине. Такого открытого наеба я ещё никогда не видел. Фейковый автомат киви. но юай и внешка 1 в 1. все минус 5к. вот тут у чувака такая же история, собственно нашел его по тому что у нас в чеках ИП совпадает. https://dublikat.one/threads/razvod-terminal-oplaty.63191/ .после того как я написал заяву в ментуру. началось . участковый просто начал меня мурыжить. 5 дней мне перезванивал ! и спрашивал не дошли ли деньги. я вежливо ему отвечал мол нет, и не дойдут. потом он сказал мол они ему чек дали. Прислал мне фотку этого чека. я ему в ответочку принес выписку из банка мол нихуя. ну и он начал гаситься какое то время. постояно обещал перезвонить и нихуя не перезванивал. ну и потом мне просто сказл что нихуя не выйдет у тебя друг, на резоный вопрос почему он начал воду лить. и тут конечно я ахуел. очевидно что этот чувак их крышует. потому что
1. всем похуй что на этом автомате лого киви и юай киви. как так нахуй?
2. Ну я не детектив и могу понять когда не ловят кого то за мошеничество в интернете. но у тебя сука автомат стоит. ИП стоит, какие могут быть проблемы?
У меня досих пор горит с этой ситуации. Надо бы конечно продолжить их ебать из принципа и писать в прокуратуру но бля это столько времени занимает я ебу. Да и я не против развестись по умному но так это ну пиздец же.
из другого другу мент пытался подкинуть гаш. хорошо 3ий друг снимал
что там на рубях сейчас пишут?
Веб Приложения
Думал к вам попробовать устроиться (нравится идея попилить банк и заодно узнать кухню изнутри), не поделишься немного инсайдом? Есть ли овертаймы, как команда (напрягает, что вакансии постоянно висят одни и те же, хотя может просто никто не обновляет страницу), может ли помидор рассчитывать на 200-250к?
>Есть ли овертаймы
Если поджаривает время - считай есть.
>как команда (напрягает, что вакансии постоянно висят одни и те же, хотя может просто никто не обновляет страницу)
Команда большая, но много подпроектов. Каждый своим занимается.
Вакансий много потому что идет массовое расширение, куча нового делается.
>может ли помидор рассчитывать на 200-250к?
В теории наверное может.
Никитушка?
Ты слабоумный хипстоблядок. И офис ваш говно и банк ваш говно.
>Команда большая
4 человека блять? Или ты всяких пезд-менеджеров под командой понимаешь.
>Никитушка?
Мимо
>4 человека блять
15 человек на бэке, плюс человек 10-12 фронта. И будет больше.
>15 человек на бэке, плюс человек 10-12 фронта
Я, например, узнал, что оказывается в рубях есть множества 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
Скажем, для разрежённого массива позволяю себе писать:
elem&.method
Вместо
elem.method if elem
Есть некий скрипт на Ruby, есть ли способ собрать все зависимости в один файл так, чтобы на другой машине скрипт запустился, не требуя скачивания дополнительных пакетов?
На ум приходит Docker и виртуалка.
Но тебе наверное надо все гемы, можно конечно сказать, что у тебя тебя какая-то задача неправильная, но проблема интересная в некотором роде.
Можно погрепать код на предмет всех require'ов и с этим списком вытянуть гемы через gem fetch (или просто вытащить уже скачанные из директории с гемами) и потом грузить как-нибудь через require_relative.
Потому-что оно памяти жрет просто охуеть. JVM сама по себе довольно прожорлива, а с уровнем абстракции как у руби - это лютейший пиздец.
Старые байки о главном. Долбоебы квотируют все подряд не задумываясь что такое холодный старт и почему у не-jvm рост памяти прогрессирующий.
высунь голову из манямирка и не пытайся обернуть говно фантиком. если ты на самых банальных задачах выжираешь в десятки раз больше других решений(включая JVM-экосистему) - тут становится все просто: бери свое поделие и катись нахуй, всем будет насрать на твои росты памяти и старты, инфа 100 и так оно и происходит. если бы это не было байкой, то этот ваш jruby таки хоть кто-то использовал. а так это просто игрушка для эксперементов и некритичной скриптопараши. вакансий почти нет, известных пользователей тоже.
https://github.com/jruby/jruby/wiki/SuccessStories
JRuby юзают в коммерческих проектах и вообще
до сих пор пилят и не забросили.
Основные причины: получить удобство рельсы и
поддержку уникальных java-библиотек и java-legacy.
С памятью там всё нормально (не идеально, но вполне нормально).
Сейчас бы слушать советы от человека который в бою не видел системы с нагрузкой больше 100 rps.
>то этот ваш jruby таки хоть кто-то использовал.
Тащемта, всё оперативное планирование и контроль высокоскоростного движения в РЖД (считай, вся служба Д и околовертящиеся, нет, конечно Гид-Урал и Сетунь еще не похоронили, но...). Ну и в метро МСК кое-где (как минимум в службе Э).
О чем поподробнее? Говнометания на Jruby и Java в целом идут из-за того что она долго и муторно разогревается, сразу алокейтя кучу пространства. О чем ньюфаги не знают, это то, что разогнавшись машина ебет все интерпретируемое говно взашей, при этом имеет адекватные alloc-и, нормальный gc, который не блокирует мир, нормальные треды, которые не зависят от потоков операционной системы, не лимитированы по GIL в cpu-bound и где нет танцев с бубном по thread safety. Плюс к этому они получают доступ к использованию почти любого Java окружения.
Видио по два чиса, эта же с ума сайти можна. Просче доку перичитать.
size = ftell(file);
fseek(file, 0, SEEK_SET);
buf = (char )malloc(size);
fread(buf, 1, size, file);
fclose(file);
fileSize = size;
return buf;
Как перевести этот Си-код на руби?
С каких это пор оно не блокирует мир? Почти все интерпритации JVM делают остановку мира, кроме платного Azul.
Она ебет, только если пользоваться непосредственно жабой, скалой или котлином и зная как. Запуская там скриптовые хреновины типа жруби, нэшхорнов, итд оверхед будет слишком велик.
Какая разница что запускать на JVM. Там же единый байт код. Все языки в этот байт код компилятся.
т.е. хотелось бы что бы rails db:create, db:reset подгружал и процедуры.
вопрос про rails.
вопрос снят. rails db:reset запустить миграции. я почему-то думал, что используется schema dump.
т.е. добавлю процедуры миграциями.
Имеется код index'a для AA.
column :screenshots do |object|
object.screenshots.each do |shot|
span do
image_tag shot.screenshot_img.thumb
end
end
end
Какого-то хуя результатом его является пик.
Поясните, где я мудак?
в вьюхе ты накосячил.
проверь все открытия тегов <% и <%=, обычно когда путают эти теги такая хня
короче думаю ты <%= screensots.each do |screenshot| %> вместо <% screensots.each do |screenshot| %> хуйнул, и он тебе высрал жсон с screensots
Наверное надо перестать ебстись в глаза и прочитать, что используется ActiveAdmin.
Лол, так тебе про .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.
Сука вообще конечно пиздец.
да всё уже и сам сделал, пока тебя дождешься...
Кажется понял, файловая система msdoc и тут таких флагов вообще нет. Смутил файловый менеждер минта, который отображает это флаг в свойсвтвах файла.
А я продолжаю открывать для себя всем известные вещи.
Оказывается в рубях есть catch и throw.
https://ruby-doc.org/core-2.4.1/Kernel.html#method-i-catch
Откуда там вообще руби?
Алсо, анончик, запили кулстори что-ли, ты видимо работаешь там? как в госконторе работается?
Посмотреть примеры не судьба? В любом проекте рспек.
Подскажите плс по следующему вопросу.
Чуть меньше месяца вкатываюсь в руби. Знаю, понятное дело, самые основы пока что.
Тем не менее, у меня цель как можно скорее начать на этом хотя бы что-то зарабатывать, а для этого, как я понял, нужно переходить к рельсам.
Собственно вопрос: насколько надо знать руби, чтобы начинать вливаться в рельсы?
Спасибо!
>>1023892
Вы про что? Что это такое?
Вообще это инструмент для флоу-контрол, очень похожий на выброс исключений, просто с другой семантикой.
>>1024031
В пятой рельсе колбеки теперь не через return false останавливаются, а через throw :abort.
Да можно толком и не знать. С рельсами совсем другая проблема - их нужно учить. Я бы даже сказал зубрить. Потому что все сплошь на соглашениях и шагу без них не ступишь - приходится искать и читать, как делается элементарная хуйня.
Беги извлекать и сортировать числа из файлов по 40 гигабайтов, кек.
Другими словами, ломись в конторы и делай тестовые задания, какими уебищными бы они не были.
По ходу дела освоишь как руби, так и рельсу.
https://www.youtube.com/watch?v=ChxDqYVIYzw
Поржал с обсуждения вопросиков про лямбду и проки. Поцаны каждый день этими знаниями пользуются.
Анончик, а ты хоть раз использовал отличия лямдбы от прока? Можешь не отвечать, я знаю, что нет тот единственный раз не считается.
юзал в монгоид
>а ты хоть раз использовал отличия лямдбы от прока?
Постоянно.
Если отбросить более удобную работу с проками в тех же скоупах AR, проки постоянно используются в сервисах.
И что же ты использовал, синтаксический сахар для объявления любого кол-ва переменных? Это несерьезно и решается через одну строчку типа a,b,c = *params.
Или может различия в поведении на ретурн? Хуевое у тебя ооп тогда получается, очень хуевое. Ломать инкапсуляцию и менять логику в инкапсулированном методе-адресанте - это пиздец такое поддерживать.
Добавил return и потом на весь садик: `Мама, мама у меня сломались каллбеки!1!!! Что делать?!?`
Там ему сразу вопрос задали "вы сами на собеседовании давно были?". Мне кажется вся суть.
Но мне больше пригорает с другого, что вот такие вот собеседователи ищут себе скиловых чуваков, вместо джунов (которые бы были благодарны и развивались), а потом отправляют их на круды, где это все не нужно и люди там тухнут.
А потом он еще не доволен, что убив два года на "вырабатываение задач в джире" чувак не может ему про продукт рассказать. Епт, блять, да за два года такой зомби-работы не то что про продукт не расскажешь, а вспомнить не сможешь, что ты там вообще делал.
Предполагается что ты сначала на PHP попишешь года два в офисе, выучишь паттерны и потом руби за недельку и рельсы за месяц. И всё это во время работы в своей конторе. Там же ты должен поднять какой-нибудь побочный проект и в течении года-двух его разрабатывать и поддерживать.
После чего этого (через год-два) можешь робко смотреть на вакансии джунов в руби конторы.
А так никаких руби-джунов не подразумевается обычно.
Вкатываюсь в рельсы. Учусь на программема, сейчас проходит летняя практика. По знакомствам нашел практику в одной маленькой конторе. Руководитель практики сказал, что ему в принципе похеру на меня, но если хочу что-то сделать, то нужно сделать веб-приложение. И дал на выбор пару тем. Делаю приложение для городских игор (Типа бегаешь по городу, выполняешь задания).
Возникла проблема:
Есть 2 модели : Игры и блок игры.
Т.е. игра содержит несколько блоков, соответственно связь belongs_to.
C созданием игры все ок, но когда хочу прикрутить добавление блоков сразу при создании игры возникает пролбема (пик 2).
Контроллер для создания блока игры (пик 1)
Я хуй знает что ты лепишь, но слез бы ты со своей лошади и прекратил понты кидать.
nested models
Какие понты? Тебя спросили как ты используешь отличия, на что был вскукарекек про проки в скоупах. Ты бы хоть доки посмотрел сначала актив рекордские, в них лямды используют.
Так что раз уж начал спорить с тем что проки (не лямбды) используются повсеместно, давай валидные кейсы их использования или слейся по-тихому.
http://guides.rubyonrails.org/active_record_querying.html
И смотришь, в документации используется -> (lambda)
И 0 совпадений по proc или Proc.new
Гуглишь proc vs lambda и находишь статьи где упоминают, что процы не рекомендуют использовать.
http://batsov.com/articles/2014/02/04/the-elements-of-style-in-ruby-number-12-proc-vs-proc-dot-new/
> By the way, given proc’s fairly counter-intuitive behavior regarding return, you should probably use lambdas most of the time.
Или
https://stackoverflow.com/questions/626/when-to-use-lambda-when-to-use-proc-new
> 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 файлов, который можно так запускать.
В идеале хотелось бы, чтобы моя директория-расширение, как бы монтировалась поверх проекта. Но при этом чтобы гит видел оригнал.
Или например что-то типа личного гит-игнора, но локалного для проекта.
А вы чем заняты?
Бранч и стеш не подойдут. Гитэксклюдес это глобальный игнор. Но пока гуглил его наткнулся на .git/info/exclude - типа локальный exclude, и это уже теплее.
В папку проекта можно кинуть отдельный .gitignore, с дополнительными игнорами.
Если код дублируется, тогда, конечно, очевидно нужно выносить. Но вот как в этом конкретном примере мне кажется это ненужно шизофазия. Имхо, код сверху понятнее и читабильнее. Но я часто вижу, что начинают дробить обособленный метод на множество мелких, создавая такую лапшу, что чтобы прочитать код, приходится бегать по файлу и воссоздавать стек вызовов. И зачастую это объясняют "чтобы метод лучше читался".
Но это мне так кажется. Хочется узнать, что думают другие и если используют, то почему.
Алсо, если есть где-нибудь субъективная критика этой практики, поделитесь ссылочкой.
Причем здесь руби?
---
Принцип рефакторинга хороший, если уметь его применять в связках с другими паттернами.
Давай возьмем пример посложнее, пусть отчет состоит не из двух частей, а из пятидесяти. Все написаны в одном методе printOwning.
И тебе приходит задача - подготовить три вида отчетов, один полный на пятьдесят частей, два кусками по 5, и 35 частей.
Первым делом ты откроешь код и охуеешь, увидев полотно на 400 строк кода. Но т.к. ты владеешь паттерном extract method, то за 1 коммит сможешь разделить огромный метод на множество маленьких частей. Эта хуйня отвечает за это, та - за то. Стало чуть понятнее.
Вторым шагом применяется инверсия зависимостей, чтобы метод printOwning печатал нужный вид отчета (полный, частичный, минимальный, whatever).
Вот так в два простых шага ты решил этот кейс.
То что я знаю больше тебя, не значит что я хочу что-то перед другими, особенно на анонимном форуме.
Извлечение методов это не только читабельность, задел под расширение, но и удобство в тестировании.
Когда тест крашится в маленьком методе, его проще поправить, а остальная часть программы тебя не волнует.
Если думаешь, что можно научиться эффективно ходить на одной ноге, то тебе не следует идти в программисты. Тем не менее неоспоримость пользы одной ноги в связке с другой - неоспорима.
Поэтому не выебывайся, и учи как бы глупо тебе не казалос и рднажды картина сложится в голове. Увы, но ооп по частям не работает.
Даже башевские скрипты дроблю на отдельные функции, что сильно упрощает отладку и прочие НИОКРы.
Может показаться, что кода несколько больше, но с практикой станет ясно, что разбираться в коде действительно проще, чем в простыне с if/while, принтами и циклами.
>если есть где-нибудь субъективная критика
Вот тут в комментах чуваку аргументируют, что он поехавший
https://sites.google.com/site/unclebobconsultingllc/one-thing-extract-till-you-drop
Там большинство все-таки разделяет его восторг, но пример показательный - декомпозиция ради декомпозиции.
Это копия, сохраненная 20 июля 2017 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.