Обновить
256K+
1 366,91
Рейтинг
34 713
Подписчики
Сначала показывать

Как одна операция из линейной алгебры захватила мир ИИ

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели14K

В 2017 году в мире нейросетей произошел почти незаметный переворот. Без громких презентаций и человекоподобных роботов исследователи из Google опубликовали статью с очень скромным названием — Attention is All You Need. Но именно после нее индустрия ИИ фактически разделилась на «до» и «после».

Сегодня на трансформерах работают ChatGPT, Claude, Gemini, Midjourney и почти весь современный генеративный ИИ. И самое странное в этой истории — фундаментом революции стала одна из самых простых операций линейной алгебры: скалярное произведение векторов.

Не новая архитектура памяти.
Не сложная логика вывода.
Не биологически правдоподобная модель мозга.

А обычное перемножение чисел с последующим сложением.

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

Читать далее

«Это ABSOLUTE CINEMA». Почему 007: First Light — лучшая игра про Бонда и главный сюрприз года

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели14K

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

Однако нельзя не отметить тот факт, что последние 20 лет франшиза определенно находится в упадке. После стильного и приземленного «Казино Рояль» эпоха Крейга пошла максимально не туда. Кроме спорного «Скайфолл», даже отметить нечто интересное в этом периоде сложно.

А уж на игровом поприще и вовсе всё грустно. Окромя уже антикварной Golden Eye 1997-го на Nintendo 64 нет ничего, что было бы достойно называться частью Бондианы. Но так вечно продолжаться не могло, и Джеймс Бонд достался самым подходящим разработчикам во вселенной — студии IO Interactive, отцам лучшего симулятора киллера в истории — Hitman. Я бы смело назвать это браком, заключённым на небесах. Из-под их крыла за 6 лет разработки родилась 007: First Light, которая не просто стала лучшей игрой про британского шпиона ВООБЩЕ, но и подарила геймерам дух настоящего приключения, которым в индустрии не пахло уже очень давно.

Читать далее

Интересные развлечения со змеей

Уровень сложностиСредний
Время на прочтение15 мин
Охват и читатели14K

На этот раз у нас известный язык программирования Python, c двумя стилизованными змеями на логотипе, интересные и необычные развлечения с которым были собраны в этой замечательной статье.

Читать далее

Формулы и функции в Excel: подробное руководство для начинающих

Уровень сложностиПростой
Время на прочтение11 мин
Охват и читатели13K

Формулы Microsoft Excel позволяют мгновенно и без ошибок производить сложнейшие расчеты. Их ценность возрастает в разы, когда приходится работать с огромными массивами данных. Стоит запустить правильный алгоритм, и Excel за считаные секунды перелопатит тонны информации, выдав готовый результат.

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

Читать далее

Гранит-Навигатор 4.11. Оживляем самый крутой транспортный информатор

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели8.8K

Приветствую всех!

Год назад я уже рассказывал про то, как работает мониторинг пассажирского транспорта и какое оборудование там используется. Но в комментариях мне подсказали, что рассмотренные устройства хоть и используются во многих городах до сих пор, но всё же являются довольно древними.

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

Press F1 to continue

Кинопоиск всё-таки отключил статистику по фильмам — я создал свою на основе Letterboxd и TMDB

Уровень сложностиПростой
Время на прочтение13 мин
Охват и читатели7.9K

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

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

Меня это изменение не задело — я давно уже переехал с Кинопоиска на Letterboxd.

Не буду сегодня останавливаться на моих впечатлениях от Letterboxd в целом (спойлер: они смешанные). Но вот интересно посмотреть, как там обстоят дела со статистикой просмотренного.

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

Что очевидно подталкивает нас к тому, чтобы сделать своё решение, где будет вся нужная нам статистика бесплатно и в лучшем виде. Тем более, Letterboxd позволяет выгрузить всю свою личную информацию в виде архива.

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

Читать далее

HyperLogLog: как найти уникальные значения в терабайте данных, не храня их

Уровень сложностиСредний
Время на прочтение14 мин
Охват и читатели18K

Представим задачу: хайлоад-сервис гонит поток данных — логи, IP-адреса, ID пользователей, миллиарды записей в сутки. Ваша задача — посчитать количество уникальных посетителей за неделю.

