Pull to refresh
16
0.1

Уже не безработный ;)

Send message

Разработка блока управления боковыми зеркалами автомобиля

Reading time10 min
Views17K

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

Подробнее
Total votes 77: ↑77 and ↓0+77
Comments92

Jetpack Compose Desktop

Reading time2 min
Views14K

Несколько дней назад компания JetBrains в своём блоге рассказала о выходе нового инструмента для создания дескопных приложений Jetpack Compose Desktop. Компания с русскими корнями не особо жалует русскоязычную аудиторию и не спешит рассказать нам о новинке, поэтому возьму на себя роль популяризатора.

Разработчики под Android уже могли слышать про Compose, которая доступна в предварительной версии Android Studio 4.2. Я не любитель устанавливать бета-версии, поэтому не мог пощупать новую технологию своими руками. Но когда услышал новость про Compose Desktop, то не удержался и поставил себе IntelliJ IDEA Early Access Program.

Для начала я установил версию IDEA 2020.3, где уже есть все необходимые настройки и шаблоны.

Создаём новый проект и выбираем шаблон Desktop uses Kotlin 1.4.0. Минимальная версия Java SDK должна быть не ниже 11. Проверял на Windows 10, других платформ у меня нет.

Читать далее
Total votes 11: ↑11 and ↓0+11
Comments5

Приложение Getcontact светит вашими персональными данными, даже если вы им никогда не пользовались

Level of difficultyEasy
Reading time5 min
Views153K

Getcontact — мобильное приложение, позиционирующее себя как менеджер звонков и блокировщик спама. Появилось в конце 2017-го и стремительно взлетело на первые места магазинов приложений. Создатели сервиса оценивают свою аудиторию в 400+ миллионов пользователей.

Приложение декларирует, казалось бы, благие намерения: предотвращение нежелательных звонков от спамеров и телефонных мошенников — услуга в современном мире необходимая и востребованная. Однако свою популярность Getcontact приобрёл совсем по другой причине…

Читать далее
Total votes 142: ↑137 and ↓5+162
Comments277

Unihiker: одноплатник с экраном за $75. Что это за девайс и какие у него возможности

Reading time3 min
Views17K
image

Одноплатные ПК крайне редко поставляются с экранами. Обычно дисплей приходится докупать. Но теперь появился необычный девайс, который представляет собой нечто вроде карманного компьютера уже из коробки. Самый его дорогой компонент — дисплей, поэтому разработчики стремились удешевить систему, чтобы удержать стоимость на отметке в $79. Соответственно, каких-то рекордов производительности от него ждать не приходится. Но все же это неплохой девайс, который может пригодиться многим из нас. Давайте посмотрим, что он из себя представляет.
Читать дальше →
Total votes 41: ↑39 and ↓2+49
Comments20

Прифронтовая разведка методами OSINT

Reading time3 min
Views29K

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

Читать далее
Total votes 48: ↑37 and ↓11+34
Comments79

gRPC — альтернатива REST API от Google

Reading time4 min
Views31K

Проблема

Когда мы разрабатываем приложение, которое разделено на независимые автономные компоненты, мы говорим о микросервисной архитектуре. Для взаимодействия компонентов используется API. Самый популярным API является REST. Это обусловлено его гибкостью, эффективностью (в большинстве сценариев) и тем, что он легко масштабируется. 

Большая часть реализаций REST использует стандарт JSON для обмена сообщениями. Обычно это удобно - сама по себе такая структура легко читается людьми и предоставляет независимость от языка программирования. Недостатками такого решения является избыточность данных и сущностей из которых состоит запрос. В большинстве случаев это некритично. Проблемы начинаются в сценариях, когда нужно передавать много данных с низкой задержкой.

Зачем нужен gRPC

gRPC (Remote Procedure Calls) — это система удалённого вызова процедур (RPC) с открытым исходным кодом, первоначально разработанная в Google. В качестве основного протокола передачи применяется HTTP/2, для описания процедур применяется “Protocol Buffers”. Это в свою очередь приносит дополнительные преимущества: сжатие HTTP-заголовков и мультиплексирование запросов.

