Pull to refresh
-25
@Romario21read⁠-⁠only

User

Send message

Исследуем RxJava 2 для Android

Reading time25 min
Views211K

enter image description here


Меня зовут Аркадий, я Android-разработчик в Badoo. В последнее время в нашем блоге много постов про Go, PHP, JS, QA, и я решил разбавить их темами по мобильной разработке. Как раз занимался портированием одного Android-проекта с RxJava 1 на RxJava 2 и читал всё, что можно найти на эту тему в интернете. В частности, доклад Джейка Вортона с конференции GOTO Copenhagen 2016. Мне показалось, что это достойный кандидат на перевод – думаю, многие Android-разработчики задумываются о переходе на RxJava 2, и им интересно, что изменилось по сравнению с первой версией.


Джейк сделал достаточно объёмное введение о реактивном программировании, так что знание RxJava 1 не требуется для понимания статьи. Доклад был подготовлен, когда RxJava2 ещё только готовилась к выпуску (на текущий момент уже выпущена версия 2.1.0).

Читать дальше →
Total votes 42: ↑41 and ↓1+40
Comments5

Создание ритм-игры в Unity

Reading time10 min
Views17K
image

Введение


Итак, вы хотите или пытались создать ритм-игру, но игровые элементы и музыка быстро рассинхронизировались, и теперь вы не знаете, что делать. Эта статья вам в этом поможет. Я играл в ритм-игры со старшей школы и часто зависал на DDR в местном зале аркадных автоматов. Сегодня я всегда ищу новые игры этого жанра, и такие проекты, как Crypt of the Necrodancer или Bit.Trip.Runner, показывают, что в этом жанре можно сделать ещё многое. Я немного работал над прототипами ритм-игр в Unity, и в результате потратил месяц на создание короткой ритм-игры/головоломки Atomic Beats. В этой статье я расскажу о самых полезных техниках создания кода, которым я научился при создании этих игр. Информацию о них я не смог нигде больше найти, или она была изложена не так подробно.

Во-первых, я должен выразить огромную признательность Ю Чао за пост Music Syncing in Rhythm Games [перевод на Хабре]. Ю рассмотрел основы синхронизации таймингов аудио с игровым движком в Unity и выложил исходный код своей игры Boots-Cut, что очень помогло мне в создании своего проекта. Вы можете изучить его пост, если хотите узнать краткое введение в синхронизацию музыки в Unity, но я рассмотрю эту тему подробнее и обширнее. В моём коде активно используется и информация из статьи, и код Boots-Cut.
Читать дальше →
Total votes 12: ↑12 and ↓0+12
Comments0

Bitmap-индексы в Go: поиск на дикой скорости

Reading time15 min
Views31K


Вступительное слово


Я выступил с этим докладом на английском языке на конференции GopherCon Russia 2019 в Москве и на русском — на митапе в Нижнем Новгороде. Речь в нём идёт о bitmap-индексе — менее распространённом, чем B-tree, но не менее интересном. Делюсь записью выступления на конференции на английском и текстовой расшифровкой на русском.

Мы рассмотрим, как устроен bitmap-индекс, когда он лучше, когда — хуже других индексов и в каких случаях он значительно быстрее них; увидим, в каких популярных СУБД уже есть bitmap-индексы; попробуем написать свой на Go. А «на десерт» мы воспользуемся готовыми библиотеками, чтобы создать свою супербыструю специализированную базу данных.

Очень надеюсь, что мои труды окажутся для вас полезными и интересными. Поехали!
Total votes 93: ↑91 and ↓2+89
Comments40

Математики обнаружили идеальный способ перемножения чисел

Reading time5 min
Views144K

Разбивая крупные числа на мелкие, исследователи превысили фундаментальное математическое ограничение скорости



Четыре тысячи лет назад жители Вавилонии изобрели умножение. А в марте этого года математики усовершенствовали его.

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

«Все думают, что метод умножения, который они учили в школе, наилучший, но на самом деле в этой области идут активные исследования», — говорит Йорис ван дер Хувен, математик из Французского национального центра научных исследований, один из соавторов работы.
Читать дальше →
Total votes 183: ↑173 and ↓10+163
Comments224

Анимация в мобильных приложениях: тестируем Lottie

