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

Сайт easyoffer.ru
Реклама @easyoffer_adv
ВП @easyoffer_vp
Download Telegram
🤔 Что такое диалекты в SQL?

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

🚩Причины существования

🟠Оптимизация производительности
Разные СУБД могут иметь оптимизации, которые лучше работают с их архитектурой, что приводит к созданию специфических синтаксических конструкций.
🟠Дополнительные возможности
Включение дополнительных функций, которые не охватываются стандартом SQL, для удовлетворения специфических потребностей пользователей.
🟠Исторические причины
Некоторые диалекты развивались на основе ранних версий SQL, и их отличия сохранились в современных реализациях.

🚩Примеры диалектов SQL

🟠MySQL
Поддержка специфичных функций, таких как LIMIT для ограничения числа возвращаемых строк, функции работы с датой и временем, специфичные для MySQL.
SELECT * FROM users LIMIT 10;     


🟠PostgreSQL
Расширенная поддержка типов данных, таких как JSON и массивы, поддержка оконных функций, богатый набор встроенных функций.
SELECT * FROM users WHERE age > 30 ORDER BY name OFFSET 10 LIMIT 10;     


🟠Oracle SQL
Сложные типы данных, PL/SQL для написания хранимых процедур и триггеров, поддержка соединений CONNECT BY для работы с иерархическими данными.
SELECT * FROM users WHERE ROWNUM <= 10;     


🟠Microsoft SQL Server (T-SQL)
Поддержка TOP для ограничения числа возвращаемых строк, встроенный язык T-SQL для написания процедур и триггеров, специфичные функции для работы с датой и временем.
SELECT TOP 10 * FROM users;     


🟠SQLite
Легковесная база данных, встраиваемая в приложения, поддержка ограниченного набора функций SQL, отсутствие полноценной поддержки некоторых функций, таких как внешние ключи до версии 3.6.19.
SELECT * FROM users LIMIT 10 OFFSET 0;


🚩Важные аспекты диалектов

🟠Совместимость
Не все SQL-запросы могут быть совместимы между различными СУБД из-за различий в синтаксисе и поддерживаемых функциях.
🟠Миграция
При переносе базы данных с одной СУБД на другую может потребоваться переписывание запросов и процедур для обеспечения совместимости.
🟠Документация
Каждая СУБД предоставляет документацию по своим диалектам SQL, где описаны специфичные функции и их использование.

MySQL и PostgreSQL
SELECT * FROM users LIMIT 10 OFFSET 20;  


SQL Server
SELECT * FROM users ORDER BY name OFFSET 20 ROWS FETCH NEXT 10 ROWS ONLY;  


Oracle
SELECT * FROM (
SELECT u.*, ROWNUM rnum
FROM (SELECT * FROM users ORDER BY name) u
WHERE ROWNUM <= 30
)
WHERE rnum > 20;


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

Индексы ускоряют поиск данных в базах данных за счет создания дополнительных структур данных, которые позволяют быстрее находить строки в таблице по ключевым столбцам. Они могут быть реализованы в виде деревьев (например, B-деревья), хэш-таблиц и других структур, оптимизирующих чтение данных за счет потенциального увеличения времени на обновление таблиц.

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

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

🟠Архитектура
SQLite
Встраиваемая СУБД: SQLite - это библиотека, которая встраивается непосредственно в приложение. Она не требует отдельного сервера для работы.
Без сервера: Работает без необходимости запуска серверного процесса, что упрощает установку и настройку.
Файловая система: Все данные хранятся в одном файле базы данных на диске.
SQL Server Express
Серверная СУБД: SQL Server Express - это урезанная версия Microsoft SQL Server, требующая установки и запуска серверного процесса.
Клиент-серверная архитектура: Клиенты подключаются к серверу базы данных через сеть.
Разделенные файлы данных и логов: Данные и логи хранятся в отдельных файлах.

🟠Производительность и масштабируемость
SQLite
Легковесная и быстрая: Подходит для приложений с небольшими или средними объемами данных и низкими требованиями к многопользовательскому доступу.
Ограниченная многопользовательская поддержка: Поддерживает ограниченное количество одновременных пользователей, так как блокировки осуществляются на уровне файла.
SQL Server Express
Масштабируемость: Подходит для приложений с высокими требованиями к производительности и поддерживает значительное количество одновременных пользователей.
Многопользовательская поддержка: Обеспечивает управление многопользовательским доступом и параллельностью транзакций.

