• Из-за обновления GTA 5 (был добавлен новый патч) может временно не работать вход в RAGE Multiplayer.

    Ошибка: Ваша версия Grand Theft Auto V не поддерживается RAGE Multiplayer.
    ERROR: Your game version is not supported by RAGE Multiplayer.

    Данная ошибка говорит о том, что GTA V обновилась до новой версии (GTA Online тоже). Вам необходимо обновить саму игру в главном меню вашего приложения (Steam / Epic Games / Rockstar Games).
    Если после этого RAGE:MP все равно не работает - вам нужно дождаться выхода патча для самого мультиплеера (обычно это занимает от нескольких часов до нескольких дней).

    Новости и апдейты Rockstar Games - https://www.rockstargames.com/newswire/
    Статус всех служб для Rockstar Games Launcher и поддерживаемых игр: https://support.rockstargames.com/ru/servicestatus


    Grand Theft Auto 5 (+ GTA Online) последний раз были обновлены:

Урок Roadmap под платформу RageMp [2/2]

MoonFusion

Гуру
high coder
14 Июн 2021
343
276
143

Как и обещал, вторая часть статьи по некому пути становления Senior Ragemp Developer'а, обойдёмся без предисловий и долгих вступлений как в предыдущих темах, так-как это логическое продолжение предыдущей темы.​

Напомню, в прошлой статье мы уже выучили Основы программирования на примере C#, изучили JavaScript, поговорили о том зачем нужен TypeScript в вашем проекте, изучили его, узнали что такое client-server, изучили NodeJS в качестве server-side, поняли зачем нужен npm и npx, а так же поговорили о различных сборщиках.

В этой же теме мы поговорим о Базе данных и совсем немного изучим побочные технологии, без которых можно обойтись:
  • Система контроля версий ( Git на примере GitHub )
  • Немного поговорим о Redis
  • Совсем чуть-чуть о Docker
Обещал без вступления, не сдержал общения, и что вы мне сделаете? :j3r:



Базы данных ( Реляционные + ORM/Не реляционные ):​

Ах, сколько же боли в двух словах - базы данных. Незаменимый инструмент в почти любом современном проекте любой сферы, эта технология предназначена для хранения данных ( логично ), конечно же в проектах RageMp мы так-же используем БД для хранения различной информации, как пример - хранить деньги игрока, его имя, фамилию, внешность, одежду и т.д.
* БД - База Дынных, СУБД - Система Управления Базой Данных, SQL - Язык запросов, NoSQL - обобщенный термин для всех не реляционных подходов.

Начнём со сложного слова, реляционные и не реляционные БД, что это вообще значит? Тут все просто, реляционные БД базируются на алгоритмическом представлении реляционной модели данных ( да, прям перед написанием этой темы я решил послушать пару лекций про теорию БД ), проще говоря реляционная БД имеет внешний вид таблицы ( хотя это не совсем так на уровне алгоритмического представления и на уровне самой СУБД, но мы опустим этот момент ), а не реляционные просто хранятся в памяти как некий объект.

Я лишь в скользь упомянул про не реляционные БД и не буду углубляться в эту тему, так-как сам не особо в этом разбираюсь, на всех своих проектах я использовал реляционные базы данных, по этому если вы хотите углубится в тему NoSQL БД, ну вы помните, надеюсь в гугле вас не забанили :peppe_roller:

Для изучения теории Базы данных я посоветую несколько источников, помните я говорил что прочитал 5 книг? Так вот, в эти 5 книг не входило ни одной по базам данных, по этому с теорией я мало знаком, но специально для темы решил изучить вопрос, из всей перерытой информации мне понравилось всего два ресурса:
  • Тык - тут у нас обобщенная теория, сделанная женщиной-тестировщицей, то есть тут не будет сложной терминологии, это лишь базовое объяснение того, что такое реляционная база данных и немного про SQL ( о нём мы ещё поговорим )

  • Тык - это серия лекций на Youtube ( 11 лекций по ~2 часа каждая ), большой объём информации с неплохой подачей вроде как умным дядей который работает/работал в ВК ( осуждаю :peppe_roller: ), крайне рекомендую посмотреть хотя бы первые две.
Теперь когда мы поняли зачем нам нужны БД, поняли что такое реляционная и не реляционная БД поговорим о СУБД, их существует довольно много, самые популярные из них, реляционные БД: MySQL, PostgreSQL, Oracle и MsSQL. Не реляционные БД: MongoDB, Cassandra.

Мы будем говорить только о реляционных, по этому давайте поймём какую же выбрать нам для нашего крутого redage 3.50.14 проекта, в общем и целом для нас отличий особо нет, можно выбрать любую, но например MsSQL и Oraсle работают на коммерческой основе ( платно ), а MySQL и PostgreSQL распространяются бесплатно с открытым исходным кодом.

Для примера я выберу MySQL, которой я в основном и пользуюсь, что бы начать работать с реляционными БД их для начала нужно развернуть на нашем сервере, либо локальном ПК, для этого качаем официальный установщик MySQL и проводим установку, так же рекомендую установить MySQL Workbench из того же установщика.

После установки и перезагрузки пекарни, либо сервера, у вас запустится служба MySQL, которая и будет представлять собой нашу СУБД, с этого момента мы можем подключится к ней например с MySQL Workbench и создать там первое пространство имён, как это сделать? Гуглите, наша тема не об этом.

После всех телодвижений нам надобно подключится к БД из нашего сервера на NodeJS, это можно сделать с помощью npm пакета mysql/mysql2, который предоставляет некий драйвер, способный подключится к нашей БД и делать к ней запросы, но делать это вот так сразу мы не будем, потому что впереди у нас ещё одна довольно интересная тема ( ORM ).

SQL ( Structured Query Language ):​

SQL - это язык запросов, в один момент все решили договорится о том, каким образом должны выглядеть запросы к реляционным БД и этим SQL стал стандартом признанным ANSI ( American National Standards Institute ), теперь большинство СУБД использую именно этот язык запросов.

Тут объяснять особо нечего, ( в частности мне объяснять нечего :peppe_roller: ), берём и учим SQL, в целом какого то особого материала даже не буду выделять так-как они все плюс минус одинаковые, ничего сверх сложного в их самостоятельном поиске я не вижу, так что перейдём дальше.

ORM ( Object Relational Mapping ):​

ORM - это инструмент, который позволяет работать с базой данных используя объектно ориентированный подход в вашей программе, т.е. вместо SQL запросов и работы с ними, вы будете создавать так называемые классы модели ( представление таблицы ), и взаимодействовать уже с этой моделью, выполняя запросы к БД с помощью различных методов класса модели.

Выучили SQL? Можете про него забыть ( не надо ), так как ORM создан для того что бы абстрагироваться от SQL запросов, ORM сама строит эти запросы и отправляет их драйверу БД, как? Гугл. Зачем? Что бы упростить вам жизнь конечно же, по опыту скажу что ORM это очень удобно и я крайне рекомендую использовать ORM в ваших проектах.

Как и СУБД, ORM есть огромное количество, мы же рассмотрим только две, которые использовал лично я, это Sequelize ( + sequelize-ts ) и TypeORM.
По своей сути они не сильно отличаются друг от друга, обе предоставляют API которое позволяет работать с любой вашей БД используя объектно ориентированных подход, но Sequelize был изначально разработан под JS и что бы нормально работать с TypeScript ему нужно расширение в виде NPM пакета sequelize-ts, TypeORM же был изначально создал под TypeScript.

Сразу упомяну что при работе с моделями таблиц, в представленной классов, хоть и не обязательно, но вам предложат использовать декораторы, рекомендую перечитать эту тему перед тем как будете писать свою первую модель, ведь декораторы в значительной мере упростят вам жизнь.

