Обновить
157.02

Системное программирование *

Обеспечение работы прикладного ПО

Сначала показывать
Порог рейтинга
Уровень сложности

Отечественный процессор от компании ЭЛВИС

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

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

В этой статье речь пойдёт об отечественных производителях процессоров (микроконтроллеров). Сейчас эта тема достаточно популярна: например, этому была посвящена конференция OSDay. В общем, в этот раз к нам попала плата от компании «Электронные вычислительно-информационные системы» ЭЛВИС. Мы затащили туда свой Embox и решили, что пользователям хабра было бы интересно узнать и об этой эпопее.
Читать дальше →

Баг в NTFS, или как подвесить всю систему

Время на прочтение5 мин
Количество просмотров83K
Не так давно при разработке фильтра файловых систем возникла проблема, которая приводила к подвисанию всей системы. Казалось бы, фильтр выполнял очень простые действия и сам был очень примитивным. Чтобы выяснить причину, пришлось спуститься до отладки и реверс-инжиниринга драйвера NTFS. Анализ выявил очень интересный эффект. Если скомпилировать и выполнить очень простую программу, изображенную на рисунке ниже, то доступ к соответствующему тому подвиснет.


Т.е. в данном примере, если попытаться открыть любой файл относительно файла $mft, доступ ко всему тому «С» повиснет, а так как этот том является системным, подвиснет и вся система. При этом не нужно иметь каких-либо прав. Если же том был не системным, то повиснет только доступ к этому тому, но если выполнить перезагрузку, то система повиснет на ней.
Читать дальше →

Как и зачем создавать NginX-модуль — теория, практика, профит

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


Василий Сошников (Mail.Ru)


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

Использование библиотеки stm32cube для создания платформо независимых драйверов

Время на прочтение18 мин
Количество просмотров16K
Всем привет! В данной статье я бы хотел поделиться опытом создания драйверов для платформ серии stm32. Идея заключается в том, чтобы в ОС Embox, не приходилось создавать драйвера для каждой серии платформ STM32F3, STM32F4 и так далее. Ведь кроме того, что это занимает время, новый код неизбежно будет содержать новые ошибки.
Читать дальше →

Технология MIPS SIMD и процессор Байкал-Т1

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

Коллеги из Байкал Электроникс предложили поработать с процессором Байкал-Т1 [L1] и написать о своих впечатлениях. Для них это способ рассказать разработчикам о возможностях и особенностях своего процессора. Для меня — шанс поближе познакомиться с системой на современном процессорном ядре и в будущем изобретать поменьше "велосипедов", добавляя, к примеру, новую функциональность в проект MIPSfpga-plus [L2]. Ну и обычное инженерное любопытство, опять же...


Сегодня речь пойдет о векторном расширении архитектуры MIPS SIMD, которое доступно в ядрах MIPS Warrior P-class P5600 [L3], а значит присутствует и в процессоре Байкал-Т1. Статья ориентирована на начинающих разработчиков.


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

Повесть о создании классической RTS в домашних условиях с нуля (часть 2: «Воскрешение») Окончание статьи: Сеть

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

Примерно год назад вышла моя статья, которую можно назвать "первой частью" данной статьи. В первой части я насколько смог подробно разобрал тернистый путь разработчика-энтузиаста, который мне удалось когда-то самостоятельно пройти от начала и до конца. Результатом этих усилий стала игра жанра RTS "Земля онимодов" созданная мною в домашних условиях без движков, конструкторов и прочих современных средств разработки. Для проекта использовались C++ и Ассемблер, ну, и в качестве основного инструмента моя собственная голова.

В этой статье я постараюсь рассказать о том, как я решил взять на себя роль «реаниматора» и попытаться «воскресить» этот проект. Много внимания будет уделено написанию собственного игрового сервера.

Это окончание статьи, начало тут.
Читать дальше →

Повесть о создании классической RTS в домашних условиях с нуля (часть 2: «Воскрешение») Продолжение статьи: GUI

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

Примерно год назад вышла моя статья, которую можно назвать "первой частью" данной статьи. В первой части я насколько смог подробно разобрал тернистый путь разработчика-энтузиаста, который мне удалось когда-то самостоятельно пройти от начала и до конца. Результатом этих усилий стала игра жанра RTS "Земля онимодов" созданная мною в домашних условиях без движков, конструкторов и прочих современных средств разработки. Для проекта использовались C++ и Ассемблер, ну, и в качестве основного инструмента моя собственная голова.

В этой статье я постараюсь рассказать о том, как я решил взять на себя роль «реаниматора» и попытаться «воскресить» этот проект. Много внимания будет уделено написанию собственного игрового сервера.

Это продолжение статьи, а начало тут.
Читать дальше →

Повесть о создании классической RTS в домашних условиях с нуля (часть 2: «Воскрешение»)

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

Примерно год назад вышла моя статья, которую можно назвать "первой частью" данной статьи. В первой части я насколько смог подробно разобрал тернистый путь разработчика-энтузиаста, который мне удалось когда-то самостоятельно пройти от начала и до конца. Результатом этих усилий стала игра жанра RTS "Земля онимодов" созданная мною в домашних условиях без движков, конструкторов и прочих современных средств разработки. Для проекта использовались C++ и Ассемблер, ну, и в качестве основного инструмента моя собственная голова.
В этой статье я постараюсь рассказать о том, как я решил взять на себя роль «реаниматора» и попытаться «воскресить» этот проект. Много внимания будет уделено написанию собственного игрового сервера.

