Pull to refresh
11
0
Send message

Квазигосударство Amazon

Reading time 14 min
Views 28K

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

«Идиллия» оплачена тяжелым трудом, уходом от налогов и экономическими махинациями.

Читать далее
Total votes 87: ↑76 and ↓11 +65
Comments 42

Как одолеть вопросы по АБ тестам с собеседований

Reading time 9 min
Views 15K

Данная статья продолжение моих "баталий" с HR-ами в январе этого года: погружусь в тему АБ тестов на основе своего опыта прохождения собеседований.

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

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

Лайфхаки по многомодульности в iOS

Reading time 8 min
Views 5.5K

Всем привет! Меня зовут Юра, я iOS-разработчик в core-команде. В этой статье расскажу, как мы работаем с многомодульностью в наших iOS-приложениях. Поговорим про окружение и структуру нашего проекта, затронем тему скорости компиляции и разберем немного кодогенерации. 

Погнали
Total votes 9: ↑9 and ↓0 +9
Comments 8

Про двумерную упаковку: offline алгоритмы

Reading time 12 min
Views 66K
Сегодня, дорогой Хабр, я расскажу тебе историю о комбинаторной оптимизации.
Издревле (как минимум, с начала прошлого века) математики задавались вопросом, как оптимально разместить некоторое количество пива нужных и полезных предметов в рюкзаке. Была сформулирована задача о ранце и ее подзадачи — тысячи их! — которые заинтересовали информатиков, криптографов и даже лингвистов.

От задачи о ранце отпочковалась задача об упаковке в контейнеры (Bin Packing Problem), одной из разновидностей которых является задача двумерной упаковки (2-Dimensional Bin Packing). Снова отбросив несколько вариаций, мы наконец придем к двумерной упаковке в полуограниченную полосу (2-Dimensional Strip Packing, 2DSP). Чувствуете, сколько интересного уже осталось за кадром? Но мы еще не закончили продираться сквозь классификацию. У 2DSP есть два варианта входных данных: когда набор упаковываемых объектов известен заранее (offline-проблема) и когда данные поступают порциями (online-проблема).

В этой статье рассматриваются алгоритмы решения offline-варианта 2DSP. Под катом немного матчасти и много картинок с цветными квадратиками.

В чем, собственно, проблема?


Читать дальше →
Total votes 33: ↑33 and ↓0 +33
Comments 14

UIKit ты вообще про UI?

Reading time 11 min
Views 26K

Спойлер - нет! Ну, не совсем. Мы привыкли воспринимать UI как визуальную составляющую, но ведь UI – это User Interface. Так вот, интерфейс – это то, с помощью чего пользователь взаимодействует с нашим приложением. В случае с графическим интерфейсом пользователь его видел и воспринимает информацию. Однако он статичный и, когда пользователь хочет взаимодействовать с ним, он использует другие интерфейсы: тачскрин, клавиатуру или мышку. Да, это тоже интерфейсы. И UIKit как раз таки отвечает не за графический интерфейс, а за распознавание пользовательских жестов и их обработку.

Когда я начинал писать эту статью, хотелось рассказать много фундаментальных вещей. Одновременно с этим хотелось, чтобы она была понятна всем, поэтому я начал с описательной части. Со временем понял, что материала получается слишком много и я решил разбить ее на несколько частей. Возможно какие-то вещи для вас покажутся совсем простыми и очевидными, но они нужны для того, чтобы хорошо разобраться и ориентироваться, как же все-таки устроен UI.

Так как же он устроен? У нас же есть базовый класс UIView и куча его стандартных наследников. Мы можем сами создавать свои вью и как угодно их кастомизировать. И все это видим на экране. Почему тогда UIKit и UIView – это не про графический интерфейс? Давайте разбираться.

Читать далее
Total votes 28: ↑28 and ↓0 +28
Comments 16

Раннер Emcee. Всем айосерам по тестовой ферме

Reading time 4 min
Views 3.6K

В iOS-приложении Авито куча UI-тестов — вы это уже наверняка знаете, потому что мы говорим про них постоянно. Это позволяет нам релизиться раз в неделю, причём регрессионное тестирование с ручными проверками мы проводим раз в две недели. Между ними в релиз идёт приложение, которое протестировано только нашими UI- и unit-тестами.

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

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

Протокольно ориентированное программирование, часть 2

Reading time 8 min
Views 17K

В продолжение темы разберемся в протокольных типах и обобщенном (generic) коде.


