Программист практик | уроки программирования | подготовка к собеседованию
133 subscribers
126 photos
3 videos
1 file
21 links
разбор собесов, ответы на вопросы, решение задач

Для связи со мной:
@IvanReshet
Download Telegram
Продолжим говорить про аутентификацию. На очереди JWT.

JWT (JSON Web Token) - это стандарт для передачи информации между двумя сторонами в виде JSON объекта. JWT токены состоят из трех частей: заголовка (header), полезной нагрузки (payload) и подписи (signature).

1. Заголовок (header) содержит информацию о типе токена и используемом алгоритме шифрования.
2. Полезная нагрузка (payload) содержит данные, которые нужно передать между сторонами, например, идентификатор пользователя или другую информацию.
3. Подпись (signature) создается с использованием секретного ключа и позволяет проверить целостность токена.

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

1. Веб-приложение проверяет JWT-токен и если он верный, то выполняет действие от имени авторизованного пользователя.

2. Веб-приложение проверяет логин и пароль, и если они верны, то генерирует JWT-токен и отправляет его веб-браузеру.

3. Веб-браузер сохраняет JWT-токен и отправляет его вместе с каждым запросом в веб-приложение.

4. При генерации JWT-токена веб-приложение ставит подпись секретным ключом, который хранится только в веб-приложении.

5. Веб-браузер отправляет запрос веб-приложению с логином и паролем.
4
Правильный ответ:
5 (2 4) 3 1.
2 и 4 происходят за один процесс.
👌3💩1🤡1
Структура авторизации JWT:

1. Пользователь вводит свои учетные данные (например, логин и пароль) на клиентской стороне.

2. Клиент отправляет запрос на сервер с учетными данными для аутентификации.

3. Сервер проверяет учетные данные и, если они верные, создает JWT (JSON Web Token) с уникальным идентификатором пользователя и другой информацией.

4. Сервер отправляет JWT обратно клиенту.

5. Клиент сохраняет JWT (обычно в localStorage или в памяти) для последующих запросов.

6. При каждом запросе к защищенным ресурсам, клиент отправляет JWT в заголовке Authorization.

7. Сервер проверяет подлинность JWT и, если токен действителен, разрешает доступ к защищенным ресурсам.

8. При истечении срока действия JWT, клиент должен повторно авторизоваться для получения нового токена.
❤‍🔥3
OAuth 2.0 - это протокол авторизации, который позволяет пользователям предоставлять доступ к своим данным на сторонних сайтах без необходимости передачи своих учетных данных (логин и пароль). Вместо этого, пользователь авторизует приложение на стороннем сайте через OAuth 2.0, чтобы приложение могло получить доступ к данным пользователя.

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

Примером такой авторизации может служить авторизация через Google или ВК.
🔥5👍2
This media is not supported in your browser
VIEW IN TELEGRAM
Когда не совсем понял что такое наследование☝️

Всем привет.
На этой и следующей неделе тренируем SQL.
🤣4🔥2
Всем привет.
Повторяем теорию по SQL или сразу задачки?)
Anonymous Poll
80%
Сначала теория
20%
Сразу задачи
🔥5
Для начала давайте вспомним основные команды SQL для работы с данными.

1. SELECT - используется для выбора данных из базы данных.
Например:
SELECT * FROM table_name;
- выберет все данные из таблицы.

2. INSERT INTO - используется для добавления новых строк в таблицу.
Например:
INSERT INTO table_name (column1, column2) VALUES (value1, value2);
- добавит новую строку в таблицу с указанными значениями.

3. UPDATE - используется для обновления существующих записей в таблице.
Например:
UPDATE table_name SET column1 = value1 WHERE condition;
- обновит значение column1 в таблице, удовлетворяющем условию.

4. DELETE - используется для удаления записей из таблицы. Например:
DELETE FROM table_name WHERE condition;
- удалит записи из таблицы, удовлетворяющие условию.

5. WHERE - используется для фильтрации результатов по заданному условию.
Например:
SELECT * FROM table_name WHERE column1 = value;
- выберет только те строки, где column1 равен заданному значению.

6. JOIN - используется для объединения данных из двух и более таблиц на основе связанных столбцов.
Например:
SELECT * FROM table1 JOIN table2 ON table1.column = table2.column;
- объединит данные из двух таблиц на основе совпадения значений в столбцах.

