Telegram Web
Алексей Пирогов, наш бессменный докладчик и организатор встреч, продолжает серию воркшопов об языке ClojureScript. Это вторая часть серии, а первая доступна по ссылке.

Реализуем работающий в браузере "Pokedex" — базу знаний о… покемонах! Данные будем получать из PokéAPI, кэшировать в Localstorage и показывать по ним выборки в GUI. А может быть даже положим данные в DataScript — это такая in-memory БД, запросы к которой пишутся на языке логического программирования Datalog (который является DSL для Clojure, конечно же).

Второй воркшоп пройдёт 28 февраля с 17:00 до 18:30.

В организации нам помогает наш партнёр SBTG.RU. Трансляции в любых конфигурациях под ключ.

Чтобы быть в курсе IT-событий, подпишитесь на телеграм-канал ITMeeting. Это наши друзья, которые анонсируют бесплатные мероприятия в Москве и Онлайне. Здесь вы найдёте и конференции, и митапы, и семинары — форматы на любой вкус. Канал анонсирует и наши встречи. Подписывайтесь.

TG https://www.tgoop.com/progmsk (чат)
TG https://www.tgoop.com/progmsk_channel (канал)
VK https://vk.com/progmsk
YT https://www.youtube.com/@progmsk
👍3
Метапрограммирование в широком смысле означает любые средства, порождающие программы с минимальным участием программиста.

Это и все подходы с генерацией кода (например, T4 в .NET), и макросы, и предметно-ориентированные языки программирования (Domain Specific Languages, DSL).

Развитые средства метапрограммирования появились в одном из первых языков — в Lisp. Однако, с ним знакомы не так много программистов, а если говорить об аналитиках или дизайнерах, то Lisp для них — тайна за семью печатями. При внешне простом синтаксисе, Lisp реализует сложные концепции, с которыми нужно разбираться.

Мы — в XXI веке — ожидаем, что пользователи не должны быть программистами, и исходный язык должен быть очень простым, может быть даже визуальным.
Визуальная среда метапрограммирования кажется магией, но на деле ей много лет, и называется она JetBrains MPS, где MPS — это Meta-Programming System.

Программисты не любят визуальные редакторы, но только до тех пор, пока им не нужно писать визуальный редактор. А это непросто. Так что бизнес-аналитики и редакторы сценариев продолжают описывать бизнес-процессы на XML и JSON.

Клуб программистов решил, что аналитикам нужна немедленная и решительная помощь!
Фёдор Ярёменко в серии воркшопов покажет, как применять MPS на практике. На первом воркшопе он разработает редактор формул, похожий на тот, которым вы пользуетесь в Word или Google Docs. На выходе формулы будут превращаться в код на MathML.

Трансляция воркшопа пройдёт 1 марта с 17:00 до 18:00 и будет доступна в YouTube и VK.

В организации нам помогает наш партнёр SBTG.RU. Трансляции в любых конфигурациях под ключ.

Чтобы быть в курсе IT-событий, подпишитесь на телеграм-канал ITMeeting. Это наши друзья, которые анонсируют бесплатные мероприятия в Москве и Онлайне. Здесь вы найдёте и конференции, и митапы, и семинары — форматы на любой вкус. Канал анонсирует и наши встречи. Подписывайтесь.

TG https://www.tgoop.com/progmsk (чат)
TG https://www.tgoop.com/progmsk_channel (канал)
VK https://vk.com/progmsk
YT https://www.youtube.com/@progmsk
2 марта 2023, в четверг в 19:00 у нас в Московском клубе программистов состоится онлайн встреча на тему использования искусственного интеллекта в IT.

Сейчас все говорят про то, как GPT, GitHub Copilot и всякие другие умные инструменты как будто бы покушаются на святое — работу программистов.

Поэтому мы решили собраться и сделать доклад про ИИ продукты в IT, а затем провести дискуссию по данной волнующей теме среди участников.

С Github Copilot мы разучимся писать код?
Нина Пакшина расскажет про свой опыт использования Github Copilot. Покажет в прямом эфире различные трюки, которые облегчат жизнь программисту. И еще ответит на вопрос: стоит ли нам бояться за свою работу.

После основного доклада мы обсудим нашумевший ChatGPT. Пишите ваши вопросы в чате трансляции.

