Как стать автором
Обновить
1460
Карма
382
Рейтинг

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

4,2 гигабайта, или как нарисовать что угодно

Машинное обучение *Графический дизайн *Искусственный интеллект
Перевод
В нашем мире мы можем сделать всё, что захотим. Всё что угодно.

Боб Росс, The Joy Of Painting, сезон 29, эпизод 1

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

Я представил огромный инопланетный объект, висящий в горящем оранжевом небе над давно покинутым Сиэтлом, здания которого покрыты зарослями.

Тем же вечером я за несколько часов создал вот такое изображение:


Простите за низкое разрешение — к сожалению, у моего GPU всего 12 ГБ памяти.

Поскольку очевидно, что я талантливый художник, имеющий за плечами буквально десятки минут опыта, мне захотелось поделиться тем, как я создал данный шедевр.
Читать дальше →
Всего голосов 134: ↑134 и ↓0 +134
Просмотры 23K
Комментарии 80

Почему ваш веб-сайт должен быть меньше 14 КБ

Разработка веб-сайтов *Сетевые технологии *
Перевод

Чем меньше веб-сайт, тем быстрее он грузится, и это неудивительно.

Удивительно то, что страница на 14 КБ может грузиться гораздо быстрее, чем страница на 15 КБ, даже на 612 мс быстрее, хотя разница между страницами на 15 КБ и 16 КБ минимальна.

Так происходит из-за алгоритма медленного старта TCP. В этой статье я расскажу, что это такое, как оно работает и почему это важно. Но сначала мы вкратце расскажем об основах.
Читать дальше →
Всего голосов 167: ↑164 и ↓3 +161
Просмотры 54K
Комментарии 199

Как я хакнул свой автомобиль: завершение истории

Информационная безопасность *Qt *Реверс-инжиниринг *Автомобильные гаджеты
Перевод
Если вы не читали первую часть статьи, то сделайте это.

Часть 2: создаём бэкдор


Хватит ждать


28 апреля 2022 года выпустили новые версии обновлений прошивок Display Audio для автомобилей Hyundai и Kia. К счастью, в том числе и для моей машины.


Я сразу же принялся за разработку собственного обновления прошивки с бэкдором.
Читать дальше →
Всего голосов 132: ↑132 и ↓0 +132
Просмотры 16K
Комментарии 15

Как я хакнул свой автомобиль

Информационная безопасность *Реверс-инжиниринг *Автомобильные гаджеты
Перевод
image

Машина


Прошлым летом я купил Hyundai Ioniq SEL 2021 года. Это хороший экономящий топливо гибрид с приличным набором функций: беспроводные Android Auto/Apple CarPlay, беспроводная зарядка для телефона, сиденья с подогревом и люк в крыше.

Особенно мне понравилась в этой машине система In-Vehicle Infotainment (IVI). Как я говорил ранее, у машины есть беспроводное Android Auto, что довольно редко для такого ценового диапазона. Приложение имеет красивые плавные анимации меню, поэтому я понял, что ЦП/GPU не такие уж и слабые; или, по крайней мере, ПО ест не слишком много ресурсов.

Как и со всеми остальными моими гаджетами, я решил немного поэкспериментировать и посмотреть, что можно сделать с этой системой.
Читать дальше →
Всего голосов 334: ↑333 и ↓1 +332
Просмотры 42K
Комментарии 69

Как работал параллакс-скроллинг в Duke Nukem II

Разработка игр *История IT Старое железо Игры и игровые консоли
Перевод
image

Параллакс-скроллинг (создание иллюзии глубины в 2D-сцене перемещением фона и переднего плана с разной скоростью) стал сегодня стандартным элементом платформеров и других 2D-игр. Этот эффект, популяризированный аркадной игрой Moon Patrol 1982 года, к началу 90-х уже был довольно распространённым на аркадных автоматах и домашних консолях. Игры для PC — это совсем другая история. Из сайдскроллеров для DOS, выпущенных в 1990-1993 годах, параллакс-скроллинг имелся у немногих (к 1993 году он стал более популярным, но всё равно встречался редко). Были и очень ранние примеры применения параллакс-скроллинга, например, в порте 1983 года вышеупомянутой Moon Patrol для PC, но в нём присутствовал только контур фона, а не графическое изображение. Поэтому благодаря наличию этой особенности Duke Nukem II выделялся на фоне каталога платформеров Apogee, вместе со своим предшественником Duke Nukem 1991 года и игры Cosmo’s Cosmic Adventure 1992 года (в которой большая часть кода и форматов файлов были такими же, как в Duke 2).
Читать дальше →
Всего голосов 19: ↑19 и ↓0 +19
Просмотры 3.7K
Комментарии 11

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

Управление проектами *Управление персоналом *Карьера в IT-индустрии
Перевод

У вас возникал синдром «сожалений специалиста по найму»? Это когда вы жалеете о том, что наняли кого-то сразу после того, как он начал работать. Может быть, вам не нравится внешность новичка, а может вы просто желаете погрузить мир в хаос. Или, хуже того, он как-то упомянул, что любит джаз. Какой бы ни была причина, этот пост поможет вам заставить его уволиться самостоятельно, выбрав для него худший первый проект.

Не ждите, пока он обустроится


Ему всё ещё не выдали монитор? Менеджер проекта так и не добрался до него, чтобы познакомить с продуктом, над которым работает команда? Его бейдж не работает и ему приходится просить коллег провести его в туалет? Это самое подходящее время встретиться с ним и объяснить все подробности нового проекта. Есть какой-то компонент, который он пока не освоил? Сэкономьте своё время и пока не объясняйте его — пусть разберётся самостоятельно после завершения проекта.
Читать дальше →
Всего голосов 111: ↑107 и ↓4 +103
Просмотры 65K
Комментарии 79

Сложности переноса Papers, Please на мобильные

Разработка под iOS *Разработка мобильных приложений *Разработка игр *Разработка под Android *Игры и игровые консоли
Перевод
Mobile-Title

Я разработал Papers, Please в 2013 году специально с расчётом на десктопные компьютеры и управление мышью. В 2022 году десктопных компьютеров уже не существует и все компьютеры — это мобильные телефоны. Настало время обновить этого динозавра.

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

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

То же блюдо на другой тарелке.
Читать дальше →
Всего голосов 65: ↑64 и ↓1 +63
Просмотры 15K
Комментарии 24

Хватит ссылаться на TIOBE

Программирование *
Перевод

Что такое TIOBE?


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

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

Источник: tiobe.com.

Индекс языков программирования, помогающий выбрать язык, который нужно использовать. Похоже, полезная штука!
Читать дальше →
Всего голосов 57: ↑56 и ↓1 +55
Просмотры 17K
Комментарии 26

Компания Meta* призывает отказаться от високосных секунд

Глобальные системы позиционирования *Серверное администрирование *Астрономия
Перевод

Понятие дополнительной (високосной) секунды (leap second) было введено в 1972 году International Earth Rotation and Reference Systems Service (IERS) для периодического обновления Coordinated Universal Time (UTC) из-за неточности наблюдаемого солнечного времени (UT1) и долгосрочного замедления вращения Земли. Эта периодическая поправка в основном помогает учёным и астрономам, поскольку позволяет им наблюдать за небесными телами, для большинства задач используя UTC. Если бы коррекция UTC отсутствовала, то необходимо было бы внести изменения в старое оборудование и ПО, синхронизируемое для астрономических наблюдений с UTC.

На сегодняшний день с момента введения високосной секунды UTC обновляли 27 раз.

Возможно, високосная секунда была приемлемым решением в 1972 году, когда она удовлетворяла и научное сообщество, и отрасль телекоммуникаций, однако сегодня UTC одинаково мешает и цифровым приложениям, и учёным, которые часто используют вместо него TAI или UT1.
Читать дальше →
Всего голосов 43: ↑43 и ↓0 +43
Просмотры 17K
Комментарии 121

Мягкое удаление чаще всего не нужно

