Как стать автором
Обновить
0
Roman Ekimov @toywarread⁠-⁠only

Пользователь

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

Платформа как сервис в Авито: как это устроено

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

Привет, Хабр! Меня зовут Александр Лукьянченко, я тимлид команды, которая занимается платформой в Авито. В этой статье я расскажу о проблемах, которые возникали у нас при построении платформы для инженеров и том, какие технические решения мы использовали, чтобы эти проблемы устранить. Текст охватывает ту часть наших наработок, которые потенциально можно переиспользовать другим компаниям.


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

В поисках идеальной архитектуры

Время на прочтение8 мин
Количество просмотров12K
image
За 9 лет работы фич в проектах роботов становилось все больше, запутаться в коде становилось все проще.

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

Главная проблема, которая возникает при долгосрочном развитии приложения – масштабируемость. Решить ее может переход на новую архитектуру или рефакторинг кодовой базы и добавление новых сущностей, которые разгружают объекты с большим количеством обязанностей.
Читать дальше →
Всего голосов 18: ↑14 и ↓4+10
Комментарии7

SwiftLint — чистота и порядок в iOS проекте

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

Думаю, все знают, как бывает непросто поддерживать соблюдение code style и соглашений в iOS-проекте. Сегодня поговорим о том, как автоматизировать этот процесс с помощью утилиты SwiftLint.
Читать дальше →
Всего голосов 23: ↑22 и ↓1+21
Комментарии17

[UPDATED + Комментарии] Сначала они воруют, а когда ты побеждаешь, то тебя убивают

Время на прочтение9 мин
Количество просмотров178K
Кому-то может показаться, что это начало какой-то детской загадки, но на самом деле это реальность. Ответ на нее Департамент Информационных Технологий.

Заранее говорю, что статья является лишь сводом информации. Каждый из вас может сделать собственные выводы.

[UPD]: ДИТ ответил в комментариях
[UPD]: ДИТ прислал официальный ответ
[UPD]: Сайты, которые указывают на связь компании Альтрикс и компании Тактик Лабс почистили, но интернет помнит все
Часть 2. Сначала они воруют, а когда ты побеждаешь, то тебя убивают
Читать дальше →
Всего голосов 536: ↑521 и ↓15+506
Комментарии659

Простая напоминалка в Telegram

Время на прочтение2 мин
Количество просмотров87K
Хотел бы поделиться своей разработкой, которая, думаю, пригодится пользователям Telegram.

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

Для меня главным требованием к таким напоминалкам является простота установки напоминания, иначе говоря, возможность ввода напоминания своими словами. Например, «через 20 минут перезвонить коллеге» или «завтра в 15 в налоговую». Важно также, чтобы напоминалка умела откладывать напоминания.

Подобную напоминалку я как-то искал под Linux и, не найдя, написал сам. А для Windows я всем советовал похожую программку XMinder.

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

Я подумал, было бы здорово найти такого бота, который бы принимал запросы на напоминания, написанные своими словами, и отправлял бы в установленное время соответствующие сообщения. Но такого бота, который бы понимал простой русский язык, я не нашел и написал своего.

Бот называется @remindmemegabot. Реализован на языке Golang с использованием библиотек tgbotapi и at и развернут на сервере под управлением Linux.
Читать дальше →
Всего голосов 34: ↑22 и ↓12+10
Комментарии32

Как устроено автоматическое тестирование в Почте Mail.Ru под iOS

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

image


Некоторое время назад мы рассказали вам об автоматическом тестировании нашей Почты на Android и получили огромное количество вопросов от читателей. Сегодня приоткроем вам часть нашей «внутренней кухни», которая касается автотестирования на iOS. Для тестирования каждой сборки мы проводим более 500 автотестов, которые выполняются менее чем за один час. Как мы их реализовывали и зачем? С какими проблемами сталкивались и как смогли их решить? Обо всём этом читайте под катом.

Читать дальше →
Всего голосов 55: ↑54 и ↓1+53
Комментарии7

Паттерны проектирования, взгляд iOS разработчика. Часть 0. Синглтон-Одиночка

Время на прочтение6 мин
Количество просмотров35K
Я почув і забув.
Я записав і запам'ятав.
Я зробив і зрозумів.
Я навчив іншого, тепер я майстер.
(В. В. Бублик)


Небольшое вступление.


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


И именно эти слова и сподвигли меня на написание данной серии постов. Дело в том, что я — начинающий iOS разработчик, и я очень хочу разобраться в паттернах проектирования. И я не придумал лучшего способа, чем взять книгу "Паттерны проектирования" Эрика и Элизабет Фримен, и написать примеры каждого паттерна на Objective-C и Swift. Таким образом я смогу лучше понять суть каждого паттерна, а также особенности обоих языков.


Содержание:


Часть 0. Синглтон-Одиночка
Часть 1. Стратегия
Часть 2. Наблюдатель


