Рубрика «Блог компании DataArt» - 10

Dagger 2. Лечим зависимости по методике Google - 1
Автор: Константин Марс
Senior Developer @ DataArt,
Co-Organizer @ GDG Dnipro

Dependency Injection

Что, зачем и когда это нужно

Сегодня мы поговорим об инструменте, который помогает улучшить качество разработки для Android. Решить эту задачу можно с помощью Dependency Injection (DI). Обычно этот термин ассоциируется с инъекциями, шприцами и немножко с «зависимостями». На самом деле, Dependency Injection — паттерн проектирования, обеспечивающий реализацию принципа инверсии зависимостей и реализующий правила создания объектов и независимость реализаций.
Итак, у нас есть класс, у класса есть конструктор, и есть несколько членов класса. Когда вы создаете сущность этого класса, вам необходимо обеспечить класс инстансами тех самых типов, которые объявлены для его членов класса. В данном случае, это имя машины и тип двигателя Engine. Вы будете использовать ссылки на объекты, соответственно, ссылки внутри вашего класса не будут пустовать.
Таким образом, вы реализуете ОOП и можете создавать объекты.
Читать полностью »

Xamarin Forms в действии. Medchest Assistant - 1
Автор: Константин Марс

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

Мы долго колебались с выбором платформы между популярной и престижной iOS и модным, современным и приятным в разработке Android. Поэтому я предложил использовать Xamarin, который, между прочим, использует C# как основной язык разработки (и это главный язык, на котором в повседневной жизни пишет организатор нашей команды Арсений). Таким образом мы подошли к началу путешествия в мир кроссплатформенной разработки с Xamarin.
Читать полностью »

P2P в браузере - 1
Автор: Александр Трищенко

Я расскажу о своем хобби — организации видеотрансляций в браузере по технологии WebRTC (Web Real-Time Communication — веб-коммуникация в режиме реального времени). Этот проект с открытым исходным кодом Google активно развивает с 2012 г., а первый стабильный релиз появился в 2013 г. Сейчас WebRTC уже хорошо поддерживается самыми распространенными современными браузерами, за исключением Safari.

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

Если мы используем WebRTC, мы решаем следующие проблемы:

  • Снижаем расходы на содержание серверов. Серверы нужны только для инициализации соединения и чтобы пользователи обменялись сетевой информацией друг о друге. Также они используются для рассылки каких-то событий, например, оповещений о подключении и отключении пользователей (чтобы информация на каждом клиенте была актуальной).
  • Увеличиваем скорость передачи данных и уменьшаем задержки при передачи видео и звука — ведь сервер для этого не нужен.
  • Усиливаем приватность данных: нет третьей стороны, через которую шел бы поток данных (конечно, за исключением шлюзов, через которые проходят данные до выхода в сеть).

Читать полностью »

Робот на трех осях - 1
Автор: Николай Хабаров

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

Первый робот-станок

Один из первых роботов такого рода был создан еще в 1804 г. — жаккардовый ткацкий станок, который можно было запрограммировать на изготовление тканей с разными узорами с помощью перфокарты, которую мы видим справа:

Робот на трех осях - 2 Робот на трех осях - 3
Читать полностью »

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

Сегодня мы хотим обратить ваше внимание на DeviceHive — быстрый, удобный и легкий в использовании IoT-проект и открытым исходным кодом, который предоставляет мощные решения для общения устройств между собой и построения вашего собственного «умного дома». Он соединяет в единую инфраструктуру датчики, облачные сервисы и мобильные приложения, сохраняет огромные объемы информации, запускает процессы ее анализа и обработки, используя алгоритмы машинного обучения и для историчесих данных, и в реальном времени. Чтобы понять, как работает механизм машинного общения в рамках DeviceHive, давайте попробуем создать собственное маленькое приложение.
Читать полностью »

Побеждаем злой вулкан с Rails и RGeo​ - 1
Автор: Сергей Зиновьев

Многие мобильные и веб-приложения включают в себя разные географические данные, ведь мы сталкиваемся с картами практически везде. Так, они используются в разных социальных приложениях — от геосоциальных сетей вроде Foursquare до сервисов по поиску попутчиков вроде BlaBlaCar. Google, Microsoft, Yahoo и многие другие IT-гиганты предоставляют свой API для простых операций: отображение карт, маркеров на этих картах и проведение наиболее востребованных вычислений. Популярный фреймворк для быстрой разработки Ruby on Rails часто используется для разработки геоинформационных систем (ГИС) и веб-приложений с использованием картографических данных. На простом примере продемонстирую, какие проблемы могут ждать при использовании пространственных данных и как их избежать в Ruby on Rails-приложении.

Как не встретиться со злым вулканом

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

Дэниэл предлагает нам рассмотреть следующую гипотетическую ситуацию. Представьте самолет, которому нужно совершить рейс из Сан-Франциско в Афины во время очередного извержения ТогоСамогоВулканаКоторыйНевозможноПроизнести в Исландии. Задача летчика — спланировать маршрут так, чтобы пролететь на безопасном расстоянии от вулкана. Также ему нужно знать длину маршрута, чтобы заправить самолет достаточным количеством топлива. Чтобы верно все рассчитать, командир воздушного судна делает запрос в центр организации воздушного движения.Читать полностью »