Reading time4 min
Views39K
О библиотеке LottieFiles многие знают, но пробовать на практике не спешат. Статей на эту тему мало, поэтому я решила поделиться своим опытом создания анимации для мобильных приложений с помощью Lottie.



Читать дальше
Total votes 26: ↑23 and ↓3+20
Comments14

Массовый исход браузерных игр

Reading time6 min
Views23K
image

Вернёмся 2007 год. В это время появились и получили хорошие отзывы критиков такие игры, как Halo 3, Bioshock, Portal, Call of Duty 4: Modern Warfare и Super Mario Galaxy. В том же году вышло много других выдающихся проектов, поэтому он считается лучшим годом в истории видеоигр. Но не для всех. Некоторым играм требовались достаточно мощные и дорогие компьютеры, а недавно вышедшие консоли продавались по ценам в диапазоне от 249.99 (Nintendo Wii) до 599,99 долларов (PlayStation 3). Для многих игроков возможность поиграть в современные игры была слишком затратной.

Однако в то время рынок видеоигр не заканчивался домашними консолями и мощными компьютерами: с самого зарождения Интернета на сцене стали появляться онлайновые браузерные игры. В такие игры можно было играть на любом компьютере с подключением к Интернету, и большинство из них было бесплатными. В том же 2007 году появились и завоевали популярность такие хорошо известные браузерные игры, как The Last Stand, The Impossible Quiz, Newgrounds Rumble, Pandemic и Trials 2. К сожалению, производитель ПО, необходимого для запуска этих игр, завершил его поддержку. Из-за этого теперь мы не можем играть в сотни и тысячи игр, это уничтожило многие годы разработки игр и игрового контента. Браузерные игры оставили глубокий след в истории видеоигр, но из-за завершения в 2020 году поддержки Flash мы потеряем эту историю и средства, необходимые для её сохранения.
Читать дальше →
Total votes 29: ↑28 and ↓1+27
Comments25

Подборка: 5 полезных сервисов для написания статей на английском

Reading time5 min
Views24K


Всем привет! Меня зовут Марго, я профессиональный маркетолог и редактор, в последние пару лет фокусируюсь на продвижении за рубежом и много пишу на английском. Я решила поделиться ссылками на приложения и сайты, которые помогают мне в ежедневной работе при создании контента. Надеюсь, список поможет изучающим английский и тем, кто публикует англоязычные материалы на Хабре.
Читать дальше →
Total votes 51: ↑48 and ↓3+45
Comments29

Нужно ли чистить строки в JavaScript?

Reading time6 min
Views79K
Что? Строки могут быть «грязными»?

Да, могут.

//.....Какой-то код
console.log(typeof str); // string
console.log(str.length); // 15
console.log(str); // "ччччччччччччччч"

Вы думаете, в этом примере строка занимает 30 байт?

А вот и нет! Она занимает 30 мегабайт!
Читать дальше →
Total votes 220: ↑219 and ↓1+218
Comments224

«Галоп пикселя — часть пятая» — Анимация персонажей. Ходьба

Reading time30 min
Views39K


«Галоп пикселя», часть I — базовые понятия, этапы взросления, прикладные упражнения (линк)
«Галоп пикселя», часть II — перспектива, цвет, анатомия и прикладные упражнения (линк)
«Галоп пикселя», часть III — Анимация (линк)
«Галоп пикселя», часть IV — Анимация света и тени (линк)
«Галоп пикселя», часть V — Анимация персонажей. Ходьба (линк)

Доброго времени суток, Хабр. Мы продолжаем цикл «Галоп Пикселя». Сейчас, находясь на старте 2019 года, можно с уверенностью говорить, что это не только цикл статей, но и многолетняя сага. Пространное повествование о пикселях, их жизни, способе их создания, приёмах и уловках в работе с ними. Мы не будем рассуждать о причинах первоначального «спринта», который затем превратился в многолетний марафон, ибо нет ничего более жизненного, чем сама жизнь. Кому нужны причины отсутствия или пауз, если можно просто вернуться к тому, что мы делали, в чём варились, и в чём, даст бог — будем наблюдаться и далее. В пикселях, конечно же!