🟠Функциональные возможности
SQLite:
Основные возможности SQL: Поддерживает основные команды SQL, такие как SELECT, INSERT, UPDATE, DELETE.
Ограниченные возможности: Отсутствие многих расширенных функций, таких как триггеры, хранимые процедуры, сложные типы данных и транзакции с несколькими заявлениями.
SQL Server Express:
Расширенные возможности: Поддержка триггеров, хранимых процедур, полнотекстового поиска, транзакций и других продвинутых функций.
Ограничения по сравнению с полной версией: SQL Server Express имеет ограничения по объему базы данных (до 10 ГБ на одну базу данных) и по использованию ресурсов (до 1 ГБ ОЗУ и 1 процессор).

🟠Установка и развертывание
SQLite
:
Простота установки: Не требует установки, просто включается как библиотека в приложение.
Легкость развертывания: Так как данные хранятся в одном файле, перемещение базы данных сводится к копированию этого файла.
SQL Server Express:
Требует установки: Необходимо установить серверную часть, что может включать несколько шагов настройки.
Администрирование: Требует определенного уровня администрирования для настройки безопасности, резервного копирования и восстановления данных.

🟠Случаи использования
SQLite:
Мобильные приложения: Часто используется в мобильных приложениях (например, Android и iOS) для локального хранения данных.
Встроенные системы: Подходит для встроенных систем и IoT устройств.
Прототипирование и тестирование: Удобен для быстрого создания прототипов и тестирования.
SQL Server Express:
Веб-приложения: Хорошо подходит для небольших веб-приложений и сервисов, особенно на платформе Windows.
Настольные приложения: Используется в настольных приложениях, требующих мощной базы данных.
Учебные цели: Часто используется в образовательных целях для обучения работе с SQL Server.

Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
🤔 Какие знаешь принципы ООП?

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

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

Это стандартный протокол для веб-серверов, который позволяет запускать внешние программы (скрипты) для генерации веб-страниц динамически. CGI скрипты могут быть написаны на различных языках программирования, таких как Perl, Python, PHP, C и других. Когда веб-сервер получает запрос на страницу, обрабатываемую CGI, он запускает соответствующий скрипт и передает ему данные запроса.

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

1⃣Запрос клиента: Клиент (например, веб-браузер) отправляет HTTP-запрос на веб-сервер.
2⃣Запуск CGI-скрипта: Веб-сервер определяет, что запрос предназначен для CGI-скрипта, и запускает его как отдельный процесс.
3⃣Передача данных: Веб-сервер передает данные запроса (например, параметры формы) в CGI-скрипт через стандартный ввод (stdin) и переменные окружения.
4⃣Выполнение скрипта: CGI-скрипт выполняет необходимые операции (например, доступ к базе данных) и генерирует HTML-страницу.
5⃣Ответ сервера: CGI-скрипт отправляет сгенерированную HTML-страницу обратно на веб-сервер через стандартный вывод (stdout), а сервер передает этот ответ клиенту.

🚩Плюсы

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

🚩Минусы

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

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

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

🚩Современные альтернативы

🟠FastCGI
Улучшенная версия CGI, которая повторно использует процессы для обработки нескольких запросов, что повышает производительность.

🟠Server-side scripting
Языки и фреймворки, такие как PHP, ASP.NET, Node.js, Django, Ruby on Rails, которые интегрируются непосредственно с веб-серверами и обеспечивают высокую производительность.

🟠Web Server Gateway Interface (WSGI)
Стандартный интерфейс для Python-приложений, позволяющий эффективную обработку запросов.

🟠Application Servers
Серверы приложений, такие как Apache Tomcat, JBoss, которые предоставляют контейнеры для выполнения веб-приложений и управления ими.

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

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

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

🟠Использование HTTPS
Передача данных через HTTPS (SSL/TLS) обеспечивает шифрование данных между клиентом и сервером, что предотвращает их перехват и чтение третьими лицами. Настройте ваш веб-сервер для использования HTTPS, получив и установив SSL/TLS сертификат.

