Pull to refresh
0
0
Send message

ООП в картинках

Reading time20 min
Views821K
ООП (Объектно-Ориентированное Программирование) стало неотъемлемой частью разработки многих современных проектов, но, не смотря на популярность, эта парадигма является далеко не единственной. Если вы уже умеете работать с другими парадигмами и хотели бы ознакомиться с оккультизмом ООП, то впереди вас ждет немного лонгрид и два мегабайта картинок и анимаций. В качестве примеров будут выступать трансформеры.


Читать дальше →
Total votes 38: ↑34 and ↓4+30
Comments104

Создание архитектуры программы или как проектировать табуретку

Reading time25 min
Views685K
Взявшись за написание небольшого, но реального и растущего проекта, мы «на собственной шкуре» убедились, насколько важно то, чтобы программа не только хорошо работала, но и была хорошо организована. Не верьте, что продуманная архитектура нужна только большим проектам (просто для больших проектов «смертельность» отсутствия архитектуры очевидна). Сложность, как правило, растет гораздо быстрее размеров программы. И если не позаботиться об этом заранее, то довольно быстро наступает момент, когда ты перестаешь ее контролировать. Правильная архитектура экономит очень много сил, времени и денег. А нередко вообще определяет то, выживет ваш проект или нет. И даже если речь идет всего лишь о «построении табуретки» все равно вначале очень полезно ее спроектировать.

К моему удивлению оказалось, что на вроде бы актуальный вопрос: «Как построить хорошую/красивую архитектуру ПО?» — не так легко найти ответ. Не смотря на то, что есть много книг и статей, посвященных и шаблонам проектирования и принципам проектирования, например, принципам SOLID (кратко описаны тут, подробно и с примерами можно посмотреть тут, тут и тут) и тому, как правильно оформлять код, все равно оставалось чувство, что чего-то важного не хватает. Это было похоже на то, как если бы вам дали множество замечательных и полезных инструментов, но забыли главное — объяснить, а как же «проектировать табуретку».

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

Данная статья является попыткой ответить на эти вопросы хотя бы в первом приближении.
Читать дальше →
Total votes 88: ↑85 and ↓3+82
Comments45

Архитектурные паттерны в iOS: привет от дядюшки Боба, или Clean Architecture

Reading time14 min
Views19K

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

Все, кто хочет не просто знать что стоит за названием той или иной архитектуры, но ещё и в каком случае какую использовать — наливайте чай и устраивайтесь поудобнее, будет лампово. Разбираем паттерны, реализующие концепцию Чистой Архитектуры — самые масштабируемые и надёжные.

Читать далее
Total votes 35: ↑34 and ↓1+34
Comments3

MVVM на основе Combine в UIKit и SwiftUI приложениях для UIKit разработчиков

Reading time9 min
Views27K


Мы знаем, что ObservableObject классы с его @Published свойствами созданы в Combine специально для View Model в SwiftUI. Но в точности ту же самую View Model можно использовать и в UIKit для реализации архитектуры MVVM, хотя  в этом случае нам придется вручную «привязать» (bind) UI элементы к @Published свойствам View Model. Вы удивитесь, но с помощью Combine это делается парой строк кода. Кроме того, придерживаясь этой идеологии при проектировании UIKit приложений, вы в дальнейшем безболезненно перейдете на SwiftUI.

Цель этой статьи  состоит в том, чтобы на примитивно простом примере показать, как можно элегантно реализовать MVVM архитектуру в UIKit с помощью Combine. Для контраста покажем использование той же самой View Model в SwiftUI.

В статье будут рассмотрены два простейших приложения, позволяющих выбирать с сайта OpenWeatherMap самую свежую информацию о погоде для определенного города. Но UI одного из них будет создан с применением SwiftUI,  а другого — с помощью UIKit. Для пользователя эти приложения будут выглядеть почти одинаковыми.



Код находится на Github.
Читать дальше →
Total votes 6: ↑5 and ↓1+7
Comments5

Знакомимся с async/await в Swift

Reading time9 min
Views33K

Один из самых ожидаемых релизов на WWDC 21 - новая многопоточность в iOS среде.

Под катом разберемся, что это за зверь, как он работает и какие возможности предоставляет.

Читать далее
Total votes 21: ↑20 and ↓1+20
Comments32

Архитектурные паттерны в iOS

Reading time14 min
Views200K

Введение в MVP, MVC, MVVM и VIPER. Что между ними общего и в чем разница.



Делаете все по MVC, а получается некрасиво? Сомневаетесь, переходить ли на MVVM? Слышали о VIPER, но не уверены, стоит ли оно того?