Первым решением может показаться завести HashSet и кидать туда ключи, а в конце посмотреть размер. Решение неплохое, но когда речь заходит о миллиардах записей — память будет слабым местом. Один IP-адрес (4 байта) как ключ в HashSet потянет за собой накладные расходы на ноды, указатели и хеши. На практике один элемент сжирает не меньше 50–100 байт. Поток в миллиард уникальных записей потребует под сотню гигабайт оперативной памяти. Это дорого, а если инстансов десять — то просто нереально.

Но существует алгоритм, который способен решить эту задачу примерно в 1.5 килобайта памяти с погрешностью около 2%? Без хранения самих данных и гигантских кластеров. Достаточно одного прохода по потоку и пары битовых трюков — именно так и работает HyperLogLog, алгоритм родом из математической статистики, который перевернул подход к подсчёту уникальности в Big Data.

HyperLogLog используют в Redis, BigQuery, ClickHouse, Presto. В этой статье мы разберем и реализуем этот алгоритм на C, а также узнаем его предысторию.

Читать далее

HTML Sanitizer API: конец эпохи DOMPurify и XSS-страданий

Уровень сложностиПростой
Время на прочтение9 мин
Охват и читатели9.8K

Инженеры узнают о межсайтовом скриптинге (Cross-Site Scripting, XSS) тремя способами.

Счастливчики узнают о нем благодаря полезному анализу кода или проактивному правилу проверки кода. Внимательные — во время аудита безопасности, который выявляет уязвимость до того, как она попадет в продакшн.

А есть те, кто узнает о нем через страдания, когда их сайт становится уязвимым. Когда злоумышленник внедряет скрипт, который крадет токены сессий из localStorage, перехватывает файлы cookie или перенаправляет пользователей на фишинговый сайт. Я лично присоединился к клубу «пострадавших» еще в 2005 году, когда встроенная Flash-подпись на форуме, которым я владел, превратилась в кошмар с точки зрения безопасности… но это уже другая история.

В этой статье мы рассмотрим, как браузер, наконец, снимает с нас бремя очистки данных (sanitizing) благодаря новому HTML API Sanitizer.

Читать далее

Что делать, если HTTP‑запрос прошёл, а транзакция в БД откатилась?

Уровень сложностиСредний
Время на прочтение34 мин
Охват и читатели10K

Если ваш сервис одновременно пишет в БД и дёргает внешние API, прямо сейчас у вас есть как минимум один из этих сценариев:

– деньги списаны, заказа в базе нет;
– товар на складе заблокирован навсегда под «призрачный» заказ;
– курьерская служба везёт посылку, которую никто не заказывал.

Это не баги в коде – это архитектурная проблема двойной записи. И у неё есть классическое решение: паттерны Transactional Outbox, Result Table и Saga Compensation. Под катом – не только теория, но и живой рабочий проект на Scala, который можно склонировать и запустить.

Читать далее

Уникальный смартфон из 2002'ого с процессором m68k и GPU: инженерное чудо Palm i710

Уровень сложностиПростой
Время на прочтение8 мин
Охват и читатели14K

Мы все с вами привыкли, что начиная с 2000 года, на рынке мобильных процессоров доминирует ARM. Сегодня устройства на базе данной архитектуры окружают нас везде: смартфоны, колонки, вейпы, часы и многие другие устройства. Однако раньше всё было не так и когда-то основным конкурентом ARM была легендарная компания Motorola...

В 90-х годах, Motorola m68k был знаковым процессором. Он использовался во десятках легендарных устройств: компьютерах Mac, телефонах StarTAC и КПК от компании Palm. И в 2002 году, Palm представила свой первый коммуникатор — i710, который сочетал в себе классический процессор из 90-х и современный радиомодуль. Сегодня мы с вами разберем это чудо инженерной мысли, изучим его схемотехнику и компонентную базу, и узнаем, на что был способен этот красавец на практике. Если любите настоящие технарские статьи — жду вас под катом :)

Читать далее

Оживление android-планшета глазами новичка. Как я нашел себе классную читалку на лето

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели16K

По личным ощущениям, индустрия планшетов потихоньку отошла на второй план у массовых пользователей. И речь сейчас про буквально все сегменты, от недорогих устройств на Android до всей линейки iPad. Эта история осталась актуальной для гораздо более узкой прослойки людей, как будто.

