Функционал раций покрывает все нужды в своей нише, но, учитывая, что мобильный телефон всегда под рукой, хотелось бы попробовать сочетать утилитарность раций и удобство смартфона. Даже возможность передать просто координаты по радиоканалу в рамках своей туристической группы – это уже интересно, но что, если передавать зашифрованные сообщения или даже графические данные? Для меня, как для туриста со стажем, это представляется по меньшей мере любопытным.
Java *
Объектно-ориентированный язык программирования
Новости
Ускоряем Groovy скрипты
AST (Abstract Syntax Tree) преобразование для исполнения Groovy скриптов с @CompileStatic
Введение
Предположим у Вас есть некоторый скрипт который работает с некоторым бизнес объектом, скажем Person.
Groovy script
person.name = 'Peter'
У Groovy есть замечательная фича @CompileStatic, которая заставляет компилятор Groovy компилировать скриптовый код статически (как это делает компилятор Java), что значительно ускоряет исполнение скрипта, но к сожалению в нашем случае простого (plain) скрипта у нас просто нет места где мы можем применить эту аннотацию. Вы знаете что @CompileStatic применяется либо к методу или классу. Давай сначала попробуем решить эту проблему вручную.
Внутренний мир: Project Reactor
У многих из нас, при использовании какого-либо инструмента программирования, возникал вопрос: “Как? Как это работает?”. Часто при возникновении подобных вопросов я обращаюсь к гуглу, который популярным образом рассказывает общие принципы работы того или иного механизма. Но наверняка среди читателей есть те, которые, прочитав несколько статей, подумали: "Да, это интересно и, вроде, понятно. Но все таки, как оно работает?".
Оптимизация и кастомизация запросов с использованием Spring Cache и Scope Bean
Привет! Меня зовут Алексей Салаев, я Java-разработчик команды Corp Digital в Росбанке. В этом посте я расскажу, как можно оптимизировать и кастомизировать запросы в Spring: опишу потенциальные проблемы, оценю возможные пути решения и проиллюстрирую всё примерами.
Декомпозируем регулярные выражения
Хороший код читается легко, как проза. Многие книги учат нас тому, как важно делить код на небольшие, повторно используемые, легко потребляемые блоки.
Но почему-то, в случае с регэкспами у программистов как будто появляется слепое пятно на чувстве стиля. Вот такая регулярка – совершенно обычное дело:
/^(0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])[- /.]((19|20)\d\d)$/
Еще один способ использования Java records как DTO
В данной статье будет рассмотрен способ применения Java records в качестве DTO (data transfer objects).
Синхронный «запрос-ответ» с использованием REST и Apache Kafka
Подружить REST и Apache Kafka кажется нетривиальной задачей. Однако с ней удалось справиться экспертам Группы «Иннотех». Ведущий разработчик Кирилл Воронин рассказал подробности решения задачи перевода асинхронных запросов в синхронные.
Многопоточность Java. #неОпятьАСнова #javaJunior #javaCore
Тезисно про многопоточность в Java.
Первые шаги в анализе безопасности мобильных приложений: разбираемся на примере Allsafe
Allsafe — это приложение, намеренно спроектированное небезопасным. Для чего это нужно? Оно предназначено для обучения и поиска различных уязвимостей. В отличие от других подобных приложений для Android, оно использует современные библиотеки и технологии. Меньше похоже на CTF и больше похоже на реальное приложение. В этом посте мы разберем его уязвимости с точки зрения двух подходов: статического и динамического тестирования безопасности.
DoZer — сцинтилляционный гамма-спектрометр с bluetooth
DoZer -- сцинтилляционный гамма-спектрометр с BT интерфейсом.
Как программист настроил автоматическое развертывание бекенда с базой данных
Всем привет, хабровчане и гости сайта
Сегодня решил рассказать о своем опыте, как я при помощи docker-compose и bash скрипта настроил развертывание бекенд приложения с базой данных.
Какая была идея? Хотелось при помощи одной команды в терминале разворачивать Java приложение с базой данных так, чтобы можно было передать все необходимые переменные в момент запуска и нигде не хранить их.
Так, чтобы можно было развернуть новую версию приложения даже с телефона, просто заранее заготовив необходимую команду.
Как получилось в итоге:
в корне проекта лежит баш скрипт, который принимает переменные окружения, которые нужны для запуска бекенда и базы данных. Там внутри никаких захардкодженных данных нет, что позволяет нам запускать где угодно и с какими угодно настройками.
Путь к этому был сложен и тернист для меня. С большой вероятностью можно было сделать легче и проще, если б я занимался этим каждый день, но сделал как умел и как предполагал возможным. Поэтому все, кто имеет что сказать поэтому поводу, приглашаются в комментарии.
Выкуси, Telegram Premium — бот-конвертер голосовых сообщений для обхода ограничений (Java, Spring, вебхуки, ffmpeg)
Это третья статья в моей серии "для самых маленьких" - первая была посвящена "классическому" Telegram-боту, наследуемому от TelegramLongPollingBot
, вторая - боту на вебхуках на Spring с блекджеком и ш БД Redis и клавиатурами.
Для кого написано
Если вы ни разу не писали Telegram-ботов на Java с использованием вебхуков и только начинаете разбираться — эта статья для вас. В ней подробно и с пояснениями описано создание реального бота, автоматизирующего одну очень простую функцию. Можно использовать статью как мануал для создания скелета своего бота, а потом подключить его к своей бизнес-логике.
Я пытаюсь писать как для себя, а не сразу для умных — надеюсь, кому-нибудь это поможет быстрее въехать в тему.
Предыстория
Давать доступ к возможностям продукта только покупателям подписки - нормально, это бизнес. Выводить раздражающую значительную часть пользователей фичу, а потом разрешать отказаться от неё только за деньги - поедание экскрементов.
Большинство преимуществ Telegram Premium не вызывают никаких вопросов, но запрет на отправку себе голосовых сообщений - это низко, Telegram.
К счастью, наш любимый мессенджер настолько хорош, что обойти эту несправедливость можно с помощью очень простого Voice4PremiumBot.
Java и низкая задержка
Я уже сбился со счёта, сколько раз мне говорили, что Java — неподходящий язык для разработки приложений, основным требованием к которым является высокая производительность. Обычно первым делом я прошу уточнить, что подразумевается под словом «производительность», поскольку две самые популярные метрики — пропускная способность и задержка — иногда конфликтуют друг с другом, а способы оптимизации одной из них существенно ухудшают вторую.
Существуют методики разработки Java-приложений, которые соответствуют требованиям к производительности (или даже превосходят их) приложений, созданных на языках, традиционно применяемых для этой цели. Однако даже этого может быть недостаточно, чтобы обеспечить наилучшую производительность с точки зрения задержек. Java-приложениям по-прежнему приходится полагаться на операционную систему в вопросе предоставления доступа к оборудованию. Обычно чувствительные к задержке приложения (часто называемые «приложениями реального времени») лучше всего работают, когда имеют практически прямой доступ к оборудованию, то же самое относится и к Java. В этой статье я познакомлю вас с методиками, которые можно применять, когда мы хотим, чтобы приложения максимально эффективно задействовали системные ресурсы.
Принимаем TRON USDT на Java
Я захотел научиться принимать крипту в своих сервисах, и хочу поделиться как я внедрял Tron USDT.
Конструктор триггеров в Telegram. Или как мы сделали простейшего, но полезного бота
Привет! Меня зовут Боровков Евгений и я предприниматель. В этой статье я расскажу про свой pet-проект. Или как я решил проблему вечного поиска информации прямо в уютном Телеграммчике.
Как я делал serverless поиск для мейлинг листов OpenJDK
Динамический компаратор для объектов с помощью ComparatorChain
И еще немного о сортировке! Рассмотрен вариант генерации компаратора для некоторой несложной сущности на основе самого класса и параметров многоступенчатой сортировки. Плюс данного подхода заключается в получении компаратора в runtime, при отсутствии необходимости менять код при изменении сортируемой сущности и параметров сортировки.
Настраиваем память JVM-приложения в Kubernetes
Друзья, всем привет! Как известно, в Kubernetes у каждого pod’а есть ограничение на использование памяти (limits.memory), и, как показывает опыт, далеко не всегда очевидно, как JVM-приложение интерпретирует эту настройку, что порой может приводить к OOMKill.
Онлайн-фестиваль TechTrain — для тех, кто уехал, и тех, кто остался
В эти турбулентные времена многие читатели Хабра меняют местоположение. И части из них сейчас не до докладов про технологии, даже если речь о бесплатном онлайн-мероприятии в субботу.
Однако мы считаем, что мероприятия полезны и в такое время. Они помогают отвлечься от бесконечного думскроллинга. И они помогают людям, оказавшимся в разных географических точках, по-прежнему ощущать себя участниками русскоговорящего сообщества. Поэтому 8 октября мы, как и собирались, проведём TechTrain.
Он предшествует нашей осенней серии конференций по разным направлениям (Java, JS, DevOps и так далее). И в его программе по одному докладу от этих конференций: один о видеотехнологиях, другой о мобильной разработке, третий вообще про генерацию картинок нейросетями.
Для участия достаточно зарегистрироваться на сайте. А в этом посте мы расскажем, какие доклады (и не только) там будут.
Агрегаторы
В первой части статьи обсуждаются проблемы агрегации данных, подходы и требования к имплементации. Во второй рассматриваются некоторые решения на основе RACE Framework.
Вклад авторов
-
olegchir 3831.0 -
tagir_valeev 2369.0 -
phillennium 1366.4 -
23derevo 1271.0 -
ARG89 1078.2 -
dbelob 892.0 -
doom369 826.0 -
alizar 756.0 -
igor_suhorukov 716.0 -
andreycheptsov 620.0