Информационная безопасность *Администрирование баз данных *
Перевод

Те, кто знаком хотя бы с парой разных окружений баз данных продакшена, скорее всего, знают паттерн «мягкого удаления» (soft deletion): вместо удаления данных напрямую конструкцией DELETE таблицы получают дополнительную временную метку deleted_at и удаление выполняется конструкцией обновления:

UPDATE foo SET deleted_at = now() WHERE id = $1;

Мягкое удаление необходимо для того, чтобы удаление выполнялось безопаснее и было обратимым. После того, как запись удалили «жёстким» DELETE, теоретически её всё равно можно восстановить, углубившись в слой хранения, но нужно сказать, что вернуть её очень сложно. В теории, при мягком удалении достаточно снова присвоить deleted_at значение NULL, и на этом всё:

-- и волшебным образом всё вернулось на место!!
UPDATE foo SET deleted_at = NULL WHERE id = $1;
Читать дальше →
Всего голосов 34: ↑31 и ↓3 +28
Просмотры 13K
Комментарии 50

Как выглядела индустрия разработки ПО в 1989 году

Управление проектами *Управление продуктом *История IT
Перевод
Свою 33-ю годовщину работы в индустрии разработки ПО я отпраздновал 3 июля. Я запомнил эту дату, потому что мой второй день на работе оказался оплачиваемым выходным!

Я хочу показать вам, насколько далеко ушла наша индустрия и сколь многому мы научились.


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

Первой компанией по разработке ПО, в которой я работал, была Applied Computing Devices из Терре-Хот, штат Индиана. В организации была куча невероятно умных людей, и с ними было интересно работать. Мы создавали ПО для управления телефонными сетями. Нашими клиентами были AT&T, US Sprint (теперь она называется просто Sprint), GTE (теперь Verizon) и множество региональных компаний-операторов Bell (компаний, занимающихся стационарными телефонами), в том числе Ameritech (которая обслуживала Индиану), BellSouth и Pacific Bell. Эти компании в основном предоставляли стационарные (на бизнес-жаргоне называвшиеся «wireline») телефонные услуги, но некоторые из них уже начали создавать подразделения для работы мобильной связью. Управлять всем этим было трудно, и наши программные продукты были относительно сложными. Чтобы понять некоторые элементы нашего ПО, мне требовались все мои знания курса математики колледжа.
Читать дальше →
Всего голосов 40: ↑39 и ↓1 +38
Просмотры 9.1K
Комментарии 8

Самого быстрого GIF не существует

Обработка изображений *Графический дизайн *
Перевод

В чём проблема GIF?


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

Если вы читаете эту статью, чтобы исправить свой GIF и вам нужен чёткий ответ, то вот решение: установите задержку кадра не на 10 мс, а на 20 мс. Если вы хотите чуть больше узнать о GIF и о том, почему возникает этот пограничный случай, а также о том, как улучшить ситуацию, то продолжайте чтение!

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


Я, когда мои GIF слишком медленные
Читать дальше →
Всего голосов 141: ↑141 и ↓0 +141
Просмотры 29K
Комментарии 45

Как происходит генерация мира Minecraft

Разработка игр *Алгоритмы *Игры и игровые консоли
Перевод
image

Задумывались ли вы когда-нибудь, сколько на нашей планете песчинок? По грубым оценкам, более 7 квинтиллионов! Это 7 с 18 нулями. И всё-таки это даже меньше половины количества уникальных миров в Minecraft. Как же Minecraft и другим похожим играм удаётся создавать такие сложные, красивые, однако полностью процедурные миры? В этой статье я расскажу, как игра генерирует свои миры, от самой высокой горы до самой глубокой пещеры.

Часть 1: процедурная генерация


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

Однако первой игрой с процедурно сгенерированным миром является «Elite», первая версия которой вышла для компьютера BBC Micro в 1984 году. Это прапрадед относительно новой «Elite: Dangerous», выпущенной в 2014 году.


