Обновить
123.16

C *

Типизированный язык программирования

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

ООП и Синглтон (на примере простого консольного рендера) в Си

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

Всем привет, это Stalker320. Я вернулся на Хабр, осознав несколько концепций, с интересным подходом к разработке ПО с использованием Си.

Читать далее

Новости

Особенности работы с физической памятью в ОС Linux, часть 1

Уровень сложностиСложный
Время на прочтение7 мин
Охват и читатели7.6K

Когда в последний раз Вы задумывались, как выделяется память на самом низком уровне? Соединим ниточкой вызов malloc с системными вызовами, структурами ядра, а также особенности выделения физической памяти.

Читать далее

BareMetal CI Part 2: Docker-контейнер для быстрого развёртывания CI/CD стенда для embedded-систем

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

Продолжение серии статей о BareMetal CI. В первой части мы рассмотрели базовый подход к автоматизации тестирования микроконтроллеров с использованием J-Link и RTT. Эта статья посвящена масштабируемому решению на базе Docker, которое поддерживает различные типы оборудования и CI-платформы.

Читать далее

Создание своего ядра на C. Часть 2

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

В этой статье мы продолжим наш путь создания простого, но функционального ядра операционной системы на языке C.

Читать далее

Элегантный OSDev: Пишем ядро ОС на modern C++ без макросов. Часть 3: Аппаратный HAL и Прерывания

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


Это третья статья из цикла по разработке ОС на С++. В данной статье я познакомлю читателя, с прерываниями x86 реализуем ее поддержку. Добавим работу с клавиатурой. Познакомимся с такими устройствами как PIC и напишем код для работы и инициализации. Я так же буду делать упор, на абстракцию и высокоуровневый код.

Заходите будет интересно.

Читать далее

Тёмная сторона Си: трюки, хаки, магия и алгоритмы

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

Доброго времени суток, господа и дамы! Иногда у некоторых людей возникает желание заняться откровенным непотребством в программировании — то, что не несет практической пользы напрямую, но помогает развлечься. И я — не исключение. В этой статье я хочу рассказать вам о лайфхаках, трюках (магических и не очень), алгоритмах на языке C!

Идея написать эту статью зародилась из моего поста, после него я написал статью «Математика, биты, магия и немного ненормального программирования на C» и «Фокусы, хаки, магия и прочее ненормальное программирование на C», которые раскрывали много интересных моментов. Увидев, что многим понравилась, я задумался: почему бы не изучить еще какие-нибудь трюки, заодно практикуясь в программировании на C?

В этой статье будет еще больше всевозможных генераторов псевдослучайных чисел, гонок за скоростью и производительностью, алгоритмов, хаков и трюков!

Всех, кто заинтересовался — прошу под кат.

Читать далее

Иерархия vs Массовые изобретатели

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

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

Почему иерархии всегда побеждали… и что мо

Эксперимент по сбору сигналов с использованием двухканального высокоскоростного модуля АЦП на основе FPGA Smart Artix

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

Эксперимент по сбору сигналов с использованием двухканального высокоскоростного модуля АЦП на основе FPGA Smart Artix.

Читать далее

Случайность как следствие открытости систем и черного ящика

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

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

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

В таком случае на уровне системы, объединяющей все остальные и не получающей внешние данные, случайности быть не может.

Подробнее

Элегантный OSDev: Пишем ядро ОС на modern C++ без макросов. Часть 2 — PMM + Allocator

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

В текущей статье, реализуем поддержку памяти и аллокатора в ядре, а так же перегрузим new и delete используя новый механизм памяти. На последок напишем контейнер OS::String для работы со строками, интерфейс API будет совпадать с интерфейсом std::string. Что бы в будущем просто сделать using на std контейнеры. Когда получится их завести. Цель создать фундамент для использования C++ идиом (включая умные указатели и STL‑подобные контейнеры) в «голом» окружении ядра без стандартных библиотечных аллокаторов. Решение позволяет тестировать код на хост‑системе (Windows/Linux) и затем без изменений запускать на целевой платформе (QEMU).

Читать далее

Фокусы, хаки, магия и прочее ненормальное программирование на C

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

