TGViewer
Channel Public Channel
Лаборатория Лиса

Лаборатория Лиса

@foxfoxcsharp

Ставлю эксперименты с Юнити C#
Subscribers
79
Photos
171
Videos
6
Links
29

Showing posts older than #141 · Back to latest

Older Posts 20 shown
Post #140 263
Если кто спросит, передать с компа на комп по интернет проводу быстрее, чем флешкой =)
  • ❤‍🔥 2
  • ❤ 2
Post #139 261
Очень нравится эта штука, хочу похвастаться. Простое решение, нудной работы. Статика на Nginx, не более!

Хотел я поставить себе Docker Registry, а он без ssl сертификата работать вообще не хочет. Решил я поставить самоподписанный сертификат.
Для тех, кто в танке, локальные доменные имена внутри локальной сети не работают ssl сертификаты от Let’s Encrypt и прочих ребят.
А самоподписанные сертификаты фигня полная, если на клиенте нет самого сертификата (Его нужно скачать на клиент и установить, что бы настоящий https работал)

Так и вот, распространять его просто нудно, но не трудно. Но решил сделать проще, 2 скрипта на 2 ОС, один сертификат и все в шляпе!
Docker Registry работает, контейнеры с моими очень полезными разработками не улетят ЗЛЫМ ОМЭРИКАНЦАМ!

Docker Registry советую, крутая штуковина. И Аутентификация там есть и хранишь где хочешь, только volume настрой и живи в шоколаде.
  • 👍 4
  • 🍌 3
  • 🎄 3
Post #138 389

This post (sticker, poll or similar) has no web preview. Open in Telegram

  • ❤‍🔥 5
  • 👏 5
  • 😁 1
Post #137 259
Странности на убунте.

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

Там есть cloud-init, которым удобно конфигурировать сервера, получается быстро и легко. Но когда делаешь это на домашнем железе, получается фуфло. Он стучится куда то на амазоновские сервера (Которые к слову забанены, большинство) для получения конфигов, потому и происходит ожидание.
------P.S. Я так понял из объяснения нейросети

Но и вот конфиг, который позволит это дерьмо убрать из запуска серверной убунты

sudo tee /etc/cloud/cloud.cfg.d/99-fix.cfg << 'EOF'
# Отключаем облачные datasources
datasource_list: [NoCloud, None]

# Уменьшаем таймаут
max_wait: 10
timeout: 10

# Отключаем сетевые проверки
network:
config: disabled
EOF
  • ❤‍🔥 5
  • 👍 1
Post #136 249
А я новый год провожу без света =)
  • 🎉 6
  • ❤‍🔥 3
  • 😁 3
  • 😢 3
Post #135 238
Не опять, а снова!
Стену кто украл? Дурова же больше нет в ВК
  • 🫡 4
  • 🤨 2
  • ❤‍🔥 1
  • 😁 1
Post #134 264
Как вы знаете, у меня есть свой сервер майнкрафт. Он работает не на каких-то дешевых хостах с бронированием времени и активности сервера, а на моем личном, который вы уже видели здесь.

Я планирую поиграть со своими серверами и планы на сервер довольно большие и преследуют цель не сколько развития самого сервера (Хотя оно тоже будет, как приятный бонус), сколько больше интересно развернуть Veloсity Proxy, инструмент, который позволяет работать кластеру backend серверов Майнкрафт, как единый сервер!

Звучит здорово!
Нынешняя ситуация:
Майнкрафт работает на одном ядре и имеет 5 миров!
1) Выживание (Верхний, нижний и Край)
2) Креатив
3) Мини-игры
Как только я через плагин WorldEdit что-то делаю в Креатив мире, это чувствуют игроки из Выживания!

Veloсity Proxy позволит мне отделить играбельные миры на отдельные ядра моих серверов!
То есть, если я загружу Креатив мир заполнением 3 000 000 блоков (Что нынешний сервер останавливает на долго), то выживание вообще этого не заметит!
Как и мини-игры, добыча незерита с помощью динамита не будет мешать игрокам играющим в TNTRun.

Реализация?
Мир с выживанием останется на основном сервере, в нем смогут играть до 50ти игроков одновременно!
Контейнеры креатива и мини-игр я запущу на втором физическом сервере через Docker, а так же добавлю контейнер lobby!
И добавлю docker с Postgres для плагинов верификации и прав доступа.


