Как стать автором
Обновить
3
0
Захар Золотарев @Vilkaman

Android dev

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

Хакаем CAN шину авто. Мобильное приложение вместо панели приборов

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

Я продолжаю изучать CAN шину авто. В предыдущих статьях я голосом открывал окна в машине и собирал виртуальную панель приборов на RPi. Теперь я разрабатываю мобильное приложение VAG Virtual Cockpit, которое должно полностью заменить приборную панель любой модели VW/Audi/Skoda/Seat. Работает оно так: телефон подключается к ELM327 адаптеру по Wi-Fi или Bluetooth и отправляет диагностические запросы в CAN шину, в ответ получает информацию о датчиках.

По ходу разработки мобильного приложения пришлось узнать, что разные электронные блоки управления (двигателя, трансмиссии, приборной панели и др.) подключенные к CAN шине могут использовать разные протоколы для диагностики, а именно UDS и KWP2000 в обертке из VW Transport Protocol 2.0.

Как телефон взаимодействует с автомобилем
Всего голосов 109: ↑109 и ↓0+109
Комментарии123

Любить всех человеков — лучшие доклады с TeamLeadConf за 5 минут

Время на прочтение12 мин
Количество просмотров11K
Недавно мы с коллегами были на TeamLeadConf — это конференция об управлении, мотивации, найме, процессах и других штуках, полезных тимлидам.

Обычно после конференций мы делимся впечатлениями с теми, кто на конференцию не пошел. Самый популярный формат — список топовых докладов с краткими заметками, который рассылается в Слаке и по почте.

В этот раз я написала такой обзор для коллег и подумала: а почему бы не опубликовать эти заметки для всех? Так текст на Вики переродился в эту статью.


Читать дальше →
Всего голосов 43: ↑42 и ↓1+41
Комментарии2

Анимируем RecyclerView легко без перехода на ViewPager2

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


Когда мы работаем с коллекциями и их отображением, перед многими из нас часто
встает выбор между ViewPager (теперь ещё и ViewPager2) и RecyclerView. Эти
компоненты похожи друг на друга по области применения, но серьезно отличаются
интерфейсом и реализацией. Начиная с support library 24.2.0 границы между
данными компонентами стали ещё более размытыми, т.к. появился вспомогательный
класс SnapHelper для автоматического доведения сhildView до
определенного положения на экране, и без устаревшего ViewPager стало проще
обходиться. С недавним релизом ViewPager2, казалось бы, о старом ViewPager и о
практиках его имитации вообще можно забыть (ViewPager2 — это по сути
RecyclerView с дополнительными вспомогательными классами, он позволяет
практически идентично повторить поведение ViewPager и сохраняет совместимость со
старым api).


Так ли это на самом деле? Лично для меня всё оказалось не так просто. Во-первых,
в классическом RecyclerView отсутствует интерфейс PageTransformer для
анимирования сhildView в зависимости от позиции (далее по тексту используется
понятие «позиционная анимация»). Во-вторых, неприятными сюрпризами долгожданного
ViewPager2 оказались модификатор класса final, который ставит крест на
переопределении метода onInterceptTouchEvent (компонент мало пригоден для
вложения горизонтальных списков в вертикальные), и приватность поля
recyclerView.


Итак, столкнувшись в очередной раз с трудностями позиционной анимации при
отображении коллекций с помощью RecyclerView и поковырявшись в ViewPager2 и
MotionLayout, я подумал, что позаимствовать принцип работы
ViewPager.PageTransformer для классической реализации RecyclerView а-ля
ViewPager2 не самая плохая идея.

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

Сон — это главный ресурс для мозга программиста

Время на прочтение12 мин
Количество просмотров113K
Можете использовать этот пост как аргумент при переговорах.

image

