Pull to refresh
4
0
Алексей Голубев @FreeCX

Ленивый программист

Send message

Компактная реализация RSA для встраиваемых применений

Reading time15 min
Views61K
RSA является широкоизвестным алгоритмом шифрования с открытым ключом. На его основе, кроме асимметричного шифрования, можно также реализовать электронную подпись (ЭЦП). Эти возможности привлекательны для встраиваемых систем, микроконтроллеров. Сам метод шифрования с виду чрезвычайно прост:
C = (Me) mod n (1)
где C,M,e,n — целые числа, M — открытый текст, числа e и n представляют собой открытый ключ, C — шифротекст. mod — остаток от деления.

Расширование выглядит столь же просто:
M = (Cd) mod n (2)
где C,M,n играют ту же роль, что и при шифровании, d — закрытый ключ.

При этом n=p*q, где p и q — простые числа (секретные), e обычно равно 65537, d вычисляется на основе e, p и q. Криптостойкость основана на том, что для достаточно больших p и q задача разложения n на множители или обращения формулы шифрования без знания p и q не решается за приемлемое время.

Но эта кажущаяся простота обманчива. За ней скрывается огромное количество деталей и сложностей реализации. Особенно если стоит цель получить эффективную по быстродействию и памяти реализацию, пригодную для применения в микроконтроллерах. Я не нашел в интернете подходящих библиотек, а попытки изучения исходников libgcrypt заводят в такие дебри, из которых не выберешься. Поэтому я написал свою компактную библиотеку, которой и делюсь с уважаемыми читателями.
Читать дальше →

Ремонт шлейфа LEGO NXT

Reading time6 min
Views44K
Статья описывает один из возможных способов кустарного ремонта графитового шлейфа LCD управляющего блока LEGO Mindstorms NXT. Адресована тем, кому уже не помогает подкладывание под шлейф свернутых бумажек, резинок или магическое действо с прогреванием конденсаторов на плате кнопок управления (какая то сложная магия, я так и не смог понять в чем заключается её сакральный смысл).
Также статья может быть полезна тем, у кого перестал работать экран любимого калькулятора, брелка автомобильной сигнализации, швейной машинки и других устройств, ремонт которых в специализированных мастерских по каким-то причинам невозможен или нецелесообразен. Написана непрофессионалом для непрофессионалов, для ремонта будут использованы общедоступные материалы и инструменты. Осторожно, в тексте статьи много больших фотографий посредственного качества.
Читать дальше →

Лицензия для вашего open-source проекта

Reading time98 min
Views191K
В этой статье я хочу немного поговорить об авторском праве и свободных лицензиях на ПО. Текст является результатом самостоятельного выбора лицензий и их применения к своим проектам.

Статья будет полезна тем, кто хочет:

— в общих чертах понять, что такое авторское право (но лучше обратиться к юристу);
— подобрать свободную лицензию для своего проекта;
— разобраться, что нужно писать в шапке файла исходного кода.
Читать дальше →

Software renderer — 1: матчасть

Reading time29 min
Views86K
Программный рендеринг (software rendering) — это процесс построения изображения без помощи GPU. Этот процесс может идти в одном из двух режимов: в реальном времени (вычисление большого числа кадров в секунду — необходимо для интерактивных приложений, например, игр) и в «оффлайн» режиме (при котором время, которое может быть потрачено на вычисление одного кадра, не ограничено настолько строго — вычисления могут длиться часы или даже дни). Я буду рассматривать только режим рендеринга в реальном времени.

У этого подхода существуют как недостатки так и достоинства. Очевидным недостатком является производительность — CPU не в состоянии конкурировать с современными видеокартами в этой области. К достоинствам стоит причислить независимость от видеокарты — именно поэтому он используется как замена аппаратного рендеринга в случаях, когда видеокарта не поддерживает ту или иную возможность (так называемый software fallback). Существуют и проекты, цель которых — полностью заменить аппаратный рендеринг программным, например, WARP, входящий в состав Direct3D 11.

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

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

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

В конце статьи будет ссылка на гитхаб проекта, который можно рассматривать как пример реализации.
Читать дальше →

Сегодня день рождения великого популяризатора науки Карла Сагана

Reading time1 min
Views9.5K


9 ноября 1934 года родился американский астроном, астрофизик и выдающийся популяризатор науки Карл Саган.

Он вдохновил не одно поколение мальчишек и девчонок заниматься наукой. Известный астрофизик и популяризатор науки Нил Деграсс Тайсон, например, рассказывал в своем интервью, как, будучи еще мальчишкой, он получил приглашение от Карла Сагана посетить его лабораторию в Корнельском университете, что повлияло на его выбор профессии. Под катом много видео.
Читать дальше →

