Pull to refresh
9
0
Oleg Ovechkin @bulbax

User

Send message

Анимации в iOS-приложениях, рождённые на сервере

Reading time5 min
Views7.9K


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

iOS-инженеры наверняка догадались, о каких объёмах работы идёт речь: чтобы удалять старые и добавлять новые анимации, необходимо совершить множество действий с клиентской стороны. Для этого в каждом релизе должны быть задействованы Android- и iOS-команды, а вкупе со временем, необходимым на одобрение обновления в App Store, это означает, что запуск каждого релиза с обновлёнными анимациями может занять несколько дней. Однако нам удалось решить эту проблему, и сейчас я расскажу как.

Архитектура решения


К тому времени мы уже умели экспортировать анимации Adobe After Effects (далее — AAE) в понятный нашему iOS-приложению формат при помощи библиотеки Lottie. В этот раз мы пошли чуть дальше: решили хранить все актуальные анимации на сервере и скачивать их по мере необходимости.
Читать дальше →
Total votes 44: ↑42 and ↓2+40
Comments2

Какие налоги нужно платить при выводе доходов от приложений в Apple iTunes

Reading time7 min
Views31K
image

Разработчики постоянно задают нам вопросы о налогах, которые должны платить при выводе средств на российское лицо по договору с Apple. Поводом беспокойства служит известный Налог на Гугл, введенный с начала 2017 года.

Поэтому мы разместили в свободном доступе перевод последней редакции Apple Developer Program License Agreement Schedule 2 и подготовили налоговые комментарии к нему.

Кому интересно, смотрим далее.
Читать дальше →
Total votes 28: ↑28 and ↓0+28
Comments69

Блокчейн в 200 строк кода

Reading time4 min
Views71K
Основная концепция блокчейна довольно проста: распределенная база данных, которая поддерживает постоянно растущий список упорядоченных записей.

Однако, многоe остается непонятным, когда мы говорим о блокчейне, так же остается много проблем, которые мы пытаемся решить с его помощью. Это относится и к популярным блокчейн проектам, таким как Биткоин (Bitcoin) и Эфириума (Ethereum). Термин «блокчейн» обычно сильно привязан к концепции типа денежных переводов, смарт-контрактов или криптовалюты.

Это делает понимание блокчейна сложнее, чем есть на самом деле. Особенно исходный код. Здесь я пройдусь по супер-простой реализации блокчейна в 200 строк кода JavaScript под названием NaiveChain.

Структура блока


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

image
Хэш предыдущего блока необходимо найти в блоке для сохранения целостности цепи
Читать дальше →
Total votes 35: ↑33 and ↓2+31
Comments8

30 тезисов с выступления Виталика Бутерина в Москве

Reading time4 min
Views27K
Делимся с вами тезисами выступления Виталика Бутерина, молодой легенды IT, создателя Ethereum, который приехал в Москву для встреч с российским блокчейн-комьюнити.

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


Читать дальше →
Total votes 58: ↑49 and ↓9+40
Comments39

Concurrency в Swift 3 и 4. Operation и OperationQueue

Reading time31 min
Views79K



Если вы хотите добиться UI отзывчивости вашего iOS приложения, выполняя такие затратные по времени куски кода, как загрузка данных из сети или обработка изображений, то вам нужно использовать продвинутые паттерны, связанные с многопоточностью (сoncurrency), иначе работа вашего пользовательского интерфейса (UI) начнет сильно замедляться и даже может привести к полной его «заморозке». Вам нужно убрать ресурсо-затратные задачи с main thread (главного потока), который отвечает за выполнение кода, отображающего ваш пользовательский интерфейс (UI).

В текущей версии Swift 3 и ближайшей Swift 4 (осень 2017) это можно сделать двумя способами, которые пока не связаны с встроенными языковыми конструкциями Swift, начало реализации которых будет только в Swift 5 (конец 2018).

Один из них использует GCD (Grand Central Dispatch) и ему посвящена предыдущая статья. В этой статье мы покажем, как достичь отзывчивости UI в iOS приложениях с помощью таких абстрактных понятий, как операция Operation и очередь операций OperationQueue. Мы также покажем в чем различие этих двух подходов и какой из них в каких ситуациях лучше использовать.

Код для этой статьи можно посмотреть на Github.
Читать дальше →
Total votes 18: ↑14 and ↓4+10
Comments9

ICO: основные юрисдикции и вопросы

Reading time5 min
Views23K


Где-то год назад я начал изучать тему ICO (кто не в курсе — это первичное размещение токенов: аналогия взята из аббревиатуры IPO): как оказалось — не зря. На сегодня рынок ICO вышел (уже вышел — а год ещё не закончился) за 1 000 000 000 долларов. При этом рынок crypto по объёму выходил за 100 000 000 000 (но сейчас — колеблется возле цифры в 85 миллиардов). Это, конечно, не триллионы, но уже серьёзно.

В этой заметке хотелось бы ответить на три вопроса:

  1. ICO — это пузырь или нет?
  2. В каких юрисдикция и почему регистрируются те, кто проводят ICO?
  3. Есть ли у ICO будущее и каково оно?

Ответ на первый вопрос прост: да. Да, ICO — это пузырь и тому есть несколько причин:
Читать дальше →
Total votes 11: ↑11 and ↓0+11
Comments22

Налоговый cуслик — 2. «Налог на Google» и агентский НДС для российских предпринимателей и организаций

Reading time5 min
Views30K
Данная статья-заметка будет интересна российским индивидуальным предпринимателям и организациям, приобретающим какие-либо услуги в электронной форме у иностранных компаний, не имеющих постоянного представительства в Российской Федерации. В частности:

— Разработчикам, реализующим свои игры и приложения через торговые площадки Steam, AppStore, Google Play и аналогичные им.
— Фрилансерам, использующим для поиска клиентов различные биржи и аналогичные им площадки.
— Приобретающим рекламные услуги, в том числе услуги по предоставлению рекламной площади или времени для рекламы.
— Покупателям услуг по размещению информации на сайтах типа «доска объявлений», «каталог», «аукцион».
— Покупателям посреднических услуг, предназначенных для организации возможности заключения сделок между покупателем и продавцом, в том числе сервисов по приему платежей.
— Услуг хостинга, доменов, ресурсов «в облаке».
— Услуг поиска и ведения статистики на сайтах.
— … И многих других видов услуг.

Всех подходящих под такое описание — прошу под кат.


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

Система сборки Xcode: advanced tutorial

Reading time7 min
Views39K
image
Конфигурация проекта в Xcode выглядит, как пульт управления космическим кораблем. Зачастую люди понимают, как работает система сборки, но путают термины. В этой статье мы пройдемся по структуре проекта, таргетам, настройкам конфигураций и воркспейсам. Поехали!
Читать дальше →
Total votes 23: ↑23 and ↓0+23
Comments3

Бюджетный стартовый набор Arduino

Reading time3 min
Views46K
У меня более 10 лет стажа в IT-индустрии, но как радиолюбитель — я полнейший нуб. Как и многих в последнее время, меня заинтересовали возможности Arduino. Но не в качестве крутого устройства по управлению всем вокруг, а больше в качестве программируемого конструктора и развлечения.

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

Итак, если вы хотите собрать бюджетный набор с ардуинкой, пригодный для прохождения большинства уроков, а времени для изучения рынка нет, то последующий текст для вас.
Читать дальше →
Total votes 24: ↑16 and ↓8+8
Comments39

Работа бризера Tion O2 после более года эксплуатации

Reading time5 min
Views37K
Поставили мне этот агрегат где то в августе, о чем была уже статья тут, прожил я с ним год и есть что сказать… Поводом послужил вброс мне новых фильтров, так сказать, чтобы был инфоповод. Ну так обо всем по порядку.


Читать дальше →
Total votes 21: ↑18 and ↓3+15
Comments52

Swift и время компиляции

Reading time4 min
Views25K
Пост основан на статье medium.com/@RobertGummesson/regarding-swift-build-time-optimizations-fc92cdd91e31 + небольшие изменения/дополнения, то есть текст идет от моего лица, не третьего.

Всем знакома ситуация после изменения файла(ов) или просто переоткрытия проекта:






