Метка «системное программирование»

Книга «Linux. Системное программирование. 2 е изд.»

На днях у нас вышло второе издание замечательной книги «Linux. Системное программирование. 2-е изд.». Как обычно для Хабра-читателей действует скидка 20%. Акция продлится до 20 апреля. При покупке книги введите код: 1f8e5be3.
Книга доступна в печатном и электронном виде.

Аннотация:

Пишите программы, опирающиеся непосредственно на службы ядра Linux и на основные системные библиотеки. Автор этой универсальной книги, Роберт Лав, участвовал в разработке ядра Linux. Книга представляет собой руководство по системному программированию для Linux, справочный мануал по системным вызовам Linux, а также инсайдерский рассказ о том, как писать более быстрый и умный код.
Читать полностью »

Rust — новый язык программирования, разрабатываемый корпорацией Mozilla. Главная цель разработчиков — создание безопасного практичного языка для параллельных вычислений. Первая версия языка была написана Грэйдоном Хором в 2006 году, а в 2009 году к разработке подключилась Mozilla. С тех пор изменения претерпел и сам компилятор, изначально написанный на OCaml: он был успешно переписан на Rust с использованием LLVM в качестве back-end.

Основным продуктом, разрабатываемым на Rust, является новый веб-движок Servo, разработка которого также ведется Mozilla. В 2013 году к разработке Rust и Servo присоединилась корпорация Samsung Electronics, при активном участии которой код движка Servo был портирован на ARM архитектуру. Поддержка языка столь серьезными игроками IT индустрии не может не радовать и дает надежду на его дальнейшее активное развитие и совершенствование.

Язык Rust просто не может не понравится системным и сетевым разработчикам, тем, кому по работе приходится писать много кода, производительность которого критична, на C и C++, потому что:

  1. Rust — новый язык программирования, разрабатываемый корпорацией Mozilla. Главная цель разработчиков — создание безопасного практичного языка для параллельных вычислений. Первая версия языка была написана Грэйдоном Хором в 2006 году, а в 2009 году к разработке подключилась Mozilla. С тех пор изменения претерпел и сам компилятор, изначально написанный на OCaml: он был успешно переписан на Rust с использованием LLVM в качестве back-end.
    Основным продуктом, разрабатываемым на Rust, является новый веб-движок Servo, разработка которого также ведется Mozilla. В 2013 году к разработке Rust и Servo присоединилась корпорация Samsung Electronics, при активном участии которой код движка Servo был портирован на ARM архитектуру. Поддержка языка столь серьезными игроками IT индустрии не может не радовать и дает надежду на его дальнейшее активное развитие и совершенствование.
    Язык Rust просто не может не понравится системным и сетевым разработчикам, тем, кому по работе приходится писать много кода, производительность которого критична, на C и C++, потому что:
  2. Rust ориентирован на разработку параллельных приложений. В нем реализована поддержка легких (зеленых) потоков, асинхронного обмена сообщениями без копирования пересылаемых данных, возможность выбора размещения объектов на стеке, в локальной куче задачи или куче, разделяемой между задачами.
  3. Rust ориентирован на разработку эффективных по скорости и памяти приложений. Использование LLVM в качестве back-end позволяет производить компиляцию приложения в нативный код, а простой интерфейс взаимодействия с C кодом – легко использовать уже имеющиеся высокопроизводительные библиотеки.
  4. Rust ориентирован на разработку кросс-платформенных приложений. Компилятор официально поддерживается на платформах Windows, Linux и Mac OS X, при этом существуют порты на другие *NIX платформы, такие как FreeBSD. Также поддерживается и несколько архитектур процессоров: i386, x64 и ARM.
  5. Rust позволяет писать в разных стилях: объектно-ориентированном, функциональном, actor-based, императивном.
  6. Rust поддерживает уже существующие отладочные инструменты: GDB, Valgrind, Instruments.

Читать полностью »

image 4-6 июня 2013 года в Москве международный эксперт д-р Питер Хрущка проведет 3-х дневный мастер-класс «Освоение Архитектуры ПО». Данный мастер-класс является базовым курсом для подготовки к международной сертификации iSAQB.

Справка:
Доктор Питер Хрущка – учредитель Atlantic Systems Guild, международной известной группы экспертов (www.systemsguild.com), в которую входят Том ДеМарко и Тим Листер. Входит в редакционный совет IT журналов, в том числе учредитель и член Международного Совета по Разработке Требований (IREB) и Международного Совета по Квалификации Архитектуры Программного обеспечения (ISAQB). Основатель Agile-сообщества в Германии. Один из разработчиков шаблона архитектурной документации систем ARC42. Первопроходец в области инструментов моделирования для структурных и объектно-ориентированных методологий. Частый спикер на IT конференциях, консультант, среди его клиентов многие компании из списка Fortune 500. Автор многочисленных статей и 9 книг по программной инженерии и человеческому фактору, в том числе соавтор знаменитой «Балдеющие от адреналина и зомбированные шаблонами».

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

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

Дополнительная информация и регистрация на сайте careerlab.ru/education/guru-academy/hruschka/sem1/

Читать полностью »

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

Решил разрабатывать MiniFilter драйвер, конфигурируемый при помощи текстового файла.

Рассмотрим, что из себя в общем виде представляет MiniFilter:

Фильтрация осуществляется через так называемый Filter Manager, который поставляется с операционной системой Windows, активируется только при загрузке мини фильтров. Filter Manager подключается напрямую к стеку файловой системы. Мини фильтры регистрируются на обработку данных по операциям ввода/вывода при помощи функционала Filter Manager, получая, таким образом, косвенный доступ к файловой системе. После регистрации и запуска мини фильтр получает набор данных по операциям ввода/вывода, которые были указаны при конфигурировании, при необходимости может вносить изменения в эти данные, таким образом влияя на работу файловой системы.

Читать полностью »

    В конце первой половины 90-х на рынок СНГ попала первая консоль от фирмы Sony — Playstation 1 или PSX. Ее можно считать уникальной со многих точек зрения, но для всех нас главным отличием пожалуй было то, что наконец-то в играх появилось полноценное видео, вменяемая 3D-графика, а также возможность сохранятся не при помощи пароля, судорожно ища бумажку(да простят меня читатели за неловкое сравнение, возникшее в их головах), а, как и подобает белому человеку, на цифровой носитель.

    Playstation: как это было

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

Системные вызовы MIPSЭтим летом appplemac опубликовал статью, посвященную изучению ассемблера MIPS. В ней, в частности, была рассмотрена команда syscall, генерирующая системный вызов. Автор сосредоточился на объяснении ассемблера MIPS, и на мой взгляд, недостаточно подробно рассказал, что же это такое — системный вызов. Я в тот момент занимался переносом проекта под архитектуру MIPS, разбирался с прерываниями, исключениями и системными вызовами.

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

Предисловие

Инъекция кода в .NET CLR: изменение IL кода во время выполнения программы
Изменение .NET метода MSIL кода во время выполнения приложения – это очень круто. Это настолько круто, что можно перехватывать вызовы функций (hooking), сделать защиту своего ПО и другие удивительные вещи. Именно поэтому мне уже давно хотелось это осуществить, но была одна проблема – MSIL код компилируется в машинный код с помощью JIT перед тем, как мы сможем что-либо с этим кодом сделать. А так как .NET CLR не документирована и изменяется от версии к версии, то мы и будем искать стабильный и надёжный путь, независимый от точного расположения адресов в памяти.
Читать полностью »

Этот пост, для тех, кто пишет на C/C++. Остальные могут не читать.

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

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

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

Читать полностью »

Приветствую!

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


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js