Как стать автором
Обновить
48
0
Andreev Dmitry @app-z

User

Отправить сообщение

Универсальная плата для E-Ink экранов. Ч1. Разработка системы питания

Уровень сложности Средний
Время на прочтение 13 мин
Количество просмотров 7K

Однажды мне попался один весьма интересный проект платы, поддерживающей большое количество разнообразных E-Ink экранов. Проект довольно быстро заинтересовал, появилось желание несколько переработать плату, внести улучшения, узнать и попробовать что-нибудь новое. Больше всего изменений претерпела система питания: она была разработана практически с нуля. Процесс оказался очень познавательным и увлекательным, а отладка прототипа преподнесла много поучительных и забавных сюрпризов. Это жизненный рассказ о разработке как есть.
Читать дальше →
Всего голосов 70: ↑70 и ↓0 +70
Комментарии 30

Делаем код в адаптере чище с помощью MergeAdapter

Время на прочтение 3 мин
Количество просмотров 5.7K
Надоели перегруженные и сложные адаптеры в вашем проекте, напоминающие картинку ниже? Каждый раз, при добавлении нового типа ячейки хочется переписать адаптер для RecyclerView, чтобы код читался проще? Есть множество подходов, чаще всего рекомендуется использовать подход delegate adapter или, например библиотеку для динамического создания списков с различными типами view как groupie о работе с которой вы можете ознакомиться в этой статье. Но сегодня расскажем о новом классе, который поможет инкапсулировать логику вашего адаптера для разных ячеек тем самым соответствовать принципам SOLID.
Читать дальше →
Всего голосов 6: ↑4 и ↓2 +2
Комментарии 4

Фоновая работа в Android: обзор возможностей WorkManager

Время на прочтение 10 мин
Количество просмотров 32K

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

Например, в ритейле мерчендайзерам бывает необходимо в конце каждого рабочего дня отправлять фотоотчеты на сервер и удалять их из памяти телефона, чтобы не занимать место. А для работы онлайн-кассы требуется в фоновом режиме загружать актуальный справочник товаров. В этой статье мы рассмотрим один из самых популярных инструментов для реализации фоновой работы – WorkManager из Android Jetpack. 

Читать далее
Всего голосов 7: ↑7 и ↓0 +7
Комментарии 6

ESP32 снимает показания водяных счетчиков и сам передает их «куда надо»

Уровень сложности Простой
Время на прочтение 7 мин
Количество просмотров 34K

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

Основное отличие моего решения, от тех что я видел, заключается в максимальной автономности и легкости контроля и управления. ESP32 самостоятельно общается с сайтом который принимает показания приборов учета посредством встроенного http клиента. Процесс контролируется и управляется встроенным в ESP32 telegram ботом.

Читать далее
Всего голосов 28: ↑26 и ↓2 +24
Комментарии 85

Вопросы и ответы для собеседования по Kotlin. Часть 1

Уровень сложности Средний
Время на прочтение 14 мин
Количество просмотров 60K
Читать далее
Всего голосов 2: ↑2 и ↓0 +2
Комментарии 10

Вопросы и ответы для собеседования по Kotlin. Часть 2

Уровень сложности Средний
Время на прочтение 17 мин
Количество просмотров 28K
Читать далее
Всего голосов 5: ↑4 и ↓1 +3
Комментарии 6

Custom View в Android — краткое руководство

Уровень сложности Средний
Время на прочтение 13 мин
Количество просмотров 23K

Обзор возможностей кастомных View с примерами кода на Kotlin + бонус в виде ссылок на полезные статьи и обучающие видео по данной теме.

1. Введение.
— Когда может понадобиться реализация собственного View?
— Способы создания собственного View.
— Иерархия View в Android.
2. Жизненный цикл View.
3. Конструкторы View.
4. Методы View.
onAttachToWindow()
onMeasure()
onLayout()
onDraw()
onSizeChanged()
onSaveInstanceState() и onRestoreInstanceState()
onTouchEvent()
5. Обновление View.
invalidate()
requestLayout()
6. Атрибуты для Custom View.
7. Дополнительные материалы для изучения.

