Чашечка Java
8.57K subscribers
3.88K photos
13 videos
56 files
6.33K links
Лучшие материалы по Java на русском и английском

Разместить рекламу: @tproger_sales_bot

Правила общения: https://tprg.ru/rules

Другие каналы: @tproger_channels
Download Telegram
Просто о сложном: Нейросети, Графы

Просто о сложном: нейросети
Введение
В этой статье я хочу простыми словами объяснить практическое применение нейронных сетей для решения конкретных задач. Важно отметить, что мы не будем подробно разбирать, как устроены нейросети изнутри – об этом уже написано множество материалов. Вместо этого сосредоточимся на том, как применить нейросеть к конкретной задаче, как подобрать под неё данные и параметры. Мы не будем использовать готовые библиотеки машинного обучения – весь функционал реализован самостоятельно, чтобы наглядно разобраться, как можно написать нейросеть под свою задачу. Первое, с чего начнём: нейросеть имеет смысл применять только там, где действительно существуют закономерности в данных. Простой пример – домашний питомец, услышав будильник утром, с большой вероятностью понимает, что скоро получит свежую еду. Это примитивная закономерность (звук будильника → завтрак). Но бывают и очень сложные закономерности, которые не лежат на поверхности. То, что мы называем интуицией, по сути является распознаванием подобных скрытых закономерностей нашим мозгом. Итак, если в вашей задаче нет никаких паттернов или повторяющихся зависимостей, нейросеть не поможет – она просто будет гадать наугад. Если же вы предполагаете наличие закономерностей, можно попытаться их выявить с помощью обучения сети. Правда, будьте готовы к ситуации: если результат плохой, непонятно, то ли закономерностей нет, то ли вы неправильно обучили модель. В этой статье на конкретном примере мы рассмотрим весь путь: от зарождения идеи до реализации и обучения нейросети, а также разберём сложности, с которыми можно столкнуться. Примером послужит задача прогнозирования исхода спортивного события – будем пытаться угадать, выиграет ли первая команда первую четверть баскетбольного матча по ходу игры, используя нейросеть. Это своего рода модель для ставок на спорт, но сразу подчеркну: цель исключительно научная, а не научиться обыгрывать букмекеров (позже станет ясно почему).
Постановка задачи: нейросеть для ставок на спорт


Читать: https://habr.com/ru/articles/942228/?utm_campaign=942228

@a_cup_of_java | Другие наши каналы
vm5277, пример компиляции для AVR

Пишем один код - собираем на разные 8 бит МК!

https://vm5277.ru- это универсальное решение для embedded-разработки, которое позволяет сократить время создания прошивки для 8 бит микроконтроллеров в разы.

Как это работает:

Пишешь код на Java подобном языке (чистое ООП, без головной боли с указателями и не читабельным кодом)

Компилятор автоматически генерирует оптимизированный ассемблерный код под выбранную платформу

Код работает поверх легковесной RTOS, написанной на ассемблере для максимальной производительности

Ассемблер-сборщик финализирует проект в бинарный файл прошивки


Читать: https://habr.com/ru/articles/942258/?utm_campaign=942258

@a_cup_of_java | Другие наши каналы
Статистика футбольных матчей

Недавно рассказывал о многомерном анализе данных временных рядов с помощью Dimension-UI, упоминая простой и удобный интерфейс для доступа к данным, гибкость, интерактивность и другие преимущества. Пришло время проверить, как это работает на практике. В качестве полигона для анализа мы используем статистику футбольных матчей: посмотрим данные по голам, детализированные по командам, статистику по счёту, а также сравним результативность в домашних и гостевых матчах.


Читать: https://habr.com/ru/articles/942352/?utm_campaign=942352

@a_cup_of_java | Другие наши каналы
Обратная совместимость в Java-мире

От приложения мы хотим стабильности и предсказуемости. Мы хотим, чтобы приложение было одинаковым. Эта предсказуемость и обратная совместимость являются эдакой священной коровой, которая движет Java вперёд, возможно, движет назад и, возможно, по некоторым сведениям, из-за этого Java и умрёт.

Однако 30 лет Java прожила. Давайте посмотрим, как это всё было и что было в начале.


Читать: https://habr.com/ru/companies/axiomjdk/articles/941808/?utm_campaign=941808