🟠Флаг Secure
Куки передаются только по HTTPS-соединениям. Добавьте флаг Secure при установке куки.
Set-Cookie: sessionId=abc123; Secure


🟠Флаг HttpOnly
Куки недоступны через JavaScript, что предотвращает их кражу с помощью XSS (Cross-Site Scripting) атак. Добавьте флаг HttpOnly при установке куки.
Set-Cookie: sessionId=abc123; HttpOnly


🟠Флаг SameSite
Предотвращает отправку куки на другие сайты, что защищает от CSRF (Cross-Site Request Forgery) атак. Добавьте флаг SameSite при установке куки. Варианты включают Strict, Lax, и None.
Set-Cookie: sessionId=abc123; SameSite=Strict


🟠Шифрование содержимого куки
Делает данные бесполезными для злоумышленников, даже если они смогут украсть куки. Используйте серверные библиотеки для шифрования и дешифрования данных в куки перед отправкой и после получения.

🟠Подпись куки
С помощью HMAC (Hash-based Message Authentication Code) позволяет проверить целостность и подлинность данных в куки. Используйте секретный ключ для генерации HMAC подписи и добавьте её к куки.
import hmac
import hashlib

secret_key = b'secret'
cookie_value = b'sessionId=abc123'
signature = hmac.new(secret_key, cookie_value, hashlib.sha256).hexdigest()

cookie = f'{cookie_value.decode()}; Signature={signature}'


🟠Защита от XSS атак
Могут использоваться для кражи куки. Включает в себя валидацию и фильтрацию пользовательских вводов, использование Content Security Policy (CSP) и безопасное кодирование данных. Внедрите валидацию и фильтрацию вводов на стороне сервера, настройте CSP заголовки.
Content-Security-Policy: script-src 'self'


🟠Регулярное обновление и истечение срока действия куки
Значений куки и установка короткого срока действия уменьшает временное окно для атакующих. Устанавливайте короткий срок действия и обновляйте значение куки при каждой сессии.
Set-Cookie: sessionId=abc123; Max-Age=3600  # 1 час


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

MVC (Model-View-Controller) и MVVM (Model-View-ViewModel) — это шаблоны проектирования для разделения данных и логики приложения от пользовательского интерфейса. MVC разделяет приложение на три компонента: модель, представление и контроллер. MVVM заменяет контроллер на ViewModel, который обеспечивает специфическую для представления логику и связывание данных, что упрощает управление пользовательским интерфейсом и разработку.

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

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

🚩Аутентификация (Authentication)

Она подтверждает, что пользователь является тем, за кого он себя выдает.

🟠Цель
Убедиться, что пользователь действительно тот, кем он себя называет.

🟠Методы аутентификации
Пароли: Пользователь вводит пароль, который проверяется на соответствие сохраненному в системе.
Биометрические данные: Отпечатки пальцев, распознавание лица, голосовая идентификация.
Токены: Аппаратные устройства или программные токены, генерирующие одноразовые коды.
Сертификаты: Использование цифровых сертификатов для проверки подлинности.
Многофакторная аутентификация (MFA): Комбинация нескольких методов (например, пароль + одноразовый код).

🟠Пример
Вход в систему с помощью имени пользователя и пароля.

🚩Авторизация (Authorization)

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

🟠Цель
Определить, какие действия пользователю разрешено выполнять и к каким ресурсам он имеет доступ.

🟠Методы авторизации
Ролевое управление доступом (RBAC): Назначение ролей пользователям, каждая из которых имеет определенные права доступа.
Управление доступом на основе атрибутов (ABAC): Использование атрибутов (например, время дня, местоположение) для определения прав доступа.
Списки контроля доступа (ACL): Определение конкретных прав доступа для каждого ресурса и пользователя.

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

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

🟠Цель
Аутентификация: Подтвердить личность пользователя.
Авторизация: Определить, к каким ресурсам и действиям пользователь имеет доступ.

🟠Когда происходит
Аутентификация: Первым шагом перед предоставлением доступа к системе.
Авторизация: После аутентификации, для контроля доступа к ресурсам и действиям.

🟠Основные вопросы
Аутентификация: Кто вы?
Авторизация: Что вам разрешено делать?

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