В организации нам помогает наш партнёр SBTG.RU. Трансляции в любых конфигурациях под ключ.

Чтобы быть в курсе IT-событий, подпишитесь на телеграм-канал ITMeeting. Это наши друзья, которые анонсируют бесплатные мероприятия в Москве и Онлайне. Здесь вы найдёте и конференции, и митапы, и семинары — форматы на любой вкус. Канал анонсирует и наши встречи. Подписывайтесь.

TG https://www.tgoop.com/progmsk (чат)
TG https://www.tgoop.com/progmsk_channel (канал)
VK https://vk.com/progmsk
YT https://www.youtube.com/@progmsk
🔥3
Алексей Пирогов, 7 марта 17:00–18:30.
Трансляция в YouTube: https://youtube.com/live/jbIOd7xxls4?feature=share
Трансляция в VK: https://vk.com/video-215542858_456239121

Исходный код проекта.

Алексей Пирогов, наш бессменный докладчик и организатор встреч, продолжает серию воркшопов про язык ClojureScript.

Реализуем работающий в браузере "Pokedex" — базу знаний о… покемонах! Данные будем получать из PokéAPI, кэшировать в Localstorage и показывать по ним выборки в GUI. А может быть даже положим данные в DataScript — это такая in-memory БД, запросы к которой пишутся на языке логического программирования Datalog (который является DSL для Clojure, конечно же).

В организации нам помогает наш партнёр SBTG.RU. Трансляции в любых конфигурациях под ключ.

Чтобы быть в курсе IT-событий, подпишитесь на телеграм-канал ITMeeting. Это наши друзья, которые анонсируют бесплатные мероприятия в Москве и Онлайне. Здесь вы найдёте и конференции, и митапы, и семинары — форматы на любой вкус. Канал анонсирует и наши встречи. Подписывайтесь.

| TG (чат)
| TG (канал)
| VK
| YT
👍3
Винсент Амбо, 9 марта 19:00–20:30.
YouTube: https://youtube.com/live/0Lhahzs-Wos
VK: https://vk.com/video-215542858_456239122

Первый пакетный менеджер SMIT появился в 1989 году. Для своего времени он казался прорывом. Загрузка и ручная сборки исходного кода программы были заменены на одну команду установки.

Сейчас нам известны десятки менеджеров, которые работают не только на уровне операционной системы, но и на уровне отдельных языков/платформ. Зачем нужен ещё один?

Оказывается, Nix решает одну из важнейших проблем, появившихся у пакетных менеджеров вместе с поддержкой зависимостей, которая называется Dependency Hell. Пакеты со временем меняются: программисты исправляют ошибки, добавляют новые возможности. Не всегда удаётся сохранить обратную совместимость и приходится хранить разные версии пакета, а ещё они зачастую размещаются в одном и том же каталоге и называются одинаково.

Разработчики Nix предложили интересное решение этой проблемы, которое не просто позволяет забыть про Ад Зависимостей, но и защищает систему от случайных коллизий. Описание пакетов в Nix делается на чистом функциональном языке программирования. Зачем?

Об этом нам расскажет программист Винсент Амбо. Он проведёт воркшоп по Nix и покажет примеры использования языка. Пакетный менеджер Nix работает на любых дистрибутивах Linux и на MacOS, а также, на его основе построен дистрибутив NixOS. Мы поговорим и о нём.
Винсент основал комьюнити и компанию TVL и разрабатывает альтернативную реализацию Nix — она называется Tvix. Tvix написан на языке Rust. Узнаем, зачем нужен Tvix, если есть Nix и почему Винсент выбрал Rust в качестве языка разработки.

В организации нам помогает наш партнёр SBTG.RU. Трансляции в любых конфигурациях под ключ.

Чтобы быть в курсе IT-событий, подпишитесь на телеграм-канал ITMeeting. Это наши друзья, которые анонсируют бесплатные мероприятия в Москве и Онлайне. Здесь вы найдёте и конференции, и митапы, и семинары — форматы на любой вкус. Канал анонсирует и наши встречи. Подписывайтесь.

| TG (чат)
| TG (канал)
| VK
| YT
Винсент Амбо, 9 марта 19:00–20:30.
Трансляция: YouTube | VK.

