Pull to refresh
2
0
Send message

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

Reading time23 min
Views72K

В 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 148: ↑146 and ↓2+191
Comments52

Осторожно! Старый н̶о̶в̶ы̶й̶ развод на Алиэкспрессе

Level of difficultyEasy
Reading time4 min
Views93K


Довольно часто встречаются статьи про разные варианты обмана покупателей в интернет магазинах. То пришлют кусок камня вместо Айфона, то внутри твердотельного диска будет обычная флешка с гайками как на КДПВ. Поэтому при оформлении новой покупки нужно строго подходить к выбору продавца (не новый, высокий рейтинг, мало отрицательных отзывов и пр.) и не менее важно, в каком магазине совершается покупка.


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


Как говорится, предупрежден, значит вооружен. И данная статья — предупреждение другим возможным потенциальным жертвам, а так же простые рекомендации как не попадать на ту же самую уловку, на которую попался я при оплате очередного "выгодного" предложения из Китая.

Читать дальше →
Total votes 96: ↑84 and ↓12+97
Comments376

Мы неправильно воспринимаем учетные записи в экосистемах

Level of difficultyEasy
Reading time5 min
Views5.7K

Вы наверняка знаете термин "экосистема", который обычно применяют в комплексу сервисов Apple или Google. И Яндекс не отставал. Ваш почтовый ящик на базе Яндекса позволяет вам логиниться практически во все их системы от почты и Браузера, до Диска, Такси, Кино и т.п. Привязанная карта к учетке становится доступна в прочих системах, очень удобно платить и управлять всем. И тут мы подбираемся к нюансам и попробуем понять, причем тут свои домены.

Читать далее
Total votes 14: ↑8 and ↓6+5
Comments11

«Проблема доверия в сети». Точка зрения

Level of difficultyEasy
Reading time2 min
Views4.1K

...Привет, Хабр!

Проблема «доверия в сети» по общему мнению, является основным препятствием для возникновения децентрализованной экономики и виртуальных трастовых децентрализованных сообществ. Осмысление данной проблемы привело к следующим выводам и результатам, которыми я хотел бы поделиться с вами, уважаемые коллеги.

Читать далее
Total votes 8: ↑1 and ↓7-6
Comments30

Внутри «Дома долголетия»: криотерапия, электромагнитные импульсы и пересадка фекалий за $100 тысяч

Level of difficultyEasy
Reading time6 min
Views5.6K

Майклу Нгуену за 40, однако он называет свой биологический возраст: от 27 до 29 лет. Нгуен начинает утро с «биозаряда» электромагнитными импульсами, ест один раз в день и принимает много добавок, включая рапамицин, который, по его словам, «обращает старение вспять». Он также пьёт средство от диабета, делает инъекции богатой тромбоцитами плазмы, чтобы остановить выпадение волос, и дремлет в гипербарической камере.

Осенью 2021 года Нгуен открыл «Дом долголетия» — частный клуб, в котором людям обещают, что их жизнь продлится до 120 лет. При этом у них не будет хронических и умственных заболеваний. 

Пожизненное членство стоит $100 тысяч.

Читать далее
Total votes 18: ↑6 and ↓12-5
Comments18

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

Reading time9 min
Views34K

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

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

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

Читать далее
Total votes 55: ↑48 and ↓7+55
Comments95

Как я сделал SPA в два раза быстрее

Level of difficultyMedium
Reading time10 min
Views23K

Существует огромное множество статей про оптимизацию загрузки веб-сайтов, но часто они обходятся лишь общими советами или абстрактными примерами. В этой статье я хочу поделиться своим опытом комплексной оптимизации реального проекта с конкретными примерами, в данном случае SPA, написанном на Vue 3 с использованием Vuetify для части UI компонентов и Firebase для авторизации.

Немного контекста: я работаю frontend-разработчиком в компании, которая в основном занимается разработкой MVP (Minimum Viable Product), но так же и разработкой и поддержкой долгоживущих продуктов. Как раз у MVP бывает много проблем, потому что минимум времени уделяется под рефакторинг и оптимизацию, а проблемы между проектами повторяются, потому что часто используется один стартовый шаблон.

Возможность долго и планомерно заниматься оптимизацией у меня появилась на волонтерском проекте компании - combat-sport.club, которому можно было уделять сколько угодно свободного времени. Так что в данной статье идет речь именно о нем, но решения с него мы переносили и на другие проекты компании, т.к. стэк технологий и проблемы были одинаковые.

