Тёмный
Master Lid
Master Lid
Master Lid
Подписаться
Привет.
Я Master Lid. Работаю в веб-индустрии больше 20 лет. На своём канале делюсь некоторым опытом и своими соображениями в области программирования для веб и IT. Причём бесплатно и без рекламы.
Если интересно, подписывайся. Ну и комментарии тоже можешь оставить.
Комментарии
@andrewcool482
@andrewcool482 2 дня назад
ненавижу фреимворки!
@MasterLid
@MasterLid 2 дня назад
Можно подробности? Всегда пишете только на ванильном JS? Ну или что там у вас? : )
@andrewcool482
@andrewcool482 2 дня назад
@@MasterLid да, ванильный, но с ростом проджекта приходится все больше и больше писать. Фреймворк поди сокращает эту работу.... Эх, придется юзать чтоле...
@MasterLid
@MasterLid 2 дня назад
У меня отношение к фреймворкам (и к npm-пакетам, и к подключаемым библиотекам и т.д.) следующее: зачем самостоятельно писать код, который уже кто-то написал за вас? Причём этот готовый код наверняка многократно проверялся и тестировался другими программистами, и работать он будет однозначно лучше, чем самописный велосипед. Так что напрасно вы так! : )
@andrewcool482
@andrewcool482 2 дня назад
@@MasterLid согласен. В принципе библиотеки уважаю, но к фреймворкам с осторожностью ввиду их оптимизации.
@andrewcool482
@andrewcool482 2 дня назад
Мастер, с возврашением!
@user-pw3qw1be1y
@user-pw3qw1be1y 3 дня назад
Ахах, и описание к видео огонь))
@user-es7kb8ul2f
@user-es7kb8ul2f 4 дня назад
Жиза
@divergenny
@divergenny 5 дней назад
Урааааа,вы вернулись, спасибо большое за Ваш труд 😊
@user-dc9zg4ew6h
@user-dc9zg4ew6h Месяц назад
Отличное объяснение! Без воды и исчерпывающее. Используется ли метод PATCH в рест апи?
@MasterLid
@MasterLid Месяц назад
Спасибо за оценку! Как я и говорил, REST API -- это не стандарт, а набор рекомендаций. Если хотите использовать метод PATCH и знаете, как его можно применить, чтобы ваше апи засияло новыми красками, то используйте. : )
@user-ir9fm5ek2n
@user-ir9fm5ek2n Месяц назад
Инфа очень важная и нужная, но очень тяжело смотреть - ооооооооооочень большие звуковые паузы между фразами. Успеваешь забыть что было сказано ранее. Зрителю удобнее ставить на паузу и вчитываться в код, чем проматывать на фиксированные ютубом несколько секунд и гадать не пропустил что-то важное или нет. Я обратил внимание, что это болезнь всех русскоязычных туториалов на тему ИТ. Тем не менее спасибо за старания.
@zeOnni
@zeOnni 3 месяца назад
Три главных слова ООП и правда не требуют ни классов ни даже объектов // инкапсуляиция const Counter = () => { // n инкапсулировано let n = 0 return () => n++ } const c = Counter() console.log(c(), c(), c()) // 1 2 3 // полиморфизм const Sum = (a, b) => a + b const Mult = (a, b) => a * b const ops = [Sum, Mult] // интерфейс один, аргументы одни и те же, а поведение разное console.log(...ops.map(f => f(2, 3))) // 5 6 // наследование const Super = (b, f) => () => f(b) const Foo = () => console.log("foo") const SuperFoo = Super(Foo, (base) => { base() console.log("bar") }) SuperFoo() // foo // bar
@LetroScript
@LetroScript 2 месяца назад
Даже для меня выглядит кашей, лучше реально переключиться на ООП чем на ФП
@zeOnni
@zeOnni 2 месяца назад
@@LetroScript это не пример ФП. Это опровержение того, что классы и ооп имеют какую-то монополию на полиморфизм, инкапсуляцию и наследование.
@user-uh5zc4hm5x
@user-uh5zc4hm5x 3 месяца назад
Спасибо
@MasterLid
@MasterLid 3 месяца назад
Не за что. Ролик снимался до СВО, и многое в нём уже совсем не актуально.
@user-uh5zc4hm5x
@user-uh5zc4hm5x 3 месяца назад
Доброе время суток. Спасибо за ролик. Укажите плиз, где Вы ведете документирование API? Какой софт используете в проекте?
@MasterLid
@MasterLid 3 месяца назад
Добрый день. Я кратко упоминал софт для создания документации к REST-апи в этом же видео: Swagger. По нему и по Redoc (другой софт для того же) у меня есть отдельный ролик: ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-LorZ-_tElG8.html
@user-uh5zc4hm5x
@user-uh5zc4hm5x 3 месяца назад
Здравствуйте. Благодарю за хороший материал, и возможность задавать вопросы. Скажите пожалуйста, для чего Вы в программе, реализуете методы на создание таблиц?
@MasterLid
@MasterLid 3 месяца назад
Приветствую. По очень простой причине. Чтобы была возможность забрать проект с гитхаба и сразу же его опробовать, не прилагая дополнительных умственных усилий.
@AleksandrBagrintsev
@AleksandrBagrintsev 4 месяца назад
На мой взгляд в видео не совсем корректное сравнение реакта и ангуляра. Ангуляр это фреймворк, который предоставляет уже готовые решения, а реакт - библиотека, в которой у разработчика больше свободы в выборе архитектурных подходов и либ(хотя бОльшая часть приложений это cвязка React + Redux). Этим и обусловлена необходимость тратить больше времени на разработку каких-то фич. Плюс разработчик знающий реакт может без особых проблем писать мобильные приложения на нейтиве. Из-за такой гибкости и зп у реакт разрабов выше
@MasterLid
@MasterLid 4 месяца назад
Какие готовые решения предоставляет ангуляр? Встроенный роутер? Ngrx? Не спорю, ангуляр гораздо более богатый возможностями фреймворк, чем реакт. Но суть не в этом. Ангуляр -- типично ООП-ориентированный фреймворк (контроллер -- это класс, сервис -- это класс, директива -- это класс и т.д.), в нём очень широко применяются наследование, инкапсуляция, интерфейсы и тому подобное. Реакт -- абсолютно функциональный фреймворк (хотя раньше там можно было использовать парадигму, что контроллер -- это класс, но потом от неё отказались, и теперь всё на функциях). Поэтому в видео я и использовал эти два фреймворка, чтобы было нагляднее. Про з/п у программистов реакта -- тут-то всё понятно. Ковыряться и создавать спагетти-код, который получается на реакте (т.е. JSX/TSX), то ещё удовольствие. Конечно, работа с этим г0вн0м должна оплачиваться выше, иначе желающих будет не так чтобы сильно много.
@AleksandrBagrintsev
@AleksandrBagrintsev 4 месяца назад
Реакт отвечает только за рендеринг. Он не нуждается в роутере, стейт менеджере и т.п. из коробки, так как он просто либа. Уже потом, на его основе, делаются фреймворки типа некста и нейтива, которые предоставляют свои решения. Оба эти фреймворка норм, но реакт более гибкий, а ангуляр более надёжный(хотя всё зависит от того, кто пишет код). Что касается функциональщины в реакте, то причина достаточно проста, а именно перфоманс у функциональных компонентов выше чем у классов. Менее трудозатратно просто вызвать функцию, чем наследоваться от класса. Хотя есть жизненные методы в реакте, которые доступны только в классовых компонентах. Спагетти код в jsx это как? Не думаю что за работу с реактом доплачивают
@MasterLid
@MasterLid 4 месяца назад
Как фронтенд с опытом разработки коммерческих продуктов на всех трёх фреймворках, могу сказать, что разработка на реакт -- это одно из немногих занятий, к которым мне едва ли когда-нибудь захочется вернуться. Не хочу зарекаться, но, наверное, ни за какие деньги не стал бы снова влезать в эту тему. Надеюсь, на ваш первоначальный вопрос я ответил. : )
@_AbUser
@_AbUser 4 месяца назад
Короче в переводе на человеческие язык, по ходу ФП - Функция, это способ группировки команд, для их повторного вызова, а ООП - это способ группировки Функций, для их последующего вызова, как всегда накидав вагон ненужной встрат*й терминологии - метод, это сама функция. А объект - Это функция, которая объединяет другие функции\методы. Теперь что бы избежать случайного повторения названий функция, перед ней как ее адрес еще указывают класс, или экземпляр, от кда ее вызывают, что бы с другой не перепутать.
@MasterLid
@MasterLid 4 месяца назад
Это слишком упрощённо сказано. ООП, помимо группировки функций в объекты, предоставляет ещё инкапсуляцию (упрятывание) и наследование. Так что просто к группировке тут всё не сводится. : )
@_AbUser
@_AbUser 4 месяца назад
@@MasterLid Не уверен, по скольку я только начал, но про наследование не то, что бы его вообще был бы смысл отдельно упоминать... мы в принципе же можем, в ходе задания какой ть функции использовать еще и ранее заданную функцию, что как бы и является аналогом наследования, и не получается ли "те же яйца, только в профиль"? Только в ООП ему почему то привесили отдельный ярлык, что бы по больше слов использовать.. Ну а переменные - это отдельно да..., в теории программа представляет собой сборную из модулей, от разным программеров, это получается что то типа "защиты от дурака" если они вдруг свои переменные одинаково назвали... Тогда получается Геральд и Ривия.Геральд и это два разных Герольда.. ))) Но и в принципе это все, просто один дополнительный индефикатор разделить функции и переменные, что бы не сливались в одно и то же.. Не? Что то типа адреса..
@muhammadumarsotvoldiev8768
@muhammadumarsotvoldiev8768 5 месяцев назад
Спасибо большое
@pavelyankouski4913
@pavelyankouski4913 5 месяцев назад
Возможно через год, два вернусь к этой теме, когда буду собирать свой движок
@0xsadcat92
@0xsadcat92 5 месяцев назад
В команте на счет SOLID считаем его как следствие. Если архитектура нарушает его - она плохая, но если соответствует - то не факт
@iGynLoD
@iGynLoD 5 месяцев назад
Я не проф. разраб. Идею ООП знал еще 20 лет назад, но не погружался. Тут недавно окунулся, поднял несколько достаточно больших (для одного новичка) проектов на C#. По мере погружения в ООП, первоначальное очарование идеи - чуть ли не прямой трансляции объектов реального мира в архитектуру кода, сменялось недоумением от бесконечно нарастающей сложности конструкций и концепций. Паттерны, типа сиглтона. Нет ну серьезно, надо городить что-то ради единственности порождения? В голове начинает крутиться один вопрос - неужели по-другому никак нельзя? Все это выглядит, как бесконечные костыли, к неправильно поставленной и решаемой задаче. ФП сложнее, и в голову заходит тяжелее. Но идея иммутабельности выглядит концептуально верной, по сравнению с императивной парадигмой, основанной не бесчисленном количество переменных. Лично мне кажется, в ФП - это парадигма будущего, и в итоге к ней и придут. В общем, перехожу на F#, который, кстати, по сути обертка над C#. Учу и удивляюсь, "а что, так можно было?"
@MasterLid
@MasterLid 5 месяцев назад
Смысл ООП не в том, чтобы использовать все существующие паттерны, а в том, чтобы использовать только то, что нужно. Т.е. если в вашем приложении не нужен синглтон, то вы его не используете. Далее, всё зависит от уровня абстракции. Например, абстракцию двигателя внутреннего сгорания можно описать в виде всего 4 тактов: впуск-сжатие-раб.ход-выпуск, а можно расписать всё до цилиндров, поршней и вплоть до винтиков. Естественно, второй вариант сложнее. Всё зависит от вашей задачи, если ДВС в виде четырех тактов ей достаточен, то совершенно не обязательно углубляться в подробности. Ну и по F#. Ради интереса, посмотрите на хаха.ру вакансии по этому языку. Уверен, что их не так много. Во всяком случае, намного меньше, чем вакансий на C#.
@iGynLoD
@iGynLoD 5 месяцев назад
@@MasterLid Я не про использование паттернов везде. Например, вы решаете задачку по математике 7 класса - и получаете уравнение, решать которое надо через поиск экстремумов, пределы, производные - это вам сразу должно подсказать, что подход к решению выбран неправильный (если ошибку исключаем). Вот так и с ООП, слишком уж много наворотов на ровном месте, делающих код непролазной мутью. Паттерны просто лучше всего это иллюстрируют. Но есть и масса других примеров - тема связанная с потокобезопасностью. Все эти пробрасывания, залочивания и прочее. Это всё сильно пахнет плохой концептуальной архитектурой языка, да и выглядит лишним. Вспоминается еще такой пример. Язык Cobol. Его создавали с идеей, что пусть там будут большие и громоздкие стейтменты, зато будет читаться как обычный текст на английском, и типа даже не программист сможет понять, что там написано. Появление и дальнейшее движение в сторону С - напрочь перечеркнуло этот подход. С ООП мне видится тоже самое. В основе идея отражать в коде объекты реального мира с похожим поведением. Идея классная, но, кмк, избыточно трудоемкая и сложная в реализации. Думаю она отомрет, как и Cobol когда-то. Насчет вакансий - я не зарабатываю этим, поэтому мне не критично. Но слышал платят ФП-шникам больше. ФП учу по сути просто, для расширения сознания и надеюсь в последствии писать код быстрее и с большим удовольствием ))
@MasterLid
@MasterLid 5 месяцев назад
Всё, что вы пишете про ООП, прекрасно описывается фразой "просто вы не умеете это готовить". В ООП в принципе не должно получаться кода в виде непролазной мути. Если у вас получается непролазная муть, то вы что-то делаете не так. : )
@iGynLoD
@iGynLoD 5 месяцев назад
@@MasterLid Когда у вас объект класса наследуется от 2-3 абстрактов, еще от 3-4 интерфейсов, на вход принимает 8-10 других объектов классов, еще свою какую-то логику реализует и сам еще какими-то объектами оперирует - вот это я уже мутью называю - чтобы понять как работает небольшой кусочек кода, мне надо пол кодовой базы перелапатить, для меня это перебор как-то, а в реальным библиотеках и больших проектах - норма жизни.
@MasterLid
@MasterLid 5 месяцев назад
Так не делайте такую громоздкую конструкцию! Вы что-то наговнокодили (ну или прочитали в книжке какого-то говнокодера -- понятия не имею, откуда вы взяли подобную архитектуру), но претензии предъявляете ООП. Вообще лень вас в чем-то убеждать. Нравится ФП -- программируйте в ФП.
@0xsadcat92
@0xsadcat92 6 месяцев назад
Пишу на С++, в нашем маленьком мирке заводится функциональная болезнь, переделывая изначальный Си с классами (на голом Си, кстати, тоже крупные проекты используют ООП подход с наследованиями и полиморфизмами, их просто реализуют сами, а не из коробки). На С++ не такой богатый выбор решений для UI (удобных и рабочих) и, когда вижу очередного адепта ФП, всегда прошу написать хотя бы основу для ХОРОШЕГО UI фреймворка, который не стыдно будет развивать на протяжении многих лет. Как правило, после этого продолжается поток брани и доказательств, но до кода дело так и не доходило... А жаль, ведь если решение хорошее, то продемонстрировать его на практике - лучшее доказательство.
@MasterLid
@MasterLid 5 месяцев назад
Да. Апологеты ФП похожи на сектантов.
@0xsadcat92
@0xsadcat92 5 месяцев назад
@@MasterLid Согласен , объективно готов смириться с любой парадигмой/технологией/практикой и т.д. лишь бы оно решало задачи. Математическая доказанность это очень здорово, безопасность там, иммутабельность и прочее, но на Java 3 billion devices, в на haskell todo-list без графической оболочки. В дополнение не могу не отметить тезис, что ФП хорошо для математических расчетов. Сложные штуки, вроде физики воды на ФП не пишут, там нужна производительность, а в НИИ (работал какое-то время) пишут на каком-нибудь фортране, т.к. он простой как черенок от лопаты и делает все, что нужно. Это не забивает голову и позволяет заниматься более важными вещами, чем ломать голову над очередными хитросплетениями.
@user-ez2om1wu3i
@user-ez2om1wu3i 7 месяцев назад
Мне кажется ООП избыточен в о фронт приложениях! Ну все приводят примеры с машинами робатами и тп! Ну и много ли задачь где это надо во фронте с этим наследыванием? Ну если надо можно и класс написать не кто не против ну по мне так кажется что избычточность сорее вредна! А если не использовать наследование и просто писать через классы тт в чем преимущество?
@0xsadcat92
@0xsadcat92 6 месяцев назад
За фронт-энд сказать однозначно не могу, не особо вникал, но на десктопе для построения UI есть 2 пути: ООП с базовым классом Widget/Control/etc и плохой. Полагаю, что интерфейс в браузере не очень сильно отличается от десктопа архитектурно.
@alekseybaholdin9447
@alekseybaholdin9447 7 месяцев назад
А почему не используешь Lambok?
@MasterLid
@MasterLid 7 месяцев назад
Наверное, потому, что этот ролик про Maven и Gradle, а не про ломбок (название, кстати, то ещё: не каждый клиент захочет, чтобы в его проекте фигурировал какой-то ломбок). Что касается лично меня, почему я его не использую... Так я и на Java сейчас не программирую.
@user-gs1rl4cd8x
@user-gs1rl4cd8x 9 месяцев назад
Здравствуйте! Если тоже самое на maven, то как заменить команду "gradlew run --args='install'"?
@MasterLid
@MasterLid 9 месяцев назад
Чтобы запустить на Maven нужно добавить в pom.xml, в раздел plugins, плагин exec-maven следующим образом: <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>exec-maven-plugin</artifactId> <version>3.1.0</version> <configuration> <mainClass>tv.lid.cinema.api2.App</mainClass> </configuration> </plugin> В mainClass соответственно указывается, какой класс следует запускать. Далее в командной строке запускаете: mvn compile exec:java -Dexec.arguments="install" А вообще по Maven и Gradle у меня есть отдельный ролик. Рекомендую его посмотреть: ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-Vf7awezFULc.html
@user-gs1rl4cd8x
@user-gs1rl4cd8x 9 месяцев назад
@@MasterLid Спасибо за быстрый ответ Запустить удалось, однако в консоль посыпались ворниниги и запуск прекратился, но сам файл базы данных появился - моя первая проблема решена. Далее я запускал приложение другой командной и оно работало, но, к сожалению, с базой данных всё ещё есть проблемы. Я так понимаю, само приложение в последствии можно запускать (или нет?) одной из команд: "mvn compile exec:java" или "mvn jooby:run". В обоих случаях выводится стек, информирующий о хосте и роутах, и приложение отвечает на запросы постмена, но при попытке добавить запись в БД получаю ошибку 500... Подскажете, куда копать? Ролик по Maven и Gradle уже смотрел
@MasterLid
@MasterLid 9 месяцев назад
Копайте в сторону внимательного прочтения трассировки. Обычно там более-менее понятна проблема становится. Если приложение работает (т.е. читает пустую базу данных и не падает), а ошибка возникает при создании новой записи в базе, то, видимо, проблема именно в этом. Можно же запустить GUI H2, подключиться к вашему файлу с базой данных и попробовать добавить запись вручную, SQL-запросом. Получится оно или нет? Вообще драйвер H2 обычно выдаёт подробную диагностику, почему не удалось добавить новую запись (смотрите трассировку опять же). Изначальный вариант с Gradle работает корректно или нет? Если корректно, то проверьте зависимости в pom.xml, все ли вы их перенесли правильно в Maven...
@user-gs1rl4cd8x
@user-gs1rl4cd8x 9 месяцев назад
​@@MasterLid Изначальный вариант с Gradle не работает: gradlew: command not found - в последней версии, а также в версии 6.9. Попробовал запустить так gradle run --args='install', в итоге получил вот это: What went wrong: Could not compile settings file 'C:\workspace est-java-api-2\settings.gradle'. > startup failed: General error during semantic analysis: Unsupported class file major version 64 Что касается Maven, то при попытке запросить список фильмов, как я и говорил ранее, приходит ошибка 500, и появляется файл трассировки, в нём исключения, которые мне мало о чём говорят. В общем, исключение вызвано базой данных, исключение вызвано jdbc и так далее. Содержимое следующее, если вам не сложно это просмотреть: database: close org.h2.message.DbException: Ошибка ввода/вывода: "Closing" IO Exception: "Closing" [90028-222] at org.h2.message.DbException.get(DbException.java:212) at org.h2.mvstore.db.Store.close(Store.java:374) at org.h2.engine.Database.closeOpenFilesAndUnlock(Database.java:1293) at org.h2.engine.Database.closeImpl(Database.java:1255) at org.h2.engine.Database.close(Database.java:1174) at org.h2.engine.Database.onShutdown(Database.java:1159) at org.h2.engine.OnExitDatabaseCloser.onShutdown(OnExitDatabaseCloser.java:85) at org.h2.engine.OnExitDatabaseCloser.run(OnExitDatabaseCloser.java:114) Caused by: org.h2.jdbc.JdbcSQLNonTransientException: Ошибка ввода/вывода: "Closing" IO Exception: "Closing" [90028-222] at org.h2.message.DbException.getJdbcSQLException(DbException.java:566) at org.h2.message.DbException.getJdbcSQLException(DbException.java:489) ... 8 more Caused by: org.h2.mvstore.MVStoreException: Could not sync file C:/workspace/test/app/data/cinema.mv.db [2.2.222/2] at org.h2.mvstore.DataUtils.newMVStoreException(DataUtils.java:996) at org.h2.mvstore.SingleFileStore.sync(SingleFileStore.java:181) at org.h2.mvstore.RandomAccessStore.compactStore(RandomAccessStore.java:442) at org.h2.mvstore.FileStore.compactStore(FileStore.java:888) at org.h2.mvstore.FileStore.stop(FileStore.java:275) at org.h2.mvstore.MVStore.closeStore(MVStore.java:693) at org.h2.mvstore.MVStore.close(MVStore.java:643) at org.h2.mvstore.db.Store.close(Store.java:364) ... 6 more Caused by: java.nio.channels.ClosedByInterruptException at java.base/java.nio.channels.spi.AbstractInterruptibleChannel.end(AbstractInterruptibleChannel.java:199) at java.base/sun.nio.ch.FileChannelImpl.endBlocking(FileChannelImpl.java:171) at java.base/sun.nio.ch.FileChannelImpl.force(FileChannelImpl.java:532) at org.h2.mvstore.SingleFileStore.sync(SingleFileStore.java:179) ... 12 more Вариант с Maven устанавливал вручную, так же, как у вас на видео - через интерактивную консоль Jooby. Правда там был +1 пункт, в котором я выбрал "stork", так как другие варианты вызывали ошибки. Добавил зависимости в pom.xml, в частности "com.h2database" и "org.sql2o", а также плагин "org.codehaus.mojo", который вы рекомендовали выше. Затем скопировал файлы вашего проекта и заменил в них пространства имён
@MasterLid
@MasterLid 9 месяцев назад
Попробуйте погуглить фразу "General error during semantic analysis: Unsupported class file major version". Судя по всему, у вас несовместимые версии грейдла и джавы.
@orcsamuro9687
@orcsamuro9687 9 месяцев назад
Спасибо, было полезно
@Stas-ir3gh
@Stas-ir3gh 9 месяцев назад
Ужасная музыка не смог смотреть.
@raccoon8230
@raccoon8230 10 месяцев назад
Спасибо!
@JohnDoe-lc3tc
@JohnDoe-lc3tc 11 месяцев назад
А я заметил Додо-передатчик на полке! Спасибо, за такие отсылки :3
@MasterLid
@MasterLid 11 месяцев назад
Ооо... Ничо се! Салют настоящим олдфагам! 🤟
@NickRuster
@NickRuster 11 месяцев назад
ахахаха смотрю вступление, вот это подача
@antonanton1206
@antonanton1206 11 месяцев назад
Норм выглядишь
@kirilluroven8491
@kirilluroven8491 11 месяцев назад
я вот тебя увидел, но надеюсь мне показалось
@MasterLid
@MasterLid 11 месяцев назад
В Никите? Или в Жене? : ) В любом случае нет. Это просто персонажи.
@ivanboroda6908
@ivanboroda6908 Год назад
Вопрос от новичка - начал одновременно изучать месяц назад python и haskell. Есть уже небольшая практика на обеих языках, но все же haskell дается намного проще чем python. При этом все говорят что смысла сейчас учить haskell нет так как он безперспективный по сравнению с python. Как думаете - стоит ли его дальше изучать, или лучше на python переключится полноценно ?
@MasterLid
@MasterLid Год назад
Смотря для чего вы изучаете Haskell. Если для саморазвития, то почему бы и нет. Если для получения работы, то просто загляните на хаха.ру, поищите вакансии с хаскелем. Готов поспорить, их там немного. Даже на относительно популярный Rust не так много вакансий. По поводу Python -- тут вопрос не менее сложный. Мне нынешняя ситуация с ним напоминает историю с PHP лет 10-15 назад, когда этот неплохой инструмент прочно превратили в язык говнокодинга. А сейчас различные говнокурсы и инфоцыгане выпускают питонистов пачками. С одной стороны, вроде бы язык востребован (по уверениям тех же инфоцыган), с другой стороны, если питонистов выпускают пачками, а количество вакансий всё-таки не безгранично, то каковы шансы новоиспечённому питонисту найти работу? У меня нет готового ответа для вас. Изучите рынок вакансий на хаха, например.
@Garivprogari
@Garivprogari Год назад
удивил ++++++++++++++++++++
@MasterLid
@MasterLid Год назад
В смысле "удивил"? Мы знакомы? Мы с вами на "ты"?
@Garivprogari
@Garivprogari Год назад
@@MasterLid думал опять бабер а нет оказался нормальный вот и удивил
@MasterLid
@MasterLid Год назад
Даже не знаю, что на это сказать. Пока в раздумьях, не отправить ли вас в бан. Не комментируйте не по делу, будьте так любезны!
@user-on6zj3yy2q
@user-on6zj3yy2q Год назад
Очень круто! Приятно, что без воды и реально по существу, хотя допускаю, что чтобы насладиться этим четким роликом, надо перед ним где-то посмотреть "водяные" невнятные ролики. Классно, что еще вы шутите с серьезным лицом на протяжение ролика (здесь: про американские глубокомысленные акронимы). Это улучшает потребление и обработку информации моим мозгом
@dansamomi5311
@dansamomi5311 Год назад
Приветствую. Интересно увидеть ролик с разбором Klite от codeborne в вашем стиле. Очень нравится ваш канал. Пожалуйста, продолжайте )
@MasterLid
@MasterLid Год назад
Добрый день. И со всеми прошедшими праздниками! Вы про этот фреймворк github.com/codeborne/klite ? Ну, скажем так, Kotlin -- это не моё. Прямо вот совсем. Да и зачем вам мой обзор? Если интересен конкретный фреймворк, берёте и тестируете его. Можно написать простенькое приложение, типа новостной ленты или гостевухи. Потом на полученном опыте тиснуть обзор на хабре. ; )
@dansamomi5311
@dansamomi5311 Год назад
@@MasterLid Добрый день. Ваш обзор интересен, потому что, вы можете сравнить с другими решениями, которые вы уже пробовали. Благодарю за ответ. Кстати возможно "Kotlin - это не моё. Прям вот совсем" это отличный топик для ролика, очень интересно выслушать аргументы.
@user-tb3mm6dl3z
@user-tb3mm6dl3z Год назад
😎😏
@MayorKozin
@MayorKozin Год назад
Отличная подача материала, залип в лампу, что стоит сзади)
@GreyYar
@GreyYar Год назад
Когда решил добавить слой абстракции в видосы)
@MasterLid
@MasterLid Год назад
Где ж тут "слой абстракции", когда всё максимально конкретно объясняется? 🧐
@GreyYar
@GreyYar Год назад
@@MasterLid добавлены персонажи и визуальный стиль, между автором и зрителем. Это ли не абстракция 😃
@MasterLid
@MasterLid Год назад
Отличное пояснение! Спасибо! Да, всё так и есть.
@konstantinserezhkin1147
@konstantinserezhkin1147 Год назад
Очень жаль, что такую годноту никто не смотрит
@MasterLid
@MasterLid Год назад
Вот. Один из самых приятных комментариев на моём канале. Спасибо!
@PrettyStreet-xx9if
@PrettyStreet-xx9if Год назад
Главный герой фильма "Заводной апельсин", рассказывает про REST API
@Th-xo9qr
@Th-xo9qr Год назад
Добрый день! Спасибо вам большое за такое развернутое объяснение REST. Только начала изучение серверных запросов, и ваше видео отлично объясняет все нюансы, все мои проблемы. Хорошее видео, спасибо вам большое!!!☺
@MasterLid
@MasterLid Год назад
И вам большое спасибо за положительную оценку! Рад был помочь!
@obychy_chelovek
@obychy_chelovek Год назад
Бэкендер, ищу фронтендера, чтобы делать пет-проджекты, хочу интернет-магазин вязаных вещей запилить. Сори, хз просто где ещё товарищей искать х)
@hdhhehehjdjdjjd3982
@hdhhehehjdjdjjd3982 Год назад
Писать тесты - это скучно))) Тестировщики такие - Уууууууууу
@user-nz5wu3sw1l
@user-nz5wu3sw1l Год назад
Здравствуйте! На тайминге 31:04 почему при создании нового фильма, мы обращаемся к movie а не movies?
@MasterLid
@MasterLid Год назад
Вы про таблицу с набором роутов? Тут всё логично, по-моему. GET /api2/movies -- получаем набор фильмов (операция с несколькими сущностями) POST /api2/movie -- создаём новый фильм (операция с одной сущностью)
@bohdanvovkotrub1314
@bohdanvovkotrub1314 Год назад
Если я хочу оповещать какую-то группу пользователей в почте о каких-нибудь изменениях (например, какой-то пользователь создал новый запрос и кому-то другому приходит сообщение «к вам поступил новый заказ»), то по-правильному сервис оповещений должен быть отдельным сервисом, например каким-нибудь “Notification API”, и наш сервер API должен к нему обращаться после регистрации нового заказа или пусть наш сервер API сразу отправляет в почту сообщение? В будущем помимо почты мы ещё можем захотеть telegram использовать или что-нибудь другое. Как правильно сделать? Спасибо!
@MasterLid
@MasterLid Год назад
Не очень понятно, какое отношение ваш вопрос имеет к теме данного ролика, но ладно... Если у вас уже микросервисная архитектура, то сделайте службу оповещений отдельным сервисом. Если у вас монолитная архитектура, и вы планируете перейти на микросервисы, то попробуйте опять же первый вариант (отдельный сервис). Если у вас монолит, и на микросервисы вы переходить не планируете, то просто допишите этот функционал к вашему монолиту.
@bohdanvovkotrub1314
@bohdanvovkotrub1314 Год назад
@@MasterLid спасибо за ответ!
@vladimirfrolov1440
@vladimirfrolov1440 Год назад
Уважаемый автор, если вы говорите использовать командную строку, для создания проектов, то тогда будьте добры используйте тогда и vi, не vim а именно vi. Дальше набирайте всё ручками, а не копипастить с предварительно заготовленного документа. И я не знаю ни одного человека который по памяти напишет все команды по памяти и сконфигурирует всё по памяти. Для этого IDE и предназначенны чтоб быстро создать создавать и настраивать проекты. Да, конечно же есть порог входа, необходимо изучать инструменты, которыми пользуешься чтоб ЧЁТКО понимать что они делают, и какой будет результат. Для того и были придуманы IDE, а то бы до сих пор все бы работали в консоли, и писали код в блокноте. По поводу Gradle вы так и не рассказали толком в чём его суть. Этот инструмент сборки существует с 2007 года, и если был создан новый инструмент, значит он предназначен для решения каких-то задач и преодоления проблем. Конкрено: это черезвычайная гибкость, сможете легко и быстро добавить какое-то действие например после фазы clean в Maven? Gradle это позволяет сделать вообще не напрягаясь даже новичку. Второе преимущество Gradle это скорость сборки больших и очень больших проектов, Gradle собирает такие проекты быстрее. Это кеширование результатов сборки, что тоже предназначенно для ускорения сборки. Task graph тоже может параллельно выполяться. Намного меньший объем файла build.gradle особенно при описании зависимстей. Недостатком Gradle является то что необходимо немного понимтаь groovy и порог входа в этот инструмент больше чем в Maven. По Gradle есть отличный курс на udemy от dmdev, так же у этого автора есть такой youtube канал. При сравнении Maven с Gradle стоило это рассказать, а не просто "стильно модно молодёжно". Бросаетесь шаблонными фразами, ради контента, или непонятно чего, и прсто засоряете людям головы.
@MasterLid
@MasterLid Год назад
Чувачок! Буду краток. Тебя никто ни к чему не принуждает. Нравится IDE -- используй IDE. Нравится vi -- используй vi. Знаешь какую-то полезную информацию и умеешь её подать -- запили свой канал. Не нравится этот ролик -- не смотри его. По-моему, всё просто. Закрепил этот твой комент, чтобы все видели, какой ты умный.
@nikolaifedorov685
@nikolaifedorov685 Год назад
Про документацию смешно всегда было)
@MoscowMyLife
@MoscowMyLife Год назад
Локально запускаются тесты в IDE. Попробовал, через jenkins, как в видео, ошибка, не выполняется прогон. C:\ProgramData\Jenkins\.jenkins\workspace\REST Java API 4>gradlew test --rerun-tasks Starting a Gradle Daemon, 1 incompatible and 2 stopped Daemons could not be reused, use --status for details > Task :compileJava > Task :processResources NO-SOURCE > Task :classes > Task :compileTestJava Note: C:\ProgramData\Jenkins\.jenkins\workspace\REST Java API 4\src\test\java\tv\lid\cinema\api4\test\AppTest.java uses or overrides a deprecated API. Note: Recompile with -Xlint:deprecation for details. > Task :processTestResources > Task :testClasses > Task :test tv.lid.cinema.api4.test.AppTest  Test Application was started PASSED  Test Get the list of movies #1 FAILED org.opentest4j.AssertionFailedError: Failed to decode server's response! at tv.lid.cinema.api4.test.AppTest.__getMovies(AppTest.java:625)   Test Add the movie #1 FAILED org.opentest4j.AssertionFailedError: Unsuccessful request sending result! ==> expected: <true> but was: <false> at tv.lid.cinema.api4.test.AppTest.__addMovie(AppTest.java:690) 
@MasterLid
@MasterLid Год назад
А проанализировать ошибку? У вас не просто "не выполняется прогон", а не проходит тест REST-запроса для получения списка фильмов. А не проходит он, скорее всего, потому, что не инициализирована база данных. Посмотрите, что у вас там в конфиге: правильно ли указан тип базы данных, имя базы, логин и пароль, создана ли сама база данных и т.д.
@MoscowMyLife
@MoscowMyLife Год назад
@@MasterLid Понял, спасибо. Я сначала 1 час поковырялся, посмотрел все настройки, сравнил с видео "org.opentest4j.AssertionFailedError: Failed to decode server's response!" - эта строчка подсказывает, что, что-то с ответом от сервера. Просто я не понимаю в чём дело, я же беру из вашего GIT и локально всё работает в IDEA, а через Jenkins - нет. Там же настройки все на GIT, я ничего не меняю. В коде я там понимаю работа с сервером и БД происходит, дополнительно же ничего не нужно делать для Jenkins. Делаю всё, как в видео. Попробую заново ещё всё сделать, мало-ли где-то допустил я ошибку.
@MasterLid
@MasterLid Год назад
Тесты -- это та же программа на Java. У вас в диагностике прямо файл указан и строка, где тест не проходит. Можно же проанализировать исключение, что там ей не нравится. Но, скорее всего, дело в ненастроенной БД.
@ANDREYQIWS
@ANDREYQIWS Год назад
Какой вы крутой, я вами восхищаюсь, возьмите в падаваны
@MasterLid
@MasterLid Год назад
Большое спасибо за положительную оценку! Очень приятно. Не настолько я крутой. Просто правильно выбранный ВУЗ и опыт работы в IT с 1999 года создают такое впечатление. А раз вы подписались и задаёте вопросы, то уже в падаванах. ; )
@blackmulthumor
@blackmulthumor Год назад
Вилли Вонка сменил профессию) И не зря, если судить по качеству уроков!
@maksimkrasnov244
@maksimkrasnov244 Год назад
Отличная серия роликов. Никакой воды, все четко и подробно рассказано ... Спасибо.
@MasterLid
@MasterLid Год назад
И вам спасибо за положительную оценку! Рад поделиться опытом. С Новым Годом! : )
@rudolfsikorsky7900
@rudolfsikorsky7900 Год назад
Я ничего не понял :) Что, если я создаю проект в IDE, мне кто-то запрещает редактировать pom.xml? Или запускать mvn clean package из консоли? По-моему, наоборот: pom.xlm это первое что я вижу когда новый проект открывается в IDE. Ответ на древний вопрос с Хабры "где мой JAR" - в папке target и это (кажется) не зависит от IDE. Ну а история со звонком шефа - полная ерунда. Тот, кому напрямую звонит шеф, по-любому умеет и в IDE, и в командную строку и ещё в 100500 способов. В общем, проблема высосана из пальца, ящитаю :)
@MasterLid
@MasterLid Год назад
Вам никто ничего не запрещает. Умеете пользоваться и тем и другим -- пользуйтесь ради бога. Видео для тех, кто использует IDE, но при этом не понимает, как оно устроено, и что происходит внутри.
@engend3405
@engend3405 Год назад
Теперь делаю всё "ручками", спасибо. p.s. Крутая подача