8 + 2 = 16 или откуда берутся лишние байтыВ языках низкого уровня, таких как C, на котором написан Postgres, для обращения к данным в памяти всегда используются стандартные размеры, независимо от того, сколько места на самом деле занимают элементы данных. Например, стандартное 32-битное целое число, которое может хранить значение немного более четырёх миллиардов, всегда считывается как четыре байта. То есть, даже если значение числа равно нулю, под него выделяется четыре байта памяти. Это назы…
Как и множество больших сервисов, Яндекс Еда основана на микросервисной архитектуре. Все сервисы написаны на C++ с использованием фреймворка userver. Также мы активно развиваем внутренний фреймворк для сервисов на Golang. При этом стараемся использовать последние версии и стандарты языков. В общей сложности у нас чуть больше 200 микросервисов.Но есть один сервис, который совсем не микро. Это легаси-монолит, доставшийся Яндекс Еде после объединения со стартапом Foodfox. Долгое время его продолж…
Часть 1 >> Часть 2 >> Часть 3 >> Часть 4 >> Часть 5 >> Часть 6 >> Часть 7 >> Часть 8 >> Часть 9 >> Часть 10 >> Часть 11 >> Часть 12 >> Часть 13 >> Часть 14 >> Часть 15 >> Часть 16 >> Часть 17 >> Часть 18 Для восстановления гендерного паритета сразу после «женской» главы в книжке должна быть «мужская». И я немедленно к ней приступаю. Но посвящена она будет вовсе не выдающимся мужам, коих в Inte…
Привет, я бы хотел вам рассказать о том, как я учился программировать на языке Rust с нуля, для этого я выбрал цель — сделать QR-код-энкодер с помощью ментора из свободной школы «Пионир». Пионир — это свободная, самоуправляемая и бесплатная школа в которой мы, ученики, изучаем и создаём проекты, которые решают какие-то социальные проблемы.Для начала, почему я выбрал Rust? Во-первых, я хотел попробовать что-то новое, раньше я писал на простом Python, не имея опыта с чем-то более низкоуровневым …
Наверное, многие задавались вопросом, что используют для создания необходимых для работы космических аппаратов и сопутствующего оборудования космические агентства. В интернете есть фрагментированные ответы на этот вопрос, а мы постарались собрать всё вместе и сделать развернутую статью с подробной информацией. Так что просим под кат.Что вообще применяется в космической отраслиСразу стоит сказать, что любая система, которая используется в космосе или на Земле для работы с космическими аппаратам…
Когда мы включаем компьютер, он успевает совершить несколько этапов работы ещё до того, как загрузится операционная система. В этом посте будет рассмотрено, как загружается типичный процессор с архитектурой x86. Это очень сложный и многоступенчатый процесс. Здесь его структура будет представлена только в самом общем виде. От загрузочной прошивки зависит, каким именно путём процессор придёт к тому состоянию, в котором сможет загрузить операционную систему. Мы проследим этот процесс на примере…
В самом начале июля 2023 года мы опубликовали статью об ограничении Китаем экспорта крайне важных для производства электроники и не только металлов — галлия и германия. Этот ход был спланирован в качестве ответа на санкции США, которые продолжают расширяться. С 1 августа Поднебесная ограничила экспорт, и сразу же проявились последствия — например, галлий всего за две недели подорожал на 50%. Вероятно, это не предел, плюс Китай может предпринять и дальнейшие шаги по ограничению экспорта — уж…
Сегодня мы поговорим об интересном проекте FUE5. Это Factorio, но в 3D! Иногда мечты становятся явью. Это не совсем игра, а, скорее, потрясающее переосмысление её визуальной составляющей. В этой написанной Hurricane статье будет много технических подробностей, так что давайте приступим.Что такое FUE5?FUE5 (сокращение от Factorio in Unreal Engine 5) — это экспериментальный проект с простой целью: визуализация 2D-мира Factorio в 3D-пространстве. Он был создан 3D-художником Hurricane и моддером F…
Мои читатели — занятые люди, поэтому сразу перейду к делу. Вот она, самая быстрая обобщённая (и простая) реализация двоичного поиска на C++: template <class ForwardIt, class T, class Compare> constexpr ForwardIt sb_lower_bound( ForwardIt first, ForwardIt last, const T& value, Compare comp) { auto length = last - first; while (length > 0) { auto rem = length % 2; length /= 2; if (comp(first[length], value)) { first += length + rem; } …