Автоматическая генерация новых миров может казаться привлекательным способом ленивого создания бесконечного контента для игры. Однако на самом деле всё наоборот! Чтобы научить машину тому, как выглядит хороший уровень… нужно быть очень хорошим программистом и дизайнером уровней.

Контент должен быть достаточно разнообразным, чтобы выглядеть свежим, но не настолько разнообразным, чтобы казаться атипичным. И необходимо создавать миры, на которые не просто интересно смотреть, но которые обеспечивают справедливую с точки зрения игрока сложность.
Читать дальше →
Всего голосов 67: ↑67 и ↓0 +67
Просмотры 28K
Комментарии 16

Разработчик с мозгом груга

Программирование *Совершенный код *Проектирование и рефакторинг *
Перевод

Введение


это сборник мыслей о разработке программ собранный разработчиком с мозгом груга

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

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

разработчиков с большим мозгом много, некоторым страница не понравится, скривят кислая рожа

Ещё больше-больше ДУМАЮТ, что они разработчики с большим мозгом и им она тоже не понравится

(груг раньше думал груг с большим мозгом, но потом всё понял)

это ладно!

груг надеется, что тебе понравится читать и может ты научишься на много-много ошибка груг совершил за длинную жизнь программиста
Читать дальше →
Всего голосов 261: ↑235 и ↓26 +209
Просмотры 67K
Комментарии 81

Раздувание кода стало астрономическим

Программирование *Клиентская оптимизация *
Перевод

Время от времени я пользуюсь одним сервисом: мне нужно загрузить файлы в какое-то место (название сервиса не имеет роли, потому что, откровенно говоря, все они одинаковы). По сути, я просто указываю папку на своём жёстком диске, после чего её содержимое копируется на удалённый сервер, на котором, вероятно, происходит что-то связанное с базами данных — этим файлам присваиваются имена и выполняются проверки того, кто их скачивает.

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

… но по сути, речь идёт о том, что нужно зарегистрировать несколько файлов, считать их, загрузить, а затем закрыть соединение и записать в файл лога, всё ли прошло успешно, а если нет, то что именно случилось. В этом нет ничего сложного, и даже я писал с нуля подобный код при помощи Wininet API и PHP на сервере, общающемся с моей базой данных MySQL. Наверно, моя система была не такой надёжной, как системы уровня энтерпрайза, однако поддерживала сотни тысяч загруженных файлов, их верификацию, скачивание и логирование. Наверно, это работа для одного кодера на две-три недели?

Специальный инструмент загрузки на сервер, которым я пользуюсь сегодня, суммарно имеет 230 МБ клиентских файлов и задействует 2,7 тысяч файлов для управления этим процессом.
Читать дальше →
Всего голосов 413: ↑399 и ↓14 +385
Просмотры 87K
Комментарии 848

Как рендерится кадр Elden Ring

Работа с 3D-графикой *Разработка игр *Игры и игровые консоли
Перевод
image

Введение


После выхода Elden Ring мне захотелось заглянуть за кулисы этой игры и узнать, что же там находится. Когда я смотрел анализ PC-версии игры Elden Ring в Digital foundry, то заметил, что MSI-Afterburner/Rivatuner сообщает, что эта игра основана на D3D12, и это меня восхитило. Потому что а) последняя изученная мной игра была старой и работала на D3D9 (подробнее об этом в будущем), а игра до неё была проектом 2022 года, работающим на D3D11, и это стало большим разочарованием; поэтому почти полгода я не изучал современные игровые технологии выпущенных игр для PC; б) это значит, что в игре будет много интересных функций D3D12, используемых хитрым способом. Что может быть лучше использования современного графического API для игры на PC в 2022 году?

На самом деле, всё оказалось иначе. Меня немного разочаровали решения разработчиков, но не очень сильно; подробнее об этом я напишу ниже. Однако любому геймеру очевидно, что в подобной игре главное — базовая боёвка, лор и геймплей, а графика уровня AAA — лишь дополнение, обеспечивающее более глубокий лор. Первые демонстрации игры выглядели потрясающе (ну, этим всегда славились E3 и все AAA!), но визуальное качество и уровень детализации готовой игры не так хороши (на мой взгляд). На самом деле, в Bloodborne и Sekiro качество с точки зрения визуальной красоты было выше. Так что да, меня как исследователя графики немного разочаровала игра для PC на D3D12. Зато как геймер я очень доволен!
Читать дальше →
Всего голосов 25: ↑25 и ↓0 +25
Просмотры 9.5K
Комментарии 6

Подробный разбор цепочки эксплойтов Playstation 4 и 5

Информационная безопасность *Java *Реверс-инжиниринг *Компьютерное железо Игры и игровые консоли
Перевод

В статье представлена цепочка из пяти уязвимостей, позволяющая нападающему получить возможности JIT и исполнять произвольные полезные нагрузки. Передаваемая полезная нагрузка вызывает переполнение буфера, приводящее к kernel panic.
Читать дальше →
Всего голосов 23: ↑22 и ↓1 +21
Просмотры 9.7K
Комментарии 6

Анализ снимка кристалла и архитектуры Apple M2

Компьютерное железо Видеокарты Процессоры
Перевод
image

На конференции WWDC компания Apple объявила о выпуске нового SoC M2 из 20 миллиардов транзисторов. К сожалению, в некоторых областях, например, для центрального процессора, это довольно незначительный рост. В основном увеличение производительности связано с GPU и редактированием видео. В целом рост производительности немного разочаровывает, если учесть затраты на новый M2 и то, что после выпуска M1 прошло уже почти два года. История с повышением цены похожа на ситуацию с A16, когда Apple была вынуждена использовать SoC A16 на моделях iPhone Pro и A15 на обычных iPhone из-за стоимости комплектующих.

Сегодня мы обсудим подробности архитектуры M2 и будущие проекты Apple, в том числе M2 Pro/Max и M3, о которых не говорили на WWDC. Также благодаря помощи пользователя Locuza мы проведём анализ площади кристалла по снимкам M2, опубликованным Apple.
Читать дальше →
Всего голосов 20: ↑19 и ↓1 +18
Просмотры 11K
Комментарии 16

Искусственный пинг для турнира по League of Legends

Разработка игр *Сетевые технологии *Игры и игровые консоли Киберспорт
Перевод

В последнее время Riot Esports Tech Team работала над решением серии технических проблем, связанных с инструментом, который мы используем для выравнивания значений пинга между локальными и удалёнными соперниками в турнире Mid-Season Invitational 2022 (MSI).

Первая проблема — это баг, найденный нами в ПО под названием Latency Service, которое должно было подстраивать задержку (пинг) на 35 мс для всех участвующих в турнире игроков. Баг проявлялся как избыточный пинг у игроков из Пусана (Южная Корея): их реальный пинг был выше, чем отображаемые на экране 35 мс. По сути, когда игроки из Китая играли с пингом 35 мс, пинг у игроков из Пусана был выше. К сожалению, проблема была выявлена лишь после начала турнира. Мы не нашли её раньше потому, что причиной проблемы был баг в коде, неверно рассчитывающий задержку, то есть значения в наших логах тоже были ошибочными. Поэтому онлайн-мониторинг и тестирование перед турниром показывали, что всё работает правильно, хотя на самом деле это было не так.
Читать дальше →
Всего голосов 10: ↑10 и ↓0 +10
Просмотры 4.4K
Комментарии 3

Используем фотоаппарат в качестве веб-камеры

Фототехника Видеотехника Видеоконференцсвязь Удалённая работа
Перевод

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

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

К счастью, решение существует: в качестве веб-камеры можно использовать «настоящую» камеру, которая обычно ассоциируется с путешественниками. В частности, самые современные беззеркальные фотоаппараты, появившиеся за последние несколько лет, превосходно с этим справятся, если сделать всё правильно.
Читать дальше →
Всего голосов 33: ↑28 и ↓5 +23
Просмотры 11K
Комментарии 37

Информация

В рейтинге
Не участвует
Откуда
Россия
Зарегистрирован
Активность