Программирование {BookFlow}
15.8K subscribers
1.62K photos
490 videos
145 files
2.16K links
Мы публикуем лекции и книги по программированию, видеоуроки, доклады с IT конференций, новости технологий.

Группа в https://vk.com/bookflow.

По всем вопросам @evgenycarter

РКН https://clck.ru/3KoAbH
Download Telegram
🔐 Путеводитель по аутентификации: от Cookies до OAuth 2.0

Разбираться в способах входа пользователя в систему можно бесконечно, но эта шпаргалка отлично раскладывает всё по полочкам. Давайте разберем эволюцию методов «узнавания» пользователя.


1. WWW-Authenticate (Basic Auth)
Самый древний способ. Браузер запрашивает логин/пароль и отправляет их в каждом заголовке.

Минус: Невозможно нормально управлять жизненным циклом сессии (сложно разлогиниться).


2. Session-cookie
Классика веба. После входа сервер создает сессию в базе, а браузеру отдает Session ID в куках.

Проблема: Плохо масштабируется и «не дружит» с мобильными приложениями, которые не всегда умеют работать с куками так же, как браузеры.


3. Token & JWT
Чтобы не дергать базу данных каждый раз, придумали токены.

Token: Обычная строка, которую проверяет отдельный сервис валидации.

JWT (JSON Web Token): «Умный» токен. Он содержит внутри хедер, полезную нагрузку (данные пользователя) и подпись. Серверу не нужно лезть в базу, чтобы проверить его валидность - достаточно проверить подпись.


4. SSO (Single Sign-On)
Когда у вас много сайтов (a.com, b.com), а логин один. Центральный сервис аутентификации (CAS) берет на себя проверку личности и перенаправляет пользователя между ресурсами без повторного ввода пароля.


5. OAuth 2.0
Стандарт для предоставления доступа сторонним приложениям (например, «Войти через Google»). Основные сценарии:

Authorization Code: Самый безопасный (через браузер и сервер).

Client Credentials: Для общения между двумя серверами.

Implicit Grant: Упрощенный путь для мобильных и JS-приложений (сейчас считается менее безопасным).

Password Grant: Прямая передача логина/пароля (используется только в доверенных приложениях).

#backend #security #jwt #oauth #webdev

♻️ Сделай репост, чтобы помочь другим.

📲 Мы в MAX

👉 @Bookflow
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥2
Media is too big
VIEW IN TELEGRAM
🔥 СВЕЖИЙ АД, ПРЯМО В ТВОЙ МОНИТОР! 💀

Они думали, что ад остался на Марсе…
Они ошибались.
DOOM возвращается — теперь в виде лёгкого, как бензопила в руках Мародёра, и безжалостного, как ракета в лицо кибердемону, порта на Go.
Никаких платформенных цепей. Никакого CGo. Только чистая ярость и кросс-компиляция, рвущая реальность на куски.

🔸 Запускается везде, где бьётся сердце Go
🔸 Минимум балласта — только стандартная библиотека Go
🔸 Полная линейка ада: DOOM, DOOM II, Ultimate DOOM, Final DOOM
🔸 WAD — твой пропуск в бездну: приноси своих демонов
🔸 Память в бронежилете: защита от переполнений буфера (но не от зубов какодемона)
🔸 Оружие массового поражения — кросс-компиляция под любую цель

Подготовься.
Натяни броню.
И перезаряди BFG…

https://github.com/AndreRenaud/gore

♻️ Сделай репост, чтобы помочь другим.

📲 Мы в MAX

👉 @Bookflow
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3🖕2💩1🤡1
Пишем игру для NES на C

Всем привет. Я Даг. Добро пожаловать в мой учебник - Как запрограммировать игру NES на C. Вы можете сделать оригинальную игру Nintendo, которая будет играть на настоящей консоли NES (или эмуляторе).

Давайте поговорим о NES.
Выпущена в Японии (Famicom) в 1983 году, в США — в 1985 году.

Процессор — Ricoh 2A03, 1.79 МГц, клон 6502 (без десятичного режима) со звуковой схемой. Чип 6502 был очень популярен в то время и использовался, например, в Apple II и Atari 2600.

https://nesdoug.com/

♻️ Сделай репост, чтобы помочь другим.

