Pull to refresh
5
0
Александр @WebProd

Backend Developer

Send message

Полезен ли сегодня быстрый обратный квадратный корень из Quake III?

Reading time 23 min
Views 70K

В 2005 году id Software опубликовала под лицензией GPL-2 исходный код своей игры 1999 года Quake III Arena. В файле code/game/q_math.c есть функция для вычисления обратного квадратного корня числа, которая на первый взгляд выглядит очень любопытным алгоритмом:

float Q_rsqrt( float number )
{
    long i;
    float x2, y;
    const float threehalfs = 1.5F;

    x2 = number * 0.5F;
    y  = number;
    i  = * ( long * ) &y;                       // зловещий хакинг чисел с плавающей запятой на уровне битов
    i  = 0x5f3759df - ( i >> 1 );               // какого чёрта?
    y  = * ( float * ) &i;
    y  = y * ( threehalfs - ( x2 * y * y ) );   // первая итерация
//  y  = y * ( threehalfs - ( x2 * y * y ) );   // вторая итерация, можно удалить

    return y;
}

Об этом алгоритме написано множество статей, и ему посвящена хорошая страница Википедии, где он назван fast inverse square root (быстрым обратным квадратным корнем). На самом деле, этот алгоритм упоминался на различных форумах ещё до публикации исходного кода Q3. Ryszard из Beyond3D провёл в 2004-2005 годах исследование и в конечном итоге выяснил, что первоначальным автором алгоритма был Грег Уолш из Ardent Computer, который создал его десятью годами ранее.
Читать дальше →
Total votes 196: ↑194 and ↓2 +192
Comments 52

Алгоритмы балансировки нагрузок

Level of difficulty Medium
Reading time 8 min
Views 30K

Рано или поздно веб-приложения перерастают среду одного сервера. Компаниям требуется увеличить или их доступность, или масштабируемость, или и то, и другое. Чтобы сделать это, они развёртывают своё приложение на нескольких серверах и ставят перед ним балансировщик нагрузок для распределения входящих запросов. Чтобы справляться с нагрузками, большим компаниям могут потребоваться тысячи серверов, на которых запущено веб-приложение.

В этом посте мы рассмотрим способы, которыми один балансировщик нагрузок может распределять HTTP-запросы на множество серверов. Мы начнём снизу и проделаем весь путь вверх до современных алгоритмов балансировки нагрузок.
Читать дальше →
Total votes 107: ↑106 and ↓1 +105
Comments 16

Расчёт ёмкости, или как мы гадаем на SP

Level of difficulty Medium
Reading time 9 min
Views 4.9K

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

Для тех, кто знаком с другими методами эмпирического прогнозирования (например, методом «Вчерашней погоды» из Scrum) материал также может быть интересен.

Допустим. А дальше что?
Total votes 4: ↑4 and ↓0 +4
Comments 0

Как торговаться на собеседовании, чтобы получить максимум и не потерять оффер

Reading time 9 min
Views 31K

Как бы это неприятно ни звучало, собеседование — это всегда история про «продажу себя». И тут важно понимать то, что цену, конечно, устанавливает работодатель, но часто ее можно увеличить в свою пользу. Подробнее рассказывает наш герой:

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

Сразу отмечу, что я в этой теме не суперэксперт, который обучил тысячи людей. Просто я успешно применяю эти приемы для себя, и считаю, что будет круто, если их начнут применять другие. От этого все только выиграют. Но я человек, и в чем-то могу ошибаться. Приходите в комментарии, если в чем-то сомневаетесь — вместе отыщем истину.

Читать далее
Total votes 69: ↑62 and ↓7 +55
Comments 95

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Registered
Activity