Первый пакетный менеджер SMIT появился в 1989 году. Для своего времени он казался прорывом. Загрузка и ручная сборки исходного кода программы были заменены на одну команду установки.

Сейчас нам известны десятки менеджеров, которые работают не только на уровне операционной системы, но и на уровне отдельных языков/платформ. Зачем нужен ещё один?

Оказывается, Nix решает одну из важнейших проблем, появившихся у пакетных менеджеров вместе с поддержкой зависимостей, которая называется Dependency Hell. Пакеты со временем меняются: программисты исправляют ошибки, добавляют новые возможности. Не всегда удаётся сохранить обратную совместимость и приходится хранить разные версии пакета, а ещё они зачастую размещаются в одном и том же каталоге и называются одинаково.

Разработчики Nix предложили интересное решение этой проблемы, которое не просто позволяет забыть про Ад Зависимостей, но и защищает систему от случайных коллизий. Описание пакетов в Nix делается на чистом функциональном языке программирования. Зачем?

Об этом нам расскажет программист Винсент Амбо. Он проведёт воркшоп по Nix и покажет примеры использования языка. Пакетный менеджер Nix работает на любых дистрибутивах Linux и на MacOS, а также, на его основе построен дистрибутив NixOS. Мы поговорим и о нём.
Винсент основал комьюнити и компанию TVL и разрабатывает альтернативную реализацию Nix — она называется Tvix. Tvix написан на языке Rust. Узнаем, зачем нужен Tvix, если есть Nix и почему Винсент выбрал Rust в качестве языка разработки.

В организации нам помогает наш партнёр SBTG.RU. Трансляции в любых конфигурациях под ключ.

Чтобы быть в курсе IT-событий, подпишитесь на телеграм-канал ITMeeting. Это наши друзья, которые анонсируют бесплатные мероприятия в Москве и Онлайне. Здесь вы найдёте и конференции, и митапы, и семинары — форматы на любой вкус. Канал анонсирует и наши встречи. Подписывайтесь.

| TG (чат)
| TG (канал)
| VK
| YT
Алексей Пирогов, 14 марта 17:00–18:30.

Трансляция в YouTube: https://www.youtube.com/live/1P69b8I3H1E?feature=share | VK, https://vk.com/video-215542858_456239121
Исходный код проекта.

Алексей Пирогов, наш бессменный докладчик и организатор встреч, продолжает серию воркшопов про язык ClojureScript.

Реализуем работающий в браузере "Pokedex" — базу знаний о… покемонах! Данные будем получать из PokéAPI, https://pokeapi.co/, кэшировать в Localstorage и показывать по ним выборки в GUI. А может быть даже положим данные в DataScript, https://github.com/tonsky/datascript — это такая in-memory БД, запросы к которой пишутся на языке логического программирования Datalog, https://docs.racket-lang.org/datalog/ (который является DSL для Clojure, конечно же).

В организации нам помогает наш партнёр SBTG.RU, https://sbtg.ru/. Трансляции в любых конфигурациях под ключ.

Чтобы быть в курсе IT-событий, подпишитесь на телеграм-канал ITMeeting, https://itmeeting.ru/. Это наши друзья, которые анонсируют бесплатные мероприятия в Москве и Онлайне. Здесь вы найдёте и конференции, и митапы, и семинары — форматы на любой вкус. Канал анонсирует и наши встречи. Подписывайтесь.

TG (чат) | TG (канал) | VK | YT
Наш Марк Шевченко не только умеет написать чистый код, провести митап или организовать хакатон. Ещё один из его талантов - приготовление плова! Самого вкусного плова! В чём секрет, и как приготовить похожий плов - смотрите на видео https://youtu.be/dsGWcdmSc2s

Лайки и комментарии приветствуются! Хороших вам выходных! 😄
👍16🔥4
Дмитрий Гуськов, Родион Мостовой, ChatGPT «в разрезе»
16 марта 19:00-20:00

Трансляция в YouTube | VK

Продолжаем разговор про ChatGPT и другие нейронные сети, в частности про DALL-E.

Будучи программистами, попробуем разобраться, как это работает, и как это использовать. Тема непростая, поэтому мы поговорим об устройстве нейронок в целом и дадим ссылки на учебные материалы.

