Обновить

Разработка

Сначала показывать
Порог рейтинга

Что будем обсуждать и про что рассказывать на GoCloud Tech ☁️

3 сентября, уже почти через месяц, состоится наша вторая технологическая IT-конференция про облака и AI — GoCloud Tech.

Мы запланировали для вас четыре трека:

🤖 AI&ML — про AI-продукты нашей разработки и работу с GenAI. Узнаете, как устроены RAG-системы и мультиагентные ассистенты, а также, как они уже применяются в работе и как начать их использовать

☁️ Cloud Infrastructure — про построение устойчивой, масштабируемой и безопасной облачной инфраструктуры: нюансы сетевой архитектуры, проектирование IaaS‑кластеров на K8s, возможности балансировщиков и производительность SDN.

📈 Data&Analytics — про современные подходы к Big Data и аналитике: тренды, возможности облачных сервисов, интеграцию с AI-агентами и инструменты для быстрого и эффективного решения задач хранения, обработки и анализа.

⚙️ Dev Platform Services — в рамках трека разберем детали и заглянем «под капот» решений, чтобы затем облегчить повседневную рутину разработки и настройки сервисов, а еще — оптимизировать процессы в инженерных командах.

А еще вас ждет:

  • демо и интерактивные зоны новых AI-сервисов и сервисов платформы Cloud․ru Evolution;

  • технические воркшопы;

  • нетворкинг, кастомный мерч и afterparty.

Как принять участие:

Подключайтесь к онлайн-трансляции в VK и на Twitch (ссылка придет зарегистрированным участникам в письме) или приходите в Лофт-пространство Goelro в Москве. Собираемся 3 сентября в 10:00, а основную программу начинаем в 11:00. Кстати, ей мы тоже совсем скоро с вами поделимся.

Зарегистрироваться 👈

А пока можно почитать, как прошли наши предыдущие конференции:

Теги:
Всего голосов 1: ↑0 и ↓1-1
Комментарии0

Как создать в Скретч игру за 15 минут?

Чаще всего разработка игры, даже на Скретч, требует немало времени. Продуманные механики, сюжета, процесс разработки.

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

А научиться программировать в Скретч можно на курсе: https://pixel.study/scratch

Игра в Скретч за 15 минут в видео ниже, приятного просмотра!

Теги:
Всего голосов 1: ↑0 и ↓1-1
Комментарии0

Как устроено тестирование телеком-продуктов

Есть множество видов тестирования, их классифицируют по различным признакам: уровню, целям, степени автоматизации, знаниям о системе, а также типу проверяемых сценариев (функциональные и нефункциональные). Расскажем подробнее о реализации разных видов тестов, которые проводятся в лабораторных условиях: 

  • Модульные (unit) и компонентные (component) тесты реализуют сами разработчики. Они позволяют проверить корректность работы отдельных модулей и компонентов на ранней стадии.

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

  • Системное тестирование охватывает проверку сквозных (end-to-end) сценариев на реальной аппаратной платформе. В отличие от бокс-тестов, здесь задействуются реальные пользовательские терминалы и максимально приближенная к коммерческой опорная сеть.

  • Нагрузочное тестирование и тестирование стабильности позволяют оценить работу системы под высокой нагрузкой в течение длительного времени. Это важно для подтверждения отказоустойчивости и стабильной производительности.

Выделим полевое тестирование. Оно позволяет в реальных радиоусловиях с реальными абонентскими терминалами протестировать описанные выше процедуры. Для такого тестирования используется специальный автомобиль, в котором установлено оборудование для проведения drive-тестов.

Внутри автомобиля для полевого тестирования
Внутри автомобиля для полевого тестирования

Во время drive-тестов используются разные модели пользовательских устройств. Это важно для нормализации результатов и получения объективной оценки поведения системы при работе с многообразием смартфонов.

В статье Ивана Политова и Антон Васина, инженеров из департамента разработки и проектирования опорной 5G-сети в YADRO, читайте подробнее, как в компании тестируют телеком-продукты.

Теги:
Всего голосов 1: ↑1 и ↓0+1
Комментарии1

