Pull to refresh
30
0
Виктор Грушевский @Viktorianec

Мобильный разработчик

Send message

Как я участвовал в конкурсе Telegram на создание медиаредактора и занял никакое место (но получил бесценный опыт?)

Reading time11 min
Views6.2K

Задача состояла в создании автономного приложения для редактирования медиафайлов на Swift без использования сторонних UI-фреймворков. Конкурсные функции и интерфейсы должны быть созданы с нуля. Использование сторонних реализаций медиаредакторов с похожими функциями строго запрещено.

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

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

Примечание. Если статья покажется интересной, то вот тут я пишу об iOS-разработке и о том, что с ней связано.

Читать далее
Total votes 9: ↑8 and ↓1+9
Comments8

Конфиденциальность iOS: Instagram* и Facebook* могут отслеживать всю вашу активность в браузере внутри приложения

Reading time11 min
Views3.3K

Приложение Instagram* и Facebook* для iOS отображает все сторонние ссылки и рекламу в своем приложении с помощью собственного встроенного браузера. Это создает различные риски для пользователя, поскольку хост-приложение может отслеживать каждое взаимодействие с внешними веб-сайтами, от всех данных формы, таких как пароли и адреса, вплоть до каждого нажатия.

Чтобы упростить пост, будет использоваться термин «Instagram*» вместо «Meta*» или «Facebook*».

*Meta признана в России экстремистской организацией, деятельность ее сервисов Facebook* и Instagram* в стране запрещена.

Примечание. Если статья покажется интересной, то вот тут я пишу об iOS-разработке и о том, что с ней связано.

Читать далее
Total votes 3: ↑3 and ↓0+3
Comments14

Как добавить список лицензий и благодарностей CocoaPods и при чём тут Settings.Bundle?

Reading time3 min
Views791

Для этого нам даже не понадобится писать код (ну почти). CocoaPods по мнению многих доживает свои славные времена, ведь развитие и распространение SPM (Swift Package Manager) продолжает набирать обороты. Но для тех, кто из вас до сих пор использует CocoaPods в проде, эта статья может оказаться актуальной.

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

Для этого нам понадобится связка плагина CocoaPods и Xcode.

Прежде чем приступить к управлению Settings bundle, давайте вкратце рассмотрим концепцию.

Читать далее
Total votes 4: ↑4 and ↓0+4
Comments0

Создание и настройка диаграмм с помощью нового Swift Charts Framework

Reading time6 min
Views4.2K

Компания Apple только что анонсировала фреймворк Swift Charts, который мы можем использовать для создания диаграмм в наших приложениях. Судя по беглому взгляду на API, фреймворк может предоставить гораздо больше, чем базовые диаграммы, создаваемые такими приложениями, как Numbers и т.д. В этой статье хотелось бы поделиться первыми экспериментами с API.

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

Читать далее
Total votes 5: ↑5 and ↓0+5
Comments3

Почему ваше приложение могут не пропустить или даже удалить из App Store?

Reading time4 min
Views3.1K

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

Все пункты перечислены не в порядке значимости или частоте.

Читать далее
Total votes 3: ↑3 and ↓0+3
Comments5

Простой способ обнаружить retain cycle в UIViewController

Reading time2 min
Views3.6K

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

Apple предлагает отличный инструмент для отладки утечек памяти. Часто для этого используется метод print в deinit.

Читать далее
Total votes 1: ↑1 and ↓0+1
Comments3

Как отследить состояние сетевого соединения в Swift? Привет, нативная реализация, пока, Reachability

Reading time5 min
Views9.6K

Рассмотрим нативное решение для мониторинга сетевого подключения на iOS с помощью Swift 5 и использования Network Link Conditioner.

Читать далее
Total votes 3: ↑3 and ↓0+3
Comments3

Производительность встроенных функций высшего порядка в сравнении с циклом for-in в Swift

Reading time6 min
Views5K

Самые популярные функции высшего порядка - это map, filter и reduce. Мы все используем их, так как думаем, что синтаксис намного лучше, и писать их даже быстрее, чем старый способ for-in loop. Но так ли это на самом деле? Задумывались ли вы когда-нибудь о производительности этих встроенных функций? Они встроенные, поэтому, естественно, они должны быть лучше, не правда ли? Давайте погрузимся в эти функции вместе, чтобы выяснить, так ли это на самом деле.

