Чем отличаются staging, dev и production окружения?
Пробуем новую рубрику #вопросответ. Здесь мы будем задавать вам вопросы, а вы должны ответить на них в комментариях или просто самим себе.
Так вы проверите свои знания. А правильный ответ для контроля ждет вас под спойлером. Только чур сначала попробовать самим.
Разработка обычно ведётся в нескольких окружениях, каждое из которых служит своей цели:
0️⃣ dev — это черновик. Здесь вы разрабатываете и тестируете новую функциональность. Ошибки и нестабильность — норма.
1️⃣ staging (или pre-prod) — это копия продакшена. Тут проходят финальные проверки: тесты, ревью, интеграции. Всё должно работать, как на бою.
3️⃣ production — живая версия, которую используют реальные пользователи. Любая ошибка здесь — потенциальные убытки или скандал.
Разрабатывать прямо на проде — значит рисковать: вы можете случайно удалить данные, нарушить работу пользователей или открыть уязвимость. Прод должен быть стабильным и предсказуемым.
Пробуем новую рубрику #вопросответ. Здесь мы будем задавать вам вопросы, а вы должны ответить на них в комментариях или просто самим себе.
Так вы проверите свои знания. А правильный ответ для контроля ждет вас под спойлером. Только чур сначала попробовать самим.
Разрабатывать прямо на проде — значит рисковать: вы можете случайно удалить данные, нарушить работу пользователей или открыть уязвимость. Прод должен быть стабильным и предсказуемым.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4🤓1
Что такое TCP/IP?
Пройдёмся по классике. Уверены, что правильно помните? Пишите свои варианты в комментах, а потом проверяйте правильный ответ.
TCP/IP — это набор сетевых протоколов, на которых работает интернет и локальные сети. Он определяет, как устройства обмениваются данными.
➡️ IP (Internet Protocol) отвечает за адресацию и доставку пакетов. Каждый компьютер получает IP-адрес, и по нему система понимает, куда отправлять данные. Но IP не гарантирует, что пакет дойдёт или что они придут в правильном порядке.
➡️ TCP (Transmission Control Protocol) решает эти проблемы: устанавливает соединение между устройствами, разбивает данные на пакеты, гарантирует их доставку и собирает обратно в правильной последовательности.
Вместе TCP/IP позволяют, например, открыть сайт: IP находит нужный сервер, TCP устанавливает соединение и передаёт страницу целиком и без ошибок.
Просто: IP — это как адрес на конверте, TCP — как гарантированная доставка и проверка содержимого.
#вопросответ
Пройдёмся по классике. Уверены, что правильно помните? Пишите свои варианты в комментах, а потом проверяйте правильный ответ.
Вместе TCP/IP позволяют, например, открыть сайт: IP находит нужный сервер, TCP устанавливает соединение и передаёт страницу целиком и без ошибок.
Просто: IP — это как адрес на конверте, TCP — как гарантированная доставка и проверка содержимого.
#вопросответ
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2😱2🤓1
Что такое DRY и в чём его суть?
DRY (Don’t Repeat Yourself) — это принцип разработки, который означает: не дублируйте один и тот же код или знания в разных местах.
Суть в том, чтобы каждая часть логики системы существовала в единственном экземпляре. Если нужно изменить поведение — вы меняете его в одном месте, а не ищете и правите дубли по всему проекту.
Это повышает читаемость, упрощает сопровождение и снижает вероятность ошибок. DRY — не про «меньше строк», а про избежание повторяющейся логики, особенно той, что может рассинхронизироваться.
Пример: если одна и та же проверка данных используется в трёх местах — лучше вынести её в отдельную функцию.
#вопросответ
Суть в том, чтобы каждая часть логики системы существовала в единственном экземпляре. Если нужно изменить поведение — вы меняете его в одном месте, а не ищете и правите дубли по всему проекту.
Это повышает читаемость, упрощает сопровождение и снижает вероятность ошибок. DRY — не про «меньше строк», а про избежание повторяющейся логики, особенно той, что может рассинхронизироваться.
Пример: если одна и та же проверка данных используется в трёх местах — лучше вынести её в отдельную функцию.
#вопросответ
👍5🤓1
Чем промис отличается от колбэка? А async/await от промиса?
Колбэк — функция, переданная в другую для вызова позже (может привести к «callback hell»).
Промис — объект, описывающий результат асинхронной операции (управляемое состояние).
async/await — синтаксический сахар над промисами, делает код линейным и читаемым.
#вопросответ
Промис — объект, описывающий результат асинхронной операции (управляемое состояние).
async/await — синтаксический сахар над промисами, делает код линейным и читаемым.
#вопросответ
Что такое полиморфизм в ООП?
Полиморфизм в ООП — это способность объектов с разной реализацией реагировать одинаково на один и тот же вызов.
Проще говоря, это когда вы вызываете один и тот же метод (например, draw()), но в зависимости от объекта, на котором он вызывается (круг, прямоугольник, треугольник), результат будет разный.
Полиморфизм позволяет писать универсальный код, не завязанный на конкретные типы. Это удобно, потому что можно, например, передать в функцию список объектов с общим интерфейсом, и она будет с ними работать, не зная точной реализации.
Есть два типа:
— Параметрический (перегрузка) — один метод с разными параметрами.
— Подтиповой (через наследование) — когда подклассы переопределяют методы базового класса.
Полиморфизм делает код гибким, расширяемым и читаемым. Его часто используют вместе с интерфейсами или абстрактными классами.
#вопросответ #ооп
Проще говоря, это когда вы вызываете один и тот же метод (например, draw()), но в зависимости от объекта, на котором он вызывается (круг, прямоугольник, треугольник), результат будет разный.
Полиморфизм позволяет писать универсальный код, не завязанный на конкретные типы. Это удобно, потому что можно, например, передать в функцию список объектов с общим интерфейсом, и она будет с ними работать, не зная точной реализации.
Есть два типа:
— Параметрический (перегрузка) — один метод с разными параметрами.
— Подтиповой (через наследование) — когда подклассы переопределяют методы базового класса.
Полиморфизм делает код гибким, расширяемым и читаемым. Его часто используют вместе с интерфейсами или абстрактными классами.
#вопросответ #ооп
❤6
В чём суть наследования в ООП?
Свои варианты кидайте в комменты.
Наследование в ООП — это механизм, который позволяет одному классу (дочернему) получить свойства и поведение другого класса (родительского).
Проще говоря, если у вас есть базовый класс Животное, вы можете создать классы Кот, Собака, Лошадь, которые будут наследовать всё общее — например, метод дышать() — и добавлять или переопределять своё — например, мяукать(), лаять().
Это удобно, когда у нескольких сущностей есть схожие характеристики или поведение. Наследование помогает избежать дублирования кода: вы описываете общую логику один раз в базовом классе, а дочерние расширяют или уточняют её.
Важно:
0️⃣ Наследование создаёт иерархию.
1️⃣ Но злоупотреблять им не стоит — при слишком глубокой иерархии код становится сложным в поддержке.
Наследование часто сочетается с полиморфизмом — через базовый тип можно работать с разными подклассами.
#вопросответ #ооп
Свои варианты кидайте в комменты.
Проще говоря, если у вас есть базовый класс Животное, вы можете создать классы Кот, Собака, Лошадь, которые будут наследовать всё общее — например, метод дышать() — и добавлять или переопределять своё — например, мяукать(), лаять().
Это удобно, когда у нескольких сущностей есть схожие характеристики или поведение. Наследование помогает избежать дублирования кода: вы описываете общую логику один раз в базовом классе, а дочерние расширяют или уточняют её.
Важно:
Наследование часто сочетается с полиморфизмом — через базовый тип можно работать с разными подклассами.
#вопросответ #ооп
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4🤣1
Чем кодирование отличается от шифрования?
Кодирование (encoding) и шифрование (encryption) — оба процесса преобразования данных, но с разной целью и уровнем защиты.
Кодирование:
0️⃣ Это преобразование данных из одного формата в другой с целью поддержать совместимость, передачу или хранение.
1️⃣ При кодировании алгоритм известен публично и не требует секретного ключа. Если знаешь схему (например, Base64, URL-encode, UTF-8 и т.д.), можно легко вернуть исходные данные.
3️⃣ Кодирование не предназначено для защиты конфиденциальности — оно не скрывает смысл, только формат, представление.
Пример: когда мы кодируем картинку в Base64, чтобы вставить её в JSON или HTML, — любой, кто увидит эту строку, может её декодировать.
Шифрование:
0️⃣ Это преобразование данных в форму, недоступную для понимания тем, у кого нет нужного ключа.
1️⃣ Шифрование использует криптографический алгоритм и **секретный ключ** (или пару ключей), без которых восстановить исходные данные крайне сложно или практически невозможно (для надёжного алгоритма).
3️⃣ Цель — защита конфиденциальности и предотвращение несанкционированного доступа.
Пример: когда передаются пароли, сообщения или финансовые данные по сети — они шифруются (например, с помощью AES, RSA) так, что сторонний наблюдатель видит только «бессмысленный набор символов».
#вопросответ
Кодирование:
Пример: когда мы кодируем картинку в Base64, чтобы вставить её в JSON или HTML, — любой, кто увидит эту строку, может её декодировать.
Шифрование:
Пример: когда передаются пароли, сообщения или финансовые данные по сети — они шифруются (например, с помощью AES, RSA) так, что сторонний наблюдатель видит только «бессмысленный набор символов».
#вопросответ
Please open Telegram to view this post
VIEW IN TELEGRAM
✍1
Что такое всплытие в JS?
Всплытие (hoisting) — это механизм JavaScript, при котором объявления переменных и функций как бы «поднимаются» в начало своей области видимости — до фактического выполнения кода.
То есть интерпретатор сначала проходит весь код, находит объявления, «регистрирует» их, а потом уже выполняет строчки по порядку.
Как это работает:
0️⃣ Для функций, объявленных через function declaration, поднимается вся функция целиком — её можно вызывать даже до строки, где она определена.
1️⃣ Для переменных (var, let, const) поднимается только объявление, но не значение. У var при этом значение по умолчанию — undefined. А вот let и const поднимаются в «мертвую зону» (temporal dead zone): они известны движку, но использовать их до строки объявления нельзя — будет ошибка.
Когда JS интерпретирует код, он делает это в два этапа:
1️⃣ Создание (creation phase) — формируется область видимости, «поднимаются» все объявления.
3️⃣ Выполнение (execution phase) — код исполняется построчно с уже готовыми ссылками на переменные и функции.
#вопросответ
То есть интерпретатор сначала проходит весь код, находит объявления, «регистрирует» их, а потом уже выполняет строчки по порядку.
Как это работает:
Когда JS интерпретирует код, он делает это в два этапа:
#вопросответ
Please open Telegram to view this post
VIEW IN TELEGRAM
✍2👍2