Pull to refresh
5
Karma
0
Rating
Maxim Smirnov @atimca

iOS Developer

Моя история прохождения интервью в IB IT (Java разработчик, investment bank) в Лондоне с примерами типичных заданий

Reading time 13 min
Views 20K
Java *Industrial Programming *IT career Finance in IT Interview

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


Один из аспектов, который актуален на протяжении всей карьеры, это поиск работы и прохождение интервью. Я сам проводил очень мало интервью (4-5), но посетил большое их количество (>100). У меня было 3-4 периода по поиску работы за последние ~7 лет, когда я ходил на интервью месяц-два, по 1-2-3 в день иногда.


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


Что бы мне было интересно узнать в комментариях — как это бывает у других, особенно в Москве/России, наверняка есть различия с Европой.

Читать дальше →
Total votes 25: ↑20 and ↓5 +15
Comments 86

Снова про собеседования, но в заморских странах

Reading time 7 min
Views 16K
IT-emigration Personnel Management *IT career

Про собеседования в стране, которую "умом не понять и аршином общим не измерить" было вот тут и тут. Теперь пора и про заморские страны поговорить. Что меня больше всего удивило в общении с иностранными коллегами, что особенно сильно запомнилось и что было бы неплохо у них перенять.

И что же?
Total votes 23: ↑20 and ↓3 +17
Comments 20

Примеры конфигурации UIViewController-ов используя RouteComposer

Reading time 9 min
Views 4K
Development for iOS *Development of mobile applications *Swift *

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


Читать дальше →
Total votes 6: ↑5 and ↓1 +4
Comments 2

Где работать в ИТ, выпуск 3: Badoo

Reading time 12 min
Views 12K
Badoo corporate blog Хабр Карьера corporate blog Personnel Management *IT career Interview


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

Судя по оценке работодателя, которую Badoo получили на «Моем круге», сотрудники выше всего оценивают в этой компании социальный пакет, интересность задач и комфортность условий труда.

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

О своей работе рассказал Иван Бирюков, руководитель мобильной разработки в Badoo. Заодно мы узнали, как живется разработчикам дейтингов в Лондоне, и что за технологии помогают нам встречать новых людей.
Читать дальше →
Total votes 23: ↑23 and ↓0 +23
Comments 4

Эффективные личные финансы. Уровень 1

Reading time 8 min
Views 195K
GTD *Studying in IT Finance in IT
Я решил написать эту статью для сотрудников нашей компании, так как понял, что они очень образованные и умные люди, но не перестают беспокоиться о пенсионной реформе
эффективно обращаться с финансами их никто не научил. Как руководитель, заботящийся не только о своем благосостоянии, но и о благосостоянии своих коллег, я постарался взять на себя роль финансового наставника. А мои наставления о том, как стать финансово-эффективным вы можете прочесть под катом.


Читать дальше →
Total votes 55: ↑45 and ↓10 +35
Comments 119

Опыт использования солнечной энергии в московском регионе: за, против и кому это нужно

Reading time 7 min
Views 41K
Сбер corporate blog Energy and batteries Smart House DIY
Привет, Хабр! Меня зовут Ярослав Медокс, в Сбертехе я занимаюсь технологиями корпоративно-инвестиционного бизнеса. В этой заметке пойдет речь о вполне обычном подмосковном загородном доме, ставшем по прихоти его хозяина полигоном для проверки солнечной энергетики.


Читать дальше →
Total votes 40: ↑38 and ↓2 +36
Comments 257

Три ключевых принципа ПО, которые вы должны понимать

Reading time 13 min
Views 198K
Website development *Programming *Designing and refactoring *
Tutorial
Translation

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

Все, что касается любви, применимо и к коду. Новых законов в коде нет. Если вы четко понимаете основные идеи разработки, вы способны максимально быстро адаптироваться к новым подходам. В этой статье я расскажу вам о трех основных принципах, которые, наряду с другими, позволяют регулировать сложность разработки. Я поделюсь своим видением вопроса, которое, надеюсь, поможет вам в повседневной работе.
Читать дальше →
Total votes 142: ↑128 and ↓14 +114
Comments 56

Разгоняем сборку Swift проекта в Xcode

Reading time 6 min
Views 16K
Programming *Development for iOS *Development of mobile applications *Xcode *Swift *
Tutorial

image
Статья о том как починить инкрементальную компиляцию в Xcode для Swift проектов и ускорить build phases для Cocoapods и Carthage, ничего не поломав.


Небольшой спойлер: на трех разных проектах получилось сократить время инкрементальной сборки в 9 раз!


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


Читать дальше →
Total votes 18: ↑15 and ↓3 +12
Comments 21

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

Reading time 5 min
Views 12K
Programming *Development for iOS *Xcode *Swift *Development for MacOS *

image


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


Читать дальше →
Total votes 24: ↑22 and ↓2 +20
Comments 44

iOS Localization: XLIFF

