Backend
3.95K subscribers
38 photos
716 links
Комьюнити Backend программистов.
Python, Java, Golang, PHP, C#, C/C++, DevOps

Сайт easyoffer.ru
Реклама @easyoffer_adv
ВП @easyoffer_vp
Download Telegram
🤔 Какие блокировки бывают в Postgres?

1. Row-level locks: блокируют отдельные строки (например, SELECT FOR UPDATE).
2. Table-level locks: блокируют всю таблицу на различные операции (ACCESS SHARE, ROW EXCLUSIVE, EXCLUSIVE и т.д.).
3. Advisory locks: пользовательские блокировки, задаваемые вручную для синхронизации.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1
🤔 Что такое транзакция?

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

🚩ACID свойства

🟠Atomicity (Атомарность):
Транзакция либо выполняется полностью, либо не выполняется вовсе. Если происходит ошибка, все операции транзакции откатываются. Например, в банковской системе перевод денег между счетами требует списания суммы с одного счета и зачисления на другой. Если одна из операций не выполнится, другая также должна быть отменена.

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

🟠Isolation (Изоляция):
Выполнение транзакций изолировано друг от друга, так что параллельные транзакции не влияют на промежуточные состояния друг друга. Если две транзакции пытаются изменить одни и те же данные, одна из них должна завершиться до того, как другая начнет свои изменения, чтобы избежать конфликтов.

🟠Durability (Долговечность):
После завершения транзакции её результаты сохраняются даже в случае сбоя системы. Если транзакция по записи данных в базу данных завершилась успешно, данные останутся сохраненными даже после перезагрузки сервера.

🚩Этапы выполнения транзакции

1⃣начало выполнения транзакции.
2⃣Выполняются все необходимые операции (вставка, обновление, удаление и т.д.).
3⃣Если все операции выполнены успешно, изменения фиксируются.
4⃣Если произошла ошибка, все изменения отменяются, возвращая базу данных в исходное состояние.

🚩Применение транзакций

🟠Обеспечивают целостность операций перевода денежных средств.
🟠Гарантируют корректное обновление информации о заказах и инвентаре.
🟠Обеспечивают корректность резервирования мест или ресурсов.

Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔 Какая разница между аутентификацией и авторизацией?

1. Аутентификация:
- Процесс проверки личности пользователя (например, с помощью логина и пароля).
- Отвечает на вопрос: "Кто вы?"
2. Авторизация:
- Процесс определения прав доступа пользователя к ресурсам.
- Отвечает на вопрос: "Что вам разрешено делать?"


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥4
🤔 Почему синглтон называют антипаттерном?

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

🟠Глобальное состояние
Синглтон представляет собой глобальное состояние, которое может изменяться из любого места в программе. Это приводит к трудностям в отслеживании и понимании изменений состояния, что усложняет отладку и тестирование.

🟠Нарушение принципов ООП
Синглтон нарушает принцип единственной ответственности (SRP - Single Responsibility Principle), так как он сочетает в себе функциональность и управление своим экземпляром. Это также нарушает принцип инверсии зависимостей (DIP - Dependency Inversion Principle), так как клиенты напрямую зависят от конкретного класса.

🟠Тестируемость
Синглтоны усложняют написание модульных тестов, так как глобальное состояние сохраняется между тестами, что может приводить к непредсказуемому поведению. Мокинг (mocking) и подмена синглтона в тестах также становятся сложными задачами.

🟠Жесткие зависимости
Использование синглтона создает жесткие зависимости между классами, что делает код менее гибким и увеличивает связность. Это затрудняет изменение и поддержку кода в будущем.

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

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

Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
🤔 Что такое модульное программирование?

Это метод разработки, при котором приложение делится на независимые модули (компоненты), каждый из которых выполняет конкретную задачу.
Преимущества:
1. Упрощение поддержки и тестирования.
2. Повышение повторного использования кода.
3. Уменьшение связности между компонентами.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2
🤔 Что такое Scrum?

