ar
Feedback
ITmozg

ITmozg

الذهاب إلى القناة على Telegram

Программисты, дизайнеры, новости из мира IT. Официальный канал. (vk.com/itmozg, ITmozg.ru)

إظهار المزيد
2 650
المشتركون
لا توجد بيانات24 ساعات
+17 أيام
-1030 أيام
جذب المشتركين
يوليو '26
يوليو '26
+16
في 0 قنوات
يونيو '26
+13
في 1 قنوات
Get PRO
مايو '26
+60
في 0 قنوات
Get PRO
أبريل '26
+15
في 0 قنوات
Get PRO
مارس '26
+37
في 0 قنوات
Get PRO
فبراير '26
+25
في 0 قنوات
Get PRO
يناير '26
+18
في 0 قنوات
Get PRO
ديسمبر '25
+24
في 0 قنوات
Get PRO
نوفمبر '25
+32
في 32 قنوات
Get PRO
أكتوبر '25
+29
في 1 قنوات
Get PRO
سبتمبر '25
+46
في 37 قنوات
Get PRO
أغسطس '25
+44
في 1 قنوات
Get PRO
يوليو '25
+49
في 27 قنوات
Get PRO
يونيو '25
+89
في 21 قنوات
Get PRO
مايو '25
+39
في 45 قنوات
Get PRO
أبريل '25
+71
في 38 قنوات
Get PRO
مارس '25
+49
في 39 قنوات
Get PRO
فبراير '25
+60
في 32 قنوات
Get PRO
يناير '25
+51
في 34 قنوات
Get PRO
ديسمبر '24
+54
في 35 قنوات
Get PRO
نوفمبر '24
+55
في 33 قنوات
Get PRO
أكتوبر '24
+59
في 30 قنوات
Get PRO
سبتمبر '24
+77
في 29 قنوات
Get PRO
أغسطس '24
+62
في 18 قنوات
Get PRO
يوليو '24
+59
في 1 قنوات
Get PRO
يونيو '24
+74
في 24 قنوات
Get PRO
مايو '24
+89
في 19 قنوات
Get PRO
أبريل '24
+72
في 0 قنوات
Get PRO
مارس '24
+118
في 23 قنوات
Get PRO
فبراير '24
+106
في 19 قنوات
Get PRO
يناير '24
+154
في 24 قنوات
Get PRO
ديسمبر '23
+157
في 24 قنوات
Get PRO
نوفمبر '23
+126
في 17 قنوات
Get PRO
أكتوبر '23
+135
في 18 قنوات
Get PRO
سبتمبر '23
+117
في 0 قنوات
Get PRO
أغسطس '23
+90
في 0 قنوات
Get PRO
يوليو '23
+120
في 0 قنوات
Get PRO
يونيو '23
+129
في 0 قنوات
Get PRO
مايو '23
+128
في 0 قنوات
Get PRO
أبريل '23
+100
في 0 قنوات
Get PRO
مارس '23
+125
في 0 قنوات
Get PRO
فبراير '23
+103
في 0 قنوات
Get PRO
يناير '23
+193
في 0 قنوات
Get PRO
ديسمبر '22
+245
في 0 قنوات
Get PRO
نوفمبر '22
+272
في 0 قنوات
Get PRO
أكتوبر '22
+249
في 0 قنوات
Get PRO
سبتمبر '22
+30
في 0 قنوات
Get PRO
أغسطس '22
+8
في 0 قنوات
Get PRO
يوليو '22
+5
في 0 قنوات
Get PRO
يونيو '22
+7
في 0 قنوات
Get PRO
مايو '22
+9
في 0 قنوات
Get PRO
أبريل '22
+12
في 0 قنوات
Get PRO
مارس '22
+13
في 0 قنوات
Get PRO
فبراير '22
+10
في 0 قنوات
Get PRO
يناير '22
+3
في 0 قنوات
Get PRO
ديسمبر '21
+8
في 0 قنوات
Get PRO
نوفمبر '21
+10
في 0 قنوات
Get PRO
أكتوبر '21
+13
في 0 قنوات
Get PRO
سبتمبر '21
+13
في 0 قنوات
Get PRO
أغسطس '21
+4
في 0 قنوات
Get PRO
يوليو '21
+14
في 0 قنوات
Get PRO
يونيو '21
+14
في 0 قنوات
Get PRO
مايو '21
+14
في 0 قنوات
Get PRO
أبريل '21
+12
في 0 قنوات
Get PRO
مارس '21
+10
في 0 قنوات
Get PRO
فبراير '21
+13
في 0 قنوات
Get PRO
يناير '21
+5
في 0 قنوات
Get PRO
ديسمبر '20
+983
في 0 قنوات
التاريخ
نمو المشتركين
الإشارات
القنوات
30 يوليو+1
29 يوليو+1
28 يوليو+1
27 يوليو0
26 يوليو0
25 يوليو+2
24 يوليو+2
23 يوليو0
22 يوليو0
21 يوليو0
20 يوليو+1
19 يوليو0
18 يوليو0
17 يوليو0
16 يوليو0
15 يوليو0
14 يوليو+1
13 يوليو0
12 يوليو+3
11 يوليو0
10 يوليو+1
09 يوليو0
08 يوليو+1
07 يوليو0
06 يوليو0
05 يوليو0
04 يوليو0
03 يوليو0
02 يوليو+1
01 يوليو+1
منشورات القناة
Этот парень — величайший гик современности Создал UNIX в 1971 году, когда ему было 28 лет. Создал Go в 2009 году, когда ему б
Этот парень — величайший гик современности Создал UNIX в 1971 году, когда ему было 28 лет. Создал Go в 2009 году, когда ему было 66 лет. Также он разработал язык программирования B (который стал основой для C), придумал UTF-8 (что сделало возможным использование международных текстов в интернете) и создал важнейшие инструменты вроде grep, которые разработчики используют до сих пор каждый день. Он также участвовал в разработке Multics (который предшествовал UNIX), а также операционных систем Plan 9 from Bell Labs и Inferno. Итого — 4 операционные системы. Большинство людей даже не пользуются таким количеством разных ОС. Впечатляющее резюме, правда? И всё же печально, что многие, даже в мире IT, не знают его имени. Кен Томпсон — запомните это имя 🙏 ♻️ Сделай репост, чтобы помочь другим. 📲 Мы в MAX 👉 @itmozg