Итак, начнем с самого простого на мой взгляд паттерна.


Одиночка, он же - синглтон
Всего голосов 31: ↑22 и ↓9+13
Комментарии33

33 iOS библиотеки с открытым исходным кодом, которые будут популярны в 2017 году

Время на прочтение5 мин
Количество просмотров24K
Отличного пятничного настроения, друзья!
Сегодня мы приготовили для вас полезный перевод поста основателя Ecler Studios Paweł Białecki, в котором он предлагает нашему вниманию 33 open source проекта для iOS разработчиков.
С помощью своего аккаунта в GitHub он открыл для себя множество перспективных инструментов и отобрал, по его мнению, лучшие из них для своих читателей.


Читать дальше →
Всего голосов 32: ↑27 и ↓5+22
Комментарии15

IT-meetup Superjob «iOS — архитектура дизайна, кода, деплоя»

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

26 января приглашаем iOS-разработчиков на встречу «iOS — архитектура дизайна, кода, деплоя» в новый офис Superjob на Малой Дмитровке. Приходите обмениваться опытом!


Superjob продолжает серию IT-митапов. В этом году мы сделаем акцент на мобильной разработке и Data Science.image


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

Тюнинг Swift компилятора. Часть 2

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

image


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


Ссылка на первую часть для тех, кто пропустил.


Всего голосов 23: ↑20 и ↓3+17
Комментарии4

Тюнинг Swift компилятора. Часть 1

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

image


Обзор Swift 3 компилятора и способы его ускорить. Часть 1.
Развенчание существующих мифов. Мнение о проблемах autocompletion в Xcode.


Читать дальше →
Всего голосов 24: ↑22 и ↓2+20
Комментарии44

27 open-source ништячков для iOS разработчика

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

1. DZNEmptyDataSet


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

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

image


Всего голосов 29: ↑23 и ↓6+17
Комментарии9

Уведомления в iOS 10

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

Уведомления в iOS 10


Говорят, что на этом WWDC не было ничего интересного, кроме интерактивных уведомлений. Действительно, новые уведомления одна из самых интересных новых фич. Не только для разработчиков, но и для простых пользователей. В iOS 10 попытались унифицировать работу с локальными и пуш-уведомлениями и добавили для этого новый фреймворк UserNotifications.framework. Старое API теперь запрещено (deprecated), но его можно использовать до тех пор, пока вы поддерживаете iOS 9.


Новые уведомления умеют:


  • показывать вложения (картинки и видео)
  • отображать кастомный UI
  • показывать стандартный UI в активном приложении (why so long!11)
  • удалять себя из центра уведомлений (!!1)

В этой статье разберемся как это работает. Будет интересно не только разработчикам, но и UX проектировщикам.

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

Яндекс открывает ClickHouse

Время на прочтение14 мин
Количество просмотров168K
Сегодня внутренняя разработка компании Яндекс — аналитическая СУБД ClickHouse, стала доступна каждому. Исходники опубликованы на GitHub под лицензией Apache 2.0.



ClickHouse позволяет выполнять аналитические запросы в интерактивном режиме по данным, обновляемым в реальном времени. Система способна масштабироваться до десятков триллионов записей и петабайт хранимых данных. Использование ClickHouse открывает возможности, которые раньше было даже трудно представить: вы можете сохранять весь поток данных без предварительной агрегации и быстро получать отчёты в любых разрезах. ClickHouse разработан в Яндексе для задач Яндекс.Метрики — второй по величине системы веб-аналитики в мире.

В этой статье мы расскажем, как и для чего ClickHouse появился в Яндексе и что он умеет; сравним его с другими системами и покажем, как его поднять у себя с минимальными усилиями.
Читать дальше →
Всего голосов 176: ↑172 и ↓4+168
Комментарии204

[iOS 10] Встраиваем поддержку Siri в свое iOS приложение

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

Apple показала на WWDC 2016 новые iOS 10 и macOS Sierra, и я не упустил возможность сразу же обновить свои устройста.

Одно из ключевых обновлений — появление SiriKit для разработчиков, теперь у нас с вами есть возможность использовать Siri в собственных приложениях. И мы сегодня сделаем наше первое приложение с поддержкой Siri (исходники проекта в конце статьи)
Читать дальше →
Всего голосов 20: ↑16 и ↓4+12
Комментарии19

Боль и анимация таблиц для iOS. Фреймворк Awesome Table Animation Calculator

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

Представим себе экран обычного мобильного приложения с уже заполненным списком ячеек. С сервера приходит другой список. Нужно посчитать разницу между ними (что добавилось/удалилось) и проанимировать UICollectionView.


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


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

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

RxSwift шпаргалка по операторам (+ PDF)

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


