misha98857 – Telegram
misha98857
163 subscribers
92 photos
17 videos
2 files
83 links
Пишу о штуках, которые пилю в свободное время и жизни
Download Telegram
This media is not supported in your browser
VIEW IN TELEGRAM
Возможно вы встречали имитацию тумана или что-то похожее, что выглядит красиво, но не очень понятно, как это сделано.

Скорее всего для реализации такой фичи используют шейдеры. По ним есть замечательная интерактивная книга The Book of Shaders пройдя которую можно сильно прокачаться в этой теме и уже с полным пониманием реализовывать красивые вещи, например как этот туман.
Недавно делал проект на godot по плейлисту, но там есть куча антипаттернов и как делать не стоит. В этот чудесный новогодний вечер всё-таки дошли руки начать переписывать поведение персонажа на FSM. В общем, теперь мне godot нравится ещё больше, возможно скоро будет демка планируемой игры и скорее всего на этих выходных проведу пару стримов с разработкой игры.
С новым годом! Пусть мечты сбываются и всегда будет хватать здоровья их осуществлять :)
Интересный момент, теперь для новых каналов нужно запрашивать доступ к трансляциям и подтвердить своё намерение с помощью номера телефона, только после этого будет 24-часовой cooldown на трансляцию. Видимо таким способом стараются решить проблемы всяких трансляций "SpaceX", где предлагают вложить биткойны.

Поэтому, если кто-то в будущем захочет быстро создать трансляцию, то проверьте, что вам эта фича доступна.
Ради эксперимента провёл небольшую трансляцию, чтобы потестить звук и в целом каково это кодить что-то новое на стриме. В общем по мне норм, думаю ещё шумоподавление от nvidia включить или gate звука чуток прибавить, чтобы не было слышно размышлений.

Думаю завтра ещё подключу трансляцию и добью разделение логики на FSM, а после уже буду доп. механики начинать реализовывать.
Привет! Запустил стрим, будем допиливать поведение персонажа и если есть какие-нибудь вопросы, то можно задавать в чат и обсудим :)

https://youtube.com/live/P9b8oQKamuo?feature=share
Сегодня почти весь день ушёл на то, чтобы дописать и отладить основные фичи в приложении и улучшить пару вещей, поэтому особо ничего не успел сделать по игре. На самом деле, там осталось не так много и думаю, что скоро будет анонс и релиз.
This media is not supported in your browser
VIEW IN TELEGRAM
Хоть и не успел ничего такого реализовать, но идея для следующей механики уже есть.

Как думаете, что это будет?
Сегодня довелось много писать на NestJS и делюсь парой удобных штук:
1. Prisma Studio - довольно удобно можно запустить одной командой в папке проекта и не нужно настраивать подключение через сторонние клиенты.
2. Bull - очереди поверх редиса с довольно удобным синтаксисом и простой установкой. Для него есть дашборд, но так как там для подключения нужно было немного заморочиться, то пока хватило AnotherRedisDesktopManager.
3. Ну и bcrypt для хеширования паролей.

P.S. Статья со скриншота
В предыдущем посте упоминал Prisma Studio, классная вещь, но есть проблема, что её можно запустить только указав путь до схемы базы данных и поднять локально, а вот подключиться к серверу нет. А так же, так как пока для тестирования используем sqlite, то соответствено нужно иметь доступ к файлу дб.

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

Сталкиваясь на работе с nginx-ом часто встречал конструкцию с proxy_pass, которая позволяет проксировать данные с одного url на другой. И зная это придумал забавное решение.

1. Ставим ufw - это firewall, который блокирует куда можно отправять трафик и куда нельзя в обе стороны (на приём и передачу). Классная инструкция здесь. На самом деле, я бы всегда рекомендовал блокировать всё, что не используется, так как нас однажды хакнули, когда использовали слабый пароль от ssh и очень много трафика шло через наш сервер, ufw такое бы заблокировал. Правда в любом случае после такой атаки только переустановка сервера или восстановления из бекапа, когда точно он не был взломан.
2. В нашем случае блокируем доступ к порту 5555
sudo ufw deny 5555


3. Устанавливаем nginx, если не был установлен. Способ установки зависит от системы.
4. После меняем конфиг для nginx, чтобы он проксировал другой порт с Basic Authentication (связка логин/пароль).
4.1 Как сделал я на тестовом сервере - просто в /etc/nginx/sites-enabled/default заменил конфиг. А по хорошему, нужно в sites-available добавить новый домен и потом слинковать его в sites-enabled
bash 
sudo ln -s /etc/nginx/sites-available/your_domain /etc/nginx/sites-enabled/


4.2 Конфиг получился
server {  
listen 3100 default_server;
listen [::]:3100 default_server;

location / {
proxy_pass http://127.0.0.1:5555/;
auth_basic "Restricted area";
auth_basic_user_file /etc/nginx/.htpasswd;
}
}