В этой статье я кратко рассмотрю некоторые популярные архитектурные паттерны в среде iOS и сравню их в теории и на практике. Больше информации вы найдете при переходе по ссылкам, указанным в тексте.
Читать дальше →
Total votes 28: ↑28 and ↓0+28
Comments18

Архитектурные паттерны в iOS: страх и ненависть в диаграммах. MV(X)

Reading time15 min
Views27K

Каждый iOS разработчик в своей жизни уходил с собеседования в расстроенных чувствах и мыслью “это что еще за новая аббревиатура?” Архитектурами пугают и джунов, и миддлов, и синьоров (и наверное даже синьорит). Важно не просто знать что стоит за названием, но ещё и в каком случае какую использовать. Литературы по этому вопросу преступно мало, редкие обсуждения в интернете ограничиваются собственным опытом и какими-то поделками на гитхабе.

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

Первая часть посвящена MV(X) паттернам: самым известным и распространенным практикам в индустрии.

Читать далее
Total votes 39: ↑39 and ↓0+39
Comments12

Почему все «прутся» в IT

Reading time17 min
Views142K

Люди уходят в IT отовсюду: из инженеров КИПиА, электротехников, начальников службы охраны, химиков, бухгалтеров, экономистов, металлургов, юристов, медбратьев, руководителей отдела рекламы. Люди уходят в IT в любом возрасте: в 20, 30, 40 лет и даже после 50. 

Зачем? Почему? Что им на месте не сидится? Почему все «прутся» в это IT? Есть несколько факторов, которые этому поспособствовали. Некоторые из них мы рассмотрим. Они на самые глобальные, но важные.

Читать далее
Total votes 203: ↑186 and ↓17+214
Comments913

Дефицит есть, а денег не дают. Почему?

Reading time27 min
Views293K

Мы уже выяснили, что у нас есть дефицит рабочих рук во всех отраслях. На примере СССР увидели, что дефицит легко закрывается деньгами и плюшками, что сейчас и происходит в IT. Однако при дефиците рабочих рук в остальных отраслях зарплаты остаются на уровне Румынии и никак не подтягиваются. Почему?

Читать далее
Total votes 512: ↑497 and ↓15+588
Comments1205

SwiftUI по полочкам: Анимация. Часть 1

Reading time27 min
Views15K
image

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

image

Я с интересом изучил их код, но испытал некоторое разочарование. Нет, не в том смысле, что они что-то сделали неправильно, вовсе нет. Просто я не узнал из их кода практически ничего нового. Их реализация, это скорее про Combine, нежели про анимацию. И я решил построить свой лунопарк написать свою статью об анимации в SwiftUI, реализовав примерно тот же концепт, но используя на 100% возможности встроенной анимации, даже если это не совсем эффективно. Изучать — так до конца. Экспериментировать — так с огоньком:)

Вот что получилось у меня:


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

В этой статье же, я расскажу об основах, без понимания которых можно легко запутаться в более сложных примерах. Многое из того, о чем я буду говорить, в том или ином виде уже было рассказано в англоязычных статьях например этой серии (1, 2, 3, 4). Я же, сосредоточился не столько на перечислении способов работы, сколько на описании того, как именно это работает. И как всегда, я много экспериментировал, так что самыми интересными результатами спешу поделиться.

warning: под катом много картинок и gif-анимаций.
Читать дальше →
Total votes 12: ↑12 and ↓0+12
Comments9

SARS нерукотворный? Генеалогия уханьского коронавируса

Reading time73 min
Views291K

Не, ну какая рукотворность? Что за бред? Думал я, когда впервые услышал гипотезу о том, что Ковид-19 вызван то ли лабораторной утечкой, то ли вообще целенаправленной биоатакой. И каждый раз просто отмахивался от этих домыслов, когда они в очередной раз доплывали до меня в бурном потоке коронавирусного инфошума. Ну подумаешь, есть в Ухане институт вирусологии, мало ли.

В какой-то момент отмахиваться уже пришлось аргументированно, потому что сторонники рукотворности начали обосновывать свои тезисы о возможной искусственной природе вируса доводами из молекулярной биологии, и тут уже хотелось в пух и прах разбить их конспирологию холодными научными фактами. Уж если не как авторы статьи в Nature (казалось мне), то хотя бы как уважаемый мной Панчин.

И вот тут, в погоне за доводами против рукотворности вируса, меня и заразил вирус сомнений. В чём, собственно, причина сомнений? В том, что чем глубже погружаешься в деятельность коронавирусологов за последние 15–20 лет, тем лучше понимаешь, что создание ровно таких химер как CoV2 у них было обыденным делом. А CoV2 — это очевидная химера, основанная на летучемышином штамме RaTG13, у которого в шиповидном белке место связывания с рецептором (RBM) заменено с летучемышиного на панголиний, и вдобавок врезан особый участок из 4-х аминокислот, создавший furin cleavage site, который, как ранее выяснили вирусологи, значительно расширяет «репертуар» вируса в плане того, в чьи клетки он может проникать. Скорее всего, именно благодаря этому новому фуриновому сайту, новый мутант и сумел перескочить с исходных носителей на людей.