Как найти свое призвание (новая статья от Оливера Эмбертона)

Reading time6 min
Views292K
image

Очень многие из нас верят в существование волшебной субстанции под названием «призвание». «Если бы я только мог найти свое призвание», — с горечью говорим мы. «Я был бы счастлив, если бы нашел свое призвание...»

Что сказать? Призвание — реальность, причем, невероятно могущественная. Но почти все, что люди знают о его поиске, в корне неверно. Именно об этом ведет речь в своей последней статье Оливер Эмбертон. Продолжаем размышлять над личной эффективностью!
Читать дальше →

Идеальная передача и универсальные ссылки в C++

Reading time9 min
Views164K
Недавно на isocpp.org была опубликована ссылка на статью Eli Bendersky «Perfect forwarding and universal references in C++». В этой небольшой статье есть простой ответ на простой вопрос — для решения каких задач и как нужно использовать rvalue-ссылки.
Узнать этот ответ

Использование MS Project для управления проектами по разработке ПО

Reading time10 min
Views480K
Я хочу поделиться своим опытом использования MS Project для управления проектами по разработке программного обеспечения. Я уже лет 10 занимаюсь управлением проектами,
и в результате у меня родилась некоторая методология использования MS Project, которая позволяет получить от него немалую пользу и при этом меньше зависеть от его недостатков.
Читать дальше →

XMonad + XMobar = ❤

Reading time10 min
Views71K
Многие слышали про тайловые оконные менеджеры, некоторые даже слышали о XMonad. А ребята из Google даже променяли Unity/Gnome на XMonad. Что же это такое, как это настраивать и как с этим жить? Краткий workaround для любителей кастомизировать всё подряд.


Подробности

С++ встречи в России

Reading time2 min
Views3.2K

Всем привет!

Намедни был отчёт о CppCon, я решил напомнить, что у нас тоже жизнь кипит, пусть и не в таком масштабе.
Несколько раз я уже писал на Хабре про встречи C++ User Group. Многим в этом хабе я спамил в инбоксы приглашая их на встречи, надеюсь, без обид.
Читать дальше →

Курс пиксель-арта

Reading time4 min
Views294K
Это перевод публикации «Les Forges Pixel Art Course».

pdf на английском.

Часть 1: Правильные инструменты
Часть 2: Линии и кривые
Часть 3: Перспективы
Часть 4: Тень и свет
Часть 5: Палитры цветов
Часть 6: Сглаживание
Часть 7: Текстуры и размытие
Часть 8: Мир тайлов

Предисловие


Есть много определений пиксель-арта, но здесь мы будем использовать такое: изображение пиксель-арт, если оно создано целиком руками, и присутствует контроль над цветом и позицией каждого пиксела, который нарисован. Несомненно, в пиксель арте включение или использование кистей или инструментов размытия или машин деградации (degraded machines, не уверен), и других опций ПО, которые «современны», нами не используются (вообще-то put at our disposal значит «в нашем распоряжении», но по логике вроде правильнее так). Он ограничен инструментами такими как «карандаш» и «заливка».

Тем не менее не скажешь, что пиксель-арт или не-пиксель-арт графика — более или менее красива. Справедливее сказать, что пиксель-арт другой, и он лучше подходит для игр стиля «ретро» (как Супер Нинтендо или Гейм Бой). Вы можете также комбинировать техники изученные здесь, с эффектами из не-пиксель-арта, для создания гибридного стиля.

Так, здесь вы будете изучать техническую часть пиксель-арта. Тем не менее никогда я не сделаю вас художником… по простой причине, что я тоже не художник. Я не научу вас ни человеческой анатомии, ни структуре искусств, и мало скажу о перспективе. В этом руководстве, вы можете найти много информации о техниках пиксель-арта. В конце, вы должны будете быть способны создать персонажей и пейзаж для ваших игр, при условии что вы будете внимательны, практиковаться регулярно, и применять данные советы.
Читать дальше →

Анализатор исходных кодов RATS

Reading time4 min
Views11K
Одним из методов поиска уязвимостей в программном обеспечении является использование анализаторов исходных текстов. В данной посте хочу рассказать об одном из них, а именно о RATS (Rough Auditing Tool for Security). Упоминания о RATS встречались не раз в уважаемых мной источниках, а именно тут, тут и еще здесь. Однако, реального примера использования нигде не было.
Читать дальше →

Вышла книга «Getting Started with LLVM Core Libraries»

Reading time2 min
Views13K
Думаю, многим, также, как и мне, книга «Getting Started with LLVM Core Libraries» покажется интересной. Это первая книга, посвященная целиком и полностью LLVM. В основном, как следует из названия, ориентирована на новичков, которые только обратили свое внимание на LLVM, но уже имеют опыт программирования на C++.
Небольшое описание содержимого книги