У кого есть опыт с этим инструментом, пишите в комментарии, с какими трудностями вы сталкивались при его внедрении в свои сервера! Будет интересно почитать, поделимся опытом!

#minecraft
  • ❤‍🔥 3
  • 🌭 1
Post #133 244
Челы написали, что озу в золото превратилось. Захожу - и в правду.
Фури плашки на 64гб год назад покупал за 14 тысяч, мне тогда показалось немного дороговато, но 26, это уже уровень видеокарт почти.
Озу по цене процессора, офигеть конечно.
Приплыли 😂
  • ❤‍🔥 4
Post #132 199
УРА! Как я счастлив! Мой сервер, линусовый, дважды вокрешенный, снова работает!
https://foxhardsoftness.ru/

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

Вы можете возразить мне, что у меня уже есть 2 сервера, но проблема в том, что один на виндовсе. И он очень не поворотливый, в сравнении с линуксом. И я не хочу ставить туда даблбут.
Ну и Виндовс лучше и стабильнее работает с Nvidia.
Как раз по причине дров nvidia у меня линуксовый сервер умер.
  • 🔥 4
  • ❤‍🔥 1
Post #131 209
Приплыли. Я не могу скачать пакеты из Microsoft. Ни для C#, ни для C/C++

Или я свой VS Code сломал или что вообще происходит... Вроде еще вчера мог все это скачать
  • ❤‍🔥 2
Post #130 294
Ну все, пошли нафиг эти ваши FastAPI на питонах, хахахахах!

Можно пилить сервер на чистом C. И это оказалось реально не так уж и сложно!

Клиент часть у меня работает на C#.

UPD: Мой репозиторий с проектиком
https://github.com/KamilTheFox/ExampleClientServerInC
  • ❤‍🔥 4
Post #129 188
В C можно перезаписывать память поверх любого типа!

Недавно открыл для себя union в C и немного опешил от возможностей!
Это как хакинг памяти на легальных основаниях
Что такое union?
Это структура, где все поля используют ОДНУ И ТУ ЖЕ память. Записал в одно поле - читай из другого, но интерпретация битов будет другой!

#include <stdio.h>
#include <stdint.h>

union WTF {
int32_t integer;
float real;
uint8_t bytes[4];
};

void print_bits(uint32_t x) {
for (int i = 31; i >= 0; i--) {
printf("%d", (x >> i) & 1);
if (i % 8 == 0) printf(" ");
}
}

int main() {
union WTF data;

// Пробуем число 42
data.integer = 42;

printf("Integer: %d\n", data.integer); // 42
printf("Float: %f\n", data.real); // ❌ НЕ 42.0!
printf("Биты: ");
print_bits(data.integer);
printf("\n\n");

// А теперь правильно
data.real = 42.0f;

printf("Float: %f\n", data.real); // 42.0
printf("Integer: %d\n", data.integer); // ❌ НЕ 42!
printf("Биты: ");
print_bits(data.integer);
printf("\n");

return 0;
}


Вывод:
Integer: 42
Float: 0.000000
Биты: 00000000 00000000 00000000 00101010

Float: 42.000000
Integer: 1109917696
Биты: 01000010 00101000 00000000 00000000

union выделяет память под самый большой тип (здесь 4 байта)
Все поля (integer, real, bytes) указывают на одну область памяти
Когда пишешь в одно поле - перезаписываешь память для всех!
Тип определяет только КАК интерпретировать биты

Это не безопасное преобразование типов!
Это прямое манипулирование битами в памяти.

Кстати, в C# в unsafe коде тоже можно провернуть что то подобное!
[StructLayout(LayoutKind.Explicit)]
public struct MemoryHack
{
[FieldOffset(0)]
public int Integer;

[FieldOffset(0)]
public float Real;

[FieldOffset(0)]
public byte Byte0;

[FieldOffset(1)]
public byte Byte1;
}

Но имеет ограничения.
  • ❤‍🔥 3
Post #128 161
К слову, я тут вспомнил об очень удобном инструменте! Можно зайти на виртуалку прямо в Visual Studio Code!
И работать там с кодом и прочего.

Название плагина RemoteSSH, скачивайте, подключайтесь и пользуйтесь благами IDE!
  • ❤‍🔥 1
  • 🔥 1
Post #127 158
Упал сервер Убунты в Субботу.
Забрали на переустановку Виндовс сервер =D
Классика недопонимания
  • ❤‍🔥 1
  • 🫡 1
