В некоторых сферах программирования нормально хотеть написать такую структуру данных или алгоритм, которые могут работать с элементами разных типов. Например, список дженериков или алгоритм сортировки, которому нужна только функция сравнения. В разных языках предложены всевозможные способы решения этой задачи: от простого указания программистам на подходящие общие функции (С, Go) до таких мощных систем дженериков, что они стали полными по Тьюрингу (Rust, C++). В этой статье я расскажу о системах дженериков из разных языков и их реализации. Начну с решения задачи в языках без подобной системы (вроде С), а затем покажу, как постепенное добавление расширений приводит к системам из других языков.
Читать полностью »
Рубрика «swift» - 10
Модели дженериков и метапрограммирования: Go, Rust, Swift, D и другие
2019-07-25 в 17:41, admin, рубрики: D, generics, Go, Rust, swift, Анализ и проектирование систем, Блог компании Mail.Ru Group, никто не читает теги, ПрограммированиеРаспознавание объектов в режиме реального времени на iOS с помощью YOLOv3
2019-07-25 в 15:09, admin, рубрики: computer vision, deep learning, ios development, machine learning, swift, машинное обучение, Программирование, разработка под iOSВсем привет!
В данной статье мы напишем небольшую программу для решения задачи детектирования и распознавания объектов (object detection) в режиме реального времени. Программа будет написана на языке программирования Swift под платформу iOS. Для детектирования объектов будем использовать свёрточную нейронную сеть с архитектурой под названием YOLOv3. В статье мы научимся работать в iOS с нейронными сетями с помощью фреймворка CoreML, немного разберемся, что из себя представляет сеть YOLOv3 и как использовать и обрабатывать выходы данной сети. Так же проверим работу программы и сравним несколько вариаций YOLOv3: YOLOv3-tiny и YOLOv3-416.
Исходники будут доступны в конце статьи, поэтому все желающие смогут протестировать работу нейронной сети у себя на устройстве.
Читать полностью »
Split Controller без этих ваших сторибордов
2019-07-25 в 13:13, admin, рубрики: iOS, ipad, swift, UISplitViewController, xcode, дизайн мобильных приложений, мультитаскинг, разработка под iOSРаньше для поддержки iPad делали отдельный xib. Чтобы унифицировать лейаут, в 2014 году Apple представила Auto Layout и Size Classes, а для адаптивной навигации UISplitViewController.
Split-контроллер — это контейнер, который разместит два контроллера рядом. Слева будет навигационный контроллер (речь не про Navigation Controller), справа соответсвующий выбору в навигационном. Короче, как в Настройках.
Разберем как настроить UISplitViewController и его поведение на экранах.
Как мы в QIWI пришли к единому стилю взаимодействия между View и ViewModel в рамках MVVM
2019-07-22 в 9:04, admin, рубрики: iOS, ios development, Qiwi, swift, ViewModel, Блог компании QIWI, разработка под iOSИзначально весь проект был написан на Objective-C и использовал ReactiveCocoa версии 2.0
Взаимодействие между View и ViewModel осуществлялось посредствам биндингов свойств вью модели, и все бы ничего, за исключением того, что отладкой такого кода заниматься было очень сложно. Все из-за отсутствия типизации и каши в стек-трейсе :(
И вот настало время использовать Swift. Поначалу мы решили попробовать вообще без реактивщины. Читать полностью »
Дайджест интересных материалов для мобильного разработчика #307 (15 — 21 июля)
2019-07-21 в 14:18, admin, рубрики: App Store, apple, firebase, flutter, kot;in, swift, swiftUI, UX, ux дизайн, xcode, Блог компании Цифровые Экосистемы, маркетинг мобильных приложений, нейросети, разработка мобильных приложений, Разработка под android, разработка под iOS, рефакторингВ этом дайджесте рефакторинг, UI, UX и анимации, возвращение триала в App Store, Kotlin как “прорыв года”, хакатоны для развития команды, скрытые игровые механики и заработки FaceApp.
Продвинутый Debug
2019-07-20 в 15:42, admin, рубрики: debug, expression, LLDB, swift, xcode, Тестирование IT-системDebug Area — полезная функция в работе iOS разработчика в Xcode. Как только мы начинаем осваивать разработку под iOS, и пытаемся отойти от привычного и любимого print метода, и найти более быстрые и удобные методы понимания состояния системы в определенный период мы начинаем изучать область дебага (Debug Area).
Скорее всего, в Debug панель ваш взгляд упадёт до того, как вы будете понимать, что именно там происходит. При первом падении приложения нижнее меню открывается автоматически, оно изначально может послужить помощью для понимания проблемы (Вспомним старую добрую “Fatal error: Index out of range”), в основном в самом начале вы не будете понимать, что от нас хочет Xcode и приметесь гуглить ошибки, но по ходу роста всё больше и больше информации станет понятной.
С самого начала программист старается оптимизировать свою работу. Для этого мы стремимся понять в какой момент наша программа перешла в некорректное состояние. И тут в зависимости от точки в которой находится эволюция программиста, методы могут разниться. Сначала как правильно Debug осуществляется методом “print()”, потом идёт расстановка Breakpoints и вызов методов “po”, далее ознакомление с Debug Variable Input (области рядом с консолью в Xcode), а далее приходит понимание и способов компиляции кода в процессе остановки на Breakpoint методов — “expression” (По крайней мере, такая была эволюция у меня).
Давайте попробуем разные способы которые нам помогут понять и изменить состояние нашего приложения. Самые простые вроде “print()”, и “po” рассматривать не будем, я думаю, вы и так понимаете их суть и умеете применять.
Создадим простое приложение с одним экраном в котором будем всего один тип ячеек (TableViewcell) c двумя элементами внутри: UIImageView и UILabel. В ячейках будем писать её порядковый номер, а в картинку ставить либо image1, либо image2.
Метод tableViewCellForRowAtIndexPath будет создавать для нас ячейки, проставлять данные и возвращать:
Разработка приложения на SwiftUI. Часть 1: поток данных и Redux
2019-07-19 в 15:52, admin, рубрики: apple, iOS, MovieSwiftUI, swift, swiftUI, Блог компании Skillbox, Программирование, разработка под iOS, Учебный процесс в IT
После участия в сессии State of the Union на WWDC 2019 я решил детально изучить SwiftUI. Я потратил много времени на работу с ним и теперь приступил к разработке реального приложения, которое может оказаться полезным широкому кругу пользователей.
Его я назвал MovieSwiftUI — это апп для поиска новых и старых фильмов, а также их сбора в коллекцию при помощи TMDB API. Я всегда любил фильмы и даже создал компанию, работающую в этой сфере, правда давно. Компанию сложно было назвать классной, а вот приложение — да!
Читать полностью »
Custom refactoring tool: Swift
2019-07-17 в 6:38, admin, рубрики: swift, swift разработка, Блог компании Сбербанк, Проектирование и рефакторинг, разработка под iOS, рефакторинг, Сбербанк, Совершенный кодЛюбой инженер стремится сделать процесс своей работы максимально оптимизированным. Нам, как мобильным разработчикам iOS, очень часто приходится работать с однообразными структурами языка. Компания Apple улучшает инструменты разработчиков, прилагая много усилий, чтобы нам было удобно программировать: подсветка языка, автодополнение методов и многие другие возможности IDE позволяют нашим пальцам успевать за идеями в голове.
Что делает инженер, когда необходимый инструмент отсутствует? Верно, сделает всё сам! Ранее мы уже рассказывали о создании своих кастомных инструментов, теперь поговорим о том, как модифицировать Xcode и заставить его работать по твоим правилам.
Читать полностью »
Дайджест интересных материалов для мобильного разработчика #306 (8 — 14 июля)
2019-07-14 в 11:13, admin, рубрики: App Store, apple, ARCore, flutter, iOS, kotlin, swift, Блог компании Цифровые Экосистемы, геймдизайн, маркетинг мобильных приложений, нейросети, разработка мобильных приложений, Разработка под android, разработка под iOSВ новом выпуске нашего дайджеста дизайн Яндекс.Авто, карта метро, некстген симуляция движения человека, личные проекты, лучший квартал для мобайла за всю историю, простое объяснение юнит-экономики и много другого интересного.
iOS-дайджест №9 (28 июня – 11 июля)
2019-07-11 в 10:36, admin, рубрики: apple, iOS, swift, разработка мобильных приложений, разработка под iOS
Источник картинки: appleinsider
Джони Айв покидает белую комнату, мы Touch Bar'у скажем «Да!» и сгибающийся iPad в новом выпуске iOS-дайджеста.
Читать полностью »