MVVM (Model-View-ViewModel) — это архитектурный паттерн, который облегчает разделение разработки графического интерфейса от логики бизнес-процессов. ViewModel в MVVM обрабатывает большинство логики представления и обеспечивает двунаправленное связывание между View (интерфейсом пользователя) и Model (данными), что упрощает тестирование и поддержку.

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

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

🚩Типы

🟠Отраженный (Reflected XSS)
Злоумышленник отправляет вредоносный код как часть запроса (например, через URL или форму). Код выполняется, когда жертва открывает специально сформированную ссылку. Если злоумышленник отправит URL https://example.com/search?query=<script>alert('XSS')</script>, то этот скрипт выполнится при загрузке страницы.
<input type="text" name="query" value="<?php echo $_GET['query']; ?>">   


🟠Сохраненный (Stored XSS)
Вредоносный код сохраняется на сервере и отображается для других пользователей. Обычно это происходит в комментариях, сообщениях или профилях пользователей. Пользователь вводит в комментарий <script>alert('XSS')</script>. Когда другой пользователь просматривает страницу с этим комментарием, скрипт выполняется.

🟠DOM
Вредоносный код изменяет DOM-модель страницы на стороне клиента, без взаимодействия с сервером. Обычно это происходит из-за небезопасного манипулирования DOM через JavaScript. Если злоумышленник изменит URL на https://example.com/#<script>alert('XSS')</script>, скрипт выполнится при загрузке страницы.
var query = window.location.hash.substring(1);
document.write(query);


🚩Защита

🟠Экранирование выходных данных
Всегда экранируйте данные перед их выводом в HTML, JavaScript, CSS и атрибуты. Это предотвращает выполнение вредоносного кода.
echo htmlspecialchars($data, ENT_QUOTES, 'UTF-8');   


🟠Валидация и фильтрация входных данных
Проверяйте и фильтруйте все входные данные. Очищайте данные от потенциально опасных символов и конструкций.
function sanitizeInput(input) {
var element = document.createElement('div');
element.innerText = input;
return element.innerHTML;
}


🟠Использование Content Security Policy (CSP)
CSP ограничивает выполнение непроверенного кода и позволяет задавать правила для источников контента. Это помогает предотвратить выполнение вредоносных скриптов.
Content-Security-Policy: default-src 'self'; script-src 'self' 'nonce-random123';   


🟠HttpOnly и Secure флаги для куки
Устанавливайте HttpOnly флаг для куки, чтобы сделать их недоступными через JavaScript, и Secure флаг, чтобы куки передавались только по HTTPS.
setcookie("session", $sessionId, [
'httponly' => true,
'secure' => true,
'samesite' => 'Strict'
]);


🟠Регулярное сканирование уязвимостей
Используйте инструменты и сервисы для регулярного сканирования вашего приложения на наличие уязвимостей, включая XSS.

🟠Избегайте использования `innerHTML` и `document.write`
Эти методы позволяют напрямую вставлять HTML в DOM, что может быть небезопасно. Используйте безопасные альтернативы, такие как textContent или манипуляции с DOM.

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

В объектном проектировании существует множество паттернов, включая:
- Порождающие: Factory, Abstract Factory, Singleton, Builder, Prototype.
- Структурные: Adapter, Bridge, Composite, Decorator, Facade, Flyweight, Proxy.
- Поведенческие: Observer, Strategy, Command, State, Visitor, Mediator, Iterator, Interpreter.

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

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

🚩Характеристики

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

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

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

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

🚩Плюсы

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

🚩Примеры применения

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

🟠Классы и объекты в ООП
В объектно-ориентированном программировании классы и объекты можно рассматривать как модули, инкапсулирующие данные и методы.

🟠Модули и пакеты в языках программирования
Многие языки программирования поддерживают концепцию модулей и пакетов, например, модули в Python, пакеты в Java и модули в ECMAScript (JavaScript).

На Python
# file: math_operations.py
def add(a, b):
return a + b

def subtract(a, b):
return a - b

# file: main.py
import math_operations

x = 10
y = 5

print("Addition:", math_operations.add(x, y))
print("Subtraction:", math_operations.subtract(x, y))


На JavaScript
// file: mathOperations.js
export function add(a, b) {
return a + b;
}

