This is a mobile optimized page that loads fast, if you want to load the real page, click this text.

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

MoonFusion

Гуру
Автор темы
high coder
14 Июн 2021
308
250
143

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


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



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

* БД - База Дынных, СУБД - Система Управления Базой Данных, SQL - Язык запросов, NoSQL - обобщенный термин для всех не реляционных подходов.

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


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

  • Тык - это серия лекций на Youtube ( 11 лекций по ~2 часа каждая ), большой объём информации с неплохой подачей вроде как умным дядей который работает/работал в ВК ( осуждаю ), крайне рекомендую посмотреть хотя бы первые две.

Мы будем говорить только о реляционных, по этому давайте поймём какую же выбрать нам для нашего крутого 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, в целом какого то особого материала даже не буду выделять так-как они все плюс минус одинаковые, ничего сверх сложного в их самостоятельном поиске я не вижу, так что перейдём дальше.

ORM ( Object Relational Mapping ):​


Выучили 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Нали



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


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

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

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

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



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


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



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


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

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

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

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



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

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

kiraz

Начинающий специалист
17 Апр 2023
269
90
53
жду гайд как получить оффер на 10k$