Использование подобия паттерна наблюдатель на си

Недавно вспоминал о том как читал книгу по паттернам проектирования для java и из-за того что я всё также не пойму как это делается по памяти в ооп, решил написать свою реализацию на си. Читать дальше →…

[Из песочницы] Создание упаковщика x86_64 ELF файлов под linux

Введение
В данном посте будет описано создание простого упаковщика исполняемых файлов под linux x86_64. Предполагается, что читатель знаком с языком программирования си, языком ассемблера для архитектуры x86_64 и с устройством ELF файлов. В целях обес…

[Перевод] Clang-format тормозит работу программы

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

Вообще-то мне нет никакого дела до функции toupper, просто я недавно писал другой пост и мне нужен был какой-то общий сюжетны…

Встраивание кода и опасность пиратского по

О том, как можно встроить код без jmp в секцию кода и остаться незаметным, если не изучать досконально дизассемблированный код. Кому интересно, прошу под кат. Читать дальше →…

[Перевод] Инкремент элементов вектора

В каком случае инкремент элементов вектора std::vector будет быстрее – если они имеют тип uint8_t или uint32_t?

Чтобы не рассуждать отвлечённо, рассмотрим две конкретные реализации:
void vector8_inc(std::vector<uint8_t>& v)
{
for (size_…

[Перевод] Понимание разницы между СI и СD: «если что-то вызывает боль, делайте это почаще»

Disclaimer. Костис Капелонис — Developer advocate (человек, защищающий и отстаивающий принципы программной разработки) Codefresh, первой платформы CI/CD для Kubernetes и контейнеров. Миссия Codefresh «Автоматизировать и упрости всё, от кода до облака»….