Читать далее
Total votes 28: ↑27 and ↓1+31
Comments26

Microsoft переписывает код ядра и некоторых библиотек Windows на языке Rust. Но зачем?

Reading time4 min
Views47K
microsoft-is-rewriting-core-windows-libraries-in-rust-v0-Nsy2e3-Z9k4-XXJv-6k-XV9d4a-Mmj-VKb-Th-Cj-Sh

Недавно стало известно о том, что команда разработчиков Windows 11 занимается новым типом работы — переписывает ряд модулей ядра и системных библиотек операционной системы на Rust. При этом работа уже в разгаре, это не просто анонс проекта или планы на будущее — реализация идет полным ходом. Зачем корпорации все это понадобилось?
Читать дальше →
Total votes 79: ↑75 and ↓4+100
Comments227

О разнице между лямбдами и обычными функциями и о имплементации лямбд в некторых языках программирования

Level of difficultyMedium
Reading time17 min
Views21K

Цель настоящей статьи - изучить лямбда функции: чем они отличаются от обычных функций и изучить, как они реализованы в С++, Python 3 и Java.

На протяжении этой статьи я буду использовать godbolt.org, чтобы компилировать код и изучать машинный код или байт код. Я думаю, что при чтении статьи может быть удобнее смотреть не на приведённый машинный код в статье, а на этом сайте.

Читать далее
Total votes 19: ↑16 and ↓3+15
Comments41

Жесткость воды и шелушение кожи головы (перхоть)

Level of difficultyEasy
Reading time3 min
Views16K

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

Проблема постоянно со мной, то хуже, то лучше. Летом почти полностью пропадает шелушение, зимой возвращается. Ситуация то ухудшается, то улучшается. Заметил, что на море обычно полностью пропадает.

Лечился не систематично, но попробовал многое - лечебные шампуни на дегте (только хуже), цинке. Мыло с дегтем, с серой, так называемое "зеленое мыло". Разумеется, низорал, head&shoulders и т.д. Везде один эффект - помогает первые 1-2 раза, потом все возвращается. Лучше было от масел (кокосовое, черного тмина и т.д.), от мыльного корня и прочей экзотики, но опять же с нестабильным эффектом, то помогает, то нет.

Читал научные обзоры, советовался с парикмахерами и знакомыми - в основном, все убеждены, что проблема медицинская, в грибке, и лечить нужно соответствующими средствами внутрь и снаружи. Но я убеждался постоянно, что лично мне это все не очень сильно помогает (прям серьезный курс я не проходил, конечно, но симптоматическое лечение не показывало результатов).

Все это вяло продолжалось пока я не съездил в Питер и не помыл голову местной городской водой. Эффект потрясающий - после первого же мытья не наблюдается никаких симптомов! Запарился этой темой, выяснилось, что в Питере очень мягкая вода по сравнению с Москвой. Видимо, в этом и причина. Стал изучать.

Читать далее
Total votes 31: ↑23 and ↓8+24
Comments48

Вся правда о редакторе связей

Reading time8 min
Views3.1K

Сначала я хотел назвать эту заметку «Редактор связей? Это очень просто». Именно так называл свои прекрасные книжки Евгений Айсберг: «Радио? Это очень просто!», «Телевидение? Это очень просто!» Но поскольку я уже использовал эту шутку в статье о планировщике Windows, чтобы не повторяться, теперь использую любимую формулу многих журналистов: «Вся правда о…».

На самом деле никакую ужасную правду о редакторе связей раскрывать не требуется. Для программистов старшего поколения эта заметка вообще вряд ли будет интересна, поскольку в ней описываются банальные вещи. Но я, к сожалению, неоднократно сталкивался с самыми дикими представлениями о работе, например, компилятора или того же редактора связей у молодого поколения работников ИТ. И я их даже не обвиняю. На фоне чудовищного потока информации в современном программировании заставлять кого-то еще шарить по книгам и сайтам, чтобы разобраться, как работает утилита, внутрь которой они никогда не полезут – это даже не этично.