Я же, в свою очередь, любил свой iPad сначала mini второго поколения (еще в студенческие годы), а затем и Air 2, который дожил до 2023 года, пока его случайно не разбила старшая дочь. Но вот как-то новый мне покупать не хотелось — я банально не нашел ни одной причины это делать по большей части.

А недавно, разбирая шкафы в квартире родителей, я нашел артефакт — Samsung Galaxy Tab A8. Компактный, красивый и, что самое главное, рабочий. И тут возникла у меня идея, ход исполнения и результаты которой я и расскажу в этом материале.

История о воскрешении далее

История разработки Arduboy WOW

Уровень сложностиСредний
Время на прочтение21 мин
Охват и читатели13K

Приблизительно в начале 2025-го года я решил попробовать 3D-печать и разработку печатных плат. Одна идея мотивировала меня на это — сделать свою игровую приставку. Но больше всего мне хотелось, чтобы она была полноценной и без колхоза. Мне кажется, на днях я частично достиг эту цель, когда сделал свою приставку, которую назвал Arduboy WOW.

В этой статье расскажу о том, как я начал знакомство с Arduboy через симулятор, сделал первый вариант приставки и расстроился, как решил уйти в отрыв и делать все модулями, чтобы уменьшить проблемы при заказе печатной платы для конечного варианта. И в конце поделюсь впечатлениями, как оно работает.

Если вас интересуют спорные схемотехнические решения или разработка DIY приставок без понимания, зачем делать все слишком просто, то можете уверенно продолжать читать дальше.

Читать далее

Разбор медицинского анализатора: Bayer Clinitek Status+

Уровень сложностиСредний
Время на прочтение5 мин
Охват и читатели13K

Приветствую всех!

Думаю, многим из вас доводилось в рамках диспансеризации или по предписанию врача идти в лабораторию и сдавать что-то на анализ чего-то. А ещё, уверен, многие хоть раз задумывались: а как вообще работают приборы, которые там стоят, и как они вообще определяют наличие тех или иных гадостей в вашем организме?

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

Press F1 to continue

Transfer 2.0, или Как я перестал бояться и полюбил миграции облачных серверов

Уровень сложностиСредний
Время на прочтение28 мин
Охват и читатели8.7K

Привет, Хабр! Меня зовут Денис, я тимлид инфраструктурной Core команды в Timeweb Cloud.

Итак... представьте обычную виртуальную машину клиента. Она принимает запросы, пишет в базу, держит файловый кэш, обновляет память, что-то постоянно меняет на диске. А теперь нам нужно перевезти её с одной физической ноды на другую так, чтобы клиент не заметил переезд.

Звучит просто, пока не вспоминаешь, что у виртуальной машины есть память, диски, снапшоты, сетевые настройки, разные формат хранилищ, отличающиеся модели и вендоры CPU и состояния в базе управления. Любая из этих деталей может превратить задачу типа «перенести сервер» в ручную операцию с окном обслуживания, тикетом в поддержку и нервным инженером у консоли.

Мы переписали модуль миграции VDS так, чтобы эти детали стали частью алгоритма, а не частью ночной операционной инструкции.

В этой статье расскажу, как мы устроили живые миграции на базе libvirt, зачем оставили rsync, почему перешли на NBD для активных дисков, как выбираем RDMA или TCP, что дают SYNC_WRITES, ZEROCOPY, DETECT_ZEROES, AUTO_CONVERGE и другие флаги, и почему всё это важно не только инженерам, но и бизнесу.

Кодовые фрагменты взяты из реального модуля управляющего трансферами. Они немного сокращены и упрощены для статьи, но отражают настоящую логику. В целом материал будет полезен как системным инженерам, так и пользователям, для понимания всех внутренних процессов — что и как устроено и почему работает так, как работает.

Читать далее

Почему мы до сих пор неправильно пишем физические движки и 3D-графику

Уровень сложностиСредний
Время на прочтение8 мин
Охват и читатели28K

Стоит открыть исходники любого современного игрового движка – неважно, это C++-рендер, сделанный на коленке, или какая-нибудь гигантская экосистема вроде Unity или Unreal Engine – вы первым делом натыкаетесь на одни и те же знакомые сущности. Все вокруг живет в Vector3: координаты, направления движения, точки столкновений. Каждая частица указывает, куда она смотрит, с помощью Quaternion. А если требуется что-то покруче – переносить и одновременно крутить объект, то Matrix4x4. Это уже как стандарт де-факто: кто пробовал крутить объекты руками, тот точно переписывал код с этими структурами. Ещё конечно же отдельно существуют лучи, плоскости, сферы, bounding boxes, а между ними тянутся километры функций вроде dot()cross()normalize()lookAt()inverse()project() и бесконечных преобразований типов.

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