По ходу будут рассмотрены следующие вопросы:


  • реализация полиморфизма без наследования и ссылочных типов
  • как объекты протокольных типов хранятся и используются
  • как с ними работает отправка метода
Читать дальше →
Total votes 6: ↑6 and ↓0 +6
Comments 5

Compositional Layout в iOS 13. Основы

Reading time 12 min
Views 40K

Добрый день,


На практике iOS разработчик часто сталкивается с задачей показа большого количества информации в виде списка или в виде коллекции, как правило, для этого отлично подходят UITableView или UICollectionView. Также часто встречается задача реализации экрана, который представляет собой комбинацию списка и коллекции.


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


Читать дальше →
Total votes 9: ↑9 and ↓0 +9
Comments 5

Как подготовиться к iOS-собеседованию

Reading time 12 min
Views 24K

Всем привет! Меня зовут Илья, и я провожу собеседования *хлоп-хлоп-хлоп*. Сейчас работаю на позиции Principal iOS Engineer в inDriver, и мой фокус смещен в сторону технических собеседований. До этого руководил мобильной разработкой в в «Альфа-Банке» и был кем-то вроде нанимающего менеджера. Это тот человек, который говорит финальное слово по кандидату и определяет, какую циферку написать в оффере. Помимо «рабочих» собеседований, я иногда собеседую на аутсорсе, а также помогаю разработчикам к ним готовиться. 

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

Читать далее
Total votes 16: ↑16 and ↓0 +16
Comments 13

Как пользоваться утилитой Instruments в Xcode

Reading time 16 min
Views 62K

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

Помимо улучшения вашего приложения путем добавления в него всяких «завитушек», есть одна вещь, которую все хорошие разработчики должны сделать со своим кодом – обработать его утилитой Instruments!

Это руководство покажет вам, как использовать наиболее важные особенности утилиты под названием Instruments, которая поставляется вместе с Xcode. Она позволит вам проверить свой программный код на наличие проблем с производительностью, утечкой памяти и других проблем.
Читать дальше →
Total votes 45: ↑40 and ↓5 +35
Comments 15

Планка найма для инженеров: что это за зверь?

Reading time 19 min
Views 28K
Последние пять лет Рекурсивный Кактус трудился фулстек-разработчиком в топовой технологической компании, но сейчас решил сменить работу.

За последние полгода Рекурсивный Кактус (так он представился при регистрации на нашем сайте) готовился к будущим собеседованиям, выделяя каждую неделю минимум 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 Решение задач по алгоритмам
Total votes 42: ↑40 and ↓2 +38
Comments 105

Ничего такого о культурном коде

Reading time 6 min
Views 8.8K
Внимание, вопрос: что за дела и в какой такой момент культурный код стал важнее настоящего?

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

Об этом, а также о найме, онбординге и мотивации разработчиков пообщались с Артёмом Сусековым – development manager из компании Miro.


Читать дальше →
Total votes 26: ↑20 and ↓6 +14
Comments 23

Стажировки в Google: Цюрих, Лондон и Кремниевая долина

Reading time 17 min
Views 33K
Три года подряд я проводила лето на стажировках в компании Google: сначала в Цюрихе, затем в Лондоне и, наконец, в Саннивейл (город в штате Калифорния, США). В этом посте я поделюсь тем, как подавать заявки и проходить собеседования, какими проектами я занималась и чем стажировки в Европе отличались от США. А еще расскажу, чем Цюрих понравился мне больше Кремниевой долины, где лучше обеды и вечеринки и почему я пока решила остаться в России.



Читать дальше →
Total votes 49: ↑44 and ↓5 +39
Comments 37

iOS. Работа с сетью, когда приложение не запущено

Reading time 14 min
Views 24K

image


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


Тема эта сложная и проблем там несчётное количество. Обсудим те, с которыми пришлось столкнуться за последние несколько месяцев. Сразу прошу прощения за объём. Покороче никак, слишком много мелочей, на которые стоит обратить внимание.

Читать дальше →
Total votes 17: ↑17 and ↓0 +17
Comments 18

График Гартнера 2019: о чём все эти модные слова?

Reading time 20 min
Views 37K
График Гартнера для тех, кто работает в сфере технологий, – всё равно что выставка высокой моды. Взглянув на него, вы можете заранее узнать, какие слова самые хайповые в этом сезоне и что вы услышите на всех ближайших конференциях.