gRPC предполагает возможность аутентификации, потоковой передачи данных в любую сторону, управление потоками, отмену и time-out запросов, при этом выделяется кроссплатформенностью за счет генерации исходного кода классов для всех популярных языков программирования. 

Читать далее
Total votes 21: ↑10 and ↓11+3
Comments33

Разработка процессорного модуля на базе микросхемы 1892ВА018 СнК «СКИФ» и его первый запуск

Reading time65 min
Views41K

Версия данной статьи для "off-line прочтения" в формате PDF доступна по адресу: ссылка на статью.

В первой половине 2021 года в РФ резко обострились дебаты на тему импортозамещения, инициированные рядом изменений внесенных ранее в декабре 2020г в постановление N719 относительно закупок вычислительной техники, и бурно обсуждаемых на различных площадках и IT-форумах, таких как Elbrus Tech Day, YADRO Лекторий, а так же у ряда популярных блогеров. Основной посыл нововведений состоял в том, что вся вычислительная техника, закупаемая за бюджетные средства, должна иметь в основе микропроцессор, разработанный или произведенный в России или имеющий статус такового. Насколько такое решение Правительства годное и исполнимое — тема отдельного разговора, которую я не хотел бы сейчас затрагивать. Так или иначе, мы, в нашей небольшой компании, пришли к выводу, что данное решение Правительства может приоткрыть пусть не окно, но хотя бы форточку возможностей для мелких разработчиков электроники, которым является наша компания. Имея за плечами опыт разработки изделий на основе импортных (в основном китайских) систем-на-кристалле, мы решили, что на рынке могут быть востребованы одноплатные ПК, аналогичные Raspberry Pi и выполненные на отечественном СнК, по возможности близкие по габаритам и pin-to-pin совместимые с «малиной», а также процессорные модули, устанавливаемые на несущую плату, позволяющие упростить разработку конечного изделия и вынести сложную топологию за его границы.

Читать далее
Total votes 129: ↑128 and ↓1+161
Comments94

Java XML API: выбираем правильно. StAX: работаем с удовольствием

Reading time5 min
Views58K
Здравствуйте!
Несмотря на снижение популярности формата XML с начала 2000х, он прочно занял свои ниши. Я сталкивался с обработкой XML ~ в 60% проектов и посвятил ей занятие своей стажировки Masterjava. Наиболее частые его применения: XHTML, SOAP, различные конфигурации (например Tomcat, SoapUI, IntelliJ IDEA, Spring XML конфигурация), импорт-экспорт данных.

В Java есть несколько API для работы с XML и для разработчика важно понимать, какое из API требуется выбрать в каждой конкретной ситуации. В этой статье я кратко перечислю все Java XML API, их назначение и примеры использования, и подробнее остановлюсь на работе с достаточно редкой, но в ряде случаев единственно верной технологией StAX. Предполагается что с элементами XML вы уже знакомы.
Читать дальше →
Total votes 9: ↑9 and ↓0+9
Comments8

Как правильно проектировать электронику

Reading time15 min
Views25K

Все электронные гаджеты, окружающие нас, были кем-то придуманы, формализованы в электрической схеме. Для них были спроектированы печатные платы, заказаны и установлены комплектующие, и в итоге было собрано готовое изделие. Каждый из этих этапов может быть реализован совершенно по-разному: от “ручной” самодеятельности до полностью автоматизированного цифрового подхода. В этой статье в блоге ЛАНИТ мы расскажем и покажем все уровни и варианты создания электронных устройств и подробно опишем новейшие технологии в проектировании электроники.

Читать далее
Total votes 79: ↑74 and ↓5+88
Comments127

Как за полчаса написать простую читалку книг FB2 для десктопа на Java

Level of difficultyEasy
Reading time13 min
Views18K

Недавно мне для личных целей понадобилось написать читалку FB2. И сразу я столкнулась с тем, что информации по теме минимум. Палочка-выручалочка под названием ChatGPT выдал что-то невразумительное в ответ на довольно подробный запрос. К тому же, никаких готовых библиотек, чтобы по-быстренькому наваять ридер, я также не смогла обнаружить. Хотя искала долго и упорно, как Чубакка расческу.