📲 Мы в MAX

👉 @Bookflow
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🔥2🤷‍♂1💩1
В 2002 году мир математики стал свидетелем исторического момента, когда российский математик Григорий Перельман представил первую из трех новаторских работ, представивших доказательство неуловимой гипотезы Пуанкаре. Эта гипотеза ставила в тупик математиков более столетия, что сделало ее одной из самых сложных нерешенных проблем в этой области.

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

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

Но отказ Перельмана принять признание на этом не ограничился. Математический институт Клея также пообещал существенное финансовое вознаграждение в один миллион долларов за доказательство гипотезы Пуанкаре. Поступок, который еще больше сбил с толку многих, Перельман отказался и от этой значительной суммы. Его цитировали: «Меня не интересуют деньги или слава; я не хочу, чтобы меня выставляли напоказ, как животное в зоопарке».

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

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

♻️ Сделай репост, чтобы помочь другим.

📲 Мы в MAX

👉 @Bookflow
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7🫡31🎉1🙏1🏆1🍾1
This media is not supported in your browser
VIEW IN TELEGRAM
"WhatsApp* умер, Telegram умрёт в ближайшие дни, MAX растёт, поэтому всё хорошо", — заявил глава «Ростелекома» Михаил Осеевский.

Ранее Осеевский советовал россиянам вернуть в дома стационарные телефоны.

*Принадлежит Meta, признанной экстремистской организацией и запрещенной в РФ

♻️ Сделай репост, чтобы помочь другим.

📲 Мы в MAX

👉 @Bookflow
Please open Telegram to view this post
VIEW IN TELEGRAM
💩42🤬17🖕13🤡11🤯1
Assembler для Windows в Visual Studio

1️⃣Часть первая

В этой статье я покажу как написать приложение для windows на ассемблере. В качестве IDE будет привычная многим Visual Studio 2019 со своими привычными плюшками - подсветка кода, отладка и привычный просмотр локальных переменных и регистров. Собирать приложение будет MASM, а значит, у нас будут и масмовские плюшки. Это будет полноценное оконное приложение с меню, иконкой, отрисовкой, выводом текста и обработкой мыши с клавиатурой.

https://habr.com/ru/articles/763636/


2️⃣Часть вторая — MASM x64 и юникод

Вторая часть рассказа об ассемблере под Windows. Здесь я расскажу про 64-разрядные приложения в Windows, чем отличается MASM 64 от MASM 32, про макросы из MASM 64 SDK, как работать с Юникодом на примере простого консольного REPL'а, а ещё как обойтись без Visual Studio и пользоваться masm просто из командной строки.

https://habr.com/ru/companies/ruvds/articles/884240/


♻️ Сделай репост, чтобы помочь другим.

📲 Мы в MAX

👉 @Bookflow
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5👍4
Коллекция библиотек и фреймворков для C++

Список удивительных фреймворков, библиотек, ресурсов и блестящих вещей на C++ (или C). Вдохновленный удивительными... вещами.

https://github.com/fffaraz/awesome-cpp

♻️ Сделай репост, чтобы помочь другим.

📲 Мы в MAX

👉 @Bookflow
Please open Telegram to view this post
VIEW IN TELEGRAM
2👍1🔥1
💻 12 основных команд Git

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

1️⃣ git init - инициализация нового репозитория
2️⃣ git add - подготовка изменений к коммиту
3️⃣ git commit - создание коммита
4️⃣ git push - отправка изменений в удалённый репозиторий
5️⃣ git pull - получение и слияние изменений с удалённого репозитория
6️⃣ git remote - управление удалёнными репозиториями
7️⃣ git branch - работа с ветками
8️⃣ git fetch - получение данных без слияния
9️⃣ git checkout - переключение между ветками
🔟 git merge - слияние веток
1️⃣1️⃣ git status - проверка состояния репозитория
1️⃣2️⃣ git reset - откат изменений

♻️ Сделай репост, чтобы помочь другим.

📲 Мы в MAX

👉 @Bookflow
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥2
Media is too big
VIEW IN TELEGRAM
Гайд по Git Для Начинающих За 15 Минут

