Как стать автором
Обновить
-11
0
Рогин Василий @roginvs

Пользователь

Отправить сообщение

Чем опасен чистый RSA? Разбираем подводные камни

Уровень сложностиСложный
Время на прочтение9 мин
Количество просмотров9.6K

Алгоритм RSA является одним из первых представителей асимметричной криптографии, прошедший свой путь сквозь бурные дискуссии математиков, сквозь сотни успешных и безуспешных попыток взлома криптоаналитиками, сквозь тысячи неправильных применений и реализаций.

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

На хабре алгоритм RSA не раз обсуждался и критиковался, как например тут, тут, тут, но весь анализ сводился либо к анализу конкретного недостатка / уязвимости, либо к неправильному использованию / применению старого стандарта. Всё это неплохо, но не даёт полной картины того, чем всё же может быть опасна чистая математическая структура алгоритма RSA.

Читать далее
Всего голосов 38: ↑38 и ↓0+53
Комментарии6

V8. Работа со строкам. Пополняем словарный запас

Время на прочтение20 мин
Количество просмотров2.7K

Что такое строка? Какие бывают строки? Как они хранятся внутри движка. Подробно разберем все детали и особенности.

Читать далее
Всего голосов 7: ↑6 и ↓1+8
Комментарии0

Эмиттерный повторитель — ключ к пониманию работы транзисторных каскадов

Уровень сложностиСредний
Время на прочтение9 мин
Количество просмотров34K


Привет, эту публикацию я хочу посвятить людям, кто, как и я, любил в детстве читать журнал «Радио» и книги по электронике, но не смог сам разобраться в принципах работы усилителей на биполярных транзисторах. Тема полупроводников непроста и требует понимания многих чуждых для нашей повседневной интуиции физических процессов. Я помню момент озарения, когда я понял принцип схемотехнического решения эмиттерного повторителя, и именно с него пошло постепенное понимание, как функционируют и другие типы транзисторных каскадов. И я предполагаю, что эта тема может стать точкой входа в аналоговую электронику не только для меня.
Читать и смотреть схемы
Всего голосов 149: ↑147 и ↓2+187
Комментарии117

Текстовые квесты… на Telegram

Уровень сложностиСредний
Время на прочтение13 мин
Количество просмотров2.6K
Давным-давно, около полугода назад, мне в голову пришла интересная идея: а не запустить ли текстовые квесты из "Космических рейнджеров" под управлением Telegram-бота? Скажу сразу, что как и всё с упоминанием "Dagaz" в заголовке, проект полностью бесплатный, с открытыми исходными кодами и MIT-лицензией. Если вы неравнодушны к теме, всё ещё помните неповторимую атмосферу легендарной игры или любите играть в текстовые квесты, просто кликните по картинке в начале этой статьи и перейдите в уютный Telegram. В том же случае, если вам как и мне гораздо более интересны технические подробности, добро пожаловать в мою статью…
Читать дальше →
Всего голосов 10: ↑10 и ↓0+14
Комментарии14

Большие простые числа: доказательство простоты

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров2.6K

В предыдущей статье я рассказал об общих принципах поиска больших простых чисел. Но как бы ни был организован поиск, в конце он всегда заканчивается тестом простоты. И, к сожалению, иногда случается ситуация, когда простое число-то мы нашли, но доказать его простоту не можем. Например, так получилось с самым маленьким простым числом из миллиона цифр 10999999+593499. В этой статье я расскажу, почему тестам простоты уделяется так много внимания в сообществах добровольных распределённых вычислений, таких как GIMPS и PrimeGrid.

Читать далее
Всего голосов 13: ↑13 и ↓0+22
Комментарии7

Умножение Монтгомери

Уровень сложностиСложный
Время на прочтение11 мин
Количество просмотров16K

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

Один из вариантов эффективного решения — умножать по модулю, вообще при этом не используя операции деления, с помощью алгоритма Монтгомери.

Про него я и хотел бы поговорить.

Читать далее
Всего голосов 32: ↑32 и ↓0+43
Комментарии7

Предварительные секции: что спрашивают у разработчиков С++ на собеседовании в Яндексе

Уровень сложностиСредний
Время на прочтение5 мин
Количество просмотров10K