Мы зарелизили виртуальные роутеры

Они позволяют создавать маршрутизируемые сети — когда один или несколько компонентов вашей инфраструктуры ходит в интернет. Пример 👇

У вас 4 виртуалки и 1 база под корп портал, объединенные в приватную сеть. Одна из виртуалок должна раз в месяц скачивать обновления для Битрикса. Вот тут-то и пригодится роутер, который пропустит ее в сеть за обновлением. Безопасно и без переплаты за внешние IP.

В наличии: роутеры с резервированием (High Availability, aka HA) и без. Если вы проектируете полностью отказоустойчивую инфру, то HA — это мастхев, и за него стоит переплатить. Если отказоустойчивость роутера не важна, рекомендуем выбрать самый доступный по цене тариф.

🦐 Минималка без HA: 1 нода, 1 CPU, 1 RAM + IP — 300 руб/мес
🦑 Максималка с HA: 2 ноды, 6 CPU, 8 RAM + IP — 3 150 руб/мес

Ищите в панели → «Сети» → «Роутеры» и выбирайте нужный регион и конфиги.

Потестить роутер на своей сети →

Теги:
Всего голосов 8: ↑8 и ↓0+11
Комментарии0

TypeScript и C++ в одном бинаре. Первый open source-проект от МойОфис

Команда МойОфис выложила в open source собственную разработку — компилятор tsnative. Это кроссплатформенный инструмент, который объединяет удобство TypeScript с производительностью C++ в одном приложении. Исходники — на GitHub под лицензией Apache 2.0.

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

AntiQ разделен на два самостоятельных компонента. Сейчас в open source опубликован только tsnative — главный модуль, в котором сосредоточена основная логика и заложены архитектурные принципы всей платформы.

Зачем это нужно?

tsnative — это кроссплатформенный компилятор, преобразующий TypeScript в нативный машинный код. Он обеспечивает бесшовную интеграцию с C++ без glue-кода или JavaScript-движков, объединяя удобство высокоуровневой разработки с производительностью системного кода. В результате вы получаете один бинарник, собранный из двух языков.

Как это работает:

  • C++-функции помечаются TS_EXPORT;

  • генерируются .d.ts-декларации для TS;

  • TypeScript- и C++-код собираются через LLVM;

  • на выходе — один исполняемый файл, без обёрток.

// math.cpp
#include "TS.h"
TS_EXPORT int add(int a, int b) {
return a + b;
}
// index.ts
console.log(add(2, 3)); // -> 5
// index.ts
console.log(add(2, 3)); // -> 5

Проект может быть интересен тем, кто:

  • делает нативные приложения, но хочет писать часть логики на TS;

  • ищет замену закрытым коммерческим компиляторам;

  • любит ковыряться в сборке, кросс-компиляции и низкоуровневом коде.

Открытый код — не просто «выложили и забыли». Мы хотим, чтобы проектом пользовались, коммитили, обсуждали. Поэтому будем рады pull request’ам, issue и звёздочкам. Всё как обычно :)

Исходники на GitHub

Если у вас есть вопросы или комментарии, вы можете задать их в чате проекта: https://t.me/antiqmyoffice

Теги:
Всего голосов 33: ↑33 и ↓0+36
Комментарии12

Диалоги с ИИ в Google, локальные модели и немного паранойи⁠⁠

или почему я всё чаще задумываюсь об оффлайн-LLM

Стал смотреть в сторону локального запуска моделей. Не из-за хайпа, а скорее из-за недоверия.
Причина - не сами технологии, а то, как с ними обращаются.

Облако это удобно. Но публично, если не уследил

Недавно в Google начали всплывать реальные диалоги пользователей с Grok и ChatGPT.
Обычные ссылки на чаты, которые кто-то где-то засветил. Google их подхватил - и вот, они уже в выдаче. OpenAI убирали из индекса ~50 000 ссылок на публичные диалог, они подчистили Google, но забыли про Archive.org.
А там всё ещё висят штуки с логинами, ключами, приватными планами.

Анализ показал: из 512 чатов 20% содержали явно конфиденциальную информацию.

Поделился ссылкой? Потерял контроль