Об истории геймдизайна, вымирании классических жанров и о том, что нас ждет в будущем

Reading time11 min
Views22K

«У меня было 2 Батлфилда, 75 инди-игр, 5 ассасин кридов, пол-страницы шлака, который был куплен из жадности на скидках и ММОRPG всех сортов и расцветок, а также новый CoD, контра, подписка в WoW, симулятор козла и пара предзаказов. Не то что бы это был необходимый запас игр для развлечения по вечерам. Но если начал собирать и покупать игры, становится трудно остановиться. Единственное, что вызывало у меня опасение — это симулятор козла. Нет ничего более беспомощного, безответственного и испорченного, чем люди играющие в такие тупые игры. Я знал, что рано или поздно я залипну и в эту дрянь.» — Так можно усредненно описать набор предпочтений современного геймера.

Однако, здравствуйте.
Казалось бы, при таком разнообразии на рынке все жанры гейм-индустрии, и сама она в целом, должны процветать. Но что же пошло не так?

В рамках восстановления тематических для GT публикаций материал переработан.

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

Как создать интересный игровой сеттинг? Уровень четвертый: звукошумовые эффекты

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


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

Разворачиваем сервис построения маршрутов OSRM

Reading time4 min
Views62K
Совсем недавно, в одном из проектов, нам была поставлена задача — научиться строить маршруты на карте для велосипедных прогулок.

Первым делом, мы начали смотреть маршруты Google и Яндекс. И к сожалению, пришлось от них отказаться, т.к. первые разрешали показывать их только на родных картах, вторые, не знали что есть велосипеды и даже пешеходы.

Немного изучив предметную область, мы нашли наконец что искали: Open Source Routing Machine. Проект, с открытым исходным кодом, который позволяет развернуть у себя на сервере, свой собственный сервис построения маршрутов.



Тайлы: MapBox, Яндекс-Карты
Картографические данные: участники OpenStreetMap

Разобравшись, как его настраивать и запускать, мы решили поделиться этим и пересказать своими словами процесс установки, и то с чем пришлось столкнуться в процессе.
Читать дальше →

Разговорное радио на коленке

Reading time12 min
Views36K
В определённый момент, страдая от лени обновлять новостной блог про OpenStreetMap, я решил сделать еженедельную передачу про проект. Вместо трёх часов вымучивания текста — часик пообсуждать со знакомыми участниками OSM новинки и актуальные вопросы. Отличная идея, порадовались и разошлись. Через полгода со словами «ну блин хватит бездельничать, давайте послезавтра звоните в скайп» я начал разбираться, как в этом вашем линуксе записать звук с микрофона и скайпа, одновременно передавая его в интернет. Эта история — про настройку PulseAudio, про скайп и мамбл, и про удивительный JACK. Оказалось, поднять собственное радио с гостями в эфире проще, чем нарисовать для него логотип.
Читать дальше →

Как я писал кросплатформенный 3d игровой движок

Reading time18 min
Views81K
Приветствую Хабр! Многие из нас наверняка задумывались «а не написать ли мне игру самому». Сейчас я веду проект «Open tomb» — попытка создать переносимый движок для игры в первые 5 частей «Tomb raider», который выложен на sourceforge.com, однако, судя по своему опыту, многим будет интересна история с некоторыми деталями о том, как движок писался с нуля и с практически отсутствующими знаниями в этой области. Даже сейчас многих знаний не хватает, а иногда просто не хватает мотивации что-то сделать лучше, или правильнее, однако лучше перейти к тому, как все же проект оживал шаг за шагом.
Читать дальше →

Как создать интересный игровой сеттинг? Уровень третий: музыка

Reading time7 min
Views22K
Относительно недавно в моем Steam-аккаунте появилась игра Bioshock. Так как она была выпущена 6 лет назад, возникли некоторые проблемы с совместимостью: звук присутствовал только во время заставки, а сам геймплей проходил в полной тишине. Никакой фоновой музыки, диалогов, криков Сестричек или грохота выстрелов. Субтитры присутствовали, но играть было невозможно: геймплей выглядел ненатурально и создавал ощущение сильного дискомфорта.



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

Разбираем протокол 2-wire JTAG

Reading time10 min
Views34K


2-wire JTAG (он же двухпроводной JTAG, он же CompactJTAG, он же cJTAG) – это новомодный интерфейс, являющийся частью стандарта IEEE 1149.7-2009. Он обеспечивает ту же и даже большую функциональность, что и обычный JTAG (IEEE 1149.1), но использует всего два сигнала вместо четырех.

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

Information

Rating
Does not participate
Registered
Activity