Хабр, привет! Меня зовут Владимир Михайлов, я занимаюсь бэкендом в Яндекс Такси — мы создаём внутренние продукты, которые используют в разных юнитах Яндекса. Также я работаю наставником на курсах «Разработчик C++» и «C++ для бэкенда» в Яндекс Практикуме. 

А ещё я помогаю компании с наймом и провожу предварительные секции с кандидатами — разработчиками C++. Я расскажу, какие задачи даю на этих секциях, на что обращаю внимание и как подготовиться к подобному собеседованию.

Читать далее
Всего голосов 22: ↑13 и ↓9+7
Комментарии51

Firmware в Linux. Коротко и своими словами

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров9.7K

Рано или поздно системный программист сталкивается с понятием firmware. В данной статье мы коротко рассматриваем, что это, зачем, и как с этим работать.

Disclaimer:
Материал не является сборником best practices и не претендует на фундаментальный труд. Это шпаргалка. Если угодно - application note в свободной форме. Основная задача материала - "сделать короткую статью, которая помогла бы лично мне быстро разобраться, если бы я впервые столкнулся с темой". Если вы знаете что-то лучше - дополнения и замечания по существу приветствуются. Мотивацией для написания послужила недавно встреченная статья, которая как раз объясняла эти аспекты не очень хорошо.

Читать далее
Всего голосов 28: ↑28 и ↓0+37
Комментарии2

Сложно ли генерировать 1024-битные простые числа?

Уровень сложностиПростой
Время на прочтение28 мин
Количество просмотров12K

Простые числа удивительны!

С одной стороны, их легко объяснить: это просто числа, которые делятся только на единицу и на себя; с другой стороны, они содержат в себе бесконечную сложность. Они встречаются во множестве разных сфер, от математических концепций и гипотез до любопытных визуализаций и криптографии, лежат в основе многих Интернет-стандартов и протоколов безопасности, которые мы используем ежедневно.

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

Вызов

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

Генерировать простые числа, способные генерировать ключи для алгоритма RSA

На момент написания этой статьи хорошей длиной ключей RSA считаются 2048 битов. Ключи RSA генерируются перемножением двух простых чисел, так что для получения 2048-битного ключа нам нужны два числа длиной примерно 1024 бита. Это ограничивает рамки задачи генерацией 1024-битных простых чисел. Теперь вы знаете, откуда взялось число из заголовка поста.

Читать далее
Всего голосов 56: ↑56 и ↓0+74
Комментарии24

Гуманизм против «эффективного менеджмента». Почему заботиться о людях выгодно

Уровень сложностиПростой
Время на прочтение22 мин
Количество просмотров29K

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

Буквально: если начать относиться к сотруднику как к взрослому сознательному человеку, заботиться о нём, давать ему адекватную загрузку и дать возможность заниматься интересными для него задачами, платить справедливую зарплату, то и отвечать он будет как взрослый человек: ответственно и старательно иметь высокую производительность труда.

В общей сложности я разбираю 10 самых распространённых ошибок "эффективных менеджеров" и показываю гуманные и более действенные подходы.

Принять выгоды гуманизма в управлении людь
Всего голосов 56: ↑55 и ↓1+66
Комментарии144

Город в бутылке — движок Raycasting всего на 256 байт

Время на прочтение8 мин
Количество просмотров17K

Привет любителям микро-кодирования. Вот вам кое-что невероятное: крошечный движок raycasting (метод “бросания лучей”) и генератор городов, который помещается в отдельный 256-байтовый HTML-файл.

Читать далее
Всего голосов 65: ↑57 и ↓8+65
Комментарии12

Что ждет крипту в России в 2024 году: разбираем последствия нового закона на мемах

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров32K

В России выкатили новый закон о регулировании крипты, и грозятся принять его до конца текущего года. Что конкретно там запретили, какая ответственность грозит за «незаконные операции с криптой», и как дальше будут выживать отечественные криптообменники – разобрались во всём этом с профильным юристом.

Читать далее
Всего голосов 41: ↑30 и ↓11+25
Комментарии49

Как я сдала IELTS в 2023 году и подтвердила свой уровень Advanced

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров9.8K

Dear Habr, I am writing to share my experience... ой, кажется, я переобучилась на вариантах части Writing. В общем, я пишу эту небольшую статью, чтобы поделиться личным способом сдачи международного экзамена по английскому языку, рассказать о подготовке, мотивации и издержках.