Спойлер — не всё так однозначно!
Total votes 7: ↑5 and ↓2+3
Comments5

Apple всё ещё следит за вами. Без вашего согласия

Reading time4 min
Views11K

В текущей версии macOS Monterey, при каждом обновлении системы на системе, содержащей чип M1, такой же как и все новые блестящие/быстрые маки с ARM ("Apple Silicon"), процесс обновления обращается в Apple, чтобы получить специальную подпись загрузки, известную на жаргоне Apple как "билет" (он же ticket).

Это делается абсолютно незашифрованным способом, через стандартный открытый 80 порт HTTP (точно такой же протокол, который запрещен для использования сторонними разработчиками приложений в App Store при передаче приватных данных, таких как уникальные идентификаторы, служащие PII) на хост gs.apple.com.

HTTP-запрос включает неизменяемые аппаратные уникальные идентификаторы (серийные номера чипов, известные как ECID), которые функционируют как суперкуки, и они видны вашей локальной сети, вашему интернет-провайдеру (или гостинице, или кофейне), всем, кто следит за сетевыми магистралями, и, конечно же, самим Apple.

Это позволяет любому определить примерное местоположение устройства, даже если он не находится рядом. Из-за того, что он может видеть IP-адрес клиента (что эквивалентно примерно геолокации на уровне города) и серийный номер устройства.

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

При каждом обновлении системы делается новый запрос, и пользователям предлагается включить автообновление, включая автоматическое отслеживание.

Читать далее
Total votes 23: ↑21 and ↓2+23
Comments8

Структурированный параллелизм (structured concurrency) в Swift

Reading time9 min
Views4.2K

Узнайте, как работать с объектом Task для безопасного выполнения асинхронных операций с использованием новых API параллелизма в Swift.

Читать далее
Rating0
Comments3

50 вопросов и ответов для собеседования по Swift в 2022 году

Reading time14 min
Views50K

Перед вами список из 50 вопросов и ответов для собеседования по Swift. Эти вопросы посвящены программированию на Swift и разработке приложений для iOS. Вы должны знать ответы на них, прежде чем у вас появится шанс продемонстрировать свои навыки перед интервьюером.

Кроме того, не стесняйтесь использовать эти вопросы для собеседования по Swift для тренировки перед экзаменом.

Эти вопросы для собеседования расположены в случайном порядке, а не от простого к сложному.

Читать далее
Total votes 6: ↑4 and ↓2+2
Comments17

Как я занял третье место в конкурсе Telegram и выиграл $ 2 000

Reading time4 min
Views8.1K

Краткая предыстория.

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

Задача: Создать кроссплатформенный модуль на C++ для корректировки внешности. Создать приложение для iOS или Android, которое демонстрирует работу этого модуля, в режиме реального времени преобразовывая видео из фронтальной камеры.

Читать далее
Total votes 12: ↑10 and ↓2+9
Comments3

О применении CMTime

Reading time6 min
Views9.1K
image Привет, Хабр! Предлагаю ознакомиться с переводом статьи Уоррена Мура о понимании и применении CMTime. В своём предыдущем посте, связанном с работой с видео, я обещал более подробно рассказать об этих замечательных и столь важных структурах. Основной акцент будет сфокусирован на важности взгляда на время, описании структуры CMTime, но и без простейших примеров не обойдётся.
Заинтересовало? Милости прошу под кат
Total votes 10: ↑4 and ↓6-2
Comments1

Объединение нескольких видео в iOS с помощью AVMutableVideoComposition

Reading time5 min
Views4.8K
image Здравствуй, Хабр!
В одном из проектов мне понадобилось решить задачу объединения видео, в частности, пользователь мог поставить видео на паузу, после чего продолжить запись (количество итераций было неизвестно). Поэтому необходимо было найти способ для решения этой задачи доступными средствами. Конечно, в голову пришло два варианта, либо писать всё сразу в один файл, либо записывать в разные, а склеивать уже после сессии. Я решил остановиться на втором, а что из этого вышло, читайте под катом.
Подробнее
Total votes 10: ↑8 and ↓2+6
Comments0

Information

Rating
Does not participate
Registered
Activity

Specialization

Mobile Application Developer
Lead
iOS development