Как Жека приложение с сервера на сервер переносил (IT-триллер)

Всем привет!

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

Приложение: джава-прога с веб-мордой.
Сервер 1 (старый): CentOS 7
Сервер 2 (новый): AstraLinux 1.7

Прога — всё в докере: джава, постгрес, нжинкс, файлбит.

По сути перенос — это копирование файлов между серверами.
На новом сервере монтируем докеровские папки со старого сервера, и всё работает «as expected».

Это не первый мой подобный перенос, и я придерживался такого алгоритма:
  1. Останавливаем контейнер с прогой
  2. Делаем бэкап БД, т.к. хочется накатить его на постгрес свежей версии, (н-р 12.4 -> 16.4) простое копирование папки не сработает
  3. Останавливаем все контейнеры
  4. Запаковываем всё в архив без сжатия; для удобства, чтобы затем копировать 1 файл и видеть сколько времени осталось, да и по скорости это должно быть быстрее
  5. Копируем через scp с сервера на сервер

Прошлые проекты занимали в предалах 5-20 гб, а последний — 85 гб, именно большой размер превратил рутину в триллер.
Читать дальше

CyberGrad 2033 Архитектура: Ecs

Предыдущий пост: CyberGrad 2033

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

Основные сущности, на которых все держиться: Энтити, компоненты, системы и сервисы.

Entity
Это класс, наследник Node, в нем я реализовал методы добавления/удаления компонентов.
На старте энтити пробегается по своим чилдам и если они являются компонентами, добавляет в словарь.

Components
Это тоже наследник Node, потому что я хочу иметь возможность добавлять компоненты через редактор
Компоненты не содержат логики (хотя никто не запретит), толко данные и могут содержать ссылки на другие ноды

Systems
Тут происходит вся логика с энтитями, но только с теми, которые попадают под фильтр этой системы.
У систем есть несколько коллбэков, которые имплементируются интерфесами
IInitSystem — вызовется один раз при старте игры
IDestroySystem — вызовется один раз при завершении
IEntitiesAdded — вызывается когда появляется новый энтити, подходящий под фильтр системы (только один раз)
IEntitiesUpdate — вызывается каждый кадр и содержит всех энтитей подходящих под фильтр
IEntitiesPhysicsUpdate — то же самое но каждый апдейт физики
IComponentsRemoved — вызывается когда энтити больше не подходит под фильтр

Services
Немного походяд на системы, но если система работает с энтитями, то сервисы это просто утилитарные классы, которые могут делать что угодно. К примеру AudioService — который воспроизводит звуки в игре.
Сервисы умеют в следующие интерфейсы:
IInit — на старте игры один раз
IUpdate — каждый кадр
Читать дальше

CyberGrad 2033

Начал пилить игру перед самым новым годом, буду выкладывать тут прогресс (а может и не буду)


Жанр: Топдаун шутер
Сеттинг: Ближайшее грустное будущее в мухосранске провинциальном городке
Сюжет: ЧатГПТ 6 захватил склад Амазон и теперь клепает из бытовых товаров истребителей кожанных мешков. Робот пылесос с ножом на изоленте — один из простых врагов.
Главный герой — отважный курьер, который должен доставлять заказы в этом опасном городе.

Специально для этого проекта запилил ECS, FSM и Dependency Injection
Очень нравится как получилось сделать архитектуру, может быть потом распишу

Видос

С новым годом, булчане!

Этот год был непростым (впрочем, как и все где-то после 2020, и я не про математику), ну что поделать. Желаю всем заниматься любимым делом, оставаться молодыми в душе, чтобы глаза горели от энтузиазма (молодость, геймдев, хардкор, Мытищи — вы всё знаете), и поменьше сталкиваться со всякими трудностями.

Тем кто пилит игры — отдельное пожелание успешно довести их до релиза!

Kotlin, KorGE и корутины для организации игрового цикла.

Я вчера решил ради интереса посмотреть движок KorGE. Он довольно простой, для 2д игр, поддерживает сборку под разные платформы типа мобильных и веб.

Что меня заинтересовало — в нём активно используются корутины!
Читать дальше

Пилю физический движок и автосимулятор на нём.

Кажется, я уже перерос libgdx и он сейчас больше мешает, чем помогает. Кто-то писал что к godot легко прикрутить свой физический движок — жду в комментариях рассказа как это сделать и ссылок с примерами.

Читать дальше

Angelscript: где он обитает и с чем его едят

Здарова, пекари.

Решил вытащить обсуждение из тг чата в альфабулчанск. Оказывается Angelscript существует уже очень давно, а с ним даже успел поработать MrF в своём самописном движке. Слышал Кнайт биндинги к Xors3D делал.

С чего вообще сыр-бор: недавно вот наткнулся на сабж angelscript.hazelight.se/
Я тут в свободное время крайне медленно пилю «игру мечты» на UE5, и хотелось чего-то среднего между крестами и блюпринтами. А тут вот это нашёл и выглядит очень вкусно на первый взгляд.

Вопрос булке: как вам вообще ангел? стоит свеч? какие подводные?
А вдруг кто-то прямо с этим плагином тут работал? если да, то вообще очень круто. Если нет то буду первым, потом тут расскажу.

А что расскажу? Вкратце, хочу интегрировать Angelscript в Lyra-подобную data driven архитектуру, выкинув оттуда откровенно архитектурный булщит.

Топик о возможностях и проблемах статической типизации

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

Так вот, идея размерностей проиходят на физике в шестом классе. Компиляторы развиваются полвека как минимум.
Но почему, блин, я такую относительно простую концепцию смог записать только в довольно простом виде только сейчас и на немейнстримном языке?
На части языков это невозможно, на части языков придётся через числа Чёрча изобретать арифметику заново и писать нечитаемый код. Ещё на С++ на шаблонах можно, но сам по себе С++ можно назвать одним большим извращением.

А казалось бы задача не сложная — параметризовать шаблонный тип целыми числами и делать арифметические операции в compile time. Всё.

Я тут решил сделать топик

Здарова орлы, посмотрим чё тут за булчан новый.

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

давайте оттестируем как тут топики делать

вот например хочу поделиться смешнявой видеозаписью с соцсети ютьюб:

#1. Devlog вводный

Привет, пекари, расскажу небольшую историю про создание этого сайта.

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


Читать дальше