Привет, Хабр! Меня зовут Игорь, я занимаюсь мобильной разработкой в компании ГРИ, часть холдинга Sunlight. Сегодня хочу поделиться опытом создания плеера для воспроизведения плейлистов в форматах m3u и m3u8.
Engineering Manager with 12+ years of experience
Квазигосударство Amazon
Amazon — титан коммерции, маркетинговая платформа, сеть доставки и логистики, платежная служба, издательство, платформа для фильмов и сериалов собственного производства, ведущий хостинг облачных серверов. Вроде все круто. Но не все.
«Идиллия» оплачена тяжелым трудом, уходом от налогов и экономическими махинациями.
Как одолеть вопросы по АБ тестам с собеседований
Данная статья продолжение моих "баталий" с HR-ами в январе этого года: погружусь в тему АБ тестов на основе своего опыта прохождения собеседований.
Т.к. данная тема не самая простая для аналитиков, и не только для нас. То давайте начнем с базовых теоретических вопросов, которые спрашивают на собесах - можно использовать данную статью, как гайд для погружения в АБ тесты.
Лайфхаки по многомодульности в iOS
Всем привет! Меня зовут Юра, я iOS-разработчик в core-команде. В этой статье расскажу, как мы работаем с многомодульностью в наших iOS-приложениях. Поговорим про окружение и структуру нашего проекта, затронем тему скорости компиляции и разберем немного кодогенерации.
Про двумерную упаковку: offline алгоритмы
Издревле (как минимум, с начала прошлого века) математики задавались вопросом, как оптимально разместить некоторое количество
От задачи о ранце отпочковалась задача об упаковке в контейнеры (Bin Packing Problem), одной из разновидностей которых является задача двумерной упаковки (2-Dimensional Bin Packing). Снова отбросив несколько вариаций, мы наконец придем к двумерной упаковке в полуограниченную полосу (2-Dimensional Strip Packing, 2DSP). Чувствуете, сколько интересного уже осталось за кадром? Но мы еще не закончили продираться сквозь классификацию. У 2DSP есть два варианта входных данных: когда набор упаковываемых объектов известен заранее (offline-проблема) и когда данные поступают порциями (online-проблема).
В этой статье рассматриваются алгоритмы решения offline-варианта 2DSP. Под катом немного матчасти и много картинок с цветными квадратиками.
В чем, собственно, проблема?
UIKit ты вообще про UI?
Спойлер - нет! Ну, не совсем. Мы привыкли воспринимать UI как визуальную составляющую, но ведь UI – это User Interface. Так вот, интерфейс – это то, с помощью чего пользователь взаимодействует с нашим приложением. В случае с графическим интерфейсом пользователь его видел и воспринимает информацию. Однако он статичный и, когда пользователь хочет взаимодействовать с ним, он использует другие интерфейсы: тачскрин, клавиатуру или мышку. Да, это тоже интерфейсы. И UIKit как раз таки отвечает не за графический интерфейс, а за распознавание пользовательских жестов и их обработку.
Когда я начинал писать эту статью, хотелось рассказать много фундаментальных вещей. Одновременно с этим хотелось, чтобы она была понятна всем, поэтому я начал с описательной части. Со временем понял, что материала получается слишком много и я решил разбить ее на несколько частей. Возможно какие-то вещи для вас покажутся совсем простыми и очевидными, но они нужны для того, чтобы хорошо разобраться и ориентироваться, как же все-таки устроен UI.
Так как же он устроен? У нас же есть базовый класс UIView и куча его стандартных наследников. Мы можем сами создавать свои вью и как угодно их кастомизировать. И все это видим на экране. Почему тогда UIKit и UIView – это не про графический интерфейс? Давайте разбираться.
Раннер Emcee. Всем айосерам по тестовой ферме
В iOS-приложении Авито куча UI-тестов — вы это уже наверняка знаете, потому что мы говорим про них постоянно. Это позволяет нам релизиться раз в неделю, причём регрессионное тестирование с ручными проверками мы проводим раз в две недели. Между ними в релиз идёт приложение, которое протестировано только нашими UI- и unit-тестами.
Чтобы поддерживать такие масштабы автотестирования, мы написали тест-раннер Emcee, который умеет скейлиться в ширину по физическим машинкам.
Протокольно ориентированное программирование, часть 2
В продолжение темы разберемся в протокольных типах и обобщенном (generic) коде.
По ходу будут рассмотрены следующие вопросы:
- реализация полиморфизма без наследования и ссылочных типов
- как объекты протокольных типов хранятся и используются
- как с ними работает отправка метода
Compositional Layout в iOS 13. Основы
Добрый день,
На практике iOS разработчик часто сталкивается с задачей показа большого количества информации в виде списка или в виде коллекции, как правило, для этого отлично подходят UITableView
или UICollectionView
. Также часто встречается задача реализации экрана, который представляет собой комбинацию списка и коллекции.
В данной статье рассмотрим, какие новые возможности принесла iOS 13 для реализации этой задачи.
Как подготовиться к iOS-собеседованию
Всем привет! Меня зовут Илья, и я провожу собеседования *хлоп-хлоп-хлоп*. Сейчас работаю на позиции Principal iOS Engineer в inDriver, и мой фокус смещен в сторону технических собеседований. До этого руководил мобильной разработкой в в «Альфа-Банке» и был кем-то вроде нанимающего менеджера. Это тот человек, который говорит финальное слово по кандидату и определяет, какую циферку написать в оффере. Помимо «рабочих» собеседований, я иногда собеседую на аутсорсе, а также помогаю разработчикам к ним готовиться.
В общем, собеседования давно стали частью моей жизни. В этой статье мы верхнеуровнево пройдемся по всем этапам этого процесса, от идеи до офера, и обсудим, как успешно дойти до конца.
Как пользоваться утилитой Instruments в Xcode
В данный момент ваша карьера разработчика iOS находится в том состоянии, когда вы написали одно приложение или два, и вам конечно интересно, что вы можете сделать, чтобы ваши приложения стали ещё лучше.
Помимо улучшения вашего приложения путем добавления в него всяких «завитушек», есть одна вещь, которую все хорошие разработчики должны сделать со своим кодом – обработать его утилитой Instruments!
Это руководство покажет вам, как использовать наиболее важные особенности утилиты под названием Instruments, которая поставляется вместе с Xcode. Она позволит вам проверить свой программный код на наличие проблем с производительностью, утечкой памяти и других проблем.
Планка найма для инженеров: что это за зверь?
За последние полгода Рекурсивный Кактус (так он представился при регистрации на нашем сайте) готовился к будущим собеседованиям, выделяя каждую неделю минимум 20-30 часов на упражнения LeetCode, учебники по алгоритмам и, конечно, практику интервью на нашей платформе для оценки своего прогресса.
Типичный рабочий день Рекурсивного Кактуса:
Время | Занятие |
6:30 – 7:00 | Подъём |
7:00 – 7:30 | Медитация |
7:30 – 9:30 | Решение задач по алгоритмам |
9:30 – 10:00 | Путь на работу |
10:00 – 18:30 | Работа |
18:30 – 19:00 | Путь с работы |
19:00 – 19:30 | Общение с женой |
19:30 – 20:00 | Медитация |
20:00 – 22:00 | Решение задач по алгоритмам |
Ничего такого о культурном коде
С одной стороны, разработчиков нынче ищут днём с огнём: шлют френдли месседжи на почту и в телегу, нетворкают на митапах и конфах, скоро и домой начнут приходить. Спасу нет от этих предложений пообщаться по поводу новой интересной вакансии. С другой стороны, их всё чаще сначала проверяют на соответствие корпоративным ценностям компании, прежде чем пропустить на техническое интервью.
Об этом, а также о найме, онбординге и мотивации разработчиков пообщались с Артёмом Сусековым – development manager из компании Miro.
Стажировки в Google: Цюрих, Лондон и Кремниевая долина
iOS. Работа с сетью, когда приложение не запущено
Пользователи ожидают, что работа с сетью происходит «волшебно» и незаметно. Зависит эта волшебность от разработчиков системы и приложений. На систему повлиять сложно, поэтому ограничимся приложением.
Тема эта сложная и проблем там несчётное количество. Обсудим те, с которыми пришлось столкнуться за последние несколько месяцев. Сразу прошу прощения за объём. Покороче никак, слишком много мелочей, на которые стоит обратить внимание.
График Гартнера 2019: о чём все эти модные слова?
Мы расшифровали, что скрывается за красивыми словами на этом графике, чтобы вы могли тоже говорить на этом языке.
Пилим статью на Хабр
А также про выбор и покупку российских вин.
Мало опыта — много собеседований: как тимлидам проводить интервью
Проходит время, на интервью приходят неподходящие кандидаты, а те, что нравятся, отказываются от офферов. Появляется ощущение, что бродишь по запутанному лабиринту, потому что неясно, где конец этого пути, можно ли что-то исправить. Но существует набор действий, который поможет приблизить момент, когда «тот самый кандидат» станет частью вашей команды.
Меня зовут Катя Гаврилова, я основатель рекрутингового агентства DigitalHR. Однажды я выступала на Saint TeamLead Conf в 2018 году, и мой доклад «Роль тимлида в рекрутинге» попал в топ-5 лучших. А уже на Moscow TeamLead Conf доклад «Мало опыта — много собеседований: как проводить интервью, чтобы от вас не скрывали правду» не прошел в топ, но я до сих пор получаю на него хорошие отзывы от разработчиков, поэтому решила поделиться его версией в текстовом варианте. Целевая аудитория — тимлиды и CTO, которые недавно стали подбирать сотрудников к себе в команду.
All you need is URL
Ежедневно пользователи ВКонтакте обмениваются 10 млрд сообщений. Они отправляют друг другу фотографии, комиксы, мемы и другие вложения. Расскажем, как в iOS-приложении мы придумали загружать картинки с помощью
URLProtocol
, и пошагово разберём, как реализовать свой.Оценка сложности алгоритмов
Информация
- В рейтинге
- Не участвует
- Откуда
- Москва, Москва и Московская обл., Россия
- Дата рождения
- Зарегистрирован
- Активность