Как стать автором
Обновить
35
0
Александр Наумов @firexel

Пользователь

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

Лицензия на вождение болида, или почему приложения должны быть Single-Activity

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

image


На AppsConf 2018, которая прошла 8-9 октября, я выступил с докладом про создание андроид-приложений целиком в одном Activity. Хотя тема известная, существует много предубеждений относительно такого выбора — переполненный зал и количество вопросов после выступления тому подтверждение. Чтобы не ждать видеозаписи, я решил сделать статью с расшифровкой выступления.



О чем я расскажу


  1. Почему и зачем надо переходить на Single-Activity
  2. Универсальный подход для решения задач, которые вы привыкли решать на нескольких Activity
  3. Примеры стандартных бизнес задач
  4. Узкие места, где обычно подпирают код, а не делают все честно
Читать дальше →
Всего голосов 43: ↑40 и ↓3+37
Комментарии81

Платформа ARM и брокер MQTT, как современная основа решений для Интернета вещей

Время на прочтение11 мин
Количество просмотров39K
Протокол MQTT, на текущее время, завоевал свою популярность и стал стандартом де факто в проектах, направленных на создание решений для Интернета вещей (IoT). Конечно, Интернет вещей – это определенная абстракция или, правильнее, концепция построения распределенных сетей устройств или машин. При этом, частные задачи взаимодействия машин Machine-to-Machine (M2M), уже сегодня эффективно решаются, включая и уровень подключения этих систем к Интернет, как для создания промышленных систем автоматики, так, например, и для построения систем «умного дома». Очевидно, что для критически важных систем требуется наличие локального арбитра или брокера и устройств, позволяющих отработать решение ситуации не зависимо от качества Интернет-подключения, а также в случае полного разрыва связи.

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


ClusterHAT review: Raspberry Pi cluster computer kit. Photo: MagPi magazine
Всего голосов 20: ↑18 и ↓2+16
Комментарии11

Межпланетная программа SpaceX: подробный разбор ЖРД «Raptor»

Время на прочтение18 мин
Количество просмотров37K
Итак, на 2017 год компания SpaceX, пожалуй, ближе всех к отправке на Марс чего либо, отличающегося от зонда или марсохода. Более того, в планы компании входят вполне себе массовые пилотируемые экспедиции на Красную планету, которые будут обеспечивать долговременное присутствие человека на четвёртой от Солнца планете. Кроме того, SpaceX рассматривает проведение исследовательских миссий в тех частях Солнечной системы, мысли о которых не посещали даже головы самых отчаянных романтиков ракетной индустрии. Но какие технологии стоят за данными планами? Давайте разбираться. А начнём мы с рассмотрения ракетного двигателя, который должен обеспечить выполнение этих столь амбициозных планов — ЖРД «Raptor».


Стендовые испытания ЖРД «Raptor», 25 сентября 2016 года. МакГрегор, Техас.
Всего голосов 38: ↑38 и ↓0+38
Комментарии127

Подборка русских и зарубежных фантастических книг за год

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


Почти два года назад мы делали подборку любопытных фантастических книг, вышедших в 2014 году. И в начале этого года мы решили поддержать это начинание — предлагаем вам одни из самых интересных, по мнению читателей, фантастических произведений, вышедших в 2016-м (как на русском, так и на английском).
Читать дальше →
Всего голосов 28: ↑24 и ↓4+20
Комментарии122

Kotlin: без Best Practices и жизнь не та. Часть 1

Время на прочтение5 мин
Количество просмотров23K
Привет, Хабр! Данная статья о наболевших проблемах при программировании на Kotlin. В частности, затрону несколько тем, вызывающих больше всего неоднозначности – использование it в лямбда-выражениях, злоупотребление функциями из файла Standard.kt и краткость написания vs. читаемость кода.
Читать дальше →
Всего голосов 30: ↑28 и ↓2+26
Комментарии30

Замечания о реактивном программировании. Технологический ландшафт

Время на прочтение10 мин
Количество просмотров10K
Здравствуйте, дорогие читатели! Сегодня предлагаем вашему вниманию обещанную статью с обзором возможностей реактивного программирования. Приятного и плодотворного чтения.
Читать дальше →
Всего голосов 9: ↑5 и ↓4+1
Комментарии0

2D магия в деталях. Часть первая. Свет

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

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

Читать дальше →
Всего голосов 63: ↑62 и ↓1+61
Комментарии25

Функторы (глава книги «Теория категорий для программистов»)

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

Это седьмая статья из цикла «Теория категорий для программистов». Предыдущие статьи уже публиковались на Хабре:



Функторы