Аутентификация в OpenSSH Putty по JaCarta PKI

Время на прочтение3 мин
Количество просмотров12K
В настоящей статье описан алгоритм настройки SSH-клиента Putty для ОС Windows для работы с JaCarta PKI.
Читать дальше →

Как удалённо отлаживать через WinDbg не включая отладочный режим Windows

Время на прочтение4 мин
Количество просмотров13K
Иногда при анализе какой-нибудь платной программы малвари случается так, что она не хочет нормально работать, если в памяти есть отладчик или включён отладочный режим Windows.
В таких ситуациях помогает использование виртуальной машины с подключённым к ней отладчиком (например, GDB или IDA). Это если программа не пытается «сломаться» и в виртуальной машине тоже.
Читать дальше →

Выпуск Rust 1.17

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

Команда Rust рада представить выпуск Rust 1.17.0. Rust — это системный язык программирования, нацеленный на безопасность, скорость и параллельное выполнение кода.


Если у вас установлена предыдущая версия Rust, то для обновления достаточно выполнить:


$ rustup update stable

Если у вас ещё не установлен Rust, то вы можете установить rustup c соответствующей страницы нашего веб-сайта и ознакомиться с подробным примечанием к выпуску 1.17.0 на GitHub.


Что вошло в стабильную версию 1.17.0


Выпуск Rust 1.17.0 в основном вносит небольшие улучшения, преимущественно касающиеся удобства использования. Например, время жизни 'static теперь автоматически подразумевается для констант или статических переменных. При создании константы или статической переменной:


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

Исключения в Windows x64. Как это работает. Часть 4

Время на прочтение25 мин
Количество просмотров8.1K
Опираясь на материал, описанный в первой, второй и третьей частях данной статьи, мы продолжим обсуждение темы обработки исключений в Windows x64.

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

Начнем с математики. Векторизация вычислений в реализации технологии RAID-6

Время на прочтение12 мин
Количество просмотров22K
Многие помнят публикацию о «Рэйдикс» на Хабре «Как разработчики сидели в Петербурге и тихо ели грибы», в которой партнеры кратко изложили историю появления нашего продукта. Поэтому в первой статье своего Хаброблога мы бы хотели погрузиться в математические основы технологий RAIDIX.


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

Ближайшие события

(Не) любителям protothreads посвящается: Высокоуровневые функции для работы с 1-Wire

Время на прочтение8 мин
Количество просмотров7.8K
Подразумевается, что мы будем писать прошивку под «голое железо». В противном случае применение protothreads смысла не имеет, т.к. мультизадачность должна обеспечиваться средствами ОС. Подразумевается также, что нам необходимо реализовать несколько более-менее сложных алгоритмов, связанных с операциями ввода-вывода. Ну и, как всегда в микроконтроллерах, очевидные требования по экономии RAM и энергопотребления.
Читать дальше →

Настройка резервного копирования информации в облако Microsoft Azure Backup

Время на прочтение7 мин
Количество просмотров4.3K
Настоящая статья содержит инструкцию по настройке резервного копирования информации в облако Microsoft Azure Backup, зашифрованной при помощи КриптоПро EFS, и доступа к этой информации по USB-токенам и смарт-картам, например, JaCarta производства компании «Аладдин Р.Д.».
Читать дальше →

Как мы портировали программно-аппаратное решение из SPARC Solaris в AMD64 Linux и виртуализировали все это

Время на прочтение5 мин
Количество просмотров7.8K
Эта статья для тех, кто все еще сильно любит древние Unix, но уже понимает, что срочно нужно мигрировать на Linux...
image

Началась эта история с того, что наш уважаемый заказчик решил уменьшить риски эксплуатации оборудования 10-ти летнего возраста, сэкономить на лицензиях и перейти с Unix на Linux, а заодно и виртуализировать это программно-аппаратное решение. Не то, чтобы заказчик не любил Solaris и Unix, просто сама возможность виртуализировать серверное приложение, жестко привязанное к специфической на сегодняшний день архитектуре SPARC и «седеющей» операционной системе Solaris, выглядела для заказчика очень привлекательной. Отдельным пунктом стоял вопрос замены специализированной карты с PCI интерфейсом на доступное «виртуализированное» решение. Мы решили взяться за такую интересную задачу.
Читать дальше →

MIPSfpga и UART

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

Прошло чуть больше месяца с тех пор, как я портировал open source модуль UART16550 на шину AHB-Lite. Писать об этом на тот момент было несколько не логично, так как еще не была опубликована статья про прерывания MIPSfpga.


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


image

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

MIPSfpga и прерывания

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

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


Весь описываемый код опубликован на github в составе проекта mipsfpga-plus [L3].


image

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

Position-independent code (PIC) в разделяемых библиотеках на x64

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

enter image description here


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

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

Windows hook: просто о сложном

Время на прочтение8 мин
Количество просмотров54K
imageЧто такое хук?
Что такое хук функций и для чего он нужен? В переводе с английского «hook» — ловушка. Поэтому о назначении хуков функции в Windows можно догадаться — это ловушка для функции. Иными словами, мы ловим функцию и берем управление на себя. После этого определения нам открываются заманчивые перспективы: мы можем перехватить вызов любой функции, подменить код на свой, тем самым изменив поведение любой программы на то, которое нам нужно (конечно, в рамках определенных ограничений).

Целью данной статьи является демонстрация установки хука и его непосредственная реализация.
Читать дальше →

Вклад авторов