Post #126 191
Вот, что пишет нейронка по этому поводу
  • ❤‍🔥 4
Post #125 198
Вечер снова не сладкий и радужный. У меня снова боль с моим сервером. Проблема была, как оказалось, не в Десктоп убунту, как я предполагал в постах выше, а в драйверах Nvidia!

Причем забавный момент: Я ж как то использовал драйвера Nvidia до этого! Почему сейчас все ломается?

Кароче, я снова потерял доступ до сервера =(
  • ❤‍🔥 2
Post #124 191
Добрый вечер, лис на связи! 🦊

Сегодня хочу поделиться мыслями, которые пришли мне в голову, пока я гонял в FlatOut 2 и разбирал, как вообще работает онлайн в старых играх.

Знаете, официальные серверы GameSpy, на которых работал мультиплеер, давно отключили. Но энтузиасты создали OpenSPY — эмулятор, который позволяет до сих пор играть с другими через интернет. Это натолкнуло меня на мысль: а как компьютеры двух незнакомцев из разных сетей находят друг друга и соединяются напрямую?

Я уже давно испытывал сложности с чистым P2P-соединеним (peer-to-peer) — это целое приключение.
Главные враги — NAT и файрволы. Твой роутер, как строгий телохранитель, не пропускает внутрь никого незваного. Просто сказать двум клиентам «общайтесь вот по этим IP-адресам» чаще всего не работает. Нужно хитростью заставить роутеры «прозевать» прямое соединение, или «пробить дырку», как это называют сетевые инженеры.

И тут я узнал про WebRTC. Если коротко, это не просто технология для видеочатов в браузере. Это целый стандарт, который решает все описанные выше проблемы. Он автоматически находит путь для соединения между двумя устройствами, даже если оба сидят за сложными роутерами. Сначала он пытается установить прямое UDP-соединение (самый быстрый вариант). Если не выходит — использует TCP. А если и это блокируется, то задействует сервер-ретранслятор (TURN), через который идёт весь трафик.

Веб-разработчики используют WebRTC для звонков прямо в браузере. А я посмотрел на это и подумал: почему бы не сделать на этой технологии децентрализованный мессенджер?

💡Так что моя следующая цель — снова потыкаться в чистый P2P. Без центральных серверов, хранящих данные. Попробовать покидать HelloWorld с компа на комп у одного провайдера и в одной локальной сети.

А вы работаете с сетевыми технологиями? Интересно ли вам, как устроена магия онлайн-соединений?
  • ❤ 5
  • ❤‍🔥 3
Post #123 191
🚀 Запускаем JS код в Docker без мусора в системе!

Если не хотите засорять систему, но нужно выполнить JS код — используйте Docker контейнер! Создадим volume на текущую папку и выполним код в чистой среде.

📦 Предустановите все зависимости для работы JS скриптов:
# Скачиваем легкий образ Node.js
docker pull node:24-alpine

# Запускаем контейнер с монтированием текущей папки
docker run -it --rm -v $(pwd):/app -w /app node:24-alpine sh


Что делать внутри контейнера:

# Устанавливаем зависимости (если есть package.json)
npm install

# Или ставим конкретные пакеты
npm install express axios dotenv

# Запускаем ваш скрипт
node ваш-скрипт.js

# Или если в package.json есть scripts
npm start


✨ Преимущества:

✅ Чистая среда без конфликтов версий
✅ Все зависимости изолированы
✅ Автоочистка после работы (--rm)
✅ Работает на любой системе
✅ Легкий образ (~100MB)

Не нужно ставить Node.js на систему —
просто используйте Docker! 🐳

#Docker #JavaScript #NodeJS #DevOps #Programming
  • 🔥 3
  • ❤‍🔥 1
Post #122 149
Я тут осознал, что мне графану и прометеус по новой настраивать 💀
KVM и Cookpit
И в целом дофига сервисов, которые были.
Nginx конфиги
😭
  • 😱 5
  • ❤‍🔥 3
Post #121 155
Великое перепутывание проводов
Прошу отца:
"Выдерни комп из сети и воткни обратно — перезагрузится".
Казалось бы, что может пойти не так?
Отец перепутал провода и выключил... мой Windows-хост, с которого я как раз работал через RDP, где стоял мой Майнкрафт сервер =D
Но не бойтесь, Сервер на Виндовс спокойно поднялся и я продолжил работу с ним.
  • 😁 4
  • ❤‍🔥 3
  • 🔥 1
Older posts →
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →