User
Создание архитектуры программы или как проектировать табуретку
К моему удивлению оказалось, что на вроде бы актуальный вопрос: «Как построить хорошую/красивую архитектуру ПО?» — не так легко найти ответ. Не смотря на то, что есть много книг и статей, посвященных и шаблонам проектирования и принципам проектирования, например, принципам SOLID (кратко описаны тут, подробно и с примерами можно посмотреть тут, тут и тут) и тому, как правильно оформлять код, все равно оставалось чувство, что чего-то важного не хватает. Это было похоже на то, как если бы вам дали множество замечательных и полезных инструментов, но забыли главное — объяснить, а как же «проектировать табуретку».
Хотелось разобраться, что вообще в себя включает процесс создания архитектуры программы, какие задачи при этом решаются, какие критерии используются (чтобы правила и принципы перестали быть всего лишь догмами, а стали бы понятны их логика и назначение). Тогда будет понятнее и какие инструменты лучше использовать в том или ином случае.
Данная статья является попыткой ответить на эти вопросы хотя бы в первом приближении.
Архитектурные паттерны в iOS: привет от дядюшки Боба, или Clean Architecture
Продолжаю серию постов с разбором всех популярных архитектурных паттернов, использующихся в iOS разработке: устройство, плюсы и минусы, а также когда и где их лучше применять. Литературы по этому вопросу преступно мало, редкие обсуждения в интернете ограничиваются собственным опытом и какими-то поделками на гитхабе.
Все, кто хочет не просто знать что стоит за названием той или иной архитектуры, но ещё и в каком случае какую использовать — наливайте чай и устраивайтесь поудобнее, будет лампово. Разбираем паттерны, реализующие концепцию Чистой Архитектуры — самые масштабируемые и надёжные.
MVVM на основе Combine в UIKit и SwiftUI приложениях для UIKit разработчиков
Мы знаем, что
ObservableObjec
t классы с его @Published
свойствами созданы в Combine
специально для View Model
в SwiftUI
. Но в точности ту же самую View Model
можно использовать и в UIKit
для реализации архитектуры MVVM
, хотя в этом случае нам придется вручную «привязать» (bind
) UI
элементы к @Published
свойствам View Mode
l. Вы удивитесь, но с помощью Combine
это делается парой строк кода. Кроме того, придерживаясь этой идеологии при проектировании UIKit
приложений, вы в дальнейшем безболезненно перейдете на SwiftUI
.Цель этой статьи состоит в том, чтобы на примитивно простом примере показать, как можно элегантно реализовать
MVVM
архитектуру в UIKit
с помощью Combine
. Для контраста покажем использование той же самой View Model
в SwiftUI
.В статье будут рассмотрены два простейших приложения, позволяющих выбирать с сайта OpenWeatherMap самую свежую информацию о погоде для определенного города. Но
UI
одного из них будет создан с применением SwiftUI
, а другого — с помощью UIKit
. Для пользователя эти приложения будут выглядеть почти одинаковыми. Код находится на Github.
Знакомимся с async/await в Swift
Один из самых ожидаемых релизов на WWDC 21 - новая многопоточность в iOS среде.
Под катом разберемся, что это за зверь, как он работает и какие возможности предоставляет.
Архитектурные паттерны в iOS
Введение в MVP, MVC, MVVM и VIPER. Что между ними общего и в чем разница.
Делаете все по MVC, а получается некрасиво? Сомневаетесь, переходить ли на MVVM? Слышали о VIPER, но не уверены, стоит ли оно того?
В этой статье я кратко рассмотрю некоторые популярные архитектурные паттерны в среде iOS и сравню их в теории и на практике. Больше информации вы найдете при переходе по ссылкам, указанным в тексте.
Архитектурные паттерны в iOS: страх и ненависть в диаграммах. MV(X)
Каждый iOS разработчик в своей жизни уходил с собеседования в расстроенных чувствах и мыслью “это что еще за новая аббревиатура?” Архитектурами пугают и джунов, и миддлов, и синьоров (и наверное даже синьорит). Важно не просто знать что стоит за названием, но ещё и в каком случае какую использовать. Литературы по этому вопросу преступно мало, редкие обсуждения в интернете ограничиваются собственным опытом и какими-то поделками на гитхабе.
В этом цикле из трёх статей я кратко разберу все популярные архитектурные паттерны, использующиеся в iOS разработке: устройство, плюсы и минусы, а также когда и где их лучше применять. Собеседующим — хитрые вопросы, собеседуемым — клёвые ответы!
Первая часть посвящена MV(X) паттернам: самым известным и распространенным практикам в индустрии.
Почему все «прутся» в IT
Люди уходят в IT отовсюду: из инженеров КИПиА, электротехников, начальников службы охраны, химиков, бухгалтеров, экономистов, металлургов, юристов, медбратьев, руководителей отдела рекламы. Люди уходят в IT в любом возрасте: в 20, 30, 40 лет и даже после 50.
Зачем? Почему? Что им на месте не сидится? Почему все «прутся» в это IT? Есть несколько факторов, которые этому поспособствовали. Некоторые из них мы рассмотрим. Они на самые глобальные, но важные.
Дефицит есть, а денег не дают. Почему?
Мы уже выяснили, что у нас есть дефицит рабочих рук во всех отраслях. На примере СССР увидели, что дефицит легко закрывается деньгами и плюшками, что сейчас и происходит в IT. Однако при дефиците рабочих рук в остальных отраслях зарплаты остаются на уровне Румынии и никак не подтягиваются. Почему?
SwiftUI по полочкам: Анимация. Часть 1
Недавно мне попалась свежая статья, в которой ребята пытались воспроизвести интересный концепт средствами SwiftUI. Вот что у них получилось:
Я с интересом изучил их код, но испытал некоторое разочарование. Нет, не в том смысле, что они что-то сделали неправильно, вовсе нет. Просто я не узнал из их кода практически ничего нового. Их реализация, это скорее про Combine, нежели про анимацию. И я решил
Вот что получилось у меня:
Однако, для полноценного раскрытия темы мне пришлось довольно подробно рассказать о самых основах. Текст получился объемным, и потому, я разбил его на две статьи. Перед вами первая ее часть — скорее туториал по анимации вообще, не связанный непосредственно с радужной анимацией, о которой я еще расскажу подробно в следующей статье.
В этой статье же, я расскажу об основах, без понимания которых можно легко запутаться в более сложных примерах. Многое из того, о чем я буду говорить, в том или ином виде уже было рассказано в англоязычных статьях например этой серии (1, 2, 3, 4). Я же, сосредоточился не столько на перечислении способов работы, сколько на описании того, как именно это работает. И как всегда, я много экспериментировал, так что самыми интересными результатами спешу поделиться.
warning: под катом много картинок и gif-анимаций.
SARS нерукотворный? Генеалогия уханьского коронавируса
Не, ну какая рукотворность? Что за бред? Думал я, когда впервые услышал гипотезу о том, что Ковид-19 вызван то ли лабораторной утечкой, то ли вообще целенаправленной биоатакой. И каждый раз просто отмахивался от этих домыслов, когда они в очередной раз доплывали до меня в бурном потоке коронавирусного инфошума. Ну подумаешь, есть в Ухане институт вирусологии, мало ли.
В какой-то момент отмахиваться уже пришлось аргументированно, потому что сторонники рукотворности начали обосновывать свои тезисы о возможной искусственной природе вируса доводами из молекулярной биологии, и тут уже хотелось в пух и прах разбить их конспирологию холодными научными фактами. Уж если не как авторы статьи в Nature (казалось мне), то хотя бы как уважаемый мной Панчин.
И вот тут, в погоне за доводами против рукотворности вируса, меня и заразил вирус сомнений. В чём, собственно, причина сомнений? В том, что чем глубже погружаешься в деятельность коронавирусологов за последние 15–20 лет, тем лучше понимаешь, что создание ровно таких химер как CoV2 у них было обыденным делом. А CoV2 — это очевидная химера, основанная на летучемышином штамме RaTG13, у которого в шиповидном белке место связывания с рецептором (RBM) заменено с летучемышиного на панголиний, и вдобавок врезан особый участок из 4-х аминокислот, создавший furin cleavage site, который, как ранее выяснили вирусологи, значительно расширяет «репертуар» вируса в плане того, в чьи клетки он может проникать. Скорее всего, именно благодаря этому новому фуриновому сайту, новый мутант и сумел перескочить с исходных носителей на людей.
С учётом тех высот, которых сегодня достигла генная инженерия, синтетически собрать CoV2 по вышеописанной методике не составило бы труда даже начинающему специалисту. Ведь вирусологи, включая руководителя коронавирусного направления в Уханьском институте вирусологии Ши Чжэнли, такими вещами уже неоднократно занимались — как заменой RBM у одного вида вируса на RBM из другого
Коронавирус 2019-nCoV: смертность небольшая, большая летальность
Последние несколько дней в СМИ появилось много статей с данными о смертности и летальности из-за 2019-nCoV. Люди часто путают эти понятия.
Чего только стоит это интервью в Московском комсомольце:
Ссылка на оригинал
Журналист спрашивает про смертность, собеседник отвечает про летальность! Это простая некомпетентность или в очередной раз "ученый изнасиловал журналиста"?
А в чём разница?
Из-за обязательной поддержки 5G смартфоны со Snapdragon 865 в 2020 году будут хуже
Qualcomm так одержим 5G, что принуждает всех пользоваться им во вред эффективности работы 4G
Недавно компания Qualcomm сорвала покровы со своей флагманской системы на чипе для 2020 года — Snapdragon 865. Как обычно, можно ожидать появления этого чипа во всех смартфонах верхнего ценового сегмента в 2020-м; он на 25% быстрее того, что был в 2019-м, поддерживает новые модные навороты для камеры и сопроцессоры для ускорения ИИ. Что необычно, так это то, как Qualcomm обошлась с LTE-модемом в чипе Snapdragon 865: его там нет.
Получается, что почти каждый флагманский телефон на Android в 2020 году будет поддерживать 5G, а размещение 5G и 4G на гигантском отдельном чипе означает, что смартфоны будут использовать гораздо больше энергии, вне зависимости от того, к какой сети они будут подсоединяться. И поскольку сети 5G в 2020-м году будут находиться ещё в зародышевом состоянии, с моей точки зрения это выглядит, как серьёзное ухудшение ситуации.
Технология GPON в многоквартирных домах – будущее интернет-провайдинга или маркетинговый пузырь?
Всех приветствую. Это текст от первого лица. Пишет Дмитрий Козменко.
Прежде всего хочу подчеркнуть, что мы, сочинский провайдер «Бизнес-Связь», в течение пяти лет успешно используем технологию пассивной оптической сети в городе Сочи и прилегающих посёлках. На данный момент у нас работает более тридцати головных станций GPON, обслуживающих несколько тысяч абонентов. Мы знакомы с технологией не понаслышке, участвовали в закрытых тестированиях, дебажили прошивки вместе с разработчиками как самих устройств, так и чипсетов. То есть технологию GPON мы, разумеется, используем в работе. Однако там, где есть возможность, работаем с классической схемой по «витой паре». И нам почему-то никогда не приходило в голову брать месседж про GPON в каких бы то ни было маркетинговых завлекаловках абонентов или же в качестве какого-то нашего совершенно особенного конкурентного преимущества. Потому что, если разобраться внимательно и в деталях, абонентам технология GPON как шла, так и ехала. А тот факт, что многие провайдеры позиционируют использование GPON как сильное продуктовое преимущество для абонентов – это выглядит странно. Если не сказать, что выглядит очковтирательством немножк☺.
Неуловимый баг LittleBigPlanet
В истории игровой разработки можно обнаружить немало интересных багов, с которыми приходилось сражаться разработчикам. Впрочем, как следует из истории, рассказанной в Twitter техническим директором компании Media Molecule Алексом Эвансом (известен своим участием в демосцене конца 90-ых, серией LittleBigPlanet и игрой Rag Doll Kung Fu) на выходных, многие легенды нам еще только предстоит услышать.
Случай, о котором пойдет речь, произошел десять лет назад — в 2008 году. Во время разработки первой части игры LittleBigPlanet — оригинального паззл-платформера, который должен быть стать эксклюзивом для PlayStation 3 — разработчикам компании пришлось столкнуться с воистину неуловимым багом.
Обычно для получения «зелёного света» на выпуск игры на консолях требуется пройти сертификацию — выполнить некоторый набор требований, которые устанавливает платформодержатель. Сертификация может предполагать и такие специфические условия, как стабильная работа игры в течение суток без вылетов.
Процесс разработки LittleBigPlanet практически подошел к концу и оставалось всего две недели до того, как игра должна была «уйти на золото». Внезапно, тестировщик из отдела QA в Японии сообщил о том, что игра стабильно «падает», когда он оставляет ее работать на ночь. Естественно, теперь до исправления бага ни о каком выпуске игры не могло быть и речи.
Заблуждения программистов об именах — с примерами
В 2010 году Патрик Маккензи написал знаменитую статью «Заблуждения программистов об именах», перечислив 40 фактоидов, которые не всегда верны в отношении человеческих имён.
Думаете, программисты сели, подумали и изменили обработку имён в компьютерных системах? К сожалению, не совсем. Нас по-прежнему повсеместно просят заполнить онлайн-формы, которые предполагают обязательное наличие имени и фамилии (причём именно в таком порядке). Эти системы по-прежнему предполагают, что наши имена всегда можно записать символами алфавита, зачастую только ASCII.
Google держит вас в персональном «поисковом пузыре» даже если выйти из аккаунта
Все мы давно знаем, что Google, Яндекс и другие коммерческие поисковые системы анализируют историю посещений и поисковую историю пользователя, на основе которых хитрые алгоритмы пытаются предсказать, что «пригодится» человеку в следующий раз. Когда эта технология только зарождалась, она казалась логичной и понятной, но сейчас этот подход выглядит крайне и крайне пугающе. Потому что раньше представители Google, самой популярной поисковой системы в мире, утверждали, что достаточно выйти из аккаунта, чтобы избавиться от «предвзятости» поисковой выдачи и получить нейтральные результаты при использовании сервиса.
Парни из DuckDuckGo в своем исследовании утверждают, что даже при выходе из аккаунта и переходе в анонимный режим, Google продолжает подстраивать поисковую выдачу согласно ранее собранной о пользователе информации. То есть компания не оставляет человеку выбора и все равно манипулирует поиском, даже если действия пользователя явно говорят о том, что он хочет получить «нейтральный» результат.
ВКонтакте вычисляет ваше местоположение по IP
Я никогда в жизни не давал доступ к местоположению ни приложению вконтакте на IOS, ни сайту vk.com в браузере.
Один из адресов определился как «Работа/учёба», но по факту это просто моя вторая квартира. Которая, кстати, появилась в моей жизни всего около 3-х месяцев назад.
Мне стало любопытно, где-же я так оплошал, что такие данные утекли у меня из под носа. С этим вопросом я обратился в поддержку vk.com. Оказывается, всё дело в моём IP.
Под катом скрин переписки.
Пермский программист арестован за создание мобильного приложения, через которое действовал педофил
Nintendo чётко даёт понять, что только пиратство может сохранить историю видеоигр
Закрывая Wii Store Channel и не давая пользователям скачивать старые игры, компания Nintendo снова демонстрирует, что в современную цифровую эпоху вещи, которые вы покупаете, на самом деле вам не принадлежат
Пробыв в онлайне больше десятилетия, Nintendo закрывает Wii Shop Channel. Компания убрала возможность покупки внутримагазинной валюты (Wii Points) уже в прошлом марте, а с 30 января пользователи уже не могут покупать WiiWare или игры с Virtual Console.
На первый взгляд этот ход легко отмести как естественную гибель сервиса, привязанного к стареющей консоли, в результате эволюции. Особенно учитывая, что Nintendo дала пользователям достаточно много времени на то, чтобы потратить Wii Points до закрытия магазина. Однако день, когда Nintendo отключает Wii Store Channel, должен стать серьёзным предупреждением для всех, кого волнует сохранение видеоигр, и для любого потребителя, использующего цифровой магазин: часто продукты, которые мы покупаем в цифровом виде, нам не принадлежат, и когда один из цифровых магазинов закрывается, единственным способом сохранения его для истории остаётся пиратство.
Information
- Rating
- Does not participate
- Registered
- Activity