Как устроены смарт-контракты, как объяснить концепцию биткойна ребенку и (самое интересное) как сделать свой собственный блокчейн — обо всем под катом.
![](https://habrastorage.org/webt/-t/ln/dg/-tlndgl7htduhkl85z_hu6p9r3i.jpeg)
User
17 апреля мы перезапустили онлайн-курс «Углублённое программирование на С/С++» на платформе Stepik. Это курс для тех, кто знает С++ и хочет научиться использовать его в промышленной разработке. Мы упростили доступ к модулям, чтобы вы прошли курс в удобное время и получили сертификат. Но обо всём по порядку.
structs
и перечислений enums
, и особенно если вы подключаете механизмы протоколов protocols
и Generics
, то вы можете реально сделать прекрасную работу, имеющую дело с реальным функциональным программированием.Этот пост является вольным переводом статьи Why VIPER is a bad choice for your next application by Sergey Petrov
За последний год о VIPER писали все кому не лень. Эта архитектура реально вдохновляет разработчиков. Но большинство статей, на самом деле, довольно предвзяты. Они лишь показывают крутизну этого архитектурного паттерна, умалчивая о его негативных сторонах. А ведь проблем у него вовсе не меньше (а может даже и больше) чем у других. И в этой статье я постараюсь объяснить, почему VIPER вовсе не так хорош как о нем говорят, и почему он не подойдет для большинства ваших приложений.
Часть 0. Синглтон-Одиночка
Часть 1. Стратегия
Часть 2. Наблюдатель
Напомню, что в этой серии статей, я разбираю книгу "Паттерны проектирования" Эрика и Элизабет Фримен. И сегодня мы изучим паттерн "Стратегия". Поехали.
Авторы книги рассказывают нам историю о создании приложения SimUDuck. Начнем с реализации начального состояния приложения: у нас есть абстрактный класс Duck
и два его наследника: MallardDuck
и RedheadDuck
. Тут же мы сталкиваемся с первой сложностью: в Objective-C и Swift нет абстрактных классов.
menuController?.performSegueWithIdentifier(changeItemIdentifier, sender: nil) { segue in
let controller = segue.destinationViewController as! ChangeMenuItemController
controller.viewModel.sourceMenuItem = item
}
A. Бесплатные веб-сайты