Анастасия Режепп: «Индустрия стала меньше думать о красивых кнопках» - 1

Продолжаем серию интервью с лидерами индустриальных практик и направлений DataArt. На этот раз мы поговорили с главой дизайн-студии DataArt Анастасией Режепп. Узнали, что нового в UX, почему стало больше шрифтов и обсудили интерфейсы будущего.

— Со стороны кажется, что в индустрии стали все больше думать о UX, и меньше — о красивых кнопках. Насколько это соответствует истине?

— Это совершенно точно. Как у кого получается об этом думать — совсем другой вопрос, но факт: UX действительно наступает по всем фронтам. Сейчас практически каждый крупный клиент приходит к нам в первую очередь с просьбой сделать UX. Причем как будет выглядеть их продукт — вопрос зачастую второстепенный. Некоторые заказчики формулируют запросы уже достаточно квалифицированно: просят подготовить им набор персон, customer journey maps, о которых буквально пару лет назад, кроме специалистов, никто не знал.

Почему так произошло — хороший вопрос. Мне кажется, что интересующиеся люди (а среди наших клиентов много интересующихся всем в индустрии) поняли, что UX — это важно, когда вокруг стало появляться все больше статей, видео, в которых популярно объясняется, как какую-нибудь новую функцию не просто внедрили, а протестировали, например. Вот недавно фейсбук сделал новые лайки. Так об этом не написал только ленивый: статьи в Wired, Techсrunch и так далее. А сама команда написала пространный текст, как они год — год, Карл! — работали над этими лайками: изучали пользовательское поведение в разных странах, эмоции, собирали статистику, тестировали. Все эти вещи просто на слуху.
Читать полностью »

Was geht ab? – DataArt на THack Berlin 2016 - 1
Автор: Андрей Беляев

“Was gent ab?” — письмо c таким заголовком упало на рассылку travel-практики DataArt 18 января. В этом году в Берлине ведущие портала tnooz.com опять собирали хакатон, и мы вновь решили поехать. Причин было две:

  1. Интересный опыт. Хотелось посмотреть, какие еще идеи приходят в голову коллегам из других компаний.
  2. 9 марта начиналась 50-я — юбилейная — выставка ITB в том же Берлине и наше участие или, тем более (ну вдруг!) победа, могли принести неплохие дивиденты при разговорах с будущими клиентами.

В прошлом году команда DataArt участвовала впервые и совершенно неожиданно получила первый приз tnooz для больших команд. На этот раз мы уже примерно представляли, что нас ожидает. С технической стороны были готовы на 150 %: два разработчика, которые участвовали в хакатоне в 2015 году, Дима и Ярослав, были готовы ехать опять. Дениса Цыплакова, который организовывал всю поездку в прошлый раз, заменил я. Возникла только одна проблема: не было идейного вдохновителя. Все генераторы идей, включая Романа Пескина, были по уши заняты текущими делами и не могли быть в Берлине в марте. Кроме того, в анонсе ограничились ограничились общими фразами о теме хакатона:
Tnooz, the leading source of news and analysis about travel tech, brings together developers and the travel industry to invent mobile applications for the airline passenger and in-destination experiences during the weekend hackathon.Читать полностью »

Модули расширения Python на Rust - 1

“Absolute statements are the root of all evil.
The key is balance. There are no answers, only questions.”
????

Автор статьи: zolkko.

Оптимизации

Когда говорят про оптимизацию в контексте ПО, часто подразумевают оптимизацию производительности программиста и/или оптимизацию самого ПО.

Исходя из YAGNI-принципа, Python позволяет программисту сосредоточиться на реализации ПО, избавив его от необходимости заботиться о низкоуровневых вещах: регионах памяти, в которых выделяются объекты, освобождении памяти, соглашениях о вызовах.

На обратную проблему в одной из его лекций о Haskell указал Саймон Джонс. У него был слайд со стрелкой, закрашенной градиентом. В начале было написано “no types”, посередине — “Haskell”, в конце — “Coq”. Указав на Coq, он сказал: “This stresses power over usability. Right?! You need a PhD here!”[1]. Несмотря на то, что это была шутка, мантра Python — одна из любимых программистами особенностей этого языка. По моему опыту, это то, что позволяет выпускать готовый продукт несколько быстрее.
Читать полностью »

Ловим усталость с помощью AndroidWear - 1

Это небольшая история про один из экспериментов нашей компетенции Wearables.
Мы провели его больше года тому назад, поэтому код изрядно устарел, да и AndroidWear-приложением сегодня уже никого не удивишь, однако задумка была очень интересной, и поработать над ней было здорово. За что огромное спасибо авторам идеи: Арсению Печенкину и VP of Engineering Роману Чернышеву, благодаря которым стартовал этот R&D.

Посмотреть код можно на GitHub. А вот небольшая презентация.


Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js