Заинтересовавшись темой функционального программирования я встал на распутье, — какой фреймворк выбрать для ознакомления. ReactiveCocoa — ветеран в iOS кругах, по нему вдоволь информации. Но он вырос с Objective-C, и хотя это не является проблемой, но все же в данный момент я в основном пишу именно на Swift, — хотелось бы взять решение изначально спроектированное с учетом всех плюшек языка. RxSwift же порт Reactive Extensions, имеющего долгую историю, но сам порт свежий и написанный именно под Swift. На нем я и решил остановиться.
Но специфика документации по RxSwift в том, что описание всех команд ведет на reactivex.io, а там в основном дается общая информация, руки у разработчиков не дошли еще сделать документацию именно для RxSwift, что не всегда удобно. Некоторые команды имеют тонкости в реализации, есть те, о которых в общей документации нет ничего кроме упоминания.
Прочитав все главы вики с RxSwift гитхаба, я сразу решил поразбираться с официальными примерами, тут то и стало ясно, что с RX такое не пройдет, нужно хорошо понимать основы, иначе будешь как мартышка с копипастом гранатой. Я начал разбирать самые сложные для понимания команды, потом те, что вроде понятны, но задав себе вопросы по ним я понял, что лишь догадываюсь на то как верно ответить, но не уверен.
В общем ничтоже сумняшеся я решил проработать все операторы RxSwift. Лучший способ что то понять в программировании — запустить код и посмотреть как он отработает. Затем учитывая специфику реактивного программирования — очень полезны схемы, ну и краткое описание на русском. Закончив сегодня работу, я подумал, что грех не поделиться результатами с тем, кто лишь присматривается к теме реактивного программирования.
Много картинок и текста под катом, очень много!
Читать дальше →
Всего голосов 18: ↑18 и ↓0+18
Комментарии21

Адаптивные Split View Controller и Popover в iOS 9 (Swift). Часть 2

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


Это вторая часть обучающей статьи, связанной с изучением адаптивного поведения Split View Controller и Popover в iOS 9 на iPad и на iPhone, которое стало возможным благодаря концепции Size Classes. Обучение состоит в создания на Swift практических приложений, работающих с сервером Flickr.com, который является облачным сервисом для хранения фотографий.

В первой части перечислены пять интересных с точки зрения разработчика случаев применения адаптивного Split View Controller и Popover, которые отличаются сложностью Master. Detail везде один и тот же — единственный Image View Controller, вставленный в Navigation Controller и призванный показывать изображение фотографии:

1. Классический вариант: один элемент в Master, вставленный в Navigation Controller, (часто это Table View Controller)

2. Множество Table View Controller элементов, вставленных в Navigation Controller

3. Tab Bar Controller в качестве Master

4. Случай разных UI и разных пользовательских классов для приборов с разными Size Classes здесь не рассматривается, но идею можно посмотреть в “Адаптивный интерфейс с двумя storyboards для iOS 9”.

5. Адаптивный Popover

В первой части осуществлялось построение базового экспериментального приложения на Swift, которое было распространено на случаи 1-2. В этой статье мы будем дальше усложнять наше экспериментальное приложение и распространим его на случаи 3 и 5. Код для всех вариантов можно найти на Github.
Читать дальше →
Всего голосов 7: ↑7 и ↓0+7
Комментарии0

Адаптивные Split View Controller и Popover в iOS 9 (Swift). Часть 1

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


С незапамятных времен Split View Controller и Popover в iOS были доступны только на iPad.
Начиная с iOS 8, они теперь работают и на iPad, и на iPhone, благодаря концепции Size Classes и их адаптивному поведению. Однако автоматическая адаптация, предложенная Apple «из коробки», чаще всего нас не устраивает и приходится писать небольшой дополнительный код, используя методы делегатов UISplitViewControllerDelegate и UIPopoverPresentationControllerDelegate. В данной статье мы будем исследовать адаптивные способности Split View Controller и Popover на примере очень простых практических приложений, работающих с сервером Flickr.com, представляющим собой облачный сервис для хранения фотографий. Сама по себе эта задача имеет большой практический смысл, так как является часто встречающимся случаем, когда данные считываются с некоторого сервера и представляются затем ввиде связанных таблиц и изображений. Попутно мы будем демонстрировать “вживую” такие синтаксические конструкции Swift, как вычисляемые свойства c {get} и {set}, наблюдатели свойств didSet{}, функции высшего порядка map, flatMap, filter, вывод типа из контекста и перегрузку (overload) функций, совместное использование Swift и Objective-C кода, работу со структурами struct, использование хранилища NSUserDefaults и т.д. Но все же в этой статье акцент делается на более сложных конфигурациях адаптивных Split View Controller и Popover.
Впоследствие все приведенные в этой статье приложения вы сможете использовать в качестве шаблонов для разработки ваших приложений с похожими задачами.
Читать дальше →
Всего голосов 5: ↑4 и ↓1+3
Комментарии1

Информация

В рейтинге
Не участвует
Откуда
Краснознаменск (Московская обл.), Москва и Московская обл., Россия
Дата рождения
Зарегистрирован
Активность