Computer Science
رفتن به کانال در Telegram
По всем вопросам: @altmainf Уважаемый менеджер: @altaiface
نمایش بیشتر7 933
مشترکین
اطلاعاتی وجود ندارد24 ساعت
-67 روز
-2730 روز
آرشیو پست ها
7 933
Злоумышленники усложняют фишинг, объем утечек растет
Фишинг стал сложнее, а утечки данных — масштабнее. Готова ли ваша ИБ-команда к новым вызовам?
3 марта эксперты «Солара» проведут ежегодный вебинар «Тренды информационной безопасности 2026: аналитика, кейсы, прогнозы от Solar JSOC».
Покажем аналитику и разберем:
- Как изменился ландшафт киберугроз в 2025 году для разных отраслей и чего ждать в 2026.
- Какие внешние угрозы стали ключевыми и как им противостоять.
- Как TI-фиды повышают эффективность SOC — рассмотрим реальные кейсы.
Регистрируйтесь и получите инсайты для комплексной защиты бизнеса.
Зарегистрироваться
#реклама 16+
rt-solar.ru
О рекламодателе
7 933
Инструменты для управления политиками безопасности
Эти инструменты помогают контролировать соблюдение политик безопасности в процессе разработки и эксплуатации.
• OPA (Open Policy Agent): Открытый агент для управления политиками, который можно интегрировать в разные этапы DevOps-пайплайнов.
• Kubernetes RBAC: Управление доступом на основе ролей (Role-Based Access Control) в Kubernetes для контроля безопасности.
Эти инструменты ([1], [2], [3], [4], [5], [6], [7], [8], [9]), в сочетании с процессами DevOps и практиками безопасности, помогают создавать безопасные и надежные программные решения, снижая риски и улучшая общую безопасность на всех этапах разработки и эксплуатации.
7 933
Таблица разделов
Таблица разделов — часть главной загрузочной записи (
MBR), состоящая из четырёх записей по 16 байт. Каждая запись описывает один из разделов жёсткого диска. Первая запись находится по смещению 1BEh от начала сектора, содержащего MBR, каждая последующая запись вплотную примыкает к предыдущей.
Для создания на диске более 4 разделов используются расширенные разделы, позволяющие создать неограниченное количество логических дисков внутри себя.
Адреса начала и конца раздела задаются в формате CHS, используемом традиционными функциями дискового сервиса BIOS, из-за чего номер цилиндра разорван на две части: старшие два бита хранятся в двух старших битах слова, отведённого под номера цилиндра и сектора; за ними следуют шесть бит номера сектора, а младшие восемь бит номера цилиндра занимают весь младший байт слова. Если задать корректный адрес с помощью формата CHS невозможно, все три байта полей начала и конца раздела должны содержать FFh7 933
Хеширование, коллизии и деградация
Хеш-таблицы зависят от:
• качества хеш-функции
• стратегии разрешения коллизий
• коэффициента заполнения
Открытая адресация страдает от кластеризации, цепочки — от неравномерного распределения.
Пример:
При нагрузке > 0.75 среднее число проб резко растёт.
Рехеширование — операция O(n) и может стать латентным пиком в продакшене, если не контролировать рост.
Реальность:
O(1) — это статистическое обещание, а не гарантия.7 933
Стоимость операций: CPU, кэш и память
Асимптотическая сложность не отражает реальную стоимость операций.
Современный процессор выполняет инструкции за наносекунды, но доступ к:
• L1 кэшу — ~1–4 такта
• L3 — десятки тактов
• RAM — сотни тактов
Алгоритмы с линейным проходом по памяти часто выигрывают у «умных» алгоритмов со случайным доступом.
Пример:
Поиск минимума в массиве —
O(n) — почти всегда быстрее бинарного поиска в несмежных структурах, несмотря на худшую формальную сложность.
Причина — предвыборка и кэш-линейность.7 933
Теория формальных языков изучает структуры и свойства языков, описанных формальными системами.
Основные аспекты:
1, Грамматики: Формальные правила, которые определяют синтаксис языка. Основные типы:
- Контекстно-свободные грамматики (КС-грамматики): Определяют синтаксис языков, которые можно описать с помощью синтаксических деревьев (например, язык программирования C).
- Контекстно-зависимые грамматики: Более мощные и сложные, позволяют описывать языки с контекстуальными зависимостями (например, естественные языки).
2. Автоматы: Математические модели для описания и распознавания языков.
- Конечные автоматы: Описание языков с помощью простых состояний и переходов (например, регулярные языки).
- Стековые автоматы: Модели с использованием стека, применимые к контекстно-свободным языкам.
3. Языки:
- Регулярные языки: Определяются регулярными выражениями и распознаются конечными автоматами.
- Контекстно-свободные языки: Определяются контекстно-свободными грамматиками и распознаются стековыми автоматами.
- Контекстно-зависимые языки: Определяются контекстно-зависимыми грамматиками и распознаются более мощными машинами.
4. Классы языков: Иерархия языков в зависимости от сложности грамматик и автоматов, таких как регулярные, контекстно-свободные, контекстно-зависимые и рекурсивно перечисляемые языки.
5. Операции над языками: Способы объединения, пересечения, дополнения и другие операции для работы с языками.
7 933
Обработка артефактов сканирований. Сканирование запустили — а что дальше
Запустить security-сканер — лишь половина дела. Гораздо сложнее превратить результаты сканирования в рабочий процесс, который действительно приводит к исправлению уязвимостей, а не к накоплению отчётов «на складе».
На открытом уроке разберём, как выстраивать работу с артефактами сканирований в GitLab CI/CD. Поговорим о хранении результатов, передаче их разработчикам и настройке security gates, которые автоматически влияют на сборку и релиз. Обсудим, как встроить безопасность в пайплайн так, чтобы она работала системно и не превращалась в формальность.
Урок будет полезен DevSecOps и AppSec-специалистам, DevOps/SRE-инженерам и тимлидам, которые хотят наладить управляемый поток обработки результатов security-сканирований.
→ Вебинар проходит в формате открытого урока курса «Внедрение и работа в DevSecOps»: https://otus.pw/aZCg/
Реклама. ООО «Отус онлайн‑образование», ОГРН 1177746618576
7 933
Формальная верификация уже спасает миллиарды
Amazon доказал корректность частей S3 и DynamoDB с помощью TLA+. Microsoft верифицирует гипервизор в Dafny.
Простейший пример в PlusCal (транслируется в TLA+):
(*--algorithm mutex
variables flag = [i \in {1,2} |-> FALSE];
process proc \in {1,2}
begin
A: flag[self] := TRUE;
B: await flag[3-self] = FALSE;
C: skip; (* critical section *)
D: flag[self] := FALSE;
E: goto A;
end process;
end algorithm;*)
Этот алгоритм НЕ корректный (возможен deadlock). TLC (model checker) найдёт ошибку за секунды.
Начать легко: установите Toolbox, попробуйте на простых примерах mutual exclusion.7 933
Хэш-функции везде, где не ждёшь
Кроме таблиц, хэши используют:
• LSH для поиска похожих векторов
• MinHash для сравнения геномов и документов
• Merkle trees в Git и блокчейнах
Быстрая не крипто хэш-функция — xxHash. Установка:
pip install xxhash
import xxhash
data = b"очень длинная строка или большой файл"
hash_value = xxhash.xxh64(data).digest()
print(hash_value.hex())
# Для стриминга больших данных
h = xxhash.xxh64()
with open("big_file.bin", "rb") as f:
for chunk in iter(lambda: f.read(4096), b""):
h.update(chunk)
print(h.digest().hex())
Быстрее MurmurHash, коллизий почти нет. Отлично для кэшей и bloom-фильтров.7 933
Hyper-V часто стоит рядом, но у многих остаётся туманом. В итоге виртуалки создаются наугад, сети работают странно, диски растут как попало, а тестовый контур превращается в лотерею.
На открытом уроке вы разберёте базу Hyper-V. Установка и первичная настройка роли, создание виртуальной машины, работа с виртуальными дисками и виртуальными сетями, типовые сценарии применения в инфраструктуре.
→ Записаться на открытый урок курса «Администратор Windows»: https://otus.pw/mc7m/
Реклама. ООО «Отус онлайн‑образование», ОГРН 1177746618576
7 933
Нейронные сети и мозг: больше различий, чем сходства
Многие думают, что нейросети копируют мозг. На деле:
• биологические нейроны — аналоговые, асинхронные, с химическими сигналами
• backpropagation в мозге не обнаружен
• мозг использует крайне разреженное кодирование и тратит ~20 Вт
Различия помогают: спайковые сети и neuromorphic чипы вроде Intel Loihi уже эффективнее обычных NN на edge-устройствах.
ИИ не повторяет биологию, а идёт своим путём — и это хорошо.
7 933
Подписи Лампорта — криптография без «магии»
RSA и ECDSA держатся на сложности факторизации. А подписи Лампорта — только на хэш-функциях (например, SHA-256). Они post-quantum по умолчанию.
Минимальная реализация на Python:
import os
import hashlib
def generate_key():
private_key = [os.urandom(32) for _ in range(256 * 2)]
public_key = [hashlib.sha256(x).digest() for x in private_key]
return private_key, public_key
def sign(message, private_key):
h = hashlib.sha256(message).digest()
signature = []
for i in range(256):
bit = (h[i // 8] >> (i % 8)) & 1
signature.append(private_key[i + bit * 256])
return signature
def verify(message, signature, public_key):
h = hashlib.sha256(message).digest()
for i in range(256):
bit = (h[i // 8] >> (i % 8)) & 1
computed = hashlib.sha256(signature[i]).digest()
if computed != public_key[i + bit * 256]:
return False
return True
# Пример использования
priv, pub = generate_key()
msg = b"Hello, Lamport!"
sig = sign(msg, priv)
print(verify(msg, sig, pub)) # True
Ключи огромные, но принцип работает. Для реального использования берите SPHINCS+.7 933
VDI нужен там, где важно быстро выдавать рабочие места, держать доступ под контролем и не превращать поддержку пользователей в бесконечный хаос. Если удалёнка, филиалы или много однотипных рабочих мест, VDI экономит недели администрирования.
На открытом уроке разберёте архитектуру VDI на базе Microsoft RDS, полный цикл развертывания и настройку удалённого доступа. Без абстракций, с понятной схемой, что и зачем поднимается.
→ Записаться на открытый урок курса «Администратор Windows»: https://otus.pw/pgOI/
Реклама. ООО «Отус онлайн‑образование», ОГРН 1177746618576
7 933
Генеративное искусство через алгоритмы
Perlin noise, клеточные автоматы, L-системы — основа не только процедурной генерации в играх, но и современного цифрового искусства.
Простейший пример на p5.js (запустите в браузере на editor.p5js.org):
function setup() {
createCanvas(800, 800);
noiseDetail(4, 0.5);
}
function draw() {
background(0);
for (let x = 0; x < width; x += 10) {
for (let y = 0; y < height; y += 10) {
let n = noise(x * 0.01, y * 0.01, frameCount * 0.01);
let brightness = map(n, 0, 1, 0, 255);
fill(brightness, brightness * 0.8, 255);
noStroke();
ellipse(x, y, 15);
}
}
}
Получается плавно меняющийся облачный паттерн. Поиграйтесь с параметрами — баланс энтропии решает всё.7 933
Сколько электричества жрёт ваш код
На больших масштабах разница ощутимая. Сортировка миллиона элементов пузырьком может съесть в разы больше энергии, чем Timsort. В дата-центрах уже давно оптимизируют под это — иногда простая смена структуры данных экономит 30–50%.
Простой способ замерить самому — библиотека codecarbon.
from codecarbon import EmissionsTracker
import random
tracker = EmissionsTracker()
tracker.start()
# Пример "прожорливого" кода
data = [random.randint(0, 1000) for _ in range(1_000_000)]
data.sort() # Timsort — эффективно
# А вот пузырёк (не запускайте на миллионе, убьёт время)
def bubble_sort(arr):
n = len(arr)
for i in range(n):
for j in range(0, n-i-1):
if arr[j] > arr[j+1]:
arr[j], arr[j+1] = arr[j+1], arr[j]
# bubble_sort(data[:100_000]) # попробуйте на меньшем
emissions = tracker.stop()
print(f"Выбросы CO₂: {emissions:.6f} кг")
Попробуйте сравнить разные сортировки — разница удивит. В 2026 году это уже не прихоть, а реальная экономия.7 933
«Feature flags: как выкатывать фичи без страха сломать прод»
Feature flag — переключатель в коде/конфиге, который включает/выключает новую фичу.
Практика:
• Выкатываете код с новой оплатой Apple Pay, но flag = off.
• Включаете для 1% пользователей → мониторите → для всех.
• Если баг — выключаете за секунду, без отката.
Инструменты 2025: LaunchDarkly, Unleash, Flagsmith, даже простая таблица в БД.
Кейс: Netflix, Facebook, GitLab — всё на флагах. В 2024 году одна компания откатила баг за 30 секунд благодаря флагу, а не за час деплоем.
Вывод: если проект больше «hello world» — внедряйте feature flags. Это стандарт современной разработки.
7 933
«False sharing: почему ваш многопоточный код тормозит в 10 раз»
На современных CPU данные в памяти кэшируются по линиям кэша (обычно 64 байта).
Если два потока пишут в разные переменные, но они лежат в одной линии кэша — CPU вынужден инвалидировать кэш у обоих потоков при каждой записи.
Это false sharing — производительность падает в десятки раз, хотя гонок данных нет.
Практика:
• В Java: объявляйте счётчики как volatile long отдельно и паддите до 64 байт (или используйте
@Contended).
• В Go/Rust: следите за выравниванием структур.
• В 2025 году это всё ещё актуально на серверах с 128+ ядрами.
Как найти: perf c2c, Intel VTune или просто подумайте, когда многопоточка не даёт speedup.
Вывод: профилируйте не только логику, но и железо.7 933
«Почему ваш сервер может думать, что сейчас 1970 год (и сломать всё)»
В распределённых системах время — это проблема. NTP синхронизирует часы, но даже 100 мс расхождения могут сломать логику.
Реальные кейсы:
• Токены JWT истекают «раньше времени» на одном сервере.
• Логи в ELK/Kibana идут не по порядку — ищешь баг часами.
• В 2024 году у одной крупной биржи был сбой: один сервер отстал на 2 секунды → ордера исполнялись в неправильном порядке.
Практика:
• Используйте monotonic clock для измерения интервалов.
• Для распределённых транзакций — logical clocks (Lamport timestamps) или Google TrueTime/Spanner-подход.
• В Kubernetes включайте NTP + chrony.
Вывод: никогда не полагайтесь на
System.currentTimeMillis() для критичной логики.7 933
«Почему антивирус никогда не поймает 100% вирусов»
Теорема Райса (1953): нельзя написать программу, которая для любого кода точно скажет, делает ли он что-то «плохое» (вирус, бесконечный цикл, вывод определённой строки и т.д.).
Практические последствия:
• Антивирусы работают по сигнатурам (ищут известные вирусы) и эвристикам (подозрительное поведение) → всегда будут ложные срабатывания и пропуски.
• Статический анализ кода никогда не будет идеальным — всегда либо пропустит баг, либо поднимет ложную тревогу.
• Автоматическое доказательство корректности программы возможно только для очень простых случаев.
Пишите тесты, код-ревью и не надейтесь, что инструмент найдёт всё за вас. Это фундаментальная граница.
7 933
«Почему в Minecraft можно собрать настоящий рабочий компьютер»
Turing complete — значит, система может выполнять любые вычисления, как обычный процессор.
Практические примеры, которые реально существуют:
• В Minecraft на redstone-схемах собрали процессор, который запускает Doom и даже Tetris.
• Шаблоны в C++ (до C++11) были Turing complete — на этапе компиляции можно было вычислять числа, запускать циклы и даже решать задачки. Программисты писали на этом «код до кода».
• Теоретически в PowerPoint с анимациями и гиперссылками можно закодить простую программу.
Зачем это знать? Понимаешь, что ограничение — не в языке, а в твоей фантазии. И что даже в «игрушках» можно строить настоящие вычислительные машины.
اکنون در دسترس! پژوهش تلگرام ۲۰۲۵ — مهمترین بینشهای سال 
