Search
Write a publication
Pull to refresh
0
0
Send message

Тестирование многопоточного и асинхронного кода

Reading time6 min
Views21K
Привет! На неделе встала задача написать интеграционный тест для Spring Boot приложения, использующего асинхронное взаимодействие с внешними системами. Освежил много материала про отладку многопоточного кода. Привлекла внимание статья «Testing Multi-Threaded and Asynchronous Code» by Jonathan Halterman, мой перевод которой приведен ниже.
Читать дальше →

Сбалансированная разработка в очень больших командах. Доклад Яндекса

Reading time11 min
Views17K
Когда продукт большой, разработчики скатываются в крайности:
— слишком красивый код — медленные релизы,
— слишком много внимания процессам — мало внимания разработке,
— быстрая отправка новых фич в продакшен — слишком плохой код,
— слишком много внимания автотестам — сложно вносить изменения,
— забота о скорости интерфейса — уход от новых фич,
— улучшение UI — мало внимания к архитектуре кода.

В докладе я рассказал, как избежать этих крайностей и добиться успешной работы в команде.



— Хочется поговорить про то, как жить в больших командах. Большая команда — это когда людей даже больше, чем в этом зале.
Читать дальше →

Фишки IDEA. Часть 1

Reading time4 min
Views19K

Функционал IntelliJ IDEA велик, так что вряд ли найдется много разработчиков, кто использует все ее возможности без исключения. Но у каждого есть свой набор любимых фишек и опций. Около месяца назад во внутреннем чате Максилекта родилась идея пошарить эти фишки внутри компании. Коллеги восприняли ее с таким энтузиазмом, что одного запланированного часа обсуждений на это не хватило - встречу повторили через неделю.

Хотим поделиться с вами самыми интересными идеями (со ссылками на документацию, где подробно описано, как это работает).

Читать далее

Wi-Fi 6 что это? Какие сервисы подключать? Сценарии использования (Часть 1)

Reading time4 min
Views17K

Wi-Fi 6 (или 802.11 ax) новый стандарт беспроводных сетей. Новый формат, который создавался с целью исправить баги прошлых стандартов. К 2021-му году у WiFi накопилось достаточно нерешенных проблем. О решении этих проблем и пойдет речь.

Читать далее

Летаем на дроне легально

Reading time4 min
Views29K

В детстве практически каждый из нас ходил в кружки моделирования и пытался строить свои радиоуправляемые модели. Скажу сразу, ни одну управляемую модель я так и не собрал, хотя ракеты мои летали исправно и даже приземлялись на парашюте ("Илон, трепещи!"). Довольно много прочитал про это, но нелёгкая увела в сторону ИТ и моделирование забросил.

Лет 5 назад мне подарили дрон, ноунейм дрон. Это была очень простая копия DJI Phantom 1, которая не умела держать высоту, летать против ветра и снимать лучше кнопочного телефона 2002 года. В общем, один раз запустили, у него сели батарейки, да и больше не было желания к нему прикасаться. Зато вновь появился интерес к радиоуправляемым моделям (дронам).

Дальше мне подарили DJI Spark - мой первый нормальный дрон, который умел снимать вот так

Читать далее

Софтовый датчик присутствия на Linux AP + ESP8266

Reading time3 min
Views16K

Наблюдение за изменением уровня Wi-Fi сигнала от стационарно расположенных по дому IoT устройств позволяет сделать полностью программный (выделенное железо отсутствует) объёмный датчик движения в объёме квартиры, достаточно точно показывающий наличие активно перемещающихся людей.

Читать далее

Умный дом — рекомендации гаджетов на основе личного опыта. Версия основателя Madrobots

Reading time4 min
Views19K

Я рассматриваю «умный дом» не как напичканное датчиками и гаджетами жилье, а как удобную и избавляющую своего владельца от рутины систему. За десятилетие увлечения гаджетами я просеял через себя сотни приборов и готов поделиться списком того, что считаю реально полезным.

Читать далее

Я мотоцикл покупал, чтобы ездить, а не чтобы падать

Reading time8 min
Views168K


Эта статья не совсем в формате Хабра, но, наблюдая какими темпами растет количество двухколесных на улицах столицы, в том числе и среди ИТ-шников, я всё же рискну — может это спасёт несколько жизней, что не так уж и плохо.

Когда лет 10 назад я купил себе первый мотоцикл, любая встреча двухколесных на дороге была целым событием. Последние же несколько лет ситуация изменилась кардинально — пробка из мототехники в междурядье уже каждодневная обыденность. Размышлять на тему, почему это происходит я не буду, а постараюсь просто поделиться опытом «выживания в большом городе» с теми, кто только купил или пока просто задумывается. Вполне возможно, что некоторые вещи будут полезны и любителям электротранспорта.
Читать дальше →

Reactor, WebFlux, Kotlin Coroutines, или Асинхронность на простом примере

Reading time12 min
Views23K


