All streams
Search
Write a publication
Pull to refresh
1940
296

Переводчик-фрилансер

Send message

Стелс-изобретения, возможно, сделают невидимыми людей, самолёты и даже города

Level of difficultyEasy
Reading time7 min
Views2.5K

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

Современные стелс-технологии позволяют не только укрыть самолёты от радаров, но и скрыть высокотемпературные сигнатуры от инфракрасных камер, а также предотвратить фиксацию звуковых волн. Насколько мы близки к открытию технологии невидимости?

Читать далее

Как Мэтт Годболт «продал» мне Rust (рассказав о C++)

Level of difficultyEasy
Reading time7 min
Views15K

Мэтт Годболт, знаменитый разработчик Compiler Explorer — потрясающий человек, вам стоит найти в вебе и изучить весь созданный им контент. Именно этим и занимался, просматривая Correct by Construction: APIs That Are Easy to Use and Hard to Misuse. Я уже больше двадцати лет работаю с C/C++, поэтому эта тема была мне близка.

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

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

Читать далее

Проблема высоких каблуков в играх

Level of difficultyEasy
Reading time12 min
Views38K

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

Читать далее

Как фотографировать МКС

Level of difficultyEasy
Reading time4 min
Views4.8K

Больше всего вопросов вызывают мои фотографии транзита МКС, поэтому я решил написать пост с объяснением, как я их делаю.

Во-первых, я сверяюсь с transit-finder.com.

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

Читать далее

Импортозамещение по-американски: смартфон за 2000$

Level of difficultyEasy
Reading time13 min
Views14K

Недавно я написал статью «Изготовленный в США телефон — это чистая фантазия». Если вкратце, в ней говорится о том, что мечту Трампа о переносе всего высокотехнологического производства в США чрезвычайно сложно реализовать: международные цепочки поставок сложны и запутанны, опыт производства существует в основном только в Китае, Вьетнаме, Камбодже и других странах, компоненты телефона тоже часто изготавливаются в других странах.

Но сегодня уже есть один смартфон, признанный Федеральной торговой комиссией США (FTC) «сделанным в США». Это Liberty Phone, изготавливаемый компанией Purism. Этот телефон стал версией Purism Librem 5. Изготовленный в Китае Librem 5 стоит 800$, а телефон Liberty — 2000$. У него 4 ГБ памяти, а рецензенты утверждают, что его характеристики довольно устарели. Ни один из компонентов Liberty Phone не изготовлен в США, но компания сильно стремится к тому, чтобы он был «сделан в США», насколько это возможно. То, что он вообще существует — само по себе чудо, а методики производства Purism очень любопытны, поэтому я связался с основателем Purism Тоддом Уивером (Todd Weaver), чтобы поговорить с ним о цепочках поставок смартфонов, производстве технологической продукции в США и тарифах.

Читать далее

Сопоставление с образцом на C#: объяснение и примеры

Level of difficultyEasy
Reading time4 min
Views7.4K

За годы своего развития C# существенно эволюционировал; одна из самых мощных фич языка — это сопоставление с образцом (pattern matching).

Работая недавно над небольшим хобби-проектом, я наткнулся на такую прекрасную строку кода C#.

if (person is not null and { Age: > 18 })

{}

Выглядит изящно. Откровенно говоря, она заставила меня призадуматься.

Годами я писал проверки на null и свойства-аксессоры классическим образом:

if (person != null && person.Age > 18)

{}

Функционально? Да. Удобочитаемо? Не особо. Безопасно? Спорно, особенно когда код становится сложнее.

Я решил создать шорт YouTube об этом современном синтаксисе. Это небольшое забавное напоминание о том, что C# позволяет при помощи сопоставления с образцом комбинировать проверки на null и обращение к свойству в одно условие.

Я понятия не имел, что это короткое видео приведёт к гораздо более глубокому исследованию, и покажет мне, насколько полезно и универсально сопоставление с образцом в современном C#.

Эта фича повышает читаемость, уменьшает объём бойлерплейта и обеспечивает более выразительную обработку логики.

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

Читать далее

Эмулируем iPhone в QEMU

Level of difficultyMedium
Reading time12 min
Views5.6K

Мы начали наше исследование по эмуляции iOS с изучения уже существующих опенсорсных решений. Ранее мы уже успешно запускали alephsecurity/xnu-qemu-arm64, но нас беспокоило то, что проект имеет статус read-only.

