Пилим крутую подборку ноутов для кодеров в 2025-м и хотим собрать реальный фидбек от тех, кто в теме!
Какой ноут спасает вас в кодинге и почему?
Расскажите все:
🔹 Что за зверь (модель, начинка)
🔹 Где жмет и где радует в ежедневной работе
🔹 На какие фишки смотреть при выборе
🔹 Как вам с ним живется
Топовые советы попадут в нашу статью. Сделаем годный гайд, который реально поможет коллегам.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥2👏1
Задерживаетесь с реализацией функционала или сталкиваетесь с трудностями в написании кода? Попробуйте этот промпт, чтобы AI помог вам:
📝 Промпт:
Analyze the following code snippet and suggest improvements for faster development. Identify areas for simplification, recommend reusable components, and provide best practices for making the code more maintainable.
// Вставьте ваш код здесь
— Добавьте
Suggest refactor strategies to improve readability and maintainability
, если ваш код слишком сложный. — Добавьте
Recommend using design patterns to structure the solution
, если ищете элегантное решение. — Добавьте
Provide alternatives for reducing code duplication
, если вам нужно сделать код более универсальным.Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🔥2❤🔥1🎉1
Please open Telegram to view this post
VIEW IN TELEGRAM
😁24🥱8👍2🔥2
Проверять данные вручную через if-ы — больно, скучно и не масштабируется.
Bean Validation (javax.validation) позволяет валидировать красиво и декларативно, не превращая код в болото.
implementation("org.springframework.boot:spring-boot-starter-validation")
ИЛИ
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
public class UserRequest {
@NotBlank(message = "Имя не должно быть пустым")
private String name;
@Email(message = "Некорректный email")
private String email;
@Min(value = 18, message = "Возраст должен быть 18+")
private int age;
// геттеры и сеттеры
}
@PostMapping("/users")
public ResponseEntity<?> createUser(@Valid @RequestBody UserRequest request) {
userService.save(request);
return ResponseEntity.ok().build();
}
Без @Valid перед DTO ничего не сработает.
@RestControllerAdvice
public class ExceptionHandlerController {
@ExceptionHandler(MethodArgumentNotValidException.class)
public ResponseEntity<?> handleValidationErrors(MethodArgumentNotValidException ex) {
List<String> errors = ex.getBindingResult().getFieldErrors().stream()
.map(err -> err.getField() + ": " + err.getDefaultMessage())
.toList();
return ResponseEntity.badRequest().body(errors);
}
}
Теперь ошибки приходят красиво и читаемо в JSON.
Если нужно что-то особенное — например, проверка страны:
@Constraint(validatedBy = CountryValidator.class)
@Target({ ElementType.FIELD })
@Retention(RetentionPolicy.RUNTIME)
public @interface ValidCountry {
String message() default "Страна не поддерживается";
}
public class CountryValidator implements ConstraintValidator<ValidCountry, String> {
private final List<String> allowed = List.of("RU", "US", "DE");
public boolean isValid(String value, ConstraintValidatorContext ctx) {
return allowed.contains(value);
}
}
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21🎉3🔥2👾1
Некоторые утверждают, что checked исключения повышают надёжность системы, вынуждая явно обрабатывать потенциально нестабильные участки кода. Такой подход позволяет контролировать поток ошибок и уменьшать вероятность неожиданных сбоев на проде.
С другой стороны, есть ряд проблем: они увеличивают связность кода, затрудняют его сопровождение и зачастую нарушают принцип разделения ответственности. Особенно остро это проявляется в слоях бизнес-логики, где обработка технических исключений может вести к неочевидному поведению и дублированию.
— Где для вас проходит граница между оправданным использованием исключений и архитектурным перегибом?
— Используете ли вы checked exceptions в бизнес-логике? Или предпочитаете более гибкий подход с кастомными unchecked-исключениями и централизованной обработкой?
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5⚡3🔥1
🐳 Магия Docker CLI
Многие продолжают вручную вытаскивать логи и конфиги из Docker-контейнеров через кучу лишних движений. А ведь есть команда, которая делает это за секунду — docker cp.
🔹 Зачем это нужно
— Позволяет копировать файлы внутрь или наружу контейнера без томов и перезапуска.
— Удобно для быстрой отладки, логов или правки конфигов в рантайме.
— Работает даже с остановленными контейнерами.
🔹 Как использовать
— Забрать файл: docker cp container_id:/path/in/container ./local/path
— Закинуть файл: docker cp ./my.conf container_id:/etc/my.conf
— Можно использовать имена контейнеров, относительные пути и даже в CI/CD пайплайнах.
💬 Использовали раньше?
🐸 Библиотека джависта #буст
Многие продолжают вручную вытаскивать логи и конфиги из Docker-контейнеров через кучу лишних движений. А ведь есть команда, которая делает это за секунду — docker cp.
🔹 Зачем это нужно
— Позволяет копировать файлы внутрь или наружу контейнера без томов и перезапуска.
— Удобно для быстрой отладки, логов или правки конфигов в рантайме.
— Работает даже с остановленными контейнерами.
🔹 Как использовать
— Забрать файл: docker cp container_id:/path/in/container ./local/path
— Закинуть файл: docker cp ./my.conf container_id:/etc/my.conf
— Можно использовать имена контейнеров, относительные пути и даже в CI/CD пайплайнах.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🔥8⚡1🥱1
В каждой команде бывают специалисты, чья ценность не укладывается в привычные метрики продуктивности. Они редко в топе по количеству закрытых задач, но именно их вклад критически важен для общего результата.
Такие люди помогают менее опытным коллегам разобраться в сложных вопросах, улучшают архитектуру и процессы незаметными правками, предотвращают ошибки ещё до того, как они стали задачами, создают культуру качества, которую не видно в отчётах.
Иногда стоит пересмотреть, как мы оцениваем эффективность. Потому что не все цифры отражают суть.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🔥2👏1🌚1
Please open Telegram to view this post
VIEW IN TELEGRAM
😁28😢6👍2💯2
Forwarded from Библиотека программиста | программирование, кодинг, разработка
😺🐙🧼 Сам себе GitHub: как работать с чистым Git-репозиторием
Git — мощная система контроля версий, которую обычно используют через платформы вроде GitHub и GitLab. Однако Git сам по себе не требует веб-интерфейсов и облачных сервисов. Многие разработчики предпочитают работать с чистым Git-репозиторием, размещенным на собственном сервере.
➡️ В этой статье мы рассмотрим, почему это удобно, и как эффективно отправлять патчи в проекты, использующие этот подход.
🐸 Библиотека программиста
Git — мощная система контроля версий, которую обычно используют через платформы вроде GitHub и GitLab. Однако Git сам по себе не требует веб-интерфейсов и облачных сервисов. Многие разработчики предпочитают работать с чистым Git-репозиторием, размещенным на собственном сервере.
➡️ В этой статье мы рассмотрим, почему это удобно, и как эффективно отправлять патчи в проекты, использующие этот подход.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤3🔥3
Forwarded from Библиотека собеса по Java | вопросы с собеседований
JIT (Just-In-Time) компилятор — это компонент JVM, который
JIT компилирует только те части кода, которые
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🔥4❤2
Есть ли у вас в арсенале библиотека, тулза или приём, который вы стабильно используете, но редко видите в чужом коде? Что-то, что реально экономит время или упрощает жизнь/спасает прод, но почему-то не на слуху.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥1👏1
Forwarded from Библиотека девопса | DevOps, SRE, Sysadmin
🤦♂️ Я забил на споры о микросервисах с архитекторами, и вот почему
С момента появления концепции микросервисов прошло уже несколько лет. За это время появилось много споров о её эффективности.
Зачем спорить о микросервисах, если можно просто посмотреть на факты? Давайте разберёмся, что действительно важно
➡️ Читать статью
💬 Как вы относитесь к микросервисам? Использовали ли вы их в своих проектах? Ждём ваши комментарии 👇
🐸 Библиотека devops'a
С момента появления концепции микросервисов прошло уже несколько лет. За это время появилось много споров о её эффективности.
Зачем спорить о микросервисах, если можно просто посмотреть на факты? Давайте разберёмся, что действительно важно
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥2👏2🎉1
🎯 Как быстро настроить кеширование в Spring Boot
Писать кеш руками через HashMap или страдать с вручную настроенными TTL — скучно, долго и ненадёжно. В Spring Boot всё уже готово: включаем, настраиваем, и поехали!
1️⃣ Добавляем зависимость
2️⃣ Включаем кеширование
Добавляем простую аннотацию над главным классом приложения (или конфиг классом):
3️⃣ Кешируем методы сервисов
Используем аннотацию @Cacheable на тех методах, которые часто выполняются и редко меняются:
Теперь при повторном вызове метода с тем же параметром ответ прилетит мгновенно.
4️⃣ Настройка TTL и конфигурация кеша
В Spring Boot по умолчанию используется простой ConcurrentMap (без TTL). Если хочешь TTL и прочие плюшки, подключайте Caffeine:
Кеш будет жить максимум 10 минут и не разрастаться до бесконечности.
5️⃣ Очистка кеша
Если нужно принудительно почистить кеш после обновления данных, используем @CacheEvict:
💬 Хранили когда-нибудь кеш в мапе?
🐸 Библиотека джависта #буст
Писать кеш руками через HashMap или страдать с вручную настроенными TTL — скучно, долго и ненадёжно. В Spring Boot всё уже готово: включаем, настраиваем, и поехали!
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-cache</artifactId>
</dependency>
ИЛИ
implementation 'org.springframework.boot:spring-boot-starter-cache'
Добавляем простую аннотацию над главным классом приложения (или конфиг классом):
@SpringBootApplication
@EnableCaching
public class MyApplication {
public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
}
}
Используем аннотацию @Cacheable на тех методах, которые часто выполняются и редко меняются:
@Service
public class UserService {
@Cacheable(value = "users", key = "#id")
public User getUserById(Long id) {
simulateSlowService();
return userRepository.findById(id).orElseThrow();
}
private void simulateSlowService() {
Thread.sleep(3000);
}
}
Теперь при повторном вызове метода с тем же параметром ответ прилетит мгновенно.
В Spring Boot по умолчанию используется простой ConcurrentMap (без TTL). Если хочешь TTL и прочие плюшки, подключайте Caffeine:
spring:
cache:
type: caffeine
caffeine:
spec: maximumSize=500,expireAfterAccess=10m
Кеш будет жить максимум 10 минут и не разрастаться до бесконечности.
Если нужно принудительно почистить кеш после обновления данных, используем @CacheEvict:
@CacheEvict(value = "users", key = "#id")
public void updateUser(Long id, User updatedUser) {
userRepository.save(updatedUser);
}
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🔥1👏1
Джависты!
Проголосуйте за наш канал, и в сторис мы опубликуем топ материалов, которые должен прочитать каждый джавист.
➡️ Поддержать канал: https://hottg.com/boost/javaproglib
Проголосуйте за наш канал, и в сторис мы опубликуем топ материалов, которые должен прочитать каждый джавист.
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥3❤1👍1
💼⌛️ ТОП-5 причин, почему программист не может долго найти работу
Почему некоторые разработчики остаются "между работами" месяцы?
Не всегда дело в нехватке вакансий или «рынок просел». Часто дело в подходе к поиску проекта. Вроде бы есть опыт, стек, даже pet-проекты, но офферов всё нет.
Часто корень проблемы — неумение продать себя правильно. Отказ выполнять тестовые задания, считая их ненужными или обидными. Кроме того, нежелание рассматривать стажировки как стартовую площадку для получения опыта и расширения профессиональных связей также может замедлить процесс трудоустройства. И это далеко не все возможные причины.
🔗 Подробнее в статье
🐸 Библиотека джависта
Почему некоторые разработчики остаются "между работами" месяцы?
Не всегда дело в нехватке вакансий или «рынок просел». Часто дело в подходе к поиску проекта. Вроде бы есть опыт, стек, даже pet-проекты, но офферов всё нет.
Часто корень проблемы — неумение продать себя правильно. Отказ выполнять тестовые задания, считая их ненужными или обидными. Кроме того, нежелание рассматривать стажировки как стартовую площадку для получения опыта и расширения профессиональных связей также может замедлить процесс трудоустройства. И это далеко не все возможные причины.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7😁4🥰2🔥1
Потеряли коммит или неудачно выполнили git reset. Или может быть, ваша ветка с важной фичей вдруг исчезла.
git bisect
🔹 Что делает
Используется для поиска конкретного коммита, который привел к багу или проблеме. Это словно бинарный поиск среди всех ваших коммитов, который помогает быстро и точно найти тот, который сломал ваш код.
🔹 Пример
1. Запустите команду
git bisect start
2. Укажите, какой коммит был рабочим (good), а какой с ошибкой (bad):
git bisect good <хэш коммита с рабочим кодом>
git bisect bad <хэш коммита с багом>
3. Git автоматически переключит вас на средний коммит. Протестируйте его и ответьте, был ли он хорошим или с багом.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🔥6⚡3
Please open Telegram to view this post
VIEW IN TELEGRAM
😁32👍4👏3🤔1💯1
Forwarded from Библиотека программиста | программирование, кодинг, разработка
📦 Главные проблемы распределенных систем (и способы их решения)
Распределенные системы являются основой высоконагруженных веб-приложений, обеспечивая их масштабируемость, отказоустойчивость и высокую производительность. Однако их разработка сопряжена с рядом сложностей, включая сетевые сбои, трудности координации, угрозы безопасности и проблемы масштабирования.
➡️ В этой статье мы рассмотрим четыре ключевых вызова в разработке таких систем и эффективные методы их преодоления.
🐸 Библиотека программиста
Распределенные системы являются основой высоконагруженных веб-приложений, обеспечивая их масштабируемость, отказоустойчивость и высокую производительность. Однако их разработка сопряжена с рядом сложностей, включая сетевые сбои, трудности координации, угрозы безопасности и проблемы масштабирования.
Please open Telegram to view this post
VIEW IN TELEGRAM
😁7⚡3👍2❤1👾1
Наш подписчик спрашивает:
Я только начал писать на Java, учу Spring Boot. Постоянно слышу про CI/CD, GitHub Actions, Jenkins… Но мне бы просто научиться делать CRUD нормально. Это вообще сейчас для меня? Или потом?
🔹 Что скажете?
Стоит ли джуну сразу погружаться в мир пайплайнов, билдов и автодеплоев? Или лучше сначала разобраться с самим кодом, а потом уже думать, как его катить в прод?
— Когда вы впервые столкнулись с CI/CD в своей карьере?
— Что нужно знать джуну про автоматизацию сборки и деплоя?
— Какие инструменты вы используете и почему именно их?
P.S. Если хотите задать вопрос, заполните нашу гугл-форму. Это займет 5 минут.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10❤2🔥1💯1
🎧 Что послушать — #подкаст
🔹 Javaswag #76
Дата выпуска: 24 февраля 2025
Ведущий: Дмитрий Волыхин
Гость: Сергей Куксенко
Продолжительность: 2 часа 3 минуты
Выпуск для тех, кто хочет понимать Java «до винтиков». Сергей Куксенко — инженер из Oracle и ветеран в области производительности Java — рассказывает, как устроены компиляторы, зачем Java нужно тестировать бенчмарками, и почему проект Loom может перевернуть представление об асинхронности.
🔹 Ключевые темы выпуска
00:04:39 — Опыт Сергея в Excelsior и старте с Java
00:10:47 — Работа с компиляторами в Intel
00:15:13 — Производительность Java в Oracle
00:26:01 — Почему случаются регрессии
00:39:50 — Как собрать бенчмарки, которые действительно работают
00:52:12 — Асинхронщина и проект Loom
01:03:08 — Теория очередей и производительность
01:09:42 — Loom: плюсы и минусы
01:24:43 — Полугодовые релизы и их влияние
01:50:10 — Kotlin vs Java
02:00:00 — Острые мнения про Agile
🔗 Слушать выпуск
🐸 Библиотека джависта #буст
🔹 Javaswag #76
Дата выпуска: 24 февраля 2025
Ведущий: Дмитрий Волыхин
Гость: Сергей Куксенко
Продолжительность: 2 часа 3 минуты
Выпуск для тех, кто хочет понимать Java «до винтиков». Сергей Куксенко — инженер из Oracle и ветеран в области производительности Java — рассказывает, как устроены компиляторы, зачем Java нужно тестировать бенчмарками, и почему проект Loom может перевернуть представление об асинхронности.
🔹 Ключевые темы выпуска
00:04:39 — Опыт Сергея в Excelsior и старте с Java
00:10:47 — Работа с компиляторами в Intel
00:15:13 — Производительность Java в Oracle
00:26:01 — Почему случаются регрессии
00:39:50 — Как собрать бенчмарки, которые действительно работают
00:52:12 — Асинхронщина и проект Loom
01:03:08 — Теория очередей и производительность
01:09:42 — Loom: плюсы и минусы
01:24:43 — Полугодовые релизы и их влияние
01:50:10 — Kotlin vs Java
02:00:00 — Острые мнения про Agile
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥1🎉1
HTML Embed Code: