Pull to refresh
0
Сержант Александру @solariserjread⁠-⁠only

User

Send message

Разделяй и властвуй. Модульное приложение из монолита на Objective-C и Swift

Reading time7 min
Views9.7K


Привет, Хабр! Меня зовут Василий Козлов, я iOS-техлид в Delivery Club, и застал проект в его монолитном виде. Признаюсь, что приложил руку к тому, борьбе с чем посвящена эта статья, но раскаялся и трансформировал своё сознание вместе с проектом.

Я хочу рассказать, как разбивал существующий проект на Objective-C и Swift на отдельные модули — framework’и. Согласно Apple, framework — это директория определенной структуры.

Изначально мы поставили цель: обособить код, реализующий функцию чата для поддержки пользователей, и уменьшить длительность сборки. Это привело к полезным последствиям, которым сложно следовать, не имея привычки и существуя в монолитном мире одного проекта.
Читать дальше →

Типовые ситуации при непрерывной интеграции

Reading time19 min
Views5.9K

Вы изучили команды Git но хотите представлять, как непрерывная интеграция (Continuous Integration, CI) происходит в реальности? Или может вы хотите оптимизировать свои ежедневные действия? Этот курс даст вам практические навыки непрерывной интеграции с использованием репозитория на GitHub. Данный курс не задуман как некий визард, который можно просто прокликать, напротив, вы будете совершать те же действия, что люди на самом деле делают на работе, тем же способом, которым они это делают. Я буду объяснять теорию по мере прохождения вами имеющих к ней отношение шагов.


Что мы будем делать?


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


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


Шаги непрерывной интеграции


Вы пройдёте такие стандартные для CI сценарии:


  • Работа над фичей;
  • Применение автотестов для обеспечения качества;
  • Реализация приоритетной задачи;
  • Разрешение конфликта при слиянии ветвей (merge conflict);
  • Возникновение ошибки в продуктивной среде.
Читать дальше →

Реализация Grid раскладки на SwiftUI

Reading time5 min
Views4.2K

Что такое Grid Layout?


Разрабатывая интерфейс приложения, мы чаще всего имеем дело именно с двумерным представлением визуальных элементов. Существует множество контролов, призванных стандартизировать и упростить верстку. Если рассматривать концепции веб-разработки, то в качестве наилучшего способа создания двумерных шаблонов интерфейса CSS Working Group в 2017 году предложила Grid Layout.
image
В iOS 13 SDK в наличии у нас имеется возможность располагать элементы линейно VStack, HStack, ZStack, в виде списка: List. Но нет возможности определить семантику расположения элементов в двумерной системе координат. Поэтому мы решили создать его сами.
В iOS 14 Apple представила свою реализацию grid, о которой мы расскажем ниже в разделе Apple LazyVGrid/LazyHGrid.

Читать дальше →

DevOps или как мы теряем заработную плату и будущее IT-отрасли, часть вторая

Reading time4 min
Views25K
Прошлая статья уже вызвала много возмущений, думаю эта статья многим ещё больше не понравится, в ней я распишу то, как заказчики видят DevOps инженера.
Читать дальше →

Swift: Копируй-изменяй

Reading time5 min
Views6.6K


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

Это отрывок описания метода copy() из документации Kotlin. На нашем родном языке Swift это означает примерно такую возможность:


struct User {
    let id: Int
    let name: String
    let age: Int
}

let steve = User(id: 1, name: "Steve", age: 21)

// Копируем экземпляр, изменив свойства `name` и `age`
let steveJobs = steve.changing { newUser in
    newUser.name = "Steve Jobs"
    newUser.age = 41
}

Выглядит вкусно, не так ли?


Увы, в Swift отсутствует подобный функционал "из коробки". Это небольшое руководство поможет реализовать его самостоятельно.

Читать дальше →

7 достойных курсов по изучению Git и Github

Reading time3 min
Views48K

Привет, хабр! Продолжаю делиться полезными подборками. Я уже публиковал посты с Github репозиторими (Часть 1 и Часть 2), а также подборку из 10 книг для разработчиков. Решил, не останавливаться:) Кому интересно — добро пожаловать под кат.


Читать дальше →

Неизвестный «Сапсан»: часть 1 — общий обзор конструкции электропоезда

Reading time16 min
Views52K
Как-то, давным-давно, обещал я рассказать об электропоезде «Сапсан». Пришло время выполнить свое обещание.



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

1. Немного общих цифр


Электропоезд «Сапсан» является локализованной версией семейства высокоскоростных поездов Velaro, на базе которого Siemens производит высокоскоростные поезда как для Deutsche Bahn (немецких железных дорог), так и много ещё для кого. У нас поезду дали обозначение ЭВС — Электропоезд Высокоскоростной Сименс. Дорога эксплуатирует два его варианта: ЭВС1 для участков, работающих на постоянном токе 3 кВ и ЭВС2 — двухсистемый электропоезд для сетей постоянного тока 3 кВ и переменного тока 25 кВ.

Почему астрономы сомневаются, что в Солнечной системе есть неоткрытая Девятая планета