Сегодняшняя публикация станет очередной, и возможно даже поворотной вехой в нашем повествовании. Наконец-то мы подошли к созданию полноценной анимации персонажей. Двумя предыдущими главами мы охватили анимацию света и тени, а также анимацию неподвижных персонажей (idle-animation) без ярко выраженных действий. Но сегодня наши персонажи пойдут, а в следующей части даже побегут, завоевав то, что уже давно их по праву рождения. Ещё один плодородный регион. И пройдут ещё одну точку, которая ознаменует окончание базового цикла. Наши пиксели наконец-то станут живыми.

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


Лопатить пиксели
Total votes 94: ↑88 and ↓6+82
Comments30

Как учиться Java-разработке? Опыт студента GeekUniversity Никиты Чернецова

Reading time5 min
Views19K


Высшее образование я получал в МГТУ, изучал ядерные реакторы и энергетические установки. Однако несмотря на позитивное впечатление от учёбы и в целом неплохие перспективы, после вуза я решил стать разработчиком. И получилось! Вот уже три года я работаю в Java-разработчиком, ни на секунду не прерывая своё обучение профессии. Я расскажу о том, какие способы обучения оказались для меня самыми эффективными. Не факт, что они зайдут всем и каждому. Надеюсь, кто-то почерпнёт для себя что-нибудь полезное.

Читать дальше →
Total votes 26: ↑23 and ↓3+20
Comments18

Квантовые шашки — make checkers great again

Reading time3 min
Views7.1K
котики

Мы добавили правила на основе квантовой теории в шашки, чтобы сделать их менее предсказуемыми и сломать стандартные тактики игры. Это не просто игра, это интерактивное представление квантовой теории с такими эффектами как суперпозиция и квантовая запутанность.
Читать дальше →
Total votes 33: ↑33 and ↓0+33
Comments33

Введение в реактивное программирование

Reading time11 min
Views49K
Здравствуйте. В этой статье я пробегусь галопом по Европам, а именно — расскажу, что понимают под реактивным программированием, познакомлю с акторами, реактивными потоками, и наконец, при помощи реактивных потоков мы сделаем распознавание мышиных жестов, как в старой Opera и её духовном наследнике — Vivaldi.

Цель — познакомить с основными концепциями реактивного программирования и показать, что не всё так сложно и страшно, как может показаться на первый взгляд.

image
Источник
Читать дальше →
Total votes 21: ↑18 and ↓3+15
Comments20

Ноам Хомский: где искусственный интеллект пошел не туда?

Reading time36 min
Views56K
Комментарий переводчика: Подробное интервью с легендарным лингвистом, вышедшее 6 лет назад, но ничуть не утратившее своей актуальности. Ноам Хомский —  «современный Эйнштейн», как его называют, делится своими соображениями об устройстве человеческого мышления и языка, искусственном интеллекте, состоянии современных наук. На днях ему исполнилось 90 лет, и это кажется достаточным поводом для публикации статьи. Интервью ведет молодой учёный-когнитивист Ярден Кац, он сам прекрасно разбирается в предмете, поэтому беседа очень содержательна, а вопросы столь же интересны, как и ответы.

Читать дальше →
Total votes 51: ↑50 and ↓1+49
Comments48

PostgreSQL: PipelineDB — агрегирующие запросы в режиме реального времени

Reading time5 min
Views11K
Вас когда-либо просили посчитать количество чего-то на основании данных в бд за последний месяц, сгруппировав результат по каким-то значениям и разбив всё это ещё по дням/часам?
Если да — то вы уже представляете, что вам придётся написать что-то вроде такого, только хуже

SELECT hour(datetime), somename, count(*), sum(somemetric)
from table
where datetime > :monthAgo
group by 1, 2
order by 1 desc, 2

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

А плохи такие запросы тем, что хорошо отнимают ресурсы системы на время выполнения, да и данных может быть так много, что даже реплику для таких запросов будет жаль (и своего времени).

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

Так вот — это умеет делать расширение PipelineDB

Демо с их сайта, как это работает


Читать дальше →
Total votes 25: ↑25 and ↓0+25
Comments24

Apache NiFi: что это такое и краткий обзор возможностей

Reading time7 min
Views121K
Сегодня на тематических зарубежных сайтах о Big Data можно встретить упоминание такого относительно нового для экосистемы Hadoop инструмента как Apache NiFi. Это современный open source ETL-инструмент. Распределенная архитектура для быстрой параллельной загрузки и обработки данных, большое количество плагинов для источников и преобразований, версионирование конфигураций – это только часть его преимуществ. При всей своей мощи NiFi остается достаточно простым в использовании.

