Как стать автором
Обновить
4
0
Максим @mctMaks

инженер-программист

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

Скандальная история последней роторной шифровальной машины

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

И какую роль этот гаджет сыграл в шпионской операции «Рубикон»



Кликабельно: шифровальная машина HX-63 – электромеханическая роторная система, спроектированная и созданная компанией Crypto AG. Машина использует девять роторов (справа от центра) для шифрования сообщений. Слева вверху – двойной принтер для печати на ленте.

Я рос в Нью-Йорке и всю жизнь мечтал быть шпионом. Но когда в январе 1968 года я закончил колледж, бушевали Холодная и Вьетнамская войны, и быть шпионом казалось довольно рискованно. Поэтому я стал инженером-электронщиком, и работал у подрядчика минобороны США над анализаторами спектра реального времени.

В 1976 году при посещении Музея польской армии в Варшаве я увидел "Энигму" – знаменитую немецкую шифровальную машину времён Второй мировой войны. Я был поражён. Через несколько лет мне повезло попасть в огромную штаб-квартиру компании-разработчика шифровальных машин Crypto AG (CAG), расположенную в швейцарской коммуне Штайнхаузен. Там я подружился с криптографом, занимающим довольно высокую должность. И мой друг выдал мне внутреннюю историю компании, написанную её основателем, Борисом Хагелиным. В ней упоминалась шифровальная машина 1963 года выпуска HX-63.
Читать дальше →
Всего голосов 17: ↑14 и ↓3+12
Комментарии5

Сеттер или геттер-ссылка — как сделать правильный выбор?

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

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

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

C++20 в 2020: Модули

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

Разработка C++20 идет полным ходом, и это принесет немало новых возможностей. У нас есть библиотека ranges, корутины, концепции и новая библиотека форматирования строк. Но, возможно, самой большой потенциальной возможностью повлиять на структуру и архитектуру нашего кода являются модули.

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

Немного истории

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

Модули C++ — это попытка уменьшить потребность в одной конкретной директиве препроцессора, #include. #include позволяет нам разделить исходный код на логические части — в частности, интерфейс (обычно расположенный в файле ".h" или "header") и реализацию (обычно расположенную в файле ".cpp" или "source"). Разделение на заголовочный и исходный файлы дает огромное количество преимуществ, включая:

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

233 орешка для Золушки: отбираем цвета для «идеальной» палитры

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


В процессе разработки игры в текстовом режиме, мне пришлось нарисовать больше сотни анимационных ASCII спрайтов. После релиза игра получила неожиданно хорошие отзывы и было принято решение делать продолжение. Рисуя спрайты для первой части и перепробовав с десяток вариантов выбора цвета и несколько десятков различных палитр, я понял, что нужен свой, «идеальный» набор цветов на все времена. За сотни и сотни часов рисования, сложились следующие критерии идеальности палитры:

  • Краткость: небольшое количество цветов в палитре. Весь набор цветов можно охватить одним взглядом.
  • Полнота: цвета палитры должны равномерно и достаточно плотно заполнять цветовое пространство.
  • Дискретность: цвета палитры должны отличаться друг от друга на глаз.
  • Группировка: цвета должны быть удобно сгруппированы для быстрого нахождения нужного.

Оказалось, что можно подобрать набор из ровно 233 цветов, который удовлетворит всем этим критериям.
Посмотреть идеальную палитру
Всего голосов 65: ↑61 и ↓4+57
Комментарии43

Гарри Поттер и тайна уральских подземных чертей

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

Автор: Даня Годес

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

Со сравнительно недавних пор - где-то с V век до н. э. - в Китае известен зверь с поэтичным названием “фин-шу”, т. е. “подземная крыса”. По преданию, сия зверюга внешне напоминает грызуна, однако размером с огромного буйвола, обитает в тёмном подземелье у северных морей и питается [ДАННЫЕ УДАЛЕНЫ]. Для рытья нор у этого монстра есть рога, однако живёт он так не от хорошей жизни: солнечный свет для фин-шу губителен, и под ним он мгновенно гибнет мучительной смертью. Как Дракула. Оставляя после себя те самые землеройные рога, загнутые характерной спиралью и годные на поделки. По другим версиям, звать эту тварь “йен-шу” (“скрывающаяся мышь”) - она огромная и сильная, не имеет хвоста и роет себе глубокие норы в лесистой местности.