@a_cup_of_java | Другие наши каналы
Контрактные тесты CDC на Pact

Привет, Хабр!

Сегодня рассмотрим контрактные тесты потребитель-управляемого формата на Pact.

Consumer-Driven Contracts фиксируют минимальный набор ожиданий клиента к API сервиса. Контракт рождается из автотеста на стороне потребителя. Потом провайдер прогоняет этот контракт против своей реализации и публикует результат в Broker. Выигрыш понятный: проверяем не всё API, а только то, что использует потребитель, и фиксируем совместимость версий до выката. Это основная идея Pact и базовая модель его работы.

Сам по себе CDC закрывает разрыв между быстрыми юнитами и медленными e2e. Контракт не заменяет e2e, но даёт дешёвую гарантию «не сломаем потребителя» на каждом изменении провайдера. CDC эффективнее всего на сетях сервисов с явными границами и стабильными интеграциями.


Читать: https://habr.com/ru/companies/otus/articles/941366/?utm_campaign=941366

@a_cup_of_java | Другие наши каналы
Forwarded from Типичный программист
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Новинки Java: Groovy 5.0 и Project Leyden
Вышли Groovy 5.0 с поддержкой JDK 11–25 и Project Leyden с улучшениями старта и производительности Java. Также обновились Helidon MCP, Open Liberty, JReleaser и другие инструменты. Подробности в свежем обзоре Java-новостей.

Подробности: https://www.infoq.com/news/2025/09/java-news-roundup-aug25-2025/

#en

@a_cup_of_java | Другие наши каналы
Разработка на Java без всего

Снова показываю как можно вести разработку «голыми руками» — без IDE, документации и даже интернета. На этот раз с помощью «пользовательской» Ubuntu Linux и OpenJDK.


Читать: https://habr.com/ru/articles/942674/?utm_campaign=942674

@a_cup_of_java | Другие наши каналы
👍2
Kotlin Multiplatform: гибкость и нативная производительность для кроссплатформенной разработки.
KMP позволяет разделять бизнес-логику между iOS, Android и другими платформами, сохраняя при этом возможность создавать нативные интерфейсы. Это снижает затраты и ускоряет разработку без потери качества. Kotlin Multiplatform в действии: как McDonald’s и Philips объединяют команды и код для создания кроссплатформенных приложений. Несмотря на сложности с Bluetooth и ограниченную экосистему, KMP помогает ускорить разработку без потери производительности и нативного опыта.

Подробности: https://www.infoq.com/articles/kotlin-multiplatform-evaluation/

#en

@a_cup_of_java | Другие наши каналы
Как развивалась наблюдаемость в Java и почему OpenTelemetry становится стандартом? В подкасте эксперт Марцин Гжейщак раскрывает важность правильной инструментализации и объясняет, как наблюдаемость помогает контролировать производительность как монолитов, так и микросервисов. Micrometer: новый взгляд на метрики и трассировку в Java

Micrometer предлагает зрелое решение для мониторинга Java-приложений с поддержкой интеграции OpenTelemetry и стандартизированной передачей контекста. Особенность — упор на бизнес-метрики и прозрачность в гетерогенной среде. Micrometer и Spring обеспечивают удобную и надёжную инструментализацию приложений, включая реактивные. Главная идея — встроенная в проект телеметрия позволяет быстро выявлять проблемы и снижать расходы на наблюдаемость без сложностей с настройкой.

Подробности: https://www.infoq.com/podcasts/observability-java-micrometer/

#en

@a_cup_of_java | Другие наши каналы
Почему параметр cursor_tuple_fraction не работает с JDBC драйвером PostgreSQL

Эта статья, своего рода, история фэйла. Изначально Лоренс Альбе хотел написать статью о параметре PostgreSQL cursor_tuple_fraction, но обнаружил, что про это уже писали. Тогда Лоренс подумал, что мог бы изучить влияние этого параметра на драйвер JDBC. Это привело его к невероятно долгой борьбе с библиотекой auto_explain, которая в итоге ничего не дала. Хабр полон историями успеха, почему бы не поделиться историей фэйла? Также есть пара интересных наблюдений о работе JDBC-драйвера, которые стоят вашего внимания.