Другое дело я, который сопровождает и даже по мере сил развивает средства программирования. Приходится разбираться и с работой редактора связей, а, значит, как говорится, мне и карты в руки. Попробую кратко и на пальцах объяснить назначение и работу этого программного инструмента. И не просто объяснить, а привести примеры из конкретной реализации. Иначе абстрактные рассуждения плохо воспринимаются. Сам не люблю лекторов, которым кажется, что им достаточно поводить пальцем в воздухе, чтобы аудитория все поняла с полуслова. Так не бывает.

Читать далее
Total votes 11: ↑8 and ↓3+9
Comments10

О том, как я сломал Ubuntu и убил день на то, чтобы починить

Level of difficultyEasy
Reading time2 min
Views44K

Бывало у вас такое, что Snapd User Session Agent входит в бесконечный цикл? Вы вводите правильный пароль и... попадаете на тот же экран входа.

Это широко известная ситуация, которая может происходить из-за самых разных факторов. Не менее широко известен и универсальный рецепт: попадите в терминал bash через tty (Ctrl + Alt + F1), найдите проблему и устраните её.

Однако что, если вы не можете попасть в терминал по какой-либо причине? Например, раскладка вашей клавиатуры по умолчанию отличается от раскладки вашего логина и пароля? Этому особому кейсу я и хотел бы посвятить статью, так как потратил на него уйму времени и ещё больше - нервных клеток.

Итак, вы впервые сталкиваетесь с infinite login loop и пытаетесь залогиниться в терминал при помощи tty. Но тут вас встречает "родная" русская раскладка вместо родной английской. Никакие хоткеи не работают: вы попробовали Shift + Alt, Alt + Shift, Cmd (Win) + пробел и все до единой остальные. Ничего не помогает. Можно сколько угодно стрессовать и сомневаться в своей вменяемости ("каким идиотом надо быть, чтобы поставить русскую раскладку как основную на машине Ubuntu???"), это не отменяет тупиковой ситуации. Как итог - вход невозможен. Вы перезагружаете машину, зажимаете Esc (иногда также Shift, но не в моем случае), чтобы попасть в grub menu и входите в recovery mode. Но - о ужас - и тут вас преследует ненавистная раскладка.

На просторах форумов и тредов StackOverflow вы встретите людей, которые дошли до этого этапа из-за греческой или русской раскладки и отчаялись, попросту переустановив операционную систему с флешки или другого физического накопителя. Не поступайте так, суицид - не выход.

Читать далее
Total votes 86: ↑79 and ↓7+88
Comments190

Поколение оскорблённых: защита прав или дискриминация инакомыслия?

Reading time10 min
Views9.1K

Начать хотелось бы с простого вопроса - а вам не кажется, что люди стали слишком часто обижаться? На всё подряд. Религия, рацион, мировоззрение, традиции, язык, цвет кожи, сексуальная ориентация, гендерная идентичность, длина волос, национальные костюмы... на всё подряд. Оскорблённость сейчас словно является непременным атрибутом высокоморального человека. Хороший человек просто обязан быть на кого-то обиженным и требовать контрибуций и репараций в пользу своей социальной группы, иначе его признают пассивным и непросветленным, а то и вообще запишут в ранг "угнетателей" с последующими попытками весьма агрессивного переубеждения.

Несомненно, социальная несправедливость и неравенство - тема очень важная и требующая решения. Но почему-то сейчас основным инструментом решения вопроса стала позиция оскорбленной жертвы. И я не берусь рассуждать про социальные процессы и явления, юридические особенности и экономические проявления дискриминации и сегрегации - у меня просто не хватит компетенций. Но вот разобрать по полочкам стратегию "кто быстрее обиделся - тот и прав" смогу, и смогу объяснить, почему, с точки зрения именно психологии, этот путь тупиковый.

Читать с риском обидеться
Total votes 31: ↑24 and ↓7+25
Comments34

Подход к созданию децентрализованной цифровой идентичности

Level of difficultyMedium
Reading time15 min
Views3.1K

Существование субъекта в информационном пространстве определяется его идентификаторами: номером телефона, адресом электронной почты, аккаунтами в социальных сетях. Лишиться любого из них – значит выпасть из социального графа и потерять важные деловые контакты. Хотя социальные связи по своей природе децентрализованы, в реальности наши идентификаторы, а значит и идентичность, в значительной мере привязаны к централизованным провайдерам. В статье отмечены преимущества и недостатки такого положения дел, а так же показано, как при помощи технологии децентрализованных идентификаторов (Decentralized Identifiers, DID) строится независимая идентификация.

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

Синдром информационной усталости: болезнь, которой (пока) нет в МКБ

