Как стать автором
Поиск
Написать публикацию
Обновить
134.71

C *

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

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

Как дистанционно снимать показания с электросчетчика КАСКАД-1-МТ

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

Сразу скажу, все шаги повторять не нужно. Можно сразу перейти к схеме и проекту :)

Несколько лет назад Мосэнергосбыт установил у меня в квартире новый электросчетчик "КАСКАД-1-МТ-W1-A1-230-5-60A-S-OV3". Из внешних интерфейсов у этого счетчика есть только оптопорт.

С чего начать? Для начала нужен оптопорт. Забегая вперед, могу сказать, что ничего сложного в нем нет.

Заводские устройства стоят неадекватно дорого, а самоделок практически нет.

Нашел более-менее разумное решение - VR-005. Не буду приводить ссылок, он легко ищется в поисковике. Но были сомнения.

А заработает ли с "Каскад"ом, так как все описание от VR-005 заточено на электросчетчики "Меркурий". Заработал.

Читать далее

PostgreSQL под капотом. Часть 3. Инициализация бэкэнда

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

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

На прошлом шаге мы дошли до входной точки Postgres. Сегодня мы пройдемся по ней до главного цикла. Будут рассмотрены:

— Модули для работы с файлами и файловой системой

— Как SIGUSR1передает множественные значения

— Реализации хэш‑таблиц

— Представление и хранение GUC

и многое другое.

Читать далее

Просто о RCU (Read–Copy-Update)

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

Lock-free структуры данных в общем и целом неплохо описаны в различной литературе, но на мой взгляд порог вхождения в эту тему высок. Приведу простой кейс использования одной из разновидностей данной технологии под названием RCU (Read–Copy-Update). В двух словах, это механизм неблокирующего обновления структуры данных у которой много читателей и всего один писатель. Wikipedia.

Читать далее

Volvo SCT / part 1 — как проникнуть в чужое ядро

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

Я являюсь обладателем одной интересной железки - SCT unit touch. Это медиа система с Android, которую ставили в виде дополнительного аксессуара в автомобили Volvo. Проблема в том, что ее оставили без поддержки, зато на ней можно легко получить root, а значит остальное можно допилить.

Читать далее

Пишем и отлаживаем приложения для Flipper Zero

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

Недавно я получил свой флиппер и, решив написать первое приложение, столкнулся с проблемой отсутствия информации по отладке программного кода. Есть несколько статей по разработке приложений для флиппера (первое приложение и приложение HewViewer). Однако, когда я приступил к разработке и отладке приложения, опираясь на информацию из указанных статей, то столкнулся с трудностями, которые я опишу далее и укажу способы их решения.

Читать далее

Кен Томпсон: живая легенда

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

Людей, внесших значительный вклад в развитие мировой IT-индустрии и вошедших благодаря этому в историю, можно пересчитать по пальцам. Один из них — Кеннет Лейн Томпсон, один из разработчиков Unix, операционных систем Plan 9 и Inferno, создатель языка программирования B, соавтор языка Go. Томпсон принимал участие в конструировании шахматного компьютера Belle, первой машины, достигшей уровня игры мастера с рейтингом USCF 2250. Она пять раз выигрывала чемпионат Северной Америки по компьютерным шахматам ACM и чемпионат мира по компьютерным шахматам 1980 года. В 1983 году Томпсон разделил со своим давним другом и коллегой Деннисом Ритчи премию Тьюринга, неофициально признанную «нобелевкой» в мире компьютерных наук.

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

Происхождение и эволюция аллокатора памяти в С

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

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

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

Читать далее

NVRAM для микроконтроллеров

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

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

В этом тексте представлено текстовое описание возможной простой реализации компонента энергонезависимой key-value map(ки)

Читать далее

Задача коммивояжера (TSP) точное решение — метод ветвей и границ

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

Что делает код хорошим? Большинство программистов ответят: хороший код должен быть структурирован, легко читаем и понятен. Но так ли важно качество кода, если он медленный? В большинстве задач производительность кода не критична, хотя и желательна. Но есть задачи, время выполнения которых столь огромно, что выигрыш в производительности доминирует над всем остальным.

Я говорю про NP-трудные задачи (NP-трудность - недетерминированная полиномиальная трудность по времени) и на одной из данного класса хочу акцентировать ваше внимание. Задаче коммивояжера.

Мы не будем рассматривать эвристические алгоритмы, нам нужно точное решение.

Читать далее

Задача теплопроводности методом продольно-поперечной прогонки средствами MPI

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

Приветствую

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

Разберем не только теорию, но и подробности решения

Читать далее

Настраиваем QtCreator для полноценного программирования и отладки микроконтроллеров STM32

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

Привет всем.

На данный момент я активно осваиваю разработку ПО для STM32 и хотел бы поделиться моим опытом.

Как известно, для STM32 имеется много сред для разработки, однако часть из них, несмотря на удобность, имеют ограничения по использованию в случае пробной версии. Так, для IAR размер прошивки ограничивается 32 кБ, что весьма немного.

В данной публикации будет рассмотрен способ настройки окружения для полноценной разработки и отладки ПО для микроконтроллеров STM32 в среде QtCreator.

Читать далее

PostgreSQL под капотом. Часть 1. Цикл сервера

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

Продолжаем изучать исходный код PostgreSQL

В этот раз исследуем главный цикл сервера:

- Принятие входящих подключений;

- Проверка окружения;

- Обработка упавших воркеров.

Читать далее

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

Пишем обобщённую хеш-таблицу с открытой адресацией на чистом C

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

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

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

К разработке этой библиотеки и написанию статьи меня натолкнуло отсутствие незаброшенной библиотеки эффективных хеш-таблицы для C.

Читать далее

Как завладеть сетью /16 с помощью libpcap и libdnet. Работаем с протоколом SNMP

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

Всем привет. Эксперименты с эмуляцией сети продолжаются. В этот раз, как и обещал, будем делать вид, что в нашей виртуальной сети завелась машина с честным snmp-агентом.
Читать дальше →

Современная вариация крестиков-ноликов в реальном времени

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

Мы привыкли, что в крестиках-ноликах вначале один рисует крестик, затем второй рисует нолик. И так пока не соберётся линия из трёх подряд.

Всё логично, ведь на бумаге рисовать одновременно на одном поле затруднительно.

Когда же элементы рисуются на виртуальной бумаге, то рисовать одновременно не проблема. И именно в этом и отличие новой вариации игры.

Читать далее

Превью профессии «говорящий с нейросетями»

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

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

Разговор будет вестись как с человеком в вежливой форме, так как оказалось, что нейросеть очень хорошо запоминает = )

Начнём с чего-то простого, попросим сгенерировать на языке CMake простую программу

Читать далее

SAST для самых маленьких. Обзор open-source инструментов поиска уязвимостей для C/C++

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


Привет, Хабр!


Навыки статического анализа кода в арсенале исследователя безопасности приложений фактически являются must-have скиллом. Искать ручками уязвимости в коде, не прибегая к автоматизации, для небольших проектов вполне быть может и приемлемый сценарий. Но для больших задач с миллионами строк кода — это непозволительная роскошь с точки зрения временных затрат.

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

Пишем try-catch в C не привлекая внимания санитаров

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

Конструкция try-catch есть во всех широко используемых сегодня языках, кроме C. Не в силах мириться с вопиющей несправедливостью, попробуем написать свою реализацию этой конструкции

Читать далее

PostgreSQL под капотом. Часть 0. Старт программы

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

Postgres - один из крупнейших open source проектов. Он создавался многие года. Кодовая база накопилась огромная. Мне, как программисту, всегда было интересно как он работает под капотом. Но не про SQL пойдет речь, а про язык на котором он написан. Про C. 

С общей архитектурой можно ознакомиться здесь

Для начала поймем, что происходит до входа в главный цикл сервера.

Читать далее

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