Pull to refresh
-11
0
Рогин Василий @roginvs

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

Send message

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

Level of difficultyEasy
Reading time28 min
Views8.9K

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

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

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

Вызов

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

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

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

Читать далее
Total votes 46: ↑46 and ↓0+63
Comments8

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

Level of difficultyEasy
Reading time22 min
Views24K

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

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

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

Принять выгоды гуманизма в управлении людь
Total votes 53: ↑52 and ↓1+62
Comments142

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

Reading time8 min
Views15K

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

Читать далее
Total votes 61: ↑53 and ↓8+60
Comments12

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

Level of difficultyEasy
Reading time7 min
Views18K

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

Читать далее
Total votes 41: ↑30 and ↓11+25
Comments49

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

Level of difficultyEasy
Reading time7 min
Views9.3K

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

Let's go!
Total votes 5: ↑3 and ↓2+2
Comments10

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

Level of difficultyEasy
Reading time10 min
Views44K

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

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

Читать далее
Total votes 61: ↑54 and ↓7+58
Comments173

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

Level of difficultyEasy
Reading time11 min
Views28K

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

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

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

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

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

По техдолгам будут платить наши джуны
Total votes 74: ↑73 and ↓1+83
Comments59

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

Level of difficultyEasy
Reading time5 min
Views3.7K

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

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

Читать далее
Total votes 2: ↑2 and ↓0+2
Comments0

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

Level of difficultyEasy
Reading time30 min
Views22K
Многие из начинающих разработчиков софта для микроконтроллеров реализуют свои проекты исключительно в средствах разработки, которые предоставляются производителем. Многое скрыто от пользователя и очень хорошо скрыто, из-за чего некоторые воспринимают эти процессы сродни настоящей магии. Я, в свою очередь, как человек в пытливым умом и природной любознательностью, решил попробовать собрать проект без использования IDE и различного рода автоматизаций.

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

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

Читать дальше →
Total votes 107: ↑106 and ↓1+122
Comments67

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

Level of difficultyEasy
Reading time1 min
Views1.5K

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

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

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

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

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

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

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

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

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

Читать далее
Total votes 5: ↑2 and ↓30
Comments1

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

Level of difficultyMedium
Reading time41 min
Views18K


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


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


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

Читать дальше →
Total votes 27: ↑26 and ↓1+31
Comments48

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

Level of difficultyMedium
Reading time12 min
Views8K

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

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

Читать далее
Total votes 13: ↑12 and ↓1+15
Comments13

Просто о Stable Diffusion: никакой магии

Level of difficultyEasy
Reading time15 min
Views11K

Если вы не провели последние два года на ферме в Сибири, вы, вероятно, слышали о Stable Diffusion или пробовали генерировать изображения с помощью моделей, вроде Dall-e или Midjourney. Они становятся все лучше каждый день, и по качеству уже сравнимы с людьми, а во многих аспектах даже лучше (например, им не нужно платить).

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

Читать далее
Total votes 44: ↑34 and ↓10+33
Comments28

Почему эффективной сове не выгодно нанимать даже тушканчика (а увольнять, наоборот, выгодно)

Reading time8 min
Views60K

Открываю с утра новости, а там – ни разу не было и вот опять:

Нехватку (высококвалифицированных низкооплачиваемых) специалистов выявили благодаря опросу Института экономической политики им. Гайдара (ИЭП), с результатами исследования ознакомился РБК.

Население при этом: ну да ну да.

Весной 2023 года только 2% сообщили, что в связи с СВО у них выросла зарплата, за последний год материальное положение в той или иной степени улучшилось у 15%, тогда как ухудшилось у 33%, поскольку увеличились текущие расходы (39%), а некоторые (7%) потеряли часть сбережений и/или доходов. Савин, Институт социологии РАН. «Вестник РУДН. Серия: Социология», №4, 2023

Читать далее
Total votes 190: ↑167 and ↓23+185
Comments138

История одной уязвимости в Google Chrome

Level of difficultyMedium
Reading time11 min
Views15K

Эта статья посвящена уязвимости, которую мне удалось обнаружить в браузере Google Chrome в конце прошлого года, а также рассказывает об истории её возникновения. Уязвимость существовала в течение продолжительного периода и была устранена 31 октября 2023 года. Компания Google оценила её в 16000$

Читать далее
Total votes 49: ↑48 and ↓1+56
Comments27