Вы, наверное, уже слышали эту продуманную фразу, которую произнес Рид Хастингс, CEO компании Netflix, говоря о развитии компании: «Наш главный конкурент – это сон». Он логично рассуждает, что с точки зрения прибыльности его бизнеса, сон, занимающий треть всего времени – огромный ресурс, за который можно побороться. Но если мы дорожим своим здоровьем, красотой и жизнью, то он не должен получить от нас ни минуты от нашего сна. Мы всё еще настолько недооцениваем сон, что этот факт удивителен сам по себе. Почему мы считаем сон чем-то, чем можно жертвовать, что можно сжимать, над чем можно издеваться? Даже простейшее популярное представление о биологии говорит нам, что природа не стала бы требовать от нас трети жизни на что-то неважное.

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

Между тем, мы действительно не знаем, почему мы спим. Да, у нас есть объяснения – насчет консолидации памяти, обучения, восстановления сил и прочее. Сам вопрос остается открытым и задается вновь и вновь, потому что мы подозреваем, что это не все, что мы знаем про сон.

Все животные спят, при условии, что они живут хотя бы несколько дней. Есть исключения, но они могут быть чисто методологическими: еще до недавнего времени ученым не хватало данных назвать сном периоды отключения у некоторых животных (насекомых).
Читать дальше →
Всего голосов 119: ↑111 и ↓8+103
Комментарии265

In-App Updates: ускоряем процесс обновления приложения на Android

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


Среди многообразия инструментов, анонсированных на Android Dev Summit, особое внимание хочется уделить механизму обновления приложения In-App Updates (IAUs), который помогает разработчикам ускорить добавление новых фич, баг-фиксов и улучшений производительности. Поскольку эта функциональность была опубликована после Google I/O 2019, в этой статье я подробно расскажу об IAUs, опишу рекомендованные схемы реализации и приведу некоторые примеры кода. Также я расскажу о нашем опыте интеграции IAUs в Pandao, приложение для заказа товаров из Китая.
Читать дальше →
Всего голосов 27: ↑26 и ↓1+25
Комментарии6

Как и зачем читать даташиты, если микроконтроллеры – ваше хобби

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


Микроэлектроника – модное увлечение последних лет благодаря волшебному Arduino. Но вот беда: при должном интересе перерасти DigitalWrite() получается быстро, а что делать дальше – не совсем ясно. Разработчики Arduino приложили немало усилий для снижения порога вхождения в свою экосистему, но за ее пределами по-прежнему колышется темный лес суровой схемотехники, малодоступный любителю.


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


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

Читать дальше →
Всего голосов 34: ↑32 и ↓2+30
Комментарии29

Разработка GLSL шейдеров на Kotlin

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


Всем привет!

Наша компания занимается разработкой онлайн игр и сейчас мы работаем над мобильной версией нашего основного проекта. В этой статье хотим поделиться опытом разработки GLSL шейдеров для Android проекта с примерами и исходниками.
Читать дальше →
Всего голосов 28: ↑25 и ↓3+22
Комментарии6

ИТОГ 3-х месяцев: Альтернатива платному отключению рекламы в бесплатном приложении Android

Время на прочтение3 мин
Количество просмотров22K
Здравствуй, Дорогой читатель ХабраХабра! В данной мини-статье я хочу рассказать/показать итог моей альтернативы платному отключению рекламы в бесплатном приложении Android. Всем, кому интересно добро пожаловать под кат!
Читать дальше →
Всего голосов 36: ↑32 и ↓4+28
Комментарии99

Учимся программировать под Андроид

Время на прочтение2 мин
Количество просмотров74K
Привет Хабр! Предлагаю вашему вниманию свободный перевод статьи «How To Learn Android Development» от Amit Shekhar.

image

Как изучить разработку приложений под Андроид?

Я видел много вопросов о том, как начать изучать программирование под Андроид и стать успешным разработчиком. Здесь я попытался охватить большинство важных аспектов в Android Development.
Читать дальше →
Всего голосов 20: ↑18 и ↓2+16
Комментарии5

Легкая работа со списками — RendererRecyclerViewAdapter

Время на прочтение5 мин
Количество просмотров14K
В последнее время мне часто приходилось переписывать много адаптеров для списков, и каждый раз я брался за голову — в адаптере находилась бизнес-логика, сетевые запросы и роутинг приложения и многое другое. Все это очень сложно поддавалось изменениям.