Это методология управления проектами и одна из наиболее популярных реализаций Agile, предназначенная для гибкой разработки программного обеспечения. Scrum помогает командам работать более эффективно и адаптироваться к изменениям в требованиях и приоритетах. Основные концепции и элементы Scrum включают следующие компоненты:

🚩Основные концепции

🟠Инкрементная и итеративная разработка
Scrum разбивает работу над проектом на небольшие итерации, называемые спринтами. Каждый спринт обычно длится от одной до четырех недель и заканчивается созданием работающего инкремента продукта.

🟠Самоорганизующиеся команды
Команды в Scrum сами управляют своей работой и распределяют задачи между участниками без вмешательства извне.

🟠Роли в Scrum
В Scrum выделяются три основных роли:
Product Owner (Владелец продукта): отвечает за создание и управление бэклогом продукта, определение приоритетов и взаимодействие с заинтересованными сторонами.
Scrum Master: помогает команде следовать принципам Scrum, устраняет препятствия и обеспечивает эффективность работы команды.
Development Team (Команда разработки): непосредственно занимается созданием продукта, включает специалистов различных профилей, необходимых для выполнения задач.

🚩Основные элементы

🟠Product Backlog (Бэклог продукта)
список всех требований и функций, которые должны быть реализованы в продукте. Элементы бэклога приоритизируются владельцем продукта.

🟠Sprint Backlog (Бэклог спринта)
список задач, которые команда обязуется выполнить в текущем спринте. Эти задачи выбираются из бэклога продукта на основе приоритетов и возможностей команды.

🟠Sprint (Спринт)
фиксированный период времени, в течение которого команда работает над выполнением задач из бэклога спринта. В конце спринта команда демонстрирует результат своей работы.

🟠Daily Scrum (Ежедневный скрам)
ежедневные короткие встречи (обычно 15 минут), на которых команда обсуждает прогресс, планирует работу на день и выявляет препятствия.

🟠Sprint Review (Обзор спринта)
встреча в конце каждого спринта, на которой команда демонстрирует результаты своей работы заинтересованным сторонам и получает обратную связь.

🟠Sprint Retrospective (Ретроспектива спринта)
встреча после завершения спринта, на которой команда анализирует свою работу, обсуждает, что было хорошо, что можно улучшить, и разрабатывает план улучшений на следующий спринт.

🚩Плюсы

Гибкость
Scrum позволяет быстро адаптироваться к изменяющимся требованиям и приоритетам.
Прозрачность
Частые демонстрации результата и обратная связь обеспечивают высокую степень прозрачности процесса разработки.
Повышение качества
Регулярные проверки и ретроспективы помогают команде постоянно улучшать качество продукта и процесса.
Улучшение взаимодействия
Scrum способствует более тесному взаимодействию между членами команды и заинтересованными сторонами.

Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔 В чем разница между SQLite и Express SQL?

1. SQLite:
- Это встроенная реляционная база данных, которая хранит все данные в одном файле.
- Легковесная, не требует серверного ПО, отлично подходит для небольших проектов.
- Поддерживает стандартный SQL, но ограничена в функциональности (например, не поддерживает масштабируемость и сложные запросы).
2. Express SQL:
- Это не база данных, а фреймворк (Express.js) в Node.js, который может взаимодействовать с SQL-базами (например, MySQL, PostgreSQL).
- Используется для создания серверной логики, предоставляющей доступ к базам данных через API.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2
🤔 Что такое SOLID?

Это акроним, представляющий пять основных принципов объектно-ориентированного программирования и дизайна, которые помогают разработчикам создавать более понятный, гибкий и поддерживаемый код. Эти принципы были предложены Робертом Мартином (известным также как Uncle Bob) и являются основополагающими в области программной инженерии.