Почему новым сотрудникам платят больше, чем работающим давно?

Reading time7 min
Views114K

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

Так почему же компании так поступают? Они намеренно стремятся вызвать у своих сотрудников недовольство? Они действительно думают, что работники не узнают об этой ситуации? Или они считают, что мы всё равно останемся, ведь они одни из самых лучших работодателей в мире? Позже я поработал какое-то время в отделе оплаты труда и увидел, «как делают колбасу», так что хочу поделиться размышлениями о том, почему новым работникам платят больше и почему лучший способ добиться улучшения зарплаты — перейти в новое место.
Читать дальше →
Total votes 110: ↑106 and ↓4+141
Comments273

Важные аспекты Unicode, о которых должен знать каждый разработчик JavaScript

Level of difficultyMedium
Reading time22 min
Views8.2K


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


Я старался избегать работы с Unicode до тех пор, пока не столкнулся с проблемой, требующей глубокого понимания этого стандарта, а других вариантов решения просто не было.


Приложив определенные усилия, прочитав кучу статей — я постепенно начал понимать что к чему, и это оказалось не так уж трудно. Хотя, некоторые статьи приходилось перечитывать раза по 3.


Как оказалось, Unicode — это универсальный и удобный стандарт, но работать с ним может быть непросто из-за множества абстрактных терминов.


Если у вас есть пробелы в понимании Unicode, то сейчас самое подходящее время их заполнить! Заварите себе вкусный чай или кофе ☕. И давайте погрузимся в удивительный мир абстракций, символов, астралов (astrals) и суррогатов (surrogates).


В этой статье объясняются основные концепции Unicode, которые создадут необходимую базу для работы с ним.


Вы также узнаете, как JavaScript взаимодействует с Unicode и какие трудности могут возникнуть на этом пути.


А также, каким образом новые функции из ECMAScript 2015 могут помочь в решении этих проблем.


Готовы? Давайте начнем!

Читать дальше →
Total votes 43: ↑43 and ↓0+43
Comments6

Теория игр за 15 минут

Level of difficultyEasy
Reading time15 min
Views57K

Многие из вас, я уверен, слышали о теории игр в какой-то момент своей жизни. Если вы хотите выглядеть умным и произвести впечатление на свою девушку — просто упомяните «игру с нулевой суммой» или «эволюционную стратегию», и ваши шансы отвести её домой сегодня вечером только что подскочили на 50%. Или вы можете использовать теорию игр, чтобы принимать решения в инвестировании своих денег (чтобы их полностью потерять и разориться) или, например решая, на какой девушке жениться (что также очень вероятно вас разорит). Как видите, это очень полезная теория.

Чтобы казаться умным - достаточно выучить эти пару выражений, но чтобы на самом деле что-то понимать - придется разобраться. Оказывается, это не так уж сложно и довольно интересно. Давайте посмотрим.

Читать далее
Total votes 92: ↑89 and ↓3+103
Comments30

Нельзя писать безопасный код на C++ без санитайзеров

Level of difficultyEasy
Reading time5 min
Views19K

С++ видится мне огромным франкенштейном: очень уж много разнообразных способов описать свои намерения. В добавок к этому язык пропагандирует политику zero-cost abstractions, из которой следует (помимо прочего), что программист в ответе за все свои действия. Однако, работая с большими кодовыми базами, становится крайне тяжело держать в уме различные тонкости языка, которые держать в уме нужно — иначе Undefined Behavior.

В данной статье хочу рассказать о трех интересных случаях UB, с которыми столкнулся при разработке на С++. Не думаю, что опытным разработчикам примеры из статьи будут полезны, но, полагаю, что начинающим разработчикам смогу показать на своем примере, как не стоит писать код на C++.

Читать далее
Total votes 34: ↑26 and ↓8+24
Comments157

Что нам недодали в C++

Level of difficultyMedium
Reading time12 min
Views24K

C++ последний десяток с лишним лет стремительно развивается. Тем не менее в наших кодовых базах все еще присутствуют многочисленные helper-файлы и классы, которые помогают восполнить пробелы в стандартной библиотеке языка. Как же так вышло, что там в этих ваших helper-файлах, и когда это закончится?

Читать далее
Total votes 64: ↑62 and ↓2+81
Comments177
1
23 ...

Information

Rating
Does not participate
Location
Великий Новгород (Новгород), Новгородская обл., Россия
Date of birth
Registered
Activity