Pull to refresh
-6
Алексей@java3000

Администратор windows умеющий в программирование

Send message

The Art of Rx

Reading time8 min
Reach and readers19K
Проблема, друзья. Реактивщина везде, её слишком много и уже никому от неё не спрятаться. Мы с вами все умеем написать ASyncTask, Service или ContentProvider (я в это верю!). Все можем повернуть битмапу или сгонять на сервер за данными. Это все довольно очевидно. Но ещё МЫ ДУМАЕМ, что можем готовить реактивищну правильно. Это далеко не всегда так.

Что такое правильное реактивное программирование на Android?


image

– Добрый день. Расскажи в двух словах о себе. Где работаешь, чем занимаешься, когда начал продвигать реактивный подход?

— Привет. Меня зовут Матвей Мальков (на хабре lNevermore ). Я Android-разработчик уже, наверное, лет 5-6. Конкретно сейчас я занимаюсь Scala-разработкой в одном стартапе. Стартап находится в Москве и о нём я говорить особо много не могу. Но суть в том, что это будет такая комьюнити-платформа, наподобие Телеграма. И её я, собственно, пишу под Android на Scala.

Первый проект, который я полностью перевел на RxJava, у меня был в компании 2GIS. Архитектура, база, работа с сетью — всё. После этого начал активно продвигать фреймворк RxJava и реактивный подход в целом на конференциях. Сейчас пишу на Scala, где использую вовсю функциональный подход, а в свободное время интересуюсь новостями реактивного мира.

– Пользователи Хабрахабра наверняка в курсе концепции реактивного программирования. Расскажи про особенности этой парадигмы на Android и про реактивные потоки данных.

– В программировании под Андроид довольно много особенностей, связанных с реактивным программированием. Я как раз хотел бы сказать о том, что не все принципы реактивного программирования, о которых мы попозже подискутируем, хорошо ложатся на Андроид. Чтобы не быть голословным: есть такое понятие как масштабируемость, под которой обычно понимается масштабируемость на большое количество нод, то есть это какая-то серверная масштабируемость. В Андроиде же это всего лишь масштабируемость на треды, что не есть «настоящая маштабируемость». И она не даёт такого большого мощного импакта на систему в целом. Хотя, конечно, всё равно даёт, но по-другому.

Ещё одна особенность заключается в том, что очень много в Андроиде завязано на императивщину. То есть на мутабельность, на изменяемость данных, и конкретно из-за неё очень сложно всё это завернуть в реактивные потоки. Это приводит к тому, что приходится делать много хаков, что всё очень усложняет. Императивность Android заставляет большое количество разработчиков использовать такие вещи, как сабжекты, которые вообще-то были задуманы и сделаны для того, чтобы сращивать мир реактивный и мир императивный. Но по факту, на самом деле, все пользуются им для того, чтобы что-то легко завернуть в Observable, Это обычно происходит в ущерб архитектуре, особенно на длинной дистанции, на больших проектах. Получается мешанина из императивщины и абы как сделанной на ней реактивщины. А всё потому, что многим людям просто лень сделать правильно или они не знают, как именно правильно.

На самом деле, это в общем-то всё, потому что в правильной архитектуре под Андроид взаимодействие с сетью, кэширование и вообще вся общая бизнес-логика не должна быть завязана на какие-то андроидные части. Поэтому собственно это просто бизнес-логика, которая работает, как и в любых других проектах. Не только в андроидных.
Читать дальше →

«Спасательный круг» Intel: глава компании официально объявил о смене бизнес-модели

Reading time3 min
Reach and readers10K
image
Источник: informationweek.com

Генеральный директор Intel Брайан Крзанич изложил новую стратегию развития компании в своем послании. Специалисты компании решили, что необходимо отказаться от парадигмы, в рамках которой главным драйвером развития бизнеса были продажи ПК. По оценке IDC, в 2014 году глобальные продажи компьютеров упали на 2,1%, в 2015 году сокращение оценивается в 6,2%. Вместо этого CEO предлагает сосредоточиться на поставках решений для дата-центров и инфраструктуры интернета вещей.

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

Отдельное внимание Брайан Крзанич планирует уделить аналитическим системам и большим данным: «Мы повысим мощность и ценность аналитики за счет продолжающихся инноваций в области производительности, больших данных и способностей машин к обучению».
Читать дальше →

Как долететь до Альфы Центавра — технические подробности

Reading time12 min
Reach and readers34K
Не так давно Мильнер и Хокинг нашумели анонсом своего проекта Breakthrough Starshot. Проект стоит $100 млн, которые будут потрачены на исследование технической возможности полета до Альфы Центавра. Инженерная и исследовательская фаза продлятся некоторое количество лет, после чего разработка самой миссии полета к Альфе Центавра потребует бюджета крупнейшего на сегодня научного эксперимента.

Итак, что же известно на данный момент от разработчиков проекта?


Концепт системы, включая лазерный излучатель и световой парус