Let's go!
Всего голосов 5: ↑3 и ↓2+2
Комментарии10

Как перестать переусложнять и начать жить

Уровень сложностиПростой
Время на прочтение10 мин
Количество просмотров44K

Мое наблюдение состоит в том, что мы — разработчики и продукты, сильно переусложняем, осознанно или нет, но всякие «„Архитектурные комитеты“, „Планирования“, „Апрувы у 50 отделов“ и деплои в 2-часовые окна, простыни текста сопровождающие простейшие фичи — это просто какой‑то бич современной разработки. Умные дяди с 20 летним опытом за плечами, с невозмутимыми лицами сутки напролет на созвонах обсасывают простейшие вещи вроде замены кнопки. Что это? Следствие усложнения программного обеспечения или засилие не тех людей не на тех местах? Или следствие входа в индустрию новичков, стремящихся простое сделать сложным?

В статье мы разберем что такое „переусложнение“, дадим ему определение и на реальных примерах разберем во что это выражается и как с этим бороться.

Читать далее
Всего голосов 61: ↑54 и ↓7+58
Комментарии173

Каков C++ в gamedev'e?

Уровень сложностиПростой
Время на прочтение11 мин
Количество просмотров29K

Хотел написать продолжение к статье Что почитать игровому программисту? про использование С++ в игровых движках, но размышления свернули куда-то не туда.

Завороженно смотрю как и какими темпами идет развитие языка в последние годы, и понимаю, что получить и особенно применить возможности С++20/3 в разработке игр и движков получится хорошо, если с опозданием лет эдак в пять, как раз на следующее поколение консолей, если вообще получится. Сейчас плюсы в игрострое зависли где-то между 14 и 17 стандартом, Сони только-только выкатила свою версию компилятора с полной поддержкой 17 стандарта, а учитывая реактивность игровых студий в изменении кор пайплайнов, что-то новое начнут только в новых проектах. Менять коня, т.е. компилятор посреди разработки игры равносильно стрельбе не только по ногам себе, но и соседям программистам: работает - не чини.

Если смена компилятора и стандарта не даст гарантированного прироста скорости работы больше 5%, то бюджет и людей я не одобрю. (с)

Знакомство с кодовой базой больших движков дает понимание уровня и объёмов кода в продакшене и в тулзах, и ситуация вырисовывается такая, что эти объемы стали в индустрии, что называется "too big to fall", т.е. написать что-то новое, уровня движков вроде Unity/Unreal/Dagor на другом языке, будь он хоть в тысячу раз безопаснее и в десять раз быстрее не получится, но попытки конечно делаются. И чем дальше продолжается поддержка существующих проектов на плюсах, тем меньше возможности выбора остается.

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

По техдолгам будут платить наши джуны
Всего голосов 74: ↑73 и ↓1+83
Комментарии59

Электронные подписи. Но что мы знаем о мультиподписях?

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров3.8K

Небольшое введение в технологии MPC и мультиподписей.

Краткое описание набора протоколов и используемой реализации мультиподписи.

Читать далее
Всего голосов 2: ↑2 и ↓0+2
Комментарии0

STM32. Процесс компиляции и сборки прошивки

Уровень сложностиПростой
Время на прочтение30 мин
Количество просмотров26K
Многие из начинающих разработчиков софта для микроконтроллеров реализуют свои проекты исключительно в средствах разработки, которые предоставляются производителем. Многое скрыто от пользователя и очень хорошо скрыто, из-за чего некоторые воспринимают эти процессы сродни настоящей магии. Я, в свою очередь, как человек в пытливым умом и природной любознательностью, решил попробовать собрать проект без использования IDE и различного рода автоматизаций.

Так родилась идея для этой статьи: не используя ничего, кроме текстового редактора и командной строки, собрать проект мигания светодиодом на отладочной плате STM32F0-Discovery. Поскольку я не до конца понимал, как происходит процесс компиляции и сборки проекта, мне пришлось восполнять пробелы в знаниях. Разобравшись с этим вопросом, я подумал — а почему бы не рассказать другим об этом?

Всем кому интересно — добро пожаловать под кат! 🙂

Читать дальше →
Всего голосов 107: ↑106 и ↓1+122
Комментарии67

Кеннеди. Договориться можно обо всем (конспект)

Уровень сложностиПростой
Время на прочтение1 мин
Количество просмотров1.5K

Прочитал её давно, и могу с уверенностью сказать, что эта книга, которая, точно себя многократно окупила. Недавно перечитал и актуализировал для себя 5 самых ценных, с моей точки зрения, советов:

1) Не стесняться предлагать свои условия. Твердо установленных цен не существует, всегда есть пространство для переговоров.

2) Менять не цену, а пакетное предложение. Например, если тебя просят снизить цену, то сделать это можно, но только вместе с изменением других условий (состава работ, сроков выполнения, сроков платежей и др.). Слово “ЕСЛИ” в переговорах намного более полезно, чем слово “НЕТ”. Можно идти на уступки, но никогда нельзя это делать в одностороннем (тем более превентивном) порядке. 

3) Стараться не выставлять себя финальным ЛПР, а иметь за спиной, пусть даже придуманного, но “принципала”, на которого можно сослаться для изменения условий

4) С другой стороны —  всегда стараться самому вести переговоры именно с тем, кто фактически принимает решения.

5) Выявлять и учитывать позиции и интересы другой стороны (позиция —  то, что мы хотим, интересы —  почему именно). Помнить и ориентироваться на свои интересы. 

6) При любом соглашении заранее продумывать возможные “что мы будем делать, если …”

7) Фокусировать переговоры на возможных (и выгодных для каждой из сторон) решениях, а не обсуждении прошлого, в том числе заботиться, в первую очередь, об “ошибках других”, а о средствах их исправления с учетом ваших интересов.

Другие книги в тему: Фишер. Переговоры без поражений; Кемп. Сначала скажи “Нет”, Ури. Договорись с собой и другими достойными оппонентами; Паттерсон. Трудные диалоги (конспект по ссылке) и Розенберг. Язык жизни. Ненасильственное общение (конспект по ссылке)

Читать далее
Всего голосов 5: ↑2 и ↓30
Комментарии1

Объявление и инициализация переменных в C++

Уровень сложностиСредний
Время на прочтение41 мин
Количество просмотров21K


Продолжаем серию «C++, копаем вглубь». Цель этой серии — рассказать максимально подробно о разных особенностях языка, возможно довольно специальных. Это шестая статья из серии, список предыдущих статей приведен в конце в разделе 7. Серия ориентирована на программистов, имеющих определенный опыт работы на C++. Данная статья посвящена объявлению и инициализации переменных.


Переменные являются основой любого языка программирования. В языках со статической типизацией, к которым относится C++, все переменные должны быть объявлены, их тип определяется на стадии компиляции и не может меняться в процессе работы программы. Тип переменных указывается при объявлении явно или выводится компилятором на основе типа инициализирующего выражения.


Во многих языках программирования объявление переменных относится к довольно простым темам, но вот в C++ это не совсем так. Конечно, простые варианты обычно не вызывают затруднений, но вот более сложные случаи могут озадачить даже достаточно опытных программистов. Попробуем разобраться во всех тонкостях объявления переменных. Также рассмотрим тему инициализации, так как чаще всего переменные инициализируются вместе с объявлением.

Читать дальше →
Всего голосов 27: ↑26 и ↓1+31
Комментарии48

Состояние WebAssembly – 2023 и 2024

Уровень сложностиСредний
Время на прочтение12 мин
Количество просмотров8.4K

Автор статьи Жерар Галлан известен как автор книги “WebAssembly in Action”, выпущенной Manning в 2018 году. Существует перевод его книги на русский “WebAssembly в действии” (Питер, 2022). Предыдущий обзор Состояние WebAssembly в 2022-23 годах опубликован автором в январе 2023 года. — Прим. переводчика.

Добро пожаловать в 2024 год и в нашу статью о текущем состоянии WebAssembly (Wasm)! В этой статье я займусь тем, что посмотрю, что произошло в 2023 году. Затем я выскажу свои мысли о том, что может произойти в текущем году.

Читать далее
Всего голосов 13: ↑12 и ↓1+15
Комментарии14
1
23 ...

Информация

В рейтинге
Не участвует
Откуда
Великий Новгород (Новгород), Новгородская обл., Россия
Дата рождения
Зарегистрирован
Активность