Search
Write a publication
Pull to refresh
1
@shvedoffl98read⁠-⁠only

User

Send message

Криптография эпохи Ренессанса: классика не стареет

Level of difficultyEasy
Reading time16 min
Views4.5K

В прошлой публикации кандидат исторических наук, старший научный сотрудник Московского музея криптографии Анастасия Ашаева рассказала о том, как политики и дипломаты использовали криптографию в эпоху Ренессанса.  Теперь оставим эти увлекательные «игры престолов» и обратимся непосредственно к шифрованию. 

Как во времена Возрождения пытались усилить устаревшие шифры и что из этого получилось? Какие принципиально новые методики появились и в чем их преимущества? Кто стал «Леонардо да Винчи» от криптографии? Ответы на эти и другие вопросы читайте под катом.

Читать далее

CRTP в C++

Level of difficultyEasy
Reading time4 min
Views11K

Привет, Хабр!

CRTP — это метод в C++, при котором класс наследуется от шаблона класса, используя себя в качестве параметра шаблона. Это выглядит примерно так: класс X наследуется от класса-шаблона Y<X>. Этот паттерн позволяет базовому классу напрямую обращаться к методам производного класса. С помощью CRTP можно можно обогатить интерфейс производного класса, внеся в него дополнительные методы через базовый класс-шаблон.

С CRTP также можно достигнуть полиморфизма во время компиляции и таким образом избваиться от затрат на производительность, связанных с динамическим полиморфизмом и виртуальными функциями.

Читать далее

Меня заставили повайбкодить

Level of difficultyHard
Reading time18 min
Views48K

Я давно пользуюсь кодогенерацией. Ещё во времена Yii фреймворка мне нравилось, что одним кликом мышки можно было сгенерировать CRUD с бэкендом, таблицами и формами. Backbone.js сразу из коробки обеспечивал REST API запросы и другие фичи. Между тем временем и нынешним днём — целый пласт инструментов для автоматизации, бутстрапинга и шаблонизации разработки. Приходилось и хрюкать, и глотать. То, что всё это, мягко говоря, так себе — уже отдельная история. Местами стало даже хуже. Хуже, чем когда вы неделю возились с конфигом Webpack.

В этой статье мы рассмотрим вайбкодинг. В чистом виде так сказать.

Читать далее

Мастер-класс по обходу WAF: Использование SQLMap с Proxychains и Tamper-скриптами против Cloudflare и…

Reading time6 min
Views2.4K

Практическое руководство по изучению и тестированию техник обхода WAF с помощью продвинутых настроек SQLMap и proxychains.

Введение

В современном быстро меняющемся мире кибербезопасности веб-фаерволы (WAF) играют важнейшую роль в защите сайтов от вредоносных воздействий, таких как SQL-инъекции. Однако и злоумышленники, и этичные хакеры постоянно ищут новые методы для тестирования и обхода таких мер защиты.

В этом руководстве я покажу, как использовать SQLMap, ProxyChains и tamper-скрипты для проверки и оценки эффективности WAF. Вы узнаете, как настроить эти инструменты и проводить сканирование, соблюдая этические стандарты и лучшие практики.

Читать далее

SQL-инъекции для самых маленьких

Level of difficultyEasy
Reading time5 min
Views149K

Мы переходим к технической части статей про тестирование на проникновение. И начнем как всегда с внешнего пути – с эксплуатации веб уязвимостей. И начнем мы с SQL – инъекций.

SQL-инъекция (SQLi) - это уязвимость веб-безопасности, которая позволяет злоумышленнику вмешиваться в запросы, которые приложение делает к своей базе данных. Как правило, это позволяет просматривать данные, которые он обычно не может получить. Это могут быть других пользователей, или любые другие данные, доступ к которым имеет само приложение. Во многих случаях злоумышленник может изменять или удалять эти данные, вызывая постоянные изменения в содержимом или поведении приложения.

Читать далее

Обзор CUDA: сюрпризы с производительностью

Reading time6 min
Views10K

Наверное, я очень опоздал с изучением CUDA. До недавнего времени даже не знал, что CUDA — это просто C++ с небольшими добавками. Если бы я знал, что изучение её пойдёт как по маслу, я бы столько не медлил. Но, если у вас есть багаж привычек C++, то код на CUDA у вас будет получаться низкокачественным. Поэтому расскажу вам о некоторых уроках, изученных на практике — возможно, мой опыт поможет вам ускорить код.

Читать далее

