💡 Вчера я опубликовал пост о сравнении `Thread` и `Coroutines`. Пример с Java вызвал споры, и некоторые утверждали, что код будет работать корректно. Но писал-то я, и точно знаю, что в этом коде есть ошибка. Поэтому в продолжение темы, давайте разберёмся вместе.
📌 Рассмотрим код:
🤔 Где будет храниться переменная `flag`?
1. Массивы в Java — это объекты. Они создаются в куче (heap), которая общая для всех потоков.
2. Переменная
3. Поток
⚡️ Проблема:
- Гонки данных? ❌ Нет, поток
- Проблема видимости? ✅ Да, потому что массив не синхронизирован. Поток
🔍 Может ли решить проблему видимости гарантия `happens-before`?
Чтобы понять, как это работает, вспомним основные случаи happens-before:
1. Прямой порядок внутри потока:
Все действия в одном потоке происходят в том порядке, в котором они написаны в программе. Если действие A предшествует действию B, то "A happens-before B".
2. Синхронизация через `synchronized`:
Разблокировка монитора всегда происходит раньше, чем блокировка тем же монитором другим потоком.
3. Начало и завершение потоков:
- Вызов метода
- Вызов
4. Инициализация переменных:
Конструктор объекта гарантирует, что все его действия будут видны всем потокам, которые получают доступ к объекту.
5. Использование `volatile` переменных:
Запись в
Однако, даже несмотря на то, что
📝 Заключение:
Хотя вызов
📌 Рассмотрим код:
public static void main(String[] args) throws InterruptedException {
var flag = new boolean[] { true };
var job = new Thread(() -> flag[0] = false);
job.start();
job.join();
System.out.println(flag[0]);
}🤔 Где будет храниться переменная `flag`?
1. Массивы в Java — это объекты. Они создаются в куче (heap), которая общая для всех потоков.
2. Переменная
flag — локальная, и её ссылка хранится в стеке метода main. Однако сам массив (объект boolean[]) будет создан в куче.3. Поток
job меняет значение в массиве, который также хранится в куче, доступной обоим потокам.⚡️ Проблема:
- Гонки данных? ❌ Нет, поток
job не зависит от предыдущего состояния.- Проблема видимости? ✅ Да, потому что массив не синхронизирован. Поток
main может не увидеть изменение, сделанное потоком job.🔍 Может ли решить проблему видимости гарантия `happens-before`?
Чтобы понять, как это работает, вспомним основные случаи happens-before:
1. Прямой порядок внутри потока:
Все действия в одном потоке происходят в том порядке, в котором они написаны в программе. Если действие A предшествует действию B, то "A happens-before B".
2. Синхронизация через `synchronized`:
Разблокировка монитора всегда происходит раньше, чем блокировка тем же монитором другим потоком.
3. Начало и завершение потоков:
- Вызов метода
Thread.start() гарантирует, что все действия в вызывающем потоке происходят до любого действия в новом потоке. - Вызов
Thread.join() гарантирует, что все действия в потоке job произойдут до того, как поток main продолжит выполнение после join().4. Инициализация переменных:
Конструктор объекта гарантирует, что все его действия будут видны всем потокам, которые получают доступ к объекту.
5. Использование `volatile` переменных:
Запись в
volatile переменную гарантирует, что это действие происходит до всех последующих чтений этой переменной другими потоками.Однако, даже несмотря на то, что
job.join() заставляет поток main дождаться завершения потока job, операция записи в массив flag[0] может не быть видимой для потока main, так как массив не защищён ни синхронизацией, ни использованием volatile.📝 Заключение:
Хотя вызов
Thread.join() создаёт гарантии happens-before, в многопоточном окружении всегда нужно учитывать особенности модели памяти Java. Особенно это важно при работе с массивами и другими сложными структурами данных. Чтобы избежать проблем с видимостью, всегда стоит использовать дополнительные механизмы синхронизации, такие как volatile или synchronized.👍5🤩1
Снова про английский
Недавно одна из моих учениц устроилась на работу. Сейчас перед ней стоит задача выбора направления для дальнейшего развития, и одной из целей она выбрала овладение английским языком. В своем курсе по программированию я прошу учеников не браться сразу за несколько задач одновременно, а сфокусироваться на одной цели. В данном случае — это трудоустройство.
Изначально я считал, что английский язык крайне необходим для программиста. Раньше можно было выйти на иностранного заказчика и получать *10-15 долларов* в час, в то время как остальные зарабатывали *1-2 доллара*. Однако сейчас такие предложения найти сложно.
В условиях текущей ситуации работодатели уже не требуют владения английским языком. Конечно, это будет плюсом в вашем резюме, но не таким значительным. Тем не менее, владение английским языком остается полезным навыком.
Вернемся к моей ученице и обсудим, что ей посоветовать в плане изучения английского языка. Во-первых, нужно проанализировать, для каких задач нужен этот инструмент. В целом английский можно разделить на два больших навыка — получение информации и её производство.
В данном случае моей ученице необходимо уметь читать техническую литературу, форумы и статьи на английском языке. Это базовый навык, который не требует найма репетиторов.
### Какие упражнения нужно выполнять, чтобы натренировать навык чтения технической литературы:
1. Основные грамматические правила построения предложений. Без этого навыка будет сложно, но в технической литературе его отсутствие не так заметно, как в художественной.
2. Пассивный залог. В технической литературе крайне часто используется пассивный залог, поэтому стоит освежить в памяти, как он строится.
3. Словарный запас. Выбираем интересующую нас книгу или статью и выписываем все неизвестные слова. Важно завести отдельный словарь и выписывать слова вручную. Работу со словами лучше проводить после прочтения текста — сначала читаем, а потом работаем над сложными моментами. Часто можно понять значение слова из контекста, даже если оно вам не знакомо. Это называется *имплицитным* (неявным) процессом обучения, и он используется повсеместно.
### Полезные сервисы и приложения:
- Deepl.com — сервис, предоставляющий возможность переводить с одного языка на другой, а также редактировать написанный текст. Удобно использовать, если вы не поняли смысл предложения или хотите сравнить ваш перевод с переводом AI.
- Quizlet.com — флеш-карты. Как использовать? Читаем статью и записываем туда неизвестные слова, добавляем картинки с ассоциациями и текстом.
Важно уделять внимание дисциплине. Поставьте ежедневные напоминания для тренировок. Пусть это будет *10-20 минут*, но каждый день: *10 минут* чтения и *10 минут* повторения флеш-карт.
### Заключение
Изучение английского языка, несмотря на то, что это уже не обязательное требование для программиста, остается важным и полезным навыком, который расширяет доступ к информационным ресурсам и способствует профессиональному росту. В современном мире владение английским становится скорее конкурентным преимуществом, чем обязательным требованием. Поэтому важно трезво оценивать свои цели и решать, в каком объеме необходимо это знание.
А как вы изучаете английский язык? Напишите в комментариях свои способы и ежедневные упражнения — будем делиться опытом!
#EnglishLearning #Программирование #ТехническийАнглийский #Саморазвитие #Обучение #Советы
Недавно одна из моих учениц устроилась на работу. Сейчас перед ней стоит задача выбора направления для дальнейшего развития, и одной из целей она выбрала овладение английским языком. В своем курсе по программированию я прошу учеников не браться сразу за несколько задач одновременно, а сфокусироваться на одной цели. В данном случае — это трудоустройство.
Изначально я считал, что английский язык крайне необходим для программиста. Раньше можно было выйти на иностранного заказчика и получать *10-15 долларов* в час, в то время как остальные зарабатывали *1-2 доллара*. Однако сейчас такие предложения найти сложно.
В условиях текущей ситуации работодатели уже не требуют владения английским языком. Конечно, это будет плюсом в вашем резюме, но не таким значительным. Тем не менее, владение английским языком остается полезным навыком.
Вернемся к моей ученице и обсудим, что ей посоветовать в плане изучения английского языка. Во-первых, нужно проанализировать, для каких задач нужен этот инструмент. В целом английский можно разделить на два больших навыка — получение информации и её производство.
В данном случае моей ученице необходимо уметь читать техническую литературу, форумы и статьи на английском языке. Это базовый навык, который не требует найма репетиторов.
### Какие упражнения нужно выполнять, чтобы натренировать навык чтения технической литературы:
1. Основные грамматические правила построения предложений. Без этого навыка будет сложно, но в технической литературе его отсутствие не так заметно, как в художественной.
2. Пассивный залог. В технической литературе крайне часто используется пассивный залог, поэтому стоит освежить в памяти, как он строится.
3. Словарный запас. Выбираем интересующую нас книгу или статью и выписываем все неизвестные слова. Важно завести отдельный словарь и выписывать слова вручную. Работу со словами лучше проводить после прочтения текста — сначала читаем, а потом работаем над сложными моментами. Часто можно понять значение слова из контекста, даже если оно вам не знакомо. Это называется *имплицитным* (неявным) процессом обучения, и он используется повсеместно.
### Полезные сервисы и приложения:
- Deepl.com — сервис, предоставляющий возможность переводить с одного языка на другой, а также редактировать написанный текст. Удобно использовать, если вы не поняли смысл предложения или хотите сравнить ваш перевод с переводом AI.
- Quizlet.com — флеш-карты. Как использовать? Читаем статью и записываем туда неизвестные слова, добавляем картинки с ассоциациями и текстом.
Важно уделять внимание дисциплине. Поставьте ежедневные напоминания для тренировок. Пусть это будет *10-20 минут*, но каждый день: *10 минут* чтения и *10 минут* повторения флеш-карт.
### Заключение
Изучение английского языка, несмотря на то, что это уже не обязательное требование для программиста, остается важным и полезным навыком, который расширяет доступ к информационным ресурсам и способствует профессиональному росту. В современном мире владение английским становится скорее конкурентным преимуществом, чем обязательным требованием. Поэтому важно трезво оценивать свои цели и решать, в каком объеме необходимо это знание.
А как вы изучаете английский язык? Напишите в комментариях свои способы и ежедневные упражнения — будем делиться опытом!
#EnglishLearning #Программирование #ТехническийАнглийский #Саморазвитие #Обучение #Советы
👍11❤1
📝 Сегодняшний вопрос с собеседования на тему CI/CD
Вопрос: "Как использовать Docker Compose для запуска микросервисов, если каждый из них находится в отдельном репозитории? Какие подходы и стратегии можно применить для управления их конфигурацией и автоматизацией деплоя?"
Проверьте свой ответ и узнайте правильное решение здесь:
🔗 [Проверь ответ](https://job4j.ru/profile/interview/13/question/354)
#CI_CD #Docker #DevOps #Собеседование #job4j
Вопрос: "Как использовать Docker Compose для запуска микросервисов, если каждый из них находится в отдельном репозитории? Какие подходы и стратегии можно применить для управления их конфигурацией и автоматизацией деплоя?"
Проверьте свой ответ и узнайте правильное решение здесь:
🔗 [Проверь ответ](https://job4j.ru/profile/interview/13/question/354)
#CI_CD #Docker #DevOps #Собеседование #job4j
👍1
Про развитие
🧩 5 лет назад я записал видео о том, как развиваться программисту. Тогда я считал, что главный показатель роста — это доход. Чем он выше, тем лучше. Но сейчас, с опытом, я понимаю, что это лишь часть пути. В этой статье поделюсь своим следующим шагом к мастерству.
💼 Вчера я проводил собеседования на позицию мидл программиста для проекта в медицинской сфере. Классическая микросервисная архитектура: куча сервисов, Kafka, Docker, интеграции через SOAP, REST и gRPC. Средняя зарплата — 250-300 тыс. руб. в месяц на полный рабочий день, возможна частичная занятость.
🤖 В прошлые разы я настаивал на том, чтобы HR отбирали резюме только с наличием GitHub профиля. К сожалению, таких кандидатов оказалось крайне мало. Основной аргумент тех, кто не делится своим кодом, — время. У них якобы нет времени на свои проекты, ответы на Stack Overflow или ведение блога. Но действительно ли они такие загруженные?
На самом деле, большинство программистов видят свою работу лишь как способ зарабатывания денег. Однако среди них многие считают себя профессионалами, измеряя успех уровнем зарплаты. Но зарплата показывает только, насколько вы полезны конкретной компании, а не сообществу IT. Признание сообщества — это более высокий уровень развития, чем просто деньги.
💡 Как же перейти на этот уровень? Делитесь своим опытом! Самый простой способ — это пет-проекты. Раньше термин «пет-проект» вызывал у меня негативные эмоции — казалось, что это что-то незначительное и стыдное. Но со временем я изменил мнение. Пет-проект — это способ выразить свой опыт. Если вы не умеете пользоваться инструментами или настраивать pipeline, это будет видно в вашем проекте.
🚀 Я по-прежнему прошу кандидатов показывать их GitHub профиль, хотя в 99% случаев слышу, что там «ничего интересного, только старые проекты». Но по мне, это показатель отношения. Пусть проект будет маленьким, но в нем должна быть система сборки, статические инструменты, интегрированный CI/CD и описание, как его собрать. Это знак, что программист действительно хочет развиваться, а не просто клацать по клавиатуре и жаловаться на коллег.
🔍 В заключение. Я настоятельно рекомендую вести свои пет-проекты. Пусть они будут маленькими, но уютными: локальные утилиты, однофункциональные сервисы, Telegram-боты. Опишите, что делает ваш проект. Покажите высокий профессионализм в ведении публичного репозитория. Во-первых, это просто интересно. Во-вторых, это может стать решающим фактором на собеседовании.
📝 Что вы думаете? Стоит ли тратить время на пет-проекты или лучше глубже изучать технологии и читать книги? Делитесь своими мыслями и ссылками на ваши проекты в комментариях! 👇
#развитие #петпроекты #ITсообщество #программисты #GitHub #карьера
🧩 5 лет назад я записал видео о том, как развиваться программисту. Тогда я считал, что главный показатель роста — это доход. Чем он выше, тем лучше. Но сейчас, с опытом, я понимаю, что это лишь часть пути. В этой статье поделюсь своим следующим шагом к мастерству.
💼 Вчера я проводил собеседования на позицию мидл программиста для проекта в медицинской сфере. Классическая микросервисная архитектура: куча сервисов, Kafka, Docker, интеграции через SOAP, REST и gRPC. Средняя зарплата — 250-300 тыс. руб. в месяц на полный рабочий день, возможна частичная занятость.
🤖 В прошлые разы я настаивал на том, чтобы HR отбирали резюме только с наличием GitHub профиля. К сожалению, таких кандидатов оказалось крайне мало. Основной аргумент тех, кто не делится своим кодом, — время. У них якобы нет времени на свои проекты, ответы на Stack Overflow или ведение блога. Но действительно ли они такие загруженные?
На самом деле, большинство программистов видят свою работу лишь как способ зарабатывания денег. Однако среди них многие считают себя профессионалами, измеряя успех уровнем зарплаты. Но зарплата показывает только, насколько вы полезны конкретной компании, а не сообществу IT. Признание сообщества — это более высокий уровень развития, чем просто деньги.
💡 Как же перейти на этот уровень? Делитесь своим опытом! Самый простой способ — это пет-проекты. Раньше термин «пет-проект» вызывал у меня негативные эмоции — казалось, что это что-то незначительное и стыдное. Но со временем я изменил мнение. Пет-проект — это способ выразить свой опыт. Если вы не умеете пользоваться инструментами или настраивать pipeline, это будет видно в вашем проекте.
🚀 Я по-прежнему прошу кандидатов показывать их GitHub профиль, хотя в 99% случаев слышу, что там «ничего интересного, только старые проекты». Но по мне, это показатель отношения. Пусть проект будет маленьким, но в нем должна быть система сборки, статические инструменты, интегрированный CI/CD и описание, как его собрать. Это знак, что программист действительно хочет развиваться, а не просто клацать по клавиатуре и жаловаться на коллег.
🔍 В заключение. Я настоятельно рекомендую вести свои пет-проекты. Пусть они будут маленькими, но уютными: локальные утилиты, однофункциональные сервисы, Telegram-боты. Опишите, что делает ваш проект. Покажите высокий профессионализм в ведении публичного репозитория. Во-первых, это просто интересно. Во-вторых, это может стать решающим фактором на собеседовании.
📝 Что вы думаете? Стоит ли тратить время на пет-проекты или лучше глубже изучать технологии и читать книги? Делитесь своими мыслями и ссылками на ваши проекты в комментариях! 👇
#развитие #петпроекты #ITсообщество #программисты #GitHub #карьера
🔥8👍4
Добавили новую функцию "Изучить" в разделе Собеседования! Теперь ты можешь готовиться к интервью прямо на платформе:
1. Изучай вопросы и понимай ключевые моменты.
2. Пробуй отвечать на вопросы и оценивай свои результаты.
3. Следи за прогрессом в статистике и улучшай свои навыки!
Попробуй уже сейчас: [job4j.ru/profile/interview](https://job4j.ru/profile/interview)
1. Изучай вопросы и понимай ключевые моменты.
2. Пробуй отвечать на вопросы и оценивай свои результаты.
3. Следи за прогрессом в статистике и улучшай свои навыки!
Попробуй уже сейчас: [job4j.ru/profile/interview](https://job4j.ru/profile/interview)
🔥18❤4
Приглашаю на вебинар по проведению технических собеседований!
Хочу поделиться своим опытом проведения технических собеседований и показать, как проходит процесс интервью от начала до конца. Собеседование будет состоять из 5 частей:
1. Алгоритмическая задача
2. SQL
3. Проектирование системы
4. Код-ревью
5. Опыт работы с CI/CD и процессы разработки
Для полноценного проведения вебинара мне нужен гость, который готов принять участие в интервью, отвечать на вопросы и вместе обсудить результаты. Это отличная возможность получить ценный опыт и обратную связь в режиме реального времени.
Оплата договорная.
Если вы заинтересованы и готовы принять участие, пожалуйста, свяжитесь со мной в личных сообщениях.
Хочу поделиться своим опытом проведения технических собеседований и показать, как проходит процесс интервью от начала до конца. Собеседование будет состоять из 5 частей:
1. Алгоритмическая задача
2. SQL
3. Проектирование системы
4. Код-ревью
5. Опыт работы с CI/CD и процессы разработки
Для полноценного проведения вебинара мне нужен гость, который готов принять участие в интервью, отвечать на вопросы и вместе обсудить результаты. Это отличная возможность получить ценный опыт и обратную связь в режиме реального времени.
Оплата договорная.
Если вы заинтересованы и готовы принять участие, пожалуйста, свяжитесь со мной в личных сообщениях.
Вопросы для собеседования по реактивному программированию
1. Что такое реактивное программирование, и каковы его основные принципы?
2. Какие существуют библиотеки для реактивного программирования на Java, и в чем их особенности?
3. В чем заключается разница между `Mono` и `Flux` в Project Reactor?
4. Какие ключевые методы `Mono` и `Flux` ты знаешь?
5. Что такое *schedulers* в реактивном программировании?
6. Какие типы *schedulers* ты знаешь, и когда целесообразно их использовать?
7. Как работают шедулеры `immediate()`, `single()`, `boundedElastic()`, `parallel()`, и как они влияют на производительность?
8. В чем заключается разница между *hot* и *cold publishers*, и какие примеры их применения можно привести?
9. Как работает реактивный доступ к SQL базам данных?
10. Как работает реактивный доступ к NoSQL базам данных?
11. Что такое *event loop* и как он используется в реактивных приложениях?
12. В чем суть *Reactive Manifesto*, и как его основные принципы помогают строить реактивные системы?
13. Что такое реактивный стриминг, и как он реализован в Project Reactor?
14. Каковы основные плюсы и минусы реактивного программирования?
15. В каких ситуациях реактивный подход может быть неэффективен или сложен для реализации?
16. Какие основные отличия существуют между реактивной моделью и традиционным многопоточным программированием?
17. Какие паттерны проектирования наиболее полезны при создании реактивных приложений?
18. Что такое *backpressure* и как его можно контролировать в реактивных потоках?
19. Какие методы *backpressure* предоставляет библиотека Project Reactor, и когда их стоит использовать?
20. Какие преимущества имеет реактивное программирование при создании высоконагруженных систем?
21. Можешь описать типичный процесс от подписки до завершения для цепочки реактивных операций?
22. Как осуществлять тестирование реактивного приложения?
---
Изучить теорию к вопросам можно тут:
https://job4j.ru/profile/interview/28
1. Что такое реактивное программирование, и каковы его основные принципы?
2. Какие существуют библиотеки для реактивного программирования на Java, и в чем их особенности?
3. В чем заключается разница между `Mono` и `Flux` в Project Reactor?
4. Какие ключевые методы `Mono` и `Flux` ты знаешь?
5. Что такое *schedulers* в реактивном программировании?
6. Какие типы *schedulers* ты знаешь, и когда целесообразно их использовать?
7. Как работают шедулеры `immediate()`, `single()`, `boundedElastic()`, `parallel()`, и как они влияют на производительность?
8. В чем заключается разница между *hot* и *cold publishers*, и какие примеры их применения можно привести?
9. Как работает реактивный доступ к SQL базам данных?
10. Как работает реактивный доступ к NoSQL базам данных?
11. Что такое *event loop* и как он используется в реактивных приложениях?
12. В чем суть *Reactive Manifesto*, и как его основные принципы помогают строить реактивные системы?
13. Что такое реактивный стриминг, и как он реализован в Project Reactor?
14. Каковы основные плюсы и минусы реактивного программирования?
15. В каких ситуациях реактивный подход может быть неэффективен или сложен для реализации?
16. Какие основные отличия существуют между реактивной моделью и традиционным многопоточным программированием?
17. Какие паттерны проектирования наиболее полезны при создании реактивных приложений?
18. Что такое *backpressure* и как его можно контролировать в реактивных потоках?
19. Какие методы *backpressure* предоставляет библиотека Project Reactor, и когда их стоит использовать?
20. Какие преимущества имеет реактивное программирование при создании высоконагруженных систем?
21. Можешь описать типичный процесс от подписки до завершения для цепочки реактивных операций?
22. Как осуществлять тестирование реактивного приложения?
---
Изучить теорию к вопросам можно тут:
https://job4j.ru/profile/interview/28
🔥2👍1
🎙 Вебинар 6: Адаптация на новом месте работы в IT 🚀
Приглашенный гость: Кунах Антон. Опыт работы 6+ лет.
Как быстро освоиться на новом месте, справиться с ожиданиями и реальностью, а также успешно войти в новую команду? Приглашаем вас на вебинар с опытным гостем, который прошел путь от инженера до тех-лида, работая в таких компаниях, как Тинькофф, Яндекс, Сбербанк-Технологии и T1 Consulting!
🌐 Основные темы вебинара:
- ✅ Адаптация в новом коллективе — как привыкнуть к команде и сразу быть полезным?
- ✅ От ожиданий к реальности — что делать, если проект не оправдал надежд?
- ✅ Этапы успешного онбординга — от знакомства с процессами до быстрого перехода к работе.
- ✅ Технологический стек — как быстро освоить новые инструменты и версии Java, Spring, Kafka, Docker и многое другое.
- ✅ Роль тим-лида в адаптации — как поддерживать и развивать команду в условиях изменений?
👥 Для кого: для тех, кто готовится к переходу на новую работу, меняет сферу или хочет улучшить навыки адаптации в IT.
💰 Стоимость участия: 500 рублей. Писать в личные сообщения [@parsentev](https://t.me/parsentev) для регистрации.
🕑 Когда: Уточняется
📍 Где: Телеграм
Присоединяйтесь, будет интересно! Получите полезные инсайты от профессионала и узнайте, как сделать адаптацию максимально эффективной. 👩💻👨💻
#вебинар #адаптация #онбординг #IT #карьера #тимлид #технологии
Приглашенный гость: Кунах Антон. Опыт работы 6+ лет.
Как быстро освоиться на новом месте, справиться с ожиданиями и реальностью, а также успешно войти в новую команду? Приглашаем вас на вебинар с опытным гостем, который прошел путь от инженера до тех-лида, работая в таких компаниях, как Тинькофф, Яндекс, Сбербанк-Технологии и T1 Consulting!
🌐 Основные темы вебинара:
- ✅ Адаптация в новом коллективе — как привыкнуть к команде и сразу быть полезным?
- ✅ От ожиданий к реальности — что делать, если проект не оправдал надежд?
- ✅ Этапы успешного онбординга — от знакомства с процессами до быстрого перехода к работе.
- ✅ Технологический стек — как быстро освоить новые инструменты и версии Java, Spring, Kafka, Docker и многое другое.
- ✅ Роль тим-лида в адаптации — как поддерживать и развивать команду в условиях изменений?
👥 Для кого: для тех, кто готовится к переходу на новую работу, меняет сферу или хочет улучшить навыки адаптации в IT.
💰 Стоимость участия: 500 рублей. Писать в личные сообщения [@parsentev](https://t.me/parsentev) для регистрации.
🕑 Когда: Уточняется
📍 Где: Телеграм
Присоединяйтесь, будет интересно! Получите полезные инсайты от профессионала и узнайте, как сделать адаптацию максимально эффективной. 👩💻👨💻
#вебинар #адаптация #онбординг #IT #карьера #тимлид #технологии
Telegram
Петр Арсентьев
https://job4j.ru/ - Программируй вместе с нами
### План вебинара 6: Адаптация на новом месте работы в IT
Продолжительность: 1.5 часа
---
#### 1. Вступительное слово (5 мин)
- Приветствие участников.
- Краткое представление гостя и его профессионального опыта.
---
#### 2. Профессиональный путь и адаптация (20 мин)
Вопросы:
1. Рассказать о карьерном пути: как гость пришел в IT, ключевые проекты и их влияние на профессиональный рост (10 мин).
2. Основные трудности на первых этапах работы в новых командах (10 мин).
---
#### 3. Практические аспекты адаптации (25 мин)
Вопросы:
3. Как удавалось быстро входить в новые проекты, несмотря на разнообразный стек технологий? (10 мин)
4. Подготовка к первому дню на новой работе, привычки и ритуалы, помогающие адаптироваться (5 мин).
5. Методы налаживания командного взаимодействия, как находить общий язык с новыми коллегами (10 мин).
---
#### 4. Ожидания и реальность (15 мин)
Вопросы:
6. Опыт работы, где ожидания не совпали с реальностью: когда стоит оставаться, а когда – уходить? (10 мин).
7. Как справляться с корпоративной культурой, к которой сложно адаптироваться? (5 мин).
---
#### 5. Лидерство и адаптация других (20 мин)
Вопросы:
8. Помощь новичкам в адаптации и улучшение процесса онбординга (10 мин).
9. Сложности при адаптации сотрудников как тимлид, подходы к решению проблем (10 мин).
---
#### 6. Технологии и профессиональный рост (15 мин)
Вопросы:
10. Адаптация к новым технологиям и поддержание актуальности знаний (10 мин).
11. Подход к проектам с новыми технологиями, обучение с нуля (5 мин).
---
#### 7. Заключительные советы и Q&A-сессия (15 мин)
Заключительные вопросы:
12. Главный совет тем, кто впервые выходит на новое место (5 мин).
Q&A с аудиторией: Ответы на вопросы участников, обсуждения (10 мин).
---
Итоги: Подведение итогов, благодарность гостю и участникам.
Продолжительность: 1.5 часа
---
#### 1. Вступительное слово (5 мин)
- Приветствие участников.
- Краткое представление гостя и его профессионального опыта.
---
#### 2. Профессиональный путь и адаптация (20 мин)
Вопросы:
1. Рассказать о карьерном пути: как гость пришел в IT, ключевые проекты и их влияние на профессиональный рост (10 мин).
2. Основные трудности на первых этапах работы в новых командах (10 мин).
---
#### 3. Практические аспекты адаптации (25 мин)
Вопросы:
3. Как удавалось быстро входить в новые проекты, несмотря на разнообразный стек технологий? (10 мин)
4. Подготовка к первому дню на новой работе, привычки и ритуалы, помогающие адаптироваться (5 мин).
5. Методы налаживания командного взаимодействия, как находить общий язык с новыми коллегами (10 мин).
---
#### 4. Ожидания и реальность (15 мин)
Вопросы:
6. Опыт работы, где ожидания не совпали с реальностью: когда стоит оставаться, а когда – уходить? (10 мин).
7. Как справляться с корпоративной культурой, к которой сложно адаптироваться? (5 мин).
---
#### 5. Лидерство и адаптация других (20 мин)
Вопросы:
8. Помощь новичкам в адаптации и улучшение процесса онбординга (10 мин).
9. Сложности при адаптации сотрудников как тимлид, подходы к решению проблем (10 мин).
---
#### 6. Технологии и профессиональный рост (15 мин)
Вопросы:
10. Адаптация к новым технологиям и поддержание актуальности знаний (10 мин).
11. Подход к проектам с новыми технологиями, обучение с нуля (5 мин).
---
#### 7. Заключительные советы и Q&A-сессия (15 мин)
Заключительные вопросы:
12. Главный совет тем, кто впервые выходит на новое место (5 мин).
Q&A с аудиторией: Ответы на вопросы участников, обсуждения (10 мин).
---
Итоги: Подведение итогов, благодарность гостю и участникам.
❤1
Напоминаю о вебинарах, которые помогут улучшить ваши навыки в IT и подготовиться к собеседованию!
🌐 Вебинар 5: Разбор собеседования
🔖 Два гостя: Идрисов Азат (опыт 3+ года) и Nikita Nesterenko (опыт 3+ года).
⏰ Дата: 09.11.2024 в 19:00 по Мск.
📅 Разбор процесса собеседования от начала до конца. Детальные этапы интервью.
🌐 Вебинар 6: Адаптация на новом месте работы в IT 🚀
🔖 Приглашенный гость: Кунах Антон (опыт 6+ лет).
⏰ Время: 16.11.2024 в 19:00 по Мск.
📅 Особенности входа в новую команду и адаптации на рабочем месте. Опыт от эксперта, работавшего в таких компаниях, как Тинькофф, Яндекс, Сбербанк-Технологии, T1 Consulting.
🔗 Для участия пишите @parsentev.
💲 Стоимость: 500 руб.
🌐 Вебинар 5: Разбор собеседования
🔖 Два гостя: Идрисов Азат (опыт 3+ года) и Nikita Nesterenko (опыт 3+ года).
⏰ Дата: 09.11.2024 в 19:00 по Мск.
📅 Разбор процесса собеседования от начала до конца. Детальные этапы интервью.
🌐 Вебинар 6: Адаптация на новом месте работы в IT 🚀
🔖 Приглашенный гость: Кунах Антон (опыт 6+ лет).
⏰ Время: 16.11.2024 в 19:00 по Мск.
📅 Особенности входа в новую команду и адаптации на рабочем месте. Опыт от эксперта, работавшего в таких компаниях, как Тинькофф, Яндекс, Сбербанк-Технологии, T1 Consulting.
🔗 Для участия пишите @parsentev.
💲 Стоимость: 500 руб.
Скуфикация. Пошаговый план для программиста. Сарказм.
Что такое скуфикация?
Скуфикация — это процесс, при котором человек теряет интерес и мотивацию к своей работе, превращаясь в скучного и пассивного специалиста, выполняющего задачи механически, без энтузиазма и стремления к развитию. Причины скуфикации могут включать:
Монотонность и отсутствие вызовов в работе.
Недостаток новых знаний и профессионального развития.
Перегорание из-за чрезмерных нагрузок.
Отсутствие личной вовлеченности в проекты.
Изоляция от профессионального сообщества и коллег.
Что такое скуфикация?
Скуфикация — это процесс, при котором человек теряет интерес и мотивацию к своей работе, превращаясь в скучного и пассивного специалиста, выполняющего задачи механически, без энтузиазма и стремления к развитию. Причины скуфикации могут включать:
Монотонность и отсутствие вызовов в работе.
Недостаток новых знаний и профессионального развития.
Перегорание из-за чрезмерных нагрузок.
Отсутствие личной вовлеченности в проекты.
Изоляция от профессионального сообщества и коллег.
👍3❤1👎1
## 💭 Скуфикация. Пошаговый план для программиста. Сарказм.
### 🙄 Что такое скуфикация?
Скуфикация — это процесс, при котором человек теряет интерес и мотивацию к своей работе, превращаясь в скучного и пассивного специалиста, выполняющего задачи механически, без энтузиазма и стремления к развитию. Причины скуфикации могут включать:
- 🔁 Монотонность и отсутствие вызовов в работе.
- 📚 Недостаток новых знаний и профессионального развития.
- 🔥 Перегорание из-за чрезмерных нагрузок.
- 💷 Отсутствие личной вовлеченности в проекты.
- 🚶♂️ Изоляция от профессионального сообщества и коллег.
Чтобы избежать этой судьбы, важно понимать ключевые аспекты, позволяющие сохранить мотивацию и оставаться на гребне профессиональной волны.
### 🔧 1. Постоянное обучение и развитие
Одной из главных причин, почему программисты могут стать скуфами, является застой в знаниях. Технологии развиваются с невероятной скоростью, и важно постоянно изучать новые инструменты и подходы:
- 📰 Подписывайтесь на новостные ресурсы и блоги в IT-сфере (и делайте вид, что понимаете, о чём они).
- 🚀 Участвуйте в хакатонах и конференциях (не забудьте взять с собой кофе и запасной мозг).
- 📚 Пробуйте себя в новых языках программирования и технологиях (ведь зачем учить один язык хорошо, когда можно знать десять плохо?).
Это помогает не только держать себя в курсе событий, но и находить свежие идеи для реализации в текущих проектах, которые потом никто не примет в продакшен.
### 🏠 2. Баланс между работой и личной жизнью
Перегорание — одна из главных причин, по которой программисты теряют интерес к своей работе. Чтобы этого избежать:
- ⏳ Установите четкие границы между работой и отдыхом (и игнорируйте сообщения босса после 23:00).
- 💃 Занимайтесь хобби вне программирования: спортом, искусством, путешествиями (чтобы потом всем рассказывать, как у вас нет на это времени).
- 🍔 Поддерживайте здоровый режим сна и питания (да, пицца считается здоровой, если добавить салат).
Сбалансированная жизнь помогает не только чувствовать себя лучше, но и оставаться продуктивным и креативным на работе (по крайней мере, до обеда).
### 🌟 3. Работайте над проектами, которые вам интересны
Интересные и значимые проекты — залог мотивации и желания развиваться. Если ваша работа превращается в рутину:
- 📊 Обсудите с руководством возможность участвовать в новых задачах или проектах (желательно, таких, которые ещё не обсуждались на десятке совещаний).
- 😼 Найдите способы внести свою креативность в текущие задачи (например, замените все комментарии на шутки про котиков).
- 🎡 Пробуйте работать над собственными проектами в свободное время (потому что ваше свободное время явно не для отдыха).
### 🚗 4. Не бойтесь менять рабочее окружение
Если вам кажется, что ваше место работы не способствует вашему развитию или делает вас скуфом:
- 🔍 Изучите рынок труда, чтобы понять, какие возможности есть за пределами текущей компании (и обнаружьте, что везде пишут одно и то же).
- 💸 Рассмотрите возможность фриланса или перехода в другую компанию, которая больше соответствует вашим интересам (а может, и вашей мечте о работе в пижаме).
- 💬 Поговорите с коллегами и ментором, чтобы понять, что можно изменить в текущей работе (и узнайте, что всё и так идеально).
### 👥 5. Общайтесь с сообществом
Изоляция — один из факторов, способствующих тому, что программист становится скуфом. Общение с коллегами и участие в профессиональных сообществах помогает поддерживать мотивацию и получать новый взгляд на вещи:
- 🗨 Участвуйте в обсуждениях на профессиональных форумах и в чатах (и не забывайте оставлять комментарии “+1”).
- 🌐 Ищите сообщества по интересам, будь то open-source проекты или группы, обсуждающие последние тренды (где все притворяются, что это невероятно интересно).
- 💡 Делитесь своими знаниями, обучая других и выступая с докладами (даже если на ваши доклады приходит только кот).
### 🙄 Что такое скуфикация?
Скуфикация — это процесс, при котором человек теряет интерес и мотивацию к своей работе, превращаясь в скучного и пассивного специалиста, выполняющего задачи механически, без энтузиазма и стремления к развитию. Причины скуфикации могут включать:
- 🔁 Монотонность и отсутствие вызовов в работе.
- 📚 Недостаток новых знаний и профессионального развития.
- 🔥 Перегорание из-за чрезмерных нагрузок.
- 💷 Отсутствие личной вовлеченности в проекты.
- 🚶♂️ Изоляция от профессионального сообщества и коллег.
Чтобы избежать этой судьбы, важно понимать ключевые аспекты, позволяющие сохранить мотивацию и оставаться на гребне профессиональной волны.
### 🔧 1. Постоянное обучение и развитие
Одной из главных причин, почему программисты могут стать скуфами, является застой в знаниях. Технологии развиваются с невероятной скоростью, и важно постоянно изучать новые инструменты и подходы:
- 📰 Подписывайтесь на новостные ресурсы и блоги в IT-сфере (и делайте вид, что понимаете, о чём они).
- 🚀 Участвуйте в хакатонах и конференциях (не забудьте взять с собой кофе и запасной мозг).
- 📚 Пробуйте себя в новых языках программирования и технологиях (ведь зачем учить один язык хорошо, когда можно знать десять плохо?).
Это помогает не только держать себя в курсе событий, но и находить свежие идеи для реализации в текущих проектах, которые потом никто не примет в продакшен.
### 🏠 2. Баланс между работой и личной жизнью
Перегорание — одна из главных причин, по которой программисты теряют интерес к своей работе. Чтобы этого избежать:
- ⏳ Установите четкие границы между работой и отдыхом (и игнорируйте сообщения босса после 23:00).
- 💃 Занимайтесь хобби вне программирования: спортом, искусством, путешествиями (чтобы потом всем рассказывать, как у вас нет на это времени).
- 🍔 Поддерживайте здоровый режим сна и питания (да, пицца считается здоровой, если добавить салат).
Сбалансированная жизнь помогает не только чувствовать себя лучше, но и оставаться продуктивным и креативным на работе (по крайней мере, до обеда).
### 🌟 3. Работайте над проектами, которые вам интересны
Интересные и значимые проекты — залог мотивации и желания развиваться. Если ваша работа превращается в рутину:
- 📊 Обсудите с руководством возможность участвовать в новых задачах или проектах (желательно, таких, которые ещё не обсуждались на десятке совещаний).
- 😼 Найдите способы внести свою креативность в текущие задачи (например, замените все комментарии на шутки про котиков).
- 🎡 Пробуйте работать над собственными проектами в свободное время (потому что ваше свободное время явно не для отдыха).
### 🚗 4. Не бойтесь менять рабочее окружение
Если вам кажется, что ваше место работы не способствует вашему развитию или делает вас скуфом:
- 🔍 Изучите рынок труда, чтобы понять, какие возможности есть за пределами текущей компании (и обнаружьте, что везде пишут одно и то же).
- 💸 Рассмотрите возможность фриланса или перехода в другую компанию, которая больше соответствует вашим интересам (а может, и вашей мечте о работе в пижаме).
- 💬 Поговорите с коллегами и ментором, чтобы понять, что можно изменить в текущей работе (и узнайте, что всё и так идеально).
### 👥 5. Общайтесь с сообществом
Изоляция — один из факторов, способствующих тому, что программист становится скуфом. Общение с коллегами и участие в профессиональных сообществах помогает поддерживать мотивацию и получать новый взгляд на вещи:
- 🗨 Участвуйте в обсуждениях на профессиональных форумах и в чатах (и не забывайте оставлять комментарии “+1”).
- 🌐 Ищите сообщества по интересам, будь то open-source проекты или группы, обсуждающие последние тренды (где все притворяются, что это невероятно интересно).
- 💡 Делитесь своими знаниями, обучая других и выступая с докладами (даже если на ваши доклады приходит только кот).
👍5👎1
### 📚 Заключение
Стать скуфом легко, если упустить из виду баланс между профессиональной жизнью и личными потребностями. Постоянное развитие, поддержка баланса и участие в значимых проектах — это ключевые шаги, чтобы оставаться мотивированным и продолжать свой путь как успешный программист. Следуйте этим рекомендациям (или хотя бы делайте вид, что следуете), и ваша карьера будет не только успешной, но и наполненной смыслом и удовольствием (или хотя бы мемами).
📸 А как вы проводите свои выходные? Делитесь фото и историями в комментариях! ☀️
#программирование #мотивация #балансжизни #выходные #ITюмор
Стать скуфом легко, если упустить из виду баланс между профессиональной жизнью и личными потребностями. Постоянное развитие, поддержка баланса и участие в значимых проектах — это ключевые шаги, чтобы оставаться мотивированным и продолжать свой путь как успешный программист. Следуйте этим рекомендациям (или хотя бы делайте вид, что следуете), и ваша карьера будет не только успешной, но и наполненной смыслом и удовольствием (или хотя бы мемами).
📸 А как вы проводите свои выходные? Делитесь фото и историями в комментариях! ☀️
#программирование #мотивация #балансжизни #выходные #ITюмор
👍3👎1
Статический анализ кода в Kotlin | Detekt
⚡️ Как подключить и настроить Detekt в вашем Kotlin-проекте с использованием Kotlin DSL
✅ Detekt — это статический анализатор кода, который помогает находить ошибки, стилистические проблемы и потенциальные анти-паттерны в ваших проектах на Kotlin.
Шаги по подключению:
1. Добавьте плагин в
2. Создайте конфиг: Выполните
3. Настройте Detekt в `build.gradle.kts`:
4. Запуск Detekt: Анализ проводится командой:
Полезно:
- Настройте
- Включите Detekt в CI/CD, чтобы поддерживать качество кода.
Больше информации о Kotlin в нашем курсе на платформе job4j.ru!
⚡️ Как подключить и настроить Detekt в вашем Kotlin-проекте с использованием Kotlin DSL
✅ Detekt — это статический анализатор кода, который помогает находить ошибки, стилистические проблемы и потенциальные анти-паттерны в ваших проектах на Kotlin.
Шаги по подключению:
1. Добавьте плагин в
build.gradle.kts: plugins {
kotlin("jvm") version "1.8.0"
id("io.gitlab.arturbosch.detekt") version "1.23.0"
}
2. Создайте конфиг: Выполните
./gradlew detektGenerateConfig для создания detekt.yml.3. Настройте Detekt в `build.gradle.kts`:
detekt {
toolVersion = "1.23.0"
config = files("$projectDir/detekt.yml")
buildUponDefaultConfig = true
}
4. Запуск Detekt: Анализ проводится командой:
./gradlew detekt
Полезно:
- Настройте
detekt.yml для своих стилевых преференций.- Включите Detekt в CI/CD, чтобы поддерживать качество кода.
Больше информации о Kotlin в нашем курсе на платформе job4j.ru!
Напоминаю о вебинаре в эту субботу «Проведение IT-собеседований: взгляд изнутри», который состоится 9 ноября 2024 года в 19:00 по московскому времени.
Вместе с двумя опытными специалистами, которые регулярно проводят технические собеседования в своих компаниях, мы обсудим:
- как строится процесс отбора кандидатов,
- какие типы задач они задают на собеседованиях и почему,
- на что обращают внимание при оценке ответов,
- помогают ли кандидатам в процессе собеседования и как реагируют на ошибки,
- какую роль играет обратная связь и как её правильно давать,
- а также самые курьезные и запоминающиеся моменты их интервьюерской практики.
Формат вебинара – перекрёстные вопросы, что позволит каждому спикеру задать вопросы друг другу и поделиться своим уникальным подходом. Присоединяйтесь, чтобы узнать, как проходит отбор кандидатов изнутри и что важно для успешного прохождения IT-собеседования.
Вместе с двумя опытными специалистами, которые регулярно проводят технические собеседования в своих компаниях, мы обсудим:
- как строится процесс отбора кандидатов,
- какие типы задач они задают на собеседованиях и почему,
- на что обращают внимание при оценке ответов,
- помогают ли кандидатам в процессе собеседования и как реагируют на ошибки,
- какую роль играет обратная связь и как её правильно давать,
- а также самые курьезные и запоминающиеся моменты их интервьюерской практики.
Формат вебинара – перекрёстные вопросы, что позволит каждому спикеру задать вопросы друг другу и поделиться своим уникальным подходом. Присоединяйтесь, чтобы узнать, как проходит отбор кандидатов изнутри и что важно для успешного прохождения IT-собеседования.
❤5
Приглашаю на вебинар по теме: Эффективный нетворкинг для IT-специалистов
Время проведения: 23 ноября 2024 в 19:00
Участие бесплатное. Чтобы принять участие, пишите мне в Telegram @parsentev
Приглашенный гость: Stanislav Kondratev
---
1. Введение в тему и цели вебинара (5-10 минут)
- Обзор, что такое нетворкинг и почему он важен для IT.
- Цели вебинара: показать, как построить полезные профессиональные связи, создать персональный бренд, найти возможности для сотрудничества и повышения квалификации.
2. Основы нетворкинга в IT: где искать связи? (10 минут)
- Платформы и мероприятия для нетворкинга:
- Профессиональные соцсети (LinkedIn, Twitter).
- Конференции и митапы.
- Вебинары, хакатоны, DevOps-чаты, технические форумы.
- Советы по выбору мероприятий и каналов для эффективного общения.
3. Создание профессионального образа (15 минут)
- Как создать профиль, который привлекает внимание (LinkedIn, GitHub).
- Оптимизация профиля: ключевые навыки, проекты, репутация.
- Советы по поддержке активного портфолио проектов на GitHub и личного блога.
4. Как начать общение и завязать контакт (10 минут)
- Стратегии для первого обращения:
- Персонализированные сообщения и общение на профессиональном языке.
- Вопросы, которые помогают завязать конструктивное общение.
- Примеры успешных первых контактов.
5. Поддержка и развитие контактов (10 минут)
- Как поддерживать связь с новыми знакомыми:
- Рекомендации по частоте взаимодействий.
- Общение без навязывания: поддержка на LinkedIn, обмен полезными материалами, поздравления.
- Создание взаимовыгодных связей, обмен опытом, участие в проектах и комьюнити.
6. Практический блок: примеры успешного нетворкинга (10-15 минут)
- Истории успешных IT-специалистов, которые нашли работу, партнёрства или менторов через нетворкинг.
- Разбор кейсов: как они нашли подход к своим контактам, какие шаги предпринимали.
7. Ответы на вопросы участников и общая дискуссия (10-15 минут)
- Вопросы участников о том, как применять принципы нетворкинга на практике.
- Общая дискуссия, обмен личным опытом и рекомендациями.
8. Заключение и ресурсы для дальнейшего изучения (5 минут)
- Основные выводы и практические советы.
- Полезные ресурсы для развития нетворкинга: книги, статьи, онлайн-курсы.
- Поддержка участников после вебинара (группы в соцсетях, рассылки, материалы для скачивания).
Время проведения: 23 ноября 2024 в 19:00
Участие бесплатное. Чтобы принять участие, пишите мне в Telegram @parsentev
Приглашенный гость: Stanislav Kondratev
---
1. Введение в тему и цели вебинара (5-10 минут)
- Обзор, что такое нетворкинг и почему он важен для IT.
- Цели вебинара: показать, как построить полезные профессиональные связи, создать персональный бренд, найти возможности для сотрудничества и повышения квалификации.
2. Основы нетворкинга в IT: где искать связи? (10 минут)
- Платформы и мероприятия для нетворкинга:
- Профессиональные соцсети (LinkedIn, Twitter).
- Конференции и митапы.
- Вебинары, хакатоны, DevOps-чаты, технические форумы.
- Советы по выбору мероприятий и каналов для эффективного общения.
3. Создание профессионального образа (15 минут)
- Как создать профиль, который привлекает внимание (LinkedIn, GitHub).
- Оптимизация профиля: ключевые навыки, проекты, репутация.
- Советы по поддержке активного портфолио проектов на GitHub и личного блога.
4. Как начать общение и завязать контакт (10 минут)
- Стратегии для первого обращения:
- Персонализированные сообщения и общение на профессиональном языке.
- Вопросы, которые помогают завязать конструктивное общение.
- Примеры успешных первых контактов.
5. Поддержка и развитие контактов (10 минут)
- Как поддерживать связь с новыми знакомыми:
- Рекомендации по частоте взаимодействий.
- Общение без навязывания: поддержка на LinkedIn, обмен полезными материалами, поздравления.
- Создание взаимовыгодных связей, обмен опытом, участие в проектах и комьюнити.
6. Практический блок: примеры успешного нетворкинга (10-15 минут)
- Истории успешных IT-специалистов, которые нашли работу, партнёрства или менторов через нетворкинг.
- Разбор кейсов: как они нашли подход к своим контактам, какие шаги предпринимали.
7. Ответы на вопросы участников и общая дискуссия (10-15 минут)
- Вопросы участников о том, как применять принципы нетворкинга на практике.
- Общая дискуссия, обмен личным опытом и рекомендациями.
8. Заключение и ресурсы для дальнейшего изучения (5 минут)
- Основные выводы и практические советы.
- Полезные ресурсы для развития нетворкинга: книги, статьи, онлайн-курсы.
- Поддержка участников после вебинара (группы в соцсетях, рассылки, материалы для скачивания).
🥰1
Код-ревью
Что думаете? Пиши ответы в комментарии.
@Override
public Optional<Ticket> create(IsSeatTakenDto isSeatTakenDto,
Ticket ticket, HttpSession session) {
if (isSeatTaken(isSeatTakenDto)) {
return Optional.empty();
}
try (var connection = sql2o.open()) {
var sql = "INSERT INTO " +
"tickets(session_id, row_number, place_number, user_id)" +
" VALUES (:sessionId, :rowNumber, :placeNumber, :userId)";
var query = connection.createQuery(sql, true)
.addParameter("sessionId", ticket.getSessionId())
.addParameter("rowNumber", ticket.getRowNumber())
.addParameter("placeNumber", ticket.getPlaceNumber())
.addParameter("userId", session.getAttribute("id"));
int generatedId = query.executeUpdate().getKey(Integer.class);
ticket.setId(generatedId);
}
return Optional.of(ticket);
}
Что думаете? Пиши ответы в комментарии.
Продолжаем тренироваться. Перепишите код через Stream API.
@Override
public List<UserDTO> getPostsByUserId(List<Integer> userIds) {
Map<Integer, UserDTO> userMap = new HashMap<>();
postRepository.findByUserIdIn(userIds).forEach(post -> {
int userId = post.getUser().getId();
userMap.computeIfAbsent(userId, id ->
new UserDTO(userId, post.getUser().getFullName(), new ArrayList<>()
)).getPosts().add(post);
});
return new ArrayList<>(userMap.values());
}
Добавили статистику по прогрессу в разделе вопросы на интервью.
👍Пробуйте https://job4j.ru/profile/interview/16
👍Пробуйте https://job4j.ru/profile/interview/16
Потренируемся?
Метод падает с OutOfMemoryError
Что вызывает ошибку? Как поправить?
Метод падает с OutOfMemoryError
fun notifyByTaskUpdate(task: Task) {
scope.launch {
val template = """
Обновлено описание урока ${task.name} [#${task.number}]
https://job4j.ru/profile/exercise/${task.topicId}/task-view/${task.id}"
""".trimIndent()
userRepository
.findAllByActiveAndPayments()
.filter { messengerRepository.isUserNotificationOn(it.id) }
.forEach {
bot?.send(it.id, template)
}
}
}Что вызывает ошибку? Как поправить?