Сначала Дмитрий Гуськов, программист и архитектор из Б1, расскажет об устройстве нейронных сетей, о моделях и о том, чем модели отличаются друг от друга. Во время трансляции можно будет задавать наводящие вопросы, поскольку предполагается не доклад с готовым сценарием, а обсуждение.

Затем Родион Мостовой покажет, как к ChatGPT можно достучаться через REST API. Оказывается, там есть интересные параметры (например, «креативность») которые можно подкручивать.

Родион реализовал библиотеку на C#, которая инкапсулирует обращения к ChatGPT. Можно будет задать вопросы о том, как устроено API и почему библиотека сделана так, как сделана.

Трансляция начнётся в четверг 16 марта в 19:00.

В организации нам помогает наш партнёр SBTG.RU. Трансляции в любых конфигурациях под ключ.

Чтобы быть в курсе IT-событий, подпишитесь на телеграм-канал ITMeeting. Это наши друзья, которые анонсируют бесплатные мероприятия в Москве и Онлайне. Здесь вы найдёте и конференции, и митапы, и семинары — форматы на любой вкус. Канал анонсирует и наши встречи. Подписывайтесь.

TG (чат) | TG (канал) | VK | YT
👍8
https://ioe.hse.ru/announcements/818413252.html

28 марта НИУ ВШЭ проводит открытый семинар «Генеративный искусственный интеллект в образовании», в рамках которого будут обсуждать, в частности, ChatGPT. Для нас эта дискуссия актуальна, да и тема образования нам близка, поэтому мы размещаем ссылку на семинар.

В качестве иллюстрации использованы изображения, сгенерированные нейронной сетью Midjourney по описанию ChatGPT in high school education.
👍2
Алексей Пирогов, 21 марта 18:00–19:30.

Трансляция в YouTube: https://youtube.com/live/lqMEyaPL3Pg?feature=share | VK, https://vk.com/progmsk?z=video-215542858_456239126%2Fvideos-215542858%2Fpl_-215542858_-2

Исходный код проекта: https://github.com/astynax/cljs-pokedex

Алексей Пирогов, наш бессменный докладчик и организатор встреч, продолжает серию воркшопов про язык ClojureScript.

Реализуем работающий в браузере "Pokedex" — базу знаний о… покемонах! Данные будем получать из PokéAPI, https://pokeapi.co/, кэшировать в Localstorage и показывать по ним выборки в GUI. А может быть даже положим данные в DataScript, https://github.com/tonsky/datascript — это такая in-memory БД, запросы к которой пишутся на языке логического программирования Datalog, https://docs.racket-lang.org/datalog/ (который является DSL для Clojure, конечно же).

В организации нам помогает наш партнёр SBTG.RU, https://sbtg.ru/. Трансляции в любых конфигурациях под ключ.

Чтобы быть в курсе IT-событий, подпишитесь на телеграм-канал ITMeeting, https://itmeeting.ru/. Это наши друзья, которые анонсируют бесплатные мероприятия в Москве и Онлайне. Здесь вы найдёте и конференции, и митапы, и семинары — форматы на любой вкус. Канал анонсирует и наши встречи. Подписывайтесь.

TG (чат) | TG (канал) | VK | YT
👍4
10 минут до трансляции!
Дмитрий Гуськов, Родион Мостовой, ChatGPT «в разрезе»
YouTube | VK

Продолжаем разговор про ChatGPT и DALL-E. Два дня назад вышла новая версия модели ChatGPT — GPT-4. Мы с ней поигрались и расскажем, что удалось наиграть.

Сначала Дмитрий Гуськов, программист и архитектор из Б1, расскажет об устройстве нейронных сетей, о моделях и о том, чем модели отличаются друг от друга. Во время трансляции можно будет задавать наводящие вопросы, поскольку предполагается не доклад с готовым сценарием, а обсуждение.

Затем Родион Мостовой, программист и преподаватель, покажет, как к ChatGPT можно достучаться через REST API. Оказывается, там есть интересные параметры (например, «креативность») которые можно подкручивать.

Родион реализовал библиотеку на C#, которая инкапсулирует обращения к ChatGPT. Можно будет задать вопросы о том, как устроено API и почему библиотека сделана так, как сделана.

Трансляция через 10 минут!

В организации нам помогает наш партнёр SBTG.RU. Трансляции в любых конфигурациях под ключ.

