Как стать автором
Обновить
  • по релевантности
  • по времени
  • по рейтингу

Выпуск Rust 1.44.0: cargo tree, async/await в no_std, Unicode 13 и vec![] в const-контексте

Open sourceПрограммированиеСистемное программированиеКомпиляторыRust

Данный анонс является компиляцией черновика анонса и подробных примечаний к выпуску. Официальный анонс короче, чем обычно:


This is a shorter blog post than usual: in acknowledgement that taking a stand against the police brutality currently happening in the US and the world at large is more important than sharing tech knowledge, we decided to significantly scale back the amount of promotion we're doing for this release.

The Rust Core Team

Команда Rust выпустила новую версию, 1.44.0. Rust — это язык программирования, позволяющий каждому создавать надёжное и эффективное программное обеспечение.


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


rustup update stable

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

Читать дальше →
Всего голосов 24: ↑24 и ↓0+24
Просмотры3K
Комментарии 4

All-Hardware: стартовал конкурс прошивок для отладок STM и NXP

Я пиарюсь

Организаторы предлагают разработать прошивку для отладочных плат STM и NXP, размещенных в сервисе. Конкурс продлится до 24 апреля, победители получают в качестве призов эти самые отладочные платы и указание авторства на сайте сервиса.

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

Читать далее
Всего голосов 6: ↑6 и ↓0+6
Просмотры817
Комментарии 11

Основы работы с IOKit. Тонкости программирования драйверов

Разработка под iOS

В рамках поддержки блога разработки под Mac OS X, я представляю свою статью о низкоуровневой разработке под Mac OS X. Обычно тема разработки драйверов не столь популярна, однако и здесь Mac OS X выгодно выделяется из ряда прочих операционных систем. Да, писать драйвера для Mac O S X – просто! Проще чем когда-либо ранее!
Поехали
Всего голосов 48: ↑40 и ↓8+32
Просмотры17K
Комментарии 23

DMA для новичков или то, что вам нужно знать

Системное программирование
Всем привет, сегодня мы с вами поговорим о DMA: именно о той технологии, которая помогает вашему компьютеру воспроизводить для вас музыку, выводить изображение на экран, записывать информацию на жесткий диск, и при этом оказывать на центральный процессор просто мизерную нагрузку.
Если вам интересно, добро пожаловать под кат...
Всего голосов 85: ↑80 и ↓5+75
Просмотры98K
Комментарии 29

На шаг ближе. Работа с регистрами PCI устройства в IOKit

Разработка под iOS
Настало время продолжить наше путешествие в дебри системного программирования. Сегодня мы опустимся еще глубже и поговорим о реализации работы с регистрами устройства и другими базовыми IO операциями в IOKit.

Далее
Всего голосов 4: ↑2 и ↓20
Просмотры3.3K
Комментарии 0

Программирование в ring0 для Windows: вводная статья

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

По долгу службы мне пришлось столкнуться с программированием драйверов под Windows. Люди, которые никогда не сталкивались с этой задачей могут предположить, что драйвера — это что-то очень сложное и непосредственно взаимодействующее с железом. Отчасти они правы, а отчасти нет. В этой статье я постараюсь рассказать о том, что же из себя представляют Windows драйвера изнутри и с чем мне пришлось столкнуться. Статья является некоторым введением и не содержит «кусков кода».

Читать дальше →
Всего голосов 123: ↑113.5 и ↓9.5+104
Просмотры27K
Комментарии 32

Процессы и потоки in-depth. Обзор различных потоковых моделей

Системное программирование
Здравствуйте дорогие читатели. В данной статье мы рассмотрим различные потоковые модели, которые реализованы в современных ОС (preemptive, cooperative threads). Также кратко рассмотрим как потоки и средства синхронизации реализованы в Win32 API и Posix Threads. Хотя на Хабре больше популярны скриптовые языки, однако основы — должны знать все ;)
Далее
Всего голосов 64: ↑62 и ↓2+60
Просмотры70K
Комментарии 45