Читать далее
Всего голосов 34: ↑30 и ↓4+36
Комментарии8

Загадочная волна-убийца

Время на прочтение5 мин
Количество просмотров46K
image

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

image
Читать дальше →
Всего голосов 62: ↑56 и ↓6+77
Комментарии36

Маракасы чешуйчатых интровертов: акустическая иллюзия гремучих змей

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


Всегда есть хищники, всегда есть добыча. Но не стоит забывать, что в пищевой цепи звеньев много, и всегда есть кто-то сильнее. Поэтому многие виды, даже будучи свирепыми охотниками, обладают рядом физиологических особенностей, главная цель которых — напугать или, если на то пошло, победить нападающего. Быть сильнее своих врагов это, конечно, здорово, но любой поединок за выживание требует затрат сил и может привести к травмам. Посему куда лучше избежать боя, предупредив нападающего, что его приближение было замечено, а потом напугать его, чтобы тот дважды подумал, стоит ли ввязываться в драку. Ярким примером такой тактики являются некоторые виды гремучих змей, получивших свое название из-за «погремушки» на кончике хвоста. Когда опасность слишком близка, змея издает гремящий звук, тем самым предупреждая о своей осведомленности и готовности защищаться. Ученые из Грацского университета имени Карла и Франца (Австрия) установили, что намеренные изменение частоты дребезжания погремушки вводит в заблуждение касательно расстояния до змеи, издающей звук. То есть слушателю кажется, что змея ближе, чем на самом деле. Как именно работает столь необычный защитный механизм, мы узнаем из доклада ученых. Поехали.
Читать дальше →
Всего голосов 15: ↑13 и ↓2+16
Комментарии2

Инженерная магия кинематографа

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

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

Подробнее про инженерную сторону кино
Всего голосов 14: ↑14 и ↓0+14
Комментарии10

Как работает робот Atlas от Boston Dynamics?

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

Как Boston Dynamics удалось научить робота Atlas бегать, прыгать, делать сальто и танцевальные па? О секретах робота рассказали основатель Boston Dynamics Марк Райберт и инженер компании Скотт Куиндерсма. Это статья подготовлена по материалам их выступления. Но как говорится, лучше 1 раз увидеть, чем 100 раз прочитать, поэтому смотрите наше видео:

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

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

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

Пишем терминальный сервер для микроконтроллера на С

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

Всем привет! В процессе работы над гексаподом AIWM я все чаще задумывался о каком-нибудь удобном интерфейсе для общения с ним. В результате тесной работы с Linux через терминал я подумал, а почему бы не использовать такой же интерфейс и в гексаподе? Я был очень удивлен, что по запросу "STM32 terminal" я не нашел готовых реализаций. Ну раз нет готовых, то напишем свою реализацию терминального сервера, которую можно использовать в микроконтроллерах. Сделаем это без использования динамической памяти и прочих опасных радостей.

Читать далее
Всего голосов 25: ↑24 и ↓1+33
Комментарии19

Как оформить серию коммитов Git, чтобы её приняли в любой проект

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

Добрый день, коллеги! Доказывать, что нужно использовать систему контроля версий, уже давно не нужно. И Git занял тут лидирующую позицию, стремительно вытеснив SVN. Но это инструмент, а инструментом нужно уметь пользоваться, чтобы добиться лучших результатов. Как топором, один человек сможет просто срубить дерево а другой из этого дерева сможет сделать великолепную скульптуру. Так и с помощью Git, один человек сможет просто не потерять результаты своего труда за день, а другие смогут организовать совместную работу над проектом нескольких сотен человек. Да так, что о любой строчке кода можно будет и через пять лет сказать, откуда она взялась и для чего нужна.

Постараюсь рассказать для начинающих и не очень разработчиков, как оформлять свои коммиты, чтобы их максимально быстро и без претензий принимали в любые проекты, как опенсорсные так и коммерческие.

Читать далее
Всего голосов 42: ↑39 и ↓3+53
Комментарии30

Столпы Шрёдингера

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

«Столпы творения» — они еще видимы, но уже не существуют


Столпы Шрёдингера. «Столпы творения» — они еще видимы, но уже не существуют. Статья по астрономии. Автор Андрей Климковский

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