Мы расшифровали, что скрывается за красивыми словами на этом графике, чтобы вы могли тоже говорить на этом языке.



Total votes 32: ↑32 and ↓0 +32
Comments 6

Пилим статью на Хабр

Reading time 12 min
Views 3.5K
Под катом частный пример поиска темы, ее адаптации для технической аудитории и формирование правильной структуры статьи. Плюс немного про оформление и читаемость.



А также про выбор и покупку российских вин.

Читать дальше →
Total votes 32: ↑22 and ↓10 +12
Comments 8

Мало опыта — много собеседований: как тимлидам проводить интервью

Reading time 11 min
Views 19K
Поначалу подбор сотрудников вдохновляет, появляется возможность познакомиться с новыми людьми, узнать, как выстроены процессы в других компаниях, легально и напрямую спрашивая об этом.

Проходит время, на интервью приходят неподходящие кандидаты, а те, что нравятся, отказываются от офферов. Появляется ощущение, что бродишь по запутанному лабиринту, потому что неясно, где конец этого пути, можно ли что-то исправить. Но существует набор действий, который поможет приблизить момент, когда «тот самый кандидат» станет частью вашей команды.

image

Меня зовут Катя Гаврилова, я основатель рекрутингового агентства DigitalHR. Однажды я выступала на Saint TeamLead Conf в 2018 году, и мой доклад «Роль тимлида в рекрутинге» попал в топ-5 лучших. А уже на Moscow TeamLead Conf доклад «Мало опыта — много собеседований: как проводить интервью, чтобы от вас не скрывали правду» не прошел в топ, но я до сих пор получаю на него хорошие отзывы от разработчиков, поэтому решила поделиться его версией в текстовом варианте. Целевая аудитория — тимлиды и CTO, которые недавно стали подбирать сотрудников к себе в команду.
Читать дальше →
Total votes 49: ↑40 and ↓9 +31
Comments 69

All you need is URL

Reading time 13 min
Views 8.6K
image

Ежедневно пользователи ВКонтакте обмениваются 10 млрд сообщений. Они отправляют друг другу фотографии, комиксы, мемы и другие вложения. Расскажем, как в iOS-приложении мы придумали загружать картинки с помощью URLProtocol, и пошагово разберём, как реализовать свой.
Читать дальше →
Total votes 14: ↑14 and ↓0 +14
Comments 5

Оценка сложности алгоритмов

Reading time 6 min
Views 609K
Не так давно мне предложили вести курс основ теории алгоритмов в одном московском лицее. Я, конечно, с удовольствием согласился. В понедельник была первая лекция на которой я постарался объяснить ребятам методы оценки сложности алгоритмов. Я думаю, что некоторым читателям Хабра эта информация тоже может оказаться полезной, или по крайней мере интересной.
Читать дальше →
Total votes 84: ↑72 and ↓12 +60
Comments 66

Когда почта доставляет: боремся с потерями push-уведомлений в iOS

Reading time 17 min
Views 15K
Со стороны пользователя почтовый клиент — приложение нехитрое. Разработчики Яндекс.Почты даже шутят, что в приложении всего три экрана: список писем; отправка письма; экран about.

Но очень много интересного происходит под капотом. Как многие мобильные приложения, Почта использует push-уведомления, чтобы взаимодействовать с пользователями. Как многие iOS-приложения, Почта теряет часть уведомлений в силу особенностей работы Apple Push Notification Service.

Руководитель iOS-группы Яндекс.Почты Ася Свириденко докажет, что даже с учетом ограничений системы, с потерями push-уведомлений можно и нужно бороться, если они критичны для вашего приложения. Для Почты это так, потому что push-уведомления о новых письмах — это то, ради чего пользователь устанавливает приложение. Если же для вашего приложения доставка push-уведомлений не так критична, узнать, какие велосипеды нагородила мобильная Яндекс.Почта, все равно интересно.


Речь пойдет о remote notification, то есть уведомлениях, которые приходят с сервера через APNs (Apple Push Notification Service). Локальные уведомления затрагивать не будем и поговорим о том:

  • Как выглядит API для работы с push-уведомлениями. Рассмотрим схему доставки push-уведомлений и то, где в этой схеме могут возникать потери. 
  • Как решили бороться с потерями в Яндекс.Почте — об очереди push-уведомлений.
  • Как логировать и какие еще сложности могут встретиться.
Total votes 30: ↑30 and ↓0 +30
Comments 9

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity