uz
Feedback
ITmozg

ITmozg

Kanalga Telegram’da o‘tish

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

Ko'proq ko'rsatish
2 653
Obunachilar
Ma'lumot yo'q24 soatlar
-17 kunlar
-1930 kunlar
Obunachilarni jalb qilish
Iyul '26
Iyul '26
+8
0 kanalda
Iyun '26
+13
1 kanalda
Get PRO
May '26
+60
0 kanalda
Get PRO
Aprel '26
+15
0 kanalda
Get PRO
Mart '26
+37
0 kanalda
Get PRO
Fevral '26
+25
0 kanalda
Get PRO
Yanvar '26
+18
0 kanalda
Get PRO
Dekabr '25
+24
0 kanalda
Get PRO
Noyabr '25
+32
32 kanalda
Get PRO
Oktabr '25
+29
1 kanalda
Get PRO
Sentabr '25
+46
37 kanalda
Get PRO
Avgust '25
+44
1 kanalda
Get PRO
Iyul '25
+49
27 kanalda
Get PRO
Iyun '25
+89
21 kanalda
Get PRO
May '25
+39
45 kanalda
Get PRO
Aprel '25
+71
38 kanalda
Get PRO
Mart '25
+49
39 kanalda
Get PRO
Fevral '25
+60
32 kanalda
Get PRO
Yanvar '25
+51
34 kanalda
Get PRO
Dekabr '24
+54
35 kanalda
Get PRO
Noyabr '24
+55
33 kanalda
Get PRO
Oktabr '24
+59
30 kanalda
Get PRO
Sentabr '24
+77
29 kanalda
Get PRO
Avgust '24
+62
18 kanalda
Get PRO
Iyul '24
+59
1 kanalda
Get PRO
Iyun '24
+74
24 kanalda
Get PRO
May '24
+89
19 kanalda
Get PRO
Aprel '24
+72
0 kanalda
Get PRO
Mart '24
+118
23 kanalda
Get PRO
Fevral '24
+106
19 kanalda
Get PRO
Yanvar '24
+154
24 kanalda
Get PRO
Dekabr '23
+157
24 kanalda
Get PRO
Noyabr '23
+126
17 kanalda
Get PRO
Oktabr '23
+135
18 kanalda
Get PRO
Sentabr '23
+117
0 kanalda
Get PRO
Avgust '23
+90
0 kanalda
Get PRO
Iyul '23
+120
0 kanalda
Get PRO
Iyun '23
+129
0 kanalda
Get PRO
May '23
+128
0 kanalda
Get PRO
Aprel '23
+100
0 kanalda
Get PRO
Mart '23
+125
0 kanalda
Get PRO
Fevral '23
+103
0 kanalda
Get PRO
Yanvar '23
+193
0 kanalda
Get PRO
Dekabr '22
+245
0 kanalda
Get PRO
Noyabr '22
+272
0 kanalda
Get PRO
Oktabr '22
+249
0 kanalda
Get PRO
Sentabr '22
+30
0 kanalda
Get PRO
Avgust '22
+8
0 kanalda
Get PRO
Iyul '22
+5
0 kanalda
Get PRO
Iyun '22
+7
0 kanalda
Get PRO
May '22
+9
0 kanalda
Get PRO
Aprel '22
+12
0 kanalda
Get PRO
Mart '22
+13
0 kanalda
Get PRO
Fevral '22
+10
0 kanalda
Get PRO
Yanvar '22
+3
0 kanalda
Get PRO
Dekabr '21
+8
0 kanalda
Get PRO
Noyabr '21
+10
0 kanalda
Get PRO
Oktabr '21
+13
0 kanalda
Get PRO
Sentabr '21
+13
0 kanalda
Get PRO
Avgust '21
+4
0 kanalda
Get PRO
Iyul '21
+14
0 kanalda
Get PRO
Iyun '21
+14
0 kanalda
Get PRO
May '21
+14
0 kanalda
Get PRO
Aprel '21
+12
0 kanalda
Get PRO
Mart '21
+10
0 kanalda
Get PRO
Fevral '21
+13
0 kanalda
Get PRO
Yanvar '21
+5
0 kanalda
Get PRO
Dekabr '20
+983
0 kanalda
Sana
Obunachilarni jalb qilish
Esdaliklar
Kanallar
15 Iyul0
14 Iyul+1
13 Iyul0
12 Iyul+3
11 Iyul0
10 Iyul+1
09 Iyul0
08 Iyul+1
07 Iyul0
06 Iyul0
05 Iyul0
04 Iyul0
03 Iyul0
02 Iyul+1
01 Iyul+1
Kanal postlari
Но что же такое коды Хэмминга? Истоки коррекции ошибок. ♻️ Сделай репост, чтобы помочь другим. 📲 Мы в MAX 👉 @itmozg

