Как стать автором
Обновить
3
0

Разработчик(в основном на С#)

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

Не всплывай! Прерываемые транзишены в iOS

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

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


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

Edge-to-edge в Android: делаем правильно

Время на прочтение8 мин
Количество просмотров17K
Прошедший Google I/O 2019 принёс массу нашумевших новинок, многие из которых будут влиять на индустрию мобильной разработки в ближайшие годы. Не менее интересно было следить за зарождающимися трендами. Сначала в историю ушли механические клавиши управления, экраны смартфонов становились всё больше, а боковые рамки всё незаметнее. На смену экранным системным кнопкам пришли жесты, оставляя всё больше пространства для потребления контента. Приложения отображаются на всей видимой поверхности дисплея, от нижней до верхней рамки, не стесняя себя условными границами статус-бара и навигационной панели. Мы на пороге эры Edge-to-Edge.


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

Практика использования библиотеки lottie в мобильном приложении банка

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

В свое время Product Owner попросил подумать нас о создании эффективного процесса по внедрению анимации в наше приложение на android/ios. В то время мы делали задачу по предзаполнению заявки личными данными на кредитный продукт, и на ответ от сервера требовалось некоторое время, во время которого мы хотели показывать красивую анимацию загрузки.

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

Использование UIViewPropertyAnimator для создание пользовательских анимаций

Время на прочтение11 мин
Количество просмотров18K
Создание анимаций это здорово. Они являются важной частью iOS Human Interface Guidelines. Анимации помогают привлечь внимание пользователя к важным вещам или попросту делают приложение не таким скучным.

Существует несколько способов реализовать анимацию в iOS. Вероятно, самым популярным способом является использование UIView.animate(withDuration: animations:). Вы можете анимировать слой изображения с помощью CABasicAnimation. Кроме того, UIKit позволяет настроить кастомную анимацию для отображения контроллера с помощью UIViewControllerTransitioningDelegate.

В этой статье я хочу обсудить еще один захватывающий способ анимирования вьюшек — UIViewPropertyAnimator. Данный класс предоставляет гораздо больше функций управления, чем его предшественник UIView.animate. С его помощью можно создавать временные, интерактивные и прерываемые анимации. Кроме того, имеется возможность быстрой смены аниматора.
Читать дальше →
Всего голосов 21: ↑20 и ↓1+19
Комментарии1

Безопасные push-уведомления: от теории к практике

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

Сегодня расскажу о том, чем мы с коллегами заняты уже несколько месяцев: о пуш-уведомлениях для мобильных мессенджеров. Как я уже говорил, в нашем приложении главный упор сделан на безопасность. Поэтому мы выясняли, есть ли у пуш-уведомлений “слабые места” и если да, то как мы можем их нивелировать, чтобы добавить эту полезную опцию в наш сервис.

Публикую перевод нашей статьи с Medium с небольшими добавлениями от себя. В ней итоги “расследования” и рассказ о том, как решили проблему.

Исследуем матчасть


В классической модели пуш-уведомления делают мессенджеры уязвимыми для атак MITM (Man-in-the-middle, «Человек посередине»). Например, у Google, Microsoft и в старой версии iMessage приложение отправляет ключи шифрования на серверы Apple — на сервере происходит аутентификация пользователей и дешифровка заголовка сообщения (либо его содержания).



В итоге есть шанс прочесть переписку, получив доступ к серверу пуш-уведомлений. А это значит, что любые шифрования переписки бесполезны: пуш-уведомления все равно оставят возможность для чтения третьими лицами. Подробнее эту возможность обсуждали авторы статьи “Шифруйся грамотно” на Xaker.ru, посвященной способам шифрования сообщений.

Если вам кажется, что серверы Apple и Google 100% не допустят утечки ключей шифрования пользователей, подумайте о том, что к ним имеют доступ их сотрудники. А сотрудники — люди.
При всех уязвимостях пушей, многие «безопасные» мессенджеры, включая Signal и Telegram, используют их. Ведь иначе пользователям придется «вручную» мониторить новые сообщения, постоянно заходя в приложение. Что весьма неудобно, и мессенджеры-конкуренты получат преимущество.

Паранойя и здравый смысл

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

Музыка для ваших проектов: 12 тематических ресурсов с треками по лицензии Creative Commons

Время на прочтение7 мин
Количество просмотров123K
Подборка пригодится разработчикам, дизайнерам, видеорежиссерам и контент-мейкерам, которые ищут музыку для своих проектов — приложений, игр или видеороликов.

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

Всего голосов 57: ↑56 и ↓1+55
Комментарии9

Получение статистики по всем клиентам из API Яндекс Директ в разрезе дней с помощью Python

Время на прочтение5 мин
Количество просмотров6K
В работе часто использую короткую статистику в разрезе дней чтобы отслеживать отклонения трафика.

Более подробно о написании запросов написал в статье « Получение рекламных кампаний Яндекс Директ с помощью API в DataFrame (Python)».

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

Нам следует прописать запрос к серверу как функцию.

Лично я сделал 2 файла: функция с запросом и файл с данными, которые будут передаваться в функцию.

В первом файле пишем функцию


Я запрашиваю по всем проектам одни и те же поля, поэтому мне нужно передавать в запрос только даты, логин и токен.

Передача данных в функцию у меня выглядит следующим образом:

def rep(token,login,date_from,date_to):

Пишем запрос к серверу API Яндекс Директ


Данный запрос запрашивает данные по следующим параметрам:

  • Date
  • Impressions
  • Clicks
  • Ctr
  • Cost
  • AvgCpc
  • AvgImpressionPosition
  • AvgClickPosition
  • AvgTrafficVolume
  • BounceRate
  • AvgPageviews
Читать дальше →
Всего голосов 6: ↑6 и ↓0+6
Комментарии7

UICollectionView всему голова: Изменение представления на лету

Время на прочтение8 мин
Количество просмотров35K
Привет, Хабр! Представляю вашему вниманию перевод статьи "UICollectionView Tutorial: Changing presentation on the fly".

В данной статье мы рассмотрим использование различный способов отображение элементов, а также их переиспользование и динамическое изменение. Здесь мы не будем рассматривать основы работы с коллекциями и autolayout.

В результате мы получим такой пример:

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

Простое объяснение алгоритмов поиска пути и A*

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

Часть 1. Общий алгоритм поиска


Введение


Поиск пути — это одна из тех тем, которые обычно представляют самые большие сложности для разработчиков игр. Особенно плохо люди понимают алгоритм A*, и многим кажется, что это какая-то непостижимая магия.

Цель данной статьи — объяснить поиск пути в целом и A* в частности очень понятным и доступным образом, положив таким образом конец распространённому заблуждению о том, что эта тема сложна. При правильном объяснении всё достаточно просто.

Учтите, что в статье мы будем рассматривать поиск пути для игр; в отличие от более академических статей, мы опустим такие алгоритмы поиска, как поиск в глубину (Depth-First) или поиск в ширину (Breadth-First). Вместо этого мы постараемся как можно быстрее дойти от нуля до A*.
Читать дальше →
Всего голосов 29: ↑29 и ↓0+29
Комментарии11

Слон в посудной лавке: 3D принтеры с огромным полем печати

Время на прочтение5 мин
Количество просмотров12K
Со временем, все сталкиваются с необходимостью производства крупных деталей с помощью аддитивных технологий. А бытовые 3D принтеры, в своей основной массе, имеют относительно небольшой стол для печати (квадрат со стороной 180....220 мм). Маловато. А что делать, если хочется большего?

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


Всего голосов 21: ↑18 и ↓3+15
Комментарии14

Оптимизируем производительность игры параметрами импорта звука Unity

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

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

Этот документ разделён на пять частей:

  1. Как звук влияет на производительность
  2. Разбираемся с параметрами импорта
  3. Рекомендуемые мной параметры для PC и консолей
  4. Рекомендуемые мной параметры для мобильных платформ
  5. Предостережения и замечания

Оптимизация параметров импорта звука Unity — один из простейших способов оптимизации. В случае небольшого проекта у вас может уйти меньше часа для достижения значительных улучшений во времени загрузки, занятой ОЗУ и других аспектах производительности. Надеюсь, это руководство окажется полезным для вас. Информация актуальна для Unity версии 2018.3
Читать дальше →
Всего голосов 28: ↑28 и ↓0+28
Комментарии5

256 строчек голого C++: пишем трассировщик лучей с нуля за несколько часов

Время на прочтение8 мин
Количество просмотров147K
Публикую очередную главу из моего курса лекций по компьютерной графике (вот тут можно читать оригинал на русском, хотя английская версия новее). На сей раз тема разговора — отрисовка сцен при помощи трассировки лучей. Как обычно, я стараюсь избегать сторонних библиотек, так как это заставляет студентов заглянуть под капот.

Подобных проектов в интернете уже море, но практически все они показывают законченные программы, в которых разобраться крайне непросто. Вот, например, очень известная программа рендеринга, влезающая на визитку. Очень впечатляющий результат, однако разобраться в этом коде очень непросто. Моей целью является не показать как я могу, а детально рассказать, как подобное воспроизвести. Более того, мне кажется, что конкретно эта лекция полезна даже не столь как учебный материал по комьпютерной графике, но скорее как пособие по программированию. Я последовательно покажу, как прийти к конечному результату, начиная с самого нуля: как разложить сложную задачу на элементарно решаемые этапы.

Внимание: просто рассматривать мой код, равно как и просто читать эту статью с чашкой чая в руке, смысла не имеет. Эта статья рассчитана на то, что вы возьмётесь за клавиатуру и напишете ваш собственный движок. Он наверняка будет лучше моего. Ну или просто смените язык программирования!

Итак, сегодня я покажу, как отрисовывать подобные картинки:


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

3 выигрышные стратегии монетизации приложения в 2019

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

Главная боль разработчика — понять, почему еще вчера его стратегия монетизации работала и приносила доход, и вдруг перестала. Январь — идеальное время, чтобы проснуться от спячки и переосмыслить свою стратегию монетизации. Ниже мы подготовили обзор трех выигрышных стратегий, которые помогут мобильным приложениям зарабатывать больше в 2019.
Читать дальше →
Всего голосов 26: ↑23 и ↓3+20
Комментарии6

Создаём эффект распространения цвета в Unity

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

На этот эффект меня вдохновил эпизод Powerpuff Girls. Я хотела создать эффект распространения цвета в чёрно-белом мире, но реализовать его в координатах мирового пространства, чтобы видеть, как цвет закрашивает объекты, а не просто плоско распределяется по экрану, как в мультике.

Эффект я создала в новом Lightweight Rendering Pipeline движка Unity, встроенном примере конвейера Scriptable Rendering Pipeline. Все концепции применимы и к другим конвейерам, но некоторые встроенные функции или матрицы могут иметь другие названия. Также я воспользовалась новым стеком постобработки, но в туториале опущу подробное описание его настройки, потому что о ней достаточно хорошо рассказывается в других руководствах, например в этом видео.
Читать дальше →
Всего голосов 33: ↑33 и ↓0+33
Комментарии10

Drag и Swipe в RecyclerView. Часть 2: контроллеры перетаскивания, сетки и пользовательские анимации

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

Drag и Swipe в RecyclerView. Часть 2: контроллеры перетаскивания, сетки и пользовательские анимации


В первой части мы рассмотрели ItemTouchHelper и реализацию ItemTouchHelper.Callback, которая добавляет базовые функции drag & drop и swipe-to-dismiss в RecyclerView. В этой статье мы продолжим то, что было сделано в предыдущей, добавив поддержку расположения элементов в виде сетки, контроллеры перетаскивания, выделение элемента списка и пользовательские анимации смахивания (англ. swipe).

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

Шейдеры растворения и исследования мира

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

Часть 1: шейдер растворения


Шейдер растворения возвращает красивый эффект, к тому же его легко создать и понять; сегодня мы сделаем его в Unity Shader Graph, а также напишем на HLSL.

Вот пример того, что мы будем создавать:



Как это работает


Чтобы создать шейдер растворения (dissolve shader), нам придётся работать со значением AlphaClipThreshold в шейдере «Shader Graph» или воспользоваться функцией HLSL под названием clip.

По сути, мы прикажем шейдеру не рендерить пиксель на основании текстуры и переданного значения. Нам нужно знать следующее: белые части растворяются быстрее.
Читать дальше →
Всего голосов 47: ↑47 и ↓0+47
Комментарии3

Написание шейдеров в Unity. GrabPass, PerRendererData

Время на прочтение9 мин
Количество просмотров29K
Привет! Я хотел бы поделиться опытом написания шейдеров в Unity. Начнем с шейдера искажения пространства (Displacement/Refraction) в 2D, рассмотрим функционал, используемый для его написания (GrabPass, PerRendererData), а также уделим внимание проблемам, которые обязательно возникнут.

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


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

Полное руководство по правильному использованию анимации в UX

Время на прочтение9 мин
Количество просмотров47K
Предлагаю вашему вниманию перевод очень крутой статьи по анимации интерфейса.
The ultimate guide to proper use of animation in UX автора Taras Skytskyi.



В настоящее время трудно впечатлить или даже удивить анимацией интерфейса. Она показывает взаимодействие между экранами, объясняет, как использовать приложение или просто направляет внимание пользователя. Изучая статьи об анимации, я узнал, что почти все они описывают только конкретные варианты использования или общие факты об анимации, но я не сталкивался с какой-либо статьей, где все правила, касающиеся анимации интерфейсов, были бы четко и практически описаны. Но, в этой статье я не буду писать ничего нового, я просто хочу собрать все основные принципы и правила в одном месте, так что другим дизайнерам, которые хотят запускать анимированные интерфейсы, не нужно было искать дополнительную информацию.
Читать дальше →
Всего голосов 41: ↑41 и ↓0+41
Комментарии31

5 приемов работы с CSS, о которых вам следует знать

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


Наблюдая за потоком вопросов по CSS на Тостере уже давно заметил, что многие из них повторяются много-много раз. Да, есть совсем глупые вопросы, на которые так и тянет ответить RTFM! Но есть и более занятные. Они связаны с не совсем стандартной версткой. Не такой, чтобы глаза на лоб лезли, но и заметно выходящей за рамки условного бутстрапа и традиционных туториалов для новичков. Похожие вопросы довольно сложно загуглить — обычно вся суть в картинке, но и отвечать каждый раз надоедает. В этой статье мы постараемся посмотреть некоторые приемы, охватывающие довольно широкий круг подобных вопросов. Информация в первую очередь адресуется начинающим верстальщикам, но возможно и опытным будет, чем вдохновиться.

Всего голосов 60: ↑58 и ↓2+56
Комментарии25

Windows Mixed Reality: руководство для разработчиков (Часть 1)

Время на прочтение9 мин
Количество просмотров8.4K
Привет, Хабр! Сегодня мы начинаем цикл статей по Windows Mixed Reality. В его рамках мы с нуля разработаем приложение со смешанной реальностью на Unity. Кстати, все это будет проходить в формате lab work (лабораторной работы), то есть вы сможете сами, параллельно с публикацией статей, создать такое приложение. Присоединяйтесь!

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

Информация

В рейтинге
6 321-й
Зарегистрирован
Активность