Многие сервисы в современном мире, по большей части, «ничего не делают». Их задачи сводятся к запросам к другим базам/сервисам/кешам и агрегации всех этих данных по различным правилам и разнообразной бизнес-логике. Поэтому неудивительно, что появляются такие языки, как Golang, с удобной встроенной конкурентной системой, позволяющей легко организовывать неблокирующий код.


В JVM-мире всё немного сложнее. Есть огромное количество фреймворков и библиотек, блокирующих потоки при использовании. Так и сама stdlib может делать то же самое порой. Да и в Java нет аналогичного механизма, похожего на горутины в Golang.


Тем не менее, JVM активно развивается и появляются новые интересные возможности. Есть Kotlin с корутинами, которые по своему использованию очень похожи на горутины из Golang (хоть и реализованы совершенно по-другому). Есть JEP Loom, который в будущем привнесёт fibers в JVM. Один из самых популярных веб-фреймворков — Spring — не так давно добавил возможность создавать полностью неблокирующие сервисы на Webflux. А с недавним релизом Spring boot 2.2 интеграция с Kotlin стала ещё лучше.


Предлагаю на примере небольшого сервиса по переводу денег с одной карты на другую самим написать приложение на Spring boot 2.2 и Kotlin для интеграции с несколькими внешними сервисами.

Читать дальше →

Использование Typescript с React – руководство для новичков

Reading time6 min
Views191K
Друзья, в преддверии выходных хотим поделиться с вами еще одной интересной публикацией, которую хотим приурочить к запуску новой группы по курсу «Разработчик JavaScript».



Потратив последние несколько месяцев на разработку приложений на React и библиотек с использованием Typescript, я решил поделиться некоторыми вещами, которые узнал за это время. В этом руководстве я расскажу вам про шаблоны, которые я использую для Typescript и React в 80% случаев.

Стоит ли изучать Typescript для разработки приложений на React? Стоит, еще как стоит! Для себя я осознал на практике, что строгая типизация приводит к написанию гораздо более надежного кода, быстрой разработке, особенно в крупных проектах. Сначала вы, вероятно, будете разочарованы, но по мере работы вы обнаружите, что хотя бы минимальный шаблон действительно будет очень кстати.

И если вы застряли на чем-то, помните, что вы всегда можете типизировать что- нибудь как any. Any – ваш новый друг. А теперь перейдем непосредственно к примерам.
Читать дальше →

Яндекс.Функции, Sublime Text и навыки для Алисы

Reading time4 min
Views2.9K
27 июня Яндекс проводил онлайн-хакатон по разработке навыков для Алисы.

Решил и я принять в нем участие. Ранее навыки для Алисы я уже делал, но хостил их все на Google App Engine. Тут же я решил изучить что-то новое в рамках Хакатон. Яндекс активно продвигает свои Функции в Яндекс.Облаке для разработки навыков. Для навыков они бесплатны (правда, бесплатно не всё).
Вот и нашлась тема для изучения

QueryDSL: Предикаты

Reading time8 min
Views56K
QueryDSL Predicate — это мощный и чрезвычайно гибкий инструмент для работы с БД и просто подарок для Java-разработчиков, которые не очень хорошо разбираются в SQL (или совсем не разбираются), поскольку предикаты позволяют работать с БД при помощи привычного объектного представления сущностных зависимостей.



Предикаты позволяют работать с элементами базы данных как с обычными полями класса. При сборке gradle создаёт специальные классы зависимостей, через которые и происходит поиск нужных записей в БД.
Читать дальше →

Кондиционер айтишника. Часть II

Reading time8 min
Views28K
В этой части расскажу вариант «простой» интеграции кондиционера (а вообще, практически любого устройства, управляемого через ИК) с помощью WiFi<=>IR-шлюза.

Для того, чтобы было интереснее — выбрал популярный шлюз (кстати, Яндекс для своей Алисы как раз его и использует). Купить такой можно на Али, цена что-то около 1200 рублей (у Яндекса — дороже).

Устройство довольно компактное (легко умещается в ладони), из видимых органов есть один маленький ненаваязчивый синий светодиод и кнопка для сопряжения. Все остальное скрыто за черным ИК-прозрачным корпусом. В качестве источника питания можно использовать любой доступный USB-порт (БП, комп и т.п.). Шлюз подключается к нему с помощью microUSB-кабеля (из комплекта поставки или любым удобным).

Особенность этого устройства — он построен на «хорошо известном в узких кругах» esp8266, а это значит, что достаточно несложно его можно «приручить».
Начнем!

Xiaomi Gateway (eu version — Lumi.gateway.mieu01 ) Hacked

Reading time4 min
Views42K
Xiaomi Zigbee Gateway Hack

В этой статье я хочу поделится с Вами своими наработками и достигнутыми успехами в разборе Xiaomi шлюза (Версия с евровилкой с беру.ру). Расскажу как установить на него альтернативное ПО, как восстанавливать шлюз с затертым софтом и даже оживлять шлюз с затертым u-boot.

