Чуть раньше мы говорили о разных видах смерти в играх, теперь можем поговорить о последней вещи в нашей цепочке обсуждений.
А почему вообще нам нравится смерть и мы живём с ней.
Но чтобы понять, почему она так ощущается, нужно посмотреть на того, кто умирает чаще всего — на аватара.
Аватар — это не просто управляемый объект. Это наш двойник. Он занимает наше место в игровом мире. Он действует там, где мы не можем действовать физически. И он умирает там, где мы не можем умереть по-настоящему. В этом смысле аватар — ты, который умирает вместо тебя.
Когда мы живы, мы принимаем роль агента, двигаемся, стреляем, прыгаем. Но в момент смерти происходит резкий сдвиг, камеры отрывается и мы теряем контроль.
Роль меняется: из агента мы становимся наблюдателем.
Этот переход — очень быстрый, но принципиальный. Он демонстрирует, что контроль в игре всегда условен. Он даётся и отбирается в мгновение пули. Это то, что называют flux of agency — колебание между «я делаю» и «со мной это делают». И смерть — крайняя точка этого колебания.
Важно, что для этого не нужен мрачный хоррор или насилие. Даже в «милых» играх с тканевыми куклами или мультяшными героями персонаж может распасться, исчезнуть, быть отброшенным в начало уровня. Сеттинг может быть светлым, но структура остаётся той же: двойник умирает, чтобы процесс продолжился, а мы пережили колебание между состояниями.
И именно здесь две смерти сходятся.
Смерть аватара — допустима. Она встроена в цикл. Она даже необходима, чтобы игра работала как система обучения и повторения. Двойник умирает, чтобы ты мог вернуться.
А дополнительные материалы по этому циклу постов, как всегда доступны на бусти: https://boosty.to/redguy/posts/3896ca37-ae86-4fdd-9662-1f2f885161ae
А почему вообще нам нравится смерть и мы живём с ней.
Но чтобы понять, почему она так ощущается, нужно посмотреть на того, кто умирает чаще всего — на аватара.
Аватар — это не просто управляемый объект. Это наш двойник. Он занимает наше место в игровом мире. Он действует там, где мы не можем действовать физически. И он умирает там, где мы не можем умереть по-настоящему. В этом смысле аватар — ты, который умирает вместо тебя.
Когда мы живы, мы принимаем роль агента, двигаемся, стреляем, прыгаем. Но в момент смерти происходит резкий сдвиг, камеры отрывается и мы теряем контроль.
Роль меняется: из агента мы становимся наблюдателем.
Этот переход — очень быстрый, но принципиальный. Он демонстрирует, что контроль в игре всегда условен. Он даётся и отбирается в мгновение пули. Это то, что называют flux of agency — колебание между «я делаю» и «со мной это делают». И смерть — крайняя точка этого колебания.
Важно, что для этого не нужен мрачный хоррор или насилие. Даже в «милых» играх с тканевыми куклами или мультяшными героями персонаж может распасться, исчезнуть, быть отброшенным в начало уровня. Сеттинг может быть светлым, но структура остаётся той же: двойник умирает, чтобы процесс продолжился, а мы пережили колебание между состояниями.
И именно здесь две смерти сходятся.
Смерть аватара — допустима. Она встроена в цикл. Она даже необходима, чтобы игра работала как система обучения и повторения. Двойник умирает, чтобы ты мог вернуться.
А дополнительные материалы по этому циклу постов, как всегда доступны на бусти: https://boosty.to/redguy/posts/3896ca37-ae86-4fdd-9662-1f2f885161ae
boosty.to
Дополнительные материалы: Смерть в игровых мирах - Илья
Смерть — тауированная тема в нашей жизни, но при этом, уже полностью привычная в игровых мирах, а задумывались ли вы, как так случилось?
❤25👍4❤🔥3🔥2
This media is not supported in your browser
VIEW IN TELEGRAM
Как говорится, я, конечно, не тестер, но могу немного рассказать про них.
Очень много людей, когда спрашивают о вакансиях в ST, уверены, что две самые лёгкие должности — это сценарист и тестировщик (далее буду использовать более привычное мне слово — QA). Но это вообще не так. За сценаристов говорить не буду — думаю, они сами расскажут. А давайте поговорим про QA.
Чем занимаются QA и что от них требуется? Учтите, что сейчас мы говорим про нашу специфику — в зависимости от отрасли, требования и задачи могут сильно различаться. Подтверждаю как счастливый работник финтеха.
Первое — нужна достаточно мощная рабочая станция, чтобы запускать полную сборку. А поверьте, она ест ресурсы очень даже бодро :3
Логично. А что дальше?
Хорошее знание русского языка.
Этот пункт многих сбивает с толку, но важно понимать: QA — это Quality Assurance, человек, который отвечает за качество продукта. А я думаю, вам самим будет неприятно, если тут и там будут вылезать опечатки и ошибки. Мы, например, использовали длинное тире по правилам русского языка ещё до того, как это стало мейнстримом с ИИ.
Внимание.
И нет, это я сейчас не вас отвлекаю — это реально ключевой навык. Умение следить за всем происходящим и ловить даже самые мелкие косяки. Вот вы, например, сможете найти косяк, который запечатлён в приложенном видео?
Умение управлять своим временем.
И это тоже критично. Если вы учитесь и вас вечером отправляют спать — вам будет сложно работать в потоке дедлайнов. Кстати, это одна из причин, почему у нас ограничение 18+ на приём.
Ну и бонусом — знание нашей любимой Java. Это не обязательно, но сильно помогает: когда QA понимает, как работает сцена изнутри, он может находить гораздо более сложные и интересные баги.
Вот как-то так. Догадывались о всех этих моментах или что-то стало для вас открытием?
(почему-то этот пост выглядит как вакансия на HH)
Очень много людей, когда спрашивают о вакансиях в ST, уверены, что две самые лёгкие должности — это сценарист и тестировщик (далее буду использовать более привычное мне слово — QA). Но это вообще не так. За сценаристов говорить не буду — думаю, они сами расскажут. А давайте поговорим про QA.
Чем занимаются QA и что от них требуется? Учтите, что сейчас мы говорим про нашу специфику — в зависимости от отрасли, требования и задачи могут сильно различаться. Подтверждаю как счастливый работник финтеха.
Первое — нужна достаточно мощная рабочая станция, чтобы запускать полную сборку. А поверьте, она ест ресурсы очень даже бодро :3
Логично. А что дальше?
Хорошее знание русского языка.
Этот пункт многих сбивает с толку, но важно понимать: QA — это Quality Assurance, человек, который отвечает за качество продукта. А я думаю, вам самим будет неприятно, если тут и там будут вылезать опечатки и ошибки. Мы, например, использовали длинное тире по правилам русского языка ещё до того, как это стало мейнстримом с ИИ.
Внимание.
И нет, это я сейчас не вас отвлекаю — это реально ключевой навык. Умение следить за всем происходящим и ловить даже самые мелкие косяки. Вот вы, например, сможете найти косяк, который запечатлён в приложенном видео?
Умение управлять своим временем.
И это тоже критично. Если вы учитесь и вас вечером отправляют спать — вам будет сложно работать в потоке дедлайнов. Кстати, это одна из причин, почему у нас ограничение 18+ на приём.
Ну и бонусом — знание нашей любимой Java. Это не обязательно, но сильно помогает: когда QA понимает, как работает сцена изнутри, он может находить гораздо более сложные и интересные баги.
Вот как-то так. Догадывались о всех этих моментах или что-то стало для вас открытием?
🔥59❤🔥8❤7💊2
Бессонный кодер
Никогда такого не было — и вот опять: в npm снова обнаружена supply-chain атака. В этот раз атака достаточно крупная и могла задеть большое количество рабочих станций и серверов. Вредонос работает как червь, заражая пакеты пострадавшего разработчика. Но самое…
Никогда такого не было — и вот опять: в npm обнаружена supply-chain атака. В этот раз её удалось достаточно быстро обнаружить и устранить (4 часа).
————————————————————————
Сначала важное:
————————————————————————
Что и как происходило (в UTC):
2026-03-30 05:57
Опубликован пакет
2026-03-30 23:59
Опубликован пакет
2026-03-31 00:21
Пакет
2026-03-31 01:00
Опубликован пакет
2026-03-31 ~03:15
Пакеты
2026-03-31 03:25
npm начинает процесс блокировки для пакета
2026-03-31 04:26
Опубликован безопасная "заглушка"
————————————————————————
А что вообще это такое и что случилось?
При разработке на Node.js, для управления библиотеками используется пакетный менеджер npm, он позволяет в одну команду установить нужную зависимость и все нужные для неё зависимости. Именно на этот алгоритм и пришла атака.
Некоторым пакетам после скачивания нужно выполнять дополнительные действия, для этого существует механизм
Теперь перейдём к
Вот как-то так.
Подробнее: https://www.stepsecurity.io/blog/axios-compromised-on-npm-malicious-versions-drop-remote-access-trojan
————————————————————————
Сначала важное:
Заражённые пакеты: `axios@1.14.1`, `axios@0.30.4`, `plain-crypto-js@4.2.1`
Артефакты малвари:
macOS: /Library/Caches/com.apple.act.mond
Windows (постоянный): %PROGRAMDATA%\wt.exe
Windows (временный, само-удаляется): %TEMP%\6202033.vbs
Windows (временный, само-удаляется): %TEMP%\6202033.ps1
Linux: /tmp/ld.py
————————————————————————
Что и как происходило (в UTC):
2026-03-30 05:57
Опубликован пакет
plain-crypto-js@4.2.0 пользователем nrwise@proton.me. Это "чистый" (безопасный) пакет, содержащий копию оригинального кода crypto-js. Он был создан для того, чтобы создать видимость нормальной истории публикаций пакета, чтобы он не выглядел подозрительно при последующем анализе.2026-03-30 23:59
Опубликован пакет
plain-crypto-js@4.2.1 пользователем nrwise@proton.me. В этот пакет добавлен вредоносный код. В него добавлен хук postinstall, который запускает скрипт setup.js, содержащий замаскированный (обфусцированный) вредоносный компонент.2026-03-31 00:21
Пакет
axios@1.14.1 опубликован скомпрометированной учетной записью jasonsaayman (адрес электронной почты: ifstap@proton.me). Этот пакет добавляет plain-crypto-js@4.2.1 в качестве зависимости во время выполнения, нацеливаясь на пользователей современной версии axios (1.x).2026-03-31 01:00
Опубликован пакет
axios@0.30.4 с той же скомпрометированной учетной записи. В этот пакет также внедрен plain-crypto-js@4.2.1 в качестве зависимости, но он предназначен для более старой версии axios (0.x). Это сделано для охвата большего числа пользователей.2026-03-31 ~03:15
Пакеты
axios@1.14.1 и axios@0.30.4 удалены из реестра npm. Версия 1.14.1 была доступна примерно 2 часа 53 минуты, а версия 0.30.4 - примерно 2 часа 15 минут. Точное время удаления определено по информации из реестра npm, так как npm не предоставляет отдельный API для получения времени удаления конкретной версии.2026-03-31 03:25
npm начинает процесс блокировки для пакета
plain-crypto-js, чтобы заменить вредоносный пакет на безопасный "заглушку" (stub).2026-03-31 04:26
Опубликован безопасная "заглушка"
plain-crypto-js@0.0.1-security.0 от имени учетной записи npm@npmjs.com. Это окончательно заменяет вредоносный пакет в реестре. Пакет plain-crypto-js@4.2.1 был активен примерно 4 часа 27 минут. Теперь при попытке установить любую версию plain-crypto-js отображается предупреждение о безопасности.————————————————————————
А что вообще это такое и что случилось?
При разработке на Node.js, для управления библиотеками используется пакетный менеджер npm, он позволяет в одну команду установить нужную зависимость и все нужные для неё зависимости. Именно на этот алгоритм и пришла атака.
Некоторым пакетам после скачивания нужно выполнять дополнительные действия, для этого существует механизм
postinstall, обычно его используют для вызова компиляции или патчинга текущего/соседних модулей.Теперь перейдём к
axios, это одна из самых популярных библиотек для работы с HTTP(S) протоколом. Что у нас получилось? Разработчик обновляет/устанавливает axios до заражённой версии, он автоматически как зависимость скачивает plain-crypto-js, а тот в своём postinstall запускает скрипт, который устанавливает RCE вирус на рабочую станцию, при этом всё это происходит полностью незаметно для разработчика.Вот как-то так.
Подробнее: https://www.stepsecurity.io/blog/axios-compromised-on-npm-malicious-versions-drop-remote-access-trojan
www.stepsecurity.io
axios Compromised on npm - Malicious Versions Drop Remote Access Trojan - StepSecurity
Hijacked maintainer account used to publish poisoned axios releases including 1.14.1 and 0.30.4. The attacker injected a hidden dependency that drops a cross platform RAT. We are actively investigating and will update this post with a full technical analysis.
❤16🔥2💘2😨1
Раз в год и я делаю постик про сеть и позицию с ней в стране. Давайте поговорим о новостях насущных.
Взимание платы за VPN и запрет аккредитованным IT компаниям работать через VPN.
Для начала давайте определимся, как вообще понять что человек сидит с VPN, обычно на это указывают совокупности признаков, такие как:
— различие регионального и пользовательского языка (человек с Испанским VPN использует русский интерфейс)
— различие часового пояса (сайты и приложения имеют доступ к вашему часовому поясу, и видят различие если вы сидите UTC+3, а ваша страна в UTC-1)
— протечки WebRTC (протокол p2p связи, отдельная история)
Но какие признаки обычно используются государством для определения использования VPN:
— зарубежный IP
— всё, вы правда думали что будет ещё что-то?
А что тогда это всё обозначает?
1) ВСЕ сетевые запросы на сервера вне РФ облагаются дополнительной тарификацией. А это не только VPN, ваш любимый ютубчик, это сотни и десятки тысяч доменов:
— Скачиваете обновление Windows? Зарубежный трафик, платите за VPN
— Пользуетесь Android или IOS? Платите за зарубежный трафик, ведь сервера уведомлений не стоят в РФ
— Пользуетесь Boosty (или любым другим сервисом использующим иностранные CDN)? Вы уже знаете за что платить
2) И если первое от части понятно, так как законы придумывают те, кто не знает как оно всё работает, то второе уже напрягает сильнее, ведь государство прямым текстом запрещает аккредитованным IT компаниям как либо работать с зарубежными клиентами. А это обозначит что ВСЕ кто аккредитован должны перестать обслуживать всех людей вне РФ. Пока-пока иностранный трафик Яндекса, пока-пока пользователи ВК из Республики Беларусь или Республики Казахстан. И такое касается не только тех кто работает при белых списках, А ВСЕХ КТО АКРЕДИТОВАН, а это тысячи IT компаний.
Когда мы думали что мы идём по сценарию Китая, мы ошибались, мы идём по сценарию КНДР, ведь вы можете зайти на китайский сайт и пользоваться китайским мессенджером, а вот пользоваться Российскими сервисами вне РФ уже запрещают...
Взимание платы за VPN и запрет аккредитованным IT компаниям работать через VPN.
Для начала давайте определимся, как вообще понять что человек сидит с VPN, обычно на это указывают совокупности признаков, такие как:
— различие регионального и пользовательского языка (человек с Испанским VPN использует русский интерфейс)
— различие часового пояса (сайты и приложения имеют доступ к вашему часовому поясу, и видят различие если вы сидите UTC+3, а ваша страна в UTC-1)
— протечки WebRTC (протокол p2p связи, отдельная история)
Но какие признаки обычно используются государством для определения использования VPN:
— зарубежный IP
— всё, вы правда думали что будет ещё что-то?
А что тогда это всё обозначает?
1) ВСЕ сетевые запросы на сервера вне РФ облагаются дополнительной тарификацией. А это не только VPN, ваш любимый ютубчик, это сотни и десятки тысяч доменов:
— Скачиваете обновление Windows? Зарубежный трафик, платите за VPN
— Пользуетесь Android или IOS? Платите за зарубежный трафик, ведь сервера уведомлений не стоят в РФ
— Пользуетесь Boosty (или любым другим сервисом использующим иностранные CDN)? Вы уже знаете за что платить
2) И если первое от части понятно, так как законы придумывают те, кто не знает как оно всё работает, то второе уже напрягает сильнее, ведь государство прямым текстом запрещает аккредитованным IT компаниям как либо работать с зарубежными клиентами. А это обозначит что ВСЕ кто аккредитован должны перестать обслуживать всех людей вне РФ. Пока-пока иностранный трафик Яндекса, пока-пока пользователи ВК из Республики Беларусь или Республики Казахстан. И такое касается не только тех кто работает при белых списках, А ВСЕХ КТО АКРЕДИТОВАН, а это тысячи IT компаний.
Когда мы думали что мы идём по сценарию Китая, мы ошибались, мы идём по сценарию КНДР, ведь вы можете зайти на китайский сайт и пользоваться китайским мессенджером, а вот пользоваться Российскими сервисами вне РФ уже запрещают...
❤70😢21💔8🔥2💋1💊1
Переносил тут 1.7 ТБ данных, пришлось хорошо так подождать и понаблюдать за процессом. А знаете, что это значит?
Правильно — наша любимая рубрика: что посмотреть во время миграции🔥
В этот раз я выбрал сериальчик подлиннее. Сильно длиннее. Встречайте — Accused. Ну или, если по-нашему, Обвиняемые.
В чём суть? Помните «Чёрное зеркало»? Это оно… но в суде. Каждый эпизод — отдельное дело. Нам показывают сразу два таймлайна:
— прошлое, где раскрывается, как человек пришёл к преступлению и что было дальше
— и параллельно суд: свидетели, записи с камер, показания, признания и ложь
Причём в последнем эпизоде это уже совсем «Чёрное зеркало», потому что добавляется ещё и фантастика.
А в чём главная идея? Право ли судие (иронично писать про правоту суда, когда я был вынужден смотреть сериал через VPN, потому что МОЙ ДОМАШНИЙ СЕРВЕР В МОСКВЕ… НЕДОСТУПЕН В МОСКВЕ)
Заслуживает ли преступник наказания?
Соизмеримо ли оно деянию?
И вообще — преступник ли он?
Сериал регулярно подкидывает очень тяжёлые моральные дилеммы. И, честно, далеко не всегда я согласен с тем, как они решаются.
Дам небольшой спойлер к одному эпизоду, чтобы вы поняли масштаб.
Есть девочка лет 10. У неё отец — бывший наркоман в завязке, и богатые бабушка с дедушкой. Из-за стресса отец срывается и снова начинает употреблять. Во время одного из трипов он едва не убивает дочь.
После этого бабушка и дедушка решают забрать ребёнка силой, заставляя его подписать отказ от родительских прав. Он не выдерживает — передоз.
И вот момент: дедушка… ломает иглу с препаратом от передозировки. Отец умирает.
С одной стороны — он защищает внучку.
С другой — по закону он убийца.
И суд отправляет его отбывать наказание, которое он, скорее всего, просто не переживёт.
Вот примерно на таких кейсах и строится сериал.
Очень советую посмотреть. И буду рад обсудить с вами — а был ли суд прав в тех или иных эпизодах?
Правильно — наша любимая рубрика: что посмотреть во время миграции
В этот раз я выбрал сериальчик подлиннее. Сильно длиннее. Встречайте — Accused. Ну или, если по-нашему, Обвиняемые.
В чём суть? Помните «Чёрное зеркало»? Это оно… но в суде. Каждый эпизод — отдельное дело. Нам показывают сразу два таймлайна:
— прошлое, где раскрывается, как человек пришёл к преступлению и что было дальше
— и параллельно суд: свидетели, записи с камер, показания, признания и ложь
Причём в последнем эпизоде это уже совсем «Чёрное зеркало», потому что добавляется ещё и фантастика.
А в чём главная идея? Право ли судие (иронично писать про правоту суда, когда я был вынужден смотреть сериал через VPN, потому что МОЙ ДОМАШНИЙ СЕРВЕР В МОСКВЕ… НЕДОСТУПЕН В МОСКВЕ)
Заслуживает ли преступник наказания?
Соизмеримо ли оно деянию?
И вообще — преступник ли он?
Сериал регулярно подкидывает очень тяжёлые моральные дилеммы. И, честно, далеко не всегда я согласен с тем, как они решаются.
Дам небольшой спойлер к одному эпизоду, чтобы вы поняли масштаб.
После этого бабушка и дедушка решают забрать ребёнка силой, заставляя его подписать отказ от родительских прав. Он не выдерживает — передоз.
И вот момент: дедушка… ломает иглу с препаратом от передозировки. Отец умирает.
С одной стороны — он защищает внучку.
С другой — по закону он убийца.
Вот примерно на таких кейсах и строится сериал.
Очень советую посмотреть. И буду рад обсудить с вами — а был ли суд прав в тех или иных эпизодах?
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥33❤8🔥5👾1
Таки приветствую, контент я немного задерживаю, так что давайте немного постримим. Что у нас по планам:
- Играем в ETS2 с прекрасным и экспрессивным человеком который завозит завоз.
- Когда завершим ачивку, будем писать обновление для стражника.
Ну и общаемся попутно, задавайте вопросики, задавайте ответики)
- Играем в ETS2 с прекрасным и экспрессивным человеком который завозит завоз.
- Когда завершим ачивку, будем писать обновление для стражника.
Ну и общаемся попутно, задавайте вопросики, задавайте ответики)
❤🔥48❤5🔥3
Бессонный кодер
Таки приветствую, контент я немного задерживаю, так что давайте немного постримим. Что у нас по планам: - Играем в ETS2 с прекрасным и экспрессивным человеком который завозит завоз. - Когда завершим ачивку, будем писать обновление для стражника. Ну и общаемся…
Пишем обновление и общаемся, но в этот раз в одиночку вот тут, пробуем как на твиче пойдёт, ибо в тг всё-таки Пашенька ещё не отполировал.
https://www.twitch.tv/sleepless_code
UPD: закончилось, но будет ещё, как вам?
https://www.twitch.tv/sleepless_code
UPD: закончилось, но будет ещё, как вам?
🔥28❤4❤🔥1
Что же, ручки говорят что если немножко разделить контент план и не хреначить над одной темой, а немного отпускаться в другие, то у меня получится выпускать больше одного поста в неделю)
Так что... Попробуем! Я уже начал себе писать очерки для дополнительных постов помимо основной исследовательской темы сейчас, но также я помню, что многие просили всякие полезности и мини-гайдики по написанию кода. Ну, как говориться, as you want. Но сейчас главный вопрос, а в каком направлении мы пойдём? У меня в стеке два основных языка, Java и TypeScript(JS), так что этот выбор я оставлю вам!
Так что... Попробуем! Я уже начал себе писать очерки для дополнительных постов помимо основной исследовательской темы сейчас, но также я помню, что многие просили всякие полезности и мини-гайдики по написанию кода. Ну, как говориться, as you want. Но сейчас главный вопрос, а в каком направлении мы пойдём? У меня в стеке два основных языка, Java и TypeScript(JS), так что этот выбор я оставлю вам!
🔥30❤3
В каком направлении мы пойдём?
Final Results
25%
TS(JS) и создание ботиков в ТГ
75%
Java и minecraft
🔥25❤1
Если продолжать стримы с программированием, то когда? Множественный выбор
Anonymous Poll
27%
Понедельник вечер
27%
Вторник вечер
29%
Среда вечер
26%
Четверг вечер
45%
Пятница вечер
38%
Суббота день
67%
Суббота вечер
41%
Воскресенье день
53%
Воскресенье вечер
❤12🔥2
Статьи — это, конечно, хорошо, но и своими достижениями тоже хочется похвастаться 😁
Как вы знаете (учитывая, сколько раз я об этом рассказывал), Имперский Стражник проверяет медиафайлы на наличие NSFW-контента. И чтобы всё это работало стабильно — нам пришлось хорошенько постараться.
Как устроена система?
Есть агенты с нейронкой, которые непосредственно проверяют изображения и видео. Но, чтобы они не могли просто скачать всё подряд (безопасность), файлы отдаются через промежуточный сервер, который возвращает только то, что нужно в рамках конкретной задачи.
Агентов много, сервер один — и вот тут начинается самое интересное. Оптимизация. Скорость. Боль (и удовольствие).
Сейчас у нас работает примерно такая схема:
1) После запуска сервер начинает кешировать задачи в in-memory кеш. Он пытается загрузить ~200 файлов в память, чтобы отдавать их с минимальной задержкой.
2) В процессе подгрузки каждую секунду создаётся задача, которая берёт данные из БД и предзагружает по 25 файлов, пока буфер не заполнится.
3) Когда клиент запрашивает задачу, мы сначала проверяем кеш.
— Есть в кеше → отдаём мгновенно + триггерим дозаполнение
— Нет → догружаем синхронно (и да, это уже больнее)
Вроде простой механизм…
Но на деле — это куча вылизанных таймингов, лимитов и балансов.
И что это дало?
Сначала мы вышли на 14 ops, потом на 18 ops.
И ~99% запросов — с минимальным ожиданием благодаря кешу.
А теперь давайте приземлимся: что такое 18 ops?
Это:
18 файлов в секунду
~40 HTTP-запросов к Telegram каждую секунду
~4 МБ/с трафика
И это не пик.
Это стабильная, непрерывная нагрузка.
Представьте: вы листаете чат, где каждую секунду появляется 18 стикеров…
И так часами.
Без единого «loading…».
Вот примерно так сейчас и работает система.
Прикольно получилось)
Кстати, можете сами посмотреть, как это всё живёт в реальном времени:
https://gf.redguy.ru/public-dashboards/e0e799d208844820bd772fdee8b136ca?orgId=1&refresh=5s
Сейчас поток не на максимуме, но всё равно хорошо видно, как основная нагрузка уходит через preload.
Как вы знаете (учитывая, сколько раз я об этом рассказывал), Имперский Стражник проверяет медиафайлы на наличие NSFW-контента. И чтобы всё это работало стабильно — нам пришлось хорошенько постараться.
Как устроена система?
Есть агенты с нейронкой, которые непосредственно проверяют изображения и видео. Но, чтобы они не могли просто скачать всё подряд (безопасность), файлы отдаются через промежуточный сервер, который возвращает только то, что нужно в рамках конкретной задачи.
Агентов много, сервер один — и вот тут начинается самое интересное. Оптимизация. Скорость. Боль (и удовольствие).
Сейчас у нас работает примерно такая схема:
1) После запуска сервер начинает кешировать задачи в in-memory кеш. Он пытается загрузить ~200 файлов в память, чтобы отдавать их с минимальной задержкой.
2) В процессе подгрузки каждую секунду создаётся задача, которая берёт данные из БД и предзагружает по 25 файлов, пока буфер не заполнится.
3) Когда клиент запрашивает задачу, мы сначала проверяем кеш.
— Есть в кеше → отдаём мгновенно + триггерим дозаполнение
— Нет → догружаем синхронно (и да, это уже больнее)
Вроде простой механизм…
Но на деле — это куча вылизанных таймингов, лимитов и балансов.
И что это дало?
Сначала мы вышли на 14 ops, потом на 18 ops.
И ~99% запросов — с минимальным ожиданием благодаря кешу.
А теперь давайте приземлимся: что такое 18 ops?
Это:
18 файлов в секунду
~40 HTTP-запросов к Telegram каждую секунду
~4 МБ/с трафика
И это не пик.
Это стабильная, непрерывная нагрузка.
Представьте: вы листаете чат, где каждую секунду появляется 18 стикеров…
И так часами.
Без единого «loading…».
Вот примерно так сейчас и работает система.
Прикольно получилось)
Кстати, можете сами посмотреть, как это всё живёт в реальном времени:
https://gf.redguy.ru/public-dashboards/e0e799d208844820bd772fdee8b136ca?orgId=1&refresh=5s
Сейчас поток не на максимуме, но всё равно хорошо видно, как основная нагрузка уходит через preload.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤17🔥2❤🔥1
Бессонный кодер
В каком направлении мы пойдём?
Ну и ну. Решил узнал мнение у аудитории, а аудитория только сильнее запутала :D
Голоса жёстко идут в майн, но при этом сообщения в чате, директ, бота, личку (аж до сюда добрались) хотят и второго. Ну что же....
Будем смотреть и я думаю попробуем совместить, но в пропорции где будет больше Java, и меньше TS. 75 на 25)
Голоса жёстко идут в майн, но при этом сообщения в чате, директ, бота, личку (аж до сюда добрались) хотят и второго. Ну что же....
Будем смотреть и я думаю попробуем совместить, но в пропорции где будет больше Java, и меньше TS. 75 на 25)
❤🔥23🎉8🔥1