Level of difficultyEasy
Reading time15 min
Views27K
Недуг, которого причину
Давно бы отыскать пора…

/А.С.Пушкин/


Помните шутки вроде: «Ну откуда столько вирусологов, хорошие же биржевые аналитики были»? В каждой шутке есть доля правды: многие из нас не просто потребляют новости, но и пытаются разобраться в проблеме. Никого не удивляет, когда в кафе сидят филолог, кредитный специалист, капитан полиции и все они вместе спорят до хрипоты, цитируя PubMed, Lancet и обсуждая рекомбинантные вакцины. С другими темами происходит примерно то же самое с поправкой на эмоциональный компонент или личный опыт (как, например, в биржевом деле). Однако за такой осведомлённостью, включённостью и эрудированностью скрывается коварная штука, которую некоторые эксперты называют синдромом информационной усталости. Всё линейно: мы живём в сверхмощном информационном потоке, потребляем колоссальное количество контента и постепенно перегружаем свой центральный процессор. Который, как известно, любит отдыхать и готов буквально принудить нас к передышке. Конечно, не чума XXI века, но та ещё пандемия. 


Читать дальше →
Total votes 40: ↑37 and ↓3+51
Comments29

Эй, Google, это твой баг

Level of difficultyEasy
Reading time8 min
Views8.1K

Это история о том, как мы обнаружили баг в приложении для Android и упорно пытались доказать, что это баг Google, а потом ещё упорнее пытались заставить компанию его устранить.

Прежде чем вдаваться в подробности, приведу немного контекста.


▍ Да, это заняло больше четырёх месяцев!


Почему так долго? Позвольте мне объяснить природу бага и хронологические этапы его устранения.
Читать дальше →
Total votes 27: ↑26 and ↓1+38
Comments21

Я хотел улучшить React

Level of difficultyMedium
Reading time8 min
Views9.8K

Я давно пишу код, а React использую более пяти лет.

За это время у меня возникло несколько идей о том, как можно было бы улучшить React.

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

А о том, что из этого вышло, я бы хотел рассказать в этой статье.

Читать далее
Total votes 5: ↑3 and ↓2+4
Comments48

Укрощение имен. Как нейминг помогает оптимизировать код

Reading time12 min
Views9.4K

Что такое имя? Имя — это ярлык, дескриптор, указатель в вашей памяти. Это краткое изложение сложной идеи. Оно позволяет ссылаться на «экономику» или «догфудинг» в середине предложения, избегая развернутого на три абзаца объяснения термина.

Если представить, что разработка программного обеспечения — это просто распределение данных по ячейкам и их маркировка, то становится понятно, почему именование объектов является одной из двух сложных задач в информатике. Объем рабочей памяти мозга ограничен, и хорошее имя позволяет использовать его максимально эффективно. Хорошее имя — всегда лаконичное, вызывающее ассоциации и подходящее по контексту. Оно снижает когнитивную нагрузку и лучше отпечатывается в сознании. Плохое имя — это неясное, вводящее в заблуждение, расплывчатое или явно содержащее недостоверную информацию.

Под катом разработчик Джозеф Гласс* делится правилами эффективного нейминга и разбирает их на практических примерах.

*Обращаем ваше внимание, что позиция автора может не всегда совпадать с мнением МойОфис.

Читать далее
Total votes 45: ↑38 and ↓7+32
Comments6

Откуда Карты знают, когда приедет автобус

Reading time7 min
Views53K

Раздел «Транспорт» — один из самых популярных в Яндекс Картах: там автобусы, троллейбусы и трамваи перемещаются прямо по карте в реальном времени, а для каждой остановки есть виртуальное табло. Можно посмотреть, сколько ещё ждать транспорт, или понять, когда лучше выходить из дома, чтобы его не пропустить. А если оказались в незнакомом районе — узнать, как быстрее добраться домой, и сразу найти ближайшую остановку или станцию метро.

Меня зовут Антон Овчинкин, я руководитель группы разработки пешеходной и транспортной навигации. Сегодня я расскажу, что у «Транспорта» под капотом, какие алгоритмы отвечают за то, чтобы автобусы появлялись на карте, двигались по ней плавно и реалистично, а прогноз был максимально точным.

Читать далее
Total votes 91: ↑89 and ↓2+105
Comments172
1

Information

Rating
Does not participate
Registered
Activity