Даже если вы делитесь диалогом «только внутри команды» - дальше всё по классике:

  • может попасть в Google

  • сохраниться в Archive

  • быть расшаренной кем угодно

  • остаться в кэше навсегда

Почему вообще об этом думаю

Планирую собрать поделку: связать LLM и Obsidian.
А в Obsidian у меня почти всё личное - от заметок до чувствительных штук.

И вот тут уже важно, чтобы данные не утекали наружу, даже случайно. Поэтому и смотрю в сторону локального inference - без облаков, логов и внешнего API.

🎁 Бонусы

🧮 LocalScore.ai
Сервис, который показывает, какие LLM потянет ваша видеокарта. Удобно, если хотите запускать модель у себя - а не в чьём-то дата-центре.

🔑 ai-keys-leaks.begimher.com
Ищет утёкшие API-ключи от OpenAI, Claude, Gemini и других.
Не факт, что что-то сработает — 99% ключей мёртвые. Но наличие таких баз говорит о многом.

Я не стал параноиком. Но теперь всё, что потенциально приватно — я не пишу в облако.Потому что модель забудет, а интернет - нет.

Если тебе близка тема ИИ, агентных систем и ты хочешь быть в числе тех, кто не просто читает новости, а сам их делает — залетай в мой Telegram-канал debug_leg. 🔗 Ссылка - https://t.me/debug_leg

Теги:
Всего голосов 1: ↑0 и ↓1-1
Комментарии0

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

Теги:
Рейтинг0
Комментарии6

Со слов автора скриншота, переход из выдачи Chat GPT на сайт клиента сразу же привел к запросу на КП. Договор подписали, предоплату получили. Чек от этого клика составил около 5К долларов. Что скажут SEO-оптимизаторы, уже умеем кормить чатик? И сколько лет осталось классическому интернету?

Теги:
Всего голосов 2: ↑0 и ↓2-2
Комментарии2

Всем привет!

Как вы помните: я говорил что хочу сделать свою лисп машину.

Проект не удался из-за корпуса и проводов. Но после этого я взялся делать микрокомпьютер на графической операционной системе.

Этот проект уже получился.

Сейчас решил всё усложнить и сделал ассемблер машину.

Ввод и вывод желают оставлять всего лучшего потому что ввод идёт с помощью двух кнопок (на самом деле limit switch это называют). А эти две кнопки это 0 и 1.

Результат программы не выводится но отображается в светодиодах:

  1. Зеленый - всё правильно.

  2. Желтый - правильно но с ошибками.

  3. Красный - не правильно.

Назвал я первую ассемблер машину как "pear 8800". Почему именно груша? Во первых я люблю груши :-). Во вторых мне нравится везде ставить название "pear" и дальше что-то.

Но можно вводить код по типу такого (не один не скомпилирует ведь мой это интерпретатор но на самом деле это не так):

section .data
hello: 1
section .code
mov ret hello

Вывод: 1.

3 регистра: rsi и rdi для данных и ret для данных которые возвращает программа.

Вот так.

Теги:
Всего голосов 2: ↑2 и ↓0+2
Комментарии0

Что ты сделал для хип-хопа IT-инфраструктуры в свои годы? Писал UEFI и BMC для высоконагруженного оборудования 

В YADRO есть распределенная команда, которая разрабатывает и сопровождает собственные программные реализации UEFI (BIOS) и BMC. Для самого разного оборудования — от серверов до телеком- и клиентского оборудования. 

Что делают BIOS и BMC в продуктах
Что делают BIOS и BMC в продуктах

Познакомиться с командой → 

Какие задачи выполняют в команде BIOS/BMC: 

  • Реализуют программную поддержку новых аппаратных продуктов компании, определяют протоколы и методы взаимодействия между программными и аппаратными компонентами продуктов YADRO.

  • Проводят верификацию микрокода и выполняют проверку прошивок микросхем всех продуктов компании. Выстраивают стратегию тестирования.

  • Исследуют новые программные и аппаратные технологии для применения в продуктах. Рефакторят код для повышения производительности.

  • Придумывают методы безопасного обновления прошивок BIOS и BMC, чтобы обеспечить минимальный или нулевой даунтайм.

  • Добавляют новые фичи и меняют существующие — от WebUI до политик управления аппаратными компонентами.

