#TouchDesigner
Йоу, мне безумно понравился этот эффект в тиктоке и мне очень хотелось его повторить - не без некоторых гайдов, но у меня получилось!!!
вы даже не представляете сколько времени у меня это заняло и сколько раз эта проклятая программа вылетала😵💫😵💫😵💫
Йоу, мне безумно понравился этот эффект в тиктоке и мне очень хотелось его повторить - не без некоторых гайдов, но у меня получилось!!!
вы даже не представляете сколько времени у меня это заняло и сколько раз эта проклятая программа вылетала😵💫😵💫😵💫
❤6 3🏆2💘1 1
Forwarded from олег авангард
Олег Авангард уходит в армию.
Но паблик не остаётся без движения.
Я запускаю игру в Telegram-боте.
@Ryadovoy_Avangard_bot
@Ryadovoy_Avangard_bot
@Ryadovoy_Avangard_bot
(Спасибо большое этому парню)
Суть простая: вы заходите в бот и помогаете мне выполнять разные армейские поручения, задания и странные штуки, которые будут постепенно появляться внутри.
В боте будут задания, характеристики, таблицы, ачивки, мини-игра и рейтинг игроков. Чем активнее вы участвуете, тем выше поднимаетесь в таблице.
Ещё в боте можно будет отправить мне сообщение в армию. На эти сообщения я обязательно отвечу, а на некоторые, возможно, сделаю отдельные ролики, когда вернусь.
Самые активные игроки, которые будут проходить задания, собирать ачивки и держаться в топе, получат отдельный прикол. Не просто подарок, а станут частью всей этой истории.
Сейчас внутри уже доступно ознакомление с управлением и базовыми механиками. Всё, о чём написано в посте, будет постепенно добавляться.
Так как это мой первый запуск такого формата, где-то могут быть недочёты. Если заметите что-то странное или неудобное, внутри бота можно будет об этом рассказать. (@venttt_td)
Короче, пока я в армии, вы можете не просто ждать меня, а стать частью этого момента и возможно даже, как-то на него повлиять!
Всех люблю.
Увидимся в казарме)
Но паблик не остаётся без движения.
Я запускаю игру в Telegram-боте.
@Ryadovoy_Avangard_bot
@Ryadovoy_Avangard_bot
@Ryadovoy_Avangard_bot
(Спасибо большое этому парню)
Суть простая: вы заходите в бот и помогаете мне выполнять разные армейские поручения, задания и странные штуки, которые будут постепенно появляться внутри.
В боте будут задания, характеристики, таблицы, ачивки, мини-игра и рейтинг игроков. Чем активнее вы участвуете, тем выше поднимаетесь в таблице.
Ещё в боте можно будет отправить мне сообщение в армию. На эти сообщения я обязательно отвечу, а на некоторые, возможно, сделаю отдельные ролики, когда вернусь.
Самые активные игроки, которые будут проходить задания, собирать ачивки и держаться в топе, получат отдельный прикол. Не просто подарок, а станут частью всей этой истории.
Сейчас внутри уже доступно ознакомление с управлением и базовыми механиками. Всё, о чём написано в посте, будет постепенно добавляться.
Так как это мой первый запуск такого формата, где-то могут быть недочёты. Если заметите что-то странное или неудобное, внутри бота можно будет об этом рассказать. (@venttt_td)
Короче, пока я в армии, вы можете не просто ждать меня, а стать частью этого момента и возможно даже, как-то на него повлиять!
Всех люблю.
Увидимся в казарме)
❤3
#poster
Синий бархат
Первый раз я посмотрел Синий бархат ночью и потом долго не мог понять, что именно произошло. Не в смысле сюжета. сюжет там вполне линейный. В смысле ощущения. Как будто два часа просидел в чужом сне, где всё узнаваемо, но что-то не так. А Дэвид Линч гений
Синий бархат
Первый раз я посмотрел Синий бархат ночью и потом долго не мог понять, что именно произошло. Не в смысле сюжета. сюжет там вполне линейный. В смысле ощущения. Как будто два часа просидел в чужом сне, где всё узнаваемо, но что-то не так. А Дэвид Линч гений
❤10🔥3 3
#poster
Продолжая делать некую линейку по фильмам и сериалам.
Омерзительная восьмёрка это снежный вестен, который прекрасен тем, что в нем врёт каждый. Охотник за головами скрывает истинную цель, палач приказ, а пленница прошлое. Даже спасители оказываются палачами. Это фильм-головоломка, где истина подменяется подозрением, а мораль не имеет значения
Продолжая делать некую линейку по фильмам и сериалам.
Омерзительная восьмёрка это снежный вестен, который прекрасен тем, что в нем врёт каждый. Охотник за головами скрывает истинную цель, палач приказ, а пленница прошлое. Даже спасители оказываются палачами. Это фильм-головоломка, где истина подменяется подозрением, а мораль не имеет значения
❤5 3🔥2
#TouchDesigner
I feel it baby, you feel it too
Growing now, growing now, growing now
Move on my body like you're supposed to
Like you're supposed to
Yeah, girl, shake it like a
I feel it baby, you feel it too
Growing now, growing now, growing now
Move on my body like you're supposed to
Like you're supposed to
Yeah, girl, shake it like a
❤7
#прога
Давно не было пет-проектов. Вот Swiply - полноценный клон Tinder. Это Android-приложение с серверно-клиентной архитектурой и бэкендом на Spring Boot. Я повторил почти весь функционал дейтинг-приложений: свайпы, матчи, профили по интересам, работа с геолокацией, активный чат с использованием Redis и безопансостей (sic), сложная авторизация через JWT, модерацию, что тоже важно. Реализовал сразу две БД, что для меня впервые - PostgreSQL и MongoDB. Статусы чата и то, что очень для меня важно: я впервые сделал не монолитные сервисы, а модульный бэкенд, и что еще сложнее - модульный Android. Android на Jetpack Compose, архитектура MVVM. Вот полный стек.
Архитектурные решения (ADR-лог)
Более подробно в https://github.com/ventilia/Swiply
Давно не было пет-проектов. Вот Swiply - полноценный клон Tinder. Это Android-приложение с серверно-клиентной архитектурой и бэкендом на Spring Boot. Я повторил почти весь функционал дейтинг-приложений: свайпы, матчи, профили по интересам, работа с геолокацией, активный чат с использованием Redis и безопансостей (sic), сложная авторизация через JWT, модерацию, что тоже важно. Реализовал сразу две БД, что для меня впервые - PostgreSQL и MongoDB. Статусы чата и то, что очень для меня важно: я впервые сделал не монолитные сервисы, а модульный бэкенд, и что еще сложнее - модульный Android. Android на Jetpack Compose, архитектура MVVM. Вот полный стек.
Android — Compose, Material 3, MVVM, многомодульный Gradle (13 модулей), Coroutines/Flow, Hilt, Retrofit, свой STOMP-клиент на OkHttp, Room + Paging 3, DataStore, шифрованное хранилище токенов, FusedLocationProvider, Navigation Compose, кастомные Canvas-иллюстрации. Тесты — JUnit4, MockK, Turbine, Compose UI Test.
Бэкенд — Spring Boot 3, suspend-контроллеры, Spring Security с JWT, JPA, Spring Data MongoDB и Redis, Spring AMQP, WebSocket/STOMP, Thymeleaf, Flyway, springdoc-openapi. Тесты — JUnit 5, MockK, Testcontainers.
Инфраструктура PostgreSQL 16 + PostGIS, MongoDB 7, Redis 7, RabbitMQ с DLQ, MinIO, Docker Compose, GitHub Actions.
Архитектурные решения (ADR-лог)
D1. PostgreSQL + MongoDB вместе. Из ТЗ: Postgres (+PostGIS) источник истины для всего транзакционного; MongoDB только conversations/messages.
D2. geometry(Point,4326) вместо geography в колонке. Hibernate Spatial валидирует geometry-тип без сюрпризов; метровая семантика достигается кастом ::geography в каждом гео-запросе (ST_DWithin, ST_Distance). Поведение идентично, схема дружит с ddl-auto: validate.
D3. EXIF-стрипинг через полный переэнкод. Вместо вырезания EXIF-тегов изображение декодируется и собирается заново (Thumbnailator → JPEG). Метаданные (включая GPS) исчезают by construction, а «полиглоты» (файлы с двойным дном) не переживают переэнкод. Принимаются только JPEG/PNG по magic bytes.
D4. Suspend-контроллеры + блокирующие сервисы. Spring MVC поддерживает suspend-хендлеры; JPA остаётся блокирующим, поэтому паттерн: suspend fun → withContext(Dispatchers.IO) { транзакционный сервис }. @Transactional на suspend-функциях с JPA не работает — транзакции живут только внутри блокирующего слоя.
D5. ASYNC-dispatch разрешён в Spring Security. Suspend-контроллеры завершаются через ASYNC-dispatch, где OncePerRequestFilter (JWT) по умолчанию не выполняется → AuthorizationFilter видел анонима и валил запрос 401-м. Решение из документации: dispatcherTypeMatchers(DispatcherType.ASYNC).permitAll() — аутентификация уже проверена на исходном REQUEST-dispatch.
D6. Установка SecurityContext — только через createEmptyContext() + setContext(). Мутация deferred-контекста (getContext().authentication = …) в Spring Security 6 теряется.
D7. Нормализация пары мэтча — лексикографически по uuid.toString(). UUID.compareTo в Java сравнивает знаково и НЕ совпадает с порядком uuid в PostgreSQL; строковое сравнение hex-представления совпадает с байтовым порядком БД, на котором держится CHECK-констрейнт user_a_id < user_b_id.
D8. Advisory-lock пары при свайпе. pg_advisory_xact_lock(hashtextextended(a:b)) сериализует встречные лайки — дубль мэтча невозможен даже при гонке.
Более тг не дает написать(((