Читать: https://habr.com/ru/articles/942938/?utm_campaign=942938

@a_cup_of_java | Другие наши каналы
👍2
Explyt 4.1: поддержка Python и MCP, пользовательские Rules и Workflows

Привет, Хабр! Отправив детей в школы и детские сады (а кто-то из нас сам идет преподавать в ИТМО и СПбГУ), делимся первым релизом этой осени. Теперь вы можете использовать возможности ассистента в PyCharm. С поддержкой MCPсерверов больше не нужно реализовывать отдельные интеграции для каждого инструмента. Пользовательские Rules и Workflkows помогут сделать работу агента более удобной и корректной.
Другие улучшения + поддержка OpenAI GPT-5

Читать: https://habr.com/ru/companies/explyt/articles/943132/?utm_campaign=943132

@a_cup_of_java | Другие наши каналы
Shift-Left тестирование с Testcontainers: ловим баги на ранних этапах локальными интеграционными тестами

Баги, пойманные на проде, всегда стоят слишком дорого — и времени, и нервов, и репутации. Юнит-тесты не видят проблем с реальными зависимостями, моки быстро устаревают, а интеграционные среды тормозят разработку. Выход ищут в подходе shift-left: проверять критичную бизнес-логику раньше, прямо в IDE, без ожидания CI. В этой статье разберём, как библиотека Testcontainers позволяет поднимать реальные сервисы в контейнерах, писать интеграционные тесты так же просто, как юнит-тесты, и что это даёт с точки зрения скорости и качества по метрикам DORA.


Читать: https://habr.com/ru/companies/otus/articles/943098/?utm_campaign=943098

@a_cup_of_java | Другие наши каналы
Запуск бинарных файлов из data/data на Android 10+ (Обход SELinux)

Всем привет! Как многие знают, с Android 10 (Target sdk 29) google ввели новую политику безопасности. Новая политика SELinux звучит просто: "Нельзя исполнять файлы из той директории, в которую можно записывать". Всё это очень хорошо, но многие проекты сломались (В том числе и мой). Termux из google play УМЕЕТ запускать бинарные файлы на target sdk 29+. Я решил поделится как выполнить бинарный файл из data/data/com.ваш.пакет/files на новых версиях sdk БЕЗ полного клонирования Termux и БЕЗ С/C++ части. Сам метод запуска будет именно на java. Репозиторий termux, откуда был взят способ: https://github.com/termux-play-store/termux-apps

В чём суть, любой бинарный файла который вы запускаете имеет свой контекст. Если вы запускаете через нативную директорию (data/app/и так далее) перед этим положив бинарные файлы в jniLins - контекст у такого бинарного файла будет правильным и SELinux даст разрешение на запуск (Granted), но в случае с data/data другой случай, оттуда SELinux УЖЕ ОТКАЖЕТСЯ запускать бинарный файл (Denied). Разрешил SELinux запуск или отклонил можно смотреть в logcat. Однако, в системе существует системная утилита которая может запустить бинарник, а самое главное - SELinux РАЗРЕШИТ ей запустится, так как она системная. Её имя - linker или linker64 (Зависит от разрядности, 32 бита или 64)