Проект Breakthrough Starshot, по словам авторов, — это попытка подойти к космическим путешествиям со стороны Кремниевой Долины.

Он предполагает постройку массива лазеров в высокогорных районах Земли, и создание специальных нанокрафтов — массива космических фемтоспутников, которые разгоняются излучением этих лазеров.
Читать дальше →

Смартофор для смомби: светофоры для тех, кто уткнулся в экран смартфона

Reading time2 min
Reach and readers9.7K
image

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

Идея реализации нового вида светофоров пришла к властям после трагического инцидента в Мюнхене. В марте этого года 15-летняя девочка, заткнув уши наушниками и уставившись в экран своего смартфона, переходила трамвайные пути и не заметила приближавшийся трамвай. В результате столкновения с трамваем она погибла. В самом Аугсбурге за последнее время также случилось два происшествия с трамваями,- правда, тогда пострадавшие отделались лёгкими ушибами.
Читать дальше →

Управляем вентиляцией с помощью детектора углекислого газа MT8057

Reading time3 min
Reach and readers25K


Многие пользователи популярного детектора углекислого газа (CO2) MT8057 задают нам вопросы о том, как реализовать с помощью данного детектора управление приточной или вытяжной вентиляцией. Просмотрев наш ассортимент, мы нашли устройство, с помощью которого и хотим предложить решение данной задачи.
Читать дальше →

Дайджест игровой разработки

Reading time3 min
Reach and readers12K
Хитрости и советы по текстурированию от Джонатана Флетчера, за и против процедурной генерации, создания эффекта параллакса в 2D игре и другие интересные материалы вы найдете в нашем дайджесте.


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

Рендеринг капли с прозрачностью и отражениями на OpenGL

Reading time7 min
Reach and readers21K

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


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

Factory Reset Protection: новый подход к защите персональных данных в Android

Reading time4 min
Reach and readers103K
Шестая версия самой массовой и популярной операционной системы в мире Android от Google помимо ряда различных улучшений, которые подробно осветили при её анонсе и запуске, содержит как минимум одну интересную, а главное полезную опцию безопасности, о которой не рассказали широко.


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

Взрывная волна в Unity3D (displacement shader)

Reading time3 min
Reach and readers31K
Мой телеграм канал: https://t.me/winc0de.
Всем привет, пишу небольшую 2D игру и параллельно хотел бы рассказывать о реализации некоторых вещей в Unity3D.
Программирование графики само по себе очень интересное занятие с безграничным количеством вариаций результата. В этой статье опишу реализацию искажения пространства от взрывной волны.

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

Покупка товаров из-за границы через посредников. Юридическая сторона вопроса

Reading time4 min
Reach and readers19K

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

Я решил провести анализ и посмотреть на четырех (выбранных произвольных образом) посредников, чтобы посмотреть что они в действительности из себя представляют и можно ли им доверять. Конечно же, желание возникло не просто так, а поведением одного из посредников — Shopotam'a.

К анализу

Персистентная ОС: ничто не блокируется

Reading time6 min
Reach and readers18K
Это — статья-вопрос. У меня нет идеального ответа на то, что здесь будет описано. Какой-то есть, но насколько он удачен — неочевидно.

Статья касается одной из концептуальных проблем ОС Фантом, ну или любой другой системы, в которой есть персистентная и «волатильная» составляющие.

Для понимания сути проблемы стоит прочесть одну из предыдущих статей — про персистентную оперативную память.

Краткая постановка проблемы: В силу того, что прикладная программа в ОС Фантом персистентна (не перезапускается при перезагрузке), а ядро — нет (перезапускается при перезагрузке и может быть изменено между запусками), в такой системе нельзя делать блокирующие системные вызовы. Обычным способом.
Читать дальше →

Гуру слов, проблемы с Unity3d, и счастливый финал в итоге

Reading time14 min
Reach and readers11K

Идея игры и ее особенности



Наверное, все играли в какие-то игры, где нужно составлять слова. Кто не знает, что такое кроссворды? А Города.? Еще популярная игра (не помню названия) — дается длинное слово (мне почему-то запомнилось "электрификация"), и из него составляются всевозможные слова ("электрик", "фикция") и т.д. В общем, таких игр есть множество — как и классических (настолки, листок и ручка), так и электронных.


Но нам же всегда мало, мы хотим больше и лучше, не так ли?


На Западе есть популярная настольная игра, где тоже нужно составлять слова. Называется Scrabble, здесь больше информации. Правила просты — на квадратном игровом поле изначально есть одно слово. Каждый игрок имеет определенные фишки с буквами. В свой ход он должен выложить одну фишку так, чтобы получилось новое слово (или несколько слов). Каждая буква имеет свою ценность (в баллах), поэтому некоторые слова более ценные, чем другие. Редкие буквы (например, "Ф") дают больше баллов.



Мой друг много игрался в Скрэббл, и у него возникла идея — а почему бы не изменить правила игры, чтобы она стала динамичней? Вкратце это звучит так — добавь одну любую букву и собери новое слово.