Reading time 7 min
Views 17K
red_mad_robot corporate blog Development for iOS *Development of mobile applications *
Tutorial


В интернете легко найти статьи по локализации iOS, где описываются все основные этапы. Проблема в том, что чаще нам на глаза попадается вариант ручного заполнения файла *.strings. Это довольно муторный подход и даже небольшая автоматизация в этом нам бы пригодилась. Ещё в iOS 8 Apple добавила возможность частичной автоматизации перевода приложения посредством экспорта и импорта локализованных строк через XLIFF-документ.

Читать дальше →
Total votes 14: ↑12 and ↓2 +10
Comments 23

Core Data + Swift для самых маленьких: необходимый минимум (часть 1)

Reading time 12 min
Views 86K
Development for iOS *Swift *
Tutorial
Sandbox
Про Core Data и Swift написано не так много, как хотелось бы, особенно это касается русскоязычного сегмента Интернета. При этом большинство статей и примеров используют довольно примитивные модели данных, чтобы показать только саму суть Core Data, не вдаваясь в подробности. Данной статьей я хотел бы восполнить этот пробел, показав немного больше о Core Data на практическом примере. Изначально, я планировал уместить весь материал в одну статью, но в процессе написания стало ясно, что для одной публикации объем явно великоват, а так как из песни слов не выкинешь, то я все-таки разобью данный материал на три части.

Вместо Введения


Core Data — это мощный и гибкий фреймворк для хранения и управления графом вашей модели, который заслуженно занимает свое место в арсенале любого iOS-разработчика. Наверняка вы, как минимум, слышали об этом фреймворке, и не один раз, и если по каким-то причинам вы его еще не используете, — то самое время начать это делать.
Читать дальше →
Total votes 13: ↑11 and ↓2 +9
Comments 9

Доступны Стэнфордские курсы CS193P Весна 2016: Разработка iOS 9 приложений с помощью Swift

Reading time 5 min
Views 21K
Programming *Development for iOS *Development of mobile applications *Swift *


Стэнфордский курс «Developing iOS 9 Apps with Swift» теперь доступен на iTunes. Это долгожданное обновление предыдущего курса по iOS 8 и Swift.
Для того, чтобы воспользоваться этим контентом, вам нужно иметь только Mac — Macbook Pro, MacBook Air, iMac. Все программное обеспечение — бесплатное.

Этот курс в течение 10 недель читает профессор Пол Хегэрти. Он не только высвечивает множество нюансов операционной системы iOS и языка программирования Swift, которые не так-то легко найти в документации, но и снабжает вас приемами программирования на iOS, которые вы не найдете ни в одной книге (может быть, на WWDC 2011, 2012, 2013, 2014, 2015). Он многократно сократит ваш путь изучения. Реально, он — гений в преподавании программирования на iOS.
Читать дальше →
Total votes 16: ↑13 and ↓3 +10
Comments 5

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

Reading time 10 min
Views 12K
red_mad_robot corporate blog Development for iOS *Development of mobile applications *Swift *
Tutorial

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


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


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

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

Архитектурные паттерны в iOS

Reading time 14 min
Views 181K
Badoo corporate blog Development for iOS *Designing and refactoring *Objective C *Swift *

Введение в MVP, MVC, MVVM и VIPER. Что между ними общего и в чем разница.



Делаете все по MVC, а получается некрасиво? Сомневаетесь, переходить ли на MVVM? Слышали о VIPER, но не уверены, стоит ли оно того?

В этой статье я кратко рассмотрю некоторые популярные архитектурные паттерны в среде iOS и сравню их в теории и на практике. Больше информации вы найдете при переходе по ссылкам, указанным в тексте.
Читать дальше →
Total votes 28: ↑28 and ↓0 +28
Comments 18

Юнит-тестирование для чайников

Reading time 15 min
Views 949K
Website development *IT systems testing *
Tutorial
Даже если вы никогда в жизни не думали, что занимаетесь тестированием, вы это делаете. Вы собираете свое приложение, нажимаете кнопку и проверяете, соответствует ли полученный результат вашим ожиданиям. Достаточно часто в приложении можно встретить формочки с кнопкой “Test it” или классы с названием TestController или MyServiceTestClient.



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

Оно выполняет свою задачу, но сложно для автоматизации. Как правило, тесты требуют, чтобы вся или почти вся система была развернута и сконфигурирована на машине, на которой они выполняются. Предположим, что вы разрабатываете web-приложение с UI и веб-сервисами. Минимальная комплектация, которая вам потребуется: браузер, веб-сервер, правильно настроенные веб-сервисы и база данных. На практике все еще сложнее. Разворачивать всё это на билд-сервере и всех машинах разработчиков?

We need to go deeper
Total votes 70: ↑63 and ↓7 +56
Comments 65

Введение в Size Classes в Xcode 6

Reading time 6 min
Views 60K
Development for iOS *Xcode *
Sandbox
Привет всем! Сегодня хотелось бы сделать небольшое введение в такую штуку, как Size Classes. Она появилась недавно вместе с Xcode 6, документации по ней от самой Apple совсем немного.