Запустив линкер и передав ему наш бинарный файл из data/data - SELinux разрешит ему выполнится и сразу разрешит исполнение нашего бинарного файла. Тут сразу возникает вопрос, а если бинарный файл попробует подключить so библиотеку? Ей будет отказано? Здесь тоже есть решение, существует termux-exec. Это бинарный файл, который перехватывает попытку подключения чего либо и выполняет трюк с линкером. (linker или linker64 определяет автоматически). Вы можете собрать его из исходников (https://github.com/termux-play-store/termux-exec), но лично я полностью скопировал среду (Где этот уже собранный файл идёт в usr/lib) termux, так как мне нужно было запускать OpenJDK 17 под termux.


Читать: https://habr.com/ru/articles/943188/?utm_campaign=943188

@a_cup_of_java | Другие наши каналы
Рынок труда тестировщиков-автоматизаторов в России (2025)

Спрос на QA-специалистов в России продолжает расти, однако конкуренция в этой нише очень высокая. Так, по данным Computerra, в числе наиболее востребованных ИТ-специалистов в 2025 году оказались именно тестировщики и специалисты по написанию автотестов. При этом работодатели всё чаще требуют от тестировщиков навыков уровня начинающего разработчика: знания бэкенда, фронтенда, работы с БД и умения писать скрипты для автотестов. В этой статье мы подробно рассмотрим актуальные языки программирования, фреймворки и инструменты в автоматизации тестирования, требования работодателей, типичные этапы собеседований, а также рекомендации по подготовке.


Читать: https://habr.com/ru/articles/943414/?utm_campaign=943414

@a_cup_of_java | Другие наши каналы
Когда дело не в коде: как мы ловили мистические пропажи аукционов на сетевом уровне

Привет, меня зовут Анатолий, я ведущий разработчик в ITFB Group. У нас высоконагруженный сервис аукционов. И раз в неделю, как по расписанию, раздавался панический звонок: «Опять пропали аукционы!». Мы неслись смотреть логи — а там... ничего. Ни ошибок, ни падений. Никаких пятисотых, только стабильные двухсотые. Стенды dev и prod молчали, как рыбы. Аукционы загадочным образом появлялись через некоторое время, и всё работало, пока история не повторялась снова. Это был не баг, это был призрак. Призрак в сети.

Сегодня я расскажу, как мы его поймали.


Читать: https://habr.com/ru/companies/itfb/articles/943482/?utm_campaign=943482

@a_cup_of_java | Другие наши каналы
5😁2
Мой путь новичка в разработке: FreeSpace — мобильное приложение для любителей космоса

Меня зовут Маша, я ученица «IT Школы Samsung». Хочу рассказать о своём проекте — мобильном приложении FreeSpace, которое объединяет новости о космосе, интерактивную карту и сообщество энтузиастов. Это не просто рассказ о коде, но и история моего пути в Android-разработке.


Читать: https://habr.com/ru/companies/samsung/articles/943884/?utm_campaign=943884

@a_cup_of_java | Другие наши каналы
API LSP теперь доступен всем пользователям IntelliJ IDEA и разработчикам плагинов

Команда Spring АйО перевела статью от JetBrains, в которой рассказано про избавление одного из главных барьеров на пути к массовому внедрению Language Server Protocol (LSP) в своей экосистеме.

С версии IntelliJ IDEA Ultimate 2025.2 пользователи смогут использовать LSP даже после окончания подписки, а с 2025.3 — LSP станет доступным во всех редакциях IDE благодаря переходу на единый дистрибутив.


Читать: https://habr.com/ru/companies/spring_aio/articles/943896/?utm_campaign=943896

@a_cup_of_java | Другие наши каналы
4
Как мы Best Practices в Java анализатор внедряли

История о том, как мы переписывали приложение под DI контейнеры, разбирали зависимости, рисовали графики, чтобы в этом не потеряться, и молились, чтобы ничего вдруг не сломалось.


Читать: https://habr.com/ru/companies/pvs-studio/articles/944164/?utm_campaign=944164

@a_cup_of_java | Другие наши каналы
Бесконечные циклы. Всё, что может пойти не так — пойдёт не так

Конструкции типа while(true) или for(;;) довольно опасные. Когда люди их пишут, то всегда надеются на то, что сработает условие выхода из цикла. Однако, на самом деле, как бы мы ни были уверены, такие конструкции лучше избегать.

В любом программном продукте есть баги, и те инварианты, на которые идёт расчёт, могут просто не сработать. Решение? Читайте в переводе от команды Spring АйО, где автор указывает примеры того, как с этими конструкциями поступили в Jooq и как с ними работает один из департаментов University of California.


Читать: https://habr.com/ru/companies/spring_aio/articles/944228/?utm_campaign=944228

@a_cup_of_java | Другие наши каналы
🤪1
Как мы в Java-проекте UDT для PostgreSQL поддерживали

PostgreSQL позволяет создавать хранимые функции и процедуры. И если при их вызове с простыми данными проблем не возникает, то сложные иерархические структуры могут вызвать трудности.

В статье мы разберёмся, как передавать и получать вложенные объекты в процедурах и функциях PostgreSQL с помощью JDBC.


Читать: https://habr.com/ru/companies/bercut/articles/940614/?utm_campaign=940614

@a_cup_of_java | Другие наши каналы
2