Reading time5 min
Views17K
Привет, читатель! Меня зовут Ирина, я веду телеграм-канал об астрофизике и квантовой механике «Quant».

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

Сегодня я подготовила перевод статьи, в которой отрицается существование Девятой планеты, и тому приводятся аргументы.

Приятного чтения!



Представление художника о гипотетической планете с далеким Cолнцем.
Читать дальше →

Мечтают ли разрабы о космонавтике, норм ли Восточный, почему Маск обязан Рогозину // Мы обречены #9 — Виталий Егоров

Reading time9 min
Views16K


Космос — классическая детская мечта. Это потом детишки узнают, каково работать под начальством воинствующих стариканов, за 20 тысяч рублей, с запретом на выезд и под грифом секретности. Но мечта есть мечта, и глядя в черную пустоту сердце все равно переполняется романтикой.

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

Мы позвали обсудить все это на подкасте Виталия Егорова Zelenyikot. Ниже — его монологи обо всем, что связано с современным космосом.

Я перегорел, уже как 2 года

Level of difficultyEasy
Reading time3 min
Views48K


Сложно такое осознать, я думал, меня настигнет эта участь несколько позже, когда мне будет хотя бы 30+ и я буду каким-нибудь крутым разрабом в известной компании, но мне 26 и я в NoName конторе.

Я долго пытался понять, почему все именно так и кажется пазл сложился. Хочу выговориться. Обычно, цель моих постов — рассказать на какие грабли я наступил, чтобы уберечь читателя, но видимо не в этот раз.
Читать дальше →

Управление Яндекс.Станцией и другими колонками с Алисой из Home Assistant

Reading time4 min
Views126K

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


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


В январе 2020 кто-то обнаружил, что Яндекс.Станция поддерживает некий локальный протокол. На GitHub начали появляться проекты по управлению Яндекс.Станцией. Мне хватило пару часов, чтоб разобраться и выпустить первую версию компонента для Home Assistant. Это достаточно популярная система домашней автоматизации, написанная на языке Python.


На сегодняшний день компонент поддерживает управление всеми колонками с Яндекс Алисой и при желании может выглядеть так:


Читать дальше →

DevOps vs DevSecOps: как это выглядело в одном банке

Reading time9 min
Views13K


Банк аутсорсит свои проекты многим подрядчикам. «Внешники» пишут код, потом передают результаты в не совсем удобном виде. Конкретно процесс выглядел так: они передавали проект, который прошёл функциональные тесты у них, а затем тестировался уже внутри банковского периметра на интеграцию, нагрузку и так далее. Часто обнаруживалось, что тесты фейлятся. Тогда всё уходило обратно внешнему разработчику. Как вы можете догадаться, это означало большие сроки исправления ошибок.

Банк решил, что можно и нужно перетащить весь пайплайн к себе «под крылышко» от коммитов до выпуска. Чтобы всё было единообразно и под контролем команд, отвечающих за продукт в банке. То есть как если бы внешний подрядчик просто работал где-то в соседней комнате офиса. На корпоративном стеке. Это обычный девопс.

Откуда появилось Sec? Безопасность банка выставила высокие требования к тому, как внешний подрядчик может работать в сетевом сегменте, какой у кого доступ, как и кто работает с кодом. Просто ИБ ещё не знала, что когда подрядчики работают снаружи, мало какие банковские стандарты соблюдаются. А тут за пару дней надо их начать соблюдать всем.

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

В этот момент и началась история DevSecOps, про которую я хочу рассказать.
Читать дальше →

Swift 5.3: Что нового?

Reading time3 min
Views7.8K
Привет Хабр! Язык программирования Swift обладает большой популярностью ввиду его использования в написании приложений под iOS, поэтому его развитие представляет интерес для всех занятых в этой области.

Давайте посмотрим что нового приготовил разработчикам Swift версии 5.3.

Multiple trailing closures


Новая версия (SE-0279) предлагает новый синтаксис для конечных замыканий, который позволяет вызывать несколько замыканий в качестве параметров функции более читаемым способом. Это сводит к минимуму использование слишком большого количества скобок в сигнатуре функции.

import Foundation

func load(url: String, success: (Data) -> Void, failure: (Error) -> Void) {
    
}

// old  version

load(url: "someURL", success: { data in }, failure: { error in })

// new multiple trailing closures

load(url: "someURL") { (data) in
    // do smth
} failure: { (error) in
    // do smth
}

На примере 2 вариантов вызова видно, что визуально второй смотрится несколько приятнее.

Multi-Pattern Catch Clauses


В настоящее время каждый пункт catch в операторе do-catch может содержать только один шаблон. Чтобы обойти эту проблему, разработчики будут использовать возможности вариантов коммутаторов для включения сопоставления шаблонов в тело операторов catch, тем самым увеличивая вложенный и дублированный код (SE-0276).
Читать дальше →

Книга «Паттерны объектно-ориентированного проектирования»

