• Создание инкрементального сервера для iOS Team

      image

      Бесплатная книга

      После пяти лет наступаний на одни и те же грабли, и полугода поисков DevOps-а, который знает что-такое Provision Profile и как от него зависит развертывание приложения, было принято решение составить пошаговую инструкцию, в картинках, о том, настраивать рабочее окружение в iOS Team с минимальными финансовыми вложениями (к примеру, когда нет проплаченных аккаунтов GitHub или Jira), а работа кипит.
      Читать дальше →
    • Xcode 11 и XCFrameworks: новый формат упаковки фреймворков


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


        В случае разработки под платформу iOS, да и в целом, экосистему Apple, есть два варианта подключать библиотеки в качестве зависимостей:


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

        При выборе второго подхода становится логичным использовать CI/CD системы для сборки библиотек в готовые к употреблению артефакты.


        Однако, необходимость собирать библиотеки под несколько платформ или архитектур процессора в экосистеме Apple, зачастую, требует проводить не всегда тривиальные операции, как при сборке библиотеки, так и конечного продукта, который её использует.


        На этом фоне, было сложно не заметить и крайне интересно изучить, одно из нововведений от Apple, представленное на WWDC 2019 в рамках презентации Binary Frameworks in Swift — формат упаковки фреймворков — XCFramework.


        XCFramework имеет несколько преимуществ, в сравнении с устоявшимися подходами:


        1. Упаковка зависимостей под все целевые платформы и архитектуры в единый bundle из коробки.
        2. Подключение bundle в формате XCFramework, как единой зависимости для всех целевых платформ и архитектур.
        3. Отсутствие необходимости в сборке fat/universal фреймворка.
        4. Нет необходимости избавляться от x86_64 слайсов (slice) перед загрузкой конечных приложений в AppStore.

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

        Читать дальше →
        • +10
        • 2.1k
        • 2
      • MVC в Unity со Scriptable Objects. Часть 1

        • Translation
        MVC (Model-View-Controller) — это схема, предполагающая разделение данных приложения, пользовательского интерфейса и управляющей логики на три отдельных компонента, чтобы каждый из них можно было независимо модифицировать. Разработчик Cem Ugur Karacam поделился своим опытом программирования в Unity и коротко рассказал о Scriptable Objects. Мы представляем перевод его статьи, опубликованной на сайте dev.to.

        Читать дальше →
      • SwiftUI: делаем Expandable/Collapsible секции в List view

        • Tutorial


        Нередко встречающаяся в разработке под iOS задача — раскрывающиеся/складывающиеся секции в UITableView. Сегодня мы реализуем эту задачу, используя SwiftUI. В качестве небольшого twist'a добавим анимированный треугольник в заголовке секции и сделаем ячейки также раскрывающимися.

        Разработка проходила на XCode 11.2 под macOS Catalina 10.15.1
        Поехали!
      • Приёмы в проектировании пользовательского интерфейса, которые сэкономят время

        • Translation
        • Tutorial
        В переводе этой статьи автор приводят ряд советов и приёмов, которые упростят жизнь при проектировании дизайна пользовательского интерфейса. В статье даны сведения о полезных и экономящих время возможностях работы таких программ как Sketch, Adobe Illustrator, Figma, Adobe XD.


        Читать дальше →
      • Shader — это не магия. Написание шейдеров в Unity. Вертексные шейдеры

          Всем привет! Меня зовут Дядиченко Григорий, и я основатель и CTO студии Foxsys. Сегодня мы поговорим про вершинные шейдеры. В статье будет разбираться практика с точки зрения Unity, очень простые примеры, а также приведено множество ссылок для изучения информации про шейдеры в Unity. Если вы разбираетесь в написании шейдеров, то вы не найдёте для себя ничего нового. Всем же кто хочет начать писать шейдеры в Unity, добро пожаловать под кат.


          Читать дальше →
          • +16
          • 4.3k
          • 2
        • Пишем свой сетевой слой на Swift: протокол-ориентированный подход

          • Translation
          • Tutorial


          Сейчас практически 100% приложений используют работу с сетью, поэтому вопрос организации и использования сетевого слоя встает перед каждым. Есть два основных подхода к решению этой проблемы, это либо использование сторонних библиотек, либо собственная реализация сетевого слоя. В данной статье мы рассмотрим именно второй вариант, причем попробуем реализовать сетевой слой с использованием всех последних возможностей языка, применяя протоколы и перечисления. Это избавит проект от лишних зависимостей в виде дополнительных библиотек. Те, кто хоть раз видел Moya, сразу узнают множество схожих деталей в реализации и использовании, так оно и есть, только в этот раз мы все сделаем своими руками, не трогая Moya и Alamofire.
          Читать дальше →
        • Flash-анимации в Unity3D своими руками. Часть первая, лирическая

            В этой серии статей я расскажу о том, как и почему мы решили создать своё собственное решение для импорта flash-анимаций в Unity, об оптимизациях и внутренней кухне получившегося плагина. А также в программе: рассказ о внутренностях формата swf, особенностях расширения Unity-редактора и вообще об анимациях в целом. Прошу под кат!



            Читать дальше →
            • +10
            • 3.2k
            • 9
          • Как сделать корутины в Unity немного удобнее

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


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

            Читать дальше →
          • Как давать обратную связь: 9 правил

              Исследования показали: получив конструктивный фидбек, сотрудники работают лучше. Если обратной связи нет, появляется стресс: трудно понять, хорошо ли ты справляешься и куда двигаться дальше. Возникает «кризис признания» – а там не за углом и выгорание.

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


              Читать дальше →
            • Все, что нужно знать об iOS App Extensions



                App Extensions появились в iOS 8 и сделали систему более гибкой, мощной и доступной для пользователей. Приложения могут отображаться в виде виджета в Центре Уведомлений, предлагать свои фильтры для фотографий в Photos, отображать новую системную клавиатуру и многое другое. При этом сохранилась безопасность пользовательских данных и системы. Об особенностях работы App Extensions и пойдёт речь ниже.
                Читать дальше →
                • +24
                • 6.5k
                • 4
              • Scrum и спиральная динамика Грейвза: как не налететь на рифы

                Все, кто хоть немного знаком со Scrum, наверняка знают три его коротких характеристики:

                • компактный;
                • простой для понимания;
                • трудный для освоения в совершенстве.

                Работая Scrum Мастером в Hubber, я постоянно открываю для себя новые грани последней характеристики.
                Читать дальше →
              • Из хаоса в порядок, или «создаем структуру проекта в Unity и не только...»

                • Tutorial
                При создании нового проекта он такой чистый, понятный, нет лишнего хлама… он пуст. Чем дольше идет разработка, тем больше в нем появляется лишнего мусора, непонятных папок, файлов, иногда туда могут попасть префабы для других проектов и вся организация летит в Тартар.

                Выясняется что организации никогда не было, проекту три года, порядок наводить уже поздно, работать не удобно и вообще…

                Добро пожаловать в хаос, вы оказались именно тут потому что:

                • никогда не задумывались зачем нужна структура проекта в Unity
                • в ваших проектах вечный бардак и вы хотите от этого избавиться
                • в поисках новых способов организации
                • потеряли надежду навести порядок в своем проекте

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



                Добро пожаловать под кат.
                Читать дальше →
              • Сборка примера Augmented Faces ARCore в Unity

                image

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

                Мы соберем пример приложения дополненной реальности Augmented Faces ARCore для Unity, оно будет отслеживать через камеру лицо и накладывать 3D модель лисьей морды.
                Читать дальше →
                • +10
                • 4.3k
                • 1
              • Написание Unit тестов на Swift для проверки асинхронных задач

                • Tutorial
                Сегодня хочу вам быстренько рассказать как тестировать асинхронный код.

                Представьте ситуацию, что вам надо загрузить данные из интернета и проверить все ли работает нормально, либо еще какую-нибудь задачу, которая выполняется асинхронно. И как же его протестировать? Что если попробовать так же как и обычный синхронный код?!

                    func testAscynFunction() {
                        someAsyncFunction()
                    }
                
                    func someAsyncFunction() {
                        let bg = DispatchQueue.global(qos: .background)
                        bg.asyncAfter(deadline: .now() + 5) {
                            XCTAssert(false, "Something went wrong")
                        }
                    }
                

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

                Для решения такой проблемы в тестах есть одна замечательная вещь:
                Читать дальше →
              • Управление персонажем с помощью SharedEvents

                • Tutorial

                Ссылка на проект

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

                Добро пожаловать под кат!
                Читать дальше →
              • Слон в посудной лавке: 3D принтеры с огромным полем печати

                  Со временем, все сталкиваются с необходимостью производства крупных деталей с помощью аддитивных технологий. А бытовые 3D принтеры, в своей основной массе, имеют относительно небольшой стол для печати (квадрат со стороной 180....220 мм). Маловато. А что делать, если хочется большего?

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


                  Читать дальше →
                • Ликбез по электротравмам: от ожогов и катаракты до переломов и фибрилляции

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


                    Пост подготовлен совместно с dlinyj, который выступил в качестве рецензента и консультанта в вопросах физики электричества и охраны труда, а также соавтора раздела “Что убивает ток или напряжение?”. Под катом я подробно описал механизмы получения электротравмы, медицинские последствия, а также проанализировал несколько трагических случаев, связанных с необычными электротравмами. При подготовке материала использован мой собственный медицинский опыт, факты, известные из СМИ, а также доступную в сети литературу и документы (фото поражений, содержащиеся в статье, некоторые читатели могут счесть шокирующими и неприемлемыми).
                    Предупреждение от модератора. Публикация содержит изображения частей тела травмированных людей, которые могут оказать влияние на психическое состояние чувствительных взрослых и детей.
                    Читать дальше →
                  • Почему строить базу знаний компании на основе mediawiki — недурная затея



                      В последнее время Confluence и sharepoint стали почти безраздельно править на рынке баз знаний. Системы отличные, не спорю, но лично мне не хватает их гибкости да и в целом как-то не срослось: вики-возможности sharepoint остались где-то на уровне 2005 года (про работу с офисными документами молчу, с ними все гуд), а Confluence в силу своих особенностей с ростом числа статей неумолимо превращался в свалку, в которой невозможно найти что-либо нужное (но, может, проблема была во мне).

                      Не умаляя достоинства этих систем, хотелось бы рассказать о том, какие возможности есть у Mediawiki в роли корпоративной базы знаний. Само собой, mediawiki подойдет не всем — в ней нет модной интеграции с jira/tfs/etc, перенос документов с картинками из пакета Microsoft Office доставляет кучу неудобств, да и сама она написана на PHP, что в последнее время служит отпугивающим фактором для некоторых айтишников. Тем не менее, платформа живее всех живых и над ее развитием работает изрядное количество людей, коль скоро на ней базируется семейство проектов фонда Викимедиа.
                      Читать дальше →
                    • Как распознать липовые проекты Agile

                      • Translation
                      От переводчика: это инструкция DIB Guide: Detecting Agile BS (версия 0.4), которую Комитет по инновациям Министерства обороны США (DIB) опубликовал в открытом доступе 9 октября 2018 года.

                      Agile — модное словечко в разработке ПО, так что все софтверные проекты Минобороны теперь почти по умолчанию объявлены «гибкими». Настоящий документ поможет руководителям программ и специалистам Минобороны отличить софтверные проекты с действительно гибкой методологией от проектов, которые под маской Agile просто используют «водопад» или «спираль» (“agile-scrum-fall”).
                      Читать дальше →
                      • +13
                      • 10.7k
                      • 5