🟠Single Responsibility Principle (Принцип единственной ответственности)
Этот принцип гласит, что у каждого класса должна быть только одна причина для изменения, то есть класс должен иметь только одну ответственность или задачу. Это помогает уменьшить сложность и повысить читаемость кода, делая его более управляемым и легким для поддержки. Когда класс выполняет лишь одну задачу, его легче тестировать и изменять без влияния на другие части системы.

🟠Open/Closed Principle (Принцип открытости/закрытости)
Программные сущности (классы, модули, функции и т.д.) должны быть открыты для расширения, но закрыты для модификации. Это означает, что поведение классов должно быть расширяемым без изменения их исходного кода. Для реализации этого принципа часто используются абстракции и интерфейсы, которые позволяют добавлять новые функции через наследование и полиморфизм, не нарушая существующий код.

🟠Liskov Substitution Principle (Принцип подстановки Барбары Лисков)
Объекты подклассов должны быть заменяемы объектами суперклассов без нарушения правильности программы. Это означает, что если у нас есть базовый класс и его подкласс, то мы должны иметь возможность заменить экземпляры базового класса экземплярами подкласса без изменения желаемого поведения программы. Этот принцип поддерживает полиморфизм и гарантирует, что производные классы могут корректно взаимодействовать с остальным кодом.

🟠Interface Segregation Principle (Принцип разделения интерфейсов)
Клиенты не должны зависеть от интерфейсов, которые они не используют. Этот принцип направлен на создание узкоспециализированных интерфейсов, которые являются специфичными для отдельных клиентов. Таким образом, классы, реализующие эти интерфейсы, не будут обязаны реализовывать методы, которые им не нужны. Это уменьшает сложность и улучшает управляемость кода, а также способствует гибкости и повторному использованию интерфейсов.

🟠Dependency Inversion Principle (Принцип инверсии зависимостей)
Модули верхнего уровня не должны зависеть от модулей нижнего уровня. Оба типа модулей должны зависеть от абстракций. Этот принцип направлен на уменьшение зависимости высокоуровневого кода от низкоуровневых деталей, что позволяет легче изменять и тестировать систему. Реализация этого принципа часто включает использование инверсии управления (IoC) и внедрения зависимостей (DI), что способствует созданию более гибких и модульных архитектур.

Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔 В чем основные принципы инкапсуляции?

1. Сокрытие деталей реализации:
- Внешний интерфейс предоставляет доступ к функциям объекта, скрывая его внутреннюю логику.
2. Контроль доступа:
- Использование модификаторов доступа (private, protected, public) для ограничения работы с атрибутами и методами.
3. Упрощение взаимодействия:
- Инкапсуляция позволяет пользователям работать с объектами через простой и понятный интерфейс, не вникая в детали их работы.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2👍1
🤔 В чем разница между Postgres и MySQL?

Это реляционные системы управления базами данных (СУБД), но у них есть значительные различия, которые влияют на выбор той или иной системы в зависимости от проекта.

🟠Архитектура и модель хранения данных
PostgreSQL — объектно-реляционная СУБД (ORDBMS), поддерживающая расширяемость, сложные структуры данных и расширенные функции. Она использует MVCC (Multiversion Concurrency Control) для обработки транзакций.
MySQL — классическая реляционная СУБД (RDBMS). По умолчанию использует механизм хранения InnoDB, который поддерживает ACID, но менее гибок, чем у PostgreSQL.

🟠Язык SQL и расширенные функции
PostgreSQL поддерживает более сложные SQL-конструкции, такие как CTE (Common Table Expressions), оконные функции, пользовательские типы данных и полнотекстовый поиск.
MySQL менее гибок в плане сложных SQL-запросов, хотя в новых версиях поддержка CTE и оконных функций была добавлена.

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

🟠Расширяемость
PostgreSQL позволяет добавлять новые типы данных, операторы и даже писать пользовательские функции на различных языках (PL/pgSQL, Python, JavaScript и др.).
MySQL менее гибок, хотя поддерживает хранимые процедуры и триггеры.