Затем мы попробовали TrungNguyen1909/qemu-t8030 и обнаружили в нём довольно много интересных фич:

возможность восстановления iOS (при помощи второго QEMU-«компаньона» для подключения по USB)

запуск iOS 14
самую свежую версию QEMU
удобную wiki о запуске эмулятора

Благодаря этому проекту мы быстро получили доступ к оболочке и ssh, изменив System/Library/xpc/launchd.plist, что стало отличной отправной точкой.

Читать далее

Загадка простых чисел — ключ к стратегии Magic: The Gathering

Level of difficultyEasy
Reading time5 min
Views3.9K

Партия в Magic: The Gathering начинается ещё до того, как игроки выложат перед собой свои первые карты. Magic — это коллекционная карточная игра, в которой противники выбирают оптимальную колоду карт на основании их предположений о том, как она будет работать против гипотетических оппонентов со множеством разных стратегий. Сама же партия позволяет доказать или опровергнуть прогнозы игрока. Так как уже выпущено примерно тридцать тысяч уникальных видов карт (хотя маловероятно, что их все приобретёт один игрок), существует множество разных степеней вариаций.

Это изобилие возможностей породило очень много вопросов и идей. Некоторые игроки задавались вопросом, насколько сложна игра на самом деле. Например, достаточно ли в ней сложности для выполнения вычислений, как на компьютере? Разработчик ПО Алекс Черчилль и два других игрока в Magic создали cигровую ситуацию, в которой карты действуют, как универсальный компьютер машина Тьюринга. В 2019 году они опубликовали свою работу на arXiv.org.

Их компьютерная модель позволила подвести итог: Magic — это самый сложный вид игры. Теоретически, партия в Magic может выполнять любые вычисления, на которые способен компьютер.

Читать далее

Самодельный детектор мюонов за 100$

Level of difficultyEasy
Reading time5 min
Views14K

В середине 1960-х у лауреата Нобелевской премии Луиса Альвареса появилась безумная идея. Он предложил использовать мюоны — субатомные частицы с большой проникающей способностью, создаваемые при попадании космических лучей в атмосферу Земли — для поиска скрытых камер в одной из пирамид Гизы.

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

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

Вы тоже можете выполнять похожие эксперименты при помощи оборудования, которое можно изготовить всего примерно за 100$.

Читать далее

Миграция моей игры с Rust

Level of difficultyEasy
Reading time8 min
Views16K

Когда я начал работу над Architect of Ruin в декабре 2023 года, то решил делать её в игровом движке Bevy. Мой выбор был мотивирован собственным интересом к Rust — языку, от работы с которым я получаю много удовольствия. Ещё больше меня привлекла в этом движке модель ECS, с которой мне тоже нравится работать, а также сообщество Bevy, которое мне очень симпатично.

Поэтому стало неожиданностью то, что в январе 2025 года мы выполнили миграцию нашей игры с Rust и Bevy. Я потратил примерно шесть недель, чтобы полностью переписать игру на C#, и последние три месяца мы работаем в Unity.

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

Но мы решились на это, и в посте я объясню, почему.

Читать далее

Golang на PlayStation 2

Level of difficultyMedium
Reading time17 min
Views5.6K

Мне всегда хотелось творить какую-нибудь дичь с консолями. Не знаю почему, но меня всегда привлекала идея реализовывать на устройствах неожиданные возможности. Это относится и к PlayStation 2, выпущенной Sony в 2000 году.

Sony, пожалуйста, не подавайте в суд на меня за этот пост.

Перейдём сразу к делу: я хочу научиться запускать код на консолях (подробнее о том, зачем это нужно, я расскажу в другом посте). Обычно это делается на языках низкого уровня, но сегодня мы можем проще и удобнее работать с языками наподобие Go. Поэтому я подумал: почему бы и нет?

Поискав онлайн, я не нашёл простого решения, поэтому взялся за эту задачу самостоятельно.

Читать далее

Для защиты своего сервера я использую zip-бомбы

Level of difficultyEasy
Reading time3 min
Views88K

Основной объём трафика в вебе возникает из-за ботов. По большей части, эти боты используются для обнаружения нового контента. Это читалки RSS-фидов, поисковые движки, выполняющие краулинг вашего контента, а сегодня и боты ИИ, собирающие контент, чтобы скармливать его LLM. Но есть и зловредные боты. Их создают спамеры, скрейперы контента и хакеры. На моём прежнем месте работы бот обнаружил уязвимость Wordpress и встроил в наш сервер зловредный скрипт, а затем превратил машину в ботнет, используемый для DDOS. Один из моих первых веб-сайтов был полностью выдавлен из поиска Google из-за ботов, генерирующих спам. Мне нужно было найти способ защиты от этих ботов, поэтому я начал пользоваться zip-бомбами.

Читать далее

Почему Windows 7 долго входила в систему с одноцветным фоном рабочего стола?

Level of difficultyEasy
Reading time3 min
Views13K

Лично у меня установлен одноцветный фон. Он был стандартным в Windows 951, и с тех пор я не расстаюсь с этим голубовато-зелёным цветом. Он меня успокаивает.

Поэтому представьте моё удивление, когда мне показали статью техподдержки «Экран Welcome может отображаться в течение 30 секунд в процессе входа, если вы установили одноцветный фон в Windows 7 или в Windows Server 2008 R2». Почему вход выполняется медленнее с одноцветным фоном?

Читать далее

Как Discord индексирует триллионы сообщений

Level of difficultyMedium
Reading time12 min
Views1.7K

В 2017 году мы рассказывали о том, как спроектировали нашу систему поиска сообщений так, чтобы она могла индексировать миллиарды сообщений. Благодаря этому наша поисковая инфраструктура стала высокопроизводительной, экономной, масштабируемой и простой в использовании. Мы решили выбрать Elasticsearch, в котором сообщения Discord шардились по индексам и использовалось логическое пространство имён для сообщений Elasticsearch в двух кластерах Elasticsearch. Сообщения шардились или по серверу Discord (который ниже будем называть гильдией) или по личным сообщениям (DM). Это позволило нам хранить все сообщения гильдии рядом для обеспечения высокой скорости запросов и работать с маленькими, более удобными кластерами. Так как поиском пользуются не все, сообщения индексировались лениво, и мы создали очередь сообщений, позволявшую воркерам получать блоки сообщений для индексирования, чтобы воспользоваться возможностями массового индексирования (bulk-indexing) Elasticsearch.

Но с ростом объёмов Discord наша поисковая инфраструктура начала трещать по швам…‍

Читать далее

Как /etc/hosts поломал редактор сайта

Level of difficultyEasy
Reading time4 min
Views6K

Когда я работал над техническим постом о ресолвинге DNS, то столкнулся с чем-то неожиданным. Каждый раз, когда я вводил пути к файлу hosts (/etc/h*sts — здесь я намеренно его обфусцировал, чтобы не вызвать ту самую ошибку), редактор Substack показывал «Network Error» и отказывался автоматически сохранять черновик.

Читать далее

Интеллект эволюционировал в позвоночных как минимум дважды

Level of difficultyEasy
Reading time8 min
Views18K

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

«Птица с десятиграммовым мозгом способна практически на то же, что и шимпанзе с мозгом массой 400 граммов. Как это возможно?», — рассказывает Онур Гюнтюркюн, изучающий структуры мозга в Рурском университете (Бохум, Германия).

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

Читать далее

Как 20-летний баг GTA San Andreas всплыл в Windows 11 24H2

Level of difficultyEasy
Reading time14 min
Views40K

Я занимаюсь разработкой SilentPatch, исправляющего ошибки старых игр серии GTA и других игр. В issue tracker проекта на GitHub я получил недавно очень специфичный отчёт о баге:

Самолёта Skimmer нет в Windows 11 24H2

Когда я обновил Windows до версии 24H2, самолёт Skimmer полностью пропал из игры. Его невозможно создать с помощью трейнера или найти на обычных точках спауна. Я играю и в версию с модами (которая до обновления Windows была абсолютно нормальной), и в «ванильную» с единственным установленным silentpatch (я пробовал версии silentpatch за 2018 год, 2020 год и самую новую). Самолёт всё равно не спаунится в игре.

Если бы я услышал о подобном впервые, то посчитал бы сомнительным и заподозрил, что дело может быть в чём-то другом, а не конкретно в Windows 11 24H2. Однако на GTAForums я получал комментарии точно о такой же проблеме с ноября прошлого года. Некоторые из пользователей винили в ней SilentPatch, однако другие говорили, что то же самое происходит и в игре без модов:

Очевидно, Skimmer не может заспауниться при игре в Windows 11 24h2; надеюсь, этот баг устранят.