И самое интересное заключается в том, что так было не обязательно.

Читать далее

Вы можете победить бинарный поиск

Уровень сложностиСредний
Время на прочтение6 мин
Охват и читатели15K

В этой статье речь пойдёт не просто об очередном алгоритме, а о том, как можно обойти классический бинарный поиск. Казалось бы, что может быть эффективнее старого доброго деления массива пополам для нахождения значения в отсортированных данных? Однако можно пойти дальше. В этой статье будет рассказываться о самодельном алгоритме «SIMD Quad» - квадратичном поиске.

Идея возникла из необходимости быстро искать 16-битные целые числа в массивах размером до 4096 элементов — именно такие структуры лежат в основе популярного формата Roaring Bitmap. Вместо того чтобы на каждом шаге сравнивать искомый элемент только с одной серединой интервала, авторский алгоритм использует две ключевые аппаратные особенности современных процессоров. Во-первых, это SIMD-инструкции, позволяющие за раз сравнить до 16 элементов. Во-вторых, это распараллеливание работы с памятью, которое даёт возможность безболезненно делить массив не на две, а сразу на четыре части. Так родился гибрид, который сначала выполняет учетверённый поиск по блокам, а затем находит нужный элемент с помощью векторных инструкций. Давайте разберёмся, как это работает и почему такой подход действительно позволяет превзойти бинарный поиск.

Читать далее

Строительство Саркофага. Часть 3. Над развалом реактора

Уровень сложностиПростой
Время на прочтение10 мин
Охват и читатели23K

Чуть ли главной проблемой всех проектов объекта «Укрытие» было чем и как перекрыть дыру в энергоблоке сверху. Во-первых, нужны были конструкции с большими пролётами, что само по себе дело дорогое и сложное даже в нормальных условиях. Во-вторых, монтаж должен по минимуму требовать прямого вмешательства людей. В-третьих, нужно обеспечить нормальные условия для захоронения разрушенного реактора. В-четвёртых, делать надо было всё быстро...

Читать далее

Игровой автомат своими руками

Уровень сложностиСредний
Время на прочтение28 мин
Охват и читатели18K

Кто из нас в детстве не мечтал о собственном игровом автомате? Настало время реализовать свою мечту. Рассказываю, как собрал аркадный автомат своими руками и не сошел с ума.

Потому что купить готовую реплику — скучно. А вот переписать NES на ПЛИС, заставить работать монетоприемник, впаять SCART в телевизор, который его не поддерживает, и выпилить корпус из ДСП — это уже приключение.

Кому мало «купить готовое» — прошу под кат.

Читать далее

Аппаратная метрика. Оживляем счётчик покупателей

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели10K

Приветствую всех!

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

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

Press F1 to continue

Тайна легендарной Nokia N70: как финны сделали кнопочный смартфон сразу с двумя процессорами

Уровень сложностиПростой
Время на прочтение14 мин
Охват и читатели19K

Пожалуй одним из самых массовых и известных смартфонов от Nokia был легендарный N70 и его удешевленный собрат в лице N72. Будучи выпущенным в далёком 2005 году, этот миниатюрный кнопочник скрывал в себе функционал полноценного компьютера с достаточно мощным железом, многозадачной операционной системой, поддержкой нормального Web'а и функционалом мультимедийного комбайна. Но немногие знают о том, что у этого смартфона было сразу два процессора...

В сегодняшней статье мы с вами проведем полный анализ схемотехники N70/N72, подробно узнаем о том, за что отвечает каждый чип на плате устройства и как они все вместе работают, какие неисправности преследовали смартфоны Nokia тех лет, а также изучим особенности ОС Symbian. Любите настоящие гиковские Хабратортные статьи, а не ИИ-жвачку, успешный успех и прочий оффтопик? Тогда жду вас под катом!

Читать далее
1
23 ...

Информация

Сайт
timeweb.cloud
Дата регистрации
Дата основания
Численность
201–500 человек
Местоположение
Россия
Представитель
Timeweb Cloud