Запутались в командах Git? В этом видео я объясню 9 основных команд, которые вам действительно нужны для работы. Простыми словами, без лишней теории, и с крутыми анимациями. Вы узнаете, как клонировать проекты, делать коммиты, управлять ветками и делиться изменениями с командой. Всё, что нужно, чтобы уверенно использовать Git каждый день!

Таймкоды:
00:00:00 - интро
00:00:34 - Git clone
00:01:58 - Git commit
00:05:08 - Git add
00:07:16 - Git branch
00:08:42 - Git checkout
00:09:29 - Git push
00:11:54 - Git rebase
00:13:30 - Git revert

источник

♻️ Сделай репост, чтобы помочь другим.

📲 Мы в MAX

👉 @Bookflow
Please open Telegram to view this post
VIEW IN TELEGRAM
👍41🔥1🥰1
🚀 Подборка полезных IT каналов в Max


Системное администрирование, DevOps 📌

https://max.ru/i_odmin Все для системного администратора
https://max.ru/bash_srv Bash Советы
https://max.ru/sysadminof Книги для админов, полезные материалы
https://max.ru/i_odmin_book Библиотека Системного Администратора
https://max.ru/i_devops DevOps: Пишем о Docker, Kubernetes и др.

1C разработка 📌
https://max.ru/odin1c_rus Cтатьи, курсы, советы, шаблоны кода 1С

Программирование C++📌

https://max.ru/cpp_lib Библиотека C/C++ разработчика

Программирование Go📌
https://max.ru/golang_lib Библиотека Go (Golang) разработчика

Программирование React📌
https://max.ru/react_lib React

Программирование Python 📌
https://max.ru/python_of Python академия.
https://max.ru/BookPython Библиотека Python разработчика

Java разработка 📌
https://max.ru/bookjava Библиотека Java разработчика

GitHub Сообщество 📌
https://max.ru/githublib Интересное из GitHub

Базы данных (Data Base) 📌
https://max.ru/database_info Все про базы данных

Фронтенд разработка 📌
https://max.ru/frontend_1 Подборки для frontend разработчиков

Библиотеки 📌
https://max.ru/programmist_of Книги по программированию
https://max.ru/proglb Библиотека программиста
https://max.ru/bfbook Книги для программистов

Программирование 📌
https://max.ru/bookflow Лекции, видеоуроки, доклады с IT конференций
https://max.ru/itmozg Программисты, дизайнеры, новости из мира IT
https://max.ru/php_lib Библиотека PHP программиста 👨🏼‍💻👩‍💻

Шутки программистов 📌
https://max.ru/itumor Шутки программистов

Защита, взлом, безопасность 📌
https://max.ru/thehaking Канал о кибербезопасности
https://max.ru/xakkep_1 Хакер Free

Книги, статьи для дизайнеров 📌

https://max.ru/odesigners Статьи, книги для дизайнеров

Математика 📌
https://max.ru/Pomatematike Канал по математике
https://max.ru/phismat_1 Обучающие видео, книги по Физике и Математике

Вакансии 📌
https://max.ru/progjob Вакансии в IT

Мир технологий 📌
https://max.ru/mir_teh Канал для любознательных


Бонус 📌
https://max.ru/piterspb_78 Свежие новости Санкт-Петербурга
https://max.ru/mockva_life Свежие новости Москвы
💩8🖕4🤡2👎1
15 проектов с открытым исходным кодом, которые изменили мир

♻️ Сделай репост, чтобы помочь другим.

📲 Мы в MAX

👉 @Bookflow
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8👍1👏1🎉1
Пишем свой собственный текстовый редактор

Это инструкция, которая покажет вам, как создать текстовый редактор на языке C.

Текстовый редактор представляет собой kilo от antirez, с некоторыми изменениями. Это около 1000 строк языка C в одном файле без зависимостей, и в нем реализованы все основные функции, которые вы ожидаете от минимального редактора, а также подсветка синтаксиса и функция поиска.

В этой инструкции вы пройдете путь создания редактора в 184 шага. На каждом шаге вы будете добавлять, изменять или удалять несколько строк кода. На большинстве шагов вы сможете наблюдать за внесенными изменениями, скомпилировав и запустив программу сразу после этого.

https://viewsourcecode.org/snaptoken/kilo/index.html

♻️ Сделай репост, чтобы помочь другим.

📲 Мы в MAX