С учётом тех высот, которых сегодня достигла генная инженерия, синтетически собрать CoV2 по вышеописанной методике не составило бы труда даже начинающему специалисту. Ведь вирусологи, включая руководителя коронавирусного направления в Уханьском институте вирусологии Ши Чжэнли, такими вещами уже неоднократно занимались — как заменой RBM у одного вида вируса на RBM из другого
Total votes 328: ↑288 and ↓40+341
Comments720

Коронавирус 2019-nCoV: смертность небольшая, большая летальность

Reading time4 min
Views264K

Последние несколько дней в СМИ появилось много статей с данными о смертности и летальности из-за 2019-nCoV. Люди часто путают эти понятия.


Чего только стоит это интервью в Московском комсомольце:



Ссылка на оригинал
Журналист спрашивает про смертность, собеседник отвечает про летальность! Это простая некомпетентность или в очередной раз "ученый изнасиловал журналиста"?
А в чём разница?

Читать дальше →
Total votes 161: ↑127 and ↓34+141
Comments420

Из-за обязательной поддержки 5G смартфоны со Snapdragon 865 в 2020 году будут хуже

Reading time9 min
Views17K

Qualcomm так одержим 5G, что принуждает всех пользоваться им во вред эффективности работы 4G




Недавно компания Qualcomm сорвала покровы со своей флагманской системы на чипе для 2020 года — Snapdragon 865. Как обычно, можно ожидать появления этого чипа во всех смартфонах верхнего ценового сегмента в 2020-м; он на 25% быстрее того, что был в 2019-м, поддерживает новые модные навороты для камеры и сопроцессоры для ускорения ИИ. Что необычно, так это то, как Qualcomm обошлась с LTE-модемом в чипе Snapdragon 865: его там нет.

Получается, что почти каждый флагманский телефон на Android в 2020 году будет поддерживать 5G, а размещение 5G и 4G на гигантском отдельном чипе означает, что смартфоны будут использовать гораздо больше энергии, вне зависимости от того, к какой сети они будут подсоединяться. И поскольку сети 5G в 2020-м году будут находиться ещё в зародышевом состоянии, с моей точки зрения это выглядит, как серьёзное ухудшение ситуации.
Читать дальше →
Total votes 14: ↑10 and ↓4+12
Comments36

Технология GPON в многоквартирных домах – будущее интернет-провайдинга или маркетинговый пузырь?

Reading time9 min
Views193K
image

Всех приветствую. Это текст от первого лица. Пишет Дмитрий Козменко.

Прежде всего хочу подчеркнуть, что мы, сочинский провайдер «Бизнес-Связь», в течение пяти лет успешно используем технологию пассивной оптической сети в городе Сочи и прилегающих посёлках. На данный момент у нас работает более тридцати головных станций GPON, обслуживающих несколько тысяч абонентов. Мы знакомы с технологией не понаслышке, участвовали в закрытых тестированиях, дебажили прошивки вместе с разработчиками как самих устройств, так и чипсетов. То есть технологию GPON мы, разумеется, используем в работе. Однако там, где есть возможность, работаем с классической схемой по «витой паре». И нам почему-то никогда не приходило в голову брать месседж про GPON в каких бы то ни было маркетинговых завлекаловках абонентов или же в качестве какого-то нашего совершенно особенного конкурентного преимущества. Потому что, если разобраться внимательно и в деталях, абонентам технология GPON как шла, так и ехала. А тот факт, что многие провайдеры позиционируют использование GPON как сильное продуктовое преимущество для абонентов – это выглядит странно. Если не сказать, что выглядит очковтирательством немножк☺.
Читать дальше →
Total votes 48: ↑47 and ↓1+46
Comments274

Неуловимый баг LittleBigPlanet

Reading time2 min
Views41K
image

В истории игровой разработки можно обнаружить немало интересных багов, с которыми приходилось сражаться разработчикам. Впрочем, как следует из истории, рассказанной в Twitter техническим директором компании Media Molecule Алексом Эвансом (известен своим участием в демосцене конца 90-ых, серией LittleBigPlanet и игрой Rag Doll Kung Fu) на выходных, многие легенды нам еще только предстоит услышать.

Случай, о котором пойдет речь, произошел десять лет назад — в 2008 году. Во время разработки первой части игры LittleBigPlanet — оригинального паззл-платформера, который должен быть стать эксклюзивом для PlayStation 3 — разработчикам компании пришлось столкнуться с воистину неуловимым багом.

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