🟠Совместимость с ACID и репликация
PostgreSQL полностью ACID-совместим, поддерживает сложные транзакции и строгую консистентность данных.
MySQL тоже поддерживает ACID (через InnoDB), но раньше его главная фишка была в высокой скорости за счет возможного ослабления требований к консистентности.

🟠Масштабируемость и репликация
MySQL традиционно использовался для масштабирования за счет мастер-слейв репликации и шардинга.
PostgreSQL поддерживает логическую и потоковую репликацию, а также такие расширения, как Citus, позволяющие эффективно масштабировать базу данных горизонтально.

🟠Поддержка JSON и NoSQL-функций
PostgreSQL изначально поддерживает JSONB, что делает его хорошим выбором для гибридных реляционно-документных решений.
MySQL тоже поддерживает JSON, но его функциональность более ограничена.

🟠Сообщество и лицензия
PostgreSQL — полностью open-source (лицензия PostgreSQL), активно развивается сообществом.
MySQL принадлежит Oracle, и хотя есть open-source-версия, некоторые функции доступны только в коммерческих редакциях.

Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
🤔 Что такое CGI? Плюсы, минусы?

Это технология для обработки запросов и генерации динамических веб-страниц через скрипты на сервере.
Плюсы:
1. Простота реализации.
2. Независимость от языка программирования (поддерживаются Python, Perl и др.).
3. Легкость интеграции с сервером.
Минусы:
1. Медлительность: для каждого запроса создается новый процесс.
2. Высокая нагрузка на сервер при большом количестве запросов.
3. Устаревший подход, заменен современными технологиями (FastCGI, PHP, Node.js).


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔 Из чего состоит запрос на сервере?

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

🟠Стартовая линия (Request Line)
Метод: Определяет тип запроса и действия, которые должен выполнить сервер. Основные методы включают:
GET: Запрос на получение данных с сервера.
POST: Отправка данных на сервер для обработки (например, форма).
PUT: Замена существующего ресурса на сервере.
DELETE: Удаление ресурса с сервера.
PATCH: Частичное обновление ресурса.
URI (Uniform Resource Identifier): Указывает путь к ресурсу на сервере.
Версия протокола HTTP: Определяет используемую версию HTTP, например, HTTP/1.1.

🟠Заголовки (Headers)
Метаданные, которые предоставляют дополнительную информацию о запросе. Примеры заголовков:
Host: Указывает имя хоста и, возможно, номер порта сервера (например, www.example.com).
User-Agent: Информация о клиентском приложении, совершающем запрос (например, браузер).
Accept: Типы данных, которые клиент готов принять (например, text/html, application/json).
Content-Type: Тип данных, передаваемых в теле запроса (например, application/json для JSON данных).
Authorization: Информация для аутентификации, если запрос требует авторизации.

🟠Тело запроса (Body)
Содержит данные, отправляемые на сервер. Тело запроса используется в методах POST, PUT, PATCH для передачи данных, таких как формы, файлы или JSON-объекты. Для методов GET и DELETE тело запроса обычно не используется.

🚩Зачем нужны эти компоненты

🟠Метод и URI
Метод определяет действие, которое клиент хочет выполнить, а URI указывает конкретный ресурс, к которому это действие применяется. Это основа понимания сервером того, что именно клиент запрашивает.

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

🟠Тело запроса
Тело запроса содержит основное содержание, которое клиент хочет передать на сервер. Например, данные формы, JSON-объекты или файлы. Без тела запроса невозможно передать на сервер данные, которые необходимо обработать.

POST /submit-form HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0
Content-Type: application/x-www-form-urlencoded
Content-Length: 27

name=John+Doe&age=30


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
🤔 Что такое XSS? Примеры. Как защитить приложение?

