Эпсилон
8.44K subscribers
334 photos
518 videos
40 files
677 links
▪️Компьютерная безопасность
▪️Программирование
▪️Взломы и уязвимости
▪️Хакинг
▪️Способы заработка в сети
▪️Полезные ссылки и лайфхаки
▪️Игры и GameDev
▪️Компьютерная графика

Чат и обсуждение: @hack_cpp

Связь: @physicist_i
Download Telegram
Media is too big
VIEW IN TELEGRAM
🖥 Как устроена база данных: Кластеры, индексы, схемы, ограничения

База данных устроена с помощью кластеров, индексов, схем и ограничений. Эти понятия связаны с организацией данных, оптимизацией доступа к ним и обеспечением целостности.

▪️ Кластер — это группа из одной или нескольких таблиц, которые физически хранятся вместе. Взаимосвязанные столбцы таблиц в кластере называются кластерным ключом. Цель: сократить количество операций дискового ввода-вывода и улучшить время доступа для соединений таблиц, входящих в кластер.
Особенности:
— Кластеры целесообразно использовать для хранения таблиц, которые часто используются в запросах.
— Использование кластеров замедляет операции добавления, обновления, удаления строк таблицы по сравнению с хранением таблицы вне кластера со своим собственным индексом.

▪️ Индекс — это структура данных, связанная с таблицей и конкретными столбцами в ней. Она содержит копии данных из индексируемых столбцов, отсортированные в определённом порядке, и указатели на фактическое местоположение соответствующих строк в таблице. Цель: ускорить поиск данных, вместо того чтобы сканировать всю таблицу строка за строкой.
Особенности:
— Индексы обычно создаются на тех столбцах таблицы, которые часто используются в запросах.
— Для одной таблицы может быть создано несколько индексов, но увеличение числа индексов замедляет операции добавления, обновления, удаления строк таблицы, поскольку при этом приходится обновлять сами индексы.

▪️Схема базы данных — это логическое представление всей базы данных. Она определяет, как организованы данные и как связаны отношения между ними.
Особенности:
— Схема может существовать в виде наглядного представления базы данных или в виде набора формул, которые регулируют её устройство.
— Выделяют два основных типа схем: логическую и физическую.

▪️Ограничения — это правила, которые накладываются на данные в таблицах. Они определяют условия, которым должны соответствовать данные при вставке, обновлении или удалении полей в таблице.
Примеры ограничений:
— Ограничение первичного ключа — гарантирует, что каждая строка в таблице имеет уникальный идентификатор (например, ID).
— Ограничение уникальности — используется для того, чтобы столбец таблицы содержал только уникальные значения.
— Ограничение проверки — определяет условие, которое должно быть выполнено перед добавлением данных в таблицу.

🔵 Эпсилон // @epsilon_h
Please open Telegram to view this post
VIEW IN TELEGRAM
👍75🔥1👨‍💻1
Центр дополнительного образования «ПРОБОРЫ» 🌐 probory.ru

📚 Набор на новый учебный год!

▪️ Занятия в мини-группах:
▪️ Очные (до 10 человек) — центр Москвы
▪️ Онлайн (до 5 человек)
▪️ Старт занятий: 15 сентября
▪️ Цена: до 1400 руб. / 60 мин.
▪️ Все преподаватели: выпускники МГУ / Физтеха, учителя 444 школы

🎯Групповые занятия:
▫️Подготовка к олимпиадам
▫️Возможность изучения языков с носителем
▫️Проведения занятий с опытами и экспериментами
▫️Подготовка к ЕГЭ/ОГЭ/ДВИ
▫️Для всестороннего развития: "Математика на английском/французском " (для взрослых и детей)
📲 Запись и полный список курсов — на сайте: https://probory.ru/

✉️ Вопросы и запись: @probory_manager
👍53👨‍💻2🔥1😁1
💸 В 2012 году американец Джимми Чжун нашёл уязвимость на маркетплейсе Silk Road и вывел оттуда почти 50 000 BTC.

Тогда это было всего «несколько миллионов», а сегодня сумма оценивается в миллиарды долларов.

Чжун скрывался почти десять лет, пока в 2021-м агенты не нашли у него дома более 50 000 биткоинов, спрятанных в банке с попкорном.

Суд длился до 2023 года — и приговор удивил многих: за крупнейшую криптокражу в истории он получил всего один год и один день тюрьмы.

