Поднять Kafka | Minio | KeyCloak за $$$
Для проекта BuddyService нужно поднять инфраструктуру.
Пишите напрямую @parsentev.
Оплата почасовая с дальнейшей поддержкой сервиса
Для проекта BuddyService нужно поднять инфраструктуру.
Пишите напрямую @parsentev.
Оплата почасовая с дальнейшей поддержкой сервиса
❤2👍2
Как вы знаете, я большой фанат тестов: unit, it, e2e.
Одной из крутых особенностей языка Go является встроенный инструментарий для тестирования.
Тесты в Go оформляются в методологии table-driven test. В этом подходе тестовые данные и ожидаемые результаты формируются в виде таблицы. Такой подход позволяет избавиться от дублирования кода теста и при этом покрыть разнообразные случаи поведения вашей программы.
Про этот подход я знал давно, но не использовал его, потому что мне казалось: если у тебя 105 вариантов входных параметров, а падает 101, то тебе каждый раз нужно прогонять все 100 тестов.
Оказалось, что нет — IDEA Community Edition по умолчанию поддерживает запуск отдельной строки из табличных данных.
В нашем Java курсе я перепишу тесты на подход TDT.
А вы используете такой подход? Напишите свои мысли в комментариях.
—-
Наш курс по Go — https://job4j.ru/courses/38
Одной из крутых особенностей языка Go является встроенный инструментарий для тестирования.
Тесты в Go оформляются в методологии table-driven test. В этом подходе тестовые данные и ожидаемые результаты формируются в виде таблицы. Такой подход позволяет избавиться от дублирования кода теста и при этом покрыть разнообразные случаи поведения вашей программы.
Про этот подход я знал давно, но не использовал его, потому что мне казалось: если у тебя 105 вариантов входных параметров, а падает 101, то тебе каждый раз нужно прогонять все 100 тестов.
Оказалось, что нет — IDEA Community Edition по умолчанию поддерживает запуск отдельной строки из табличных данных.
@ParameterizedTest
@CsvSource({
"true,true,true,true",
"true,false,true,false",
"false,false,false,true",
"true,true,false,false"
})
void testMono(boolean a, boolean b, boolean c, boolean expected) {
Check check = new Check();
boolean[] input = new boolean[]{a, b, c};
boolean result = check.mono(input);
assertThat(result).isEqualTo(expected);
}
В нашем Java курсе я перепишу тесты на подход TDT.
А вы используете такой подход? Напишите свои мысли в комментариях.
—-
Наш курс по Go — https://job4j.ru/courses/38
🔥7
🎒 Акция: Снова в школу
Друзья, мой последний школьный звонок прозвенел ещё в 2003 году, но учиться я продолжаю каждый день.
Хочу поддержать вашу мотивацию и даю скидку на все учебные программы: −15%
Скидка действует до 30 сентября.
👉 http://job4j.ru/
Друзья, мой последний школьный звонок прозвенел ещё в 2003 году, но учиться я продолжаю каждый день.
Хочу поддержать вашу мотивацию и даю скидку на все учебные программы: −15%
Скидка действует до 30 сентября.
👉 http://job4j.ru/
🔥22❤9❤🔥2
Предал Java ради GoLang
Статьи буду публиковать на платформе, так как канал телеграмм для этого не подходит.
https://job4j.ru/article/view/1
Комментарии пока пишите тут. потом добавлю такую возможность на платформу.
Статьи буду публиковать на платформе, так как канал телеграмм для этого не подходит.
https://job4j.ru/article/view/1
Комментарии пока пишите тут. потом добавлю такую возможность на платформу.
👍18😭3🔥1
👍16
Разбор задания с первого этапа собеседования в Яндекс
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