Читать дальше
Всего голосов 7: ↑6 и ↓1 +5
Комментарии 6

Вопросы и ответы для собеседования по Kotlin. Часть 4

Уровень сложности Средний
Время на прочтение 18 мин
Количество просмотров 26K
Читать далее
Всего голосов 7: ↑6 и ↓1 +5
Комментарии 4

Попытка получения исходников ядра от производителей, и последующее хамство от них

Уровень сложности Простой
Время на прочтение 4 мин
Количество просмотров 66K

Нарушение лицензии и отказ технической поддержки предоставить исходники — одни из множества неприятностей. Особенно если речь идёт о довольно крупных компаниях, в моём случае — Digma. В этой статье рассказываю, как я пытался получить исходный код ядра Linux, который используется в планшете Digma Plane 4G 1538E.

Читать далее
Всего голосов 487: ↑473 и ↓14 +459
Комментарии 422

Простой последовательный интерфейс «SINT» для связи двух ПЛИС, и не только

Уровень сложности Простой
Время на прочтение 6 мин
Количество просмотров 4K

Интереса ради сделал максимально простенький комплект модулей: приемники, передатчики и те и другие с разным набором плюшек, реализующих простой самобытный протокол связи с манчестерским кодированием для связи 2х и более ПЛИС.

Читать далее
Всего голосов 18: ↑18 и ↓0 +18
Комментарии 18

Виджеты на Android. Редкая фича, в которой придется разобраться

Время на прочтение 11 мин
Количество просмотров 29K
Привет, Хабр! Меня зовут Александр Хакимов, я android-разработчик в компании FINCH.

У вас бывало такое, что ваш дизайн был под iOS, а вам приходится адаптировать его под android? Если да, то часто ли ваши дизайнеры используют виджеты? К сожалению, виджет — редкий кейс для многих разработчиков, потому что с ним редко кто работает,

В статье я подробно расскажу как создать виджет, на что стоит обратить внимание и поделюсь своим кейсом.
Читать дальше →
Всего голосов 8: ↑8 и ↓0 +8
Комментарии 1

Кроссплатформенный клиент для ChatGPT

Уровень сложности Простой
Время на прочтение 1 мин
Количество просмотров 17K

Занимался обёрткой для OpenAI для Делфи и вдобавок сделал клиент.

Прошу заранее прощения, я хотел сделать пост нового типа, но с телефона не увидел, как это можно сделать.

Читать далее
Всего голосов 35: ↑33 и ↓2 +31
Комментарии 25

Main Loop (Главный цикл) в Android Часть 2. Android SDK

Время на прочтение 16 мин
Количество просмотров 17K

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

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

Это вторая часть цикла статей по разбору главного цикла в Android. В первой части мы разобрались с тем, что такое главный цикл и как он работает. В этой же части давайте разберемся как Main Loop работает в Android SDK. Разбираться будем в контексте Android SDK версии 30.

Читать далее
Всего голосов 17: ↑17 и ↓0 +17
Комментарии 1

P2P-форум с нуля | от NAT hole punching до автономной и полностью децентрализованной сети

Уровень сложности Средний
Время на прочтение 32 мин
Количество просмотров 14K

Многие, кто работают с интернет-сокетами в любой сфере IT, задаются вопросом о пробросе портов. Связано это с тем, что практически во всех домашних/общественных/корпоративных роутерах реализован механизм NAT, который перекрывает прямой доступ к устройствам в этих подсетях извне, общаясь с внешним интернетом от их имени.

У NAT есть киллер-фича — он представляет собой идеальный фаервол: атаки извне не могут использовать порты локальных устройств напрямую, следовательно, это решает проблему атак на сетевую уязвимость ОС.

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

Разнообразные сервисы работают на серверах, т. е. имеют некую ноду, которая имеет белый адрес в интернете (находится не за NAT). Все пользователи же подключаются к этому единому серверу. В таком случае проблема «невидимости» пользователей отпадает. Однако чисто серверное взаимодействие ограничивает скорость участников, так ещё и не отказоустойчиво. Если сервер упадёт, то все клиенты отправятся за ним (считаем, что это одноклеточный сервис не на всяких там kubernetes).

