Pull to refresh
0
Aleks @qsunnxread⁠-⁠only

User

Send message

Ускорение компиляции в Xcode на swift

Reading time2 min
Views8.7K
С ростом проекта, скорость компиляции проекта замедляется. Особенно это заметно становится, когда тестируешь программу, делая параллельно небольшие изменения в программе.

Сначала давайте узнаем как долго компилируется проект до наших улучшений. ЧТобы это сделать надо в терминале ввести

defaults write com.apple.dt.Xcode ShowBuildOperationDuration -bool YES

Для этого нужно зайти в раздел Product зажать alt и нажать Clean Build Folder, а потом собрать проект заново. Мой проект компилируется 81 секунду. Посмотрим какой результат будет после улучшения.



Нам, в первую очередь, стоит узнать какие места приводят к замедлению компиляции. По умолчанию Xcode не показывает предупреждения, где проблема, но мы можем это исправить.
Самые «тяжелые» места большие функции и проверка типов. Поэтому нам нужно вписать эти две строчки в раздел Build Settings -> Other Swift Flags -> Debug

-Xfrontend -warn-long-function-bodies=100
-Xfrontend -warn-long-expression-type-checking=100

(здесь у нас стоит 100мс время компиляции, мы можем поставить любое число)

Наглядный рисунок


Пример моего рабочего проекта



У меня есть участок который занимает 13778 ms, скорее всего у вас не будет такого, но из-за специфики проекта у меня такие участки есть. Так как там построено бинарное дерево для OCR.
Из-за глубокой вложенности друг в друга и определения типа только в самом начале, перед знаком равенства, компилятору требуется много времени понять какой перед ним тип. (Дерево занимает 30 строк, вот его часть)
Читать дальше →
Total votes 15: ↑15 and ↓0+15
Comments6

Для тех, кто познаёт ушами: подкасты для разработчиков

Reading time6 min
Views52K


Кто сказал, что разработчики могут учиться новому только через книги, видео и анализ чужого кода? Ведь у нас и другие каналы получения информации из окружающего мира. Конечно, речь не о том, чтобы попробовать знания на вкус, пощупать их или понюхать. А вот послушать — самое оно. Мы собрали для вас коллекцию действующих русскоязычных подкастов для разработчиков. Хороший способ дать глазам отдых или занять себя в пробках.
Читать дальше →
Total votes 83: ↑80 and ↓3+77
Comments57

Зимняя стажировка для мобильных разработчиков в Redmadrobot

Reading time2 min
Views6.2K


Ho ho ho, Хабр! Мы запускаем пятую зимнюю стажировку для разработчиков в московском офисе Redmadrobot. Ждём ваших заявок до 10 января включительно. Начинаем практиковаться 31 января, нас ждут насыщенные 7-8 недель.

Читать дальше →
Total votes 11: ↑11 and ↓0+11
Comments5

Годные туториалы на YouTube

Reading time3 min
Views56K
На YouTube много бесплатных обучающих и курсов и туториалов.

image

Я веду freeCodeCamp, YouTube канал без рекламы. У нас есть полные видеокурсы и учебные пособия по многим популярным языкам программирования и фреймворкам (включая JavaScript, Python, Java, Ruby, C, C ++, Angular и не только).

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

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

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

Есть много отличных каналов, для которых у меня не хватило места в этом списке. Поделитесь своими находками в комментах.
Total votes 49: ↑41 and ↓8+33
Comments19

Сложности самообучения программированию и как их преодолеть

Reading time5 min
Views38K
Перед вами перевод статьи Xiang Zhou, опубликованной на сайте freeCodeCamp. Если вы разработчик-самоучка и хотите преодолеть все преграды на пути к цели, добро пожаловать под кат!


«Белая книга на коричневом деревянном столе», фото Alexander Michl на Unsplash
Total votes 16: ↑12 and ↓4+8
Comments13

Видео докладов с CocoaHeads @ FunCorp митапа

Reading time1 min
Views4.7K


25-го августа мы (FunCorp) совместно c CocoaHeads провели iOS митап. А сегодня для тех, кто не смог посетить мероприятие и посмотреть трансляцию, выкладываем записи докладов.
Total votes 18: ↑18 and ↓0+18
Comments2

Как защитить своего ребенка от мусора на YouTube и сделать кастомный плеер с белым списком каналов

Reading time9 min
Views122K

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



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


К сожалению, я очень быстро уяснил, что детский ютуб — это просто АДОВЫЙ ТРЕШ. Про это даже на Хабре уже был перевод статьи. Детские каналы — это какие-то бездонные клоаки, наполненные вырвиглазными видео типа "разворачиваем сто киндер-сюрпризов", "дурацкие стишки с убогой 3д графикой под крикливую музыку" и "гоняем машинки в Beam NG под дурацкие комментарии". По какой-то причине все это является очень привлекательным для маленьких детей, которые бросаются кликать на такие видео как только увидят их в рекомендованных. А YouTube не позволяет управлять рекомендациями. Даже дав своему сыну планшет с включенными "нормальными" мультиками, я уже через пару минут наблюдаю, как он за два клика по рекомендациям опять находит эти чертовы шоколадные яйца и снова начинает в них залипать.


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