Чтобы быть в курсе IT-событий, подпишитесь на телеграм-канал ITMeeting. Это наши друзья, которые анонсируют бесплатные мероприятия в Москве и Онлайне. Здесь вы найдёте и конференции, и митапы, и семинары — форматы на любой вкус. Канал анонсирует и наши встречи. Подписывайтесь.

TG (чат) | TG (канал) | VK | YT
👍3
Приобщайтесь к прекрасному, пишите на функциональных языках! До трансляции полчаса!

Трансляция в YouTube | VK

Исходный код проекта

Алексей Пирогов, наш бессменный докладчик и организатор встреч, продолжает серию воркшопов про язык ClojureScript.

Реализуем работающий в браузере "Pokedex" — базу знаний о… покемонах! Данные будем получать из PokéAPI, кэшировать в Localstorage и показывать по ним выборки в GUI. А может быть даже положим данные в DataScript — это такая in-memory БД, запросы к которой пишутся на языке логического программирования Datalog (который является DSL для Clojure, конечно же).

В организации нам помогает наш партнёр SBTG.RU. Трансляции в любых конфигурациях под ключ.

Чтобы быть в курсе IT-событий, подпишитесь на телеграм-канал ITMeeting. Это наши друзья, которые анонсируют бесплатные мероприятия в Москве и Онлайне. Здесь вы найдёте и конференции, и митапы, и семинары — форматы на любой вкус. Канал анонсирует и наши встречи. Подписывайтесь.

TG (чат) | TG (канал) | VK | YT
Началась весна, а это значит, что вместе с пробуждением природы, после зимней спячки пробуждаются и мозги программистов. Хочется думать о чём-то интересном и перспективном, о чём-то, что поможет нам расти в профессии и быть востребованными.

В этом программистам вот уже много лет помогают весенние конференции JUG Ru. Мы постоянно ездим к ним в гости — и как докладчики, и как участники. И сейчас расскажем, что нас ждёт в апреле.

✔️ Фестиваль TechTrain — про искусственный интеллект в работе и жизни. Фестиваль совершенно бесплатен и проходит только онлайн 1 апреля. Можно слушать доклады и смотреть воркшопы, не выходя из офиса дома. Можно шутить про то, что ChatGPT скоро лишит нас работы. Первое апреля — прекрасный день для шуток! 😊
✔️ Heisenbug 2023 Spring — проходит 11-12 апреля онлайн и 16-17 апреля оффлайн — в Москве. Это такое mast have мероприятие для тех, кто занимается качеством программ, а качество в развитых технических брендах — на первом месте. ☝️
✔️ JPoint 2023 — ждёт нас 12-13 апреля онлайн и 18-19 апреля офлайн — снова в Москве. Всё, что касается волшебного мира Java — это JPoint. Если, услышав слова Akka, Ignite, Kotlin или Hibernate, вы плачете от счастья, приходите! 🙏

JUG Ru сделали участникам нашего клуба персональную скидку в 10% по промокоду PROGMSK. Ищите кнопку Для частных лиц.

Расписание конференций уже доступно на сайтах. Читайте, выбирайте, смотрите, кто спикер. И записывайтесь!
👍3🔥21
Schema Registry с Protobuf в Kafka — зачем оно надо?

Представьте, что вы работаете в большой компании (это будет нетрудно, если вы действительно работаете в большой компании).

У вас есть несколько команд, которые пишут разные сервисы, а сервисы всё время друг с другом взаимодействуют. Но, поскольку — по всем правилам — сервисам нельзя взаимодействовать напрямую, они делают это через Кафку. Всё, как в учебниках по микросервисам с большими волшебными картинками.

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

Для того, чтобы справиться с этой проблемой, можно поставить... ну, например, Schema Registry. А затем научить свои сервисы опираться на него.

Нина Пакшина работает в Ленточке и пишет на Go. Нина разобралась, как работает связка Kafka + SchemaRegistry, переписала код, нашла все подводные камни, а — главное — написала про всё про это статью на Хабр.

Есть версия статьи на английском языке — первая, вторая и третья части.
deploy2production

После того, как вы научились делать сайты, надо выкладывать их на хостинг.