Все это привело меня к закономерному выводу, что сначала нужно изучить формат FB2. А потом подумать, как прочитать его стандартными способами и вывести на экран. После того, как я немного разобралась со структурой FB2, начала догадываться, почему нет готовых библиотек. Дело в том, что этот формат довольно простой, и нет особой необходимости писать для него отдельную библиотеку. Можно довольно быстро наваять свой код, который будет читать практически все файлы FB2. И вы сможете убедиться в этом, если дочитаете статью до конца.

А раз все так просто, зачем я пишу эту статью? Для этого у меня есть две причины. Во-первых, это моя первая проба пера на Хабре. А во-вторых, возможно, это сэкономит кучу времени другому такому же новичку, как я. Ну, или пригодится какому-нибудь студенту, который пишет реферат.

Читать далее
Total votes 18: ↑13 and ↓5+13
Comments69

Собираем NAS на базе китайской материнской платы N5095 Nas Motherboard

Level of difficultyEasy
Reading time11 min
Views42K

Всем привет! Делюсь опытом сборки NAS сервера на базе очень интересной (на мой взгляд) материнской платы.

Читать далее
Total votes 48: ↑47 and ↓1+59
Comments104

Доработка фильтра обратного осмоса

Level of difficultyEasy
Reading time4 min
Views24K

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


Хотя фильтры под мойкой менялись не очень давно, я решил поменять их еще раз, и к своему ужасу увидел неприглядную картину, примерно вот такую:


грязные


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


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


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

Читать дальше →
Total votes 23: ↑13 and ↓10+5
Comments266

Делай нейминг как сеньор

Reading time13 min
Views117K

Это объект Pizza, там хранится инфа о латте, а заказали его в Restaurant или в Pizzeria? Неудобно? Максимально. Мы читаем код существенно больше, чем пишем. И хочется сразу понимать, что происходит, не играя в квесты «что имел в виду автор», «да как это работает» и «я снова ничего не понял». Без навыка давать хороший нейминг невозможно писать качественный и поддерживаемый код. Про нейминг говорят заодно, в рамках архитектуры и общих инженерных практик. В статье поговорим про него отдельно.

Как получается, что код становится мало понятным даже для его авторов? Почему нейминг так важен? Как придумывать названия, не применяя целые теории нейминга? Как лёгким процессом организовать работу с неймингом в команде? На все эти вопросы мы ответим в статье.

Читать далее
Total votes 148: ↑146 and ↓2+182
Comments221

Spark — Потрясающий веб-микрофреймворк для Java

Reading time6 min
Views42K
image

Небольшое вступление


Spark — это просто чудесный микрофреймворк для создания веб-приложений на джаве без особых усилий.  Spark стремится к простоте и обеспечивает только минимальный набор функций. Тем не менее он предоставляет все необходимое для создания веб-приложения, которые поместятся в несколько строк кода. С синтаксисом, вдохновленным Sinatra, код выглядит очень чистым.
Читать дальше →
Total votes 26: ↑22 and ↓4+18
Comments67

Школа магии TypeScript: дженерики и расширение типов

Reading time7 min
Views46K
Автор статьи, перевод которой мы сегодня публикуем, говорит, что TypeScript — это просто потрясающе. Когда он только начал пользоваться TS, ему страшно нравилась та свобода, которая присуща этому языку. Чем больше сил программист вкладывает в свою работу со специфичными для TS механизмами — тем значительнее получаемые им выгоды. Тогда он использовал аннотации типов лишь периодически. Иногда он пользовался возможностями по автодополнению кода и подсказками компилятора, но, в основном, полагался лишь на собственное видение решаемых им задач.

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



В итоге он пришёл к выводу о том, что лучше так не делать. Он подружился с компилятором, начал обращать внимание на его подсказки. Компилятор находит проблемы в коде и сообщает о них задолго до того, как они могут нанести реальный вред. Автор статьи, глядя на себя как на разработчика, понял, что компилятор — это его лучший друг, так как защищает его от него самого. Как тут не вспомнить слова Альбуса Дамблдора: «Требуется большая храбрость, чтобы выступить против своих врагов, но не меньше ее требуется и чтобы выступить против своих друзей».

