Решали ли вы задачи на leetcode? В комментариях делитесь своими достижениями.
Anonymous Poll
44%
Да
56%
Нет
Как вы смотрите на идею создать аккаунт на leetcode вместе со мной, и вместе выбирать задачи и решать их? Глянем сколько у нас наберётся решённых задач за год.
Anonymous Poll
57%
Отличная идея, присоединяюсь к челенджу
36%
Идея интересная, но решать не буду, только смотреть
7%
Не интересно
Помните конспект книги "Чистый код"?
Добавил 5-ю и 6-ю главы. (Форматирование и Объекты и структуры данных)
https://github.com/WebWoodProg/literature-analysis/blob/main/%D0%A7%D0%B8%D1%81%D1%82%D1%8B%D0%B9%20%D0%BA%D0%BE%D0%B4%20-%20%D0%A0%D0%BE%D0%B1%D0%B5%D1%80%D1%82%20%D0%9C%D0%B0%D1%80%D1%82%D0%B8%D0%BD.md
Добавил 5-ю и 6-ю главы. (Форматирование и Объекты и структуры данных)
https://github.com/WebWoodProg/literature-analysis/blob/main/%D0%A7%D0%B8%D1%81%D1%82%D1%8B%D0%B9%20%D0%BA%D0%BE%D0%B4%20-%20%D0%A0%D0%BE%D0%B1%D0%B5%D1%80%D1%82%20%D0%9C%D0%B0%D1%80%D1%82%D0%B8%D0%BD.md
GitHub
literature-analysis/Чистый код - Роберт Мартин.md at main · WebWoodProg/literature-analysis
Contribute to WebWoodProg/literature-analysis development by creating an account on GitHub.
👍6❤1
Всем привет.✋
Немного полезной информации для вас.
Хочу рассказать про колоночные базы данных.
(Columnar database)
Суть их в том, что данные группируются не по строкам, а по столбцам.
Если нам нужно в классической реляционной бд найти и считать какие либо значения, то у нас сканируется вся таблица по строкам и столбцам, а затем извлекаются строки целиком, даже если нужно только одно значение каждой из них. В случае колоночной бд, мы можем искать значения по отдельным столбцам и извлекать только те значения, которые необходимы.
Данное свойство делает их использование перспективным при работе с большими данными. Извлечение данных из таблицы в таких случаях может быть в десятки, а то и в сотни раз быстрее.
Помимо этого, колоночные бд более эффективно используют дисковое пространство, за счёт того, что данные в них могут быть сжаты сильнее чем в строчных.
На данный момент существует множество колоночные СУБД.
Примеры:
- ClickHouse
- Greenplum
- HANA
- Vertica
- Cassandra
- SAP IQ и т.д.
Немного полезной информации для вас.
Хочу рассказать про колоночные базы данных.
(Columnar database)
Суть их в том, что данные группируются не по строкам, а по столбцам.
Если нам нужно в классической реляционной бд найти и считать какие либо значения, то у нас сканируется вся таблица по строкам и столбцам, а затем извлекаются строки целиком, даже если нужно только одно значение каждой из них. В случае колоночной бд, мы можем искать значения по отдельным столбцам и извлекать только те значения, которые необходимы.
Данное свойство делает их использование перспективным при работе с большими данными. Извлечение данных из таблицы в таких случаях может быть в десятки, а то и в сотни раз быстрее.
Помимо этого, колоночные бд более эффективно используют дисковое пространство, за счёт того, что данные в них могут быть сжаты сильнее чем в строчных.
На данный момент существует множество колоночные СУБД.
Примеры:
- ClickHouse
- Greenplum
- HANA
- Vertica
- Cassandra
- SAP IQ и т.д.
🔥5
This media is not supported in your browser
VIEW IN TELEGRAM
К слову, почему за последнюю неделю делаю мало постов)) Но сегодня ждите интересную тему)
😁3🐳1
ЗАДАЧА:
На вход подается число в диапазоне [-2³¹;2³¹-1]. Нужно вернуть целое число, перевернув цифры в обратном порядке с сохранением знака(+/-). Если результат выходит за указанный диапазон, вернуть 0. (решение оставляем в комментарии)
Пример 1:
INPUT: x = 123456
OUTPUT: 654321
Пример 2:
INPUT: -5670
OUTPUT: -765
Пример 3:
INPUT: -2 147 483 648
OUTPUT: 0
На вход подается число в диапазоне [-2³¹;2³¹-1]. Нужно вернуть целое число, перевернув цифры в обратном порядке с сохранением знака(+/-). Если результат выходит за указанный диапазон, вернуть 0. (решение оставляем в комментарии)
Пример 1:
INPUT: x = 123456
OUTPUT: 654321
Пример 2:
INPUT: -5670
OUTPUT: -765
Пример 3:
INPUT: -2 147 483 648
OUTPUT: 0
Всем привет.
Давайте, для начала, разберемся в понятиях аутентификации, авторизации и идентификации.
1. Идентификация: Этот процесс определяет, кем пользователь является. Например, когда вы вводите свое имя пользователя на сайте.
2. Аутентификация: Этот процесс проверяет подлинность пользователя. Например, после того как вы ввели свое имя пользователя на сайте, вам может потребоваться ввести пароль для подтверждения вашей личности.
3. Авторизация: Этот процесс определяет, к каким ресурсам или функциям приложения пользователь имеет доступ. Например, после успешной аутентификации вы можете получить доступ к своему личному кабинету на сайте, но не иметь доступа к административным функциям.
Итак, чтобы сделать пример более ясным, предположим, что вы заходите на сайт (идентификация), вводите свой логин и пароль (аутентификация), и после этого получаете доступ к своему аккаунту с возможностью просмотра информации о заказах, но не имеете права редактировать их (авторизация).
Давайте, для начала, разберемся в понятиях аутентификации, авторизации и идентификации.
1. Идентификация: Этот процесс определяет, кем пользователь является. Например, когда вы вводите свое имя пользователя на сайте.
2. Аутентификация: Этот процесс проверяет подлинность пользователя. Например, после того как вы ввели свое имя пользователя на сайте, вам может потребоваться ввести пароль для подтверждения вашей личности.
3. Авторизация: Этот процесс определяет, к каким ресурсам или функциям приложения пользователь имеет доступ. Например, после успешной аутентификации вы можете получить доступ к своему личному кабинету на сайте, но не иметь доступа к административным функциям.
Итак, чтобы сделать пример более ясным, предположим, что вы заходите на сайт (идентификация), вводите свой логин и пароль (аутентификация), и после этого получаете доступ к своему аккаунту с возможностью просмотра информации о заказах, но не имеете права редактировать их (авторизация).
👍5🔥1
Аутентификация по паролю - пользователь предоставляет username и password.
Существует несколько стандартных схем данного типа аутентификации:
1) Basic - username и password передаются в заголовке Authorization в виде base64-encoded (является сравнительно безопасным способом
только при использовании HTTPS)
2) Digest - сервер передает уникальное значение nonce,
а браузер передает MD5 хэш пароля пользователя, вычесленный с использованиемданного nonce (более защищена при использовании http,
но уязвима перед атакой с заменой схемы на basic и неподдерживает использование современных хэш-функций
для хранения пароля пользователя на сервере).
3) NTLM - пароль не передается в чистом виде. В основном используется
в Active Directory.
4) Negotive - позволяет клиенту выбрать между NTLM и Kerberos аутентификацией.
Может функционировать, только если и клиент, и сервер находятся в зоне intranet и являются частью домена Windows.
Существует несколько стандартных схем данного типа аутентификации:
1) Basic - username и password передаются в заголовке Authorization в виде base64-encoded (является сравнительно безопасным способом
только при использовании HTTPS)
2) Digest - сервер передает уникальное значение nonce,
а браузер передает MD5 хэш пароля пользователя, вычесленный с использованиемданного nonce (более защищена при использовании http,
но уязвима перед атакой с заменой схемы на basic и неподдерживает использование современных хэш-функций
для хранения пароля пользователя на сервере).
3) NTLM - пароль не передается в чистом виде. В основном используется
в Active Directory.
4) Negotive - позволяет клиенту выбрать между NTLM и Kerberos аутентификацией.
Может функционировать, только если и клиент, и сервер находятся в зоне intranet и являются частью домена Windows.
👍7
Аутентификация по одноразовым паролям - обычно используется в дополнении к аутентификации по паролю при реализации двух факторной аутентификации (2FA).
При данном способе пользователь предоставляет данные двух типов: то, что он знает(пароль) и чем он владеет( телефон, электронный ключ и т.д.).
Также данный тип аутентификации используется при переводе денег или изменении настроек.
Разберём какие есть источники для создания одноразового пароля:
- использование токенов, генерирующих пароль по секретному ключу, хранящемуся на сервере и текущему времени.
Например RSA SecurID, Google authenticator.
- случайно генерируемые коды, передаваемые по sms.
- распечатка со списком заранее сформированных паролей. При каждом новом входе необходимо вводить новый пароль.
Обычно данный тип аутентификации расширяет Forms auth. После Ворда пароля создаётся сессия, но в рамках данной сессии пользователь не будет иметь доступ к приложению пока не произведет доп. аутентификацию по одноразовом у паролю.
При данном способе пользователь предоставляет данные двух типов: то, что он знает(пароль) и чем он владеет( телефон, электронный ключ и т.д.).
Также данный тип аутентификации используется при переводе денег или изменении настроек.
Разберём какие есть источники для создания одноразового пароля:
- использование токенов, генерирующих пароль по секретному ключу, хранящемуся на сервере и текущему времени.
Например RSA SecurID, Google authenticator.
- случайно генерируемые коды, передаваемые по sms.
- распечатка со списком заранее сформированных паролей. При каждом новом входе необходимо вводить новый пароль.
Обычно данный тип аутентификации расширяет Forms auth. После Ворда пароля создаётся сессия, но в рамках данной сессии пользователь не будет иметь доступ к приложению пока не произведет доп. аутентификацию по одноразовом у паролю.
🔥4💊1
Продолжим говорить про аутентификацию. На очереди JWT.
JWT (JSON Web Token) - это стандарт для передачи информации между двумя сторонами в виде JSON объекта. JWT токены состоят из трех частей: заголовка (header), полезной нагрузки (payload) и подписи (signature).
1. Заголовок (header) содержит информацию о типе токена и используемом алгоритме шифрования.
2. Полезная нагрузка (payload) содержит данные, которые нужно передать между сторонами, например, идентификатор пользователя или другую информацию.
3. Подпись (signature) создается с использованием секретного ключа и позволяет проверить целостность токена.
JWT токены часто используются для аутентификации и авторизации пользователей в веб-приложениях. После успешной аутентификации пользователю выдается 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. Веб-браузер отправляет запрос веб-приложению с логином и паролем.
1. Веб-приложение проверяет JWT-токен и если он верный, то выполняет действие от имени авторизованного пользователя.
2. Веб-приложение проверяет логин и пароль, и если они верны, то генерирует JWT-токен и отправляет его веб-браузеру.
3. Веб-браузер сохраняет JWT-токен и отправляет его вместе с каждым запросом в веб-приложение.
4. При генерации JWT-токена веб-приложение ставит подпись секретным ключом, который хранится только в веб-приложении.
5. Веб-браузер отправляет запрос веб-приложению с логином и паролем.
❤4
Правильный ответ:
5 (2 4) 3 1.
2 и 4 происходят за один процесс.
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, клиент должен повторно авторизоваться для получения нового токена.
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 или ВК.
Процесс работы OAuth 2.0 выглядит примерно так: пользователь переходит на сторонний сайт, где требуется авторизация через OAuth 2.0. Пользователь вводит свои учетные данные на сайте, а затем сайт предоставляет ему токен доступа. Этот токен передается приложению, которое хочет получить доступ к данным пользователя. Приложение использует токен для запроса доступа к данным пользователя на стороннем сайте.
Примером такой авторизации может служить авторизация через Google или ВК.
🔥5👍2