Обновить
0
mt@mtzread⁠-⁠only

тимлид

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

Создаем эмулятор Sega Mega Drive на C++

Уровень сложностиСредний
Время на прочтение26 мин
Охват и читатели58K

В этой статье описано создание эмулятора 16-битной приставки Sega Mega Drive на C++.

Будет много интересного: эмуляция процессора Motorola 68000, реверсинг игр, графика на OpenGL, шейдеры, и многое другое. И все это на современном C++. В статье много картинок, можно хоть на них посмотреть.

Blast Processing!

«Ямбический» электронный ключ на Black Pill

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

Всё прогрессивное человечество празднует 18 апреля Международный день радиолюбителя. В этот день в 1925 году на Международной радиолюбительской конференции в Париже был основан Международный союз радиолюбителей (IARU).

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

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

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

CAT-интерфейс для трансивера «Радио-76»

Время на прочтение5 мин
Охват и читатели14K

В предыдущей публикации о трансивере «Радио-76» упоминалось о синтезаторе частоты с CAT-интерфейсом. В этой статье тема CAT-интерфейса будет раскрыта подробней.

CAT-интерфейс (Computer Aided Transceiver) предназначен для управления частотой, видами модуляции и другими функциями радиостанции с помощью компьютера.

В сети есть множество описаний радиолюбительских синтезаторов на базе Si5351, но в массе своей CAT они не поддерживают. Данная публикация этот пробел должна восполнить.
Читать дальше →

Прошиваем программу не только в начало FLASH памяти STM32

Уровень сложностиСредний
Время на прочтение3 мин
Охват и читатели15K

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

Читать далее

STM32 bootloader DFU mode с использованием CubeMX. Инструкция пошаговая, step by step

Время на прочтение6 мин
Охват и читатели79K
Итак, сочинение сего мандригала было сподвигнуто практически полным отсутствием пошаговой инструкции с использованием обычного инструментария предлагаемого STMicroelectronics.

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

Предлагаемый материал содержит процедуру использования пакета CubeMX, «загружалки» DfuSeDemo и утилиты подготовки прошивки Dfu file manager, т. е. Мы абстрагируем наши «хотелки» от железки, да простят меня гуру макроассемблера и даташита.
Читать дальше →

USB на регистрах: STM32L1 / STM32F1

Время на прочтение18 мин
Охват и читатели30K


Еще более низкий уровень (avr-vusb)
USB на регистрах: bulk endpoint на примере Mass Storage
USB на регистрах: interrupt endpoint на примере HID
USB на регистрах: isochronous endpoint на примере Audio device

С программным USB на примере AVR мы уже познакомились, пришла пора взяться за более тяжелые камни — STM32. Подопытными у нас будут классический STM32F103C8T6 а также представитель малопотребляющей серии STM32L151RCT6. Как и раньше, пользоваться покупными отладочными платами и HAL'ом не будем, отдав предпочтение велосипеду.
Читать дальше →

Виртуальный COM-порт на STM32 или как управлять контроллером через USB не привлекая внимания санитаров

Время на прочтение24 мин
Охват и читатели48K

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

как же оно всё-таки работает

Управление напряжением PWM сигналом (PWM+RC=DAC)

Уровень сложностиПростой
Время на прочтение8 мин
Охват и читатели27K

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

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

В этом тексте я написал как мне это удалось.

Читать далее

Что нового в PostgreSQL 11: INCLUDE-индексы

Время на прочтение2 мин
Охват и читатели30K
image

Релиз PostgreSQL 11 состоится еще не скоро, только в октябре. Но фичфриз уже наступил, а значит мы знаем, какие фичи попали в этот релиз, и можем их потестировать, собрав PostgreSQL из ветки master. Особого внимания заслуживает фича под названием INCLUDE-индексы. Патч изначально написан Анастасией Лубенниковой, а потом допилен Александром Коротковым и Федором Сигаевым. Протолкнуть его в PostgreSQL заняло «всего лишь» что-то около трех лет.
Читать дальше →

Исходный код Quake III

Время на прочтение13 мин
Охват и читатели44K
image

[Примечание переводчика: перевод первой части этой статьи уже есть на Хабре, но её автор почему-то не завершил работу.]

Рендерер Quake III


Рендерер Quake III стал эволюционным развитием рендерера Quake II с аппаратным ускорением: классическая часть построена на архитектуре «двоичного разбиения»/«потенциально видимых наборов», но добавлены два новых заметных ключевых аспекта:

  • Система шейдеров, построенная поверх фиксированного конвейера OpenGL 1.X. Это было большим достижением для 1999 года. Она обеспечивала большое пространство для инноваций в эру до повсеместно распространённых сегодня вершинных, геометрических и фрагментных шейдеров.
  • Поддержка многоядерной архитектуры: клиент-серверная модель OpenGL блокирует некоторые методы и система потоков частично решает эту проблему.
Читать дальше →

Настройка IDEA для чистокодеров

Время на прочтение4 мин
Охват и читатели293K
Я люблю две вещи: Intellij IDEA и чистый код (Clean Code).
IDEA создана для чистого кода. Многие настройки по умолчанию уже стимулируют вас писать как надо.


Но она всё ещё не идеальна.
Когда я устанавливаю новую копию IDEA, я пробегаю по настройкам и выставляю свои любимые галочки.
Хочу ими с вами поделиться в надежде, что когда-нибудь и они станут стандартом.

Мои любимые настройки IDEA с картинками

Подробно о задачах Gradle

Время на прочтение24 мин
Охват и читатели133K


Перевод второй главы свободно распространяемой книги Building and Testing with Gradle

Задача (task) является основным компонентом процесса сборки в файле билда Gradle. Задачи представляют собой именованные наборы инструкций билда, которые Gradle запускает выполняя сборку приложения. При сравнении с другими билд-системами, задачи могут показаться знакомой абстракцией. Однако Gradle предоставляет более развитую модель, в отличие от той, которая вам уже может быть знакома. По сравнению с традиционными возможностями объявления операций билда, связанных зависимостями, задачи Gradle являются полнофункциональными объектами, которыми вы при желании можете управлять программно.

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

Многомодульный Java-проект с Gradle. Шаг за шагом

Время на прочтение11 мин
Охват и читатели202K
Очень много статей о Gradle написано. И со своей стороны хотелось бы добавить в копилку такую пошаговую инструкцию, прочтение которой, я надеюсь, позволит тем, кто плохо знаком с Gradle, “распробовать” и продолжить самостоятельно изучать этот инструмент.

Данная статья не будет подробно описывать такие темы, как плагины gradle (plugin), задачи (task), зависимости (dependencies), автоматическое тестирование и прочие прелести этого сборщика проектов. Во-первых, каждая тема заслуживает отдельной статьи или даже серии статей, а во-вторых, на эти темы уже есть статьи на хабре, например: Gradle: Tasks Are Code, Gradle: Better Way To Build. А еще на официальном сайте Gradle есть прекрасно написанный Gradle User Guide. Я же cфокусирую внимание на непосредственном решении поставленной задачи, и все сопутствующие темы будут описаны в рамках этой самой задачи.
Сначала определимся с целью, что же мы хотим получить на выходе? А цель указана в заголовке статьи. Мы хотим получить проект с несколькими модулями, который собирается с помощью Gradle. И так, приступим.
Читать дальше →

Spring MVC/Security, REST, Hibernate, Liquibase запускаем в две строки

Время на прочтение71 мин
Охват и читатели43K

Современные системы сборки позволяют полностью автоматизировать процесс компиляции и запуска приложения из исходников. На целевой машине необходим лишь JDK, все остальное включая и сам сборщик загрузится налету. Надо лишь правильно построить процесс сборки и по запуску двух команд получить, например, следующее: запуск базы данных, выполнение SQL скриптов, компиляцию Java, Javascript и CSS файлов, запуск контейнера сервлетов. Реализуется это с помощью Gradle, HSQLDB, Liquibase, Google closure compile и Gretty. Подробнее в статье.
Читать дальше →

RabbitMQ Spring tutorial

Время на прочтение21 мин
Охват и читатели118K
На сайте rabbitmq.com уже есть подробные примеры и клиент для java. Однако если в проекте уже используется спринг, то намного удобнее использовать библиотеку Spring AMQP. Эта статья содержит реализацию всех шести официальных примеров работы с RabbitMQ.
Читать дальше →

Оптимизация обработки сообщений RabbitMQ

Время на прочтение3 мин
Охват и читатели67K
В рамках рабочих задач недавно мною было проведено небольшое исследование на тему целесообразности использования опции prefetchCount при работе с брокером сообщений RabbitMQ.
Хочу поделиться этим материалом в виде слайдов и комментариев к ним.

Тесты проводились на конкретном проекте, но в целом они справедливы для большинства случаев, где обработка сообщений (выполнение задач) занимает хоть сколько-то существенное время (при обработке менее 1000 сообщений в секунду).

* на слайдах вместо слова «подписчик» используется «консумер», в комментариях для единообразия тоже
* рассматривается отдельно взятая очередь с пятью консумерами (C1..C5)

Идеальные условия



Узнать всю правду

DevOps: отправляем метрики и спим спокойно

Время на прочтение9 мин
Охват и читатели19K


Внезапно, ночью раздается звонок и мы узнаем что наше приложение не работает. Есть 2 часа на его реанимацию…
Где же наш мониторинг и логи программы!?

Свой облачный хостинг за 5 минут. Часть 3: Consul, Registrator, Consul-Template

Время на прочтение10 мин
Охват и читатели40K
Docker friends

Привет Хабр! Я продолжаю цикл статей о том, как построить свой облачный хостинг за 5 минут. В прошлой статье мы рассмотрели инструменты, которые помогут решить нам проблему обнаружения сервисов (Service Discovery). В это части мы приступим к практике, построим облако и посмотрим как эти инструменты ведут себя в реальной жизни.

Как и прежде, всю работу может выполнить обычный программист в течение 5 минут, просто запустив набор сценариев для Ansible, которые я подготовил специально для вас и выложил на GitHub.

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

Чёрная пятница у российского VDS-хостера

Время на прочтение1 мин
Охват и читатели9.5K
image
Наша команда весьма скептически относится к западным традициям. Но что поделать? Чёрная пятница приобрела неплохую популярность в России за последние 2 года. Народ хочет праздника и веселья скидок!

В прошлой публикации мы рассказали о том, как создавали лоукост VDS-хостинг в России и с какими сложностями столкнулись.

В этот раз хотим сообщить о том, что 27 ноября, в пятницу, мы устроим распродажу!
С 00:00 до 23:59 MSK можно будет заказать любой виртуальный сервер со скидкой 50% на периоды 1 либо 3 месяца.

Текущие клиенты не останутся в стороне. Они смогут продлить свои VDS со скидкой 50%.
Чтобы устроить себе «праздник», 27 ноября вам потребуется промо код: BLACKFRIDAY
Как его применить – мы вкратце сейчас расскажем.
Читать дальше →

Про программистов

Время на прочтение2 мин
Охват и читатели52K
Не смог удержаться — очередной шедевр от 420 к «Часу кода».
Создатели (мультфильма) поддерживают идею увеличения популяции программистов и призывают зрителей по мере сил этому способствовать. Компания Edison всеми руками за такую движуху, ибо чем больше программистов на свете, тем круче.



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

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

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

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

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

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

А другой мальчик был такой умный,
Читать дальше →

Информация

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