Пишем свой первый Windows-драйвер

Системное программирование
Итак, после моей предыдущей статьи я понял что тема про программирование драйверов Windows интересна хабровчанам, поэтому продолжу. В этой статье я решил разобрать простую программу-драйвер, которая делает только то, что пишет отладочное сообщение «Hello world!» при старте драйвера и «Goodbye!» при завершении, а также опишу те средства разработки, которые нам понадобятся для того, чтобы собрать и запустить драйвер.

Читать дальше
Всего голосов 99: ↑95 и ↓4+91
Просмотры113K
Комментарии 35

Crash dump'ы и KeCapturePersistentThreadState

Системное программирование
Я тут обнаружил очень занятную недокументированную функцию, экспортируемую ядром, на которую нет ссылок внутри ядра, но которая делает весьма занятную вещь. А именно, записывает в переданный кусок памяти полноценный minidump на данный момент времени.
Весьма полезно с учетом того, что там (в дампе) есть оффсеты неэкспортируемых структур типа PsLoadedModuleList, которые могут пригодиться.
Спасибо Freeman за помощь)

ULONG
NTAPI
KeCapturePersistentThreadState(
PCONTEXT Context,
PKTHREAD Thread,
ULONG BugCheckCode,
ULONG BugCheckParameter1,
ULONG BugCheckParameter2,
ULONG BugCheckParameter3,
ULONG BugCheckParameter4,
PVOID VirtualAddress
);


Входные параметры:
Context — текущий контекст (можно от балды, нужно лишь заполнить EIP & ESP)
Thread — текущий поток. можно указать NULL, тогда она сама возьмет текущий
BugCheckCode, ParametersX — багчек код и аргументы, которые она запишет в дамп.
VirtualAddress — адрес выделенных 16 страниц памяти (64кб), куда она положит аккуратно готовенький крешдамп.

Пример:

Заголовок дампа:
typedef struct _DUMP_HEADER {
/* 00 */ ULONG Signature;
/* 04 */ ULONG ValidDump;
/* 08 */ ULONG MajorVersion;
/* 0c */ ULONG MinorVersion;
/* 10 */ ULONG DirectoryTableBase;
/* 14 */ PULONG PfnDataBase;
/* 18 */ PLIST_ENTRY PsLoadedModuleList;
/* 1c */ PLIST_ENTRY PsActiveProcessHead;
/* 20 */ ULONG MachineImageType;
/* 24 */ ULONG NumberProcessors;
/* 28 */ ULONG BugCheckCode;
/* 2c */ ULONG BugCheckParameter1;
/* 30 */ ULONG BugCheckParameter2;
/* 34 */ ULONG BugCheckParameter3;
/* 38 */ ULONG BugCheckParameter4;
/* 3c */ CHAR VersionUser[32];
/* 5c */ UCHAR PaeEnabled;
UCHAR NotUsed[3];
/* 60 */ PVOID KdDebuggerDataBlock;
} DUMP_HEADER, *PDUMP_HEADER;


Использование функции: www.everfall.com/paste/id.php?mkgmkfg1a057

Кодес получает дамп, показывает адерса MmPfnDatabase, PsActiveProcessHead, PsLoadedModuleList и сбрасывает дамп на диск. Дамп можно спокойно запихать в WinDbg и изучать

Вообщем, весьма занятная штуковина…