2
Антипаттерн: "Сначала MVP - потом нормальная схема" Частая ошибка при старте проекта - отложить продумывание структуры базы «на потом»: «Сейчас сделаем быстро MVP, а потом приведём БД в порядок». И вот что часто происходит: – MVP превращается в продакшн без переработки схемы. – Костыли начинают множиться. – Появляется технический долг, который сложно погасить: миграции становятся болью, связи - запутанными, а данные - ненадёжными. Типичные симптомы: — nullable-поля без нужды — дублирование данных — универсальные таблицы вроде entities или attributes — "магические" значения в enum-полях — отсутствие внешних ключей и индексов Как избежать: 1. Минимум нормализации - с самого начала. Даже для MVP важно заложить понятную структуру. 2. Используй миграции сразу. Даже если это скрипт в папке migrations/, а не полноценный tool. 3. Заведи ER-диаграмму. Она не обязана быть идеальной, но уже поможет избежать хаоса. 4. Смотри в будущее. Планируешь рост? Подумай о расширяемости схемы. 5. Не стесняйся рефакторить. Лучше на раннем этапе изменить структуру, чем через год бояться сломать прод. 👉 MVP не должен значить "без архитектуры". Плохая схема - это замедление развития и боль на каждый новый фичереквест. ♻️ Сделай репост, чтобы помочь другим. 📲 Мы в MAX 👉 @itmozg
97
3
Пишем отладчик для 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
111
4
💡 Топ-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
114
5
🚀 Как улучшить производительность API? Оптимизация API — ключ к быстрой и стабильной работе приложений. Вот 5 проверенных те
🚀 Как улучшить производительность API? Оптимизация API — ключ к быстрой и стабильной работе приложений. Вот 5 проверенных техник: 1️⃣ Пагинация (Pagination) Разбиваем большой объем данных на страницы. 🔹 Уменьшает нагрузку 🔹 Позволяет обрабатывать большие выборки 2️⃣ Асинхронное логирование (Async Logging) Сохраняем логи в буфер, а затем на диск. 🔹 Меньше задержек 🔹 Выше пропускная способность 3️⃣ Кэширование (Caching) Часто используемые данные храним в кэше, а не в БД. 🔹 Быстрый доступ 🔹 Меньше запросов к базе данных 4️⃣ Сжатие данных (Payload Compression) Сжимаем запросы и ответы. 🔹 Уменьшение объема трафика 🔹 Быстрая загрузка/выгрузка 5️⃣ Пул соединений (Connection Pool) Повторно используем открытые соединения с БД. 🔹 Снижение накладных расходов 🔹 Повышение эффективности 📌 Используй эти подходы, чтобы ускорить свой API и улучшить пользовательский опыт. ♻️ Сделай репост, чтобы помочь другим. 📲 Мы в MAX 👉 @itmozg
144
6
В чём разница между аутентификацией на сессиях и 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
176
7
Работодатели давно играют в волков. Просто теперь соискатели научились отвечать Сейчас много говорят о «соискателях-волках». Это кандидаты, которые приукрашивают опыт, одновременно работают в нескольких компаниях, регулярно ходят по собеседованиям, принимают оффер и продолжают искать условия получше. Они легко увольняются, не испытывают особой преданности работодателю и рассматривают компанию прежде всего как источник дохода. О них пишут статьи, снимают видео и предупреждают HR-специалистов. Нам объясняют, что так нельзя, что это разрушает доверие и что хорошие трудовые отношения должны строиться на честности. Мысль разумная. Только есть небольшая проблема: работодатели начали играть в эту игру гораздо раньше. https://habr.com/ru/articles/1054232/ ♻️ Сделай репост, чтобы помочь другим. 📲 Мы в MAX 👉 @itmozg
199
8
Как работает Git? Для начала важно понять, где хранится наш код. Обычно предполагается, что существует только два места: удал
Как работает Git? Для начала важно понять, где хранится наш код. Обычно предполагается, что существует только два места: удалённый сервер (например, GitHub) и локальный компьютер. Однако это не совсем так. Git использует три локальных хранилища на нашем компьютере, а значит, наш код может находиться в четырёх местах: • Рабочая директория (Working directory): место, где мы редактируем файлы. • Область подготовки (Staging area): временное место, где файлы находятся перед коммитом. • Локальный репозиторий (Local repository): содержит закоммиченный код. • Удалённый репозиторий (Remote repository): сервер, где хранится код (например, GitHub). Большинство команд Git в основном перемещают файлы между этими четырьмя локациями. Теперь вопрос к тебе: знаешь ли ты, с каким хранилищем работает команда git tag? Эта команда позволяет добавлять аннотации к коммиту. ♻️ Сделай репост, чтобы помочь другим. 📲 Мы в MAX 👉 @itmozg
198
9
🚀 Регулярные выражения (RegEx) в Linux: Полная шпаргалка Сохраняйте в избранное, чтобы всегда было под рукой при работе с gr
🚀 Регулярные выражения (RegEx) в Linux: Полная шпаргалка Сохраняйте в избранное, чтобы всегда было под рукой при работе с grep, sed, awk или при написании Bash-скриптов! 📌 🧩 Базовые символы (Matching Characters) • . — Любой символ (кроме переноса строки) • \w — Буквенно-цифровой символ + подчеркивание • \W — Любой НЕ буквенно-цифровой символ • \d — Любая цифра (0-9) • \D — Любой символ, кроме цифры • \s — Пробельный символ (пробел, таб, перенос) • \S — Непробельный символ ⚓️ Якоря (Anchors) • ^ — Начало строки • $ — Конец строки • \b — Граница слова • \B — Не граница слова 🧮 Квантификаторы (Quantifiers) • * — 0 или более вхождений • + — 1 или более вхождений • ? — 0 или 1 вхождение • {n} — Ровно n вхождений • {n,} — n или более вхождений 👻 Жадные vs Ленивые (Greedy vs Lazy) • * — Жадный (захватывает как можно больше символов) • *? — Ленивый (захватывает как можно меньше символов) • +?, ??, {n}? — Ленивые версии остальных квантификаторов 🗂 Классы символов (Character Classes) • [abc] — Любой символ из списка: a, b или c • [^abc] — Любой символ, КРОМЕ a, b или c • [a-z] — Любая буква в диапазоне от a до z • [0-9] — Любая цифра от 0 до 9 📦 Группы и Диапазоны (Groups and Ranges) • (abc) — Захватывающая группа (сохраняет совпадение) • (?:abc) — Незахватывающая группа (ищет, но не сохраняет) • | — Логическое ИЛИ (например, cat|dog) • \1, \2, \3 — Ссылки на 1-ю, 2-ю, 3-ю захваченные группы 🚩 Флаги / Модификаторы (Flags) • g — Глобальный (ищет все совпадения, а не только первое) • i — Игнорировать регистр (A = a) • m — Многострочный (^ и $ работают для каждой строки текста) • s — Dotall (позволяет точке . совпадать с переносами строк) • x — Extended (позволяет использовать пробелы и комментарии в самом RegEx) 🛡 Экранирование (Escaping) • \ — Используется для экранирования спецсимволов, чтобы искать их буквально. • Символы, которые нужно экранировать: [ \ ^ $ . | ? * + ( ) { } 👀 Опережающие и ретроспективные проверки (Lookarounds) • (?=abc) — Позитивный lookahead (совпадает, если дальше идет abc) • (?!abc) — Негативный lookahead (совпадает, если дальше НЕ идет abc) • (?<=abc) — Позитивный lookbehind (совпадает, если перед ним идет abc) 🌐 Свойства Unicode (работают с флагом u) • \p{L} — Любая буква из любого языка • \p{N} — Любой числовой символ • \p{Sc} — Любой символ валюты ♻️ Сделай репост, чтобы помочь другим. 📲 Мы в MAX 👉 @itmozg
180
10
🌦 Weathr - погода прямо в терминале Если ты живёшь в консоли, то это маст-хэв: weathr рисует живую погоду в виде ASCII-анима
🌦 Weathr - погода прямо в терминале Если ты живёшь в консоли, то это маст-хэв: weathr рисует живую погоду в виде ASCII-анимаций - дождь, снег, грозы, смена дня/ночи и даже пролетающие самолётики. Данные тянет из Open-Meteo. Что умеет: 🔴realtime-погода + атмосферные ASCII-анимации 🔴автоопределение локации (по IP) или ручные координаты в конфиге 🔴гибкие единицы измерения (metric/imperial) 🔴режим симуляции погоды для теста (--simulate rain/snow/thunderstorm/...) Установка (самый простой вариант): cargo install weathr Про приватность: авто-локация делает запрос к ipinfo.io, но это опционально - можно отключить и указать координаты вручную. ⭐️ Репозиторий: GitHub https://github.com/Veirt/weathr ♻️ Сделай репост, чтобы помочь другим. 📲 Мы в MAX 👉 @itmozg
191
11
Как избежать выгорания программисту 🔥👨‍💻 Выгорание – частая “болезнь” айтишников: дедлайны давят, код не сходится, а в голове постоянно мысли о задачах. Чтобы не оказаться “выгоревшим” через пару месяцев интенсивной работы, обратите внимание на эти практики: 1. Распознавайте первые признаки 🔹Хроническая усталость, даже после полноценного сна 🔹Потеря интереса к проектам, раньше приятным казавшимся 🔹Снижение концентрации и продуктивности 🔹Раздражительность, нервозность без видимых причин Если вы заметили хотя бы пару пунктов – пора действовать заранее. 2. Организуйте рабочий процесс 🔹Чёткое планирование: разбейте крупные задачи на маленькие шаги. Каждодневный список дел (to-do) поможет “не тонуть” в мелочах. 🔹Техника Pomodoro: 25 минут работы + 5 минут отдыха. После 4 циклов — длинный перерыв 15–20 минут. Такой ритм позволяет сохранять свежесть мыслей. 🔹Ограничьте время “погружения”: не сидите за кодом по 12 часов подряд. Оптимальная рабочая смена для программиста – 6–8 часов с регулярными паузами. 3. Выделяйте время на восстановление 🔹Физическая активность: хотя бы 30 минут в день. Прогулка, лёгкая пробежка, упражнения на растяжку между задачами улучшают кровообращение и снимают напряжение. 🔹Сон и режим: ложитесь и вставайте в одно и то же время, даже в выходные. Качественный ночной сон (7–8 часов) – залог продуктивности и хорошего настроения. 🔹Цифровой детокс: вечером полностью отвяжитесь от гаджетов, чтобы мозг успел “отключиться” от задач. Ограничьте соцсети и мессенджеры минимум за час до сна. 4. Умейте сказать “нет” 🔹Реалистичные дедлайны: если видите, что не успеваете, обсудите с менеджером или заказчиком перенос. Лучше честно признаться, чем до последней минуты “ломать” себя. 🔹Не берите задачу сверх возможностей: если проект слишком сложный или сроки нереальны, предложите альтернативный подход или помощь коллег. 5. Баланс между “я” и “кодом” 🔹Хобби вне IT: найдите увлечение, не связанное с технологией — музыка, рисование, спорт, настольные игры. Это переключит мозг и наполнит энергией. 🔹Кружки и сообщества: общайтесь с теми, кто разделяет ваши интересы: книжные клубы, клубы настольных игр, спортивные секции. Социальная поддержка помогает “не застрять” только в рабочих задачах. 6. Периодические “мини-отпуска” 🔹Отпуск хотя бы раз в полгода: даже короткая поездка на уик-энд без работы способна “перезагрузить” голову. 🔹Регулярные выходные без диагоналки: не проверяйте почту, не отвечайте на рабочие сообщения. Дайте себе реально отдохнуть. 7. Постоянное обучение – но без перегрузок 🔹Учитесь постепенно: вместо марафонов видеокурсов лучше 30 минут в день. Так новые знания встраиваются в мозг легче и без стресса. 🔹Не гонитесь за всеми трендами: выбирайте то, что важно именно для ваших проектов и целей, а не всё подряд. 8. Работайте в команде и делегируйте 🔹Парное программирование (pair programming): совместная работа помогает находить ошибки быстрее и снижает психологическую нагрузку. 🔹Помощь коллег: если застряли, не мучайтесь в одиночку – попросите совета. Иногда взгляд со стороны решает проблему за пару минут. 9. Осознанность и простые практики 🔹Медитация или дыхательные упражнения (5–10 минут утром/вечером). Помогают снизить уровень тревожности. 🔹Ведение дневника: записывайте мысли и идеи, избавляясь от “ментального шума”. Это упорядочивает внутреннее состояние. 10. Регулярно оценивайте свой “уровень выгорания” 🔹Раз в месяц задавайте себе вопросы: “Насколько я воодушевлён проектом?”, “Что вызывает раздражение?”, “Когда в последний раз я отдыхал без мыслей о работе?” 🔹Если градус недовольства растёт – сразу включайте превентивные меры: пора добавить отдыха, сменить активность или обратиться к ментору/психологу. ♻️ Сделай репост, чтобы помочь другим. 📲 Мы в MAX 👉 @itmozg
167
12
🔍 Мини-гайд: Индексы в PostgreSQL 1. Зачем нужны индексы? ▪️ Ускоряют SELECT, JOIN, ORDER BY, GROUP BY. ▪️Снижают нагрузку п
🔍 Мини-гайд: Индексы в PostgreSQL 1. Зачем нужны индексы? ▪️ Ускоряют SELECT, JOIN, ORDER BY, GROUP BY. ▪️Снижают нагрузку при выборках без полного сканирования таблицы. 2. Типы индексов ▪️B-tree (по умолчанию): точный поиск (=), диапазоны (<, >), сортировки. CREATE INDEX idx_users_email ON users(email); ▪️Hash: для точного сравнения, но используется редко. ▪️GIN: массивы и полнотекстовый поиск. CREATE INDEX idx_docs_content ON documents USING GIN(to_tsvector('russian', content)); ▪️GiST: геоданные (PostGIS), диапазоны (int4range, tsrange). ▪️BRIN: очень большие таблицы, где данные «почти упорядочены» (по дате). CREATE INDEX idx_logs_created_at ON logs USING BRIN(created_at); 3. Практические советы ▪️Оценивайте запросы через EXPLAIN ANALYZE или pg_stat_statements. ▪️Не создавайте индекс «про запас»: каждый замедляет INSERT/UPDATE/DELETE. ▪️Составные индексы: порядок колонок критичен. CREATE INDEX idx_users_city_age ON users(city, age); ▪️Избегайте низкокардинальных колонок (boolean, ENUM) — индекс неэффективен, если фильтр возвращает большинство строк. ▪️Актуализируйте статистику: запускайте ANALYZE после больших загрузок/удалений. ▪️Удаляйте устаревшие индексы: DROP INDEX IF EXISTS idx_old_column; ▪️Используйте REINDEX для устранения фрагментации: REINDEX INDEX idx_users_email; 4. Подводные камни ▪️Бесполезный индекс: если WHERE возвращает ≥90% строк (например, is_active = true при 99% активных). ▪️Функциональные индексы: CREATE INDEX ON table ((LOWER(name))) сработает только при точном вызове WHERE LOWER(name) = 'ivan'. ▪️Блокировки: для создания без блокировки пишите: CREATE INDEX CONCURRENTLY idx_orders_status ON orders(status); Но этот процесс дольше и требует больше места. ▪️Индексы на внешних ключах: без них при удалении/обновлении родительской записи будут долгие сканы. Итог: Индексы — мощный инструмент, если их грамотно использовать. Анализируйте планы запросов, не создавайте лишних, следите за статистикой и удаляйте устаревшие. Сохрани, чтобы не забыть, и поделись с коллегами. А как ты выбираешь индексы у себя? Пиши в комментариях! ♻️ Сделай репост, чтобы помочь другим. 📲 Мы в MAX 👉 @itmozg
138
13
Архитектура Docker состоит из трех основных компонентов 🔹 Клиент Docker Это интерфейс, через который осуществляется взаимоде
Архитектура Docker состоит из трех основных компонентов 🔹 Клиент Docker Это интерфейс, через который осуществляется взаимодействие с пользователями. Он взаимодействует с демоном Docker. 🔹 Docker Host Здесь демон Docker принимает запросы Docker API и управляет различными объектами Docker, включая образы, контейнеры, сети и тома. 🔹 Реестр Docker Здесь хранятся образы Docker. Например, широко используется публичный реестр Docker Hub. ♻️ Сделай репост, чтобы помочь другим. 📲 Мы в MAX 👉 @itmozg
186
14
🚀 Подборка полезных 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 Типичный Сисадмин Excel лайфхак 📌 https://t.me/Excel_lifehack Excel лайфхак Английский с нуля 🇬🇧 https://max.ru/UchuEnglish 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 Свежие новости Москвы https://max.ru/piterspb Питер Новости: Санкт-Петербург / СПБ / ДТП
165
15
🧱 Пишем Тетрис на C++: Идеальный старт для новичка Написание Тетриса это своеобразный обряд посвящения для любого игрового р
🧱 Пишем Тетрис на C++: Идеальный старт для новичка Написание Тетриса это своеобразный обряд посвящения для любого игрового разработчика. Это лучший способ понять, как работать с массивами, игровым циклом и таймингами, не отвлекаясь на сложные движки. Нашли для вас легендарный туториал от Javi Lopez. ✅ Акцент на логике: Автор учит думать структурами данных, а не пикселями. ✅ Платформонезависимость: Код пишется на чистом C++. Его можно запустить хоть на Windows, хоть на Linux, хоть на тостере (почти). ✅ Чистый код: Отличный пример того, как отделять игровую логику от рендеринга. Внутри разбирается всё: от хранения фигур (тетромино) в памяти до реализации сгорания линий. 🔗 Читать туториал: https://javilop.com/gamedev/tetris-tutorial-in-c-platform-independent-focused-in-game-logic-for-beginners/ ♻️ Сделай репост, чтобы помочь другим. 📲 Мы в MAX 👉 @itmozg
196
16
5 малоизвестных Git-приёмов, которые спасут вашу жизнь 1️⃣ git reflog — история всех ваших шагов Не только коммиты, но и переключения веток, сбросы и прочие «хаки»: git reflog # вернёт список всех HEAD-перемещений git checkout HEAD@{3} # вернёт вас на три шага назад 2️⃣ git rerere — повторное разрешение конфликтов Если в одной и той же точке вы часто сталкиваетесь с конфликтами, включите rerere: git config --global rerere.enabled true # при повторном конфликте Git запомнит ваше решение 3️⃣ git bisect — автоматический поиск «битого» коммита Когда баг появился неясно где, let Git do the detective work: git bisect start git bisect bad # текущая версия с багом git bisect good v1.0 # последний рабочий тег # Git сам предложит вам протестировать промежуточные коммиты 4️⃣ git stash push -m — храни временные изменения с заметкой Чтобы не забыть, зачем вы сохраняете рабочие правки: git stash push -m "WIP: эксперимент с OAuth" git stash list # будет видно вашу подпись 5️⃣ git worktree — несколько рабочих копий одного репозитория Для одновременной работы над фичами и багфиксами без переключений: git worktree add ../my-feature-branch feature/X cd ../my-feature-branch # у вас рядом две папки: main и my-feature-branch 🔥 Попробуйте эти трюки уже сегодня и забудьте про потерянный код и бесконечные конфликты! ♻️ Сделай репост, чтобы помочь другим. 📲 Мы в MAX 👉 @itmozg
174
17
Пишем собственную виртуальную машину В этом руководстве я научу вас, как написать собственную виртуальную машину (VM), котора
Пишем собственную виртуальную машину В этом руководстве я научу вас, как написать собственную виртуальную машину (VM), которая сможет выполнять программы на языке ассемблера, такие как игра моего друга "2048" или мой Roguelike. Если вы умеете программировать, но хотите лучше понять, что происходит внутри компьютера, и глубже разобраться, как работают языки программирования, то этот проект для вас. Написание собственной виртуальной машины может показаться сложной задачей, но я обещаю, что вы найдете это удивительно простым и познавательным. Конечный код занимает около 250 строк на C (unix, windows). Все, что вам нужно знать, — это как читать базовый C или C++ и выполнять двоичную арифметику. https://justinmeiners.github.io/lc3-vm/ ♻️ Сделай репост, чтобы помочь другим. 📲 Мы в MAX 👉 @itmozg
199
18
Паттерн Saga автор: roadofbugs ♻️ Сделай репост, чтобы помочь другим. 📲 Мы в MAX 👉 @itmozg
Паттерн Saga автор: roadofbugs ♻️ Сделай репост, чтобы помочь другим. 📲 Мы в MAX 👉 @itmozg
202
19
Привет, друзья! 👋 Сегодня разбираем одну из самых важных тем для любого инженера и разработчика - Big O Notation (О-большое)
Привет, друзья! 👋 Сегодня разбираем одну из самых важных тем для любого инженера и разработчика - Big O Notation (О-большое). Если вы готовитесь к алгоритмическим собеседованиям или просто хотите писать более быстрый и оптимальный код, эта шпаргалка обязательно должна быть под рукой. ⏱ Шпаргалка по алгоритмической сложности Разберем, как растет время выполнения от самых быстрых алгоритмов к самым ресурсоемким: • O(1) - Константное время: Время выполнения не меняется при увеличении данных. Пример: Доступ к элементу массива по индексу или вставка в хеш-таблицу. • O(log n) - Логарифмическое время: Растет логарифмически при увеличении данных. Пример: Бинарный поиск или операции в сбалансированных деревьях. • O(sqrt(n)) - Корневое время: Растет пропорционально квадратному корню размера данных. Пример: Поиск простых чисел в диапазоне (Решето Эратосфена). • O(n) - Линейное время: Растет прямо пропорционально объему данных. Пример: Поиск минимума или максимума в неотсортированном массиве. • O(n log n) - Линеарифмическое время: Комбинация линейного и логарифмического роста. Пример: Эффективные алгоритмы сортировки (Merge Sort, Quick Sort). • O(n^2) - Квадратичное время: Растет квадратично, часто из-за вложенных циклов. Пример: Простые сортировки (Пузырьком, Выбором). • O(n^3) - Кубическое время: Растет кубически. Пример: Умножение плотных матриц в лоб. • O(2^n) - Экспоненциальное время: Время удваивается с каждым новым элементом данных. Пример: Рекурсивное решение задачи коммивояжера. • O(n!) - Факториальное время: Растет факториально, то есть невероятно быстро. Пример: Задачи на генерацию всех возможных перестановок. 💡На практике алгоритмы со сложностью от O(1) до O(n log n) считаются эффективными. Если ваш код работает за O(n^2) или хуже - это повод задуматься об оптимизации (исключение составляют случаи, когда объем данных гарантированно мал). ♻️ Сделай репост, чтобы помочь другим. 📲 Мы в MAX 👉 @itmozg
181
20
📌3 частых ситуации с Git и как их разрулить 🔁 1. Случайно закоммитил не то и хочу откатиться Ситуация: сделал коммит, понял, что рано. Решение: git reset --soft HEAD~1 ✅ Убирает последний коммит, но оставляет изменения в staged — можно поправить и снова закоммитить. 💥 2. Запушил коммит с багом, нужно отменить на сервере Ситуация: баг ушёл в main, надо быстро отменить. Решение: git revert <hash> ✅ Создаёт новый коммит, который отменяет изменения указанного. Без force-push, удобно в команде. 🕵️ 3. Нужно достать файл из старого коммита, но не откатывать всё Ситуация: удалили/изменили важный файл, а он был раньше. Решение: git checkout <commit_hash> -- путь/к/файлу ✅ Извлекает конкретный файл без изменения текущей ветки. Можно сохранить, сравнить, закоммитить. 📌 Все три команды — незаменимые штуки в повседневной работе. Можно сохранить себе как Git-аптечку. ♻️ Сделай репост, чтобы помочь другим. 📲 Мы в MAX 👉 @itmozg
198