Команде нужно больше инженеров — разработчиков на С/C++, тестировщиков, автоматизаторов и техлидов. Знакомься с вакансиями на сайте и вовлекайся в трушные инженерные задачи на современном технологическом стеке. 

Теги:
Всего голосов 8: ↑8 и ↓0+9
Комментарии0

API Автотесты

Ситуация: два подхода к валидации API-ответов — я использую Pydantic, считая его удобным, многофункциональным, проще поддерживаемым и современным. Мой коллега предпочитает jsonschema, не видя причин для смены, считая что он может всё тоже самое. Противостояние на совместном проекте привело к разделению зон покрытия: я взял eshop, он — pim. Я неистово топлю за Pydantic но не могу убедить коллегу...

Не тратя время на исследования, ИИ выдал базу:

  1. Удобство и поддержка — pydantic упрощает модели через аннотации, делая обновления быстрыми. jsonschema требует ручных генераций схем, что трудоемко.

  2. Производительность — pydantic в 10 раз быстрее на больших данных благодаря Rust. jsonschema медленнее при вложенных структурах.

  3. Гибкость — pydantic предлагает кастомные валидаторы и интеграцию с OpenAPI. jsonschema универсален для кросс-платформ, но кастомизация сложнее.

  4. Интеграция с тестами — pydantic легко работает с PyTest и Allure. jsonschema требует настройки.

  5. Обучение — pydantic имеет сильное сообщество (360 млн скачиваний) и документацию. jsonschema требует знания JSON-стандарта.

Вывод: Pydantic выигрывает в большинстве ситуаций, если не сказать что во всех.

Безусловно, брать ответ ИИ не рассмотрев его под лупой, на сегодняшний день, это глупо: он далеко не всегда учитывает контекст, реальный опыт и множество других факторов которые могут повлиять на правильное решение.

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

А может я не прав?

Приглашаю к обсуждению:

  1. Какой инструмент вы предпочитаете для валидации API в автотестах и почему?

  2. Бывали ли случаи, когда смешивание Pydantic и jsonschema вызвало проблемы? Или наоборот, помогало?

  3. Стоит ли разделять подходы в одном проекте, как это сделали мы?

Возможно я не так понял формат постов, т.к. ожидал тут увидеть возможность голосования как в статьях. Принять и простить)

Теги:
Всего голосов 2: ↑1 и ↓10
Комментарии1

Под пост в телеграм про наш ответ аналог Grafana пришли руководители "Лаборатории Числитель" и конкретно "Пульта", в чью систему входит платформа мониторинга и анализа "Графиня".

Дмитрий Унтила и Владимир Утратенко любезно ответили на ряд вопросов по платформе, и я хотел бы подвести краткое резюме:

  • Запрос на аналог Grafana появился в момент продажи "Пульта", так как "не всем можно брать забугорный опесорс себе в контур. Потому решили делать. А название Графиня просто ради лулзов."

  • Графиня писалась с полного нуля. Хотя предложение взять за основу Grafana было, но команда смогла обосновать геморрой, который на неё упадёт, если взяться за доработку, и объяснила руководству, почему лучше сделать с нуля.

  • Время разработки: 3 месяца - MVP, 6 месяцев - 1 релиз.

  • Технологический стек: фронтенд: TypeScript + React 18, бэкенд: TypeScript + Node.js, база данных: MongoDB, плагины: Java.

  • На мое предложение сделать проект опенсорс Дмитрий Унтила пообещал подумать. Но, понятное дело, если это часть коммерческого продукта, прям сильно думать в лаборатории не будут))

  • Демо-стенда в интернете пока нет, можно только записаться на показ системы через форму обратной связи.

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

Теги:
Всего голосов 3: ↑2 и ↓1+1
Комментарии3

10 задач, в которых AI действительно помогает QA-инженеру

Этот пост – саммари пилота нейросетей на реальном проекте. На тесте было несколько моделей: DeepSeek, Qwen, Gemma. 