Как вы уже могли были догадаться, даже в реалиях, когда практически все устройства находятся за NATами, P2P реален. Когда вы являетесь участником bittorrent-раздачи, трансфер больших данных осуществляется напрямую. Как это работает? Поиск ответа на этот вопрос завёл меня в глубокие дебри, разгребая которые я написал оверлейную p2p-сеть, где трекерами являются сами её участники. Интересно? Тогда добро пожаловать под кат.
Читать дальше →
Всего голосов 76: ↑76 и ↓0 +76
Комментарии 25

Более безопасный способ сбора потоков данных из пользовательских интерфейсов Android

Время на прочтение 9 мин
Количество просмотров 14K

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

В этой статье вы узнаете, как API Lifecycle.repeatOnLifecycle и Flow.flowWithLifecycle защищают вас от пустой траты ресурсов и почему их лучше использовать по умолчанию для сбора потоков данных из пользовательского интерфейса.

Читать далее
Всего голосов 3: ↑3 и ↓0 +3
Комментарии 1

Кащеева смерть — защищаем свои пароли с помощью аппаратного хранилища ключей Android

Время на прочтение 3 мин
Количество просмотров 5.3K

Несколько лет назад меня начала посещать мысль, что менеджеры паролей всё-таки «для честных людей». Как раз все встречные и поперечные стали заявлять, что у них теперь сквозное шифрование… И настали типа спокойные и безопасные времена (ну если не считать миллиардов, которые крадут с криптобирж каждый второй день, прослушки всех этих чатов со сквозным шифрованием, слива баз паролей, взлома LastPass…)

Короче, решил я замутить что-то своё, чтоб не хранить все свои доступы удобно (не)доступными в одном файле KeePass, а то ведь мало ли что. Просто так, из принципа. Биткойнов не держу.

Шли годы…

Читать далее
Всего голосов 15: ↑14 и ↓1 +13
Комментарии 3

Передаем Android логи через интернет с Timber и Node.JS

Время на прочтение 4 мин
Количество просмотров 9.7K
Многабукаф, не читал: я напилил очень простую реализацию удаленного логгинга. Может быть полезно, когда у вашего клиента (или, например, тестировщика) выскакивает непонятная ошибка, а вам хочется видеть сиюсекундно, что происходит в приложении. Заинтересованных прошу ниже.



Читать дальше →
Всего голосов 3: ↑3 и ↓0 +3
Комментарии 5

Как сделать простой UPS для NAS

Уровень сложности Средний
Время на прочтение 11 мин
Количество просмотров 21K

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

Рассмотрим вариант дизайна такого UPS, который можно разместить внутри корпуса для тех NAS, которые для работы требуют только одного напряжения питания 12В.

Всё ещё хочешь собрать UPS?
Всего голосов 82: ↑81 и ↓1 +80
Комментарии 89

STM32H7 — настройка тактирования без HAL

Время на прочтение 4 мин
Количество просмотров 19K
Не так давно компания STM выпустила на рынок очень мощную, по меркам микроконтроллеров, линейку кристаллов STM32H7. Что меня в ней привлекло:

  • повышенная частота ядра до 400 МГц
  • увеличенный объем ОЗУ, до 1 МБ
  • 16 разрядный АЦП
  • pin-to-pin совместимость с серий F7

Отлично подумал я, запаял на плату кристалл STM32H743IIT6 вместо STM32F746IGT6 и начал новый проект в SW4STM32.
И вот что из этого получилось.
Всего голосов 26: ↑20 и ↓6 +14
Комментарии 54

В мире сыпучего металла

Время на прочтение 12 мин
Количество просмотров 16K

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

Читать дальше →
Всего голосов 56: ↑56 и ↓0 +56
Комментарии 21

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность

Специализация

Mobile Application Developer
Senior
Git
English
Linux