---------МНОГО КАРТИНОК-------------


Читать дальше →

Sealed типы в Java

Reading time6 min
Views29K
Язык Java с недавнего времени стал активно развиваться. Шестимесячный релиз версий Java не может не радовать Java разработчика новыми фичами.

Одним из приоритетных направлений развития Java является сопоставление с образцом (pattern matching). Pattern matching раскрывают перед разработчиком возможность писать код более гибко и красивее, при этом оставляя его понятным.

Ключевыми блоками для pattern matching в Java планируется записи (record) и запечатаные (sealed) типы.

Записи (record) предоставляют лаконичный синтаксис для объявления классов, которые являются простыми носителями постоянных, неизменяемых наборов данных.

Появятся в Java 14 в виде preview feature.

record Person(String name, int age) { }
Читать дальше →

Мой путь: как я отказался от покупки noolite шлюза и заменил его своим велосипедом

Reading time4 min
Views9K


История эта началась полтора года назад, когда ко мне в руки попали блоки управления освещением «noolite» (ну как попали, сам купил, есть у меня слабость к разного рода интересному железу). Тогда в моём распоряжении оказались два блока серии SB и адаптер MTRF-64. Блоки этой серии привлекли меня тем, что их можно внедрить в домашнюю проводку без её существенного переделывания: достал выключатель и вместо него всунул блок, а сам выключатель повесил на специально выведенные из блока провода. В такой конфигурации светом можно управлять как с радиоканала так и по классике — выключателем. Есть конечно и один минус: блоки этой серии не поддерживают обратную связь, а хотелось бы, ведь в MTRF-64 она есть, ну да ладно. А вот от покупки шлюза я тогда отказался в пользу адаптера, потенциально возможности его шире чем у шлюза.
Читать дальше →

20 советов пилоту DJI Mavic Mini, чтобы уберечь свой дрон от крушений и утраты

Reading time4 min
Views47K


Адекватная цена на летающую камеру профессионального качества, компактный размер, простое управление и большой ресурс аккумуляторов уже сделали Миник «народным» дроном для фотографов, путешественников и энтузиастов.

Но этот квадрокоптер — не для рекордов высоты, дальности и скорости. Он очень лёгкий, боится ветра и темноты, теряет сигнал пульта даже при незначительных помехах. Поэтому запаситесь терпением, придержите свои амбиции пилота — покорителя высот, и желание делать крутые кадры уровня Mavic 2 Pro или Inspire.

В этой статье Вы найдёте два десятка рекомендаций, основных на моём личном опыте эксплуатации DJI Mavic Mini, которые уберегут начинающего пилота от глупых ошибок и не очевидных опасных ситуаций.
Читать дальше →

Как я 1000 дней пользовался OpenHAB, а затем перешел на Home Assistant

Reading time3 min
Views68K

Однажды в 2016 году мне потребовалось настроить удаленный сбор показаний счетчиков в квартире. К текущему моменту (январь 2020 года) там внедрена комплексная домашняя автоматизация с возможностью перекрытия воды и полного удаленного обесточивания (и обратного включения) электроэнергии.



В статье расскажу об опыте управления OpenHAB 1.х и 2.х и Home Assistant, а также приведу свои конфигурации.

OpenHAB vs Home Assistant

Полная домашняя автоматизация в новостройке

Reading time8 min
Views224K
Три года назад стал претворять свою давнюю мечту в реальность — максимальная домашняя автоматизация квартиры, купленной в новостройке с нуля. При этом «отделку от застройщика» пришлось принести в жертву умному дому image и полностью переделать, а вся электрика, не связанная с автоматикой приехала с известного китайского сайта. Паяльник не потребовался, но знающих мастеров, электриков и плотников пришлось искать долго.


Панель управления квартирой в феврале 2020 года (Home Assistant)

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


Строительство нашего дома в процессе — ноябрь 2016 года
Умный дом в самом соку...

Мои поиски физической панели управления умным домом

Reading time5 min
Views55K

Довольно давно у меня появилась мысль установить управляющую панель, расположенную рядом с входной дверью внутри квартиры/дома.


Существует несколько вариантов реализации этой задумки:


  • сенсорная панель оператора ПЛК;
  • планшет;
  • сенсорный дисплей, подключенный к микрокомпьютеру.


Дополнительное требование, которое сразу ограничило выбор устройства: на панель управления автоматически должно выводиться изображение с наружной камеры при срабатывания датчика движения (и только в случае присутствия людей дома).

Читать дальше →

Information

Rating
Does not participate
Location
Минская обл., Беларусь
Date of birth
Registered
Activity

Specialization

Backend Developer, Application Developer
Senior
Git
SQL
OOP
Java
Docker
Spring Boot
Java EE
Intellij IDEA
Hibernate
Java Spring Framework