4.3 А чтобы создать связку логин и пароль, то используем htpasswd
sudo htpasswd -c .htpasswd user_name

В итоге после таких манипуляций и нас будет закрыт порт 5555, он будет доступен только из внутренней сети и мы сможем заходить в prisma studio на 3100 порту с аутентификацией.
👍1
В общем, как показала практика sqlite не очень удобен для разработки, если тебе нужно иметь базу на сервере и разрабатывать локально. Поэтому поднял PostgreSQL. Сейчас пока напрямую открыл доступ в интернет защитив паролем учётки, но по уму нужно какой-нибудь VPN до сервера прокинуть, чтобы никто не пытался пароли перебирать к бд. Пришлось потратить некоторое время, чтобы открыть доступ к базе из вне и когда всё сделал по разным статьям, увидел, что всё есть в этой. Главное, не забудьте ставить сложный пароль, так как боты довольно быстро могут перебрать базовые комбинации.
👍2
И ещё немного настроил CI/CD через github actions. В общем довольно удобная штука. Теперь с помощью .env файла можно указать куда писать на проде и при локальной разработке. Для работы с .env файлами в среде ноды уже есть довольно много решений: native (node 20+), dotenv и @nestjs/config (так как сейчас пишу на nest).

На проде этот .env файл собирается из секретов в репозитории и для деплоя использую ssh-action, так как пока идёт активная фаза разработки, то там просто запускаются миграции и перезапускаются необходимые вещи через pm2, возможно потом выберем более production-ready решение. Ну и конечно при каждом деплое приходит сообщение с помощью telegram-action.
Если кто-то пользуется Godot 4, то сегодня в мастер слили возможность сбилдить проект, который можно будет потом загрузить в Я.Игры и которые будут запускаться в safari 🎉

https://github.com/godotengine/godot/pull/85939#event-11522059935
🔥1
Всем привет! Вчера дописал основную серверную логику, поэтому ещё немного и будем релизить.

Но пост не об этом. Просто хотел сообщить, что админу канала (мне) сегодня исполнилось 25 лет (1/4 века) и что уже пора начинать делать дела. Поэтому оставайтесь с нами (со мной) дальше будет больше 🔝
🎉8
Недавно реализовывал схему с access и refresh токенами на бекенде и нашёл картинку, которая довольно очевидно обозначает схему взаимодействия. Раньше думал, что это сложнее будет работать, но на самом деле всё довольно просто.

1. При логине/регистрации генерируем access и refresh token. У access токена время жизни меньше получаса, а у refresh дольше.
2. При рефреше токена закидываем access и refresh токен в blacklist и выдаём новые. Здесь могут попробовать рефрешнуть с помощью access токена, тогда просто его закидываем в blacklist и отдаём 401 ошибку и согласно схеме попробует рефрешнуть с помощью рефреш токена.

В принципе всё :)

Есть ещё сценарии удаления аккаунта или условного логаута, но там уже логика зависит от потребностей в работе приложения.
misha98857
И ещё немного настроил CI/CD через github actions. В общем довольно удобная штука. Теперь с помощью .env файла можно указать куда писать на проде и при локальной разработке. Для работы с .env файлами в среде ноды уже есть довольно много решений: native (node…
Активная фаза разработки почти подходит к концу, поэтому переезжаем на более production-ready решение. Докеризирую всё приложение, чтобы посмотреть как в итоге будет работать и уже настраивать бекапы/репликацию базы через конфиг.

Когда сделаю и результат будет такой, что мне понравится, то обязательно напишу постик об этом с шагами и ссылками, которые могут пригодится. Может даже в отдельную репу закину workflows и докерфайлы, чтобы можно было целиком на всё посмотреть
🔥2
Появилось немного времени, попробуем сделать заход на подготовку приложения по React к open-source

https://youtube.com/live/5Ssy3ic5RIc?feature=share
👍1
В общем не всё успел, что планировал, поэтому остались очевидно реализованные так себе вещи. Будем действовать итеративно :D

А так. Жду ваши
https://github.com/misha98857/react-handbook
Я раскатил версию из репозитория на всех и вчера после релиза столкнулся с очень странным багом, который появлялся только при скачивании из google play. Ни эмулятор, ни реальное устройство не показывало такого поведения, да и в коде логики, которое могло привести к такому результату не было. Да ещё и приложение скачанное из google play не продебажить.

В итоге убил часа 4 на то, чтобы пофиксить. А причина оказалась в простом. В настройках есть "Automatic restore", которое бекапит данные и если эта опция включена, то при переустановке из google play он восстановит sharedPreferencies и из-за этого там будет язык, который я когда-то натыкал в релизной версии.

Поэтому, если такой баг при разработке своего приложения поймаете, то сначала можете глянуть включена ли у вас эта фича или нет