Доброго времени суток, господа и дамы! Иногда у некоторых людей возникает желание заняться откровенным непотребством в программировании — то, что не несет практической пользы напрямую, но помогает развлечься. И я — не исключение. В этой статье я хочу рассказать вам о лайфхаках, трюках (магических и не очень), алгоритмах на языке C!

Идея написать эту статью зародилась из моего поста, после него я написал статью «Математика, биты, магия и немного ненормального программирования на C», которая раскрывала много интересных моментов. Увидев, что многим понравилась, я задумался: почему бы не изучить еще какие-нибудь трюки, заодно практикуясь в программировании на C? В этой статье мы погрузимся глубже и раскроем больше тем, такие как генераторы псевдослучайных чисел, трюки с побитовыми сдвигами и прочие быстрые алгоритмы на C!

Всех, кто заинтересовался — прошу под кат.

Читать далее

Элегантный OSDev: Пишем ядро ОС на modern C++ без макросов. Часть 1 — HAL всему голова

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

В теории я бы хотел сделать ОС на современном C++ — с умными указателями, лямбдами и прочими красивостями. А на практике пока что научился выводить текст прямо в видеопамять. Но это же и есть самый честный low-level — когда ты по-настоящему чувствуешь, как железо оживает от твоего кода.

Читать далее

Chrome, Xfce и очень страшное кино

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

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

Читать далее

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

Программирование для Windows 1.0 в 2025 году

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

«...Одним из примеров громоздкой и, по мнению авторов, бесполезной надстройки является интегрированная система WINDOWS фирмы Microsoft. Эта система занимает почти 1 Мбайт дисковой памяти и рассчитана на преимущественное использование совместно с устройством типа "мышь".» — вы точно знаете, откуда это

Приветствую всех! Буквально неделю назад прошло сорок лет с момента выхода первой релизной версии Windows. Именно в тот день в 1985 году началась история ныне повсеместно распространённой ОС.

И вот, узнав об этом, я подумал: а что, если попробовать запустить эту ОС и узнать, как предполагалось писать софт для неё? Именно этим мы сейчас и займёмся. Заодно и узнаем, насколько это было проще или сложнее, нежели сейчас.

Type WIN

Как поручить работу с доменом стандартным средствам Linux

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

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

Читать далее

Протоколы для систем реального времени

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

Эта статья написана по итогам разработки геоинформационной платформы «RndFlow.Кругозор» и конкретной прикладной системы на её основе.

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

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

Сама система представляет из себя интеграционную платформу, которая поддерживает

Читать далее

SSPI: легитимность с двойным дном

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

Security Support Provider Interface (SSPI) - программный интерфейс в Microsoft Windows между приложениями и провайдерами безопасности.

В статье рассмотрим:
1. Как устроен SSPI и зачем нужны провайдеры
2. Разбор и создание кастомного SSP для перехвата учетных данных
3. Где искать следы в системе: реестр, логи, артефакты
4. Методы обнаружения и защиты

Читать далее

Крупнейшая утечка секретных документов DARPA раскрыла неожиданные детали IT сектора США

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

Издание SelaNi опубликовало результат анализа утечки секретных документов DARPA, слитых в сеть в начале недели. В документах в основном финансовые отчёты и перечисления финансируемых программ, но также там оказались планы и отчёты по экспериментам и разработкам проведённым агентством за период с 2009 до 2025 год.

Отчёт 2010 года свидетельствует о том, что основной проблемой военной промышленности США стал найм программистов. Основные критические системы, такие как банки, были написаны на COBOL, а в военной сфере по директиве DoD 3405.2 использовался только язык программирования Ada. Оба языка постепенно потеряли носителей и к 2010 году стало понятно, что им нужно искать замену.

Читать далее

Аморальный патч для Intel DRM

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

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

А значит снова пришло время карать и патчить!

Читать далее

Ускорение Python в 150 раз с использованием C

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

В статье разбираются три практических способа интеграции C кода с Python для ускорения вычислений, а так же поясняется причина по которой не используется NumPy. Каждый метод рассматривается с примерами кода и бенчмарками.

NumPy уже не в моде?
1
23 ...

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