Разбор задания с первого этапа собеседования в Яндекс
https://job4j.ru/article/view/3
В приведенном коде есть явные ошибки. Я их добавил специально, чтобы обсудить. Например, мигающие тесты.
https://job4j.ru/article/view/3
В приведенном коде есть явные ошибки. Я их добавил специально, чтобы обсудить. Например, мигающие тесты.
👍4❤2🔥1
SLI/SLO/SLA
Сейчас на работе занимаюсь созданием нового микросервиса и впервые столкнулся с такими показателями.
SLI (Service Level Indicator) — метрика, по которой мы меряем качество сервиса.
Пример: процент успешных HTTP-запросов (2xx) к нашему платежному микросервису.
SLO (Service Level Objective) — целевое значение для метрики.
Пример: "не менее 99.9% успешных запросов за месяц".
SLA (Service Level Agreement) — формальное соглашение с клиентом, где закреплены SLO и последствия нарушения.
Пример: если платежный сервис падает чаще чем позволяет SLO, то мы возвращаем клиенту часть оплаты.
Как у вас на проектах, есть такие критерии?
Сейчас на работе занимаюсь созданием нового микросервиса и впервые столкнулся с такими показателями.
SLI (Service Level Indicator) — метрика, по которой мы меряем качество сервиса.
Пример: процент успешных HTTP-запросов (2xx) к нашему платежному микросервису.
SLO (Service Level Objective) — целевое значение для метрики.
Пример: "не менее 99.9% успешных запросов за месяц".
SLA (Service Level Agreement) — формальное соглашение с клиентом, где закреплены SLO и последствия нарушения.
Пример: если платежный сервис падает чаще чем позволяет SLO, то мы возвращаем клиенту часть оплаты.
Как у вас на проектах, есть такие критерии?
👍4❤3🤔2🤯2
ООП в Go. Проект Tracker. Часть 1.
Настало время показать, как в Go будет выглядеть уже легендарный проект Tracker.
Хотелось бы сразу написать по всем правилам:
Далее https://job4j.ru/article/view/4
Настало время показать, как в Go будет выглядеть уже легендарный проект Tracker.
Хотелось бы сразу написать по всем правилам:
Далее https://job4j.ru/article/view/4
❤10🔥2
ООП в Go. Проект Tracker. Часть 2.
Один из первых элементов, который я хотел разобрать в языке Go, был элемент внедрения зависимости.
После «магии» Spring DI внедрение зависимости в Go выглядит крайне примитивно.
Далее https://job4j.ru/article/view/5
Один из первых элементов, который я хотел разобрать в языке Go, был элемент внедрения зависимости.
После «магии» Spring DI внедрение зависимости в Go выглядит крайне примитивно.
Далее https://job4j.ru/article/view/5
❤7
ООП в Go. Проект Tracker. Часть 3.
Осталось рассмотреть последний элемент — реализацию полиморфизма за счёт интерфейсов. Когда я стал знакомиться с Go и спрашивать впечатления о языке у тех, кто на нём немного писал, первый негативный отзыв я услышал про «утиную типизацию».
Далее https://job4j.ru/article/view/6
Осталось рассмотреть последний элемент — реализацию полиморфизма за счёт интерфейсов. Когда я стал знакомиться с Go и спрашивать впечатления о языке у тех, кто на нём немного писал, первый негативный отзыв я услышал про «утиную типизацию».
Далее https://job4j.ru/article/view/6
👍4❤3
Обновление блока по микросервисам
Сейчас я занят переписыванием блока о микросервисах. Быстро закончить работу не получается, поэтому хочу кратко описать, какие изменения планируются, чтобы помочь тем ученикам, кто уже проходит этот блок.
Далее 👉 https://www.job4j.ru/article/view/7
Сейчас я занят переписыванием блока о микросервисах. Быстро закончить работу не получается, поэтому хочу кратко описать, какие изменения планируются, чтобы помочь тем ученикам, кто уже проходит этот блок.
Далее 👉 https://www.job4j.ru/article/view/7
👍6🔥5✍2
Как инфоцыгане сравнивают Java и Go
Неделю назад мне скинули статью, где сравнивают Java и Go. Почему мне? Потому что я сам начал писать на Go в этом году. Зачем? Что меня не устраивало в Java?
👉 Далее https://job4j.ru/article/view/8
Неделю назад мне скинули статью, где сравнивают Java и Go. Почему мне? Потому что я сам начал писать на Go в этом году. Зачем? Что меня не устраивало в Java?
👉 Далее https://job4j.ru/article/view/8
👍17❤7🔥3
💡 Code Review [#505545]
Добавил новый урок в курс «Микросервисы» - job4j.ru/courses/14
Причина появления этого урока в том, что в текущей компании очень высокие требования к качеству кода, и мне часто приходится проходить код-ревью по нескольку раз.
Кроме того, все члены команды обязаны участвовать в ревью кода других разработчиков.
Есть несколько моментов, на которые стоит обратить внимание. В уроке я подробно их разобрал, а здесь кратко расскажу для тех, кто не имеет доступа к системе.
🧩 В команде действует негласное правило: одна задача — один коммит.
Из-за этого приходится активно использовать команды:
🤔 Второй важный момент — как проводить ревью, если ты пока плохо ориентируешься в проекте.
Здесь хороший совет дал руководитель команды:
> «Не обязательно писать комментарии по коду, но обязательно смотри чужие MR».
Во-первых, так ты быстрее привыкнешь к стилю команды.
Во-вторых, код станет тебе знаком.
В-третьих, ты поймёшь, к кому можно обратиться по конкретным сервисам.
А как у вас с код-ревью: любите разбирать чужой код или больше волнуетесь, когда проверяют ваш? 😅
#job4j #программирование #codereview #микросервисы
Добавил новый урок в курс «Микросервисы» - job4j.ru/courses/14
Причина появления этого урока в том, что в текущей компании очень высокие требования к качеству кода, и мне часто приходится проходить код-ревью по нескольку раз.
Кроме того, все члены команды обязаны участвовать в ревью кода других разработчиков.
Есть несколько моментов, на которые стоит обратить внимание. В уроке я подробно их разобрал, а здесь кратко расскажу для тех, кто не имеет доступа к системе.
🧩 В команде действует негласное правило: одна задача — один коммит.
Из-за этого приходится активно использовать команды:
git rebase -i
squash
git push -f
🤔 Второй важный момент — как проводить ревью, если ты пока плохо ориентируешься в проекте.
Здесь хороший совет дал руководитель команды:
> «Не обязательно писать комментарии по коду, но обязательно смотри чужие MR».
Во-первых, так ты быстрее привыкнешь к стилю команды.
Во-вторых, код станет тебе знаком.
В-третьих, ты поймёшь, к кому можно обратиться по конкретным сервисам.
А как у вас с код-ревью: любите разбирать чужой код или больше волнуетесь, когда проверяют ваш? 😅
#job4j #программирование #codereview #микросервисы
👍13❤3
Обновление урока Гибкие методологии [#505060]
Добавил описание Scrum, потому что в текущей компании, как раз все по scrum ))
Курс 3.6. Микросервисы v.1.0 https://job4j.ru/courses/14
Добавил описание Scrum, потому что в текущей компании, как раз все по scrum ))
Курс 3.6. Микросервисы v.1.0 https://job4j.ru/courses/14
👍7
Добавил урок "Параллельные задачи Jenkins [#505549]"
На платформе job4j есть бот, который выполняет проверку и сборку проекта ученика, по сути это и есть CI. Изначально, я сделал так, что все задачи в pipeline выполняется последовательно. Это приводит к тому, что если у ученика есть ошибки и в линтере и в тестах, то ему приходится несколько раз делать исправления.
По факту эти задачи можно выполнить независимо, что даст возможность внести полноценные правки.
В курсе DevOps для этого я создал задачу, где показал, как это сделать через Jenkins. а на самой платформе я поправлю поведение CI Bot.
А вот на работе используется GitLab. Причем процессы автоматизирован на столько, что в нем есть и e2e тесты и интеграция с Jira и финальная раскатка канарейкой на прод.
Описание курса DevOps 👉 https://job4j.ru/courses/35
На платформе job4j есть бот, который выполняет проверку и сборку проекта ученика, по сути это и есть CI. Изначально, я сделал так, что все задачи в pipeline выполняется последовательно. Это приводит к тому, что если у ученика есть ошибки и в линтере и в тестах, то ему приходится несколько раз делать исправления.
По факту эти задачи можно выполнить независимо, что даст возможность внести полноценные правки.
В курсе DevOps для этого я создал задачу, где показал, как это сделать через Jenkins. а на самой платформе я поправлю поведение CI Bot.
А вот на работе используется GitLab. Причем процессы автоматизирован на столько, что в нем есть и e2e тесты и интеграция с Jira и финальная раскатка канарейкой на прод.
Описание курса DevOps 👉 https://job4j.ru/courses/35
🔥7👍5❤3🤩1
Изменения в поведение CI Bot
Сегодня обновил поведение платформы Job4j. Как я писал ранее, наш CI Bot выполнял проверки последовательно: check env → linter → test. Это было неудобно, поскольку не давало целостной картины состояния проекта.
Теперь бот проверяет все этапы сразу.
Кроме того, я убрал функцию, при которой бот, обнаружив ошибки, автоматически возвращал ответственного за задачу обратно в статус ученика. Теперь задача остаётся на проверке у ментора. Это сделано для того, чтобы ментор мог подсказать, что именно нужно исправить: в 99 % случаев ученик сам не знает, как это сделать — особенно на начальном этапе обучения.
Тема CI/CD подробно разобрана в курсе DevOps:
👉 https://job4j.ru/courses/35
Сегодня обновил поведение платформы Job4j. Как я писал ранее, наш CI Bot выполнял проверки последовательно: check env → linter → test. Это было неудобно, поскольку не давало целостной картины состояния проекта.
Теперь бот проверяет все этапы сразу.
Кроме того, я убрал функцию, при которой бот, обнаружив ошибки, автоматически возвращал ответственного за задачу обратно в статус ученика. Теперь задача остаётся на проверке у ментора. Это сделано для того, чтобы ментор мог подсказать, что именно нужно исправить: в 99 % случаев ученик сам не знает, как это сделать — особенно на начальном этапе обучения.
Тема CI/CD подробно разобрана в курсе DevOps:
👉 https://job4j.ru/courses/35
👍16🙏2
🔥 Чёрная пятница: Курс DevOps
Хочешь разобраться, как код превращается в работающий сервис? Пора узнать, как устроены Docker, Kubernetes, Jenkins, Prometheus и Grafana — без скучной теории, на реальных проектах.
🎯 Только до 30 ноября — скидка −15% на курс DevOps на практике. Прокачайся в CI/CD, автоматизации и мониторинге, чтобы быть тем, кто не просто пишет код, а запускает его в прод.
12707 руб.14950 руб.
👉 https://job4j.ru/courses/35
Хочешь разобраться, как код превращается в работающий сервис? Пора узнать, как устроены Docker, Kubernetes, Jenkins, Prometheus и Grafana — без скучной теории, на реальных проектах.
🎯 Только до 30 ноября — скидка −15% на курс DevOps на практике. Прокачайся в CI/CD, автоматизации и мониторинге, чтобы быть тем, кто не просто пишет код, а запускает его в прод.
12707 руб.
👉 https://job4j.ru/courses/35
🔥15❤2
Kotlin — эсперанто среди языков программирования
На этой неделе в посте у Михаила https://t.me/liferefactoring/995 была озвучена отличная мысль о том, что мы забываем, чем мы занимаемся.
В посте опубликована ссылка на доклад с конференции Kotlin. В видео два выступления, первое из которых заканчивается фразой: «Котлин — это не сахар». Обычно, когда начинают оправдываться, это значит, что есть за что.
Далее 👉 https://job4j.ru/article/view/9
На этой неделе в посте у Михаила https://t.me/liferefactoring/995 была озвучена отличная мысль о том, что мы забываем, чем мы занимаемся.
В посте опубликована ссылка на доклад с конференции Kotlin. В видео два выступления, первое из которых заканчивается фразой: «Котлин — это не сахар». Обычно, когда начинают оправдываться, это значит, что есть за что.
Далее 👉 https://job4j.ru/article/view/9
Telegram
Дед Мазай
Не вынесла душа поэта )
Смотрел митап от KRUG и на первом же докладе мне, что называется, "подожгло". 🤯
Мне показалось, что доклад для начинающих котлинистов. Но при этом зачем-то учит их делать код очень сложным.
А как же KISS?
Вы не боитесь однажды прийти…
Смотрел митап от KRUG и на первом же докладе мне, что называется, "подожгло". 🤯
Мне показалось, что доклад для начинающих котлинистов. Но при этом зачем-то учит их делать код очень сложным.
А как же KISS?
Вы не боитесь однажды прийти…
❤1
Переход от Java к Go: взгляд инженера, а не фаната языка
Я немного разгреб задачи на работе и наконец нашёл время написать эту статью. Как вы знаете, в последнее время я активно пишу на Go. И в этой статье я хочу объяснить, почему я рекомендую опытным разработчикам попробовать этот язык.
Далее https://job4j.ru/article/view/10
Я немного разгреб задачи на работе и наконец нашёл время написать эту статью. Как вы знаете, в последнее время я активно пишу на Go. И в этой статье я хочу объяснить, почему я рекомендую опытным разработчикам попробовать этот язык.
Далее https://job4j.ru/article/view/10
🔥15👍9❤2
Тем временем
Я обновил весь дизайн через GPT 5.2. Может где-то моргнул, так что смело пишите.
http://job4j.ru/
Я обновил весь дизайн через GPT 5.2. Может где-то моргнул, так что смело пишите.
http://job4j.ru/
🔥20👎4❤3
О созерцании шума ИТ-рынка
Эта статья не про рынок вакансий. Она про то, почему попытка понять ИТ-рынок через вакансии создаёт иллюзию контроля и мешает принимать правильные решения — как разработчикам, так и тем, кто их обучает.
Далее 👉 https://job4j.ru/article/view/11
Эта статья не про рынок вакансий. Она про то, почему попытка понять ИТ-рынок через вакансии создаёт иллюзию контроля и мешает принимать правильные решения — как разработчикам, так и тем, кто их обучает.
Далее 👉 https://job4j.ru/article/view/11
🔥17👍7❤4
Channel name was changed to «job4j.ru - Практика. Ревью. Результат.»
Testcontainers
Добавил на платформу поддержку интеграционных тестов через docker.socket + testcontainers.
В продолжение предыдущей статьи: в новой версии курса по Go повествование будет строиться не от задач, как это было в курсе по Java, а от процессов. Но чтобы описывать процессы, нам сразу нужны интеграционные тесты.
Ранее в курсе мы использовали H2. Сейчас я считаю это неправильным решением, потому что таким образом вы подменяете поведение производственной базы данных, а значит — тестируете не реальный сценарий работы приложения.
Раньше я также был большим сторонником модельных (unit) тестов. Однако со временем пришёл к выводу, что в прикладных сервисах правильнее делать упор на интеграционные тесты. Причём они должны начинаться с уровня API — то есть покрывать целостный процесс, а не проверять локальное состояние отдельных компонентов.
Добавил на платформу поддержку интеграционных тестов через docker.socket + testcontainers.
В продолжение предыдущей статьи: в новой версии курса по Go повествование будет строиться не от задач, как это было в курсе по Java, а от процессов. Но чтобы описывать процессы, нам сразу нужны интеграционные тесты.
Ранее в курсе мы использовали H2. Сейчас я считаю это неправильным решением, потому что таким образом вы подменяете поведение производственной базы данных, а значит — тестируете не реальный сценарий работы приложения.
Раньше я также был большим сторонником модельных (unit) тестов. Однако со временем пришёл к выводу, что в прикладных сервисах правильнее делать упор на интеграционные тесты. Причём они должны начинаться с уровня API — то есть покрывать целостный процесс, а не проверять локальное состояние отдельных компонентов.
🔥9👍6❤4