All streams
Search
Write a publication
Pull to refresh
1943
297.6

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

Send message

Спросим у Google, насколько наша встреча была предначертана судьбой

Reading time17 min
Views24K

Введение


Когда я познакомилась со своим бойфрендом, я иногда ощущала небольшое сожаление от того, что у нас не было умилительной киношной истории встречи, несмотря на то, что мы пять лет жили в одном и том же городе и учились в одном университете. Наша история не уникальна для многих пар в 2020 году: на спаде между двумя волнами COVID мы начали общаться онлайн, в приложении для знакомств Bumble.

Я подумала, что благодаря истории местоположений Google, втихомолку отслеживающей данные GPS, можно было бы найти ответ на вопрос о том, насколько судьбоносно пересекались наши дорожки до встречи. Насколько близко мы были к тому, чтобы воспроизвести романтическую сцену «среди десятков людей они нашли глазами друг друга»?
Читать дальше →

Сжатие изображений при помощи модели Stable Diffusion

Reading time10 min
Views13K
image

Введение


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

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

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

Reading time2 min
Views32K

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

main {
  max-width: 38rem;
  padding: 2rem;
  margin: auto;
}

Давайте их разберём.
Читать дальше →

Блокчейн мало где применим

Reading time7 min
Views19K

Любители криптовалют часто говорят, что «реальная инновация — это не биткойн, а блокчейн». Популярность блокчейнов постоянно растёт. В какой-то момент используемые блокчейны перестали называть просто «технологией блокчейна», они превратились в «web3». Подразумевается, что блокчейны имеют столь широкую сферу применений, что они заменят современный веб в том виде, в котором мы его знаем.

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

Эмуляция видеоигр нейросетью

Reading time12 min
Views20K
Я создал играбельный верхний мир Pokémon. Он очень похож на обычную видеоигру, можете попробовать сыграть в него в браузере здесь:


Хотя он похож на видеоигру, я не писал код игры. На самом деле это нейросеть, подражающая видеоигре.
Читать дальше →

Пишем на Rust игры для Unreal Engine

Reading time7 min
Views15K
image

Ссылки



Введение


Несколько месяцев назад я задался вопросом: что, если написать игру на Rust, но в качестве рендерера использовать Unreal? Поразмыслив, я пришёл к выводу, что раскрытие рендерера Unreal языку Rust при помощи FFI (Foreign function interface) языка C потребовало бы гораздо больше усилий, чем мне хотелось. Но что, если просто надстроить систему на Unreal? Я смогу просто перемещать акторов (gameobject из Unreal) при помощи Rust. Эта задача показалась гораздо более приемлемой, поэтому я приступил к работе.

Спустя неделю я раскрыл несколько функций, позволявших получать ввод, задавать и считывать позицию актора. Благодаря этому я наконец мог перемещать персонажа в Unreal.
Читать дальше →

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

Reading time9 min
Views43K
В нашем мире мы можем сделать всё, что захотим. Всё что угодно.

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

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

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

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


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

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

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

Reading time6 min
Views72K

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

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

Так происходит из-за алгоритма медленного старта TCP. В этой статье я расскажу, что это такое, как оно работает и почему это важно. Но сначала мы вкратце расскажем об основах.
Читать дальше →

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

Reading time19 min
Views21K
Если вы не читали первую часть статьи, то сделайте это.

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


Хватит ждать


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


Я сразу же принялся за разработку собственного обновления прошивки с бэкдором.
Читать дальше →

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

Reading time10 min
Views64K
image

Машина


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

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

Как и со всеми остальными моими гаджетами, я решил немного поэкспериментировать и посмотреть, что можно сделать с этой системой.
Читать дальше →

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

Reading time17 min
Views5.2K
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).
Читать дальше →

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

Reading time8 min
Views71K

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

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


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

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

Reading time16 min
Views20K
Mobile-Title

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

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

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

То же блюдо на другой тарелке.
Читать дальше →

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

Reading time5 min
Views32K

Что такое TIOBE?


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

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

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

Индекс языков программирования, помогающий выбрать язык, который нужно использовать. Похоже, полезная штука!
Читать дальше →

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

Reading time5 min
Views18K

Понятие дополнительной (високосной) секунды (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.
Читать дальше →

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

Reading time6 min
Views25K

Те, кто знаком хотя бы с парой разных окружений баз данных продакшена, скорее всего, знают паттерн «мягкого удаления» (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;
Читать дальше →

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

Reading time8 min
Views9.8K
Свою 33-ю годовщину работы в индустрии разработки ПО я отпраздновал 3 июля. Я запомнил эту дату, потому что мой второй день на работе оказался оплачиваемым выходным!

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


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

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

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

Reading time8 min
Views33K

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


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

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

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


Я, когда мои GIF слишком медленные
Читать дальше →

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

Reading time21 min
Views72K
image

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

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


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

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


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

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

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

Reading time14 min
Views94K

Введение


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

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

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

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

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

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

это ладно!

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

Information

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