Внедрение зависимостей очень горячая тема в любой области разработки, где мы пишем что-то более сложное чем Hello, World. Однако несмотря на казалось бы изученный вдоль и поперек вопрос, вариантов его решения вы можете на просторах интернета найти великое множество. И в каждом месте оно подается как единственно правильное. И как же выбрать? Предлагаю в этой статье немножко рассмотреть подходы, их плюсы и минусы, немножко поиграться со Swift’ом вообще и попробовать его новые фичи в виде @PropertyWrapper’s.
неділя, 29 листопада 2020 р.
Внедрение зависимостей (dependency injection) в Swift 5.1
неділя, 16 серпня 2020 р.
CS193p iPhone Application Development Spring 2020
Lecture videos from the Stanford University course CS193p, Developing Applications for iOS using SwiftUI. These lectures were delivered on-line (due to the novel coronavirus outbreak) to Stanford students during Spring quarter (April) of 2020 and are now being made available for all to watch.
Supporting materials (homework write-ups, demo code, etc.) that were distributed to students at the time the course was given have been archived at https://cs193p.stanford.edu.
четвер, 27 лютого 2020 р.
Entity Component System (ECS)
Все мы неоднократно слышали о чудесах объектно-ориентированного программирования (ООП), позволяющих контролировать сложность программ, которые мы разрабатываем. Объект реального мира сопоставляется объекту какого-либо класса в коде. Вспомним, к примеру, хрестоматийный пример с Animal, Dog, Cat и т.д.
Но оказывается, игровая индустрия уже давно ушла от ООП в сторону Data Oriented Design (DOD), дизайна программ основанного на данных. Вот главные причины:
- ООП в случае игр больше вредит, чем помогает. Появляется всемогущий SuperObject, который определяет все методы всех наследников (а это очень много даже в случае игр среднего размера)
- Обдумывание архитектуры проекта в рамках объектов звучит привлекательно, но чаще всего действия в игре затрагивают две и более сущности, что делает применение методов затруднительным
Эти и многие другие проблемы ООП в играх рассматривает Кэтрин Вэст (Catherine West) в своем выступлении Using Rust For Game Development на RustConf 2018.
Кэтрин, как апологет языка Rust, показывает, как использование устаревшего антипаттерна SuperObject в этом языке ведет к бесконечной борьбе с borrow-checker'ом. "Сдавшись", Кэтрин постепенно начинает логично модифицировать архитектуру игры так, что в итоге приходит к Entity Component System (ECS), пожалуй, самой знаменитой реализации концепции Data Oriented/Driven Design, в которую Rust вписывается чуть более, чем полностью. В результате получается гибкая и более производительная система сущностей и компонентов, которые могут быть без труда сериализованы на диск или в сеть.
Кстати, есть более длинная, но и более интересная версия доклада в виде поста с кодом в блоге Кэтрин
неділя, 15 вересня 2019 р.
Что нового в C++ 20 и какие изменения ожидают язык в будущем?
Если вы знакомы с C++, то, возможно, имеете о нём одно из двух общепринятых мнений. C++ любят за его обширный функционал и ненавидят за неоправданную сложность.
После C++ 17 это будет шестая редакция стандарта. Программирование на C++ включает в себя множество возможностей, от простейшего «С с классами» до написания кода наивысшего уровня.
О том, что нового ждёт разработчиков на C++, можно почитать в оригинале статьи.
пʼятниця, 12 жовтня 2018 р.
REST is not RPC
Тебе не приелось слово REST? Нет, я не говорю об отдыхе, я говорю про тот самый архитектурный стиль. Пожалуй, слишком часто я слышу о том, что у тех REST API, у этих REST API, а потом, оказывается что всё не так просто. Здесь пойдет речь о том какой смысл в этой аббревиатуре и что в неё вкладывают все вокруг, мы вспомним идеи и посмотрим как их реализуют.
понеділок, 10 вересня 2018 р.
Browsh
Нашел интересную штуку: текстовый браузер, который может работать в терминале и поддерживает HTML5, CSS3, JS, видео и WebGL.
неділя, 12 серпня 2018 р.
Книга по x86 ассемблеру
Многие говорят, что сейчас знание ассемблера не нужно, что это прошлый век и все такое. Однако когда такие "советчики" встречаются с багом компилятора или с непонятным core dump'ом они почему-то сразу смолкают.
Конечно, я тоже не приветствую программирование всего кода на ассемблере, но иногда знание его просто необходимо в вышеупомянутых случаях.
Неплохое введение по ассемблеру можно найти в книге А. Столярова "Программирование на языке ассемблера NASM"
Книга бесплатная. Рекомендую, если вы совсем "чайник".