Основы Rust: первые программы

Этот пост — вольный перевод на русский вот этой оригинальной статьи (с нашими дополнениями в местах, где это показалось нужным), которую написал Стив Донован. Пишем Hello world Первоначальная цель Hello world, с тех пор как была написана первая версия на языке Си, заключалась в тестировании компилятора и запуске реальной мини-программы.// hello.rsfn main() Rust — это язык с фигурными скобками, …

Что же лучше — PostgreSQL или MySQL

Что такое PostgreSQL? PostgreSQL — мощная система управления объектно-реляционными базами данных с открытым исходным кодом (СУОРБД). Проект активно развивается уже больше 35 лет и заслужил прочную репутацию благодаря своей надежности, отказоустойчивости и высокой производительности. В рейтинге DB-Engines PostgreSQL занимает четвертое место. История PostgreSQL PostgreSQL разработана на основе пакета POSTGRES, написанного в Калифорнийском университете в Беркли. Реализация POSTGRES …

Как создать собственную криптовалюту с помощью JavaScript

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

SOLID принципы: DIP (Принцип инверсии зависимостей (The Dependency Inversion Principle)

Существует два определения. «Модули верхних уровней не должны зависеть от модулей нижних уровней. Оба типа модулей должны зависеть от абстракций.» и «Абстракции не должны зависеть от деталей. Детали должны зависеть от абстракций.» Как соблюдать этот принцип. Вы должны использовать все классы через интерфейсы.

SOLID принципы: ISP (Принцип Разделения Интерфейса (The Interface Segregation Principle)

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

SOLID принцип: LSP Принцип подстановки Барбары Лисков (The Liskov Substitution Principle) объекты в программе должны быть заменяемыми на экземпляры их подтипов без изменения правильности выполнения программы.

Т.е. Если у вас есть место куда приходит класс (parent), то должна быть возможность без каких либо проблем добавляться и его наследник. Так же есть формулировка от Герба Саттера и Андрея Александреску: «Подкласс не должен требовать от вызывающего кода, больше чем базовый класс. И не должен предоставлять вызывающему коду, меньше чем базовый класс.»

SOLID принципы: OCP (Открытости/закрытости (Open Closed Principle)

Программные сущности (модули, классы, функции и т.д.) должны быть открыты для расширения, но закрыты для изменения (Бертранд Мэер) «Открыты для расширения», означает, что любой класс, метод, блок программного кода должен быть открыт для добавления нового функционала «Закрыты для изменения»: для добавления нового функционала в сущность, не должны вноситься изменения в код, который эту сущность использует. …

SOLID принципы: SRP (Принцип единственной ответственности, Single Responsibility Principle)

Каждый объект должен иметь одну обязанность и эта обязанность должна быть полностью инкассирована в класс (Робер Мартин). Через ваш класс должна проходить только одна ось изменений (Сергей Немчинский) Т.е. Ваш класс должен меняться только по одной причине (содержать поля и методы относящиеся к одному вопросу). Никаких Gob Object. Осмысленно используйте SRP. Не следует, необдуманно, рубить …

Bitrix ORM D7 (Object-Relational Mapping)

История развития ORM — Object-Relational Mapping, (объектно-реляционное отображение). С версии ядра 12.0.0 (2012-13 год) появился абстрактный базовый класс для работы с объектами данных DataManager (исходя из офф. документации по D7). С версии ядра 18.0.3 (2018-06-07) добавляются объекты ORM, в это же время меняется структура классов ORM (исходя из описания истории версий). С версии ядра 19.0.0 …