Процесс разработки LittleBigPlanet практически подошел к концу и оставалось всего две недели до того, как игра должна была «уйти на золото». Внезапно, тестировщик из отдела QA в Японии сообщил о том, что игра стабильно «падает», когда он оставляет ее работать на ночь. Естественно, теперь до исправления бага ни о каком выпуске игры не могло быть и речи.
Читать дальше →
Total votes 117: ↑114 and ↓3+111
Comments54

Заблуждения программистов об именах — с примерами

Reading time10 min
Views28K


В 2010 году Патрик Маккензи написал знаменитую статью «Заблуждения программистов об именах», перечислив 40 фактоидов, которые не всегда верны в отношении человеческих имён.

Думаете, программисты сели, подумали и изменили обработку имён в компьютерных системах? К сожалению, не совсем. Нас по-прежнему повсеместно просят заполнить онлайн-формы, которые предполагают обязательное наличие имени и фамилии (причём именно в таком порядке). Эти системы по-прежнему предполагают, что наши имена всегда можно записать символами алфавита, зачастую только ASCII.
Читать дальше →
Total votes 40: ↑35 and ↓5+30
Comments56

Google держит вас в персональном «поисковом пузыре» даже если выйти из аккаунта

Reading time3 min
Views63K


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

Парни из DuckDuckGo в своем исследовании утверждают, что даже при выходе из аккаунта и переходе в анонимный режим, Google продолжает подстраивать поисковую выдачу согласно ранее собранной о пользователе информации. То есть компания не оставляет человеку выбора и все равно манипулирует поиском, даже если действия пользователя явно говорят о том, что он хочет получить «нейтральный» результат.
Читать дальше →
Total votes 62: ↑56 and ↓6+50
Comments186

ВКонтакте вычисляет ваше местоположение по IP

Reading time1 min
Views85K
19 ноября 2018 года социальная сеть vk.com дала пользователям возможность скачать архив со всеми данными о них, имеющихся у соцсети. Скачав свою копию такого архива, помимо данных, которые я там ожидал увидеть, я обнаружил, что вконтакте знает два моих домашних адреса с точностью до 5 метров.

Я никогда в жизни не давал доступ к местоположению ни приложению вконтакте на IOS, ни сайту vk.com в браузере.

image

Один из адресов определился как «Работа/учёба», но по факту это просто моя вторая квартира. Которая, кстати, появилась в моей жизни всего около 3-х месяцев назад.

Мне стало любопытно, где-же я так оплошал, что такие данные утекли у меня из под носа. С этим вопросом я обратился в поддержку vk.com. Оказывается, всё дело в моём IP.

Под катом скрин переписки.
Читать дальше →
Total votes 88: ↑77 and ↓11+66
Comments219

Пермский программист арестован за создание мобильного приложения, через которое действовал педофил

Reading time3 min
Views88K
Помните, как в том году был арестован оператор tor exit-node в России? Похожая ситуация возникла с Фёдором Власовым, который разработал вместе с другом Дмитрием Моисеевым приложение Kate Mobile (альтернативный клиент для «ВКонтакте»). Его обвиняют в совершении преступления сексуального характера в отношении несовершеннолетнего. Всё потому, что след привел к прокси-серверу, арендованному Фёдором.

Читать дальше →
Total votes 190: ↑181 and ↓9+172
Comments517

Nintendo чётко даёт понять, что только пиратство может сохранить историю видеоигр

Reading time6 min
Views43K

Закрывая Wii Store Channel и не давая пользователям скачивать старые игры, компания Nintendo снова демонстрирует, что в современную цифровую эпоху вещи, которые вы покупаете, на самом деле вам не принадлежат




Пробыв в онлайне больше десятилетия, Nintendo закрывает Wii Shop Channel. Компания убрала возможность покупки внутримагазинной валюты (Wii Points) уже в прошлом марте, а с 30 января пользователи уже не могут покупать WiiWare или игры с Virtual Console.

На первый взгляд этот ход легко отмести как естественную гибель сервиса, привязанного к стареющей консоли, в результате эволюции. Особенно учитывая, что Nintendo дала пользователям достаточно много времени на то, чтобы потратить Wii Points до закрытия магазина. Однако день, когда Nintendo отключает Wii Store Channel, должен стать серьёзным предупреждением для всех, кого волнует сохранение видеоигр, и для любого потребителя, использующего цифровой магазин: часто продукты, которые мы покупаем в цифровом виде, нам не принадлежат, и когда один из цифровых магазинов закрывается, единственным способом сохранения его для истории остаётся пиратство.
Читать дальше →
Total votes 71: ↑68 and ↓3+65
Comments205

Information

Rating
Does not participate
Registered
Activity