Для изучения самого Sequelize и TypeORM я рекомендую как и в случае с БД использовать официальные ресурсы, документацию, выбираем любой, и поверхностно читаем документацию, параллельно пробуя это все у себя на проекте

Sequelize - Тык ( Sequelize-ts - Тык )
TypeORM - Тык

Раздел с БД подошел к концу, далее рассмотрим дополнительные инструменты, которые может быть вам нужны, а может и нет.
PogНали :peppe_roller:



Система управления версий ( Git, на примере GitHub ):​

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

Рассмотрим GitHub в качестве инструмента для хранения, отслеживания и контроля версий вашего проекта, GitHub сам по себе является одним из самых популярных инструментов подобного типа, по этому информации о нём в гугле - нескончаемое количество, но мы лишь поговорим зачем он нам нужен.

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

А теперь представьте что вы работает не один, ваш друг Матвей внезапно решил присоединится к разработке RedAge v3.98.32, вот вы уже начали разрабатывать, делаете все в разных файлах не пересекаясь, но тут Матвей нашел баг в процессе написания нового функционала, пофиксил его и вроде все хорошо, но тут когда вы решили соединить ваш код вместе, оказалось что вы тоже трогали тот файл с багом и исправили баг по своему, не удобно, верно?

Вот для решения подобных задач и создан GitHub, почитать подробнее про принцип его работы можно тут.



Redis ( кэширование данных ):​

Redis по сути своей, инструмент для кэширования данных из БД, по сути был создал для оптимизации, что бы лишний раз не делать запрос к БД для часто используемых данных, делает он это используя оперативную память, по этому все работает действительно быстро.

А теперь важная ремарка, Redis я видел всего на одном проекте в рейдже и использовался он там по всей видимости просто что бы его использовать, я не утверждаю что он бесполезен в проектах этой сферы, но найти ему нормальное применение я так и не смог, по этому сильно много про него я особо ничего вам не расскажу, просто поделюсь ссылкой на официальную документацию инструмента и пойдём дальше, тык.



Docker ( DevOps, Оптимизация развёртывания ):​

Ещё одна тема которую я знаю поверхностно, изучал я докер чисто интереса ради и применить его по достоинству так и не удалось, это мощный инструмент который позволяет с лёгкостью развёртывать ваш огромный проект на любой машине где есть докер.

Docker - сложная тема, контейнеризация, образы, и ещё очень много сложных терминов, если попытаться понять как это все работает изнутри, можно сойти с ума, по этому я собственно и не буду пытаться объяснять то, что я и сам не понял.

В общем и целом docker используют для упрощения развёртывания проектов на серверах, вы можете настроить все окружение внутри контейнера Docker, задать все необходимые настройки, указать все необходимые пакеты, открыть все необходимы порты и когда придёт время развёртывать проект на каком то сервере, все что понадобится - установить туда свой контейнер и запустить, все, вы развернули проект, причем важный факт, вся эта история мульти-платформенная, не важно Linux у вас на сервере, или Windows, докер позволяет абстрагироваться от системы, везде где можно запустить докер - можно будет запустить ваш проект.

Делюсь источниками из которых можно подробнее изучить тему:

Тык - Docker простыми словами, буквально, на пальцах
Тык - Как работает Docker ( очень подробно )



На этом RoadMap подошел к концу, все что вам останется - сесть и писать код, используя API RageMp и те технологии которые вы выбрали, надеюсь что эти две статьи помогут вам быстро войти в сферу и переписать RedAge с нуля, снова.

Всем спасибо за внимание, жду искусственный интеллект который знает все в ответах :j3r:
( Я не против дополнений, правок и даже откровенного хейта )
 
Последнее редактирование:

kiraz

Специалист
17 Апр 2023
370
128
83
жду гайд как получить оффер на 10k$