Pull to refresh
0
0
Send message

Сложнейшая проблема компьютерных наук: центрирование

Level of difficultyMedium
Reading time7 min
Views34K

Заявляю: «Мы, как цивилизация, разучились использовать центрирование». Ну то есть мы, конечно, знаем, как это делать — очень просто:

display: flex;
justify-content: center; /* Горизонтальное центрирование */
align-items: center; /* Вертикальное центрирование */

Не спрашивайте, почему вам нужно запомнить четыре слова вместо просто горизонтальное/вертикальное; всё равно лучше, чем было до этого.

Ещё можно использовать сетку:

display: grid;
justify-items: center; /* Горизонтальное центрирование */
align-items: center; /* Вертикальное центрирование */

Также не спрашивайте, почему выражение justify-content стало justify-items.
Читать дальше →
Total votes 194: ↑189 and ↓5+227
Comments56

Рендеринг капли с прозрачностью и отражениями на OpenGL

Reading time7 min
Views21K

В этой статье мы рассмотрим как рендерить капли на OpenGL и расчитывать на лету нормаль для отражения и прозрачности. А так же, что такое Metaballs, баги графических чипсетов и какие трюки оптимизации можно применить для 60 FPS на мобильных девайсах.


Читать дальше →
Total votes 42: ↑42 and ↓0+42
Comments20

Торопиться не надо… (Про спинлоки)

Reading time13 min
Views14K

После небольшой статьи про особенности при работе с кэшем (https://habr.com/ru/post/687146/) мне в личку прилетело несколько замечаний про работу спинлоков и приглашение на собес от пчелайнов, приятно, что технические статьи читают не только технари... лирика. Возвращаясь к обсуждению спинлоков, вышедших за рамки хабра, если это вызвало интерес, почему бы не написать про работу с этими примитивами синхронизации. Тема действительно интересная, да и разработчики придумали более десятка разновидностей спинлоков под разные вкусы и нужды. Все опять будет с тестами и примерами работы. @tbl Линус действительно прав, в юзерспейсе спинлоки "зло злющее", но как обычно есть нюансы...

Читать далее
Total votes 22: ↑22 and ↓0+22
Comments8

S3-FIFO: новый эффективный алгоритм вытеснения из кэша на основе очередей FIFO

Level of difficultyMedium
Reading time18 min
Views8.5K
В этой статье я расскажу о простом и масштабируемом (Simple, Scalable) алгоритме вытеснения данных из кэша на основе трёх статических (Static) очередей FIFO (S3-FIFO). После проверки на 6594 трассировках кэшей 14 компаний мы показали, что S3-FIFO имеет меньшую частоту промахов, чем 12 лучших алгоритмов, разработанных в прошлые десятилетия. Более того, эффективность S3-FIFO устойчива — он имеет наименьший средний показатель промахов для 10 из 14 датасетов. Использование очередей FIFO позволяет S3-FIFO достичь хорошей масштабируемости с пропускной способностью в шесть раз больше по сравнению с оптимизированным LRU в cachelib на 16 потоках.

Мы пришли к выводу, что доступ к большинству объектов в смещённых нагрузках кэша выполняется только за короткий промежуток времени, поэтому критически важно быстро вытеснять их из кэша. А главная особенность S3-FIFO — это небольшая очередь FIFO, отфильтровывающая большинство объектов, не давая им попасть в основной кэш.

Иллюстрация работы S3-FIFO (с использованием порогового значения перехода из маленького в основной кэш, равного 1)
Читать дальше →
Total votes 69: ↑69 and ↓0+69
Comments5

Коллекционирую лучшие C++ практики

Reading time3 min
Views20K

Коллекционирую лучшие C++ практики


Что-то наши публикации всё больше о плохом, чем о хорошем. Здесь баг, тут код с запахом, это антипаттерн, вот так писать не надо. Помогите увидеть светлую сторону программирования на С++. Оставляйте комментарии.

Читать дальше →
Total votes 28: ↑27 and ↓1+36
Comments9

Поиск в глубину, поиск в ширину, алгоритмы Дейкстры и А* — это один и тот же алгоритм

Reading time7 min
Views19K

В алгоритмических задачах на графах мы часто используем четыре известных алгоритма: Поиск в ширину или глубину, алгоритмы Дейкстры и А*. Разбираемся, почему на деле это один и тот же алгоритм.

Читать далее
Total votes 31: ↑26 and ↓5+29
Comments21

Information

Rating
Does not participate
Registered
Activity

Specialization

Application Developer