Это уязвимость, при которой злоумышленник внедряет вредоносный скрипт в веб-страницу, что позволяет красть данные пользователя или выполнять действия от его имени.
Примеры:
1. Ввод JavaScript-кода в поле формы, который отображается в браузере без фильтрации.
2. Перехват сессий через подделку cookies.
Как защититься:
1. Валидировать и экранировать пользовательский ввод.
2. Использовать CSP (Content Security Policy) для ограничения выполнения скриптов.
3. Хранить куки с флагом HttpOnly.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Forwarded from easyoffer
Привет, ребята!
1,5 года я учился на программиста, а сайт easyoffer.ru стал моим пет-проектом. Я создавал его, потому что:
а) нужно было добавить хоть какой-нибудь проект в резюме
б) подготовиться к прохождению собесов

И всё получилось! Благодаря еasyoffer я успешно прошёл собеседование и устроился Python Junior-разработчиком на удаленку с зарплатой 115 тысяч рублей.

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

По-этому я с самого начала заложил в проект минимальную бизнес-модель, на случай, если сайт начнёт набирать трафик. Я предложил пользователям полный доступ к сайту в обмен на подписку на Telegram-каналы. Это позволяло развивать аудиторию, а в будущем — зарабатывать на рекламе.

Результат превзошёл ожидания!
С момента запуска easyoffer посетило 400 тысяч человек. А когда доход с рекламы превысил мою зарплату программиста, я принял решение уйти с работы и полностью посвятить себя разработке новой версии сайта.

Вот так, зайдя в IT, через 4 месяца вышел через свой же пет-проект. Мне очень повезло

Уже год я работаю над easyoffer 2.0.
Это будет более масштабный и качественной новый проект:
– Появится тренажер
– Появятся задачи из собесов
– Фильтрация контента по грейдам
и еще очень много фич, о которых я расскажу позже.

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

А те, кто поддержат проект первыми, получат специальные лимитированные выгодные вознаграждения. Следите за этим телеграм каналом, если хотите стать первыми сапортерами.
🤔 Что такое рекурсия?

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

🚩Как это работает?

При вызове рекурсивной функции создается новый контекст выполнения, в котором хранятся ее локальные переменные и текущий прогресс. Каждый новый вызов функции откладывается в стек вызовов, пока не будет достигнуто базовое условие (условие выхода), после чего начинается обратный процесс – возвращение значений и сворачивание стека.

🚩Где используется рекурсия?

🟠Алгоритмы обхода структур данных
например, обход деревьев (DFS) или графов.
🟠Разбиение задач
например, алгоритм "разделяй и властвуй" (быстрая сортировка, сортировка слиянием).
🟠Работа с комбинаторикой
вычисление факториала, чисел Фибоначчи, генерация перестановок.
🟠Парсинг и разбор выражений
например, в компиляторах для обработки синтаксических деревьев.

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

🚩Минусы
Использует стек вызовов, что может привести к переполнению (Stack Overflow).
Часто менее эффективна, чем итерация, из-за накладных расходов на создание новых контекстов выполнения.
Может требовать оптимизации, например, через хвостовую рекурсию (tail recursion).

Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔 Как защитить куки от воровства и подделки?

1. Защита от воровства:
- Использовать атрибут HttpOnly: предотвращает доступ к куки через JavaScript.
- Включить Secure: куки передаются только через HTTPS.
- Установить флаг SameSite: предотвращает отправку куки при межсайтовых запросах.
2. Защита от подделки:
- Подписывать куки с использованием HMAC или JWT.
- Хранить минимально необходимую информацию в куки, основную — на сервере.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6
🤔 Какая разница между базами данных MySQL и NoSQL?

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

🚩MySQL (Реляционные базы данных)

🟠Структура данных
MySQL использует фиксированную схему, что означает, что структура таблиц (колонки, типы данных) должна быть определена заранее и изменения могут быть сложными. Данные хранятся в таблицах с фиксированным набором столбцов.