Дополнение: кажется, я подтвердил это — создал виртуальную машину с Windows 11 23h2, и этот чёртов самолёт замечательно спаунится; апдейт той же виртуальной машины до 24h2 ломает Skimmer. Остаётся только догадываться, почему небольшое обновление операционной системы в 2024 году ломает какой-то левый самолёт в игре 2005 года.

После нового обновления Silent patch из игры пропадает Skimmer, а когда я пытаюсь создать его с помощью RZL-Trainer или Cheat Menu пользователя Grinch, игра зависает и приходится закрывать её через Диспетчер задач.

[…] Я был вынужден обновиться до 24H2, и после апдейта у меня возникла та же проблема со Skimmer в GTA SA, что и у остальных. Это значит, что проблему вызывают не моды или что-то другое: она возникла после свежего обновления Windows.

Читать далее

Интеграл, который не могли решить сто лет

Level of difficultyEasy
Reading time11 min
Views56K

Интеграл sec(x) хорошо известен любому студенту, начавшему изучать математический анализ. Но когда-то этот интеграл был серьёзной математической задачей. Впервые она была сформулирована Герардом Меркатором, которому понадобилась для создания в 1569 году его знаменитой карты. Он не смог найти интеграл и использовал вместо него аппроксимацию. Точное решение было найдено случайно спустя 86 лет, в 1645 году, когда матанализа ещё не существовало. И потребовалось ещё два десятка лет для появления в 1668 году формального доказательства — 99 лет спустя после постановки этой задачи Меркатором.

Как справедливо отмечает комикс SMBC, история математики часто развивается не так уж прямолинейно. Студентам в аудиториях рутинно рассказывают о теоремах, формулах и нотациях, которые когда-то были результатами озарений или случайностей. В этом посте мы расскажем об одной из таких формул — интеграле секанса. Я прочитал о нём почти десяток лет назад, когда заинтересовался картографией: наукой и искусством составления карт1. Этот интеграл был критически важен для карты Меркатора, а потому и для многих использующих её онлайн-карт наподобие Apple Maps и Google Maps.

Читать далее

Llama 4 плоха во всём

Level of difficultyEasy
Reading time17 min
Views12K

Выпущенные 5 апреля Llama Scout (17 миллиардов активных параметров, 16 экспертов, 109 миллиардов параметров суммарно) и Llama Maverick (17 миллиардов активных параметров, 128 экспертов, 400 миллиардов параметров суммарно) выглядят крайне разочаровывающе. Они разочаровывают настолько, что пользователи даже предполагают причиной неправильную конфигурацию; они задаются вопросами и спорят о том, насколько сильно манипулировали бенчмарками.

Это был самая негативная реакция на выпуск модели, совершенно противоположная реакции на Gemini 2.5 Pro. Я уже видел столь же глубоко разочаровывающие и запутывающие релизы, но они не были американскими и выпускались лабораториями, бенчмарки и заявления которых, как мы уже поняли, не стоит брать в расчёт при оценке возможностей моделей.

После этого релиза я помещаю Meta* в эту категорию ИИ-лабораторий, заявлениям которых не следует доверять, которые не соответствуют нормам отрасли и которые точно не находятся на переднем рубеже исследований. Пока не доказано обратное, я исключу её из категории, в которой находятся OpenAI, Anthropic, Google, xAI и DeepSeek.

Читать далее

Удивительная оптимизация размера enum в компиляторе Rust

Level of difficultyEasy
Reading time5 min
Views6.4K

Enum — одна из самых популярных фич Rust. Тип enum может иметь одно из значений в заданном множестве вариантов.

/// Foo имеет значение или 32-битного integer, или символа.
enum Foo {
Int(u32),
Char(char),
}

Значениями типа Foo могут быть или integer (например, вариант Foo::Int(3) с полезной нагрузкой 3), или символы (например, вариант Foo::Char('A') с полезной нагрузкой 'A'). struct можно считать AND-комбинациями их полей, а enum — OR-комбинациями их вариантов.

Этот пост посвящён удивительной оптимизации, выполняемой компилятором Rust с представлением в памяти значений enum, чтобы они занимали меньше места в памяти (спойлер: это не нишевая оптимизация). В общем случае, уменьшение размера значений может привести к ускорению программ, потому что значения передаются в регистрах CPU и в одну линию кэша CPU умещается больше значений.

Читать далее

Information

Rating
Does not participate
Location
Россия
Registered
Activity