Pull to refresh
1909
205.6

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

Send message

Математическое решение царской игры Ура

Level of difficultyEasy
Reading time12 min
Views2.5K

Мы потратили семь лет на эксперименты с ИИ для царской игры Ура, и, наконец, пришли к сильному решению по правилам Финкеля, Блица и Мастерса! В конечном итоге, для этого понадобилась пара красивых уравнений, которые я объясню в статье.

На самом деле, мы не «просто» нашли сильное решение игры. Для сильного решения необходимо находить наилучший ход из каждой позиции. Мы сделали это, плюс вычислили точную вероятность победы каждого игрока при оптимальной игре из каждой позиции. Для этого мы воспользовались нашей опенсорсной библиотекой RoyalUr-Java.

Ниже мы опишем, как это работает. Также мы написали технический отчёт.

Читать далее

Что же такое HDR?

Level of difficultyEasy
Reading time9 min
Views36K

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

В прошлом году мы объявили до добавлении в наше приложение для работы с изображениями фотографий с HDR, или «High Dynamic Range». Большинство пользователей это порадовало, кого-то сбило с толку, а некоторые проявили откровенное беспокойство. Это связано с тем, что HDR может означать два разных, хотя и близких, понятия.

Читать далее

Как упростить себе освоение Rust

Level of difficultyEasy
Reading time13 min
Views12K

Я наблюдаю за тем, как люди снова и снова совершают одни и те же ошибки при изучении Rust. Ниже представлены мои мысли (в порядке важности) о том, как можно упростить себе процесс обучения. Моя цель — помочь вам сэкономить время и избежать разочарования.

Расслабьтесь

Перестаньте сопротивляться. Это самый важный урок.

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

Темп обучения не особо зависит от вашего ума и предыдущего опыта программирования. Главнее всего ваше отношение к языку.

Я видел разработчиков-джунов, прекрасно справлявшихся с Rust без предварительного обучения, и сениоров, которые боролись с ним неделями/месяцами или полностью капитулировали. Забудьте о своей гордыне.

Читать далее

ИИ заменит образование или переведёт его на новый уровень?

Level of difficultyEasy
Reading time9 min
Views3.3K

С момента выпуска ChatGPT в конце 2022 года одними из самых активных его пользователей стали ученики и студенты. Когда стремительный рост пользовательской базы в конце весны 2023 года замедлился, это ненадолго показалось признаком близкого сдувания пузыря ИИ, но в сентябре рост продолжился; причиной падения оказались банальные летние каникулы. Хоть другие виды организаций испытывали трудности с применением поразительно мощного и на удивление некомпетентного инструмента, для учащихся его полезность в написании изложения по «Гамлету» на полторы тысячи знаков стала очевидной сразу. Этим вызваны и нынешние рекламные кампании OpenAI и других разработчиков ИИ с предложениями скидок студентам.

Каждый год примерно 15 миллионов студентов в США пишут статьи и экзамены, состоящие из миллиардов слов. Хотя результатом каждого курса становятся студенческие работы — статьи, экзамены, исследовательские проекты и так далее — продуктом курса остаётся нарабатываемый студентами опыт. «Результаты обучения возникают вследствие действий и мыслей студента и только в результате того, что делает и думает студент», — писал великий теоретик образования Герберт Саймон. Само задание — это макгаффин, скоропортящийся товар с экономической ценностью, равной примерно нулю долларов. Оно ценно только как способ принудить студента трудиться и думать.

Полезность письменных заданий зависит от двух допущений: во-первых, чтобы написать о чём-то, студенту нужно понять тему и упорядочить свои мысли. Во-вторых, оценивание письменных работ студентов, по сути, означает оценку их труда и мыслительных усилий. К концу 2022 года логика этих допущений начала давать сбой. Труда по написанию и получаемого при этом опыта можно избежать, просто введя промпт; это значит, что теперь оценивание письменных работ может быть не связано с оценкой того, что научился осознавать или выражать студент.

Читать далее

Я нашёл огромную дыру в дейтинг-приложении, а разработчики попытались её скрыть

Level of difficultyEasy
Reading time5 min
Views11K

Стартапам нужно ответственнее относиться к безопасности

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

Читать далее

Не нужно оверинжинирить сокращатель ссылок

Level of difficultyMedium
Reading time4 min
Views5.5K

На Reddit я наткнулся на статью про обработку создания 100 тысяч коротких URL в секунду1. [Прим. пер.: автор статьи по ссылке создал три варианта системы; третий, наилучший, по его мнению, вариант при помощи кластера-координатора делит нагрузку на несколько ECS-воркеров, использует DynamoDB TransactWrite для пакетных условных вставок, а для устойчивости применяет кэш Redis.]

Какой же это запутанный оверинжиниренный бардак!

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

Читать далее

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

Level of difficultyEasy
Reading time7 min
Views2.3K

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

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

Читать далее

Как Мэтт Годболт «продал» мне 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
Views37K

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

Читать далее

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

Level of difficultyEasy
Reading time4 min
Views4.7K

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

Во-первых, я сверяюсь с 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
Views6.8K

За годы своего развития 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
Views4.5K

Мы начали наше исследование по эмуляции 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.5K

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

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

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

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

Читать далее

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

Level of difficultyEasy
Reading time3 min
Views86K

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

Читать далее

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

Level of difficultyEasy
Reading time3 min
Views12K

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

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

Читать далее

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

Level of difficultyMedium
Reading time12 min
Views1.6K

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

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

Читать далее

Information

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