Практика метапрограммирования на C++: бинарное дерево поиска на этапе компиляции

Reading time27 min
Views55K
Создатели шаблонов в C++ заложили основу целого направления для исследований и разработки: оказалось, что язык шаблонов C++ обладает полнотой по Тьюрингу, то есть метапрограммы (программы, предназначенные для работы на этапе компиляции) C++ в состоянии вычислить всё вычислимое. На практике мощь шаблонов чаще всего применяется при описании обобщенных структур данных и алгоритмов: STL (Standard Template Library) тому живой пример.

Однако, с приходом C++11 с его variadic-шаблонами, библиотекой type_traits, кортежами и constexpr'ами метапрограммирование стало более удобным и наглядным, открыв дорогу к реализации многих идей, которые раньше можно было воплотить только с помощью расширений конкретного компилятора или сложных многоэтажных макросов.

В данной статье будет разработана реализация бинарного дерева поиска времени компиляции: структуры данных, являющейся логическим «расширением» кортежа. Мы воплотим бинарное дерево в виде шаблона и попрактикуемся в метапрограммировании: переносе рекурсивных и не только алгоритмов на язык шаблонов C++.
Читать дальше →

Метапрограммирование в C++

Reading time5 min
Views42K
Метапрограммирование — это «программирование программ», то есть написание некой промежуточной программы, результатом которой будет некая часть другой программы. Самый простой пример метапрограммирования — это шаблоны C++. Вместо написания десяти одинаковых функций для разных типов, мы пишем шаблон, и компилятор сам соберет нам эти десять функций.
Читать дальше →

Может ли ИИ заменить врача-терапевта? Исследование ученых из Google DeepMind

Level of difficultyHard
Reading time32 min
Views3.9K

Представьте себе типичное воскресное утро: Сергей просыпается с небольшим кашлем и, вместо того чтобы выпить чай с медом, немедленно консультируется со своим любимым ИИ-помощником.

"У меня лёгкий кашель," — пишет он.

ИИ анализирует сообщение и выдаёт: "По моим данным, у вас, возможно, одно из следующего: простуда, аллергия, пневмония, бронхит, туберкулёз, легочный фиброз или редкое тропическое заболевание, о котором вы, вероятно, никогда не слышали."

К вечеру Сергей уже убежден, что у него неизлечимая экзотическая болезнь. Он заказывает лекарства из пятнадцати стран, составляет завещание и звонит родственникам попрощаться. А на следующий день кашель проходит сам собой.

Комичная ситуация, не правда ли? Группа ученых из Google Research и Google DeepMind решила выяснить, справедлива ли привычная ирония в отношении ИИ-диагностики. Результаты опубликовали не где-нибудь, а в журнале Nature, и этот хабрапост — адаптированный перевод этой статьи.

Сможет ли ИИ превзойти опытных терапевтов в составлении точных дифференциальных диагнозов? Смогут ли результаты исследования перевернуть наше представление о роли искусственного интеллекта в медицине? И речь идет не о простудах и аллергиях — нужно выявлять редкие и сложные заболевания, зачастую ускользающие от внимания человека-врача…

Интересно! Читать далее

C++20. Coroutines

Reading time33 min
Views70K

В этой статье мы подробно разберем понятие сопрограмм (coroutines), их классификацию, детально рассмотрим реализацию, допущения и компромиссы, предлагаемые новым стандартом C++20.


image

Читать дальше →

Стандарт C++20: обзор новых возможностей C++. Часть 5 «Корутины»

Reading time9 min
Views20K


25 февраля автор курса «Разработчик C++» в Яндекс.Практикуме Георгий Осипов рассказал о новом этапе языка C++ — Стандарте C++20. В лекции сделан обзор основных нововведений Стандарта, рассказывается, как их применять уже сейчас и чем они могут быть полезны.

При подготовке вебинара стояла цель сделать обзор всех ключевых возможностей C++20. Поэтому вебинар получился насыщенным. Он растянулся на почти 2,5 часа. Для вашего удобства мы разбили текст на шесть частей:

  1. Модули и краткая история C++.
  2. Операция «космический корабль».
  3. Концепты.
  4. Ranges.
  5. Корутины.
  6. Другие фичи ядра и стандартной библиотеки. Заключение.

Это пятая часть, кратко рассказывающая о корутинах, или сопрограммах, в современном C++.

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



Но существуют решения, позволяющие усидеть на двух стульях.

Мотивация


Очень часто при программировании возникает задача вернуть из функции не один объект, а целый набор. Есть несколько вариантов решения:
Читать дальше →

Стандарт C++20: обзор новых возможностей C++. Часть 3 «Концепты»

Reading time11 min
Views50K


25 февраля автор курса «Разработчик C++» в Яндекс.Практикуме Георгий Осипов рассказал о новом этапе языка C++ — Стандарте C++20. В лекции сделан обзор всех основных нововведений Стандарта, рассказывается, как их применять уже сейчас и чем они могут быть полезны.

При подготовке вебинара стояла цель сделать обзор всех ключевых возможностей C++20. Поэтому вебинар получился насыщенным и растянулся на почти 2,5 часа. Для вашего удобства текст мы разбили на шесть частей:

  1. Модули и краткая история C++.
  2. Операция «космический корабль».
  3. Концепты.
  4. Ranges.
  5. Корутины.
  6. Другие фичи ядра и стандартной библиотеки. Заключение.

Это третья часть, рассказывающая о концептах и ограничениях в современном C++.
Читать дальше →

LACP под лупой Wireshark

Level of difficultyEasy
Reading time8 min
Views5.8K

Привет Habr, всем максимально доброго дня!!!

После первой статьи прошло... чуть больше времени, чем рассчитывал, и вот решил продолжить тему медленных протоколов: сегодня LACP. Хотел рассмотреть его подробно, но получилось как-то уж совсем подробно, так что, как это говорилось в далеком 2005м, извените за многабукаф.

С самого начала, давайте вспомним самую важную картинку из прошлой статьи, а точнее - схему работы агрегированного канала.

Читать далее

Линус Торвальдс жёстко разнёс регистронезависимые ФС

Level of difficultyEasy
Reading time2 min
Views25K

Линус Торвальдс сегодня в привычной для себя прямой и резкой манере высказался о файловых системах с поддержкой case folding (регистронезависимых файлов и папок).

Поводом послужила проблема с поддержкой case folding в Bcachefs, обнаруженная на этой неделе и уже имеющая фикс для Linux 6.15. Линус написал огромное сообщение в рассылке разработчиков Linux (LKML), изложив своё мнение о реализации case folding.

Стоит отметить, что проблема с case folding в Bcachefs — не первая для Linux: ранее уже возникали баги, связанные с обработкой эмодзи и других специальных символов Unicode.

Читать далее

Кибератаки 2025: кто в зоне риска и чем поможет WAF

Reading time7 min
Views2.2K

Месяц назад мы в Linx провели тематический вебинар, посвященный стратегиям защиты веб-приложений. Во время эфира мы поинтересовались у участников — ИТ-специалистов и руководителей — как они оценивают риски для своих проектов.

Результаты опроса оказались очень показательными: более половины слушателей признались, что не занимаются вопросами информационной безопасности без необходимости. В каком-то смысле статистика ошеломляющая, учитывая, что, по данным Positive Technologies, 98% веб-приложений в принципе могут быть взломаны.

С атаками на веб-приложения сталкиваются компании всех размеров: от крупных финансовых организаций до малого бизнеса. Большинству хакеров достаточно, что на вашем проекте есть трафик. Поговорим об актуальных угрозах и о том, почему бизнес не всегда реагирует на них, а также отметим способ защиты веб-приложений — WAF.

Читать далее

Стандарт C++20: обзор новых возможностей C++. Часть 1 «Модули и краткая история C++»

Reading time10 min
Views81K


25 февраля автор курса «Разработчик C++» в Яндекс.Практикуме Георгий Осипов рассказал о новом этапе языка C++ — Стандарте C++20. В лекции сделан обзор всех основных нововведений Стандарта, рассказывается, как их применять уже сейчас и чем они могут быть полезны.

При подготовке вебинара стояла цель сделать обзор всех ключевых возможностей C++20. Поэтому вебинар получился насыщенным. Он растянулся на почти 2,5 часа. Для вашего удобства текст мы разбили на шесть частей:

  1. Модули и краткая история C++.
  2. Операция «космический корабль».
  3. Концепты.
  4. Ranges.
  5. Корутины.
  6. Другие фичи ядра и стандартной библиотеки. Заключение.

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

Update. К статье добавлены правки и комментарии Антона Полухина.
Читать дальше →

Information

Rating
Does not participate
Registered
Activity

Specialization

Backend Developer, System Software Engineer
Senior
Git
Linux
Bash
OOP
C++
Software development
Multiple thread
Visual Studio
C
System Programming