Поначалу я как обычно выносил все лишнее из адаптеров в презентеры, фрагменты и другие классы. В итоге я пришел к мнению, почему бы не:

  1. «обезопасить» свои адаптеры от внесения туда лишней логики;
  2. переиспользовать биндинги ячеек;
  3. добиться какой-то универсальности для работы с несколькими типами ячеек.

Если Вам знакомы такие проблемы, то добро пожаловать под кат.
Читать дальше →
Всего голосов 12: ↑12 и ↓0+12
Комментарии10

Воронежец заключил с банком договор, внеся свои правки, и собирается отсудить 24 миллиона рублей

Время на прочтение8 мин
Количество просмотров474K
Наверное, нет человека, которого бы не раздражало, что самые важные пункты в договорах всегда пишутся «мелким шрифтом».

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

42-летний житель Воронежа нашел остроумный способ обратить эту особенность в свою пользу и теперь, пользуясь невнимательностью банкиров, собирается отсудить у них 24 миллиона рублей.
Читать дальше →
Всего голосов 803: ↑778 и ↓25+753
Комментарии862

Как не тратить время на непрерывную интеграцию

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

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

Но одно дело, когда у тебя единственный продукт, где можно сделать кое-как, а другое — если каждый месяц появляется новый, с особыми требованиями, большой командой, для которого надо быстро получить CI/CD.

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

Я тоже так думал.
Всего голосов 24: ↑20 и ↓4+16
Комментарии0

Основные инструменты планирования и способы внедрения их в жизнь

Время на прочтение8 мин
Количество просмотров78K
Я прочитал множество книг по планированию/тайм-менеджменту и опробовал множество приложений по внедрению этих техник в жизнь (список в конце). И на общее обозрение выношу вытащенные из них инструменты планирования. Сама суть тайм-менеджмента сводится к тому, чтобы взять список своих дел, что-то с ними сделать и после получить прирост по времени (моё мнение).

image

Под инструментом тайм-менеджмента я подразумеваю некие действия со своими задачами, которые приводят к увеличение свободного времени или сокращению времени на задачу (что суть есть одно и тоже = высвобождение времени).
Читать дальше →
Всего голосов 23: ↑18 и ↓5+13
Комментарии32

«Во все тяжкие» или суровые реальности инди разработки Dark Forester

Время на прочтение11 мин
Количество просмотров34K
image

Я хочу сразу сказать, что в первой части будет мало о самой разработке, а больше именно истории, трудности, социальные аспекты, проблемы с которыми может столкнутся инди разработчик, а также я не могу не упомянуть Москву, покер и спорт — без которых эта история не была бы полной. Итак, прежде, чем я начну с легенды, для того чтобы немного заинтересовать читателя, за время разработки с 2013 года по 2015 год я потолстел на 22кг и превратился из спортивного парня в человека, который с трудом узнавал себя в зеркале, я выпивал в год около тысячи банок ред булла, все началось с одной-двух, сейчас уже бывает редко, чтобы я пил меньше трех. Я спал по пять, а то и четыре часа. В течении двух лет я вставал в будние дни в пять утра и ехал на работу в другой город на электричке, чтобы вечером оставалось время поработать над игрой. Я по глупости отказался от предложения в 250.000 евро на разработку игры. Вероятно итогом такой жизни стало тяжелое воспаление легких, суд с бывшим работодателем, а также серьезные проблемы со спиной из-за постоянно сидячего образа жизни. Ах ну и если этого мало, то я бросил университет и сам уволился с работы!

Что ж поехали…
Читать дальше →
Всего голосов 82: ↑79 и ↓3+76
Комментарии92

Пьеса «Технический долг»

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

Пьеса «Технический долг» в 9 частях. Ставится и показывается впервые.


Часть 0: В пустой комнате стоят Разработчик (Р) и Менеджер (М).

М: Я собрал нас тут, чтобы рассказать пренепреятнейшее известие: система КРОТОПОН, которая работает на продакшане заглючила и мы потеряли кучу денег. Кроме того нет никого, кто знает как она работает. Поэтому (с придыханием) наш СЕО дал мне священную миссию — написать новую систему. Как ты думаешь, за два месяца справишься?

Р: А что делать-то нужно?

