uk
Feedback
Войти в Y_LAB | IT развитие и юмор

Войти в Y_LAB | IT развитие и юмор

Відкрити в Telegram

Стажировки, вакансии, полезные материалы, развлекательный контент. Y_LAB — команда опытных IT-специалистов, которая готова помочь вам войти в мир технологий! Сотрудничество (ylab v it) @tamriko1_5

Показати більше
776
Підписники
Немає даних24 години
Немає даних7 днів
-130 день

Триває завантаження даних...

Залучення підписників
червень '26
червень '26
+6
в 0 каналах
травень '26
+8
в 0 каналах
Get PRO
квітень '26
+13
в 1 каналах
Get PRO
березень '26
+11
в 0 каналах
Get PRO
лютий '26
+9
в 0 каналах
Get PRO
січень '26
+8
в 0 каналах
Get PRO
грудень '25
+13
в 0 каналах
Get PRO
листопад '25
+29
в 0 каналах
Get PRO
жовтень '25
+27
в 0 каналах
Get PRO
вересень '25
+15
в 0 каналах
Get PRO
серпень '25
+6
в 0 каналах
Get PRO
липень '25
+11
в 0 каналах
Get PRO
червень '25
+11
в 0 каналах
Get PRO
травень '25
+19
в 0 каналах
Get PRO
квітень '25
+21
в 0 каналах
Get PRO
березень '25
+41
в 0 каналах
Get PRO
лютий '25
+24
в 0 каналах
Get PRO
січень '25
+22
в 0 каналах
Get PRO
грудень '24
+18
в 0 каналах
Get PRO
листопад '24
+20
в 0 каналах
Get PRO
жовтень '24
+26
в 0 каналах
Get PRO
вересень '24
+46
в 0 каналах
Get PRO
серпень '24
+24
в 0 каналах
Get PRO
липень '24
+22
в 0 каналах
Get PRO
червень '24
+28
в 0 каналах
Get PRO
травень '24
+48
в 0 каналах
Get PRO
квітень '24
+155
в 0 каналах
Get PRO
березень '24
+33
в 0 каналах
Get PRO
лютий '24
+250
в 0 каналах
Get PRO
січень '24
+128
в 0 каналах
Get PRO
грудень '23
+25
в 0 каналах
Get PRO
листопад '23
+27
в 0 каналах
Get PRO
жовтень '23
+64
в 0 каналах
Get PRO
вересень '23
+583
в 0 каналах
Дата
Залучення підписників
Згадування
Канали
16 червня0
15 червня0
14 червня0
13 червня0
12 червня0
11 червня+1
10 червня+1
09 червня+1
08 червня0
07 червня+1
06 червня0
05 червня0
04 червня+1
03 червня0
02 червня+1
01 червня0
Дописи каналу
Новый пост Y_LAB Actual | Код под микроскопом 🔍 Продолжаем рубрику, в которой разбираем небольшие фрагменты кода и конфигураций, чтобы найти скрытые проблемы и понять, почему всё работает совсем не так, как ожидалось. Сегодня под микроскопом — Docker 🐳 dockerfile FROM openjdk:21 COPY . . RUN ./gradlew build CMD ["java", "-jar", "build/libs/app.jar"] Вопрос:
Какую проблему можно заметить в этом Dockerfile?
На первый взгляд всё выглядит логично: ↔️ Копируем проект; ↔️ Собираем приложение; ↔️ Запускаем готовый JAR-файл. 🫠 Но у такого решения есть серьёзный недостаток: Docker использует кэш слоёв, и если изменяется слой COPY . ., то все последующие слои теряют кэш и выполняются заново. 🗂️ Почему так происходит Docker использует систему слоёв (layers). Каждая инструкция (FROM, COPY, RUN и т.д.) создаёт отдельный слой, который может быть взят из кэша при следующей сборке. Но здесь сначала выполняется: dockerfile COPY . . То есть в образ копируется весь проект целиком. Даже если вы изменили всего один файл, Docker считает слой изменённым и заново выполняет: dockerfile RUN ./gradlew build А это может занимать минуты вместо нескольких секунд. 💻 Как сделать лучше? Обычно сначала копируют только файлы зависимостей: dockerfile COPY gradlew . COPY gradle gradle COPY build.gradle . COPY settings.gradle . и выполняют загрузку зависимостей. Только после этого копируют исходный код: dockerfile COPY src src Так при изменении Java-классов слой с зависимостями останется в кэше, а пересобираться будет только приложение. ↪️↪️↪️ На небольшом проекте разница почти незаметна. Но на крупном сервисе с десятками зависимостей неудачный порядок команд в Dockerfile может увеличивать время сборки в несколько раз.
Иногда оптимизация начинается не с кода, а с пары строк в конфигурации.
А вы когда-нибудь замечали, насколько сильно порядок инструкций влияет на скорость сборки Docker-образа? 👀 #Y_LAB_University #Y_LAB_Actual