2
Коллекция библиотек и фреймворков для C++ Список удивительных фреймворков, библиотек, ресурсов и блестящих вещей на C++ (или
Коллекция библиотек и фреймворков для C++ Список удивительных фреймворков, библиотек, ресурсов и блестящих вещей на C++ (или C). Вдохновленный удивительными... вещами. https://github.com/fffaraz/awesome-cpp ♻️ Сделай репост, чтобы помочь другим. 📲 Мы в MAX 👉 @itmozg
103
3
Assembler для Windows в Visual Studio 1️⃣Часть первая В этой статье я покажу как написать приложение для windows на ассемблер
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 👉 @itmozg
121
4
В 2002 году мир математики стал свидетелем исторического момента, когда российский математик Григорий Перельман представил пе
В 2002 году мир математики стал свидетелем исторического момента, когда российский математик Григорий Перельман представил первую из трех новаторских работ, представивших доказательство неуловимой гипотезы Пуанкаре. Эта гипотеза ставила в тупик математиков более столетия, что сделало ее одной из самых сложных нерешенных проблем в этой области. Работа Перельмана была поистине революционной. Он успешно сориентировался в запутанном лабиринте топологии и в конечном итоге предоставил строгое и элегантное доказательство своей гипотезы. Его достижение потрясло математическое сообщество и сразу же привлекло внимание коллег и экспертов со всего мира. В знак признания своих исключительных достижений Григорий Перельман был награжден престижной медалью Филдса в 2006 году, что считается высшей наградой в математике. Однако реакция Перельмана на эту похвалу была столь же нетрадиционной, как и его математическое путешествие. Совершив беспрецедентный шаг, он отказался от медали Филдса, избегая всеобщего внимания и традиционных атрибутов успеха. Его затворнический и скромный характер стал очевиден миру. Но отказ Перельмана принять признание на этом не ограничился. Математический институт Клея также пообещал существенное финансовое вознаграждение в один миллион долларов за доказательство гипотезы Пуанкаре. Поступок, который еще больше сбил с толку многих, Перельман отказался и от этой значительной суммы. Его цитировали: «Меня не интересуют деньги или слава; я не хочу, чтобы меня выставляли напоказ, как животное в зоопарке». Действия Перельмана оставили в мире больше вопросов, чем ответов. Его отказ как от медали Филдса, так и от премии в миллион долларов пролил свет на его глубоко укоренившиеся ценности и приоритеты. Это выдвинуло на первый план математика, движимого не похвалами или богатством, а непоколебимой преданностью делу чистой математики и поиску истины. Вклад Григория Перельмана в математику и его загадочная личность оставили неизгладимый след в этой области. Его решение отказаться от признания и богатства в пользу интеллектуальной честности служит свидетельством чистоты его математических занятий. В анналах математики он остается уникальной фигурой, блестящим умом, который разрешил одну из величайших математических загадок нашего времени и решил сделать это на своих собственных условиях. ♻️ Сделай репост, чтобы помочь другим. 📲 Мы в MAX 👉 @itmozg
138
5
🔥 СВЕЖИЙ АД, ПРЯМО В ТВОЙ МОНИТОР! 💀 Они думали, что ад остался на Марсе… Они ошибались. DOOM возвращается — теперь в виде
🔥 СВЕЖИЙ АД, ПРЯМО В ТВОЙ МОНИТОР! 💀 Они думали, что ад остался на Марсе… Они ошибались. DOOM возвращается — теперь в виде лёгкого, как бензопила в руках Мародёра, и безжалостного, как ракета в лицо кибердемону, порта на Go. Никаких платформенных цепей. Никакого CGo. Только чистая ярость и кросс-компиляция, рвущая реальность на куски. 🔸 Запускается везде, где бьётся сердце Go 🔸 Минимум балласта — только стандартная библиотека Go 🔸 Полная линейка ада: DOOM, DOOM II, Ultimate DOOM, Final DOOM 🔸 WAD — твой пропуск в бездну: приноси своих демонов 🔸 Память в бронежилете: защита от переполнений буфера (но не от зубов какодемона) 🔸 Оружие массового поражения — кросс-компиляция под любую цель Подготовься. Натяни броню. И перезаряди BFG… https://github.com/AndreRenaud/gore ♻️ Сделай репост, чтобы помочь другим. 📲 Мы в MAX 👉 @itmozg
153
6
🚀 Подборка полезных 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 и др. https://max.ru/tipsysdmin Типичный Сисадмин https://max.ru/channel_win_sysadmin Системный Администратор Windows https://max.ru/channel_linux_admin Linux: Системный администратор https://max.ru/channel_linuxmod Linux https://max.ru/channel_i_linux Системный администратор https://max.ru/channel_devopslib DevOps, SRE, Sysadmin https://max.ru/channel_devops_star DevOps Star (Звезда Девопса) Excel лайфхак 📌 https://t.me/Excel_lifehack Excel лайфхак Английский с нуля 🇬🇧 https://max.ru/UchuEnglish 1C разработка 📌 https://max.ru/odin1c_rus Cтатьи, курсы, советы, шаблоны кода 1С https://max.ru/channel_DevLab1C 1С:Предприятие 8 Программирование C++📌 https://max.ru/cpp_lib Библиотека C/C++ разработчика https://max.ru/channel_cpp_geek C++ geek Программирование Go📌 https://max.ru/golang_lib Библиотека Go (Golang) разработчика Программирование React📌 https://max.ru/react_lib React Программирование Rust📌 https://max.ru/channel_rust_lib Программирование Python 📌 https://max.ru/python_of Python академия. https://max.ru/BookPython Библиотека Python разработчика Java разработка 📌 https://max.ru/bookjava Библиотека Java разработчика https://max.ru/channel_java_geek Java Geek 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 Обучающие видео, книги по Физике и Математике Вакансии в IT📌 https://max.ru/progjob https://max.ru/channel_rabotait Мир технологий 📌 https://max.ru/mir_teh Канал для любознательных Бонус 📌 https://max.ru/piterspb_78 Свежие новости Санкт-Петербурга https://max.ru/mockva_life Свежие новости Москвы https://max.ru/piterspb Питер Новости: Санкт-Петербург / СПБ / ДТП
145
7
🔐 Путеводитель по аутентификации: от Cookies до OAuth 2.0 Разбираться в способах входа пользователя в систему можно бесконеч
🔐 Путеводитель по аутентификации: от 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 👉 @itmozg
123
8
📌7 распространённых асимптотических сложностей алгоритмов 1. O(1) — Константное время - Время выполнения не зависит от разме
📌7 распространённых асимптотических сложностей алгоритмов 1. O(1) — Константное время - Время выполнения не зависит от размера входных данных. - Пример: доступ к элементу массива по индексу. 2. O(log n) — Логарифмическое время - Время выполнения растёт медленно при увеличении размера входных данных. Обычно встречается в алгоритмах, которые на каждом шаге делят задачу пополам. - Пример: бинарный поиск в отсортированном массиве. 3. O(n) — Линейное время - Время выполнения растёт прямо пропорционально размеру входных данных. - Пример: поиск элемента в массиве перебором всех элементов. 4. O(n log n) — Линейно-логарифмическое время - Время выполнения растёт чуть быстрее линейного, включает логарифмическое число операций для каждого элемента. - Пример: сортировка массива быстрой сортировкой или сортировкой слиянием. 5. O(n²) — Квадратичное время - Время выполнения пропорционально квадрату размера входных данных. - Пример: сортировка пузырьком, где сравниваются и при необходимости меняются местами все пары элементов. 6. O(2ⁿ) — Экспоненциальное время - Время выполнения удваивается с каждым новым элементом во входных данных. Такие алгоритмы становятся непрактичными для больших входных размеров. - Пример: генерация всех подмножеств множества. 7. O(n!) — Факториальное время - Время выполнения пропорционально факториалу размера входных данных. - Пример: генерация всех перестановок множества. ♻️ Сделай репост, чтобы помочь другим. 📲 Мы в MAX 👉 @itmozg
144
9
Git Merge vs Rebase Одной из самых мощных возможностей Git является работа с ветками. Однако при работе с ними нам нужно инте
Git Merge vs Rebase Одной из самых мощных возможностей Git является работа с ветками. Однако при работе с ними нам нужно интегрировать изменения из одной ветки в другую, и способов сделать это несколько. Есть два основных метода: 1. Merge (слияние) Когда вы сливаете ветку A в ветку B (с помощью git merge), Git создаёт новый merge-коммит. У этого коммита два родителя — по одному от каждой ветки, что символизирует объединение их истории. - Это неразрушающая операция, которая сохраняет точную историю проекта. - Merge особенно полезен в командной работе, когда важно сохранить целостность и хронологию изменений. Минус: merge-коммиты могут "засорять" историю, усложняя отслеживание конкретных изменений. 2. Rebase (перебазирование) Когда вы перебазируете ветку A на ветку B (с помощью git rebase), это означает: "Давайте сделаем вид, что изменения из ветки A были сделаны поверх последних изменений ветки B." - Rebase переписывает историю проекта, создавая новые коммиты для каждого из исходных коммитов. - Результат — чистая, линейная история. Минус: может быть проблематично, если над веткой работают несколько человек, ведь перебазирование переписывает историю, что усложняет совместную работу при уже опубликованных ветках. Когда что использовать? - Merge — когда важно сохранить полную историю и вы работаете с общими ветками. Идеально для слияния feature-веток в main или develop. - Rebase — для личных веток или когда нужна чистая, линейная история для удобства отслеживания изменений. Важно: не делайте rebase публичной истории. Если ветка уже опубликована и с ней работают другие, переписывание истории приведёт к конфликтам и путанице. ♻️ Сделай репост, чтобы помочь другим. 📲 Мы в MAX 👉 @itmozg
160
10
Параллелизм против Конкурентности — это не одно и то же ➡️𝐂𝐨𝐧𝐜𝐮𝐫𝐫𝐞𝐧𝐜𝐲 (Конкурентность): Конкурентность означает, ч
Параллелизм против Конкурентности — это не одно и то же ➡️𝐂𝐨𝐧𝐜𝐮𝐫𝐫𝐞𝐧𝐜𝐲 (Конкурентность): Конкурентность означает, что приложение продвигается сразу по нескольким задачам одновременно. Хотя одно ядро процессора может выполнять только одну задачу за раз, оно достигает конкурентности за счёт быстрого переключения между задачами. Пример: Слушать музыку и писать код одновременно. Процессор так быстро переключается между задачами, что создаётся ощущение одновременного выполнения. Основная цель конкурентности — максимально загрузить CPU, минимизируя время простоя. ➡️𝐏𝐚𝐫𝐚𝐥𝐥𝐞𝐥𝐢𝐬𝐦 (Параллелизм): Параллелизм означает одновременное выполнение нескольких задач. Для достижения параллелизма задачи разбиваются на независимые подзадачи и обрабатываются одновременно на нескольких CPU, ядрах или GPU. Пример: Обучение модели глубокого обучения путём разбиения датасета на батчи и параллельной обработки каждого батча на разных GPU. Цель параллелизма — увеличение скорости обработки за счёт параллельного выполнения задач. Они не исключают друг друга: - Можно иметь конкурентность без параллелизма. - Можно иметь параллелизм без конкурентности. - А можно совместить оба подхода для систем с высокой производительностью. ♻️ Сделай репост, чтобы помочь другим. 📲 Мы в MAX 👉 @itmozg
181
11
7 обязательных стратегий для масштабирования вашей базы данных ♻️ Сделай репост, чтобы помочь другим. 📲 Мы в MAX 👉 @itmoz
7 обязательных стратегий для масштабирования вашей базы данных ♻️ Сделай репост, чтобы помочь другим. 📲 Мы в MAX 👉 @itmozg
195
12
BIOS и UEFI / стадии UEFI / драйвера и протоколы Сергей Пушкарёв — руководитель отдела разработки BIOS в YADRO. Сергей начал
BIOS и UEFI / стадии UEFI / драйвера и протоколы Сергей Пушкарёв — руководитель отдела разработки BIOS в YADRO. Сергей начал работу с BIOS и UEFI ещё в университете и может очень много рассказать об этой области. С Еленой Лепилкиной и Антоном Афанасьевым наш герой во всех подробностях разобрал, что происходит на самом низком уровне софта после того, как пользователь нажимает кнопку включения компьютера. Параллельно осветил разные подходы и типичные проблемы разработки в своей сфере, тонкости взаимодействия драйверов, а также разницу между BIOS и UEFI. А напоследок ответил, к чему приводят баги в BIOS и как стараются их избежать, если цена ошибки слишком высока. 0:00 - Тизер 1:12 - Представление Сергея Пушкарева 2:11 - Карьерный путь Сергея 4:50 - История развития BIOS и UEFI и разница между ними 11:28 - Достоинства UEFI 14:14 - Стадии работы UEFI 15:09 - Что работает до UEFI 18:25 - стадия SEC и режим Cache-Is-RAM 22:58 - стадия PEI 27:54 - переход в 64-битный режим 28:42 - PE-файлы,Terse Executable и вопросы производительности 30:46 - DXE стадия и запуск драйверов 33:02 - Протоколы для взаимодействия драйверов 37:58 - Эволюция спецификации: новые архитектуры, Device path для нового железа 40:31 - Загрузка ноутбука через Wi-Fi, разница драйверов Linux и UEFI 42:58 - Работа разработчиков BIOS 44:06 - Баги в UEFI 46:45 - Разработка UEFI под новую платформу 50:38 - Взаимодействие BIOS с BMC, Redfish 53:22 - Разработка драйвера на EDK2 59:55 - Нужен ли ассемблер разработчику BIOS 1:04:13 - Как поменялся процесс загрузки с приходом UEFI 1:05:51 - Взаимодействие BIOS и операционной системы 1:07:20 - Как UEFI работает на ARM 1:11:29 - VFR - DSL-язык для описания меню 1:14:23 - Активное использование Open-Source 1:16:22 - Рынок компаний разработчиков UEFI 1:20:33 - Разработка UEFI для системы, которой нет в железе 1:21:37 - Баги в релизах и процесс тестирования 1:25:59 - Дальнейшее развитие BIOS: ускорение работы, драйверы на Rust 1:35:07 - Заключение источник ♻️ Сделай репост, чтобы помочь другим. 📲 Мы в MAX 👉 @itmozg
214
13
🔐 Как на самом деле работает электронная цифровая подпись (ЭЦП)? Разбираем по шагам! Мы часто слышим про «цифровые подписи»,
🔐 Как на самом деле работает электронная цифровая подпись (ЭЦП)? Разбираем по шагам! Мы часто слышим про «цифровые подписи», но как именно математика и криптография защищают наши документы? На прикрепленной схеме отлично показан весь процесс. Сохраняйте себе, чтобы не потерять! 📌 Процесс делится на два главных этапа: создание подписи (у отправителя) и её проверка (у получателя). 📤 ЭТАП 1: Создание подписи (Сторона отправителя) 1. Создание хэша: Берется исходный документ и пропускается через математический алгоритм - хэш-функцию (например, SHA-256). На выходе получается уникальный «цифровой отпечаток» документа. Главная фишка хэша: если изменить в документе хоть одну запятую, хэш изменится полностью. 2. Шифрование: Отправитель берет этот хэш и шифрует его своим Закрытым ключом (Private Key). Этот ключ есть только у него! 3. Готово: Зашифрованный хэш - это и есть Цифровая подпись. Она прикрепляется к оригинальному документу, и весь этот пакет отправляется по сети. 📥 ЭТАП 2: Проверка подписи (Сторона получателя) Когда документ доходит до адресата, получателю нужно убедиться в двух вещах: что документ прислал именно заявленный автор, и что файл не подменили по пути. 1. Свой хэш: Получатель берет присланный документ и сам пропускает его через ту же хэш-функцию (SHA-256). Получает новый хэш. 2. Расшифровка подписи: Затем получатель берет прикрепленную цифровую подпись и расшифровывает её Открытым ключом (Public Key) отправителя (этот ключ доступен всем). После расшифровки он получает оригинальный хэш, который сделал отправитель. 3. Момент истины - Сравнение: Получатель сравнивает два хэша. ✅ Если они совпадают: Документ 100% подлинный. Его подписал владелец закрытого ключа, и по пути в тексте ничего не меняли. ❌ Если они разные: Документ был изменен злоумышленником при пересылке, либо подпись недействительна. 💡 Главное правило асимметричной криптографии: Подписываем - своим закрытым ключом 🔑 Проверяют нас - нашим открытым ключом 🔓 ♻️ Сделай репост, чтобы помочь другим. 📲 Мы в MAX 👉 @itmozg
179
14
Но что же такое коды Хэмминга? Истоки коррекции ошибок. ♻️ Сделай репост, чтобы помочь другим. 📲 Мы в MAX 👉 @itmozg
Но что же такое коды Хэмминга? Истоки коррекции ошибок. ♻️ Сделай репост, чтобы помочь другим. 📲 Мы в MAX 👉 @itmozg
192
15
Антипаттерн: "Сначала MVP - потом нормальная схема" Частая ошибка при старте проекта - отложить продумывание структуры базы «на потом»: «Сейчас сделаем быстро MVP, а потом приведём БД в порядок». И вот что часто происходит: – MVP превращается в продакшн без переработки схемы. – Костыли начинают множиться. – Появляется технический долг, который сложно погасить: миграции становятся болью, связи - запутанными, а данные - ненадёжными. Типичные симптомы: — nullable-поля без нужды — дублирование данных — универсальные таблицы вроде entities или attributes — "магические" значения в enum-полях — отсутствие внешних ключей и индексов Как избежать: 1. Минимум нормализации - с самого начала. Даже для MVP важно заложить понятную структуру. 2. Используй миграции сразу. Даже если это скрипт в папке migrations/, а не полноценный tool. 3. Заведи ER-диаграмму. Она не обязана быть идеальной, но уже поможет избежать хаоса. 4. Смотри в будущее. Планируешь рост? Подумай о расширяемости схемы. 5. Не стесняйся рефакторить. Лучше на раннем этапе изменить структуру, чем через год бояться сломать прод. 👉 MVP не должен значить "без архитектуры". Плохая схема - это замедление развития и боль на каждый новый фичереквест. ♻️ Сделай репост, чтобы помочь другим. 📲 Мы в MAX 👉 @itmozg
216
16
Пишем отладчик для Linux Part 1: Setup https://blog.tartanllama.xyz/writing-a-linux-debugger-setup/ Part 2: Breakpoints https
Пишем отладчик для Linux Part 1: Setup https://blog.tartanllama.xyz/writing-a-linux-debugger-setup/ Part 2: Breakpoints https://blog.tartanllama.xyz/writing-a-linux-debugger-breakpoints/ Part 3: Registers and memory https://blog.tartanllama.xyz/writing-a-linux-debugger-registers/ Part 4: Elves and dwarves https://blog.tartanllama.xyz/writing-a-linux-debugger-elf-dwarf/ Part 5: Source and signals https://blog.tartanllama.xyz/writing-a-linux-debugger-source-signal/ Part 6: Source-level stepping https://blog.tartanllama.xyz/writing-a-linux-debugger-dwarf-step/ Part 7: Source-level breakpoints https://blog.tartanllama.xyz/writing-a-linux-debugger-source-break/ Part 8: Stack unwinding https://blog.tartanllama.xyz/writing-a-linux-debugger-unwinding/ Part 9: Handling variables https://blog.tartanllama.xyz/writing-a-linux-debugger-variables/ Part 10: Advanced topics https://blog.tartanllama.xyz/writing-a-linux-debugger-advanced-topics/ ♻️ Сделай репост, чтобы помочь другим. 📲 Мы в MAX 👉 @itmozg
219
17
💡 Топ-15 строительных блоков системного дизайна, которые стоит знать: 1. Балансировщик нагрузки (Load Balancer): Распределяе
💡 Топ-15 строительных блоков системного дизайна, которые стоит знать: 1. Балансировщик нагрузки (Load Balancer): Распределяет входящий трафик между несколькими серверами, предотвращая перегрузку одного из них. Повышает доступность, устойчивость к сбоям и уменьшает время отклика. 2. API-шлюз (API Gateway): Единая точка входа для всех клиентских запросов в архитектуре микросервисов. Обрабатывает маршрутизацию, аутентификацию, ограничение частоты запросов и агрегацию данных. 3. DNS (Система доменных имён): Преобразует читаемые доменные имена в IP-адреса. 4. Кэш (Cache): Хранит часто запрашиваемые данные в памяти. Существенно снижает задержки и нагрузку на базу данных. 5. CDN (Сеть доставки контента): Доставляет статический контент (изображения, CSS, JS и т.п.) с серверов, расположенных ближе к пользователю. Снижает задержки и расход трафика, особенно на глобальном уровне. 6. База данных (Database): Основное хранилище данных. Может быть SQL или NoSQL в зависимости от требований. Поддерживает запросы, индексацию, транзакции и надёжность. 7. API (Программные интерфейсы): Определяют, как сервисы взаимодействуют между собой, часто через HTTP или gRPC. Обеспечивают модульность и чёткое разделение ответственности. 8. Микросервисы (Microservices): Разделяют монолитное приложение на независимо развёртываемые сервисы. Повышают гибкость, изоляцию ошибок и масштабируемость. 9. Ограничитель запросов (Rate Limiter): Контролирует количество запросов от пользователя или сервиса в заданный период. Защищает API от злоупотреблений и обеспечивает справедливость. 10. Объектное хранилище (Object Storage): Хранит большие бинарные объекты (изображения, видео, резервные копии) с высокой доступностью и надёжностью. Примеры — AWS S3, Google Cloud Storage и др. 11. Очередь сообщений (Message Queue): Обеспечивает асинхронную коммуникацию между сервисами через очередь (например, Kafka, RabbitMQ). Позволяет слабо связать компоненты и справляться с пиками нагрузки. 12. Шардинг (Sharding): Разделение больших объёмов данных между несколькими базами или таблицами. Обеспечивает масштабирование и повышение производительности запросов. 13. Репликация (Replication): Копирование данных между узлами базы данных. Повышает отказоустойчивость и производительность чтения. 14. Консистентное хеширование (Consistent Hashing): Метод распределения данных между узлами с минимальными изменениями при масштабировании. Часто используется в кэшировании и распределённых хранилищах. 15. Система мониторинга (Monitoring System): Отслеживает состояние системы, собирает логи и метрики, отправляет оповещения при сбоях или аномалиях. Критически важна для наблюдаемости, отладки и обеспечения доступности. ♻️ Сделай репост, чтобы помочь другим. 📲 Мы в MAX 👉 @itmozg
198
18
🚀 Как улучшить производительность API? Оптимизация API — ключ к быстрой и стабильной работе приложений. Вот 5 проверенных те
🚀 Как улучшить производительность API? Оптимизация API — ключ к быстрой и стабильной работе приложений. Вот 5 проверенных техник: 1️⃣ Пагинация (Pagination) Разбиваем большой объем данных на страницы. 🔹 Уменьшает нагрузку 🔹 Позволяет обрабатывать большие выборки 2️⃣ Асинхронное логирование (Async Logging) Сохраняем логи в буфер, а затем на диск. 🔹 Меньше задержек 🔹 Выше пропускная способность 3️⃣ Кэширование (Caching) Часто используемые данные храним в кэше, а не в БД. 🔹 Быстрый доступ 🔹 Меньше запросов к базе данных 4️⃣ Сжатие данных (Payload Compression) Сжимаем запросы и ответы. 🔹 Уменьшение объема трафика 🔹 Быстрая загрузка/выгрузка 5️⃣ Пул соединений (Connection Pool) Повторно используем открытые соединения с БД. 🔹 Снижение накладных расходов 🔹 Повышение эффективности 📌 Используй эти подходы, чтобы ускорить свой API и улучшить пользовательский опыт. ♻️ Сделай репост, чтобы помочь другим. 📲 Мы в MAX 👉 @itmozg
217
19
В чём разница между аутентификацией на сессиях и JWT? Многие разработчики не знают об этом различии, хотя оно критически важн
В чём разница между аутентификацией на сессиях и JWT? Многие разработчики не знают об этом различии, хотя оно критически важно. Большинство веб-приложений используют один из двух подходов к аутентификации: сессии (где состояние хранится на сервере) или JWT (где состояние передаётся вместе с клиентом). 1. Аутентификация на основе сессий Когда пользователь входит в систему, бэкенд генерирует случайный session ID, сохраняет его в кэше или базе данных и устанавливает этот ID как HttpOnly cookie в браузере. При каждом запросе браузер отправляет cookie, сервер находит соответствующую запись и восстанавливает пользовательский контекст. Такой подход: • сохраняет чувствительные данные на сервере; • позволяет мгновенно завершить сессию удалением записи. Преимущества сессий: • 🔹 Мгновенная деактивация доступа (“выйти отовсюду”) - одной строкой: просто удалить запись из Redis или SQL. • 🔹 Секреты никогда не покидают сервер, что снижает риск утечки. • 🔹 Отлично подходит для малых и средних систем, где кэш - не узкое место. Но: при горизонтальном масштабировании понадобятся «липкие» сессии или реплицированный кэш, что добавляет задержки и усложняет инфраструктуру. 2. Аутентификация с помощью JWT (JSON Web Token) После входа сервер подписывает JWT, содержащий: • заголовок (например, alg, typ), • полезную нагрузку (claims - sub, role и т.д.), • цифровую подпись. JWT - это просто base64-строка (не шифрованная): любой может прочитать данные, но подделать их может только владелец секрета. Сервер не хранит состояние - любой узел может локально проверить подпись и доверять данным. Преимущества JWT: • 🔸 Беспамятный (stateless): не требует общего хранилища, подходит для микросервисов и edge-нод. • 🔸 Удобен для SPA и мобильных приложений, напрямую работающих с бэкендами. • 🔸 Лёгкий: помещается в заголовок Authorization или cookie. Минус: JWT нельзя отозвать после выдачи - он действителен до истечения срока, так что «экстренный выход» или блокировка аккаунта требуют дополнительной логики. Вывод: • Если главное - возможность немедленно отозвать доступ, выбирай сессии. • Если нужна масштабируемость без состояния, выбирай JWT, но помни, что токены нельзя «забрать обратно» после их выдачи. ♻️ Сделай репост, чтобы помочь другим. 📲 Мы в MAX 👉 @itmozg
250
20
Работодатели давно играют в волков. Просто теперь соискатели научились отвечать Сейчас много говорят о «соискателях-волках». Это кандидаты, которые приукрашивают опыт, одновременно работают в нескольких компаниях, регулярно ходят по собеседованиям, принимают оффер и продолжают искать условия получше. Они легко увольняются, не испытывают особой преданности работодателю и рассматривают компанию прежде всего как источник дохода. О них пишут статьи, снимают видео и предупреждают HR-специалистов. Нам объясняют, что так нельзя, что это разрушает доверие и что хорошие трудовые отношения должны строиться на честности. Мысль разумная. Только есть небольшая проблема: работодатели начали играть в эту игру гораздо раньше. https://habr.com/ru/articles/1054232/ ♻️ Сделай репост, чтобы помочь другим. 📲 Мы в MAX 👉 @itmozg
265