export function subtract(a, b) {
return a - b;
}

// file: main.js
import { add, subtract } from './mathOperations.js';

const x = 10;
const y = 5;

console.log('Addition:', add(x, y));
console.log('Subtraction:', subtract(x, y));


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

SQL (Structured Query Language) — это стандартизированный язык программирования, используемый для управления реляционными базами данных и выполнения различных операций с данными, таких как запросы, обновления, и управление доступом.

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

Она предполагает скрытие внутренней реализации объекта и предоставление доступа к ней только через строго определенные методы.

🚩Принципы

🟠Скрытие данных (Information Hiding)
От внешнего мира, доступ к этим данным осуществляется только через методы (функции), которые предоставляются объектом.

🟠Контроль доступа (Access Control)
Определение уровня доступа к компонентам объекта. Часто используются модификаторы доступа:
Private: Поля и методы доступны только внутри самого класса.
Protected: Поля и методы доступны внутри класса и подклассов.
Public: Поля и методы доступны из любого места программы.

🟠Интерфейсы и абстракции (Interfaces and Abstraction)
Определяют набор методов, которые объект обязан реализовать, скрывая при этом реализацию этих методов.

🟠Непрямой доступ к данным (Indirect Access to Data)
Доступны только через методы доступа (геттеры и сеттеры), которые могут содержать дополнительную логику проверки, валидации или преобразования данных.

🚩Плюсы

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

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

JOIN'ы в SQL — это операции, которые позволяют соединять строки из двух или более таблиц на основе общего столбца. Основные типы JOIN включают INNER JOIN, OUTER JOIN (LEFT, RIGHT, и FULL), CROSS JOIN и SELF JOIN.

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

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

🚩Функции

🟠Определение многоконтейнерного приложения
Docker Compose использует YAML-файл (docker-compose.yml) для описания всех контейнеров (сервисов), которые составляют ваше приложение. В этом файле можно указать образы, настройки сети, монтируемые тома и переменные окружения.

🟠Управление зависимостями
Позволяет указать зависимости между сервисами, что обеспечивает правильный порядок запуска контейнеров.

🟠Запуск и остановка сервисов
С помощью простой команды docker-compose up можно запустить все контейнеры, указанные в docker-compose.yml. Команда docker-compose down останавливает и удаляет все контейнеры, сети и тома, созданные up.

🟠Поддержка масштабирования
Можно легко масштабировать сервисы (запускать несколько экземпляров одного контейнера) с помощью команды docker-compose up --scale.

🚩Пример использования

docker-compose.yml для веб-приложения, состоящего из веб-сервера и базы данных:
version: '3'
services:
web:
image: nginx:latest
ports:
- "80:80"
volumes:
- ./html:/usr/share/nginx/html
depends_on:
- db

db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: example
volumes:
- db_data:/var/lib/mysql

volumes:
db_data:


🚩Команды

🟠docker-compose up
Создает и запускает все контейнеры, указанные в docker-compose.yml.
🟠docker-compose down
Останавливает и удаляет все контейнеры, сети и тома, созданные docker-compose up.
🟠docker-compose ps
Показывает статус запущенных контейнеров.
🟠docker-compose logs
Выводит логи всех контейнеров.
🟠docker-compose exec [service] [command]
Выполняет команду в запущенном контейнере.

🚩Плюсы

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

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

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

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

Это процесс организации данных в реляционной базе данных для минимизации избыточности и предотвращения аномалий при обновлении данных.

🟠1NF (Первая нормальная форма)
Каждое поле содержит только одно значение, и все записи уникальны.
🟠2NF (Вторая нормальная форма)Данные находятся в 1NF, и все неключевые атрибуты полностью зависят от первичного ключа.
🟠3NF (Третья нормальная форма)
Данные находятся в 2NF, и нет транзитивных зависимостей между неключевыми атрибутами.
🟠BCNF (Бойс-Кодд нормальная форма)
Данные находятся в 3NF, и каждый детерминант является суперключом.
🟠4NF (Четвертая нормальная форма)
Данные находятся в BCNF, и нет многозначных зависимостей.
🟠5NF (Пятая нормальная форма)
Данные находятся в 4NF, и каждая зависимость выражается через проекции.

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

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

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