🟠Модель управления данными
MySQL использует SQL для определения, манипуляции и управления данными. Поддерживает ACID (Atomicity, Consistency, Isolation, Durability) свойства, что обеспечивает надежные и согласованные транзакции.

🟠Масштабируемость
Легче масштабировать вертикально (увеличение мощности одного сервера), но горизонтальная масштабируемость (распределение на несколько серверов) сложнее и требует дополнительных усилий (например, шардинг).

🟠Случаи использования
Хорошо подходит для приложений с четко определенными структурами данных, такими как CRM, ERP системы, финансовые приложения и системы управления содержимым (CMS).

🚩NoSQL (Нереляционные базы данных)

🟠Структура данных
NoSQL базы данных поддерживают гибкие и динамические схемы данных, что позволяет легко изменять структуру данных без необходимости изменения схемы. Поддерживают различные модели данных, включая документные, ключ-значение, графовые и колонковые базы данных.

🟠Модель управления данными
Используют разные способы доступа и управления данными, которые не требуют использования SQL. NoSQL базы данных часто следуют принципу CAP-теоремы (Consistency, Availability, Partition tolerance), делая акцент на доступности и устойчивости к разделению, иногда жертвуя строгой консистентностью.

🟠Масштабируемость
Легко масштабируются горизонтально, распределяя данные и нагрузку на несколько серверов, что позволяет эффективно работать с большими объемами данных и высокой нагрузкой.

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

🚩Основные различия

🟠Схема данных
MySQL: Фиксированная схема, данные хранятся в таблицах.
NoSQL: Гибкая схема, данные могут храниться в документах, ключ-значение, графах или столбцах.

🟠Запросы и управление данными
MySQL: SQL для запросов и управления данными.
NoSQL: Различные модели данных и запросов, не обязательно SQL.

🟠Консистентность и транзакции
MySQL: Поддерживает ACID транзакции.
NoSQL: Поддержка транзакций варьируется, часто следуют CAP-теореме, обеспечивая доступность и устойчивость к разделению.

🟠Масштабируемость:
MySQL: Для вертикальной масштабируемости.
NoSQL: Для горизонтальной масштабируемости.

Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
🤔 Что такое транзакция в БД?

Это последовательность операций, которая должна выполняться как единое целое, чтобы данные оставались согласованными. Она подчиняется принципам ACID (атомарность, консистентность, изолированность, долговечность). Например, перевод денег между счетами в банке реализуется как транзакция, чтобы избежать несогласованных изменений.

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
2
Forwarded from easyoffer
Ищу работу пол года

Практически под каждым постом в этом канале я вижу комментарии от людей, которые ищут работу по полгода. Это перерастает в обсуждение того, как нужно (или не нужно) искать работу, почему процесс найма сломан и как они откликались на фейковые вакансии.

Честно говоря, искать работу полгода — это нонсенс. Очевидно, что человек делает что-то не так. Главная ошибка, которую совершают многие, — это создание иллюзии поиска работы.

То есть человек вроде бы ищет работу, но делает это неэффективно, тратя время на нецелевые действия. Например:

Просматривает вакансии перед откликом.
Пытается понять, подходит ли он под вакансию. Если считает, что не подходит — не откликается.
Пишет сопроводительные письма (иногда даже уникальные под каждую вакансию).
Заполняет анкеты, проходит тесты.

Все эти действия отнимают время, но не приводят к результату.

Почему это не работает?

HR-менеджер не может вручную отсмотреть 2000 откликов, оценить каждое резюме и прочитать сопроводительные письма. Поэтому компании используют ATS-системы (системы автоматического подбора), которые анализируют резюме и определяют процент его соответствия вакансии.

Что делать, чтобы повысить шансы?

1️⃣ Добавить ключевые навыки в резюме — и в основной текст, и в теги. Возьмите их с easyoffer.ru

2️⃣ Убрать нерелевантный опыт, оставить только подходящий.

