ASCII-Nova 🇺🇦
### Небольшая история про Rust-каналы и асинхронные функции Предыстория: когда-то обсуждая* горутины из Golang с позиции их взаимодействия с друг другом, мне показалось неудобным, что всё взаимодействие идёт исключительно** через каналы. Видимо, я тогда был…
Небольшая иллюстрация к посту выше
🔥3
Или пора заканчивать на сегодня кодить, или это и правда имеет смысл
Залип на пару минут на выборе между импортами :)
Есть необходимость, для простоты, сделать импорт A, B, C, D, которые лежат на разной глубине одного модуля
1) Импортировать с каждого подвложенного модуля на отдельной строке
2) Импортировать с одного модуля всё сразу
—
У каждого варианта, есть свои преимущества, 1) даёт более красивый git diff, 2) более компактные импорты
Вопрос чисто в духе табы или пробелы, но всё же :)
Ниже будет опрос) Помогите мне выбрать)
Залип на пару минут на выборе между импортами :)
Есть необходимость, для простоты, сделать импорт A, B, C, D, которые лежат на разной глубине одного модуля
1) Импортировать с каждого подвложенного модуля на отдельной строке
2) Импортировать с одного модуля всё сразу
—
У каждого варианта, есть свои преимущества, 1) даёт более красивый git diff, 2) более компактные импорты
Вопрос чисто в духе табы или пробелы, но всё же :)
Ниже будет опрос) Помогите мне выбрать)
😁1🤔1
Какие импорты лучше
Anonymous Poll
40%
1) Более многословные, но более явные
50%
2) Меньше слов
10%
Я не понимаю ничего в этом
🥰1
### Параллельный запуск JS кода и кустарные бенчмарки
Было очень интересно, сколько же времени займут параллельные запуски JS отдельных окружений в среде с ограниченными ресурсами (моём ноуте).
После полировки кода и выбора подхода с потоками (см. предыдущий пост). В качестве тестового стенда симулируем 4000 игроков, код каждого выполняется 100мс
Получились следующие результаты:
- Ожидаемо создание и подготовка* потоков заняла много времени: ~40 секунд
- Долговато, но для разовой акции терпимо
- Общий тик игрового сервера занял ~930-1000 миллисекунд
- Что в общем-то отличный результат! Честно говоря, рассчитывал на худшие результаты
Но стоит отметить, что для симуляции долго работающего кода использовалась наивная синхронная реализация функции
Результаты для 4000 "игроков" следующие: от 8_000 до 12_000. Для 10 "игроков" от 200_000 до 400_000. Пока что рабочая гипотеза, что V8 движок начинает тротлить вызовы к API времени, чтобы снять нагрузку.
Хоть и разница существенная, но это не должно стать проблемой для реальных игроков в теории. Поэтому очень даже доволен промежуточным результатом :)
—
* Создание асинхронного runtime, и прочий bootstrap код
Было очень интересно, сколько же времени займут параллельные запуски JS отдельных окружений в среде с ограниченными ресурсами (моём ноуте).
После полировки кода и выбора подхода с потоками (см. предыдущий пост). В качестве тестового стенда симулируем 4000 игроков, код каждого выполняется 100мс
Получились следующие результаты:
- Ожидаемо создание и подготовка* потоков заняла много времени: ~40 секунд
- Долговато, но для разовой акции терпимо
- Общий тик игрового сервера занял ~930-1000 миллисекунд
- Что в общем-то отличный результат! Честно говоря, рассчитывал на худшие результаты
Но стоит отметить, что для симуляции долго работающего кода использовалась наивная синхронная реализация функции
sleep() (см 2ой скрин ниже). Ради интереса посмотрел, сколько раз она успевает вызваться для каждого потока. Результаты для 4000 "игроков" следующие: от 8_000 до 12_000. Для 10 "игроков" от 200_000 до 400_000. Пока что рабочая гипотеза, что V8 движок начинает тротлить вызовы к API времени, чтобы снять нагрузку.
Хоть и разница существенная, но это не должно стать проблемой для реальных игроков в теории. Поэтому очень даже доволен промежуточным результатом :)
—
* Создание асинхронного runtime, и прочий bootstrap код
Telegram
ASCII-Nova 🇺🇦
### Небольшая история про Rust-каналы и асинхронные функции
Предыстория: когда-то обсуждая* горутины из Golang с позиции их взаимодействия с друг другом, мне показалось неудобным, что всё взаимодействие идёт исключительно** через каналы. Видимо, я тогда…
Предыстория: когда-то обсуждая* горутины из Golang с позиции их взаимодействия с друг другом, мне показалось неудобным, что всё взаимодействие идёт исключительно** через каналы. Видимо, я тогда…
👏3
Forwarded from ExposedCat's blog (Artem)
This media is not supported in your browser
VIEW IN TELEGRAM
Next one: Adobe Illustrator got beta Generative Recolor AI, allowing to change image colors via text prompt. You are not restricted to palette requests — it understands colors of time seasons, known styles, etc.
After these words, real horror began in the design freelancers' train.
Source
After these words, real horror began in the design freelancers' train.
Source
🔥2👍1🤯1
В тот момент, пока в движке параллельного выполнения JS кода пытаюсь внедрить ограничения по ОЗУ на каждое выполнение (условно, игрок не может потратить больше 512 кб), хочу поделиться музыкальной (и не только) находкой:
Альбом Citizen Sleeper (по одноимённой игре) от Amos Roddy. Потрясающий космический эмбиент, включающих в себя великолепные бит-партии и удивительно разные настроения, при этом сохраняя одну тематику весь альбом. Проваливаюсь в этой звук, словно лечу вниз после прыжка на бездонном батуте.
Ух, однозначно одна из находок года, учитывая количество переслушиваний всего альбома :)
Сама игра выглядит максимально стильной, а учитывая мою вновь возросшую тягу к космосу после прочтения Соляриса, обязательно положена в беклог. Хвалят за прописаность и эстетику.
Ниже несколько треков с альбома, но рекомендую слушать целиком по порядку
Альбом Citizen Sleeper (по одноимённой игре) от Amos Roddy. Потрясающий космический эмбиент, включающих в себя великолепные бит-партии и удивительно разные настроения, при этом сохраняя одну тематику весь альбом. Проваливаюсь в этой звук, словно лечу вниз после прыжка на бездонном батуте.
Ух, однозначно одна из находок года, учитывая количество переслушиваний всего альбома :)
Сама игра выглядит максимально стильной, а учитывая мою вновь возросшую тягу к космосу после прочтения Соляриса, обязательно положена в беклог. Хвалят за прописаность и эстетику.
Ниже несколько треков с альбома, но рекомендую слушать целиком по порядку
Songlink/Odesli
Citizen Sleeper (Original Game Soundtrack) by Amos Roddy
Listen now on your favorite streaming service. Powered by Songlink/Odesli, an on-demand, customizable smart link service to help you share songs, albums, podcasts and more.
😍3
ASCII-Nova 🇺🇦
В тот момент, пока в движке параллельного выполнения JS кода пытаюсь внедрить ограничения по ОЗУ на каждое выполнение (условно, игрок не может потратить больше 512 кб), хочу поделиться музыкальной (и не только) находкой: Альбом Citizen Sleeper (по одноимённой…
Поделитесь своими находками на этой/прошлой неделе!
https://www.servethehome.com/mushkin-redline-96gb-2x-48gb-ddr5-5600-sodimm-non-binary-upgrade-kit/
уже небинарная даже память)
PS. спс Паше за ссылку :)
уже небинарная даже память)
PS. спс Паше за ссылку :)
ServeTheHome
Mushkin Redline 96GB 2x 48GB DDR5-5600 SODIMM Non-Binary Upgrade Kit
We take Mushkin Redline 96GB (2x 48GB) DDR5-5600 kit for a spin and show why this is 96GB kit is the biggest advancement in eight years
😁2
Излил немного душу после долгих попыток сделать лимиты на код игроков :)
https://telegra.ph/limity-na-kod-igrokov-06-28
https://telegra.ph/limity-na-kod-igrokov-06-28
Telegraph
Наконец-то доделал лимиты на код игроков
Ранее я очень радовался, когда сделал параллельный запуск кода игроков (см. пост), т.к. получил феноменальные цифры: симулированные 4000 игроков с кодом длительностью 100 мс каждый выполнялся одновременно всего за ~1 секунду. Вау 🤩 При этом, я догадывался…
❤2👍2🔥1
Хотел сегодня спросить у вас, какой самый большой был uptime системы, но во время тестов угробил систему (пришлось сделать ребут)
Нашёл последний скриншот uptime. Мне кажется, самый большой у меня был где-то месяц, на первой работе, но на Debian
А какой у вас?
PS. Кидайте скриншоты
Нашёл последний скриншот uptime. Мне кажется, самый большой у меня был где-то месяц, на первой работе, но на Debian
А какой у вас?
PS. Кидайте скриншоты
uptime в комменты :)Порассуждал немного на тему вывода ошибок в целом, а также чем отличается вывод ошибок в обычных приложениях и встраиваемых — получилась неплохая статья
https://telegra.ph/Obrabotka-oshibok-vstraivaemogo-JS-06-29
https://telegra.ph/Obrabotka-oshibok-vstraivaemogo-JS-06-29
Telegraph
Обработка ошибок встраиваемого JS
Немного о stack trace В общем случае, когда видим красивые stack trace'ы в скриптовых/динамических языках программирования, мы воспринимаем их как данность. Необработанная ошибка в Nodejs? Интерпретатор заботливо выведет stack trace, красиво раскрученный…
👍2❤1🔥1