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

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

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

Технотекст 2022: шорт-листы по номинациям

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

Авторы отправили 675 заявок на Технотекст, а мы их перебрали и готовы показать номинантов. Короткие списки получились очень даже длинными, что не может не радовать.

Победителей объявим до 14 апреля. Критерии оценки, списки судей и подборки статей по номинациям — в этом посте.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Тест-ревью: как прошли два года написания unit-тестов

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

Часто слышу мнение, что unit-тесты не нужны для мобильной разработки: в приложении должно быть минимум логики, основная работа с UI, а его сложно тестировать, да ещё и тесты отнимают время, которое можно было бы потратить на написание фич. 

За этим мнением скрывается простая правда — люди, которые так говорят, не умеют писать тесты. Не умеют писать их быстро; писать там, где нужно; писать так, чтобы была ощутимая польза для бизнеса. Я тоже был таким — понимал, что тесты нужны, но не понимал какие, где и как их писать. 

Рассказываю, что поменялось спустя 2 года и 4 тысячи тестов. 

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

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

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

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

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

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

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

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

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

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

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

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

Самые популярные функции высшего порядка - это 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), и может увидеть, куда они перемещаются, поскольку эти обновления выпускаются несколько раз в квартал.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Архитектурные подходы в iOS-приложениях

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

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

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

Харэ жрать? Говорим о пищевых привычках современного айтишника

Время на прочтение12 мин
Количество просмотров63K
Читатели Хабра, в основном, люди интеллектуального труда и нередко наша жизнь ограничивается схемой «работа, дом, редкие посиделки с друзьями в кафе или баре». А если ещё есть заботливый работодатель, предоставляющий обеды, печеньки, снеки и напитки без ограничений, то всё, — привет, лишний вес. Конечно, среди нас есть фанаты бега, кроссов, марафонов, спортзалов и Iron Man, но их по-прежнему мало.

На Хабре нередко пишут про физические нагрузки, стоячие столы и прочие приспособления, но мы сегодня поговорим… о еде. Давайте отвлечёмся от работы, подумаем о своём здоровье и о пищевых привычках, а заодно выясним, не сгущаем ли мы краски. Тем, кто ест за компьютером — приятного аппетита!


Беговая дорожка, не поспоришь
Читать дальше →
Всего голосов 86: ↑74 и ↓12+62
Комментарии358

Как писать на Objective-C в 2018 году. Часть 1

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

Большинство iOS-проектов частично или полностью переходят на Swift. Swift — замечательный язык, и за ним будущее разработки под iOS. Но язык нераздельно связан с инструментарием, а в инструментарии Swift есть недостатки.


В компиляторе Swift по-прежнему находятся баги, которые приводят к его падению или генерации неправильного кода. У Swift нет стабильного ABI. И, что очень важно, проекты на Swift собираются слишком долго.


В связи с этим существующим проектам может быть выгоднее продолжать разработку на Objective-C. А Objective-C уже не тот, что был раньше!


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


Читать дальше →
Всего голосов 37: ↑34 и ↓3+31
Комментарии49

«Программист-прагматик. Путь от подмастерья к мастеру»: коротко о главном (часть первая)

Время на прочтение22 мин
Количество просмотров75K
О книге «Программист-прагматик. Путь от подмастерья к мастеру» Эндрю Ханта и Дэвида Томаса знают, наверное, все, кто занимается программированием, причем многие — в основном из упоминаний в подборках и цитат в более современных статьях. Учитывая, что этот сборник практических советов для разработчиков скоро отметит двадцатилетний юбилей, тот факт, что его до сих пор приводят как источник ценной информации, вызывает уважение. Секрет прост: авторы, хоть и делали акцент на практической применимости своих подсказок, говорили по большей части о фундаментальных принципах построения рабочего процесса. Многие технические моменты, которые упоминаются в тексте, действительно давно устарели, но базовые подходы к разработке, тестированию, взаимодействию внутри команды и с аудиторией остаются актуальными.


Ниже вы найдете конспект первых четырех глав; речь в них идет об авторской концепции самообразования, основах прагматического подхода в программировании и правилах подбора инструментов. Книга очень удобна для «точечного» чтения: материал представляется в виде отдельных параграфов-подсказок, снабженных перекрестными ссылками. За рамками этого конспекта остались примеры из конкретных языков, разбор кейсов из авторской практики, те самые ссылки, упражнения на закрепление и некоторые забавные аналогии, оживляющие текст — так что рекомендую ознакомиться с оригиналом, если какие-то из тезисов вас заинтересуют. Приятного чтения!
Читать дальше →
Всего голосов 20: ↑19 и ↓1+18
Комментарии5

Как я слил 1000$ в продвижение игры и что из этого получилось

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


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

Для многих знакома ситуация, делал-делал, а кроме друзей так и никто и не увидел игру, а ведь так старался! Под катом не будет расплывчатых формулировок или предположений по продвижению. Конкретно ссылки — конкретно результат. Поехали!
Читать дальше →
Всего голосов 82: ↑81 и ↓1+80
Комментарии79

Чатбот, который «как Siri, только круче» на наивном Байесовском классификаторе

Время на прочтение4 мин
Количество просмотров17K
Всем, привет! Не секрет, что в последнее время в мире происходит резкий всплеск активности, по поводу исследования такой темы, как искусственный интеллект. Вот и меня это явление не обошло стороной.

Предыстория


Всё началось, когда в самолёте я посмотрел типичную, на первый взгляд американскую комедию – «Почему, он?» (англ. Why him? 2016). Там, у одного из ключевых персонажей в доме был установлен голосовой помощник, который нескромно позиционировал себя «как Siri, только круче». К слову бот из фильма умел не только вызывающе разговаривать с гостями, иногда ругаясь матом, но также контролировать весь дом и прилегающую территорию – от центрального отопления до смыва унитаза. После просмотра фильма, мне пришла идея реализовать что-то подобное и я начал писать код.
Читать дальше →
Всего голосов 25: ↑23 и ↓2+21
Комментарии13

Информация

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

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

Mobile Application Developer
Lead
iOS development