Вот универсальный список задач по тестированию, с которым все они справляются хорошо:

– анализ логов и stack trace;
– поиск причин неочевидных ошибок в пайплайне;
– генерация SQL-запросов и объяснение незнакомых конструкций (например, JSONB);
– экранирование кавычек в больших XML-фрагментах;
– автоматическая генерация тест-кейсов из BPMN- или XML-схем;
– генерация случайных данных для теста;
– сравнение параметров (включая UTF-8 кодировку) при ошибках интеграции;
– проверка SQL-запросов, XSD (XML) и JSON-схем на соответствие структуре;
– подсказки по фиксам в случае ошибок, связанных с отсутствием логов;
– преобразование описаний ТЗ в чек-листы (но только если текст написан понятно и ТЗ описано подробно, подойдет не для всех и нужно внимательно ревьюить результаты);
– написание сниппетов для postman.

Вывод ожидаем: ИИ все еще не заменяет тестировщика, но ускоряет работу. Главное – не забывать проверять то, что получилось.

💬 А какие кейсы сработали у вас?

Теги:
Рейтинг0
Комментарии0

Ближайшие события

Проект Zero Day Initiative (ZDI) сообщил о проведении соревнований Pwn2Own Ireland 2025, которые состоятся в середине октября 2025 года в Ирландии. Участникам предложено продемонстрировать эксплоиты для ранее неизвестных уязвимостей (0-day) в смартфонах, мессенджерах, беспроводных точках доступа, устройствах для умного дома, принтерах, сетевых хранилищах, системах видеонаблюдения и устройствах виртуальной /дополненной реальности. Атака должна быть проведена на самые свежие программы и операционные системы со всеми доступными обновлениями и в конфигурации по умолчанию.

Мероприятие примечательно готовностью выплатить миллион долларов за выявление в мессенджере WhatsApp ошибки, позволяющей удалённо выполнить код без действия пользователя (0-click). За удалённо эксплуатируемую уязвимость в WhatsApp, требующую действий пользователя (1-click), премия составляет 500 тысяч долларов, за уязвимость, приводящую к захвату учётной записи - $150 тысяч, а за получение удалённого доступа к данным пользователя, микрофону или камере - $130 тысяч.

В категории "мобильные телефоны" за удалённую эксплуатацию уязвимости в смартфонах Google Pixel 9 и Apple iPhone 16 назначена премия 300 тысяч долларов. При этом введена новая категория - взлом устройства при подключении по USB c размером премии $75 тысяч. За удалённый взлом 3D-шлема Meta Quest 3/3S и умных очков Meta Ray-Ban назначено вознаграждение в $150 тысяч. Максимальный размер премии за взлом устройств умного дома и сетевых хранилищ составляет $50 тысяч, систем видеонаблюдения - $30 тысяч, а принтеров - $20 тысяч.

Теги:
Рейтинг0
Комментарии0

В США вместо офисных зданий и рабочих помещений начали активно строить дата-центры для ИИ.

Теги:
Всего голосов 1: ↑1 и ↓0+2
Комментарии0

🎲 Обновление бота для планирования настолок и DnD

Привет! Я сделал телеграм-бота, который помогает быстро и удобно планировать игровые сессии с друзьями — будь то настолки, DnD или что-то ещё.

🎲 Обновление бота для планирования настолок и DnD
🎲 Обновление бота для планирования настолок и DnD

Идея проста:

  • создаёте группу в боте,

  • участники отмечают, когда они свободны,

  • бот показывает, в какое время совпадают все. Больше никаких бесконечных переписок в чатах, когда «мне удобно только в среду», а у кого-то уже пятница.

💡 Что нового в последнем обновлении Я выпустил большой апдейт, который особенно пригодится игрокам в настолки и DnD:

  • ⏳ Дата окончания сессии — теперь можно указать полный промежуток времени, когда вы свободны. Например, с 14:00 до 18:00.

  • 🔁 Повторяющиеся сессии — один раз указали «понедельник с 14 до 16», и эта запись будет актуальна каждую неделю.

  • 🔔 Настраиваемые уведомления — можно включать только те напоминания, что нужны, и отключать ненужные.

  • 🗓 Новое напоминание — за день до игры бот предупредит, чтобы вы точно не забыли.