Итак, для чего же предназначена Size Classes? Все мы знаем, что на подходе уже iPhone 6 двумя (как минимум) разными размерами дисплея (4,7 и 5,5), после чего разработчикам еще больше придется заморачиваться с версткой UI для них + само собой расширения iPad«ов. В итоге количество всех поддерживаемых экранов будет около 7 (маленький привет Android). Герой сегодняшнего дня — Size Classes — как раз и предназначен для того, что бы помочь решить данную проблему.
Читать дальше →
Total votes 21: ↑19 and ↓2 +17
Comments 19

Работа iOS App в фоновом режиме

Reading time 4 min
Views 42K
Development for iOS *Objective C *
Стояла задача, чтобы программа отправляла через web socket текущие координаты по заданному пользователем интервалу. К тому же, программа должна работать в фоне и если пользователь или iOS по какой то причине её выгрузит из памяти, то желательно чтобы она перезапустилась и продолжила работу в фоне.
Поставленную задачу надо решить только средствами iOS без изменения серверной части (никаких Push Notifications).

Отправлять координаты по таймеру когда программа свернута в фон не составляет проблемы, для этого можно использовать background location mode для получения координат и long-running tasks для таймеров.

Но так как в iOS нет такой прелести как Android Background Services, то если вручную завершить программу, код перестает выполняться. Потому основная сложность заключается в том, как максимально быстро запустить программу в фоне, чтобы она продолжила выполнять свою задачу дальше, если её по каким то причинам выгрузила из памяти iOS, или если пользователь перезагрузил устройство, или если он вручную «убил» программу.

Теперь о том, что помогло решить данную задачу в приемлемом варианте:
Читать дальше →
Total votes 16: ↑15 and ↓1 +14
Comments 28

Запоминаем просмотренные видео на youtube

Reading time 9 min
Views 48K
Perl *Python *Google API *




Столкнулся с тем, что youtube.com «забывает» видео, которые я просмотрел.
Приходится смотреть много образовательных каналов, а потом вспоминать, видел я это или нет.
Посмотрел какую-нибудь лекцию и через несколько дней (месяцев, лет) статус "просмотрено" пропадает.
Или, наоборот, посмотришь 2 минуты какой-нибудь лекции, ляжешь спать, а на утро лекция имеет статус «просмотрено».

Вот и решил взять под контроль информацию о просмотрах на youtube в свои руки.
И хранить эту информацию вне зависимости от ютюба.

Чтобы смотреть видео на ютюбе с разных устройств и быть не привязанным к локальному компу, я выложил сайт в онлайн:
http://memtube.com
И смотрю все оттуда.
У кого есть желание, пожалуйста, присоединяйтесь. На сайте в любой момент можно скачать Excel файл с историей просмотров:


Если хотите сделать свой собственный сайт, то подробности под катом.
Подробности
Total votes 25: ↑23 and ↓2 +21
Comments 11

Паттерны ООП в примерах для iOS

Reading time 48 min
Views 148K
Development for iOS *Development of mobile applications *ООP *
Tutorial
Translation

От переводчика


Искали тут двух русскоязычных разработчиков — на iOS и на C++ под Windows. Видел десятки выполненных тестов. Разница в знании ООП между представителями двух платформ — огромная. На C++ обычно красивый расширяемый код, как само собой разумеющееся. На Objective C картина удручающая. Почти все iOS-кандидаты не знали ООП дальше своего носа NSString'ов и AppDelegate'ов.

Понятно, что плюсы учат по Страуструпу и «банде четырёх», а Objective C — больше по туториалам и Stack Overflow. Фастфуд-обучение не оставляет места на фундаментальные вопросы… Но такой разницы я не ожидал.

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

Качественная разработка ПО — творческий процесс, уникальный для каждой конкретной головы. Поэтому не существует общей инструкции: if (A and (B or C)) then use Pattern_N;
Как это нет инструкции? Что же делать?
Total votes 77: ↑71 and ↓6 +65
Comments 50

Атрибуты свойств в Objective-C. Инструкция для начинающих

Reading time 9 min
Views 80K
Development for iOS *Objective C *
image

Есть множество разных мест, где описано значение атрибутов, используемых при объявлении свойств, но, как правило, все такие источники либо описывают применение только одного из атрибутов, либо содержат еще кучу ссылок на другие документы, переходя по которым со временем начинаешь терять нить рассуждений. Безусловно, нужно стремиться познать все тонкости, для чего нужно прочитать горы литературы. Но для начала вполне достаточно разобраться в основах. Ниже я постарался максимально просто изложить основные используемые при объявлении свойств атрибуты, их значение и основные случаи, когда стоит использовать то или иное значение атрибута.
Читать дальше →
Total votes 24: ↑20 and ↓4 +16
Comments 20
1

Information

Rating
Does not participate
Date of birth
Registered
Activity