За понятием функтора стоит очень простая, но мощная идея (как бы заезжено это ни прозвучало). Просто теория категорий полна простых и мощных идей. Функтор есть отображение между категориями. Пусть даны две категории C и D, а функтор F отображает объекты из C в объекты из D — это функция над объектами. Если a — это объект из C, то будем обозначать его образ из D как F a (без скобок). Но ведь категория — это не только объекты, но еще и соединяющие их морфизмы. Функтор также отображает и морфизмы — это функция над морфизмами. Но морфизмы отображаются не как попало, а так, чтобы сохранять связи. А именно, если морфизм f из C связывает объект a с объектом b,


f :: a -> b

то образ f в D, F f, связывает образ a с образом b:


F f :: F a -> F b

(Надеемся, что такая смесь математических обозначений и синтаксиса Haskell понятна читателю. Мы не будем писать скобки, применяя функторы к объектам или морфизмам.)


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

Создаем новую OS. Действительно новую, реально операционную, и правда – систему

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

О создании новой операционной системы в последнее время говорят немало, особенно в России. В сумме размер всех публикаций по данной теме наверняка превышает размеры исходного кода любой операционной системы. Так что остается только одна проблема – от этих разговоров никаких новых OS не появляется. Всё, что предъявляется публике (и на что тратятся бюджетные деньги), на поверку оказывается кастомизированными сборками OS семейства Linux, а значит, не содержит ничего принципиально нового. Но, если о чем-то не говорят, это не значит, что его не существует.
В этой статье – проект принципиально новой OS, созданный в нерабочее время одним из ведущих сотрудников (Principal Engineer) российского подразделения Intel.
Читать дальше →
Всего голосов 88: ↑85 и ↓3+82
Комментарии158

Прощайте, считывающие головки! Или как работает флэш-память

Время на прочтение6 мин
Количество просмотров25K
Привет, Geektimes! Мы часто рассказываем о преимуществах SSD, развенчиваем мифы о твердотельных накопителях, вот недавно даже на производстве побывали. А как же, собственно, работает флэш-память? В чем отличие между разными типами NAND? Всех желающих разобраться в этих вопросах милости просим под кат.

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

Метрика рекомендательной системы imhonet.ru

Время на прочтение12 мин
Количество просмотров18K
Цель этого рассказа — поделиться способами решения проблемы, над которой работали авторы при разработке рекомендательного сервиса imhonet.ru. Поскольку проблема не является чисто научно-технической, а скорее находится на стыке технологий и бизнеса и может быть полезна более широкой аудитории, чем обычный технический отчёт, мы выбрали именно такой формат представления нашей работы — попытались написать рассказ настолько простым языком, насколько это возможно. Первая часть рассказа посвящена довольно подробному обоснованию того, как правильно измерять качество работы алгоритмов рекомендательной системы. А в конце иллюстративно перечислено несколько примеров, в которых мы проводили эти измерения для решения конкретных задач.


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

[Москва] Встреча с разработчиками Kotlin

Время на прочтение1 мин
Количество просмотров7.3K
Привет!

В четверг, 17 марта (да-да, это послезавтра!), в 19:00 в офисе компании КРОК пройдет встреча JUG.msk c разработчиками языка Kotlin Андреем Бреславом и Дмитрием Жемеровым. Андрей — вообще самый главный человек в Kotlin, возглавляет разработку языка, а Дмитрий — возглавляет разработку плагина к IntelliJ IDEA. Так что будет что обсудить, и ответы на вопросы будут из первых уст!

Тема встречи — недавний и долгожданный релиз языка Kotlin. И поэтому встреча тоже называется очень просто:

image

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

Справочник по синхронизаторам java.util.concurrent.*

Время на прочтение14 мин
Количество просмотров269K
Целью данной публикации не является полный анализ синхронизаторов из пакета java.util.concurrent. Пишу её, прежде всего, как справочник, который облегчит вхождение в тему и покажет возможности практического применения классов для синхронизации потоков (далее поток = thread).

В java.util.concurrent много различных классов, которые по функционалу можно поделить на группы: Concurrent Collections, Executors, Atomics и т.д. Одной из этих групп будет Synchronizers (синхронизаторы).



Синхронизаторы – вспомогательные утилиты для синхронизации потоков, которые дают возможность разработчику регулировать и/или ограничивать работу потоков и предоставляют более высокий уровень абстракции, чем основные примитивы языка (мониторы).
Читать дальше
Всего голосов 45: ↑41 и ↓4+37
Комментарии15

Электродвигатели: какие они бывают

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


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

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

