Стоит задача разделить два числа, то есть найти частное от деления и остаток, используя встроенный в процессор алгоритм деления двухразрядного числа на одноразрядное, который дает лишь одноразрядное частное и остаток.
Ограничимся делением двухразрядных чисел без знака. Деление чисел большей разрядности можно обобщить, при необходимости обратившись к первоисточнику [1]. Описываемый алгоритм назовем «программный 128/128». Заметим, что во многих 64-битных компиляторах он реализован (GCC, Clang, Intel Compiler) и может быть использован напрямую без изобретения велосипеда.
Цель данной статьи — подробно объяснить детали алгоритма, чтобы снизить порог входа в энциклопедические труды Д. Кнута, в том числе объяснить почему деление в процессоре дает лишь одноразрядное частное (конкретно для 64-битных процессоров можно делить 128-битное число на 64-битное, получая лишь 64-битное частное). Назовем процессорный алгоритм деления как «аппаратный 128/64».
Ключевым моментом в понимании алгоритма деления является процесс нормализации чисел, который позволяет воспользоваться встроенным в процессор делением 128/64.
Алгоритм деления двухразрядных чисел в зависимости от разрядности делителя разделяется на два: половинчатое деление, когда делитель по факту одноразрядный, и полное деление, когда делитель двухразрядный. Назовем первый алгоритм как «половинчатый программный», а второй как «полный программный». Заметим, что «аппаратный 128/64» является половинчатым; он будет использован в обеих ветках программного алгоритма.
Читать далееПользователи ненавидят спиннеры. Они хотят видеть лайк сразу после клика. Optimistic UI решает эту проблему, но создает новую: что делать, если сервер вернет ошибку?
В императивном коде (Promise/async-await) откат состояния превращается в ад из try/catch и ручных мутаций переменных, порождая Race Conditions.
В этой статье я покажу, как реализовать надежный паттерн Compensating Transaction на чистом RxJS. Мы построим архитектуру, где состояние это поток, который невозможно "сломать" частыми кликами или сетевыми сбоями. Никаких if/else, только чистые потоки.
Построить реактивный UIКогда мобильная связь подводит, особенно важно оставаться на связи с близкими. Почему бы тогда не организовать собственную телефонную сеть на основе VoIP? Меня зовут Дима Абакумов, и под катом расскажу, как я решал эту задачу и с какими трудностями столкнулся
Читать далееВ этой статье я разберу, как создать интерфейс Liquid Glass компании с логотипом фрукта без использования различных npm-модулей или шейдеров, нагружающих видеопамять устройства.
Читать далееВ книге Алестаэра Нэрна Engines that Move Markets — Technology Investing from Railroads to Internet and Beyond исследуется как важнейшие технологические изобретения последних 200 лет — от железных дорог до интернета — влияли на финансовые рынки и состояние инвесторов. Предисловие к книге написал сэр Джон Темплтон в 2000 году, на пике дотком-мании:
«Никогда ещё не было лучшего времени для жизни, и мы должны ценить это. Я остаюсь оптимистом относительно будущего — но это не означает, что при инвестировании не следует быть осторожными. Река удачи может течь в нашу сторону, но важно прокладывать осторожный путь среди порогов, способных опрокинуть лодку. Следует сохранять терпение, гибкость и помнить, что все активы в конце концов будут оценены по своим будущим доходам».
«Воздействие ожиданий, подкреплённых эмоциями, формирует тенденции на рынках. Те, кто утверждает, что текущий бычий рынок уникален — как и любой другой — должны знать лучше. Уроки истории однозначны: любой бычий рынок заканчивается в момент наивысшего оптимизма, а за ним следует медвежий рынок, завершающийся в момент наибольшего пессимизма».
«Несмотря на различия между эпохами, структура повторяется удивительно точно. Сначала новое изобретение встречается скепсисом. Затем скепсис сменяется энтузиазмом, когда бизнес начинает осознавать потенциал. В отрасль устремляются новые компании, появляется венчурный капитал, акции почти всех быстро растут на волне восторга. Потом наступает фаза зрелости: деньги заканчиваются, слабые фирмы исчезают, а наивные инвесторы теряют средства. Наступает пессимизм, цены падают, рынок стабилизируется».
Читать далееВот недавно я сидел и пытался разобраться в одной теме. Всё закончилось на открытии десяти вкладок и погоней за новостями и отчётами. Вроде информации достаточно, но целостной картины нет. И тут я вспомнил, как один товарищ советовал мне Perplexity AI для поиска разной инфы. Я попробовал...
Честно, первая реакция была скептичной. Очередной чат-бот, который обещает золотые горы, а на деле выдаёт бессвязный текст. Но я ввёл первый запрос и удивился. Сервис ответил со ссылками и короткими выдержками. В какой-то момент стало понятно, что это похоже на поиск нового поколения и было бы интересно познакомиться с ним подробнее.
Сегодня у нас обзор Perplexity AI, приятного прочтения!
Читать далееВступление:
Доступ к интернету в наши дни напоминает игру в «Сапёра»: никогда не знаешь, где рванёт и какой репозиторий отвалится завтра. Утром ты сеньор-помидор, а к обеду не можешь стянуть дистрибутив, потому что чей-то IP попал под горячую руку регулятора.
Если вы давно живёте в терминале, скорее всего всё это знаете - этот текст для тех, кто ещё не использовал SSH как SOCKS5-прокси.
Конечно, можно развернуть VLESS с XTLS-Reality, обернуть это в CDN и присыпать сверху магией, но иногда нужно решение в стиле «тяп-ляп и в продакшен».
Встречайте: SOCKS5 поверх SSH. Дешево, сердито и работает (если ваш провайдер еще не научился вскрывать SSH-пакеты зубами).
Имея VPS за пару долларов, вы можете вернуть себе доступ к документации (и, чего уж греха таить, к котикам в Instagram) буквально одной командой.
Ищем документациюПривет, Хабр! Хочу поделиться опытом разработки такой системы. Определяющими параметрами проблемно‑ориентированной системы являются.
Читать далееПеред началом разбора хочу отметить, что это один из моих первых writeup'ов в рамках сезонного ивента Season of the Gacha на HackTheBox. Машина Gavel оказалась весьма интересной и познавательной, но также она заставляет немного приложить усилий, терпения и логики. Не скажу, что у меня не было проблем с прохождением, но я думаю, что испытал внутреннее удовлетворение после прохождении, давайте приступим!
Читать далееЭтап первый: Я уверен, что будущее за DEEP CODING, где за кодинг не мы платим — платят нам!
Этап второй: когда я нашёл Perplexity Spaces и всё изменилось
Этап третий: странный ритуал разогрева чата, который звучит как шаманство, но работает как часы
Ребята, давайте честно. Нам продают подделку. Игрушечный код вместо архитектуры. Каждый запрос минус деньги. Мы бесплатно тестируем чужие SaaS-платформы, а они зарабатывают на нашей боли и усталости.
Читать далееНа заре двухтысячных интернет довольно сильно отличался от того, каким мы знаем его сейчас. Но многое изменилось с появлением Swf.
В 2004 был (разработан) выпущен новый стандарт скриптового движка Action Script 2.0.
Но были и те-кто додумался "сделать из буханки" - трамвай (но зачем?)
Test Drive Unlimited (2006)
тропический остров в океане
французские разработчики Test Drive Unlimited применяли его в своем движке Twilight, написанного на Visual C++.
Twilight применялся и в других играх компании, например в сиквеле - TDU2 и Alone in the dark (2008)
Исходный код был утерян, со слов разработчиков его не осталось.
Читать далееНедавно я решил опубликовать приложение в Google Play, думая, что это не так сложно. Под эту задачу написал небольшое приложение-счетчик и стал погружаться во все тонкости процесса публикации. Почти сразу стало понятно, почему многие называют это кругами ада.
Этой статьей хочу внести больше ясности в процесс и уберечь других разработчиков от лишней траты времени, которая часто возникает из-за ошибок на разных этапах. Расскажу о подводных камнях, частых ошибках и о том, как бесплатно и быстро набрать тестировщиков.
Читать далееКино и видеоигры давно находятся в постоянном культурном обмене — фильмы получают игровые адаптации, а игры вдохновляют киноделов. Порой результат получается катастрофическим, к примеру, киноверсия Super Mario Bros. (1993) или игра Fight Club, которые стали синонимами провала. Но иногда, как в случае с фильмом «Смертельная битва» (1995) или игрой The Chronicles of Riddick: Escape from Butcher Bay, результат оказывается не просто достойным, а культовым, по новому раскрывая первоисточник и добавляя ему глубину.
Однако, если фильмы и игры по их мотивам хоть как-то обсуждаются, то адаптации сериалов в виде игр остаются не замеченными. Между тем, с начала 2000-х появилось немало игр, созданных по всем канонам своих сериальных первоисточников. Создатели не пытались перепридумать мир, используя франшизу как приманку. Эти проекты создавались людьми, которые знали и любили материал, пусть и работали в рамках ограниченного бюджета и устаревающих технологий.
Среди множества неудачных или забытых лицензионных игр можно найти настоящие жемчужины, в которых чувствуется душа, фанатская преданность и желание передать вайб оригинала. Именно о таких, не самых популярных, но удивительно атмосферных адаптациях сериалов мы и поговорим.
Читать далееЯ — таргетолог в Telegram Ads. И я задолбался.
Задолбался смотреть, как талантливые ребята сливают свой потенциал, выбирая не тот путь. Как одни годами терпят начальника-самодура в офисе, который считает, что "красная кнопка продает лучше", а другие — сжигают свои нервы и последние деньги на фрилансе, пытаясь быть "человеком-оркестром".
Я всегда спрашиваю людей, почему они хотят уйти на фриланс. И почти все отвечают одно и то же: "Хочу свободы и денег. Надоело, что в агентстве я получаю 30% от чека, а остальные 70% уходят 'дяде'".
Звучит логично. Чертовски соблазнительно. Но эта логика, эта сладкая арифметика жадности, разбивается о суровую реальность в первый же месяц. И сегодня я расскажу вам две истории, которые это доказывают.
Читать далееЯ заметил, что в сообществе FPGA многие задают вопросы, которые можно решить с помощью DMA. Сделал поиск по Хабру в поисках чистых статей о том, как запустить DMA и не нашел таких. Поэтому решил в этой статье собрать свои знания в кучу и показать, как пользуюсь DMA . Это будут чистые примеры, без лишней информации, также будут сравнительные тесты разного характера.
Читать далееГенеративная выдача уже меняет поиск: нейросети формируют мнение о бренде до клика, а многие компании, даже ТОПовые по техничке и рыночной репутации, не попадают в ответы. Этот материал — ключевые выводы и что делать дальше (по итогам прошедшей GEO-прожарки): что такое качественный бренд по мнению ИИ, который алгоритмы выберут для цитирования. Учимся обучать нейронки.
Читать далееПочему страна с долгом в 36 триллионов остаётся центром мировой финансовой системы? Потому что доллар — это не валюта, а операционная система глобальной экономики. В этой статье разбираю, как исторически сложилась архитектура доллара, почему смешение трёх ролей (средство обмена, накопление, оружие) делает систему структурно нестабильной, и как могла бы выглядеть "Монетарная система 2.0" — с разделением на горячие и холодные деньги, инвариантами устойчивости и лагранжианом, который система стремится оптимизировать. От Бреттон-Вудса до цифровых валют центробанков — попытка построить "физику денег" из первых принципов.
Читать далееКонец месяца. На столе три вещи: оборотно‑сальдовая ведомость по счёту 62 (авансы полученные), оборотно‑сальдовая ведомость по счёту 76 (расчёты с покупателями и заказчиками) и уже остывший кофе. Нужно свести дебет с кредитом, найти ошибки и понять, почему в одной ведомости одна сумма, а в другой — другая.
Классический алгоритм такой: открыть Excel, выгрузить две таблицы, начать искать совпадения по контрагентам, проверять суммы, делать VLOOKUP, потом ещё один VLOOKUP, потом выясняется, что данные не совпадают по датам, и всё приходится переделывать. Несколько часов или даже дней работы — норма для компании с сотнями контрагентов.
Решение — автоматизировать эту сверку в Power Query. Я написал скрипт в Power Query для сверки счетов 62 и 76 без ручного поиска ошибок.
Читать далееРассказ о том, как используя Codex, за пару месяцев плотной работы по вечерам и субботам спроектировать специализированный ЯП (кодовое имя Branchline), написать интерпретатор, компилятор, виртуальную машину, а затем перевести это всё на Kotlin Multiplatform (KMP), чтобы получить версию под JS для онлайн-песочницы.
Читать далее