Точка входа в программирование
19.7K subscribers
1.38K photos
253 videos
2 files
2.89K links
Фундаментальные знания по основам программирования

Разместить рекламу: @tproger_sales_bot

Правила общения: https://tprg.ru/rules

Другие каналы: @tproger_channels

Сайт: https://tprg.ru/site

Регистрация в перечне РКН: https://tprg.ru/zrgj
Download Telegram
Чем отличаются 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 — как гарантированная доставка и проверка содержимого.


#вопросответ
Please open Telegram to view this post
VIEW IN TELEGRAM
2😱2🤓1
Что такое DRY и в чём его суть?

DRY (Don’t Repeat Yourself) — это принцип разработки, который означает: не дублируйте один и тот же код или знания в разных местах.

Суть в том, чтобы каждая часть логики системы существовала в единственном экземпляре. Если нужно изменить поведение — вы меняете его в одном месте, а не ищете и правите дубли по всему проекту.

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

Пример: если одна и та же проверка данных используется в трёх местах — лучше вынести её в отдельную функцию.


#вопросответ
👍5🤓1
Чем промис отличается от колбэка? А async/await от промиса?

Колбэк — функция, переданная в другую для вызова позже (может привести к «callback hell»).

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

async/await — синтаксический сахар над промисами, делает код линейным и читаемым.


#вопросответ
Что такое полиморфизм в ООП?

Полиморфизм в ООП — это способность объектов с разной реализацией реагировать одинаково на один и тот же вызов.

Проще говоря, это когда вы вызываете один и тот же метод (например, 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) так, что сторонний наблюдатель видит только «бессмысленный набор символов».


#вопросответ
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) — код исполняется построчно с уже готовыми ссылками на переменные и функции.

#вопросответ
Please open Telegram to view this post
VIEW IN TELEGRAM
2👍2