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

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

Связь: @physicist_i
Download Telegram
Media is too big
VIEW IN TELEGRAM
🖥 Bjarne Stroustrup — The Essence of C++: With Examples in C++84, C++98, C++11, and C++14 (+презентация)

Год выпуска: 2013
Автор: Bjarne Stroustrup
Продолжительность: 1ч. 36.м. 42 се
Описание: Выступление Бьёрна Страуструпа на GoingNative 2013

С++11 уже вступил в свои права и контуры С++14 вырисовываются со всей ясностью. Вам предлагаются рассуждения о сути С++. Что важно в нем? Чем С++ выделяется из других языков. Как использовать новые возможности и поддерживать старые (или заменить их), как проектировать и писать, опираясь на сильные стороны С++.
Я фокусируюсь на механизмах абстракции (а не на связи исходного кода и результатов компиляции), это классы и шаблоны. По сути, если вы хорошо понимаете вектор(vector), то Вы понимаете С++.
Типобезопасность и безопасность ресурсов это ключевая цель дизайна любой программы. И эта цель должна быть достигнута без ограничения сфер применения, без значительных накладных расходов времени выполнения и дополнительного размера программы.
Я рассматриваю следующие вопросы:
управление ресурсами (сборка мусора не является идеальным решением, но и работа с указателями не может использоваться как стратегия владения ресурсами)
обобщенное программирование (мы должы сделать его проще и безопаснее)
вычисления времени компиляции (constexpr)(как и когда?)
и типобезопасность (приведение типов относится к самому нижнему уровню программирования - общению с аппаратной частью)
Также затрагиваю такие темы как:
семантика переноса (move)
исключения
концепты
псевдонимы типов
и т.д.
Моя цель не столько описать все нововведения и техники, как обозначить их роль в поддержке нового и более эффективного дизайна и стиля программирования.
#видеоуроки #лекции #IT #Cpp #разработка #cplusplus

🔵 Эпсилон // @epsilon_h
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🔥31
Forwarded from Physics.Math.Code
📗 Изучаем Kali Linux. Проверка защиты, тестирование на проникновение, этичный хакинг [2025] Рик Мессье
📘 Learning Kali Linux: security testing, penetration testing and ethical hacking [2024] Ric Messier

💾 Скачать книгу RU + EN

Промокод на - 35 % : MATHCODE в издательстве ПИТЕР

Рик Мессье — автор, консультант и преподаватель, имеющий сертификаты CCSP, GCP ACE, AWS CCP, GCIH, GSEC, CEH и CISSP. Опубликовал несколько книг по информационной безопасности и цифровой криминалистике. Имеет многолетний опыт работы в области информационных технологий и информационной безопасности. Занимал различные должности: программиста, системного администратора, сетевого инженера, менеджера по технике безопасности, инженера VoIP, консультанта и профессора. В настоящее время — директор по киберакадемическим программам в Circadence, ранее — директор программы по кибербезопасности и цифровой криминалистике в Champlain College.

☕️ Для тех, кто захочет задонать на кофе:
ВТБ: +79616572047 (СБП) ЮMoney: 410012169999048

Некоторые книги Рика Мессье: «Network Forensics», «CEH v11 Certified Ethical Hacker Study Guide», «Программирование на RUST».
#python #cpp #kali #kalilinux #linux #хакинг #безопасность #программирование #разработка #IT

💡 Physics.Math.Code // @physics_lib
👍43🔥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
🔥75👍3👨‍💻2👏1😁1
Media is too big
VIEW IN TELEGRAM
🖥 Bjarne Stroustrup — The Essence of C++: With Examples in C++84, C++98, C++11, and C++14 (+презентация)

Год выпуска: 2013
Автор: Bjarne Stroustrup
Продолжительность: 1ч. 36.м. 42 се
Описание: Выступление Бьёрна Страуструпа на GoingNative 2013

С++11 уже вступил в свои права и контуры С++14 вырисовываются со всей ясностью. Вам предлагаются рассуждения о сути С++. Что важно в нем? Чем С++ выделяется из других языков. Как использовать новые возможности и поддерживать старые (или заменить их), как проектировать и писать, опираясь на сильные стороны С++.
Я фокусируюсь на механизмах абстракции (а не на связи исходного кода и результатов компиляции), это классы и шаблоны. По сути, если вы хорошо понимаете вектор(vector), то Вы понимаете С++.
Типобезопасность и безопасность ресурсов это ключевая цель дизайна любой программы. И эта цель должна быть достигнута без ограничения сфер применения, без значительных накладных расходов времени выполнения и дополнительного размера программы.
Я рассматриваю следующие вопросы:
управление ресурсами (сборка мусора не является идеальным решением, но и работа с указателями не может использоваться как стратегия владения ресурсами)
обобщенное программирование (мы должы сделать его проще и безопаснее)
вычисления времени компиляции (constexpr)(как и когда?)
и типобезопасность (приведение типов относится к самому нижнему уровню программирования - общению с аппаратной частью)
Также затрагиваю такие темы как:
семантика переноса (move)
исключения
концепты
псевдонимы типов
и т.д.
Моя цель не столько описать все нововведения и техники, как обозначить их роль в поддержке нового и более эффективного дизайна и стиля программирования.
#видеоуроки #лекции #IT #Cpp #разработка #cplusplus

🔵 Эпсилон // @epsilon_h
Please open Telegram to view this post
VIEW IN TELEGRAM
3👍3🔥2👨‍💻2