Вам повезло, если у вас были курсы по HTML и CSS — тогда вам ничего не надо делать. Беда, если вы изучали ASP.NET Core и вам нужны Redis, Elastic и Postgres.

Наставник говорит, что все это легко запускается в Kubernetes. Чтение документации вводит вас в ступор — что он понимает под словом легко?

Вы чувствуете себя Шариковым на допросе Преображенского — конгресс, немцы какие-то... SSH, ключи, образа (или образы?), YAML и ещё четырнадцать незнакомых аббревиатур.

Почему никто не расскажет об этом в действительно доступной форме?

На этот вопрос я вам отвечу другим вопросом — почему никто? Есть человек, который рассказывает про развёртывание приложений ASP.NET.

Его зовут Анатолий Северин и он программист. Анатолий занимается разработкой более 10 лет, помогает новичкам, делает доклады, участвует в онлайн-активностях клуба программистов. Такой, в общем, суровый популяризатор.

Анатолий решил, что пробел в таком важном вопросе, как публикация микросервисов, совершенно недопустим, и взялся за цикл статей. Цикл пока не завершён, но каждую неделю появляются две новые заметки.

И вот — подписаться на статьи и начать читать можно прямо сейчас!
👍4
Channel name was changed to «Prog.Msk • Channel»
ChatGPT «в работе»
Антон Минковский, Ольга Щербакова
23 марта в 19:00 по Москве

Трансляция в YouTube | VK

Клуб программистов активно исследует устройство и возможности ChatGPT. Мы программировали с помощью copilot, разбирались с математикой и историей нейронок и даже встраивали чат в свою программу.

Однако, чем больше мы узнаём, тем больше у нас вопросов. Мы пригласили экспертов, чтобы разобраться, что вообще может ChatGPT и кому принадлежит сгенерированный им контент.

Антон Минковский подходит к технологии не как разработчик, а как пользователь. Но пользователь продвинутый — Антон разработал и проводит курс по ChatGPT. На воркшопе он покажет, что можно «выжать» из интеллектуального чата.

Не секрет, что специалисты зачастую смотрят на решения слишком узко — потому, что смотрят глубоко. Взгляд со стороны поможет расширить угол обзора и освоить неочевидные приёмы при работе со знакомым, казалось бы, инструментом.

Ольга Щербакова уже знакома нашим зрителям. Ольга — юрист, специализируется на праве новых технологий, в частности, авторском праве и лицензировании программ.

Мы поговорим о том, кому принадлежат тексты ChatGPT и картинки DALL-E. Если вы «придумаете» иконку приложения в Midjourney, можно ли будет продавать его в Германии? А в Китае?

Ольга уже несколько лет проживает в Испании и практикует иммиграционное право. Сейчас ей часто приходиться отвечать на вопрос, как получить ВНЖ в Испании . Чаще всего, эксперты в сфере IT переезжают туда по Номад визе и Стартап визе. Об этом мы тоже поговорим.

В организации нам помогает наш партнёр SBTG.RU. Трансляции в любых конфигурациях под ключ.

Чтобы быть в курсе IT-событий, подпишитесь на телеграм-канал ITMeeting. Это наши друзья, которые анонсируют бесплатные мероприятия в Москве и Онлайне. Здесь вы найдёте и конференции, и митапы, и семинары — форматы на любой вкус. Канал анонсирует и наши встречи. Подписывайтесь.

TG (чат) | TG (канал) | VK | YT
👍6
Много лет назад бег рекламировали как средство от инфаркта. Была даже такая расхожая фраза — бегом от инфаркта.

С течение времени изменилось немногое. Появились специализированные кроссовки — именно для бега. Появились рекомендации, как правильно бегать — чтобы не убить ноги. Появились и новые исследования.

У программистов есть своя болезнь — не инфаркт — от которой все мы бегаем. Вызывается сидячим образом жизни. Так что, бегать надо!

В начале лета в Москве проходит фестиваль RUNIT —как раз для программистов, да и в целом для специалистов из сферы IT.

Бегать будем 18 июня по Измайловскому парку. Доступны дистанции для любого уровня подготовки — 3, 5, 10 и 25 километров. Все подробности в Telegram-канале.

Заходите на сайт фестиваля и регистрируйтесь!
👍2
2025/07/10 08:22:12
Back to Top
HTML Embed Code: