
В прошлой статье мы рассмотрели, как создать простой синтезатор на основе Raspberry Pi Pico. Звуки на основе синусоиды интересны, но хочется получить звук реального инструмента с его уникальным тембром.

В прошлой статье мы рассмотрели, как создать простой синтезатор на основе Raspberry Pi Pico. Звуки на основе синусоиды интересны, но хочется получить звук реального инструмента с его уникальным тембром.
Представьте: вы пишете парсер, который обходит сотни миллионов URL. Каждую новую ссылку нужно проверить — посещали ли мы её раньше? Заводить гигабайтный хеш-набор для хранения всех адресов — расточительно и медленно.
Но существует вероятностная структура данных, которая способна ответить на вопрос «видели ли мы этот URL?», занимая при этом в десятки раз меньше памяти, чем полное множество строк. Плата за такое - мизерная возможность ложноположительного срабатывания, где алгоритм заявит что URL существует, хотя на самом деле он новый. Зато на вопрос «не видели?» она не ошибётся никогда.
Представим задачу: хайлоад-сервис гонит поток данных — логи, IP-адреса, ID пользователей, миллиарды записей в сутки. Ваша задача — посчитать количество уникальных посетителей за неделю.

19 июня Торвальдс влил merge, который вычистил из ядра Linux функцию strncpy. Шесть лет работы, 362 коммита, семьдесят человек. Ради одной функции из стандартной библиотеки C.
Привет! Меня зовут Владислав, я разрабатываю компиляторы в YADRO. В этой статье я расскажу вам про алиасинг памяти в C++: как он развивался, к чему пришел сейчас и что комитет по стандартизации языка думает делать с алиасингом в будущем. По пути я немного затрону алиасинг в других языках, рассмотрю связанные случаи undefined behavior, а также пропозалы C++, которые, как ожидалось, проблемы с алиасингом решат.
Привет!
Кратко о том что такое потоковая обработка данных и в чем её отличие от пакетной.
Пакет данных, это часть информации поступающая в систему которая содержит законченный или не полный фрагмент данных. Большинство механизмов цифровой передачи информации в современных системах построены на пакетной передаче. Отличие потоковых и пакетных систем обработки в том, когда эти данные обрабатываются:
Потоковая обработка данных подразумевает обработку данных и реакцию на них непосредственно в момент получения с минимальными задержками.
Всё началось на второй паре по системному программированию. Нам дали задачу: написать CLI-утилиту для анализа логов - парсить файл, фильтровать записи по уровню ошибок, считать статистику, выводить красиво в консоль. "Ну понятно", - открыл я vim и началось мое долгое приключение...
Неделя. Две. Утилита называлась logz, она умела читать логи nginx и apache, фильтровать по уровню (DEBUG, INFO, WARN, ERROR), по дате, по IP, выводила топ адресов с наибольшим числом ошибок, рисовала простенький bar-chart прямо в терминале через unicode-символы. Только вот я сидел как-то вечером, запустил wc -l main.c - 3147 строкЧитать полностью »
Мой младший брат Максим попросил меня позаниматься с ним программированием: ему предстоял экзамен по C. У меня сразу было ощущение, что уроки будут непростыми — даже в привычном общении он обычно оставался довольно закрытым — и я опасался, что редкие “угу” будут давать крайне мало информации о том, что происходит у него в голове: интересно ли ему, понял ли он пример, или же ему скучно и он просто вежливо досиживает занятие.
Идея выучить C появилась у меня довольно давно. Я пробовал писать в Arduino IDE, но мне не хватало чего-то более масштабного — такого проекта, где можно наделать кучу ошибок, но при этом видеть результат и двигаться дальше.
Я наткнулся в Play Market на ASCII-RPG под названием Stone Story. Сам формат меня зацепил: минимализм, но при этом ощущение полноценной игры. Поэтому я решил сделать нечто похожее, но со своими механиками.
Мне показалось, что сочетание моего ника и RPG звучит вполне нормально. Так и появилось название MerRPG.
Первым делом я сразу решил использовать структуры, а именно:
Читать полностью »