🔵 Эпсилон // @epsilon_h
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🤔5🔥1👨‍💻1
Media is too big
VIEW IN TELEGRAM
👩‍💻 Docker для Начинающих за 49 Мин

Docker — платформа с открытым исходным кодом для автоматизации разработки, доставки и развёртывания приложений. Основная идея — создание стандартного и предсказуемого окружения, где приложения могут работать независимо от операционной системы или инфраструктуры. Разработка Docker была начата в 2008 году, в 2013 году он был опубликован как свободно распространяемое ПО под лицензией Apache 2.0.

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

Особенности контейнеров:
▪️ легковесные — занимают от десятка до сотен мегабайт, в то время как виртуальная машина требует гигабайтов;
▪️ изолированы друг от друга: падение одного контейнера не затрагивает остальные;
▪️ переносимы — один и тот же образ запустится одинаково на ноутбуке разработчика, тестовом сервере и в продакшн-окружении.

Docker широко применяется в сферах разработки ПО, DevOps и управления IT-инфраструктурой. Примеры использования:
— создание изолированных сред разработки для разных проектов;
— тестирование приложений в изолированных средах;
— управление инфраструктурой, включая серверы, базы данных, кластеры, — путём упаковки и запуска их в контейнерах;
— создание микросервисов, которые могут быть объединены в сложные системы.

Docker доступен для разных операционных систем. Для Windows и macOS доступна установка через Docker Desktop — полноценное приложение, включающее в себя Docker Engine, интерфейс и дополнительные инструменты. На Linux чаще всего используется установка Docker Engine, работающего в фоновом режиме и управляющего контейнерами через командную строку.

🔵 Эпсилон // @epsilon_h
Please open Telegram to view this post
VIEW IN TELEGRAM
9👍2🔥2👨‍💻1
👨🏻‍💻 Как должно выглядеть рабочее место программиста? Поделитесь фотографией вашего рабочего места в комментариях.

🔵 Эпсилон // @epsilon_h
👍73😱2🤣2🔥1👨‍💻1
🖥 20 фрагментов кода, которые вам обязательно нужно знать в программировании на Python

👨🏻‍💻 Есть что добавить? Знаете интересные фичи? Напишите в комментариях.

💡 Интересный факт: Python имеет C- и Java-варианты.

Вариант C известен как CPython. Он дал Python достоинства C — например, производительность, комфорт и шанс компилировать программы на языке C.

Производительная Java-версия Python называется Jython. Язык позволяет импортировать классы Java в Python.

Существуют и другие реализации Пайтона: IronPython, Brython, RubyPython, PyPy, MicroPython.

👩‍💻 Задача для наших подписчиков на понимание наследования в Python: Задача: Что выведет следующий код?
class A:
def process(self):
return 'A'

class B(A):
def process(self):
return 'B'

class C(A, B):
pass

obj = C()
print(obj.process())


📜 Варианты ответов:
⚡️ — 1. А
❤️ — 2. B
👍🏻 — 3. Будет вызвано исключение TypeError
👾 — 4. С

Ответ и объяснение к задаче

🔵 Эпсилон // @epsilon_h
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
12👍52🔥1🏆1👾1
🔍 Регулярные выражения: магия поиска в тексте

Regex — это не просто строка символов, а целый язык для поиска и обработки текста. С их помощью можно находить шаблоны: от простых (e-mail) до сложных (парсинг HTML).

💡 Интересные факты:

1. Возраст: Концепция regex родилась в 1950-х благодаря математику Стивену Клини. А в программировании их популяризовал Кен Томпсон (соавтор Unix).

2. Вездесущность: Regex встроены во многие языки (Python, JavaScript, Java), редакторы (VS Code, Sublime) и даже в командную строку (grep).

3. Сложность: С помощью regex можно проверять не только e-mail, но и, например, простые числа (шаблон для этого огромен и нечитаем!).

🐍 Код на Python (проверка e-mail):
import re

pattern = r'^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$'
email = "example@mail.com"

if re.match(pattern, email):
print("E-mail валиден!")
else:
print("Ошибка!")


⚠️ Предупреждение: Не используйте regex для сложного парсинга HTML/XML — для этого есть специальные инструменты.