Нужно сказать, что какой-то особой проблемы с компиляцией я не замечал когда писал на Objective-C, но всё изменилось с приходом в массы swift. Я частично отвечал за CI сервер по сборке iOS проектов. Так вот, проекты на swift собирались невыносимо медленно. Еще разработчики любят тащить поды (cocoapods зависимости) на каждый чих в свои swift проекты, иногда, в безумном количестве. Так вот, компиляция всей этой смеси могла продолжаться несколько минут, хотя сам проект состоял буквально из пары десятков классов. Ну ладно, как бы ясно, язык новый, на этапе компиляции происходит намного больше проверок, чем в том же ObjC, глупо ожидать, что она будет работать быстрее (да, swift это строго типизированный язык и всё должно быть максимально явно объявлено (как в Java, например), в отличии от ObjC, где не всё так строго). Разработчики swift с каждым релизом обещают в x раз ускорения скорости компиляции. Ну вроде, действительно, сборка 2.0 и уже потом 2.2 стала работать быстрее, вот вот на носу уже 3.0 версия (конец года).

Компилятор компилятором, но оказывается, что время сборки проекта можно катастрофически увеличить буквально несколькими строчками кода. Часть примеров взято из вышеупомянутой статьи, часть самописные (не поверил автору и хотелось самому проверить). Время замерял через

time swiftc -Onone file.swift

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

Семь вопросов о светодиодных лампах

Reading time8 min
Views228K
Пять лет назад светодиодные лампы были технической диковинкой, сегодня светодиодные лампы продаются в каждом магазине товаров для дома, через пять лет подавляющее большинство квартир скорее всего будут освещаться светодиодными лампами.

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


Читать дальше →
Total votes 39: ↑35 and ↓4+31
Comments231

Мошенничество при покупке б/у Macbook Pro

Reading time4 min
Views163K
Сегодня ко мне обратилась знакомая с просьбой помочь купить б/у Macbook Pro. Я сразу предупредил, что квалификация у меня близка к нулю, но чем могу — помогу. С PC плотно не работаю уже много лет, а Mac владею на верхне-чайниковом уровне. Беглый поиск по фразе «как проверить macbook pro» сразу же привел к исчерпывающей публикации rule на заданную тему: «Осторожно при покупке MacBook. Высокотехнологический способ мошенничества в оффлайне» geektimes.ru/post/157969 Но неопытноcть меня все же подвела.

Объявление:


То есть в объявлении предлагается топовая модель MacBook Pro «Core i7» 2.9 13" Mid-2012 (MD102). Реально это оказался MacBook Pro «Core 2 Duo» 2.66 13" Mid-2010 (MC375) — 4 GB RAM, 500 GB HDD. Блок питания был новый.

Читать дальше →
Total votes 50: ↑41 and ↓9+32
Comments68

Звук в играх: История и развитие. Часть 1 – Первые игровые автоматы

Reading time6 min
Views12K
Современные игры все больше начинают походить на кино – реалистичная графика, яркие эффекты, эпичный сюжет. Неотъемлемой частью всех игр с давних времен также стало и их звуковое сопровождение, начиная с простых звуков удара мяча об ракетку в Pong и заканчивая эпическими санудтреками из современных игр. Как развивался звук в играх мы рассмотрим в этой и последующих частях нашего сериала.

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

Осенняя встреча Rambler.iOS

Reading time2 min
Views6.8K
image

Пришла осень, астрологи предсказали пору повышенной активности мобильных разработчиков — и 24 сентября мы готовы провести новую встречу Rambler.iOS, официально под номером четыре.
Читать дальше →
Total votes 16: ↑13 and ↓3+10
Comments2

С аниме дорога летит незаметно или что посмотреть по дороге в отпуск

Reading time4 min
Views62K


Август — закат лета и последняя возможность вырваться в отпуск (кстати, в августе особенно хороша Карелия). Самое время определяться с видом отдыха — в отеле, палатке или на даче — и собирать вещи, загружать полезные приложения, покупать всякие гаджеты. И чтобы не скучать в дороге, нужно озаботиться каким-то развлечением и пищей для ума. Например, взять с собой интересную книгу. Но иногда хочется отдохнуть от чтения и дать отдых мозгам. Обычно здесь рука тянется запустить очередной сериал или полнометражку, но всё же не торопитесь: на кинематографе свет клином не сошёлся. Есть ещё один жанр, который может подарить не меньше удовольствия — аниме.