7. GROUP BY - используется для группировки результатов по определенному столбцу.
Например:
SELECT column1, COUNT(*) FROM table_name GROUP BY column1;
- сгруппирует данные по значениям в столбце column1 и посчитает количество строк в каждой группе.

8. ORDER BY - используется для сортировки результатов по заданному столбцу.
Например:
SELECT * FROM table_name ORDER BY column1 DESC;
- отсортирует данные по столбцу column1 в порядке убывания.
🔥31👍1
Всем привет!
Вспоминаем работу с JOIN.
Сегодня начинаем практиковаться. Ждём задачки по SQL
👍6
Всем привет. Возвращаюсь после мини отпуска))
👍5🤣2
Начнем с простых задачек по SQL:
У вас есть таблица "Продукты" с полями "Название", "Цена" и "Количество".
Необходимо написать SQL запрос, который выведет названия продуктов, у которых цена выше средней цены по всем продуктам в таблице.
Свой вариант пишите в комментариях.
Напишите запрос, который удалит из бд всех авторов у которых нет ни одной книги.
Свой вариант пишите в комментариях.
Вечером разберём правильные ответы на эти задачи)
🔥4
Отлично. Решение задачек уже есть. Завтра накидаю новые)))
👍2
Напишите запрос, который выведет наименование всех книг, в написании которых принимали участие несколько авторов.
👍4
А вы используете тип UUID?

UUID (Universally Unique Identifier) - это тип данных, который используется для хранения уникальных идентификаторов в базах данных. UUID представляет собой 128-битное значение, которое гарантированно уникально в пределах всей системы.

UUID может быть применен в различных случаях:

1. Уникальные идентификаторы: UUID часто используется для создания уникальных идентификаторов для строк в таблицах баз данных. Это особенно полезно, когда необходимо генерировать уникальные идентификаторы без необходимости обращения к централизованному источнику уникальности.

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

3. Анонимность: UUID может быть использован для создания уникальных идентификаторов, не раскрывающих никакой конфиденциальной информации о пользователе или объекте.

4. Связывание данных: В некоторых случаях UUID может быть использован для связывания данных между различными таблицами или системами без необходимости использования первичных ключей.

В целом, UUID является удобным способом создания уникальных идентификаторов без необходимости централизованной координации. Однако, следует учитывать, что использование UUID может замедлить процессы индексации и поиска данных в базе данных из-за их уникальности и размера.
❤‍🔥4👍3
Всем привет!) Сегодня и завтра порешаем тесты по C++
👍83🤣2
Коллеги, привет!
Давненько не виделись) У меня ключевые изменения в жизни, поэтому нужно было адаптироваться)) Сейчас появилось время и силы, поэтому я решил возвращаться к каналу. Начнем потихоньку увеличивать активность.
👍18🔥63
Всем, привет!
Сегодня мы погрузимся в тему указателей и ссылок в C++. Разберём теорию, порешаем тесты.
🔥11
Указатель:
1. Указатель - это переменная, которая содержит адрес другой переменной.
2. Он может быть изменен для указания на другую переменную.
3. Указатели могут быть нулевыми или неопределенными (указывать в никуда).
4. Для доступа к значению, на которое указывает указатель, необходимо использовать оператор разыменования (*).

Ссылка:
1. Ссылка - это псевдоним для переменной, то есть другое имя для существующей переменной.
2. Она не может быть переинициализирована для ссылки на другую переменную.
3. Ссылка всегда указывает на существующую переменную и не может быть нулевой.
4. Для объявления ссылки используется оператор &.

#include <iostream>
using namespace std;

int main() {
    int variable = 5; // создание переменной
    int &ref = variable; // создание ссылки на переменную
    int *ptr = &variable; // создание указателя на переменную

    cout << "Адрес переменной: " << &variable << endl;
    cout << "Адрес ссылки: " << &ref << endl;
    cout << "Значение указателя: " << ptr << endl;

    cout << "Исходное значение переменной: " << variable << endl;

    ref = 8; // изменение значения переменной через ссылку
    cout << "Значение переменной после изменения через ссылку: " << variable << endl;

    *ptr = 10; // изменение значения переменной через указатель
    cout << "Значение переменной после изменения через указатель: " << variable << endl;

    return 0;
}
👍9🔥1