- Видео 76
- Просмотров 29 694
Sergei Udalov
Россия
Добавлен 16 дек 2019
Тимлид решает пятнашки. Неожиданная развязка, смотреть до конца
Тимлид решает пятнашки. Неожиданная развязка, смотреть до конца
Просмотров: 49
Видео
Семантичность API на примере Net::HTTP в ruby, ответы на вопросы
Просмотров 4082 часа назад
В этом выпуске мы обсуждаем важные аспекты программирования, включая читаемость кода, полбемы в ruby HTTP stdlib, последние новости из практики и эффективные подходы к разработке. Мы также затрагиваем темы Data Mapper, грейды разработчиков, вопросы про b-tree на собеседованиях. Кроме того, мы обсуждаем чтение книг, именование классов, генерация JSON в контроллере. Наконец, мы поговорим про прин...
Начало практики
Просмотров 72616 часов назад
Начинаю практику ruby open source. Каждый желающий может начать программировать в реальном проекте и получить совет товарищей. Вход сюда github.com/HeavyTechRuby
Ruby собеседование на позицию Middle
Просмотров 2,2 тыс.День назад
Ruby собеседование на позицию Middle
Ruby стартапы, сисадмины, выбор ментора и свобода слова в IT
Просмотров 98114 дней назад
Ruby стартапы, сисадмины, выбор ментора и свобода слова в IT
Руслан Байгунусов - Моя карьера в разработке: опыт, инструменты и советы
Просмотров 52621 день назад
Руслан Байгунусов - Моя карьера в разработке: опыт, инструменты и советы
Системность и проактивность, перспектива IT-рынка России, устроиться на ruby-разработчика, стрим!
Просмотров 54828 дней назад
Системность и проактивность, перспектива IT-рынка России, устроиться на ruby-разработчика, стрим!
100, Ruby on Rails, устроиться на работу мечты, собеседование, Павел Дуров
Просмотров 1,1 тыс.Месяц назад
100, Ruby on Rails, устроиться на работу мечты, собеседование, Павел Дуров
Анализ, обсуждение тем предстоящего митапа от СберМаркета, скорочтение
Просмотров 484Месяц назад
Анализ, обсуждение тем предстоящего митапа от СберМаркета, скорочтение
Стать программистом, Unix, ООП, Архитектура, Agile, слепая печать
Просмотров 2512 месяца назад
Стать программистом, Unix, ООП, Архитектура, Agile, слепая печать
Как я провалился со своим pull-request в Sequel
Просмотров 7545 месяцев назад
Как я провалился со своим pull-request в Sequel
"RSpec. Codereview" мой доклад на Ruby Meetup Evrone 2023
Просмотров 1226 месяцев назад
"RSpec. Codereview" мой доклад на Ruby Meetup Evrone 2023
"RSpec. Эффективность", Сбермаркет Meetup Ruby 20230
Просмотров 607 месяцев назад
"RSpec. Эффективность", Сбермаркет Meetup Ruby 20230
Анализ выступления "100 бед - один sorbet" Светланы Савельевой на RubyRussia 2023
Просмотров 3068 месяцев назад
Анализ выступления "100 бед - один sorbet" Светланы Савельевой на RubyRussia 2023
После того, как ты посмотришь это, ты не сможешь не писать тесты для своих программ
Просмотров 3078 месяцев назад
После того, как ты посмотришь это, ты не сможешь не писать тесты для своих программ
RSpec. Поддерживаемость (выступление и обсуждение)
Просмотров 1098 месяцев назад
RSpec. Поддерживаемость (выступление и обсуждение)
Комментарии портят поддерживаемость кода
Просмотров 628 месяцев назад
Комментарии портят поддерживаемость кода
Как разделить большой класс на модули и ухудшить свой код
Просмотров 498 месяцев назад
Как разделить большой класс на модули и ухудшить свой код
«Чистая архитектура Ruby on Rails приложений Прагматичный подход» Сергей Удалов, Баланс Платформ
Просмотров 1268 месяцев назад
«Чистая архитектура Ruby on Rails приложений Прагматичный подход» Сергей Удалов, Баланс Платформ
Среди сотен собесов по фронту, бэкендеровских python/java/go - интересно было посмотреть на ruby way) В следующий раз (если он будет) можно позвать опытного товарища пособеседоваться на синьора. Спасибо Сергей и Александр!
А где можно про repository подход в руби почитать? ruclips.net/video/CcTqtXev0sA/видео.html всё что вы тут описываете?
Почитать советую, Martin Fowler, architecture of enterprise applications. А именно в ruby - rom-rb
@@SergeiUdalov спасибо большое!
17:57 а как эта подобная иммутабельность с точки зрения потребляемых ресурсов?
В большинстве случаев это незначительный фактор. Для 1% кейсов можно сделать исключение.
А на чем фронт? 😅
Html, react , Hotwire.
Здравствуйте А если не уверен в своих силах но очень хочется поковырятся .
Нет проблем. Клонируй себе репозиторий и запускай. Присылай Pull request.
Вход здесь github.com/HeavyTechRuby
Приятно видеть, что Клинт еще в обойме! Так держать!
Приветствую! Такой вопрос: а сейчас (в эпоху js-фреймворков) вообще используется вот это стандартное MVC c генерацией HTML, или уже просто как REST? И что думаешь по поводу Hotwire?
REST используют, да. Но это не отменяет паттерн MVC, это сужает слой V. При этом, слои MC остаются в полной мере. И для формирования/парсинга JSON - логики достаточно
Здорово! Буду наблюдать! Удачи проекту!
пока один проект?
На этой неделе планирую добавить еще 2. Один - платформа для соревнования программирования, второй - библиотека. Расскажу в пятницу в подкасте. Подписывайся
Спасибо, очень интересно слушать, особенно когда ты вкатун в ror)
Вкатун, это кто меняет специализацию в зрелом возврате?
@@SergeiUdalovпо сути да) Вкатун - от слова «вкатиться» Может видел где-то словосочетание «вкатуны в АйТи»
Топ контент! Собеседования по ruby в ru youtube можно по пальцам посчитать. Спасибо! И спасибо собеседующемуся за разрешение на публикацию!
будут еще собеседования ?
@@user-bw2og6hw7y а нужно?
Душевно посидели, спасибо парни
Мне кажется, можно критерий понимания ООП ввести - если человеку кажется, что Бугаенко говорит правильные вещи, да по делу, то он ещё не понял ООП.
Для начала нужно понять ААНК , перейти к ЕЕР , а уже потом ООП
Здравствуйте. Какие, по вашему мнению, проекты стоит и не стоит начинать делать начинающему разработчику на Ruby on Rails? Спасибо за видео.
Начинающий ruby-разработчику я советую все коммерческие проекты начинать на RoR. А уже в pet-проектах эксперементировать с sinatra/hanami/roda/..., чтобы попробовать самому выстроить все удобства, что делает рельса и лучше их понять.
@@SergeiUdalov Вы говорили, что у вас в компании сейчас открыта вакансия стажёра Ruby. Могу попросить название или сайт компании? Или возможно контакты, куда можно написать по поводу стажировки.
@@AlexanderYakimec у нас есть HR, кто за это отвечает - тг @messpilus. Ситуация меняется, так что нужно узнавать и быть в контакте.
@@SergeiUdalov спасибо!
Логика в этом есть...
Более того, в этом есть бизнес-логика!
Агуша-собес. Задают элементарные вопросы, соискатель несёт хрень, но в конце - "ай, молодец какой, вылитый мид".
Главное в рубисте, чтобы поддерживал температуру тела 36.6. Как считаешь, каких вопросов не хватило?
@@SergeiUdalov ну, например, меня так и подмывало спросить - а в чём разница между интеракторами и сервис-объектами?
@@Manellig хороший вопрос. Он помог бы понять, как соискатель рассуждает в непонятной ситуации. Но отвергать кандидата на основе неверного ответа я бы не стал, так как у нас полно народу в сообществе считают это синонимами.
@@SergeiUdalov а вы считаете, что это разные вещи?
@@Manellig да, ServiceObject - это callable объект. Interactor - частный случай ServiceObject, в котором релиазован UseCase. ServiceObject не обязательно про UseCase.
Да.
Генри Кавилл проводит собеседование - теперь я видел всё)
Спасибо! А как тебе само собеседование?
@@SergeiUdalov Ну я не рубист, да и собеседований у меня еще не было) Поэтому ценности мое мнение тут особо не имеет, но вроде всё было неплохо: был план, комфортная атмосфера. Может где-то были какие-то оплошности, но главное ведь что бы кандидат разобрался в компании, а компания в кандидате?)
@@SergGin1 да, часто интервьюеры забывают, что цель собеседования нанят сотрудника, а не только отсеять. А после 1.5 часа допроса у кандидата остается спорное послевкусие. Так что оставить, хорошее впечатление - важная часть собеседования
Бодипозитивные модели !
разработчики всяких любят
Привет. Расскажи, пожалуйста, про идею с data mapper
Я бы хотел сделать заготовку для репозиториев, которые достают не DTO, а живые доменные объекты. Это нарпавление разработки пока
идеи буду собирать тут github.com/HeavyTechRuby/ideas
@@SergeiUdalov А какая основа у репозиториев? rom.rb?
@@ivanrudskikh2893 тут у меня пока нет уверенности. Как вариант. Я в ближайших видео расскажу свои мысли на этот счет. А дальше - предлагаю подключиться тебе со своими идеями. Уверен, придумаем интересно
@@SergeiUdalov мне просто показалось, что ты уже используешь репозитории и они тебя чем-то не устраивают. У нас в проекте репозитории не используются, но мы смотрим в их сторону)
Если всю бизнес логику размещать в модели, то как при этом не нарушать SRP?
Если продолжить твою мысль, то еще один слой нам тоже не поможет, так как бизнес-правил у нас будет много. Так что и в сервисный уровень их поместить не удастся без нарушения SRP. У слоя model есть одна ответственность - содержать в себе core-данные и бизнес-правила. И никакого нарушения. Сформулируй, пожалуйста, уточнение своего вопроса.
@@SergeiUdalov В моем понимании сервисный объект отвечает за один бизнес кейс. Единственная причина для изменения класса этого сервиса - изменени требований бизнеса. Получается SRP. Толстые модели придется изменять чаще, т.к. они содержать в себе множество бизнес кейсов.
@@ivanrudskikh2893 для меня model != active record. Если есть несколько бизнес кейсов - их можно выделить в отдельные классы внутри модели. Не все классы в models должны быть ActiveRecord.
@@SergeiUdalov отдельные классы внутри модели - что это? Ни это ли еще один слой абстракции?
@@ivanrudskikh2893 MVC - это паттерн, в котором M - Model - слой. В этом слое много классов, которые отвечают за разные аспекты бизес-логики и core-данных. Если нужно, можно разделить Model на слои, да - нужно сформулировать их ответственность. Но можно и не делить, а считать, что все классы находятся в одном слое. Например, расположить UseCase в модели норм, но JsonSerializer уже нет - это View. А что ты имеешь ввиду по моделью?
Спасибо за выпуск. Подчерпнул для себя много интересного. Видео про опенсорс тоже зашло интересный проект
Спасибо! Заходи еще. Ты уже подписан?
Сергей спасибо за видео, мне как джуну интересно было послушать
Рад, что интересно. А где работаешь? Чем занимаешься?
@@SergeiUdalov, сейчас в поиске работы, до этого чуть меньше года проработал в одном marketplace джуниором на RoR
@@user-wq5nb2ml9b у тебя есть работа и ты в поиске или ты без работы и ищешь?Лучше искать работу с позиции, что она у тебя уже есть. Вот тут я высказывался на этот счет ruclips.net/video/L4yackhTjNg/видео.html
@@SergeiUdalov на данный момент нету работы и я в поиске
Почему генерация json относится к view? По сути мы получаем запрос с фронтенда, в каком формате и какие отдавать данные. Запрос обрабатывается сервером и перенаправляется в определенный контроллер. В контроллере содержится логика обработки и генерация данных. Когда данные сгенерированы, мы их передаем в view и задача view отобразить сгенерированные в контроллере данные. Опять же, в каком формате отдавать данные определяется в контроллере на основе параметров запроса от браузера. Я могу ошибаться, но мне кажется, что правильный ответ генерация файла происходит в контроллере, а форматирование данных в view.
Одни и те же данные могут быть представлены клиенту, как html/json/xml. Выбор формата лежит на контроллере, так как он знает, что за запрос он обрабатывает. Но формирование конечного сообщения - это view. Json - это не данные
@@SergeiUdalov Я не докапываюсь, просто хочу для себя понять. Согласен с тем, что html/json/xml - это форматы данных. Условно правила форматирования. Согласен с тем, что форматирование сырых данных может происходить во view. Но вопрос заключался где генерируется json. Вопрос именно в генерации. Условно для json у нас вообще может не быть view, но если мы в контроллере скажем отображать данные в формате json и от браузера придет запрос на отображение данных в формате json, то мы их получим даже без наличия view. Мне кажется, что генерируется происходит именно в контроллере. Например, если мы захотим сгенерировать скажем данные в формате pdf. По сути у нас не будет view, а будет метод, генерирующий код файла и мы его просто отразим в браузере. В зависимости от формата данных браузер их либо отрендерит или предложит сохранить как файл. Еще один пример у нас есть объект user = User.find(1). В контроллере мы делаем render json: user.to_json. Браузер понимает что он получил данные в формате json и отобразит их. При этом у нас нет view для json.
@@agrariy5919 то, что у нас может быть как угодно, вопросов нет. Встретить можно всякое. Но я говорю о том, как корректнее с точки зрения MVC. И тут у нас есть модель, и есть презентация этой модели для клиента. Одни и те же данные могут быть представлены а разном виде - json, XML, pdf. Вот это представление и есть. То, что у нас фактически генерация была описана в active record или контроллере - это может быть удобно, но это нарушение MVC.
Привет! Я тоже хочу в Ваш Open Sourse, куда писать?
Супер! Вот тут информация github.com/HeavyTechRuby
Привет, я фронтендер и твой однофамилец :D
Это знак! Тебе нужно становиться, как минимум, fullstack!! Не думал об этом?
@@SergeiUdalov Расту в глубь, а не в ширь, какое-то время писал пет-проект когда RoR был на хайпе, но это уже время ушедшее) А тебе удачи, буду следить!
ву - валютная удаленка
Спасибо, не сразу понял. Сначала была ассоциация с армией. А ты на ВУ работаешь?
@@SergeiUdalov не, я просто расшифровал) вопрос не мой
@@studiosus23 а ты где работаешь? Чем занимаешься?
@@SergeiUdalov я работаю в РФ рубистом и немного гошником
@@studiosus23 а для каких целей go?
Посмотрел с удовольствием. Егор Б. когда то высказывался что любой класс, название которого оканчивается на "er" это плохо.
Да, его идеи мне очень близки. Для тех, кто не знаком - elegant objects
@@SergeiUdalovзабавный момент в том, что он говорит об именовании классов по действию, например Post::Publish, User::Create, но «обычно» класс подразумевает именование существительным, в то время как функция класса (или функция) в целом - действие. Такой подход ведет к созданию множества классов с одним публичным методом (call, perform), что тоже не всегда отражает семантику действия.
@@davidfisher3581 а кто говорит, что такие классы - хорошо? Ни я, ни Егор так не считаем. Это интеракторы - антипаттерн
🎉
С наступающим
Классный подкаст, у меня такие же шторы 🤝
Супер, только не прекращайте, у вас отличный подкаст! Вы большой молодец
Спасибо большое, буду. Как тебе мысль про MVC?
Когда услышал , что ему итальянская компания палки в колеса ставила , это для меня был бы конец собеседования с ним. Вывод - просто чмырь. Можно дальше не собеседовать. Дальше не смог слушать, уже отрицательное отношение, с таким человеком я бы не хотел работать.
Сенди Метца читал? - Нет - Пшел нафиг. - А поговнокодить? - ЧатГопоты для этого есть.
Строго говоря, чтение не обязательно для того, чтобы быть хорошим программистом. Тем более, требовать конкретную книгу. И прочтение книги не обязательно приведет к нужному качеству.
@@SergeiUdalov эх молодежь ... фрагментарное мышление :), имхо чтение обязательно умные люди читают книги, дурак не может быть хорошим программистом
@@excavator3571 с книгами стать хорошим программистом сильно проще, тут я согласен и часто рекомендую читать. И считаю, что программист будет так развиваться быстрее. Я не согласен с "обязательно". Человек может и через свой опыт прийти к правильны мыслям. Вопрос лишь в том, хватит ли ему жизни, чтобы проделать этот путь. Если уж говорить про фрагментарность, то если не читал эту книгу, но читал DDD или Clean Arch, то для меня это искупает это незнание. Если не читаешь книги, не значит, что дурак. Ты можешь быть необразованным, но умным. А что еще делают умные люди?
@@SergeiUdalov мы рубисты народ плечистый, нам без метса ни как, как идти дальше без азов ооп я вот какждый раз перечитываю, кокда имею дело с очередным овнолегаси, доки по языку в таких делах не рулят
@@excavator3571 без орфографии же как-то справляемся.
B-дерево - это не бинарное дерево. Разные вещи. Собеседуемый в конце про индексы уже устал.
для меня было важнее услышать, что это дерево и у нас бинарный поиск. А так, да - термин означает сбалансированное.
@@SergeiUdalov На самом деле никто не знает что означает 'B' в названии этой структуры.
@@zakharka3938 на практике, никто это знание не использует. Только для собесов.
интересно, но зачем вообще придавать значение тому, насколько уверенно человек отвечает и тому, насколько хороший звук / приятно смотреть на человека? Вы что, дипломатическую миссию открываете?
Я нет. Но это может создать позитивное впечатление при общих равных. Выбор сотрудника имеет не только рациональное и объективное, но и субъективные мотивы, эмоциональные.
Я бы сходил к вам на собес)
@user-lf8zm8fx3w еще актуально? может у вас получится @SergeiUdalov
в самокат тех не прошел бы на мидла, в другое место может и взяли мидлом
Да, зависит от компании и команды.
500 подписчиков телеграм канал, 1 000 boosty? 😂
Пока рук не хватает еще и на канал. Поэтому без помощи это у меня не получится. Монетизацию пока не планирую. Давайте подождём 10к. Там посмотрим.
если еще найдется кандидат на синьора, то - было бы вообще отлично)
Приходи!
не сказал бы что собеседование жесткое, в глубь особо не копали, так как Сергей дал свою оценку позиции, хотелось бы услышать отдельно, по грейдам, что значит Middle и так далее. как новая идея для видео
Сори, за кликбейт. Я не считаю, что собес должен быль жестким. На нем должна быть возможность проявить себя. По грейдам выскажусь обязательно
Код из live coding, помимо arr вместо array и двойного деления, содержит баг. Правую часть нужно доставать как arr[-(1+i)]
для лайв кодинга допустимо, я тоже не заметил в моменте
На сколько мог бы рассчитывать этот кандидат?
Отвечу, если пост соберет 150 лайков
@@SergeiUdalov видео или комментарий с вопросом?)
@@user-bp6kt9ub9s к видео
Вот это поворот :D, теперь буду постоянным слушателем/зрителем
А в чем поворот? Подписывайся на подкаст :)
Понял, не сразу узнал тебя по нику!
middle минус, что-то новенькое
Да вполне уже старенькое :)
Парень большой молодец. Интервью прошел достойно. Удачи ему в работе развитии скилов
Поддерживаю
Спасибо за стабильную генерацию контента!)
Как боротся с плохими привычками лида?) не использовать рубокоп, называть перепенный 1 буковй)
Ты спрашиваешь с позиции лида? или как научить хорошим привычкам своего лида?
@@SergeiUdalov с позиции, разработчика, который работает с таким лидом)
@@smertokrab я исхожу из того, что лид - разумный человек. Раз так, он должен прислушиваться к разумным аргументам. Вероятно, ты должен ответить на вопросы: что команда получит от внедрения, что для этого нужно сделать, что именно ты готов для этого сделать? Если лид не разумный - то нужно искать нового - разумного.
@@SergeiUdalov логично) спасибо за ответ)
@@smertokrab есть еще один вариант: стать лидом самому.
Лайк не глядя, ждал это видео
Приятного просмотра!
У меня вопрос был скорее в том - почему в руби так сложен вход. Как будто это какой-то специальный отсеивающий механизм. Касательно того, что много работ и не нужно. И да, и нет. С одной стороны - много работ не нужно, потому что тебе нужна только одна. С другой, если работ мало, то и рынок может не развиваться, условия у разработчиков могут ухудшаться, т.к. конкурировать на рынке будет не с кем. Если Рубистов будут набирать только Марсиане, Еврон и Сбер - то рынок превратится в олигополию, что для кандидата не есть хорошо. Раньше эта ситуация выравнивалась простотой работы на ВУ, сейчас же когда надо перепрыгнуть через 10 колец чтобы найти себе ВУ - работодатели могут начать закручивать гайки.
стало ли рабочих мест меньше? не думаю. если не согласен, то скажи, почему ты так думаешь
Сергей, спасибо большое за очередное видео, с удовольствием смотрю. Такой вопрос. Представим, что Ruby умер (тьфу тьфу тьфу 🙂). Какой ЯП/платформу Вы бы выбрали в качестве замены?