Поклонникам не надо объяснять, что это такое. Но если вы сейчас скривились и вспомнили «Сейлор Мун» и «Покемона», то не торопитесь осуждать: аниме столь же разнообразно, как и кинематограф. В этом жанре есть как очень глубокие и серьёзные полнометражные фильмы, и сериалы, так и совершенно бестолковые и проходные поделки. Просто по ТВ почти невозможно посмотреть хорошее и качественное аниме, поэтому у многих сформировалось предубеждение относительно японской мультипликации. И всё же мы рекомендуем поближе познакомиться с этим жанром по пути в жаркие страны, в горы или в деревню.
Читать дальше →
Total votes 86: ↑61 and ↓25+36
Comments291

iOS Инструменты разработчика

Reading time26 min
Views35K

Вступление


Всем привет, меня зовут Григорий, последние 5 лет занимался программированием под iOS. Сейчас решил сменить сферу деятельности и ударился в веб, но чтобы добро не пропадало, хочу поделиться с сообществом своими наработками, накопившимися за это время. Библиотеки выложены на GitHub и добавлены в CocoaPods. Инструкции по установке и использованию вы сможете найти по ссылкам на GitHub, здесь же будет краткое описание.

Минимальная поддерживаемая версия — iOS 6.0.
Читать дальше →
Total votes 38: ↑35 and ↓3+32
Comments27

Генерируем номер версии и билда на иконке iOS приложения

Reading time2 min
Views11K


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

Зачастую эту информацию прячут где-нибудь, например, в приложении Яндекс.Маркет, нужно ткнуть в раздел Кабинет и выбрать пункт «О приложении»:

Пример

Для удобства (или потому, что этот экран ещё не готов), можно вынести эту полезную информацию прямо на иконку приложения.
Читать дальше →
Total votes 20: ↑19 and ↓1+18
Comments9

Налоговый суслик. Особенности упрощенной системы налогообложения при работе по договорам с Apple, Google и другими

Reading time46 min
Views53K
В данной статье я постараюсь провести краткий юридический ликбез для разработчиков по некоторым положениям Гражданского кодекса, имеющим значение в контексте деятельности индивидуальных предпринимателей и организаций, применяющих упрощенную систему налогообложения, в работе по договорам с Apple, Google и другими компаниями, а также обратить внимание на некоторые не всегда очевидные налоговые нюансы, которые, как показал личный опыт изучения данной темы, довольно часто ускользают от внимания разработчиков или вызывают множество вопрос и споров.

Прочтите внимательно эту статью, если вы применяете упрощенную систему налогообложения с объектом налогообложения «доход» по ставке 6 процентов и продаете игры или приложения в Google Play, Apple App Store, а также прочий цифровой контент — например, 3D-модели — в Steam, Unity Asset Store или на других площадках, в условиях договоров с которыми фигурируют комиссии, агентские вознаграждения и прочие формы разделения выручки между сторонами.

Из материала вы узнаете:

  • Почему разработчику желательно обладать хотя бы базовой юридической грамотностью
  • Чем с точки зрения Гражданского кодекса являются игры и приложения и какие права на них есть у разработчиков помимо авторского права
  • Что такое агентский договор и почему все это важно при работе по договору с Apple или Google
  • Кто такой налоговый суслик и почему он может превратиться в пушного зверя
  • Какой «подвох» существует для применяющих «упрощенку» в части определения налоговой базы
  • Почему налог на добавленную стоимость (НДС) продолжает преследовать нас, даже когда мы не являемся его плательщиками
  • Как, с точки зрения Федеральной налоговой службы, облагаются НДС внутриигровые покупки (InApp Purchases)
Покажите мне суслика!
Total votes 40: ↑36 and ↓4+32
Comments84

Information

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

Specialization

Specialist
Senior
iOS development
SWIFT
Objective-C
Xcode