3️⃣ Оформить опыт так, чтобы он выглядел релевантным. Если у вас его нет, укажите проекты, стажировки или другой опыт, который можно представить как работу от 1 года. Если опыт слишком большой, сузьте его до 6 лет.

4️⃣ Откликаться на все вакансии без разбору. Если вы Junior, не ищите только стажер или Junior-вакансии — пробуйте везде. Не отказывайте себе сами, пусть это решит HR

5️⃣ Сделать резюме публичным, потому что HR-менеджеры часто ищут кандидатов не только среди откликов, но и в базе резюме.

6️⃣ Используйте ИИ по минимуму – ATS-системы считывают это и помечают "сгенерировано ИИ"

‼️ Главное правило: чем больше откликов — тем выше шанс получить оффер. Делайте резюме удобным для ATS-систем, и вас заметят.

1. Посмотрите видео о том как я вывел свою резюме в Топ1 на HH
2. Посмотрите видео как я нашел первую работу
3. Прочитайте этот кейс про оптимизацию резюме

Если прям вообще тяжело.

Создайте несколько разных резюме. Создайте 2, 3 да хоть 10 резюме. Настройте авто-отлики и ждите приглашения на собесы.

Не нужно создавать иллюзию поиска работы, сделайте несколько простых и актуальных действий.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
🤔 Что такое git-flow?

Git-flow — это модель ветвления в Git, предложенная Винсентом Дриссеном, которая структурирует разработку, упрощает выпуск версий и поддерживает стабильность проекта.

🚩Основные компоненты git-flow

🟠Основные
master: Эта ветка содержит стабильные и готовые к выпуску версии продукта. Каждый коммит в master должен представлять собой релизную версию.
develop: Эта ветка используется для интеграции всех новых разработок. Она содержит последний готовый к выпуску код, но ещё может быть нестабильной.

🟠Поддерживающие
feature: Эти ветки создаются для разработки новых функций. Они ответвляются от develop и сливаются обратно в develop после завершения работы. Например, feature/новая-функция.
release: Эти ветки создаются для подготовки нового релиза. Они ответвляются от develop, и после завершения всех необходимых исправлений и тестирования сливаются в master и develop. Например release/1.0.0
hotfix: Эти ветки используются для срочных исправлений в стабильной версии продукта. Они ответвляются от master и после завершения работы сливаются в master и develop. Например, hotfix/исправление-ошибки.

🚩Как это используется:

🟠Создание новой функции:
Создайте ветку feature от develop.
Разработайте новую функцию.
Слейте feature ветку обратно в develop.

🟠Подготовка к новому релизу:
Создайте ветку release от develop.
Проведите финальное тестирование и внесите мелкие исправления.
Слейте release ветку в master и develop.
Создайте тег для новой версии на master.

🟠Срочные исправления:
Создайте ветку hotfix от master.
Исправьте проблему.
Слейте hotfix ветку в master и develop.
Создайте тег для новой версии на master.

🚩Плюсы

🟠Организация: Четкое разграничение между стабильной версией и текущей разработкой упрощает управление проектом.
🟠Параллельная разработка: Легкость создания и слияния веток способствует одновременной работе над несколькими функциями.
🟠Поддержка релизов: Обособленные ветки для подготовки релизов и срочных исправлений упрощают управление версионностью.

🚩Минусы:

🟠Сложность: Может быть избыточным для небольших проектов с небольшими командами.
🟠Требования к дисциплине: Требует строгого соблюдения правил для обеспечения стабильности и непрерывности разработки.

Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
🤔 Что такое Agile?

Это набор принципов для гибкой разработки, основанный на ценностях из Agile Manifesto. Он подчеркивает сотрудничество между командами, быструю доставку продукта и адаптацию к изменениям. Agile применяет такие методологии, как Scrum и Kanban, чтобы сократить цикл разработки и обеспечить обратную связь от заказчиков.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1