👉 @Bookflow
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6👍31
🔥Awesome-Cheatsheets

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

Я обычно создаю шпаргалку, когда хочу прокачать навыки в языке программирования, фреймворке или инструменте разработки. Раньше я делал такие записи в Gist, но чтобы удобнее отслеживать историю и дать возможность другим участвовать, я собрал всё в одном репозитории. Большая часть материалов основана на официальной документации и книгах, которые я прочитал.

Заглядывай — возможно, узнаешь что-то новое. Эти шпаргалки созданы, чтобы быстро проверить знания и сэкономить тебе время.

https://lecoupa.github.io/awesome-cheatsheets/

♻️ Сделай репост, чтобы помочь другим.

📲 Мы в MAX

👉 @Bookflow
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3👍2
This media is not supported in your browser
VIEW IN TELEGRAM
Задержка (Latency) vs. Пропускная способность (Throughput)

Задумывались, почему приложение «тормозит», хотя пропускная способность сети вроде бы в порядке?
Дело в том, что задержка и пропускная способность описывают два совершенно разных аспекта производительности.

Задержка (Latency) - это время задержки каждого пакета.
Именно её ощущает пользователь, когда нажимает кнопку. Это - отзывчивость системы.
Задержка показывает, сколько времени требуется, чтобы один запрос прошёл путь от сервера до конечного устройства.

Она включает:
- время обработки запроса на сервере,
- задержку в очередях,
- распространение сигнала по сети,
- задержку передачи,
- и «последнюю милю» - соединение с устройством пользователя.

Пропускная способность (Throughput) - это объём данных, успешно переданных за единицу времени.
Речь не о скорости отдельного пакета, а о количестве данных, проходящих через «трубу».
Пропускная способность - это ёмкость системы.
Высокая пропускная способность означает, что система справляется с нагрузкой без перегрузок.

А теперь вопрос к вам:
Как вы измеряете эти метрики так, чтобы они действительно предсказывали, когда система начнёт давать сбои?

♻️ Сделай репост, чтобы помочь другим.

📲 Мы в MAX

👉 @Bookflow
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥2
This media is not supported in your browser
VIEW IN TELEGRAM
🖥 7 основных стратегий масштабирования вашей базы данных.

1 - Индексация:
Проверьте шаблоны запросов вашего приложения и создайте подходящие индексы.

2 - Материализованные представления:
Предварительно вычислите результаты сложных запросов и сохраните их для более быстрого доступа.

3 - Денормализация:
Уменьшите количество сложных объединений для повышения производительности запросов.

4 - Вертикальное масштабирование:
Увеличьте мощность вашего сервер базы данных, добавляя больше процессоров, оперативной памяти или хранилища.

5 - Кэширование:
Сохраните часто запрашиваемые данные в более быстром слое хранения для снижения нагрузки на базу данных.

6 - Репликация:
Создайте реплики основной базы данных на разных серверах для масштабирования чтения.

7 - Шардинг:
Разделите таблицы базы данных на более мелкие части и распределите их по серверам. Используется для масштабирования как записи, так и чтения.

А теперь ваш ход: Какие другие стратегии вы используете для масштабирования ваших баз данных?

♻️ Сделай репост, чтобы помочь другим.

📲 Мы в MAX

👉 @Bookflow
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥1🎉1
This media is not supported in your browser
VIEW IN TELEGRAM
Основные алгоритмы на графах

В статье рассмотрены основные алгоритмы на графах и их реализацию на C++.

Рассматриваемые алгоритмы:
Обход графа в ширину (Поиск в ширину) aka BFS | Breadth First Search
Обход графа в глубину (Поиск в глубину) aka DFS | Depth First Search
Алгоритм Дейкстры
Алгоритм Флойда-Уоршелла
Алгоритм Прима

https://habr.com/ru/companies/timeweb/articles/751762/

♻️ Сделай репост, чтобы помочь другим.

📲 Мы в MAX

👉 @Bookflow
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥1
ImHex

🔍 Hex-редактор для реверс-инженеров, программистов и людей, которые ценят свое зрение, когда работают ночью.

https://github.com/WerWolv/ImHex

♻️ Сделай репост, чтобы помочь другим.

📲 Мы в MAX

👉 @Bookflow
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6👍41