Читать дальше →
Total votes 91: ↑87 and ↓4+83
Comments364

Как Яндекс готовит фронтендеров. От программы на Coursera до курсов в университете

Reading time4 min
Views17K
Мы в Яндексе не только много работаем с фронтендом, но и делимся своим опытом с другими. За шесть лет преподавательской практики мы запустили разные форматы обучения, о которых сегодня расскажем читателям Хабра.

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



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

Квест, который никто не может пройти

Reading time1 min
Views23K
Может ты и пройдёшь. Но пока таких случаев не было.



Попытаться точно стоит, ведь на кону классные призы:

  • годовые подписки на любой продукт JetBrains,
  • бесплатные занятия английским в онлайн-школе Skyeng,
  • билеты на конференцию мобильных разработчиков MBLT DEV 2018.

Нужно пройти квест до 5 сентября включительно. 6 сентября на Хабре подведём итоги
Пройти квест
Total votes 32: ↑24 and ↓8+16
Comments159

Android Academy: теперь в Москве

Reading time5 min
Views7.2K


5 сентября стартует базовый курс Android Academy по Android-разработке (Android Fundamentals). Встречаемся в офисе компании Avito в 19:00.

Это очное и бесплатное обучение. За основу курса мы взяли материалы Android Academy TLV, организованной в Израиле в 2013 году, и Android Academy SPB.

Регистрация откроется 25 августа, в 12:00 и будет доступна по ссылке
Читать дальше →
Total votes 9: ↑9 and ↓0+9
Comments13

Курс «Языки веб-программирования» (на основе Ruby) от МГТУ им. Н. Э. Баумана на канале Технострим

Reading time14 min
Views21K


В этой статье мы расскажем о курсе «Языки веб-программирования», который читается на кафедре «Компьютерные системы и сети» (ИУ-6) МГТУ им. Н.Э. Баумана. Примеры приводятся на Ruby, а сам курс и представляет собой 16 видеолекций, доступных бесплатно на канале Технострим. В «Бауманке» курс читается для студентов второго курса, уже знакомых с высокоуровневыми языками программирования, такими как Pascal, C++ или Java. Основной акцент делается на системное понимание технологий, используемых в веб-программировании, а не на глубину освоения именно технологий Ruby. Поэтому курс также будет полезен слушателям, имеющим отрывочные знания о веб-технологиях на любых языках.
Total votes 24: ↑24 and ↓0+24
Comments18

Новичок или опытный? Как нанять мобильного разработчика под iOS, который что-то действительно умеет

Reading time8 min
Views17K
Мобильная разработка — это особая кухня, и в ней есть свои нюансы. Именно поэтому собеседования с кандидатами в отдел разработки под iOS должны проходить с определенным уклоном. Сегодня мы расскажем, как проходит прием в штат мобильных разработчиков Acronis, и какие курьезы бывают на собеседованиях, когда соискатель считает, что достаточно запомнить несколько умных слов, а потом «разберемся на месте».

image
Читать дальше →
Total votes 27: ↑24 and ↓3+21
Comments86

Мобильная разработка. Swift: таинство протоколов

Reading time11 min
Views32K
Сегодня мы продолжаем цикл публикаций на тему мобильной разработки под iOS. И если в прошлый раз речь шла о том, что нужно и не нужно спрашивать на собеседованиях, в этом материале мы коснемся тематики протоколов, которая имеет в Swift важное значение. Речь пойдет о том, как устроены протоколы, чем они отличаются друг от друга, и как сочетаются с интерфейсами Objective-C.


Читать дальше →
Total votes 17: ↑15 and ↓2+13
Comments17

Обязательный чек-лист разработки UX-дизайна мобильного приложения

Reading time4 min
Views9.6K
От переводчика: Эта статья изначально была опубликована сооснователем компании Django Stars Романом Гапоновым в его англоязычном блоге на Medium. Мы сделали перевод этого обзора главных UX-нюансов мобайла и представляем его вашему вниманию.



Статья поможет разработчикам, которые заняты в сфере мобильного UX-дизайна, получить полезные советы и подсказки. Мы расскажем про ключевые пункты, с которыми необходимо сверяться в ходе процесса разработки. В материале также рассказывается, как избежать «ловушек дизайнера».
Читать дальше →
Total votes 12: ↑9 and ↓3+6
Comments6

CocoaHeads в FunCorp

Reading time2 min
Views1.6K

У нас отличная новость! 25-го августа совместно с сообществом CocoaHeads мы проведём iOS митап (наш первый митап в Москве).

Программа


Сергей Турсунов, VK.com