2
#Y_LAB_University #Y_LAB_Memes
#Y_LAB_University #Y_LAB_Memes
122
3
😭😭😭 #Y_LAB_University #Y_LAB_Memes
😭😭😭 #Y_LAB_University #Y_LAB_Memes
281
4
Новый пост Y_LAB_Learning! | Spring WebFlux для Java-разработчиков: устройство, преимущества и подводные камни 📱 Java О чем
Новый пост Y_LAB_Learning! | Spring WebFlux для Java-разработчиков: устройство, преимущества и подводные камни 📱 Java О чем статья? Что такое Spring WebFlux, как работает реактивный подход и чем он отличается от Spring MVC. Основные преимущества, ограничения и сценарии, в которых WebFlux действительно оправдан. 📎 Читать статью #Y_LAB_University #Y_LAB_Learning
195
5
Новый пост Y_LAB Actual | Код под микроскопом 🔍 Продолжаем рубрику, в которой разбираем неочевидные ситуации из мира разрабо
Новый пост Y_LAB Actual | Код под микроскопом 🔍 Продолжаем рубрику, в которой разбираем неочевидные ситуации из мира разработки и ищем подвох там, где его не всегда ожидаешь увидеть. Сегодня под микроскопом Git. И одна из ошибок, которую хотя бы раз совершал почти каждый разработчик 👇 bash git add . git commit -m "Fix bug" git push Вопрос: Что произойдёт, если выполнить эти команды, находясь в ветке main? Многие ответят: > Изменения попадут в удалённый репозиторий. И это действительно так. ❗️ Но есть нюанс: Git совершенно не проверяет, ту ли ветку вы собирались использовать. 🤔 Если вы забыли переключиться на feature-ветку и случайно остались в main, то изменения будут закоммичены и отправлены именно туда. Для Git это абсолютно корректное действие: bash git branch может показать: bash * main а дальше команды спокойно выполнятся без каких-либо предупреждений. ❔ Почему это важно Многие воспринимают Git как инструмент, который не позволит совершить ошибку. На самом деле Git отлично защищает историю проекта, но не может понять, что вы случайно работаете не в той ветке. 💬 Что делать, если ошибка уже допущена 🎯 Если коммит уже сделан, но git push ещё не выполнялся Исправить ситуацию достаточно просто: можно создать новую ветку от текущего состояния и перенести в неё коммит, а ветку main вернуть к предыдущему состоянию. Так ошибка останется только локальной и не затронет остальных участников команды. 🎯 Если коммит уже отправлен (git push выполнен) Здесь всё зависит от процесса в команде. ↔️ Если ветка общая и её используют другие разработчики, безопаснее всего сделать новый коммит, который отменит изменения (git revert), а затем перенести нужный код в отдельную рабочую ветку. ↔️ Если же история ещё никем не использовалась, иногда применяют переписывание истории (git reset + push --force), но делать это стоит только после согласования с командой, иначе можно испортить историю репозитория коллегам. ⌨️ Почему этот кейс встречается так часто? Потому что ошибка выглядит не как ошибка. Все команды выполняются успешно. Никаких предупреждений. Никаких конфликтов. Именно поэтому многие замечают проблему только после того, как коллеги начинают писать: «А зачем это оказалось в main?» А вам доводилось случайно коммитить или пушить не в ту ветку? 👀 #Y_LAB_University #Y_LAB_Actual
127
6
делает вид, что ничего не знает 👀 #Y_LAB_University #Y_LAB_Memes
делает вид, что ничего не знает 👀 #Y_LAB_University #Y_LAB_Memes
144
7
Новый пост Y_LAB Videos! | Свежее видео Всем привет! Рады сообщить, что на наших ютуб-канале и вк-сообществе вышел новый виде
Новый пост Y_LAB Videos! | Свежее видео Всем привет! Рады сообщить, что на наших ютуб-канале и вк-сообществе вышел новый видеоролик “Как начать работать с Camunda 7”. О чем видео? В данном видео вместе с нашим Java-разработчиком Артемом разбираемся с Camunda — популярной платформой для автоматизации бизнес-процессов на Java. Рассмотрим ключевые возможности Camunda 7, сравним её с Camunda 8, познакомимся с BPMN-моделированием, создадим и запустим собственный процесс, а также разберём основные компоненты платформы и варианты её развёртывания. 📱 YouTube ——— 📱 VK #Y_LAB_University #Y_LAB_YouTube #Y_LAB_VK
213
8
Новый пост Y_LAB_Learning! | За кулисами Spring: как работают аспекты и почему вы уже используете AOP 📱 Java О чем статья? К
Новый пост Y_LAB_Learning! | За кулисами Spring: как работают аспекты и почему вы уже используете AOP 📱 Java О чем статья? Как работают Spring AOP и AspectJ, зачем нужны аспекты и как с их помощью выносить логирование, аудит, безопасность и другие сквозные задачи из бизнес-логики. Основные возможности, ограничения и практические сценарии использования. 📎 Читать статью #Y_LAB_University #Y_LAB_Learning
234
9
Новый пост Y_LAB Actual | Код под микроскопом 🔍 Продолжаем разбирать фрагменты кода, в которых всё выглядит правильно до тех
Новый пост Y_LAB Actual | Код под микроскопом 🔍 Продолжаем разбирать фрагменты кода, в которых всё выглядит правильно до тех пор, пока программа не начинает работать не так, как ожидалось. Сегодня под микроскопом небольшой пример на 📱 Python, который регулярно становится причиной багов даже у опытных разработчиков def add_item(item, items=[]): items.append(item) return items print(add_item("apple")) print(add_item("banana")) Вопрос: Что выведет программа? Многие ожидают такой результат: ['apple'] ['banana'] Но на самом деле вывод будет другим: ['apple'] ['apple', 'banana'] Почему так происходит 💬 На первый взгляд кажется, что при каждом вызове функции создаётся новый пустой список: items=[] Но в Python аргументы по умолчанию создаются один раз, в момент объявления функции, а не при каждом её вызове. То есть список items сохраняется между вызовами функции. ↔️Что происходит по шагам: 🎯 Первый вызов: add_item("apple") В список добавляется "apple": ['apple'] 🎯 Второй вызов: add_item("banana") Используется тот же самый список, поэтому результат становится: ['apple', 'banana'] Как исправить 🛠 Обычно используют None в качестве значения по умолчанию: def add_item(item, items=None): if items is None: items = [] items.append(item) return items Теперь при каждом вызове будет создаваться новый список. 💬💬💬 Такая особенность Python может долго оставаться незаметной: функция работает, ошибок нет, но данные начинают «переезжать» между вызовами. Именно поэтому изменяемые объекты в аргументах по умолчанию считаются одним из самых известных антипаттернов языка. А вы знали про эту особенность Python или ожидали другой результат? 👀 #Y_LAB_University #Y_LAB_Actual
210
10
#Y_LAB_University #Y_LAB_Memes
#Y_LAB_University #Y_LAB_Memes
198
11
Новый пост Y_LAB Videos! | Свежее видео Всем привет! Рады сообщить, что на наших ютуб-канале и вк-сообществе вышел новый виде
Новый пост Y_LAB Videos! | Свежее видео Всем привет! Рады сообщить, что на наших ютуб-канале и вк-сообществе вышел новый видеоролик “Микросервисная коммуникация: Rest vs gRPC”. О чем видео? В данном видео вместе с нашим Java-разработчиком Максимом разбираем, как микросервисы обмениваются данными между собой, и сравним REST и gRPC на практике. Поговорим об эволюции HTTP, отличиях JSON и Protobuf, а также покажем лайвкодинг интеграции сервиса заказов и склада. 📱 YouTube ——— 📱 VK #Y_LAB_University #Y_LAB_YouTube #Y_LAB_VK
238
12
#Y_LAB_University #Y_LAB_Memes
#Y_LAB_University #Y_LAB_Memes
227
13
Новый пост Y_LAB_Learning! | Webpack, Vite и No-Build: как сегодня собирать frontend-проекты 🔵 Frontend О чем статья? Как из
Новый пост Y_LAB_Learning! | Webpack, Vite и No-Build: как сегодня собирать frontend-проекты 🔵 Frontend О чем статья? Как изменился подход к сборке Frontend-проектов: от Webpack к Vite и no-build решениям. Плюсы, минусы и сценарии использования каждого подхода в современной разработке. 📎 Читать статью #Y_LAB_University #Y_LAB_Learning
257
14
Новый пост Y_LAB Actual | Код под микроскопом 🔍 Продолжаем рубрику, в которой разбираем небольшие фрагменты кода и ищем в ни
Новый пост Y_LAB Actual | Код под микроскопом 🔍 Продолжаем рубрику, в которой разбираем небольшие фрагменты кода и ищем в них скрытые ошибки, неочевидное поведение и моменты, которые могут привести к неожиданным результатам. 🗄 Сегодня пример не на языке программирования, а на SQL. И это тот случай, когда одна маленькая деталь может повлиять сразу на все данные в таблице: sql UPDATE users SET is_active = false; Вопрос: Что сделает этот запрос? На первый взгляд кажется, что всё просто: обновит значение поля is_active. Но есть важный нюанс: запрос изменит каждую строку в таблице users. 📌 Итог: • Все пользователи станут неактивными; • Данные изменятся сразу для всей таблицы; • Откатить последствия без резервной копии может быть непросто. ❓ Почему так происходит В запросе отсутствует ключевое условие: sql WHERE ... Без WHERE команда UPDATE применяется ко всем записям, которые находятся в таблице. То есть этот код: sql UPDATE users SET is_active = false; по сути означает: > «Сделать is_active = false для каждого пользователя». 💡 Как должно быть? Если нужно обновить конкретную запись, необходимо явно указать условие: sql UPDATE users SET is_active = false WHERE id = 42; Теперь изменится только один пользователь. 🛠 Как защититься от таких ошибок? Полезная привычка перед UPDATE и DELETE сначала запускать: sql SELECT * FROM users WHERE id = 42; Так можно заранее проверить, какие строки попадут под изменение. 🎯🎯🎯 Подобная ошибка кажется слишком очевидной… пока не случается в реальной базе. Иногда один пропущенный WHERE — это не просто баг, а очень долгий вечер восстановления данных. Случалось когда-нибудь запускать запрос и сразу тянуться к backup? 👀 #Y_LAB_University #Y_LAB_Actual
216
15
#Y_LAB_University #Y_LAB_Memes
#Y_LAB_University #Y_LAB_Memes
210
16
Новый пост Y_LAB Videos! | Свежее видео Всем привет! Рады сообщить, что на наших ютуб-канале и вк-сообществе вышел новый виде
Новый пост Y_LAB Videos! | Свежее видео Всем привет! Рады сообщить, что на наших ютуб-канале и вк-сообществе вышел новый видеоролик “Объектное хранилище S3: Полный разбор и настройка MinIO в Spring Boot”. О чем видео? В данном видео вместе с нашим Java-разработчиком Юрием разбираем, как устроено объектное хранилище S3 и почему этот стандарт стал основой для работы с файлами в современных backend-системах. От теории и сравнения популярных S3-решений до практической настройки MinIO и его интеграции с Spring Boot 3: пошагово показываем, как организовать надежное и масштабируемое файловое хранилище в Java-приложении. 📱 YouTube ——— 📱 VK #Y_LAB_University #Y_LAB_YouTube #Y_LAB_VK
281
17
#Y_LAB_University #Y_LAB_Memes
#Y_LAB_University #Y_LAB_Memes
262
18
Новый пост Y_LAB Actual | Код под микроскопом 🔍 Продолжаем рубрику, в которой разбираем небольшие фрагменты кода и ищем в ни
Новый пост Y_LAB Actual | Код под микроскопом 🔍 Продолжаем рубрику, в которой разбираем небольшие фрагменты кода и ищем в них неочевидные особенности, ошибки и подводные камни, которые могут встретиться даже в самых простых на первый взгляд задачах. 📱 Сегодня короткий пример на Java, где всё выглядит логично… но результат может удивить ⬇️ Integer a = 127; Integer b = 127; System.out.println(a == b); Вопрос: Что выведет консоль? Кажется, что ответ очевиден: true И действительно именно таким и будет результат. Но теперь посмотрим на почти такой же код: Integer a = 128; Integer b = 128; System.out.println(a == b); А здесь консоль уже выведет: false ❓ Почему так происходит На первый взгляд оба примера одинаковые: создаются два объекта Integer, которые хранят одно и то же значение. Но дело в том, что Java использует Integer Cache — внутренний механизм кэширования объектов-обёрток для чисел в диапазоне от -128 до 127. Это значит, что в первом примере: Integer a = 127; Integer b = 127; обе переменные ссылаются на один и тот же объект в памяти, поэтому: a == b возвращает true. А вот для числа 128 кэш уже не используется, и создаются два разных объекта, поэтому: a == b даёт false. 🤔 В чём ошибка? Оператор == для объектов сравнивает ссылки, а не значения. Чтобы сравнить сами значения, нужно использовать: System.out.println(a.equals(b)); И тогда результат будет корректным независимо от числа. 🗂️ Такие мелочи легко пропустить, особенно на собеседованиях или при отладке, а потом долго искать, почему одинаковые числа вдруг «не равны». Замечали раньше этот подвох с Integer? 👀 #Y_LAB_University #Y_LAB_Actual
270
19
#Y_LAB_University #Y_LAB_Memes
#Y_LAB_University #Y_LAB_Memes
238
20
Новый пост Y_LAB Videos! | Свежее видео Всем привет! Рады сообщить, что на наших ютуб-канале и вк-сообществе вышел новый виде
Новый пост Y_LAB Videos! | Свежее видео Всем привет! Рады сообщить, что на наших ютуб-канале и вк-сообществе вышел новый видеоролик “Фасилитация в IT: как перестать проводить бесполезные встречи”. О чем видео? В новом выпуске подкаста вместе с ведущим Павлом и HR-руководителем Катериной обсуждаем, что такое фасилитация и почему она становится важной частью рабочих процессов — от эффективности встреч до выстраивания коммуникации в распределённых командах. Поговорили о проблемах онлайн-встреч, изменениях в уже налаженной работе и разобрали реальные кейсы из практики. 📱 YouTube ——— 📱 VK #Y_LAB_University #Y_LAB_YouTube #Y_LAB_VK
285