Каждый электродвигатель обладает некоторыми отличительными свойствами, которые обуславливают его область применения, в которой он наиболее выгоден. Синхронные, асинхронные, постоянного тока, коллекторные, бесколлекторные, вентильно-индукторные, шаговые… Почему бы, как в случае с двигателями внутреннего сгорания, не изобрести пару типов, довести их до совершенства и ставить их и только их во все применения? Давайте пройдемся по всем типам электродвигателей, а в конце обсудим, зачем же их столько и какой двигатель «самый лучший».
Читать дальше →
Всего голосов 101: ↑101 и ↓0+101
Комментарии179

Почему сложно программировать UI и как выглядит идеальный фреймворк

Время на прочтение1 мин
Количество просмотров22K
Привет, Хабр!

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

Со-основатель, технический директор и главный учитель нашего образовательного проекта Хекслет Кирилл Мокевнин рассказывает про сложность программирования интерфейсов и каким образом можно совладать со сложностью если вы знакомы с одной базовой концепцией информатики. Заодно расскажет и покажет идеальный JS-фреймворк для программирования UI.

Читать дальше →
Всего голосов 28: ↑18 и ↓10+8
Комментарии20

Сбербанк делится опытом создания приложения в Material Design: стили и темы

Время на прочтение20 мин
Количество просмотров52K
Привет, Хабрахабр! Не так давно мы подводили итоги конкурса по Material Design, и в комментариях нас просили показать реально популярные и красивые Material-приложения. Что же, встречайте: «Сбербанк Онлайн» в новом, современном интерфейсе. Про процесс создания приложения интереснее узнать от самих создателей.

Мы передаём слово команде разработчиков Android-приложения Сбербанка, чтобы вы услышали об опыте создания такой сложной штуки, как UI мобильного банк-клиента, из первых уст. Большую часть поста написал freeuser, так что спасибо говорите ему. ;)
Читать дальше →
Всего голосов 39: ↑31 и ↓8+23
Комментарии57

Подальше от обыденной реальности: фантастические романы, которые стоит прочитать

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

Фантастика как жанр заставляет читателей и писателей выйти за пределы разумного, дать волю своему воображению и отправиться в неизведанные миры. За это мы и любим этот жанр. RoboHunter этой осенью предлагает с головой погрузиться в мир научной фантастики.
Читать дальше →
Всего голосов 63: ↑59 и ↓4+55
Комментарии273

Akka, акторы и реактивное программирование

Время на прочтение10 мин
Количество просмотров64K
Здравствуйте, уважаемые читатели.

Сегодня мы хотели поговорить с вами на тему «все новое — это хорошо забытое старое» и вспомнить об акторах, описанных Карлом Хьюиттом еще в начале 70-х. А все дело в том, что недавно вышла вот такая книга:



Она довольно объемная — в переводе должна получиться более 500 страниц.

Несмотря на подчеркнутую элитарность книги (Akka и Scala), ее автор Вон Вернон (крупнейший специалист по DDD) уверен, что архитектурные паттерны, описанные в этой работе, вполне реализуемы на .NET и C#, о чем рассказывает в приложении. Мы же размещаем под катом перевод статьи, автор которой допускает перенос акторной парадигмы на язык Java. Поскольку рейтинг книги на Amazon стабильно высок, а тема универсальна, просим поделиться вашими мнениями как о ней, так и об акторной архитектуре в принципе.
Читать дальше →
Всего голосов 14: ↑13 и ↓1+12
Комментарии23

LeakCanary — помощник в поиске утечек памяти

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

Никому не нравятся креши с OutOfMemoryError


Работая над Square Register, мы рисуем подпись клиента используя битмап-кеш. Поскольку этот битмап размером с экран устройства, у нас было очень много OutOfMemory крешей во время создания его.

image

Мы пробовали несколько подходов ни один из которых не решил проблему:
  • Использовали Bitmap.Config.ALPHA_8
  • Ловили OutOfMemoryError, вызывали сборку мусора и пробовали снова (подглядели в GCUtils),
  • Мы не рассматривали вариант с размещением битмапов вне кучи Java. К счастью Fresco еще не существовало,


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

6 ссылок о том, что Google знает о вас

Время на прочтение2 мин
Количество просмотров447K
Не желаете ли узнать о том, что Google знает о вас? Вот 6 ссылок, которые покажут вам некоторые данные, собранные гуглом.

1. Ваш профиль в Google

Google создаёт профиль с вашими основными данными – возраст, пол, интересы. Эти данные используются для показа релевантных объявлений. Вы можете просмотреть эту информацию здесь:

www.google.com/ads/preferences

(прим.перев. – в моём случае гугл не блещет информацией. Я не состою в Google+, а по посещённым мною сайтам гугл не смог определить мой пол, а возраст определил в 65+ лет).
Читать дальше →
Всего голосов 109: ↑102 и ↓7+95
Комментарии56

Информация

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