Reading time7 min
Views46K
image Привет, Хаброжители! Больше 25 лет прошло с момента выхода первого тиража книги Design Patterns. За это время книга из популярной превратилась в культовую. Во всем мире ее рекомендуют прочитать каждому, кто хочет связать жизнь с информационными технологиями и программированием. «Русский» язык, на котором разговаривают айтишники, поменялся, многие англоязычные термины стали привычными, паттерны вошли в нашу жизнь.

Перед вами юбилейное издание с обновленным переводом книги, ставшей must-read для каждого программиста. «Паттерны объектно-ориентированного проектирования» пришли на смену «Приемам объектно-ориентированного проектирования».

Четыре первоклассных разработчика — Банда четырех — представляют вашему вниманию опыт ООП в виде двадцати трех паттернов. Паттерны появились потому, что разработчики искали пути повышения гибкости и степени повторного использования своих программ. Авторы не только дают принципы использования шаблонов проектирования, но и систематизируют информацию. Вы узнаете о роли паттернов в архитектуре сложных систем и сможете быстро и эффективно создавать собственные приложения с учетом всех ограничений, возникающих при разработке больших проектов. Все шаблоны взяты из реальных систем и основаны на реальной практике. Для каждого паттерна приведен код на C++ или Smalltalk, демонстрирующий его возможности.
Читать дальше →

Как стать DevOps инженером за полгода или даже быстрее. Часть 5. Развертывание

Reading time6 min
Views11K
Как стать DevOps инженером за полгода или даже быстрее. Часть 1. Введение
Как стать DevOps инженером за полгода или даже быстрее. Часть 2. Конфигурирование
Как стать DevOps инженером за полгода или даже быстрее. Часть 3. Версии
Как стать DevOps инженером за полгода или даже быстрее. Часть 4. Пакетирование программ



Освежим память


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



Если вы тратили по месяцу на изучение каждого раздела, то сейчас находитесь на 4 месяце. К этому времени вы уже должны знать, как обеспечить инфраструктуру, которая будет работать с вашим программным обеспечением, как правильно управлять версиями программ и как упаковать их для последующего развертывания. В этой статье мы обсудим, как правильно развернуть ваш код!
Читать дальше →

Простые консольные команды, которые стоит знать всем

Reading time5 min
Views26K
Навыки работы в терминале помогают быть более продуктивным.


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

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

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

Список базовых команд:


pwd — информация о каталоге
cd — смена каталога
ls — список файлов в каталоге
cp & mv — скопировать/переместить файл/каталог
mkdir & touch — создать каталог/файл
rmdir & rm — удалить каталог/файл
cat, tail & head — прочитать файл
grep — поиск текста в файле по регулярному выражению
find — поиск файла/каталога
Читать дальше →

Нетривиальные анимации в SwiftUI

Reading time8 min
Views5.9K

Идея


На WWDC 2019 была представлена SwiftUI — технология коренным образом влияющая на создание UI в приложениях для экосистемы Apple. Нам в Distillery стало интересно в ней разобраться чуть глубже, чем это подано в примерах от Apple. В идеале нужно было запилить какой-нибудь полезный для iOS команды и сообщества UI компонент. С идеями по этому поводу оказалось туго, поэтому решили пилить что-то просто забавное. Вдохновил вот этот концепт:


image


Особенно интересным показалось обилие нетривиальной анимации. Таким образом, по ходу реализации хотелось проверить, насколько SwiftUI удобен и приспособлен для чего-то более сложного, чем почти статический UI из примеров WWDC 2019.

Читать дальше →

[Инфографика] Как COVID-19 влияет на организм

Reading time3 min
Views20K
На данный момент исследователи и эксперты в области здравоохранения уже лучше понимают весь спектр симптомов, вызываемый COVID-19, включая лихорадку, сухой кашель и, конечно, опасное воспаление дыхательной системы. Большинство из нас знает, что COVID-19 может быть гораздо более опасным, чем грипп, при этом большинство людей имеют слабое представление (а то и не имеют вовсе) о механизмах того, как вирус вызывает пневмонию у своих жертв.

Сегодняшняя информативная иллюстрация, сделанная научным дизайнером и аниматором Авестой Растаном, подробно описывает влияние COVID-19 на лёгкие от умеренных до тяжелых случаев.

По данным Всемирной организации здравоохранения (ВОЗ), большинство людей, которые заразились COVID-19, испытывают только лёгкие симптомы гриппа. Тем не менее, иногда инфекция может перерасти в тяжёлый случай пневмонии, которая может привести к летальному исходу. Особенно это касается пожилых людей и людей с сопутствующими заболеваниями.

Вот что делает COVID-19 с вашим телом:

Читать дальше →

Бесконечный скролл с баннерами, или Как обойтись тремя вьюхами

Reading time10 min
Views12K

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

Бесконечный/цикличный скролл в iOS стандартными средствами не реализовать, нужно идти на разные ухищрения. В этой статье я расскажу, какие варианты решения задачи лежат на поверхности и какой вариант мы в итоге реализовали.
Читать дальше →

Information

Rating
Does not participate
Location
Кишинев, Молдова, Молдова
Date of birth
Registered
Activity