Прежде всего стоит отметить, что космический телескоп имени Эдвина Хаббла — самый сильный и зоркий орбитальный телескоп землян — запускался совсем не для того, чтобы постить потом в сети удивительной красоты фотографии туманностей, галактик, звездных скоплений — это все побочный продукт и издержки PR-активности отдела NASA отвечающего за одобрение всех этих безбашенных и крайне дорогих космических проектов населением США. Людям нравятся картинки. Вот и хорошо.
Всего голосов 19: ↑18 и ↓1+25
Комментарии35

Античность против Средневековья. Чьи армии сильней?

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

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

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

Несмотря на то, что античность и средневековье вроде как плавно друг в друга перетекают, представляем мы себе их несколько иначе. Античность – это, стало быть, амфитеатры, колонны и солдаты в туниках, а средневековье – это рыцари, замки и турниры. При этом, несмотря на разницу между ними в 1000-1500 лет воюют они донельзя схожим образом – тыкают острыми и тупыми предметами друг в друга, на что невольно напрашивается вопрос – а кто сильнее?

Устраивайтесь поудобнее я вам расскажу.
Всего голосов 57: ↑47 и ↓10+55
Комментарии87

Blender, 1000 мелочей

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

Собрал наиболее востребованные базовые приёмы работы с самым ламповым пакетом трёхмерной графики (в интерфейсе "классической" версии 2.79): немного общих моментов и часто используемые инструменты редактирования.

Продолжение (материалы и рендер)

Далее
Всего голосов 10: ↑8 и ↓2+9
Комментарии25

Регулярные выражения. Всё проще, чем кажется

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

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

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

Читать далее
Всего голосов 40: ↑36 и ↓4+41
Комментарии71

Конечный автомат (он же машина состояний) на чистом С

Время на прочтение5 мин
Количество просмотров129K
Почти каждый микроконтроллерщик сталкивался с громадными switch-case и мучительно их отлаживал.
И много кто, начиная писать реализацию какого-либо протокола, задумывался как написать её красиво, изящно, так чтобы через месяц было понятно что ты имел в виду, чтобы она не отжирала всю память и вообще какала бабочками.
И вот тут на помощь приходят машины состояний, они же конечные автоматы (те самые которые используются в регулярных выражениях).

Собственно через регулярные выражения я к ним и пришёл.
Читать дальше →
Всего голосов 51: ↑48 и ↓3+45
Комментарии50

Как разработчики Factorio оптимизировали код игры

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

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

Дядя Боб


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

Раньше я думал, что мы поддерживаем достаточно высокий уровень кода и имеем вполне неплохую методологию работы. Но на самом деле мы были жертвами избирательной слепоты. Интересно, что некоторые части кода изначально были хорошими, и оставались довольно неплохими все эти годы, даже когда игра сильно расширилась… а другие части кода значительно деградировали.
Всего голосов 9: ↑8 и ↓1+12
Комментарии4

Использование coroutines из С++20 в связке с NRF52832 и GTest

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

Появилась идея в домашнем проекте попробовать использовать сопрограммы из С++20 на маленькой железке. В качестве модуля для экспериментов был выбран E73 NRF52832. Из инструментария, который использовался в процессе разработки- arm-gcc-gnu-none-eabi 10.2, MSVC для проверки идей и прогона тестов на Windows-платформе. Изначально было в планах продемонстрировать на чем-то концепцию и как именно их можно было применять. Была идея адаптирования примера в виде мигания светодиодом, но он был слишком простой. Необходимо было придумать что-то более сложное и более полезное, что ли. Таким образом появилась идея переписать драйвер дисплея и пары фрагментов SPI-FLASH в проекте-долгострое.

Читать далее
Всего голосов 16: ↑13 и ↓3+16
Комментарии11

Реактор БРЕСТ-300 и замкнутый цикл в ядерной энергетике

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


«В Северске началась новая эра атомной энергетики. На площадке Сибирского химкомбината 8 июня стартовало строительство первого в мире энергоблока четвертого поколения с быстрым реактором естественной безопасности БРЕСТ-ОД‑300.»

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

Давайте же разберёмся, что же на самом деле представляют собой этот инновационный реактор и пресловутый замкнутый цикл.
Читать дальше →
Всего голосов 83: ↑78 и ↓5+102
Комментарии52

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

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


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

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

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

Это четвёртая часть, рассказывающая о новом модуле стандартной библиотеки, — Ranges.
Читать дальше →
Всего голосов 16: ↑15 и ↓1+19
Комментарии63

Информация

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