М: Да там немного, всего лишь пару десятков систем связать и рюшечки навесить.

Р: Эй, да это же на год работы! И вообще требования будут?

М: (В телефон) Да, конечно, за пол года справимся. (Разработчику) Ну ты тут пока начинай, а я тебе требования потом донесу.

Менеджер уходит.

Р: Но тут же…

Разработчик тяжело вздыхает, затаскивает в комнату инструменты и начинает что-то сооружать.
Читать дальше →
Всего голосов 201: ↑195 и ↓6+189
Комментарии196

Мобильный опыт Яндекса в трех видеокурсах: дизайн, разработка, интерфейсы

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

В прошлом году Яндекс провел образовательный экспериментальный проект, который получил название «Мобилизация». Наша цель была в том, чтобы участники поработали в настоящей команде и создали настоящий продукт — причём продукт мобильный. «Мобилизация» объединила Школу мобильной разработки, Школу менеджеров, Школу мобильного дизайна и Школу разработки интерфейсов.


image


Мы пригласили 126 студентов из 25 городов; 91 участник успешно завершил программу. Первый этап состоял из лекций, второй — из той самой командной работы. Обычно студента окружают люди той же специализации, что и он сам: менеджеры учатся вместе с менеджерами, дизайнеры — с дизайнерами и т. д. Но в реальности вам нужно хотя бы по одному представителю нескольких профессий. В каждую команду вошли студенты разных школ: дизайнер, менеджер и один-два разработчика.


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


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

Что общего у мобильного QA и осьминога

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


Привет! Я Катя, и я – трудоголик тестировщик самого популярного приложения для новых знакомств.

Итак, раннее утро, вы – мобильный QA. Вы приходите на работу, завариваете крепкий кофе и хотите взять пару мобильных устройств для тестирования новой фичи, осознавая, какие муки выбора вам предстоят. Что это будут за устройства?

Рано или поздно каждый мобильный тестировщик задаётся вопросом, на каком количестве устройств тестировать новый функционал, чтобы поймать максимальное количество девайсозависимых багов, потратив минимум времени. Автотесты ещё не написаны, перед вами абсолютно новые фичи. И если с iOS есть хоть какая-то ясность, и список устройств ограничен, то Android «расплодился» в полнейший ад. Вы удивитесь, но для счастья нужно всего три–четыре Android-устройства. Я хочу рассказать, как с точки зрения опытного тестировщика их выбрать.
Читать дальше →
Всего голосов 75: ↑73 и ↓2+71
Комментарии29

Обзор алгоритмов кластеризации данных

Время на прочтение10 мин
Количество просмотров431K
Приветствую!

В своей дипломной работе я проводил обзор и сравнительный анализ алгоритмов кластеризации данных. Подумал, что уже собранный и проработанный материал может оказаться кому-то интересен и полезен.
О том, что такое кластеризация, рассказал sashaeve в статье «Кластеризация: алгоритмы k-means и c-means». Я частично повторю слова Александра, частично дополню. Также в конце этой статьи интересующиеся могут почитать материалы по ссылкам в списке литературы.

Так же я постарался привести сухой «дипломный» стиль изложения к более публицистическому.
Читать дальше →
Всего голосов 82: ↑78 и ↓4+74
Комментарии41

Иммиграция вместе с Крымом в Россию

Время на прочтение4 мин
Количество просмотров31K
Увлекшись чтением иммиграций на Хабре, решил рассказать историю одного весьма неординарного переезда из одной страны в другую.

Откуда — куда


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

image
Читать дальше →
Всего голосов 117: ↑68 и ↓49+19
Комментарии93

Итоги Rambler.Android #4

Время на прочтение2 мин
Количество просмотров5.7K
image

Совсем недавно, 26 октября, мы провели открытый митап Rambler.Android #4. Это наш первый Android-митап после долгого перерыва. И мы с уверенностью можем заявить, что возвращение состоялось.
Читать дальше →
Всего голосов 13: ↑12 и ↓1+11
Комментарии3

Информация

В рейтинге
Не участвует
Откуда
Донецк, Донецкая обл., Украина
Дата рождения
Зарегистрирован
Активность