Самый известный мем про regex:
/^([0-9]+)([a-z]+)([A-Z]+)([!@#\$%\^&\*\(\)]+)(.{8,})$/

Это регулярное выражение, которое требуют 90% всех форм для пароля: хотя бы одна цифра, буква в нижнем регистре, буква в верхнем, спецсимвол и длина не менее 8 символов. Его же ненавидят все пользователи. 😄

Regex — это суперсила в мире текстовой обработки!

А вы часто используете regex?

🔵 Эпсилон // @epsilon_h
Please open Telegram to view this post
VIEW IN TELEGRAM
8👍6🔥2👨‍💻1
👨🏻‍💻 Ребят, у вас также вся умственная работа в ночь уходит?

🫡 Дай обратную связь, если вот прямо сейчас кодишь крутую программу... И расскажи в комментариях какую.

🔵 Эпсилон // @epsilon_h
👍5💯3🤓3👨‍💻1🫡1
🖥 Что лучше: 32 ГБ, 48 ГБ или 64 ГБ? И сколькими планками?

▪️32 ГБ (2x16 ГБ) — ИДЕАЛЬНЫЙ ВЫБОР ДЛЯ 99% ГЕЙМЕРОВ. Этого объема хватит для любых современных и будущих игр на ближайшие 2-3 года с огромным запасом. Все, что сверх этого, — для узких профессиональных задач.

▪️48 ГБ (2x24 ГБ) — НИШЕВОЙ И НЕСБАЛАНСИРОВАННЫЙ ВАРИАНТ. Появился с новыми модулями на чипах повышенной плотности. Может быть полезен очень специфичным пользователям, которым мало 32 ГБ, но 64 ГБ — дорого. Минус: может быть меньше совместимых профилей EXPO и выше риск проблем со стабильностью на высоких частотах. Не рекомендуется для стандартной сборки.

▪️64 ГБ (2x32 ГБ) — ДЛЯ РАБОЧИХ СТАНЦИЙ И ЭНТУЗИАСТОВ. Нужен для: монтажа видео 4K/8K, работы с 3D-графикой, виртуальными машинами, одновременного стриминга без потери качества, запуска тяжелых ИИ-моделей локально. Для игр это пустая трата денег в 2025 году.

Пост в продолжение темы: Как лучше собирать оперативную память, если вам необходим какой-то фиксированный объем RAM, например 32 Гб ?

🔵 Эпсилон // @epsilon_h
Please open Telegram to view this post
VIEW IN TELEGRAM
8👍4❤‍🔥2👨‍💻2🔥1
💻 Когда код не компилируется: спасательный круг для разработчика

Сегодня поговорим о ситуации, знакомой каждому программисту — от новичка до гуру. Вы написали гениальный код, нажимаете «скомпилировать» и... BAM! Десятки ошибок, которые выглядят как древние руны. Паника? Ни в коем случае! Вместо этого — глубокий вдох и системный подход.

🎯 План действий, когда всё сломалось:

1. Не паникуй! Это первое и главное правило. Компилятор — не враг, а строгий, но справедливый друг, который пытается указать на твои ошибки, пока ты не запустил программу и не устроил kernel panic.

2. Читай ошибки СВЕРХУ ВНИЗ. Компиляторы часто выдают каскад ошибок: одна маленькая оплошность тянет за собой десятки других. Исправь самую первую — и пол-листа ошибок может исчезнуть сами собой.

3. Гугли текст ошибки. Да, это банально, но это работает в 99% случаев. Ты не первый, кто столкнулся с этой проблемой. Добавь в запрос название языка и ключевые элементы (например, C++ template SFINAE error).

4. Упрощай. Закомментируй подозрительные куски кода или сведи проблему к минимальному воспроизводящему примеру (Minimal Reproducible Example). Часто в процессе упрощения ты сам найдешь ошибку.

5. Проверь очевидное: закрыты ли все скобки {}()[] ? Поставлены ли точки с запятой ;? Правильно ли подключены заголовочные файлы? Не путаешь ли = и == ?

▫️ Ошибка 1: Магия точек с запятой в C++

Вот, казалось бы, безобидный код. Хотим распечатать число. Что не так?
#include <iostream>

int main() {
int x = 42;
std::cout << "Answer: " << x // <- ОЙ, забыли точку с запятой!
return 0;
}

Ожидаемая ошибка: expected ';' before 'return'. Но иногда компилятор может выдать что-то более пугающее, вроде: error: cannot convert 'int' to 'const char*' — потому что он пытается «скормить» return 0 оператору <<. Всего одна забытая ; — и компилятор начинает говорить на своем странном языке.

▫️ Ошибка 2: Коварный макрос в C

Макросы — мощный инструмент, но с ним нужно обращаться осторожно.
#include <stdio.h>

#define SQUARE(x) x * x // Наивный макрос для возведения в квадрат

int main() {
int result = SQUARE(2 + 3); // Ожидаем 25, но...
printf("%d\n", result);
return 0;
}

Почему на выходе будет 11, а не 25? Потому что препроцессор тупо подставляет текст! Код раскрывается в 2 + 3 * 2 + 3. Приоритет операторов делает свое дело: 3 * 2 = 6, 2 + 6 + 3 = 11.
Фикс: Всегда брать аргументы макроса в скобки! #define SQUARE(x) ((x) * (x))

🧠 Низкий уровень (Low-Level): Когда копаем глубже

Иногда ошибки компиляции — лишь верхушка айсберга. На низком уровне (близко к железу) начинается настоящая магия (и боль).

🔸Совместимость ABI (Application Binary Interface): Ваша программа скомпилировалась, но падает при вызове библиотеки. Возможно, вы собрали код с одним стандартом C++ (например, C++11), а библиотека была скомпилирована с другим (C++17). Их скомпилированный код по-разному организует вызовы функций.
🔸Невыполненные обещания линковщику: Объявили функцию extern "C", но забыли реализовать? Линковщик будет ругаться на неразрешенный символ (undefined reference), и это случится после компиляции.
🔸Проблемы с памятью (не компиляция, но смежная тема): Выделили память через new[], а освободили через delete (без [])? Программа скомпилируется, но ее поведение при запуске будет неопределенным (UB — Undefined Behaviour). Это может привести к трудноотлавливаемым багам.

Итог: Умение читать и понимать ошибки компиляции — такой же навык, как и написание кода. Не бойтесь их, анализируйте, и со временем вы начнете видеть их причину еще до того, как компилятор закончит свою работу.

А какие самые запоминающиеся ошибки компиляции встречали вы? Делитесь в комментариях! 👇 #программирование #советы #ошибки #компиляция #Cpp #C #lowlevel

🔵 Эпсилон // @epsilon_h
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥85👍3👨‍💻2👏1😁1
🔒 MAX мессенджер: ваша безопасность под вопросом? Или почему одни «секретики» равнее других.

Как же прекрасна жизнь человека, который верит, что все мессенджеры одинаково шпионят! Зачем выбирать? VK, WhatsApp, MAX... какая разница? 🤷‍♂️ Главное — удобный стикерпак! Это все равно что выбирать, кого подселить в квартире: соседа-любителя или прослушку ФСБ. Разница-то чисто техническая!

Но если вы из тех, кто все-таки решил посмотреть, куда сливаются его фото в трусах и переписки о мировой революции, вот вам несколько фактов о MAX для размышления:

1. 🇷🇺 Сервера и юрисдикция. MAX — российский мессенджер (от VK). Это автоматически означает, что он подпадает под отечественное законодательство о «пакете Яровой». Теоретически — ключи шифрования могут быть предоставлены по запросу. В отличие от, скажем, Signal (мессенджер), который строится вокруг принципа «мы физически не можем прочитать ваши сообщения».

2. 🔐 Closed Source. Исходный код MAX закрыт. Это как покупать сейф с заявленной надежностью, но вам запрещают посмотреть на его внутреннее устройство. Сообщество независимых экспертов не может его проверить на уязвимости или бэкдоры. Доверяйте, но... ну вы поняли.

3. 📞 Шифрование? Заявлено сквозное шифрование, но оно не включено по умолчанию для всех чатов. Его нужно включать вручную для каждого диалога, выбирая «засекреченный чат». Большинство пользователей об этом даже не знают. Удобно? Для кого?

Ирония в том, что люди, переходящие из VK Мессенджера в MAX в поисках безопасности, часто просто меняют шило на мыло. Более современное, более гладкое, но из той же мастерской.

Вывод прост: если вам действительно нужна конфиденциальность — смотрите в сторону проверенных временем решений с открытым кодом (Signal, Session, Matrix). Если же вам просто нужен удобный мессенджер без претензий на сверхбезопасность — что ж, выбор за вами. Но хотя бы отдавайте себе в этом отчет. 😉
#программирование #безопасность #уязвимости #max #ошибки #шифрование #приватность

🔵 Эпсилон // @epsilon_h
👍16💯85😁5👨‍💻2🤷‍♂1🔥1🤔1🗿1