«Swift Method Dispatch»


  • Типы диспатча Direct / Witness / Table / Message и почему это фундаментальная часть ООП
  • Какие типы применяются к value types, reference type и extension
  • Как меняются типы диспатча с помощью модификаторов final / dynamic / inline / objc / nonobjc в классах
  • Влияние WMO на диспатч и почему это хороший помощник при разработке
  • Как самостоятельно проверить, какие типы диспатча создаются для компилируемых файлов (SIL) и немного о процессе компиляции в Swift.
Читать дальше →
Total votes 16: ↑16 and ↓0+16
Comments0

Дайджест интересных материалов для мобильного разработчика #262 (16 июля — 22 июля)

Reading time3 min
Views5.5K
В нашем новом дайджесте гипотезы и A/B-тесты, борьба с собой в Pixonic, React Native и Rust, аналитика SDK и доходы приложений.


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

Что слушают разработчики: от классики до игровых саундтреков — обсуждаем все самое интересное

Reading time5 min
Views37K
Написание кода — это сложная и творческая задача, требующая высокого уровня концентрации. И согласно ряду исследований, помочь настроиться на продуктивный день может музыка.

Вопрос только в том, какой музыкальный жанр выбрать.

На таких площадках, как Reddit, Hacker News и Хабр обсуждению этого вопроса посвящен не один тред. Мы решили проанализировать мнения разработчиков и отобрать наиболее интересные.

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

Введение в Firebase: пишем простое социальное приложение на Swift

Reading time16 min
Views214K
В связи с неожиданным решением Facebook закрыть Parse, многое разработчики задались вопросом, что использовать вместо него. Сегодня практически невозможно представить полностью автономное приложение, которое было бы полезное всем. В связи с этим, iOS разработчики в своей работе пользуются инструментами и ресурсами, предоставленные Apple для доступа к данным. Backend-as-a-service, или сокращенно BaaS является потрясающим инструментом для разработчиков.

Среди наилучших и наиболее популярных BaaSs можно выделить Firebase от компании Google. По существу, Firebase является безусловно потрясающим в исполнении, реализации и эксплуатации. Firebase служит базой данных, которая изменяется в реальном времени и хранит данные в JSON. Любые изменения в базе данных тут же синхронизируются между всеми клиентами, или девайсами, которые используют одну и ту же базу данных. Другими словами, обновление в Firebase происходят мгновенно.

Вместе с хранилищем, Firebase также предоставляет пользовательскую аутентификацию, и поэтому все данные передаются через защищенное соединение SSL. Мы можем выбрать любую комбинацию email и пароля для аутентификации, будь то Facebook, Twitter, GitHub, Google, или что-то другое.

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

На момент написания этой статьи, в бесплатном пакете Firebase может обрабатывать до 100 одновременных соединений. Этого вполне достаточно для работы популярного приложения. За $49 в месяц ограничений на сетевую активность нет.
Читать дальше →
Total votes 18: ↑16 and ↓2+14
Comments5

Магия IBDesignable или расширяем функциональность Interface Builder в Xcode

Reading time4 min
Views31K


Interface Builder в Xcode с некоторого времени экономит мне много времени в работе по стандартному лайауту элементов интерфейса и иногда помогает в задаче прототипирования. С версии 6 в Xcode добавили возможность рендера кастомных вьюшек, помеченных атрибутом IBDesignable, а также отображение в билдере полей класса, помеченных атрибутом IBInspectable.

С версии Xcode 7 этой фичей стало более-менее возможно пользоваться, поэтому мне захотелось проверить её возможности.

Почитать про IBDesignable/IBInspectable можно тут и тут.
А саму статью можно прочитать здесь.
Total votes 13: ↑12 and ↓1+11
Comments8

Xcode: наверное, лучший способ работы со сторибордами

Reading time5 min
Views49K

Этот пост является вольным переводом статьи Xcode: A Better Way to Deal with Storyboards by Stan Ostrovskiy


Некоторые примеры кода в оригинальной статье устарели (ввиду выхода Swift 3) и в переводе были изменены.


Советы и рекомендации по работе с Interface Builder.


Apple серьезно улучшили Interface Builder в новом Xcode 8. Использование size classes стало более интуитивным, возможность масштабирования сториборда — очень удобной, а полное превью прям в Interface Builder — просто великолепным. Для тех у кого были сомнения насчет использования Interface Builder, это может стать хорошими плюсами.


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


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


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

В вашем проекте есть один файл main.storyboard, который выглядит вот так?



С точки зрения дизайнера, все хорошо: полностью видно UI и навигацию. И это именно то, для чего Interface Builder и был создан.

Но для разработчика это несет множество проблем:

Читать дальше →
Total votes 22: ↑22 and ↓0+22
Comments48
1

Information

Rating
Does not participate
Location
Санкт-Петербург и область, Россия
Date of birth
Registered
Activity

Specialization

Application Developer
Middle