image

Мы в «Ростелекоме» стремимся развивать работу с Hadoop, так что уже попробовали и оценили преимущества Apache NiFi по сравнению с другими решениями. В этой статье я расскажу, чем нас привлек этот инструмент и как мы его используем.
Читать дальше →
Total votes 22: ↑22 and ↓0+22
Comments25

О чем все-таки говорит developer.android.com про RecyclerView

Reading time3 min
Views9.1K

Приветствую вас, уважаемые хабражители! На написание статьи меня подтолкнул этот пост (а точнее, то чувство резкого локального повышения температуры в районе… хм, поясницы, обычно возникающее, когда в интернете кто-то неправ).


Начнем с самого начала. Полностью согласен, что "между жизненным циклом активности и работой RecyclerView есть нечто общее" – это "нечто" – необходимость понимать, что мы делаем и зачем. И читать документацию. А невыполнение этих двух необходимостей, как и сон разума, рождает монстров. Только вот с тем, как предлагает с этими монстрами бороться предыдущий автор, я категорически не согласен.

А почему?
Total votes 12: ↑12 and ↓0+12
Comments8

До свидания, Electron. Здравствуйте, настольные PWA

Reading time5 min
Views35K
Автор материала, перевод которого мы сегодня публикуем, говорит, что он, возможно, слишком торопится, но то, о чём он хочет рассказать, представляет собой, по меньшей мере, весьма интересную новость. Речь идёт о настольных прогрессивных веб-приложениях, которые вполне могут значительно потеснить позиции приложений, основанных на Electron.

image
Читать дальше →
Total votes 40: ↑35 and ↓5+30
Comments140

Java Challengers #2: Сравнение строк

Reading time7 min
Views22K

Java Challengers #2: Сравнение строк


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


В Java класс String инкапсулирует массив char (прим. переводчика — с java 9 это уже массив byte, см. Компактные строки в Java 9). Говоря по простому, String — это массив символов, используемый для составления слов, предложений или других конструкций.


Инкапсуляция — это одна из самых мощных концепций объектно — ориентированного программирования. Благодаря инкапсуляции вам не нужно знать как работает класс String. Вам достаточно знать методы его интерфейса.


Читать дальше →
Total votes 22: ↑18 and ↓4+14
Comments27

Функции высшего порядка в JavaScript

Reading time7 min
Views64K
Если вы занимаетесь изучением JavaScript, то вы, наверняка, сталкивались с понятием «функция высшего порядка» (Higher-Order Function). Может показаться, что это что-то очень сложное, но, на самом деле, это не так.

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



Для того, чтобы в полной мере понять эту концепцию, вам сначала надо разобраться с понятием функционального программирования (Functional Programming) и с тем, что такое функции первого класса (First-Class Functions).

Материал, перевод которого мы публикуем, предназначен для начинающих, он направлен на объяснение концепции функций высшего порядка, и на демонстрацию того, как пользоваться ими в JavaScript.
Читать дальше →
Total votes 47: ↑33 and ↓14+19
Comments8

Налог на Гугл: разворот на 180°

Reading time8 min
Views23K
image

Google и Apple внесли поправки в договоры с разработчиками программного обеспечения. Кто теперь должен платить НДС с услуг в электронной форме?


Ровно год назад мы разместили на Хабре две статьи об особенностях уплаты разработчиками налогов при работе с площадками Google и Apple: Налоги при продаже приложений и рекламы Google и Какие налоги нужно платить при выводе доходов от приложений в Apple iTunes.

С тех пор обе компании изменили свой подход к уплате НДС при продаже приложений российских разработчиков на прямо противоположный и внесли соответствующие поправки в свои контракты. Поэтому пришло время обновить информацию и снова погрузиться в тему «налога на Гугл».

Под катом мы расскажем вам на примере последнего юридического заключения чем грозит новый подход интернет-гигантов к уплате НДС рядовым разработчикам.
Читать дальше →
Total votes 22: ↑20 and ↓2+18
Comments46
1

Information

Rating
Does not participate
Registered
Activity