Надо будет переписать свой gr8lkd (http://gr8lkd.googlecode.com/) с использованием этой функции.
Всего голосов 17: ↑11 и ↓6+5
Просмотры1.6K
Комментарии 3

Как найти работу новичку системного программирования?

Чулан
Я студент ВМиК МГУ, 3 курс. Специализация — системное программирование.

Года полтора работал программистом C#, однако написание логики сайтов на ASP.NET и портирование автоматных игрушек на движок не кажутся интересными занятиями и потому сильно утомляют. В конце концов, не для того идут учиться в МГУ.

Разумеется, с чего-то надо было начинать. Но опыт и навыки программирования есть (вплоть до функционального), а значит нужно искать работу по интересам и специальности. Вот только что-то не видно на hh.ru вакансий по разработке компиляторов и/или распределённых систем не только для новичков, желающих учиться, но и для опытных профессионалов.

Не может быть, чтобы это направление совершенно не было востребовано.
Всего голосов 17: ↑13 и ↓4+9
Просмотры1.1K
Комментарии 30

Исходники Windows Research Kernel в свободном доступе

Разработка под Windows

Что же такое Windows Research Kernel?


Windows Research Kernel содержит исходные коды основной части ядра Windows (NTOS).
NTOS реализует базовые функции операционной системы для:
  • процессов;
  • потоков;
  • виртуальной памяти и менеджеров кэшей;
  • управления вводом/выводом;
  • реестра;
  • исполнительных функций, таких как куча (heap) ядра и синхронизация;
  • менеджера объектов;
  • механизма локального вызова процедур;
  • низкоуровневого управления CPU (планирование потоков, асинхронные и отложенные вызовы процедур, обработка прерываний/ловушек, исключения).

Читать дальше →
Всего голосов 64: ↑53 и ↓11+42
Просмотры13K
Комментарии 111

[C#/.NET] Генерируем машинный код с помощью LLVM

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

А для работы нам понадобятся

Читать дальше →
Всего голосов 19: ↑17 и ↓2+15
Просмотры1.1K
Комментарии 17

Пишем viewer почтовой базы MS Exchange (часть 1)

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

В одной большой-пребольшой стране жили маленькие-премаленькие люди. И все было прекрасно пока не появилась глубокая-преглубокая яма прямо в центре этой большой, а точнее пребольшой страны. Ну, надо сказать, появилась она не одна и, конечно, не сразу, но никто об этом уже не вспомнит и никому это уже не важно.
Читать дальше →
Всего голосов 38: ↑29 и ↓9+20
Просмотры12K
Комментарии 17

Пишем viewer почтовой базы MS Exchange (часть 2)

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

Здравствуйте, читатели Хабрахабр!

Это завершение поста начатого вот здесь.

В принципе, мы почти все уже сделали, осталось небольшое окончание. Напомню, мы взяли EDB базу, открыли ее, воспользовавшись технологией ESE, перечислили имеющиеся таблицы и начали перечислять колонки внутри этих таблиц. Нам осталось дополучить колонки, получить значения столбцов и вуаля, база прочитана.
Читать дальше →
Всего голосов 21: ↑16 и ↓5+11
Просмотры2.5K
Комментарии 3

Комментарий дня: Как предсказал Oracle

Блог компании Hewlett Packard Enterprise

UPDATE: Итак, подводим итоги!

В результате голосования и естественного отбора, победителем объявляется zak2k! Его история, наполненная юмором и свежестью, заслуживает всяческих похвал. Следом за zak2k-ом идет Labinskiy, поражающий краткостью (истину говорит пословица!) и лаконичностью! Ну и 3,4,5 места, по голосованию присваиваются zboris, Smasher и Turansky.

Победителей просим предоставить свои адреса для доставки призов в личку автора поста Morow.

Всем спасибо за участие!



Приветствуем тебя, Хабражитель!

В блоге HP продолжается традиционный конкурс «комментарий дня». На этот раз темой конкурса станет компания Oracle, ее харизматичный лидер Ларри Эллисон, многогранные и многослойные продукты, а также серверы и процессоры Itanium, «заточенные» под них. Известно, что они частенько бывают неосторожны в высказываниях, капризны, сложны в настройке, прожорливы (догадайтесь, какой эпитет к чему относится), но в общем и целом делают лучше жизнь отдельных людей, компаний и огромных корпораций.

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





Историкам и рассказчикам предстоит побороться за HP Microserver (лучший сервер из тех, что можно представить дома), специальный брэндированный рюкзак HP (специально разработан для ношения ноутбуков,) и модные молескины с символикой HP-UX (можно записывать истории для будущих конкурсов).
Читать дальше →
Всего голосов 37: ↑23 и ↓14+9
Просмотры8.7K
Комментарии 78

Новые серверы HP DL980

Блог компании Hewlett Packard Enterprise
Возможно, вы удивитесь, но на фоне победных реляций обо все новых рубежах и планках, взятых блейд-системами, старые добрые серверы, монтируемые в стойку, никуда не делись, и по-прежнему способны на очень многое. Более того, эти продукты активно развиваются всеми крупными вендорами, с HP во главе, конечно. В конце концов, отнюдь не каждая организация или провайдер услуг может или желает приобретать или эффективно использовать блейд-серверы, а вот свой парк «обычных» серверов рано или поздно обновят на новое поколение систем. И, возможно, одним из этих серверов окажется недавно появившийся на свет восьмиюнитовый DL980 G7.


Читать дальше →
Всего голосов 12: ↑12 и ↓0+12
Просмотры16K
Комментарии 23

Сетевое оборудование HP в инфраструктуре Cisco

Блог компании Hewlett Packard Enterprise

Для ИТ-департаментов многих компаний оборудование Cisco давно стало корпоративным стандартом их сетевой инфраструктуры и они при выборе новых продуктов ориентируется исключительно на возможности, которые может предложить им этот вендор. Главное, что останавливает их от приобретения сетевого оборудования других вендоров – это риск несовместимости и необходимость освоения системными администраторами новых инструментов управления сетью.

Тем не менее, как показывает проведенное независимой тестовой лабораторий Networktest исследование, оборудование HP может совместно использоваться с оборудованием Cisco. По результатам тестирования, в котором использовались коммутаторы HP 9505, 5406zl и 5800 и Cisco Catalyst 6509, Catalyst 4506 иd Catalyst 3750-E, Networktest подготовила 60-страничное руководство, в котором приведены конфигурации для совместного использования коммутаторов HP Networking и Cisco Catalyst.
Читать дальше →
Всего голосов 8: ↑5 и ↓3+2
Просмотры7.6K
Комментарии 28

Пишем модуль безопасности Linux

Блог компании Positive TechnologiesИнформационная безопасность
Linux Security Modules (LSM) — фреймворк, добавляющий в Linux поддержку различных моделей безопасности. LSM является частью ядра начиная с Linux версии 2.6. На данный момент в официальном ядре «обитают» модули безопасности SELinux, AppArmor, Tomoyo и Smack.

Работают модули параллельно с «родной» моделью безопасности Linux — избирательным управлением доступом (Discretionary Access Control, DAC). Проверки LSM вызываются на действия, разрешенные DAC.

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

Поглядим на схему и попытаемся разобраться, как работает хук LSM (на примере системного вызова open).


Читать дальше →
Всего голосов 42: ↑42 и ↓0+42
Просмотры13K
Комментарии 1

Простейший WDM-драйвер

Системное программирование
В данной статье описан процесс написания простейшего драйвера, который выводит скан-коды нажатых клавиш.
Также в данной статье описан процесс настройки рабочего места для написания драйверов.
Если Вам интересно, прошу под кат.
Читать дальше →
Всего голосов 59: ↑57 и ↓2+55
Просмотры64K
Комментарии 25

Простые вещи. Файл настроек и небольшой прицеп утилит

Разработка веб-сайтовПрограммированиеC
Этот пост, для тех, кто пишет на C[/C++]. Остальные могут не читать.

Как всегда, работая над проектами хочу поделится очередной технологией. Наверное, громко сказано. Скорее, простым решением в области создания и работы с файлом настройки программ.

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

Я, просто, делюсь быстрым решением, как читать параметры и значения, разделённые знаками «равно» из файла настроек формата, похожего на, скажем, php.ini

Перейдём, непосредственно, к решению.
Всего голосов 23: ↑12 и ↓11+1
Просмотры633
Комментарии 20