Как стать автором
Обновить
30
0
Виктор Грушевский @Viktorianec

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Время на прочтение3 мин
Количество просмотров739

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Спойлер — не всё так однозначно!
Всего голосов 7: ↑5 и ↓2+3
Комментарии5

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

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

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

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

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

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

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

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

Читать далее
Всего голосов 27: ↑25 и ↓2+23
Комментарии8

Работа с Diffable data source и table views с использованием UIKit

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

В этом руководстве мы создадим экран, позволяющий осуществлять одиночный и множественный выбор, используя Diffable data source и table view.

Читать далее
Рейтинг0
Комментарии4

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

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

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

Читать далее
Рейтинг0
Комментарии3

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

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

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

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

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

Читать далее
Всего голосов 6: ↑4 и ↓2+2
Комментарии16

Шорткаты для Xcode в виде Cheat sheet

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

Вдохновился референсом от Tower и создал русскую версию таблицы с шорткатами для нашей среды разработки.

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

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

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

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

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

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

Читать далее
Всего голосов 13: ↑11 и ↓2+9
Комментарии3

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

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

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

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

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность

Специализация

Mobile Application Developer
Lead
iOS development