Каким бы хорошим другом ни был компилятор, ему не всегда легко угодить. Иногда избежать использования типа any очень непросто. А порой кажется, что any — это единственное разумное решение некоей проблемы.

Этот материал посвящён двум ситуациям. Избежав использования в них типа any можно обеспечить типобезопасность кода, открыть возможности по его повторному использованию и сделать его интуитивно понятным.
Читать дальше →
Total votes 41: ↑37 and ↓4+33
Comments29

HabraTab — девайс для хаброзависимых

Reading time9 min
Views14K

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

Что же получилось?
Total votes 92: ↑90 and ↓2+141
Comments53

Стильная, модная, молодежная разработка BPM на Camunda

Reading time7 min
Views139K
image

BPM-разработка — дело непростое. Это обусловлено тем, что процесс должен быть читаемым и понятным заказчику, а не только корректным с технической точки зрения.

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

2018 год принципиально изменил наш подход к разработке бизнес-процессов. Ниже — о том, как эволюционировал этот подход и как менялись мы.
Читать дальше →
Total votes 16: ↑16 and ↓0+16
Comments39

Десять вещей, которые можно делать с GraalVM

Reading time22 min
Views45K


От переводчика: GraalVM — новая, интересная технология, но на Хабре по ней не так много статей, которые бы могли показать примеры возможностей Graal. Статья ниже — это не просто перечисление того, что GraalVM умеет, но ещё и небольшой мастер-класс, аналогичный тому, который Chris Seaton и Олег Шелаев проводили на Oracle CodeOne 2018. Вслед за автором, призываю — пробуйте делать примеры из статьи, это действительно интересно.


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


  1. Быстрое выполнение Java
  2. Уменьшение времени старта и потребления памяти для Java
  3. Комбинирование JavaScript, Java, Ruby и R
  4. Исполнение программ, написанных на платформо-зависимых языках
  5. Общие инструменты для всех языков программирования
  6. Дополнение JVM приложений
  7. Дополнение платформо-зависимых приложений
  8. Код Java как платформо-зависимая библиотека
  9. Поддержка нескольких языков программирования в базе данных
  10. Создание языков программирования для GraalVM
Читать дальше →
Total votes 38: ↑37 and ↓1+36
Comments22

Quarkus — сверхзвуковая субатомная Java. Краткий обзор фреймворка

Reading time4 min
Views67K


Введение


Седьмого марта компания RedHat (вскоре — IBM) представила новый фреймворк — Quarkus. По словам разработчиков, этот фреймворк базируется на GraalVM и OpenJDK HotSpot и предназначен для Kubernetes. Стек Quarkus включает в себя: JPA/Hibernate, JAX-RS/RESTEasy, Eclipse Vert.x, Netty, Apache Camel, Kafka, Prometheus и другие.


Цель создания — сделать Java лидирующей платформой для развертывания в Kubernetes и разработки serverless приложений, предоставляя разработчикам унифицированный подход к разработке как в реактивном, так и в императивном стиле.


Если смотреть на эту классификацию фреймворков, то Quarkus где-то между "Aggregators/Code Generators" и "High-level fullstack frameworks". Это уже больше, чем агрегатор, но и до full-stack не дотягивает, т.к. заточен на разработку backend.

Читать дальше →
Total votes 43: ↑40 and ↓3+37
Comments25

С 31-го февраля в России полностью запретят VPN

Reading time11 min
Views149K

Как вам заголовок, а? Как вам такой подарочек на Рождество? 

Нет, это неправда, это шутка такая.

Не с 7-го января запретят. С другого числа запретят.

Добро пожаловать под кат, будем вместе учиться обходить блокировки VPN у наших коллег из дружественных стран - Китая, Ирана, Туркменистана и конечно же Северной Кореи.

AmneziaVPN снова на связи!

Читать далее
Total votes 468: ↑126 and ↓342-193
Comments200

Information

Rating
3,128-th
Registered
Activity

Specialization

Backend Developer
From 360,000 ₽
Java
Java Spring Framework
SQL
Angular
React