Сказано — сделано.


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

Кюветы Android, Часть 3: SDK и RxJava (Финал)

Reading time18 min
Reach and readers20K
Android SDK и «внезапности» — почти близнецы. Вы можете наизусть знать development.android.com, но при этом продолжать рвать на себе волосы при попытке сделать что-то покруче, чем форма-кнопка-прогрессбар.
Это заключительная, третья, часть из серии статей о Кюветах Android'а. На деле конечно их должно было быть десятка два, но я слишком скромный. На этот раз я наконец дорасказываю о неприятностях в SDK, с которыми мне довелось столкнуться, а так же затрону популярную нынче технологию ReactiveX.
В общем, Android SDK, RxJava, Кюветы — поехали!
image
Читать дальше →

Нативная реклама возвращается: Native Admob, RecyclerView и вкратце о правилах

Reading time6 min
Reach and readers4.3K
С 2015 года ситуация с Admob Native ads практически не изменилась, нативная реклама по прежнему находится в бета-релизе, с лимитированным доступом для издателей. В официальных доках появились новая редакция и некоторые разъяснения по поводу того, каким образом планируется эти самые Native ads внедрять. Мы, в свою очередь, также не сидели сложа руки, копили материал для очередной статьи, и, как только появилось свободное время, слегка расширили функционал библиотеки admobadapter . А именно, реализовали в ней поддержку прокручиваемой нативной рекламы для RecyclerView, так же как мы делали это в прошлой статье для ListView.
Читать дальше →

Cocos Creator

Reading time2 min
Reach and readers50K
Месяц назад китайцы зарелизили Cocos Creator. Что это такое? Это как Unity3d, только с 2-мя симками и телевизором. И бесплатно.

image

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

Сейчас я исправлю это недоразумение и кратко расскажу про Cocos Creator (если совсем кратко это надстройка над Cocos2d, повторяющая редактор Unity).

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

Солнечная энергия — огромный, неисчерпаемый и чистый ресурс

Reading time6 min
Reach and readers49K


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

8 причин использовать профессиональное решение для биллинга SaaS сервиса

Reading time3 min
Reach and readers5K
imageВ начале создания своего стартапа, команда разработчиков встает на сложный путь поиска и проверок гипотез, связанных с продуктом. В этих условиях, «бытовые» вопросы бизнеса откладываются на полку, «до первого клиента». Но, когда этот клиент появляется, гипотез становится еще больше. Вдобавок, весь процесс подогревается здоровой конкуренцией на рынке. В этих обстоятельствах, главным кажется только конкурентная способность продукта, а вопросы, связанные с монетизацией, команда пытается решиться по простому: «тяп-ляп и вот Вам счет на оплату». В принципе, в B2B секторе, так и можно жить до 50и акивных клиентов. Но часто, команды начинают спотыкаться еще до того момента, когда появляются ресурсы на отдельного человека в команду, который будет заниматься только биллингом.

Мы подготовили 8 преимуществ, которые получает SaaS бизнес, подключив готовое решение автоматизации биллинга.
Читать дальше →

Побег из Крипто Про. Режиссерская версия, СМЭВ-edition

Reading time11 min
Reach and readers72K

Эта статья посвящена тому, как перестать использовать Крипто Про и перейти на Bouncy Castle в девелоперском/тестовом окружении.
В начале статьи будет больше про СМЭВ и его клиент, в конце — больше про конвертирование ключей с готовой копипастой, чтобы можно было начать прямо сейчас.


Картинка для привлечения внимания:


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

Любимые административные грабли интернетчика

Reading time4 min
Reach and readers4.3K


Вторая серия, начинать читать можно тут.

Пару недель назад меня пригласили почитать что-то полезное на секции разработчиков на конференции Digital Оттепель в Нижнем Новогороде. Времени было очень мало и я накидал любимые организационные грабли, по которым скачут 90% интернет-компаний, которых мне доводилось консультировать. Конечно, есть шанс, что мне просто везло. Но я что-то мало верю в такое роковое везение на разные города и разные масштабы.

В итоге наковырял некоторую пачку, с которой и предлагаю поиграть в Капитана Очевидность
Читать дальше →

Пятничный геймдев: хорошие видео о том, как делать игры

Reading time2 min
Reach and readers28K


Привет, Хабр!

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

И начнем мы сегодня с ролика о том, как создать играбельного 2D-персонажа в Unity 5 — если вы еще не попытались этого сделать, то сейчас самое время. Важные моменты о физике, коллайдерах, спрайтах и перемещении персонажа по сцене.



Рекомендуем, кстати, посмотреть этот курс целиком вот здесь.

Смотреть дальше

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity

Specialization

Десктоп разработчик, Администратор серверов
Младший
From 110,000 ₽
Java
Java Spring Framework
RESTful WebServices.
PostgreSQL
SQL
Hibernate
Linux
Базы данных
Microsoft SQL Server
Разработка программного обеспечения