Будни разработчика
14.7K subscribers
1.17K photos
333 videos
7 files
2.01K links
Блог Lead JS-разработчика из Хельсинки
Автор: @bekharsky

По рекламе: https://telega.in/channels/htmlshit/card?r=GLOiHluU или https://t.me/it_adv

Чат: https://t.me/htmlshitchat

№5001017849, https://www.gosuslugi.ru/snet/679b74f8dad2d930d2eaa978
Download Telegram
#такое дня

Вы, наверное, уже слышали, что Adobe выпустила Photoshop for Web: https://photoshop.adobe.com/

Работает только в Chrome, потому что — кто бы мог подумать — Google активно участвовал в создании и подгонке кода. По этому поводу даже выпустили статью о процессе создания и об используемых технологиях: https://web.dev/ps-on-the-web/

Впрочем, со времён порта Quake 3 мало что поменялось, разве что, используя всё тот же Emscripten, код на C++ стали собирать в WebAssembly, а не чистый JavaScript 🙂

Кстати, по этому поводу они в процессе добавили отладку WebAssembly в девтулзы.

Собственно, вот и статья: https://web.dev/ps-on-the-web/

А теперь здоровая такая ложка дёгтя.

Не секрет, что я нахожусь в Финляндии. Но я не могу потестировать! Мне пишет, что продукт заблокирован в моей стране.

И всё бы ничего, GPDR и прочее, вот только нюанс: не открывается лишь с личного профиля. С рабочего и дублёра — открывается.

И единственное отличие, что я нашёл — это второй язык в профиле браузера. Русский.

И есть у меня дикое предположение, что Adobe использует сложный фингерпринтинг и блокирует по языку, предполагая, что я в РФ. Даже если это не связано конкретно с языком — причина очевидна.

Не очень приятно. Поэтому, используйте https://www.photopea.com/ для ваших мелких задач. Меня не подводила, дизайны сайтов и превьюшек открываются отлично 🙂

#webassembly #chrome #photoshop
🤬18👍13
#доклад дня

Вот так живёшь и не знаешь, что коллега — Василий Рогин — выступил на HolyJS с докладом о том, как перенёс фанатские моду Fallout 2 — Nevada и Sonora — в браузер.

Не через стриминг или эмулятор, а с нативным кодом C/C++, собранным через Emscripten в WebAssembly.

Классика жизни.

Проект основан на fallout2-ce — декомпиляции оригинального движка. И вроде бы SDL2 + wasm = счастье, но на практике всё куда интереснее:

🧩 Основные сложности:

1. Цикл игры и цикл браузера не совпадают: приходилось выносить основной луп в requestAnimationFrame, чтобы всё работало без лагов.

2. Asyncify стал ключевым инструментом: позволил «притвориться», что WebAssembly поддерживает sleep() и обычную блокирующую логику, хотя на деле всё идёт через промисы.

3. Проблемы со звуком: в вебе нет привычных потоков, а WebAudio требует костылей вроде SDL_Sleep(1), чтобы не обгонять буфер.

4. Работа с файлами: пришлось изобретать файловую систему с подгрузкой ресурсов по запросу, Asyncfetchfs, IDBFS для сохранений, и обходить баги вроде __syscall_openat, создающего побочные эффекты.

5. Было ещё весело с WebWorker'ами, OffscreenCanvas и SharedArrayBuffer — всё поддерживается, но не вместе и не так, как хотелось бы.

Ссылка на видео доклада: https://www.youtube.com/watch?v=wYJN0pLDPRw
И на PDF: https://squidex.jugru.team/api/assets/srm/878900fe-502b-4b48-a6a9-478d526048dd/holyjs-fallout2-3-.pdf

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

А, ну и конечно же, давайте поиграем: https://fallout-nevada.ru/

#game #webassembly
👍158