ИЗУЧЕНИЕ ЯЗЫКА Q: C чего мне начать, чтобы стать рубистом? A: Отличным началом будет Programming Ruby (The Pragmatic Programmers Guide), читать Eloquent Ruby и The Well Grounded Rubyist после прочтения первой толку особо не даст, одни и те же вещи, дальше читаем Ruby Way, затем познаем метапрограммирование с Metaprogramming Ruby. А дальше открываем Ruby cookbook 2015 года, Пишем свой код во время чтения.
Q: Следующий уровень, продвинутые книги по руби: A: Confident Ruby by Avdi Grimm | Practical Object-Oriented Design in Ruby Refactoring Ruby Edition | Ruby Under a Microscope
Q: Какой gem посмотреть, чтобы понять, как писать код? A: Лучше всего посмотреть небольшие gem'ы вроде cancancan, pundit, camping. Еще можешь полистать на гитхабе гемы с нарастающей популярностью (там еще нет тысяч строк, и тебе будет легче понять): https://github.com/trending?l=ruby
>>2144972 >>2145120 Начал курсы от thinknetica, забросил (времени пиздец было мало), в итоге очень медленным темпом учил руби (ну и по фану читал всякое про программирование в целом). Потихонечку проникся линуксом но как основную систему ставить всё равно не собираюсь, очень заебно
Знаю объектную модель руби, понимаю, что лежит под синтаксическим сахаром (кроме некоторых мест в контроллерах и вьюхах в рельсах, там чорная магия какая-то). Люблю ООП, постоянно что-то инкапсулирую и абстрагирую, даже одноразовые скрипты делаю так, чтобы получится класс с точкой входа, который можно подключить к чему угодно. Английский на хорошем уровне. Умею читать SQL (писать не особо), быстрорешительно открывать доки и гайды. +- умею понимать назначение сущностей без гайдов, при помощи исходного кода, IRB и #public_methods
HTML понимаю на уровне веб1.0, CSS не трогал от слова совсем, JS стараюсь всячески избегать (но сейчас всё равно рельса больше для апишек, а не фуллстак).
Много писал скриптов для себя, всяких ботов, парсеры, обращения к АПИхам и прочее.
Собеседования как такового не было, просто на первой же вакансии дали репозиторий и сказали прикрутить фичу в качестве тестового. За пять дней часа по четыре в день сделал основную часть - сказали зоебись и взяли на удаленку, сейчас сижу и потихоньку полирую, в спешном порядке вник в ActiveJob (Sidekiq, Redis) и Docker-compose было сложно. Денег обещали 30К + до 20 бонусом но ещё ничего не платили
Про штат ещё хз, надо бы почитать и поспрашивать: как вообще устраиваться? Самозанятым?
>>2145250 >Про штат ещё хз, надо бы почитать и поспрашивать: как вообще устраиваться? >Самозанятым? This. Выгодно и тебе (ты же не надеешься на пенсию, лол?) и работодателю (не переплачивать налоги, социальные взносы, вот это все). Только что-то совсем мало предлагают, да.
>>2145418 >>2145665 Ну, это моя первая работа в ИТ, плюс занятость частичная (часов 20-25 в неделю выходит пока), график свободный, мне прямо в самый раз. 40-часовую неделю я не вытянул бы, я не люблю по 10 часов в день листать двач и делать вид, что работаю. Плюс на следующих проектах может быть больше.
Если уж совсем честно, я бы это задание и бесплатно сделал, в качестве самообучения.
>>2145478 Да я не пиарю, там слишком уж интенсивно для моего тогдашнего графика было. А код ревью там не особо полезный, ты либо знаешь тему и пишешь более-менее нормально, или не знаешь и вдуплить не можешь, что тебе объясняют. По рельсам много подобных гайдов, главное - мозг настроить и вникнуть в суть™, а детали по очереди осваивать.
Но, я думаю, если кто-то вкатывается с другого языка, то норм вариант.
Когда вы пишите “вкатился на удаленку”, что вы подразумеваете по этим? Одно дело продать себя-найти работу. И совсем другое - ее выполнять-закрепиться на месте.
>>2147827 Хранить его надо либо в отдельном файле, который не коммитится в репозиторий и существует только локально, либо в ENV. Либо и то, и другое через figaro.
>>2148325 Это когда у тебя не просто файл с перечислением действий, а класс StuffDoer, внутри которого описаны методы, совершающие эти действия.
И когда тебе надо использовать логику из этого скрипта в контексте приложения, ты просто require_relative 'path/to/stuff_doer.rb' (можно в IRB) и вызываешь StuffDoer.new.do_stuff
Если никакого большого приложения нет, и у тебя проект из одного файла, то это не обязательно.
В пайтоне принято в таких случаях городить конструкцию if __name__ == "__main__", чтобы связывать разные файлы.
>>2148556 > В пайтоне принято в таких случаях городить конструкцию if __name__ == "__main__", чтобы связывать разные файлы. Хуйню написал. Не в этих случаях. Извините, пьяный.
>>2148793 >класс StuffDoer, внутри которого >описаны методы >совершающие эти действия.
А так же, возможно, он имел ввиду что там много методов и он может делать StuffDoer.new.do StuffDoer.new.stuff
А SO должен выполнять только одну задачу 1 методом Но, узнав все это из данного поста, он может сказать что все именно так чтобы не упасть в глазах профессионалов данного треда.
>>2150433 Типа ты при вызове метода класса создаешь экземпляр и передаешь вызов ему? Зачем тебе вообще создавать экземпляр класса если ты его никак не используешь после вызова?
>>2150622 >Зачем тебе вообще создавать экземпляр класса если ты его никак не используешь после вызова? >никак не используешь >вызываешь метод >никак не используешь
Походу в новой рельсе заменят вебпак на есбилд, честно говоря вымораживала эта сборка ассетов по 5 минут, вообще рейлс 7 будет очень интересным релизом.
>>2150692 Да не бугурти, почитай metaprogramming ruby, там всё на пальцах поясняют что к чему и зачем.
>>2144637 (OP) Мертвый или нет? Есть такой чел Роман Пушкин. Топит за руби, говорит что вкатиться не сложно на доллары, мол по этой дорожке прошло уже много людей и все збс. Это наеб?
Какие преимущества я получу, если буду использовать Thread, а не Ractor? И какие проблемы?
Ракторы как-то попроще выглядят, ты создаешь - и он сразу в бэкграунде чего-то бурчит, автоматически передаётся исполнение из одного в другой и обратно в мэйн, но немного заебно эти сообщения им отправлять. И в глобальные переменные и их аналоги не попишешь.
>>2159597 Смотря с какой целью использовать, если нужны параллельные вычисления на нескольких ядрах то треды тут не помогут, раньше приходилось форкать процесс, теперь можно использовать ракторы, но там какой-то мутный уровень изоляции, в существующее приложение их просто так не встроишь, кодовую базу не переиспользуешь, придется придерживаться специфичной архитектуры и ограничений. Если нужна асинхронность или ожидание io-bound операций то треды вполне подойдут, заворачивать в треды обработку данных и тяжелые вычисления смысла особо нет.
1. Телеграм-бот сидит в одном процессе на одном подключении к АПИ телеги. 2. На каждое новое сообщение создаётся объект класса MyBot 3. На определённую команду открывается рактор, который ждёт сообщение вида "да/нет", чтобы стартануть левый сервис или тихо умереть. Параллельно идёт обработка следующих сообщений, мэйн рактор крутится, объекты мутятся 4. Какое-то из последующих сообщений передает этот самый ответ "да/нет", тогда обьект MyBot находит этот рактор из пункта 3 (вписан в псевдоглобальную переменную типа RactorTrackerModule.current_ractor, это уже детали) и передаёт ему это сообщение.
Так-то работает, но я хуй пойму, как в это всё впихнуть автоматическое "нет", если ответа не получено, скажем, за 15 секунд. У меня почти-почти получилось, но одновременно ощущение и что вот-вот придумаю, и что я квадратный кубик в треугольную дырку пытаюсь запихнуть. Может, как будет время это пет-проект, не работа, прозрею.
Главная загвоздка в том, что как только пытается открыть второе подключение к телеграму, он кидает исключение и всё падает.
>>2144637 (OP) Никогда не понимал нахуй эти ваши руби вообще существуют и на них кто-то пишет. Я конечно не спец вообще в вебе, я по с++. Но есть же всякие питухоны, джавы, сисярпы и прочее. Тем более сейчас эликсир появился вроде как подразумевающий замену руби. Но сколько лет я уже работаю прогером, для меня всегда было загадкой, кто эти люди пишущие на руби. У меня всегда было такое ощущение что руби это какой-то не настоящий малопопулярный язык.
>>2163244 Это такой красивый пхп который поднялся потому что на rails можно было очень приятно и быстро однотипно клепать приложения в стартупах или в заказной разработке, был бум скриптового говна и руби/питон/пхп примерно одинаково популярны были и все позволяли быстро калякать. Рейлс самый старый из крупных фреймворков пыхоплеяды, джанго и симфони попозже появились
Консоль работает (на вывод результата) так быстро, что нереально успеть прочитать даже хэллоу ворлд. Как-то можно это пофиксить или какую-нибудь IDE можете порекомендовать? Заранее спасибо.
>>2163244 Я сам только вкатываюсь, мне нравится синтаксис. Плюс во многих версиях RPG Maker этот язык встроенный для скриптов, а мне интересен геймдев.
>>2163264 >А что на счет элексира? Эликсир штука интересная, рубистов подкупал синтаксис и в целом схожая мотивация сообщества, но это только верхушка айсберга, потому что erlang и otp всё-таки совершенно другой стек и у него другие цели - в основном это телеком и распределенные системы, показательно что в создании дискорда смогли реализовать его сильные стороны.
Начинать знакомство с программированием через эликсир я бы точно не советовал.
Вкатился джуном на удаленку, 95к (компания в мск). Без всякой чуши с курсами, это мое первое место работы так что считаю отличным результатом, испыталку прошёл в сентябре.
Советую книжку для будущих джунов: Well grounded rubyist, Agile web deployment with Ruby on Rails 6. Начиная со второй книге уже начинайте делать банальные проекты по типу бложиков. Не стоит себе забивать голову слишком низкими вещами (по типу как челик с метапрограммированием, во первых вам никто не даст писать такой код в команде на позиции джуна, во вторых это только больше отодвинет вас от поиска работы, у вас и так будет время всему этому научиться уже на практике)
Похрюкал с челика который вкатился на 30к в рельсы где голодовка кадров из-за удаленки.
Также ещё раз про всякие курсы, во первых многие тимлиды хрюкает с таких резюме когда открываешь гитхаб а там только проекты с этих курсов, во вторых ребят вы же вкатывается не в самый популярный язык, тут намного меньше курсов и вы реально на одно лицо с этими одинаковыми проектами
Мне нужно прикрутить картинки к АПИ. Если я не буду вдаваться в подробности и просто сделаю по офффициальному гайду через ActiveStorage, я многое потеряю? Как я понял, есть миллиард способов это реализовать.
>>2163244 >Никогда не понимал нахуй эти ваши руби вообще существуют и на них кто-то пишет. Бэкенд в основном используются рельсы, сейчас еще помимо сайтов микросервисы много кто на них пилит >Но есть же всякие питухоны, В целом да, джанго слегка отличается, как и синтаксис питона, но в целом если знаешь что-то одно, то без проблем можно писать на другом, разница уже кроется в деталях, тут скорее дело привычки на чем писать. >джавы, сисярпы и прочее. Это фабрики по созданию фабрик, пока джавист пишет имплементацию интерфейсов которые он насоздавал чтобы запилить простой круд, рубист уже запилит весь проект. Ничего общего между языками, а уж тем более рельсами со спрингом нет, это абсолютно разные сферы применения. > эликсир появился вроде как подразумевающий замену руби Он только визуально похож и то из далека, всей няшности ООП из руби в нем нет и плюс это совершенно другая тема, там все крутиться вокруг эрланга и нацелено на отказоустойчивость. Абсолютно разные ниши. >Но сколько лет я уже работаю прогером А по тебе заметно
>>2164463 В смысле лучше/хуже? Я вроде не просил совета, ни в плане куда мне идти, ни в плане каких-то божественных откровений от чела который "не шарит в вебе" касательно вебовой хуйни. Я сам тоже не по вебу, поэтому охуительных мнений касательно веба не имею.
>>2163616 ага мимо строк прочитал) устроили прямо в штат по трудовому, уже юзаю плюшки в виде ДМС и оплаты обучения
>>2163619 возникают но не часто, у нас кодревью да и если фича не работает то явно ты что-то сделал не так и сразу поправишь) а так по ощущением словно за 1 месяц проходит год учебы (утрирую конечно, но оглядываясь назад уже вижу как можно было код намного более понятным и читаемым написать)
выдали MacBook Air m1 16gb 512gb ^_^, руби 3 на проекте так что все отлично работаете
спасибо, на удаленке работается отлично, за временем никто не следит, единственное что на синке в 4 дня всегда надо быть и рассказать как успехи по задачкам)
Собеседований было ровно два, прошел оба.
Расскажу тогда про собес именно туда куда устроился:
первый собес был с hr (тупо проверили что я адекватный),после него дали тестовое задание - написать магазин носков (лол), никаких наворотов не нужно, можно без регистрации, оценок и т.п., максимально простой. В другой компании тестовое делал это создание блога и что интересно тоже не нужна была регистрация / авторизация
второй с техническим лидом + разраб, спрашивали в основном на общее понимание компухтера (что такое http, почему один язык быстрый а другой медленный, что происходит после ввода адреса в браузере), по руби были такие: напиши хеш и достань значение, что может быть ключом в хеше, что такое extend и include и в чем их разница, по рельсам спросили вроде что вернет .find и .where и что отдается в action index у контроллера (коллекция или единичный), какие пет-проекты делал и немного поболтали про жизнь, что интересно и т.п.
Искал работу неделю, а вот учил руби + рельсы чуть меньше чем 3 месяца (фул-тайм, т.е. я вообще все время этому уделил), высшего образования у меня нет, опыта работы тоже (первое место), из смежного опыта это только игрался с php и сделал парочку личных кабинетов для Minecraft серверов (лол) и то друзьям за бесплатно))
Впервые столько текста пишу... Короче никаких рокет-сайнс вопросов не будет и никто не будет ебать по рубям и особенно по рельсам, вас чисто смотрят что вы не залетный и можете обучаться ибо один хуй у вас в голове хуйня и на настоящих проектах уже надо вас обучать. И не забывайте про софт-скиллы, если с вами не приятно общаться то и смысла брать нет т.к. с вами постоянно нужно будет общаться, мы же джуны) сори за ошибки и все такое, писал как мысли шли
1) бложик, чисто CRUD 2) микро-магазинчик + тесты! (хоть чуть-чуть тестов) 3) хочешь бота для телеги напиши (можешь даже без рельсы на Sinatra)
все что тебе надо показать это что умеешь делать CRUD апишки и понимаешь что в рельсе MVC (вот тут у меня моделька, а тут вьюха, а тут контроллер пук-пук)
только обойдись без гема devise и без заигрываний с method_missing и т.п. (показать что понимаешь что это такое норм но пихать везде это будет выглядеть как пиздец, вот на такое прям смотрят, я просто вместе с тех. лидом сидел в дискорде пока он разгребал новые резюме на джунов, так что инфа из первых уст) Очень много ребят с thinknetica со своими проектами с поиском шашлыков шли нахуй и из таких выбирались опять же те у кого блядь хоть что-то есть на гитхабе помимо этого однотипного говна с курсов. Логика тут такая: если ты ничего не захотел сам сделать и делаешь только по курсам то и заинтересованности у тебя нет и на начальном этапе ты даже не смог сам что-то сделать. Поэтому в очередной раз похрюкаю с thinknetica с их "выпускаем сильных джунов" которые сами ничего не делали))
ЕЩЕ РАЗ: Well grounded rubyist, Agile web development with Ruby on Rails 6. Читаешь первую, пытаешься понять, не получилось понять и по хуй, едешь дальше, читаешь вторую, тут как раз магазинчик делаешь, потом кряхтишь и делаешь небольшие проектики реально не большие не надо растягивать на НЕДЕЛИ, после устраиваешься на работу и там уже тебя направят, может опять первую книжку скажут почитать (ее все очень любят, даже в других команда поспрашивал). ТЫКАЕМСЯ по вакансиям с "стажер" и "junior", забивай хуй если кажется что не подходишь под второе и просто шли резюме и проси тестовое
>>2164640 Она нудная, как и все книги этой конторы. Но есть и годные моменты. По большому счету, там просто идет разбор языка, дефолтных методов. Не обязательно ее читать. В любой книге по rails, вначале, есть инфа чисто про ruby. Этого более чем достаточно.
>>2164640 потому что вопросы на собесах из этой книги, и ничего она не старая)) дохрена проектов еще на Ruby 2.7
в чем разница между книгой и статьей? если у тебя такой уровень англ то ты все будешь переводить по словарю, магической таблетки нет - "прочитать статью и войти вайти"
>>2164703 пара вечеров и все, дольше ныть что нудная книга особенно когда работы нет)) вот сейчас я спокойно ною что нудно и мне похуй
>>2164726 организация ру, проект не для ру) локализации не нужны
Официально разрешаю вам зарегистрироваться с вашей фейко-почты-на-protonmail, номер телефона любой (подтверждать не нужно). Ближе к делу постараюсь вкинуть вам ссылочку непосредственно на платформу, где будет стрим и вопросы
Сортировка ActiveRecord по стринговой колонке в "натуральном" порядке. Анончик, быстрогугл ничем особо не помог, если мне не в этот тред то извиняй. Пилю на галере сайт на рельсах, причём вкатиться пришлось с полгода назад и довольно экстренно, поэтому до сих пор могу не знать некоторые простые вещи.
Сейчас вот такая задача: есть набор сущностей с названиями вида Хуй 1, Хуй 2, [...], Хуй 12. Если написать модель.order :name, то они выдадутся в порядке Хуй 1, Хуй 10, [...], Хуй 12, Хуй 2, [...]. Как мне их выдать в нормальном порядке (Хуй 1,2,3,...,12)? Пердолить коллации для постгреса?
Что правильно было бы хранить длину хуя отдельно знаю, но это только вариант именования, а вообще может быть по разному, в том числе необязательно с цифрами. По той же причине не могу сортировать кастом к числу, нужно именно отсортировать строки с правильной сортировкой по содержащимся в них числам в случае наличия таковых.
>>2168523 Блядь, ну я же написал, что нельзя переделать в две колонки, потому что нечего переделывать. Оно задумано как название без всяких цифр, просто цифры могут быть тоже, и тогда с ними должно сортироваться правильно.
>>2168533 Не знаю насколько быстр сплит_парт, скорее всего такой запрос подвесит базу на большой выборке.
Самый оптимальный вариант - новая колонка, в миграции пробежаться по всей базе и вытащить цифры из названия, так же повесить коллбэк before_save на модель, в случае изменения имени обновлять поле, в запросе просто ордер по двум полям. Тебе же не нужно менять само название, просто появится служебный столбец с цифрой, да и всё.
>>2169209 Я сегодня смотрел чувака с гитлаба, который рассказывал как они на 3 версию преходили, короче хотели прикрутить типизаци rbs охуенно, 3.0 производительная и пиздатая, короче боялись что гемы не будут иметь поддержку 3 версии, но там все охуенно и все нужные гемы перевели, но мы так и не переехали за 9 месяцев обосрались с собственным кодом. Остальное уже буду в пятницу с полторашкой пива или бутылкой вина смотреть, трезвому тяжело.
>>2169528 Перезапусти базу и попробуй сам в консоли. Возвращает только те модели, к которым ты уже обращался в этой сессии (или хуй знает точно, по какому принципу).
>>2169535 >Возвращает только те модели, к которым ты уже обращался в этой сессии Какая версия Rails? До 6 нужно было прописывать require_dependency и autoload_paths.
Антош тебе нравится твоя работа на рельсах/руби? Можете расписать примерный план развития ruby/rails разработчика? Такое ощущение, что после нескольких лет разработки рубисты перекатываются на NodeJS.
>>2171023 >после нескольких лет разработки рубисты перекатываются на NodeJS. Ты вообще бэк на ноде видел хоть один? Это полный пиздец, после рельс этот зоопарк из рандомных говнолиб, самописного говна и с нулевой культурой тестирования даже палкой трогать должно быть противно.
Посоветуйте хороших, среднего размера Rails-проектов почитать. Что-то все какие-то либо с очень простым функционалом, либо гитлабы на тонны кода, где хуй разберёшься.
>>2171166 Вот этого двачую. Перекатился на Дно.жс Нод.жс с Рельс году в 2016-м. С тех пор честно говоря жалею, иногда даже думаю вернуться лел. Но суть Ноды именно такая. Зоопарк библиотек, ебля с Тайпскриптом чтобы подружить его с Эксперсс миддлварями от Васянов, вечные муки выбора. Выбрал ОРМу, через год протухла. Выбрал роутер, через год ищут мэйнтейнера. Выбрал новый успешный фреймворк Nest.js, получили ебучий ангуляр на бэкенде. И так всё время. Много сил уходит на борьбу с инструментом. Но нет спасения даже если проект уже зрелый. Там совсем пиздец. Попробуй разобраться. Последнее время стараюсь брать проекты где надо начинать с нуля. Потому как бы ты там не старался, жс код выйдет write only, и даже ты сам уже через год будешь тупить и не понимать как до такого докатилась кодовая база. А если попадается проект без тестов и какой-нибудь серверлесс, то лучши сразу делать вдоль.
>>2170977 > А зачем боту для телеги веб-приложение?
Разные боты могут быть, можно удобно инстанцирование процессов запускать, например. Масштабирование так сказать.
А можно хранить логику в стейт машине, например. Если это некие шаги по форме с йоба-гуардом.
Если у тебя 100 и 1 кнопка в боте, то колбеки телеграма можно обернуть как url пути и матчить это все в роде или синатре. В не в бесконечном case statement или on matching'е.
Так же можно подвязать ORM.
Но, да, можно без и фреймворков конечно, но дольше.
>>2173452 Так бот это процесс, который слушает сокет и имеет какой-то постоянный стейт, а веб-фреймворки - стейтлесс приложения, как ты собрался коммуницировать из рельсы с ботом?
>>2174065 Ты не совсем понял. Имеется в виду, что код на Руби в веб-фреймворке стейтлесс. Он то общается с базой, но подразумевается, что он стейтлесс, когда его рассматриваешь отдельно от базы. Например, если у тебя есть один инстанс(виртуалка или контейнер) с базой, то инстансы с РоР ты можешь добавлять и убирать. И ничего в принципе не должно ломаться, ибо РоР у себя ничего не хранит, а только делает вызовы к базе, возвращает ответ и всё. Хотя бот тоже может быть стейллесс в общем-то, но дело в том, что это не http и процесс один должен висеть бесконечно. Но веб-фреймворки всё равно некоторые могут помогать в этом.
>>2174160 >но дело в том, что это не http и процесс один должен висеть бесконечно Ты охуеешь, но чтобы сервер принимал и обрабатывал http-запросы, там так же должен висеть бесконечный процесс с листенером.
>>2173221 Так РАБотаю на дядю же. Как будто у меня есть какой-то выбор в большинстве случаев. Сидишь ты такой жуниор-недо-мидл. Заходит ЦТО и лид ладно, я гребец на галере, что с меня взять. И с вертухи СОСНИЦКИЙ ЗАКАПЫВАЙ СВОИ РУБИНЫ БУДЕМ ТЕПЕРЬ НА НОДЕ КОДЕНЬКАТЬ. Ну хули делать. Сначала один сервис, потом другой. А потом уже прошло лет пять, руби забылись, да и ты уже недосеньор, получаешь гроши, но всё равно больше чем если снова идти на Рельсах верстать круды недо-мидлом сенькой-то не хотят брать. Отака хуйня.
Алсо после этих постов таки сел и начал пилить на новых рельсах пет проект. Госпади, какая же годнота анон. Я рили начал загоняться, что мол а нужны мне эти деньги, если каждый день тошнит уже от жс.
>>2174648 Что-то на всех вакансиях пишут, что главное - опыт веб-разработки на любом языке. Я бы на твоём месте ну как минимум почитал вакансии и поспрашивал.
>>2174670 Js то все ровно ruby разрабу знать надо на уровне фреймворка, который будет на проекте. Это не мобилки, где kotlin или swift(хотя там тоже знать надо, но на уровне addEventListener).
На руби есть нормальные тайп-хинтинги? В петухоне они охуенные. Все понятно, просто приписываешь типы к аргументам у функций и не паришься. В руби же какой-то пиздец. Один RBS чего стоит https://github.com/ruby/rbs Отдельный файл со своим синтаксисом нахуй. Остается только громоздить код с документацией через YARD?
>>2175024 >На руби есть нормальные тайп-хинтинги? Но нахуя? Нужны типы - бери типизированный язык. Нужна уверенность в коде - пиши тесты, типы тебя не спасут. Динамические языки не для того динамическими сделаны, чтобы потом к ним костыльные типы сбоку прикручивать.
>>2175033 Питухон динамический. Но там типы(они не ебут тебя если передал не то, они больше документируют что приходит, что выходит) спасают кучу времени при написании кода, или при изучении чужого кода. Это действительно бро.
>>2175042 > они больше документируют что приходит, что выходит > спасают кучу времени Ну, для конкретно рельсовой разработки, например, куча этого времени уже спасена большим количеством стандартных решений в коде. В большинстве случаев ты там особо ничего никуда и не передаёшь, всё само под капотом гуляет. Это грубо говоря, конечно.
>>2175819 >Без лишней ебалы и ОТДЕЛЬНЫХ ФАЙЛОВ Так это и есть лишняя ебала - лезть в рабочий код чтобы прикрутить тайпчекинг, когда можно просто прогнать генератором и внести уточнения в самостоятельном файле.
>>2176240 1. Где-нибудь уже идет нормальный разбор тамошнего кода? Сам рельсовик, интересно бля 2. Последний коммит в web 3 года назад, разве это то что нужно?
>>2176351 >2. Последний коммит в web 3 года назад, разве это то что нужно? Это рейлс-монолит который они перекатывали на го-микросервисы и реакт, в любом случае там очень много интересных вещей в коде.
>>2176633 По поводу интересных вещей есть где-нибудь разбор или хотя бы обсуждение? Сам поглядел, не сказал бы что очень интересно, рельсы они и в африке рельсы, но мб долблюсь в глаза
>>2177243 Там контент изначально предполагался для русскоязычной аудитории. Пилить отдельную версию для таких, как ты никто, не будет, это невыгодно с точки зрения развития канала.
Некоторые считают знание английского каким-то сверхсложным навыком, из-за чего у них возникает маниакальное желание его практиковать и ВСЕ смотреть по англицки. Эта претенциозность смешит.
>>2177294 блять серьезно? типа может есть еще медики которые латынь не понимают? это требование профессии >>2177247 может хотя бы из уважения к собеседнику надо выложить оригинал?
>>2177313 >типа может есть еще медики которые латынь не понимают? Не поверишь, но да. Большинству медиков латынь вообще не нужна, они сдают соответствующий экзамен в универе и забывают про нее. Латынь это скорее инструмент для коннекта медиков из разных стран, так как части тела, болезни и лекарства могут называться там по-разному.
>это требование профессии Твоей, может быть, да. Но в программировании как таковом нет никакого имплицитного требования знать английский. Как и в большинстве IT-вакансий в РФ.
>>2177358 >Но в программировании как таковом нет никакого имплицитного требования знать английский. Охуенные истории, учитывая что вся актуальная дока и рассылки на английском, все дискуссии, публикации и продвинутые материалы на английском, да и сам Дэвид Хайнемайер в интервью повыше абсолютно однозначно высказался на этот счет - существует международный язык, либо ты его знаешь и пользуешься благами цивилизации, либо не знаешь и гниешь в своей СНГ-параше с 1С и прочей экзотикой.
>>2177450 Осталось только выяснить, зачем ты обсуждаешь программирование на русскоязычной имиджборде (как ты выразился "СНГ-параше"), а не идешь на форчан или реддит. Уровень языка не позволяет?
>>2177481 Не знаю, я люблю русский язык и русскоязычное коммьюнити, поэтому IT обсуждаю преимущественно с русскоязычными, в телеге или тут. Поэтому не вижу проблемы в том, что интервью с крутыми разрабами выходят на русском.
А ты то что забыл в месте, характеризуемом тобой как "параша"?
>>2178156 Чего вы так дрочите на асинхронность? Это же костыль ебаный, от которого проблем больше чем пользы, тем более в вебе, где эта асинхронность вообще не вперлась никуда.
>>2178331 Переключение между тредами гораздо более затратно, чем между задачами в эвентлупе. >в вебе не нужно В вебе дохуя блокирующих io, даже если не считать опасных операций с изменением стейта
>>2178365 >В вебе дохуя блокирующих io Каких? Соединение обслуживается веб-севрером, запрос к базе\кэшу можно подождать асинхронно, но толку от этого, если для следующей операции уже нужны данные, а где там еще io?
>>2178390 >Каких? Соединение обслуживается веб-севрером, запрос к базе\кэшу можно подождать асинхронно, но толку от этого, если для следующей операции уже нужны данные, а где там еще io? Что бы ты мог делать 200 таких операций одновременно, а не плодил на 200 реквестов 200 тредов
>>2178399 Кстати это уже есть в 7 рельсе, довольно интересная фича с учетом того, что теперь можно использовать разные базы данных для моделей, возможно и не пришлось бы твичу распиливаться на микросервисы, если бы это всё существовало на тот момент.
>>2148961 >А SO должен выполнять только одну задачу 1 методом Почему?
А если мне нужно сделать доступ к какому-то АПИ (платёжному там или хуй его), у которого, скажем, четыре метода? Мне делать ServiceObject::GetInfo.call, ServiceObject::PostUpdates.call и так далее, что ли? И нахуя?
>>2175850 >magnet:?xt=urn:btih:N5BLZ6XECNEHHARHJOVQAS4W7TWRXCSI&dn=twitch-leaks-part-one&tr=udp%3A%2F%2Fopen.stealth.si%3A80%2Fannounce Не работает чот.
>>2178987 Забавную штуку до продакшена довести очень сложно.
Даже если у вас в компашке решат выучить, скажем, Crystal+Amber вместо рельс. Это нужно до всех работников донести (а зачем им это делать, если дальнейшей применимости этих знаний нет?). Потом нужно где-то искать новых погромистов, которые это знают или не против выучить. А даже если вы сможете, то и будете особенными мальчиками, и никто за вами не последует.
Так што за пределы пет-проектов или фриланса забавные штуки редко выходят. Скажи спасибо, что вообще рельсы есть, иначе сидел бы сейчас и писал на пыхе.
Кто-то знаком с rswag? У меня что-то ни хуя не работает; пишу rspec - все тесты красные (параметры в контроллер не передаются, кажется), пишу rails rswag - все тесты зелёные (даже где я специально написал что-то нерабочее).
>>2181093 Textmate не пробовал - говорить не буду. Сам проходил путь atom -> vscode -> sublimetext -> rubymine. Атом был хорош, но уж очень медленный. VSC - это такой Atom получше в плане производительности, но со своей спецификой. А именно: телеметрия майков, зачастую кривые плагины (со своей дополнительной телеметрией), ужасная реализация vim-like работы с текстом. Тупо неудобно пользоваться (лично мне). SublimeText - очень шустрый, но закрытый код, неудобная система плагинов, стагнация проекта (с моей т.з., могу ошибаться). Rubymine - идеален для кодинга на RoR, все что надо - есть, плюс отличная реализация vim-like (для меня это важно, да). Минус - прожорлив, ибо Java. С другой стороны, на одной из моих машин (некроноут), внезапно, работает шустрее VSC.
А так - все хочу полностью пересесть на vim/neovim, обвешенный нужными плагинами, но когда шарю скрин в зуме, коллегам НЕПОНЯТНО, приходится открывать проект в том же Rubymine, т.к. они в нем работают.
Вообще, очень много вижу ruby-разрабов в ютубчике и ирл, которые юзают только vim и довольны. Как ни странно, чаще всего они при этом на маках. Парадокс?
>>2181107 Из плагинов на руби я в VS code использую базовое расширение для руби (синтаксис, интеллисенс в нём же, кажется), endwise (авторасстановка end, работает хорошо), и erb и html-сниппеты, когда вьюхи пишу (работают не идеально, но без них вообще невозможно). Ну и рубокоп ещё. Ещё тыкал несколько (понравилась задумка подсветки блоков с end разными цветами, но она хуёво работает и триггерится на ключевые слова без end; например, if-modifier, из-за этого всё ползёт)
А всякие идешные штуки типа посмотреть определение метода не очень-то и нужны, особенно когда пишешь по соглашениям.
>>2182431 На руби же вообще почти как нигде принято покрывать код тестами. Если бы я увидел, что ты запушил руби код без тестов, то я бы начал читать тебя пидором, пидорасом и пидорком незамедлительно.
Короче, двач, я тебе консерн для кэширования запросов в БД написал и в благородство играть не буду. Скажешь, что не так с кодом и не изобретаю ли я велосипед - и мы в расчёте.
В консольке потыкал - вроде работает (только надо прогнать rails dev:cache или запускать в production).
>>2186380 > However, it's important to note that query caches are created at the start of an action and destroyed at the end of that action and thus persist only for the duration of the action. If you'd like to store query results in a more persistent fashion, you can with low level caching.
>>2186468 Если бы меня спросили, я бы сказал, что вместо использовать ненормально, а вместе ок. В монгу можно писать объёмные данные, по которым нужен поиск, в которых нет связей и которые не жалко проебать.
>>2186326 Тоже писал похожий костыль для кэширования, это сильно ускоряет рельсу, но всё таки программа становится сложнее с введением еще одного слоя данных. Еще недавно наткнулся на https://github.com/khiav223577/active_model_cachers но пока не юзал.
>>2186737 Ну это не совсем костыль, он особо нового функционала не представляет. Это всё те же Rails.cache.write и Rails.cache.fetch, просто без дублирования кода и с автогенерацией методов.
Потсоны, какие есть преимущества у рельсы перед нодой в контексте создания крупного API-only финтех проекта? Кроме очевидного в 5 раз быстрее крудошлёпства Нужно предьявить кабанчику и да, другие варианты он не рассматривает
>>2195799 На вскидку - в npm чуть ли не ежемесячно находят десятки и сотни малварных библиотек с миллионами установок. У руби, конечно, такое тоже бывает, но в разы реже и не в таких масштабах.
>>2181107 Как вообще работать в Виме на Маке? Год так сидел, блевался от необходимости использования Cmd и Ctrl в зависимости от контекста. Правда в основном использовал обычную не епловскую клавиатуру, может на Макбуках реально удобней.
А так рекомендую дропнуть ИДЕ, пересесть на Вим и вообще забыть о проблемах. и удобном рефакторинге
>>2196356 >npm чуть ли не ежемесячно находят десятки и сотни малварных библиотек с миллионами установок. Они там долбоебы в жсе, на каждую хуйню библиотека в стиле is-odd, которая тянет зависимостей так что придётся пару гигов качать в node_modules. В итоге даже в маленьком лендосе дохуя библиотек, в лапше которых хуй кто разберётся и потенциально можно засунуть всё что угодно. Это вместо того чтобы один раз запилить большую стандартную библиотеку, которая покрывала бы основные потребности как во всех других языках.
>>2200033 >Они там долбоебы в жсе, на каждую хуйню библиотека в стиле is-odd, которая тянет зависимостей так что придётся пару гигов качать в node_modules. В итоге даже в маленьком лендосе дохуя библиотек, в лапше которых хуй кто разберётся и потенциально можно засунуть всё что угодно. Вот, вроде, все хорошо начиналось... >Это вместо того чтобы один раз запилить большую стандартную библиотеку, которая покрывала бы основные потребности как во всех других языках. ... а закончилось как всегда.
На какой язык перспективнее поглядывать украдкой рубисту: го или эликсир? Го вроде мейнстримнее и востребованнее, но эликсир так по-особенному миленько ебанутый, да и на вакансиях часто бок о бок идёт с руби.
>>2202549 Пробовал эликсир, но мне он как-то не зашел, go поприкольнее будет и показался проще в написании, 3 строчки и микросервис готов, плюс там вакнсий больше. правда есть свои особенности в виде отсутсвия исключений и дженериков из-за этого постоянно приходится писать повторяющийся код Еще как говорили знающие люди, что в работе с эликсиром потихоньку помимо самого эликсира нужно будет вникать в erlang и особенности работы виртуальной машины, деплоя и прочей хуйни аналогично как котлинисту или скалисту нужно вникать в жабу Я вообще на rust поглядываю, выглядит интереснее, по началу когда компилятор постоянно мозги ебет как-то хочется забить на это все, но потом понимаешь что в том же go ты бы скомпилировал говно и оно работало бы, а тут нихуя, давай делай нормально и ошибки в проде уже будут только связанные с логикой. Плюс куча синтаксических фишек, местами руби напоминает.
>>2206706 Примативность определяется социальным статусом. Ландау не мог 10 кг поднять из-за слабости мышц, а студенток ебал и заставлял жену им постель стелить.
накидайте каких годных статей по тестированию, не имеею ввиду документацию, а бест практис, как организавывать тесты, какие нужны сколько и т.д. мне надо к собесу подготовиться, а я блядь никогда толком тестов не писал.
>>2207730 > google ухх сука,как же бесят такие хуесосы я надеялся найти анона который избавит меня от этого тернистого пути, где нужно отфильтровать миллионы мусорных ссылок о том как протестировать функцию сложения 2х чисел с помощью рспек, анона который уже прошел этот путь и может по доброте своей душевной предоставить самую выжимку действительно полезного материала по этому вопросу. Если бы гугл не выдавал мусор, мб я бы и не писал бы сюда как думаешь, хуесосина? >>2207734 к чему вопрос? не задрачивал. не готовился мне надо просто подтянуть знания по тестироваю, остальное ок
% tree . Rakefile bin hola hola.gemspec lib hola translator.rb hola.rb test
Не работает пример отсюда, пишут что "require 'hola'" в bin/hola должно работать, но пишет "cannot load such file". Где собака зарыта? Или это только для собранного в пакет gema? А как люди, тогда свои поделия тестируют, каждый раз гем что ли собирают?
Пютаюсь набить руку, пописав всякие нужные утилиты себе, вот пытаюсь в правильный project structure и сразу член в лицо.
>>2209132 >>2209152 Так это только для упакованного гема, в том примере что я скинул или нет? Ваши ответы - нихуя не ответы.
Или давайте так, real world example. Вот есть проект https://github.com/castwide/solargraph вот у него bin файл https://github.com/castwide/solargraph/blob/master/bin/solargraph и в bin файле, только "require 'solargraph'", который подтягивает из lib/solargraph.rb. Без каких-либо relative или самописных класс-лоадеров. Так вот разработчики, кто пилят этот проект, как сами-то "bin/solargraph" юзают? Каждый раз гем, что ли хурят?
Вообще вопрос по тестированию не так уж и плох, я вот считаю что способность писать код покрытый тестами и есть та пропасть между джуном и мидлом, то есть джун, который научился писать нормально тестируемые системы уже тянет на нормального разраба.
>>2209883 > всем кому всем? только тебе и твоей подружке.
> и начал всем рассказывать я пришел в тред, спросил что хотел. ты ничем помочь не можешь, но все равно начал дерзить. Google. а такую баянскую ссылку http://pogugli.com/?367527 поленился сделать? во ржаку ты упустил конечно, очень остроумно бы вышло.
>>2208580 >миллионы мусорных ссылок о том как протестировать функцию сложения 2х чисел Ну да, а что ты хотел? Тестирование в теории - дело не сложное, вызвать функцию и сравнить результат работы с эталоном, всё тестирование крутится вокруг этого простого концепта.
>>2210270 >Тебе ответили, иди нахуй гугли, ты думал тебе разжуют и в ротик положат?
ты ответил идти гуглить, ты думал что тебе спасибо скажут?
>>2210327 > а что ты хотел? > годных статей по тестированию, не имеею ввиду документацию, а бест практис, как организавывать тесты, какие нужны сколько и т.д. унать что покрывать тестами, а что не надо, в каких случаях мокать, в каких не мокать. и стоит ли вообще мокать сколько нужно юнит тестов, сколько интеграционных и т.д. ответы на общие вопросы по тестированию, по организации тестов, а не рспек. они даже с руби не связаны
Жаль что crystal не взлетел, прям язык мечты с отличным синтаксисом и производительностью правда там наверное пожертвовали метапрограммированием, но иногда погружаясь в дебри библиотек думаешь уж лучше бы язык таких возможностей не давал лол. Смотрел видос "rust for rubists" блин да какой рубист в здравом уме сможет писать с таким синтаксисом без рвотных позывов. >>2202549 Го в ту же степь, везде писать if err != nill, крыша поедет >>2209338 Это работает потому что в solargraph.gemspec первая строчка $LOAD_PATH.unshift File.dirname(__FILE__) + '/lib' require по очереди обходит все директории из $LOAD_PATH пока не найдет там файл hui.rb (require 'hui'). Но такое используют в основном для папки lib, во всех остальных случаях - require_relative, так как он быстрее только одну директорию надо проверить и с переопределением путей всегда есть шанс(особенно в крупных проектах) что кто-то создаст какой-нибудь файл http.rb и вместо внешней библиотеки будет реквайрится этот файл и ты долго будешь ломать голову почему твой http.get работает не так как в документации лол.
>>2211656 В gemspec только бандлер смотрит, программа туда не лезет, в bin как раз нет relative чтобы можно было закинуть этот файл куда-нибудь в /usr/bin и он бы запускал программу.
>>2202594 > но там один Phoenix и всё. Что за херню ты несешь. Это у вас руби рельсами единый. А Elixir тебе предоставляет всю экосистему эрланга и OTP, а бОльшего и не надо. А феникс он только для формошлепства годится, на серьезных проектах обходятся без него, для HTTP API вполне хватает плага, для вебсокета чистого ковбоя. Мимо 6 лет в эликсире/эрланге, перекатился после 5 лет на руби
>>2212396 >на серьезных проектах обходятся без него Что за серьезные проекты на эликсире, если не секрет? Вряд ли это веб, если даже от фреймворка удается отказаться, да еще и с довольно интересным LiveView.
>>2212413 Я делал процессинг и биллинг на Эрланге в телекоме. И вот последние 5 лет делаю бекенд на Эликсире, но если назову, то это мгновенный деанон компании, так как проект уникальный для нашей страны, а по опыту и стеку, и тому, что сижу на двачах, сразу поймут, кто из команды. Могу только сказать, что там куча распределенных систем и сервисов, реалтайма и сильный упор на безопасность и защиту данных. И в заказчиках у нас в основном крупные госконторы. Еще часто пишут с вакансиями, в основном из США. Из того, что вспомнил за последнее время, это какой-то фармтех, финтех связанный с трейдингом, сбор и анализ данных в сфере IoT, сервер для мобильной дрочильни и какая-то аналитическая платформа. Еще много криптостартапов пишет, но я их, естественно, даже не рассматриваю. Короче с Elixir, если тебе каким-то чудом, удалось получить хотя бы 2-3 года коммерческого опыта, ты становишься очень желанным единорогом, которого хотят даже из США с зп от 5к$ за опыт в 3 года и 8к$ если уже лид. Причем не нужно знать зоопарк технологий, Elixir + Erlang OTP, это все что нужно из языка. Остальное уже всякие sql/nosql базы, брокеры, терраформы, aws, docker, ну в общем что и так каждый должен знать. Кстати хотел я тут выучить Go, в качестве этакого запасного аэродрома, но после эликсира вообще не могу на нем писать, уж слишком хороша в эрланге акторная система, параллелизм, мультикор, отказоустойчивость и мастштабируемость распределенных систем из коробки.
>>2212481 В плане синтаксиса нет, из эликсира можно напрямую использовать эрланг и весь эликсир код компилируется под Erlang VM, поэтому нету нужды чисто на эрланге писать. но сам OTP, как фреймворк, нужно знать. И приходится иногда копаться в кишках всяких ранчей, ковбоев и использовать стандартную библиотеку эрланга, но как я уже сказал, функции из нее вызываются элементарно из эликсир кода, как обычная функция. Еще хочу упомянуть об одной киллерфиче, которой реально не хватает в других языках. Это подключиться к консоли работающей системы и получать полную интроспекцию, т.е. можно узнать стейт любого процесса, выполнить любой код, например запустить трейсинг и самое классное, хотлоаднуть код без перезапуска сервиса, например добавить резко фикс, не дожидаясь деплоя или добавить где-то лог.
>>2212493 Бывает ли такое, что нужно подключить библиотеку, а её просто нет или там 10 коммитов без необходимого функционала, и приходится велосипедить?
>>2212691 Постоянно. Либо вообще нету нужного функционала, либо он недостаточно протестирован и не production-ready. К, сожалению, комьюнити Эликсира и Эрланга плохо развито и в основном там обитают всякие формошлепы, рубисты и хайперы, я уже 6 лет в теме и до сих в еженедельной подписке всякие посты про хелловорлды и "Как сделать простейшую вещь на Эликсир". Это кстати еще одна из причин, почему я не люблю феникс, он притягивает в комьюнити вот таких вот типов. Зато это дает возможность тебе самому стать очень крутым и известным в опен сорсе, делая не самые сложные библиотеки. Но справедливости ради скажу, что минимальный набор все равно есть, ORM для работы с PG/MySQL, Redis коннектор, Kafka/RabbitMQ коннекторы, процессинг бекграунд джобов. Но если что-то специфичное, то скорее всего самому придется делать.
>>2212858 P.S. Но все необходимое для создания качественного велосипеда у тебя будет. Еще не было ниразу такого, чтобы мы не смогли что-то с нуля написать.
>>2212493 > хотлоаднуть код без перезапуска сервиса, например добавить резко фикс, не дожидаясь деплоя или добавить где-то лог надо же, совсем как в пыхе знали бы наши госконторы за что платят, давно бы без работы остались
>>2212964 Если не знаешь о чем говоришь, то лучше промолчать. Сможешь на пыхе обновить код, который обрабатывает аудио-видео конференции, без отключения текущих конференций? То-то же. А эрланг может. И да, они знают, без сертификации кода и его глубокой проверки ничего ты в гос конторы не внедришь, так что ПНХ.
>>2212964 >>2213011 При всем при этом он остается компилируемым языком и работает значительно быстрее, чем всякие интепретируемые, вроде пыхи. Да и причем тут вообще ПХП? Сравнил, блин, тоже. В моем посте я скорее сравнивал с более менее конкурентными языками, вроде Java/Scala, Go или C++. Там, насколько я знаю, нету такой возможности или если и есть, то не так просто, как в Эрланге.
>>2213055 Ну, непосредственно микшированием, обработкой потоков занимается софт на Сишке, это да. Но обработка и проброс событий/запросов до сервера звонков и от него до клиентов, управление сессиями и прочая транспортная фигня делается на эрланге и намного-намного проще, чем на чем либо. Погугли для чего вообще Эрланг создавался, как раз для телекома.
• Inertia on Rails: Backend-driven frontend Марсель Мустафин, Ruby engineer, Uscreen • Modern Make for Modern developers Иван Немытченко, Head of Development, Urban Connect • Windows 11 для Ruby разработчика Никита Ратников, Ruby backend developer, Evrone
>>2216443 >А давайте поговорим о никому неизвестной пыхапешной библиотеке для SSR! > Интегрируют её в рельсы А хотвайр и рефлекс блин зачем существуют??? Я под впечатлением от этих залетных пыхарей.
>>2216443 Это не для SSR а для пердоления SPA на популярных js фреймфорках но с использование turbolink эффекта как в stimulus. В стимулусе ты фронт пердолишь на беке. Любой нормальный фронтендер тебя с твоим стимулусом нахер пошлет.
>>2216463 разница с обычным спа в том что ты не делаешь монолитный супер фронтенд на жиэсе и грузишь его жсонами, а делаешь приложениие исходя из концепции одна страница - одна модель.
>>2216463 Я сам несколько лет назад шутил над стимулусом. А сейчас уже два проекта на нем в прод сдал. Stimulus 3 - уже практически идеален.
И это всё пока ваши фронтендеры MVP еще не доделали. За плечами уже 6 лет работы с Реактом, знаю какие там "нормальные фронтендеры" и производительность разработки. Нормальную апликуху сделать, это вам не редюсером сёрануть в бесконечность. Тащемта уже переписал один средний проект с Реакта на Hotwire и счастлив.
>>2216463 А нахер нам сдались оверпраснутые смузихлебы? Я помню еще те времена, когда даже профессии не было такой, "фронтендер", были только верстальщики.
Давай я тебе на живом примере объясню: Делали с ребятами фуллстеками сайт. Когда пришел черед делать лендинг, сделали его вместе с приложухой на рельсах. На всё про все на условных 20 страниц(с мобайлом) ушло месяц времени на трёх фуллстеков. Писали на чистом HAML. И всё было отлично.
Год спустя сделали новый дизайн для всех этих страниц - цвета поменяли, новые картинки, иконки, текст. Но ничего кардинально не поменялось. Фронтендер решил переделать всё на реакте. И вот уже год эти 20 страниц доделать не может. И то что сделанное - кривое. А ведь по идее этот человек должен делать качественнее и быстрее, чем всякие фуллстеки. И вот таких примеров я тебе могу дать вагон.
Фронтендеры это уже рудимент середины 10-тых. Очнись.
>>2216665 Извини, но кулстори какая-то. В одно харю писал crm на вуе и php. Что-то сложное на беке рендерить бекенд фремфворками это то еще мозгоебство. Только не надо тут магического мышления, что рельсы со стимулусом не такие как все остальные бекенд фреймворки и позволяют сложные фронтенды пилить. Мне нравится например стимулус + симфони 5, но для чего-то сложного это не годится. Преимущества фронтендеров начинаются когда надо делать много кастомных компонентов и уже из них конструировать фронтенд.
>>2216867 > В одно харю писал crm на вуе и php > . Что-то сложное на беке рендерить бекенд фремфворками это то еще мозгоебство. Только не надо тут магического мышления
То есть ты пыхарь залетный и даже понятия не имеешь что из себя представляет разработка на Рельсах с хорошим инструментарием в 2021, но при этом ты утверждаешь, что фронтенд рендеринг продуктивней чем фуллстек разработка на рельсах?
Я согласен что бекенд рендеринг продуктивнее когда у тебя есть ТЗ с перечислением страниц, форм на этих страница и другой доп функциональности. Типа магазина.
Когда надо сделать большую систему, с учетом того что ты ее будешь расширять не один год, плюс не заботится о том то у твоего бека будут разные клиенты мобильные, десктопные. То проще архитектуру касающуюся например отделов компании, отображения бизнес процессов сделать на фронтенде, а на бекенде реализовать только бизнес логику и управление правами доступа.
>>2216921 Так у тебя тоже никакой конкретики, распилить приложение надвое и повесить часть работы на js, ну этот подход не новый, все в курсе как это происходит и какие сложности за собой несет. Рейлс сейчас предлагает снизить архитектурную сложность, сохранить целостность приложения, отказаться от монструозного фронта и просто реплейсить innerHTML по селектору, а в качестве канала связи использовать вебсокет и бродкасты, по крайней мере в тех местах, где в реальности логики и стейта на клиенте не требуется (почти нигде не требуется).
>>2216983 Такое сейчас и пхп могет. В laravel есть инертия и лайввире, в симфони стимулус с хотвире. Только каким образом у тебя передача хтмл вместо жсонов упрощает архитектуру?
Когда у тебя отдельный фронтенд то ты можешь один и тот же бекенд для разных клиентов использовать. Максимум профита от graphql например
Когда у тебя отдельный фронтенд общающийся с беком через узкое горлышко REST API его проще тестировать и мокать, чем монолитную лапшу со стимулусом, которую только энд ту энд тестами протестировать.
Когда у тебя несколько малых частей взаимодействующих через узкий интерфейс, у тебя зацепление модулей ниже и разделение функциональности выше
При развитии монолитов их обычно распиливают на части для упрощения разработки.
>>2217009 >В laravel есть инертия и лайввире, в симфони стимулус с хотвире. Только каким образом у тебя передача хтмл вместо жсонов упрощает архитектуру?
У меня есть реальный кейс когда писал довольно сложный сайт 3 года на реакте, а потом менее чем за пару месяцев переписал всё на Hotwire. И всё отлично. Переиспользование кода и скорость разработки просто космические.
>>2217163 можно Стимулус - микрофреймворк, ориентированный на ванильный жс. В отличие от реатов с вуями что он совместим с турбо. Но без турбо в нем смысла нет. Турбо перехватывает клики, аяксом скачивает страницу и деает documen.open Это в грубом приближении. Есть возможность кусок, например формы, заменить без перезагрузки страницы. Приложение начинает работать как SPA, но хтмл ты продолжаешь генерировать своим бекенд фреймворком, а не жсом как в SPA.
>>2217225 Паймон один, они вместе с https://twitter.com/sstephenson долбилась в жопы прямо на рабочем месте. Потом пришёл DHH и сказал не делать этого на работе. Это им не понравилось, в результате DHH выпер их с Basecamp. Это уже старая история
>>2220476 >Везде с этим Twitter носятся, мол переписали / перешли Только еще забывают о том, что "переписать уже устоявшийся на рынке и приносящий миллионы хайлоад-проект на более производительный стек" и "написать с нуля приносящий миллионы проект, который только-только входит на рынок" это несколько разные вещи, и во втором случае гораздо больше ценится удобство и скорость разработки, а для оптимизации пары сотен тысяч запросов можно и копеечный сервер докупить, а не ебать мозги. И сравнивать удобство разработки на руби с разработкой на любом низкоуровневом языке - это конечно смешно.
>>2222201 У меня тоже, съебал со старой работы, зашел на hh, заполнил резюме за 10 минут, откликнулся на две интересные вакансии, а потом всю неделю разгребал хрюш и тех интервью. И через неделю уже принял оффер х2 по зарплате с прошлого места, а через два дня на работу вышел. Мертвый язык, хули. Но кстати сберговно можете сразу в игнор отправлять, это просто ебаные спаммеры и госконтора по сути со всеми вытекающими.
>>2220476 >>2220809 Тоже хрюкаю с этих свидетелей переписывания твиттера. Они правда боятся, что вот так возьмут и напишут свой Твич/Твиттер, и, чтобы не пришлось переписывать, давятся GOвном?
>>2220253 Это бот какой-то пишет? Когда в поисковике вбиваешь сравнение двух чегоугодно (видеокарт, например), иногда появляются такие сгенерированные статьи, набитые говном и раздутые на несколько тысяч символов.
> Like the Java language, C# is an object-oriented programming language (otherwise known as OOP) Или рерайтеры со скиллами десятиклассников на медиум подтянулись?
>>2220093 А нахуя тебе шило на мыло менять? Принцип работы с тем и другим примерно одинаковый, просто чуть разные походы хотя после рельс Джанго выглядит говняво с языками примерно также, в питухоне разве что больше библиотек и движухи.
>>2224057 Сам язык понравился больше пистона, хочется просто во что-то новое для себя вкатиться, да и как бонус зп рубистов, одни из самых высоких на рынке.
>>2224088 Ну тогда бери гайд по рельсам и погнали, там ничего сложного нет, после питона разберешься, поначалу некоторые синтаксические конструкции могут мозг выносить, но потом быстро привыкнешь. Можешь еще поюзать популярные гемы rspec (для тестирования), puma (сервер), httparty, spyke (чтобы стучатся в сторонние апишки) и можно еще interactor (удобная фича для работы с бизнес логикой). А я наоборот разочаровался в некоторых моментах, где-то год уже отхуячил и розовые очки начинают сниматься. Помимо того что руби позволяет писать код как-будто бы пишешь на английском он еще в рукожопых руках дает возможность срать говнищем и писать запутанную трудночитаемую хуйню, а пытаться найти где используется класс который хочешь отрефакторить, то еще занятие, например тут привет фабрики из жабы def interactor "Zalupa#{context.device_type.capitalize}".constantize end И узнаешь об этом уже на проде через неделю. А уже какая нибудь хуйня из регулярок в method_missing без комментариев которую ты пытаешься прочитать целую минуту, вместо того чтобы глянуть на несколько секунд в нормальный метод, встречается повсеместно. И по классике жанра тот кто работал до тебя долбоеб еще тот, который упражнялся в метапрограммировании и написанию паттернов. В плане написания кода все охуенно и легко и просто, но вот поддерживать иной раз больно, особенно легаси. Отдельный пиздец когда остается нерабочий легаси код рядом с новым рабочим, в каком нибудь ебучем php ide подсветит серым неиспользуемые методы и их можно удалить, но вот тут сука хуй, угадывай что нужно, а что нет. Еще бывает встречаются библиотеки на которых положили хуй лет 7 назад и ответы на stackowerflow давностью лет 5-7, которые уже не подходят. И скорость работы как-то не особо радует. ActiveRecord это отдельная история постоянный срач в моделях, ладно хоть в новых сервисах интеракторы воткнули и всю логику туда, а старое говно это жуткий пиздец, который еще и тормознутый.
>>2225065 Я когда дорос до такого уровня, что можно нормально/комфортно вкатиться в злых марсиан, уже зарабатывал в долларах и это сразу стало не актуальным. Я не одной из конф спрашивал у марсиан вилки в личной беседе, у меня в долларах выходит больше, чем они могли бы мне предложить.
>>2225596 Я починил уже. Там в дефолтном конфиге сваггера стоит dry run
Видимо, логично прогонять тесты командой rspec, а rails rswag (или как там правильно, не помню, я себе алиас поставил) - уже чисто чтобы сгенерить доку
>>2226032 150-220 в Омске, полагаю, неплохо. Миддл с опытом работы от года? Ну такое.
К слову, у Evrone сейчас получше вилки. Они периодически делают персонализированные рассылки зарегавшимся на их митапы - сейчас миддл до 350к + бонус в виде месячной зп при устройстве сразу.
Я отказался, ибо меня и на текущем месте неплохо кормят (инхауз, прям начиная с джуна), но м.б. кому пригодится такая инфа.
>>2225255 >>2226032 Спасибо, короче я примерно так и думал больше пиара. По меркам российского рыночка вилка еще не плохая, бывает и хуже)) Но судя по тому как у них висят вакансии по полгода они ищут кого-то более менее крутого за этот прайс, синьера за зарплату мидла
>>2226091 >Два чаю, подписался Если ты имеешь ввиду подписался на их митапы и т.п. - то не факт что они именно исходя из этого рассылают приглаешния на вакансию. Я пришел к этому выводу, т.к. больше нигде не отсвечивал свои контакты, а они мне написали дважды за последние полгода.
Де-факто, это полугалера такая, как и марсиане. Тебя привяжут к конкретному заказчику из клиентов конторы и, вроде как, обещают что ты не будешь рваться между проектами и будешь работать только с одним. Хотелось бы верить, конечно. Плюс у них, вроде, есть программа по допоплате если ты контрибутишь в опенсорс проектах вне рабочего времени (полагаю, список проектов ограничен, что логично).
>>2226089 Вакансии висят по полгода потому что они набирают пул разрабов на перепродажу, а не закрывают конкретную вакансию.
сап анончики поясните вкатывальщику вот я скачал руби и интерактив руби, ая хочу в среде разработки писать рубимайн но я чет не понимаю как их связать или че надо сделать чтобы код работал? не гоните ссанными тряпками пожалуйста
>>2226739 На винде? Либо никак, либо заебешься. Если рубимайн лицензионный, то попробуй в саппорт им написать, авось подскажут.
Самый простой вариант на винде - VS Code + WSL (если хочешь устроиться в айти, то без базового знания линуксов никуда, даже уборщицей не примут). Я пытался триальную версию рубимайна через WSL пустить, так и не осилил (а Code работает по гайду за пять минут).
>>2226722 В каком другом? Во фронте? Если не брать в расчет фронтенд-фреймворки с типичной проблемой оверинжиниригна то фронт оказывается простой и понятной штукой, нет никакой проблемы быть фуллстеком в экосистеме рейлс без учета стороннего js-зоопарка.
>>2226744 Читаешь описание и там сплошные реакты, до его появления фронт был простым и быстрым, даже с лапшой на жикваери. Вот и начинается эта ебля с фронтом, запускаешь npm i и скачиваешь пол интернета, просто так на реакте писать не прикольно, давай ещё какой-нибудь редакс туда, хуй пойми как оно работает, несколько минут стартует, жесть. Хорошо что мы просто json выплевываем и на фронте сами ебутся
>>2226744 Ну типа я могу шлепать простенькие вьюхи с крудами, но лучше уже взять какую-нибудь FOSS CMSку для рельс. Мне лучше туда не соваться?
Да и под full stack в вакансиях все подразумевают кому что нравится, иногда оказывается, что хотят разраба для бэка, но на full-stack rails приложухе, а иногда - надо, чтобы ты сам себе жсоны передавал и сам их в реакте обрабатывал
А расскажите ещё про full-stack разработку, у кого опыт есть. Я пока шлепаю одни APIшки, во вьюхах в процессе обучения не особо нравилось ковыряться, а последние несколько месяцев вообще про них забыл.
Пишут с вакансией, обещают в основном бэк и изредка ковырять фронт, JS не обязателен. Стоит лезть, или оно меня сожрёт? (джуниор-хуюниор, несколько месяцев опыта)
>>2228015 Вьюхи - это просто. Если понадобится по вакансии периодически в них ковыряться, то быстро освоишься. Особенно если там будет не erb, а haml или slim там.
Лезь. Опыт всегда пригодится, а джуну он жизненно необходим. Если норм тимлид попадется, даст тебе материалы подходящие под текщий стэк поизучать + сам что-то объяснит на пальцах.
Привет тред. Нужна помощь за деньги в создании микро-магазина на Ruby on Rails. Требования: главная страница, каталог товаров, страничка с описанием и атрибутами для каждого товара, корзина или еще более простой аналог, страница с заполнением имени и номера телефона для передачи заявки менеджеру для перезвона клиенту. Это задача по учебе в шараге, поэтому всех штук типа тестов и прочих сложностей не нужно, главное сделать минимальный рабочий функционал, который можно будет показать на локалхосте. Если верно понимаю, то на рельсах это можно более менее быстро поднять. Телега @sportturnik
Ребят, посоветуйте книг/курсов для вката в ваш замечательный язык(ну и РоР соответственно). С общими базовыми концепциями программирования я знаком, так что объяснять в картинках, что такое переменные или циклы не надо. В шапке из книг одно говно мамонта(ну кроме вел граундед рубиста, который последней редакции для 2.5 версии, а сейчас уже вообще 3.0, но я всё равно его "купил", но может есть что посвежее/получше).
А в чём вы пишите свой код? Рубимайн конечно клёвый, но платный. А у vscode плагин обновлялся 2 года назад. Я проверил, он вроде работает, но там как-то всё мутно. Или все сидят на джетбреинсах?
>>2232784 Да ну, на руби 3 вообще без проблем всё перекатывается, с позиционированием аргуменов и двойной звездочкой что-то было и всё, вот с рейлс 5 на 6 было посложнее, zeitwerk ругался если require_dependency в моделях было прописано, но это тоже ерунда.
На счёт коммитов хз, мб в языке с усиленной тенденцией к использованию магии мета-программирования это больше ведёт к проблемам.
Я вот про что конкретно: > Помимо того что руби позволяет писать код как-будто бы пишешь на английском он еще в рукожопых руках дает возможность срать говнищем и писать запутанную трудночитаемую хуйню, а пытаться найти где используется класс который хочешь отрефакторить, то еще занятие
> А уже какая нибудь хуйня из регулярок в method_missing без комментариев которую ты пытаешься прочитать целую минуту, вместо того чтобы глянуть на несколько секунд в нормальный метод, встречается повсеместно.
> И по классике жанра тот кто работал до тебя долбоеб еще тот, который упражнялся в метапрограммировании и написанию паттернов.
> В плане написания кода все охуенно и легко и просто, но вот поддерживать иной раз больно, особенно легаси.
>>2235738 > На счёт коммитов хз, мб в языке с усиленной тенденцией к использованию магии мета-программирования это больше ведёт к проблемам. Вот тут мысль до конца не довёл, имеется в виду, что мб они с таким колличеством кода просто в 2 раза больше магии написали, что больше к проблемам привело, которые в свою очередь пришлось решать ещё большим колличеством кода -> вот и коммиты. Это всё ИМХО, мб в реальности всё наоборот, я только предполагаю.
>>2235738 Ну если тебе норм парсить регулярочки в первом же файле, который будет читать новый разработчик, например - конечно же бери джангу, нахуй это метапрограммирование.
>>2235241 Это хорошо когда есть мало роутов, когда дохуя и еще разбиты на разные версии апи v1, v2, v3 и появляются эндпоинты отличные от CRUD то в рельсах начинается легкий адок на 500 строк из member do put :zalupa get :govno patch :hui end
put :zalupa, on: :member get :govno, on: :member patch :hui, on: :member
get '/govno', to: 'zalups#govno' post '/govno/zalupa', to: 'zalups#zalupa' patch '/govno/hui', to: 'zalups#hui'
И если тимлиду похуй или ревью нет, то каждый лепит как хочет без однобразного вида, в джанге хоть по папочкам раскидано
>>2212151 Гемов шардов нихрена нету, параллелизм не придумали как сделать,смысл вкатыватся туда? >>2232853 Рубимайн лучшее что есть, можешь юзать EAP, она бесплатная но с багами
Правильно ли я понимаю, что после 10-ых годов, из-за стадного инстинкта все кинулись в ноду и питон (и кучи разных обещаний, по типу "один язык на беке и фронте" и + все новички стали начинать с этих языков, а не руби) , а проектов на руби уже было понаписанно непочатый край и плюс новые (Это я, конечно же, не про российский рынок). И по инерции отток всё ещё идёт, и работы становиться ещё больше и в итоге конкуренция на руби позицию в разы меньше чем на змеиную или нодувскую (а зарплата больше), я правильно понимаю?
Ну плюс и тебе, и работодателю удобно, что у каждого рубиста стэк плюс-минус одинаковый, и не надо вола ебать разбираться, какие там библиотеки на питоне ты использовал, а какие нет. А ещё, если проект не сильно жирный, можно спокойненько быть фуллстеком, почти не зная жабаскрипт.
Братишки как например подменить в классе Array метод to_s, таким образом чтобы новая реализация делала что то свое и потом вызывала старую? Типа class Array def to_s puts "Inside new to_s, calling old to_s" old_to_s # што делац туть? end end
>>2237646 Не ебу, я распространенное мнение озвучил. Сам я первую работу моментально получил, вторую - тоже после одного собеса. Вкатился в руби в 2021.
>>2237658 > Не ебу, я распространенное мнение озвучил. Так а смысл это писать, если ты сам являешься примером обратного.
> Сам я первую работу моментально получил, вторую - тоже после одного собеса. Вкатился в руби в 2021. Или это имеется в виду, перекат с другого языка aka уже был коммерческий опыт?
>>2237630 Не тестовое. Роботаю на scala/c++/haskell(на нем пару тыщ строк удалось, включая кодоген и всякие утилит), хочу дропнуться на удаленку на Ruby позже. Идея такая. Я указываю класс и методы. Генерится код который логгирует вызовы этих методов, то есть подменяет методы на методы с таким же именем и сигнатурой но 1) логгирует их аргументы и потом 2) вызывает оригинальную реализацию, которая отдает результат коллеру. Книги по руби не читал, надо посмотреть metaprogramming ruby будет.
>>2237665 >если ты сам являешься примером обратного Потому что все ноют, что не берут, а вакансии без опыта либо совсем позорные, либо требуют знать всё на свете. Может, мне одному так повезло. >перекат с другого языка aka уже был коммерческий опыт Не-а.
Я просто полистываю upwork, и как-то создаётся впечатление, что там только "экспертов" ищут, а если вбить тот же джанго, то появляются достаточно простые вакансии, даже блять парсеро-скраперо писание...
Это в купе с тем, что тут пишут, нагнало на меня сомнения. Ну и + то, что для своих личных нужд я питон использую, так как он реально кросс-платформенен и всякую прикладную фигню писать удобно из-за того, что есть либы на всё
>>2237666 Ты какие-то конкретно методы в конкретном классе хочешь логировать? Просто на keyword arguments оно у тебя сломается.
Если будет так: def new_meth(args) ||puts args ||old_meth(args) end То у тебя старый метод может неправильно распарсить, если в аргументах kwargs или блок (не уверен насчет блока).
А если так: def new_meth(...) ||old_meth(...) end
То работать будет (... хитро пакует разные аргументы), но вывести ты никуда не сможешь ( puts ... - синтаксическая ошибка)
>>2237691 >> какие-то конкретно методы в конкретном классе Нет, это просто упражнение. Ограничимся обычными аргументами типа def kek(lol, wtf) и примитивными типами.
>> (...) >> puts(...) Прикольно, я думал нужно будет количество аргументов вычислять и потом писать вывод для каждого, типа number_of_args = SomeClass.method(:some_methd).arity ['arg'].cycle(number_of_args).zip(0..number_of_args).map(&:join).each { | arg_name | blah blah }
А так получается надо открыть класс(class eval?), в нем сгенерить private class variable с уникальным именем и в ней хранить старый инстанс метод. Затем определить метод с таким же именем(define_method), напечатать все что надо, забайндить старый метод к текущему объекту и вызвать.
А если я хочу в каждый метод объекта засунуть свой логгер? Ну чтобы отследить цикл жизни чего-то конкретного, остановить программу через binding.break, пропустить объект через хитрый манки-патчер, продолжить выполнение и дальше наблюдать в консоли что там с ним происходит.
Напрягает в руби 3 одна вещь - сообщение об ошибках, оно с какого-то хера начало выполнять полный inspect на упавшем объекте, то есть кроме NoMethodError (undefined method `blabla' for [#<SomeObject оно высирает всё внутреннее состояние на 10 экранов, раньшетакой хуйни не было. Как бы его отучить от такой ерунды?