📱 Если хотите попробовать — бот бесплатный, работает прямо в Telegram.
Ссылка на бота - @game_session_scheduler_bot
Ссылка на канал с обновлениями - https://t.me/gamescheduler

Теги:
Всего голосов 1: ↑1 и ↓0+1
Комментарии0

Как сделать игру-гонки в Скретч?

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

А научиться создавать еще больше игр в Scratch можно на нашем курсе: https://pixel.study/scratch 

Видео ниже, приятного просмотра!

Теги:
Всего голосов 2: ↑1 и ↓10
Комментарии0

Представлен обучающий курс по Python под названием Advanced Python Mastery от Дэвида Бизли, автора нескольких книг-бестселлеров по этому языку программирования и одного из главных знатоков Python. В базе курса представлены данные по работе на уровне процессора и компилятора до продвинутых концепций программирования на Python и самых актуальных фреймворков, а также десятки материалов с PyCon.

Теги:
Рейтинг0
Комментарии0

Представлен открытый редактор таблиц NanoCell, который обрабатывает большие объёмы данных. При этом не нужно знать формулы и макросы. Проект помогает править документы от объёмных датасетов и финансовых данных до небольших формул для построения графиков и поиска одного значения в таблице. Решение разработал аналитик и датасайентист с многолетним стажем. Интерфейс у сервиса максимально простой и понятный. Данные сохраняется, включая все сведения и значения датасета на статическом сервере.

Теги:
Рейтинг0
Комментарии1

Как я сохранил Skype Out в 2025 году

Всем добрый день!

DISCLAIMER: Я ни разу не писал на Хабре коротких постов, так что прошу понять и простить :)

Вчера мне на почту пришло уведомление от MS, что мой кредит скоро сгорит. 13 Евро, немного, но ностальгически обидно (помню, как в ковидный год использовал Skype номер в Америке для поиска работы и фрилансной деятельности...)

Я реших проверить, можно ли сохранить кредит. Ситуация на момент августа 2025 года: Skype, по сути, отключён. Web-интерфейс больше не работает, все ссылки на загрузку клиента автоматически редиректят на Teams. Однако мне удалось сохранить доступ к Skype Out и даже совершить звонок.

1. Первое наблюдение: Skype в браузере больше не работает

Я попробовал зайти на https://web.skype.com — происходит автоматический редирект на https://teams.live.com/v2. Skype Web больше не существует для личных пользователей.

2. Сайт Skype больше не даёт скачать клиент

Переход на https://www.skype.com/en/get-skype/ заканчивается тем же: редирект на Teams. Пробовал использовать VPN, ничего не меняется.

3. Archive.org и прочие хранители дистрибутивов не спасают:

Я проверил Internet Archive и некоторые другие ресурсы. Все сохранённые версии страниц с дистрибутивами Skype вычищены. Официальных установщиков Skype на них уже нет.

4. Старый установщик

У меня сохранился старый установочный файл Skype. Версия — 8.106.0.212. Я установил его на мой ноут Wind10 без проблем. После запуска Skype предложил войти в аккаунт (и старый логин/пасс подошли).

5. Звонок на городской номер

Для теста я позвонил на мой домашний номер в Германии, а потом маме в России. Соединение установилось, деньги списались, голосовая связь была стабильной. Значит, несмотря на все попытки Microsoft перевести всех на Teams, серверная часть Skype Out пока функционирует.

Однако, на сотовые позвонить не получилось: гудки шли, но самого вызова не было.

Если у вас остался старый установщик — сохраните его. Это последняя ниточка, связывающая нас с эпохой до Teams.

Я залил мой дистриб на archive.org, посмотрим, сколько он там проживёт.

P.S. Через какое-то время Скайп клиент превратился в тыкву:

Но позвонить я до этого всё же успел :)
Но позвонить я до этого всё же успел :)
Теги:
Всего голосов 3: ↑2 и ↓1+2
Комментарии1