Как стать автором
Обновить
0.45

Я пиарюсь

Каждый имеет право на пять минут славы

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

Дорогой читатель! Обращаюсь к тебе с необычной просьбой: для преодоления кризиса жанра и в целях исследования читательских интересов и предпочтений, я решил спросить напрямую у многоуважаемого тебя: какие темы тебе были бы интересны, чего не хватает, а что в избытке и вызывает отторжение в хабр-статьях?

Это не голосование, пишите в комментариях свои соображения.

Со своей стороны я готов писать статьи на темы, близкие к рассмотренным мной ранее:

Либо на другие темы, о которых я пока ничего здесь не писал:

  • Химия, "домашняя лаборатория"

  • Физика, "домашние опыты", "как это работает"

  • DIY/Arduino

Теги:
+6
Комментарии8

Как сделать монстра, используя только клавиатуру?

Простого текстового редактора порой хватает, чтобы сделать монстров из текстовых символов в трехмерном пространстве. Нужно задать символы, их цвета и высоту. Дальше уже C# код, и Unity сделают всю работу. Заходите на страничку в Steam моего проекта Effulgence RPG, чтобы добавить в вишлист и/или записаться на плейтест.

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

Создал iOS приложение по изучению английских идиом - Idiom Catcher. SwiftUI. SwiftData. Виджет. Apple Translate (очень удобный бесплатный перевод от Apple, но только с iOS 18).

250+ идиом по категориям. В версии 1.1 добавил лёгкую геймификацию. Теперь есть возможность поучить все идиомы бесплатно. Буду благодарен за отзывы 👋

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

Наби Ибатулин: эксперт в сфере IT-разработки и бизнес-образования

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

Специалист в сфере информационных технологий с более чем 20-летним опытом и широкой экспертизой

Текущие проект

NEXTIKA - IT-компания, создающая комплексные цифровые решения для бизнеса и стартапов. Среди успешных кейсов такие клиенты, как:

 • Ак Барс Дом ЛК

 • ОбрКарта

 • ЕАПТЕКА

 • KETO №1

 • Luciaono

 • GLOBAL GROUP


Образование и квалификация

Магистр программной инженерии с подтвержденной сертификацией разработчика с 2002 года. Профессиональные компетенции регулярно обновляются в соответствии с современными требованиями индустрии.

Экспертная деятельность

С 2017 года преподаю в Казанском Федеральном университете (КФУ) по направлениям:

• Управление IT-проектами

• Архитектура информационных систем

• Оценка и минимизации IT-рисков

Автор блога в Telegram (@nabi_pro), где бесплатно делюсь практическим опытом и инсайтами из IT-сферы. Подписывайтесь, чтобы оставаться в курсе!

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

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

Старые интерфейсы мертвы (ну почти 😉).
Но почему тогда продукты продолжают строиться так, будто ничего не изменилось?

ИИ не просто дал новые инструменты, он изменил ожидания. Пользователи теперь мыслят иначе и ожидают другого.

Я собрал 10 новых эвристик — ориентиров, по которым сегодня должен проектироваться каждый современный продукт.

Это не список хотелок. Это реальность, в которой живет пользователь после взаимодействия с умными нейросетями. Конечно, с прицелом на будущее.

Новые Эвристики

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

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

Введение

ИИ-технологии радикально изменили не только способ решения задач, но и глубинные ожидания пользователей. Современный пользователь — это человек с новой "прошивкой": он уже знает, как быстро и эффективно может быть выполнена задача, если задействован ИИ. Он ждёт не функциональности, а результата. Не интерфейса, а исполнения. Не фич, а магии.

Этот манифест формулирует 10 новых эвристик, отражающих сдвиг в пользовательском восприятии ценности, удобства и нормы. 

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

1. Результат вместо функции

Пользователь хочет видеть не инструменты, а выполненную задачу. Если раньше продукт помогал делать — теперь он должен сделать.

Продукт не инструмент — он должен полностью решать задачу.

2. Мгновенная реакция как базовый UX

Время ожидания воспринимается как сбой. Даже если операция требует времени, реакция должна быть немедленной.

Если пользователь может подумать: "почему это ещё не сделано?" — вы уже опоздали.

3. Нулевая кривая обучения

Продукт должен быть понятен с первого контакта. Объяснение это уже трение.

Лучший онбординг — это его отсутствие.

4. Контекст из коробки

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

Контекст — это теперь задача системы, а не человека. Это задача и ответственность продукта, а не пользователя.

5. Адаптация, а не навигация

Пользователь ждет от продукта адаптивности. Он хочет, чтобы ему предложили оптимальный путь. 

Нет смысла в грамотной структуре продукта, если есть интуитивный маршрут.

6. Автоматизация на лету

Повторяемые действия должны исчезнуть. Если пользователь должен делать что-то повторно, значит, система не справилась. Рутина не должна даже возникать. Пользователь ждёт, что система предположит следующий шаг и выполнит его.

Максимальная автоматизация — не функция, а базовое обязательство продукта.

7. Оплата за результат, а не доступ

Модель монетизации должна соответствовать восприятию ценности. Пользователь хочет платить за решенные задачи, а не за лицензии или фичи. 

Деньги платят не за возможности, а за результаты.

8. Минимизация интерфейса

Интерфейс не должен быть в фокусе. Лучший интерфейс — это невидимый интерфейс, максимально простой интерфейс.

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

9. Проактивная коммуникация

Система должна предлагать шаги и помощь до того, как пользователь их запросит. Ожидание инициативы от системы — новая норма.

Пассивный продукт — это продукт прошлого.

10. В ожидании чуда

Пользователь запоминает продукты, которые сделали больше, чем он ожидал. Пользователь хочет не просто "удобства", а лёгкого чуда. Это рождает вау-эффект, лояльность и доверие.

Если ваш продукт не удивляет, о нем уже забыли.

***

Открыт для ваших замечаний и предложений по улучшению.

За два года научился проектировать и создавать новые продукты за 6 дней с помощью нейросетей, теперь всем показываю как я это делаю => 6 дней

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

Product Radar – площадка для самопрезентации технологических проектов, стартапов и пет-проектов, российский аналог Product Hunt. Запуски происходят каждую неделю.

Чтобы проработать стратегию выступления на ней, написал веб приложение, соскребающее каждый час данные по голосованию и показывающее его в динамике. Для расчета нужного угла атаки на будущее.

Пока запустил туда Аргуса - своего телеграм бота для распознавания и обработки текста на изображениях. Кому бот понравился - просьба проголосовать (нужно залогиниться через yandex/google). Спасибо.

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

Скажите, дорогие коллеги по веб-ресурсу, а что вы познали в свои 42?

Было ли открытие смысла жизни, вселенной и всего такого?

Помните ли вы свои предыдущие обороты вокруг звезды по имени Солнце?

Если вам чуть больше - что бы вы посоветовали хомо сапиенсу (но тут конечно вопрос большой, многие говорят, что просто хомо эректус) достигшему этого возраста сделать пока время не упущено?

Всем спасибо за советы и комментарии. Хочется войти в данный период подготовленным, поэтому вот. Совета прошу и жизненного опыта.

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

Я работаю в сфере АСУТП и при использовании SCADA систем часто возникают различные проблемы при эксплуатации.

Я думаю многие пользователи GE Proficy Historian столкнулись с проблемами, когда базовые задачи не покрывает стандартная утилита Historian Administration. Поэтому для решения проблем и примера использования SDK написал две небольшие программы.

https://github.com/OlegBezverhii/AddGEHistorianArhives - программа для массового добавления архивов из файлов в GE Proficy Historian. Иногда после сбоев Historian теряет весь список файлов, приходится вручную добавлять их через Historian Administration, который имеет ограничение не более 15 файлов за один выбор. Моя программа пробежится по указанной вами папке и добавит их в хранилище.

https://github.com/OlegBezverhii/BackuperGEArchives - программа для периодического бэкапа самого старого архива.

Надеюсь, это будет кому-то полезно.

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

Здравствуйте коллеги!🔥

В этой статье хочу подвести итоги работы проекта CutCode в уходящем, 2024 году.

Немного статистики

Начнём с youtube-канала

В этом году канал взял отметку в 14.000 подписчиков и продолжает расти, но 15.000 человек которые я мечтал увидеть на канале еще в 2023 году достигнуть снова не получилось.

Что еще по YouTube:

Telegram
Переходим к телеграмму. В чате уже 3263 разработчиков, и за год написали почти 35к сообщений. Канал CutCode - 1250 подписчиков. Также в этом году начал вести свой блог в телеграм и с Кириллом Несмеяновым сделали чат по Symfony.

Кто еще не подписан - исправляйтесь!

Что еще хотел отметить:

💣12 выпусков дайджеста новостей PHP и Laravel с Сергеем Пантелеевым! А последние 3 месяца Кирилл Несмеянов радует разработчиков новостями по Symfony!

💎Релиз админ-панели MoonShine v.3. Проект круто развивается. Наверное, главное событие в 2024 году. В недавнем опросе на Laravel World MoonShine вошел в топ-3 самых популярных админок для Laravel, немного уступив Nova и Filament.

🔥Попал на PHP Russia 2024. И вместе с Алексеем Гагариным и Сергеем Пантелеевым поснимали контент.

🔔Выпустили 4 выпуска викторины по PHP в стиле Своя Игра:
раз, два, три, финал

🖊На Habr выпущены 3 статьи по деплою web-приложений в поддержку сервиса onFriday:
раз, два, три
Суммарно 35к просмотров и 360+ закладок. Плюс неплохая статья по тайм-менеджменту.

📹Провел 10 стримов, среди которых самый выдающийся - с обзором PHP 8.4.

💼Уволился с работы чтобы ничего не отвлекало от CutCode и MoonShine.

Что сделано из планов на 2024 год:
❎ Дальнейший рост комьюнити - 17к ютуб, 3500 телеграм. По YT совсем далеко, Telegram немного не хватило.
✅ Новые курсы и новые рубрики - курс Laravel API. Новая рубрика на канале - Express советы
✅ Релиз сервиса по деплою, аналога Envoyer - запущен onFriday
✅ Личный кабинет разработчика на CutCode.dev - есть. Но пока не все функции что были задуманы реализованы
✅ Выход MoonShine на международный уровень. Выполнил. На Laravel News была новость про MoonShine. Есть канал с локализованными на английский гайдами + видео от других авторов на английском и испанском языках
❎ Печатная версия книги Laravel Ninja Guide - пока отложено из-за высокой цены себестоимости печати в небольших тиражах

Не достигать то, что задумал — болезненно, но как оказывается не смертельно.... Планы на 2025 год постараюсь сделать более объективными. Сейчас все усилия направлю на MoonShine

  • Количество ежедневных скачиваний MoonShine - 1000+

  • Релиз MoonShine HeadLess

  • провести митап По телеграмму и Ютубу (а по ВК и Rutube тем более) не хочу ставить цели. Не всё зависит от меня в этих направлениях( Обязательно продолжу заниматься популяризацией PHP и снимать новый контент на канал, будут новые рубрики

С наступающим новым годом! Желаю хорошо встретить праздник и как следует отдохнуть. Год выдался непростым. Поэтому дополнительно пожелаю чтобы 2025 оказался полегче! Ну или хотя бы короче на 1 день!

Будьте здоровы! Увидимся в следующем ролике на канале CutCode! Но уже в следующем, 2025 году! 🤟

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

Telegram-бот подстрахует ваш сайт

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

Если конкретно:

  • Нужно вовремя продлевать домен.

  • Нужно вовремя продлевать SSL-сертификат.

  • Нужно следить за балансом на хостинге.

  • Желательно периодически проверять работоспособность сайта и его основных страниц.

Примеры происшествий с сайтами из моего опыта:

  • Хостинг впал в ничтожество.

  • Разработчик перепутал папки на сервере.

  • Сайт перестал открываться под грузом DDoS-атаки.

  • Сайт взломали и разместили на нём что-то своё.

Если сайт/web-сервис сломался, то возможны такие последствия:

  • Перестают звонить потенциальные клиенты.

  • Начинают жаловаться действующие клиенты.

  • Сайт падает в глазах поисковых алгоритмов, а значит и в поисковой выдаче.

  • Рекламный бюджет тратится впустую.

Как предотвратить эти риски

  • Домен: Включить автопродление у своего регистратора и читать письма от него.

  • SSL-сертификат:Настроить автоматический перевыпуск.Поставить напоминалку в календарь, чтобы проконтролировать.

  • Баланс на хостинге:Включить автопополнение и читать письма от хостинга.

  • Работоспособность сайта:Настроить мониторинг и/или иногда заходить на него.

Вариант для подстраховки

Я написал Telegram-бота для мониторинга сайтов и вот прямо сейчас его рекламирую. Можете попробовать без регистрации и SMS.

 Вот так будут выглядеть уведомления в боте
Вот так будут выглядеть уведомления в боте
  • Бот будет следить за сроками действия домена и сертификата, заранее напомнит о продлении.

  • По 144 раза на дню будет проверять доступность сайта.

  • Сообщит об изменении заголовка страницы. Например, если деньги на хостинге закончатся, то заголовок изменится на что-то вроде “Домен не прилинкован к директории”.

  • Опционально может раз в день/неделю присылать отчёт по сайту (просто для успокоения).

Бот не заменяет собой полноценного аудита/тестирования сайта, но зато максимально прост в использовании и за 20 секунд ваших усилий предотвратит 80% проблем.

Обратная связь (даже та, которая не мажется на хлеб) очень приветствуется!

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

Привет, друзья! 👋

Как вы знаете - скоро состоится релиз MoonShine 3.0! 🚀 В честь этого события решил организовать небольшой конкурс для комьюнити.

За прошедший год многие из вас уже делились своими интересными кейсами использования MoonShine:

  1. Учёт транспорта

  2. Динамическое обновление в MoonShine

  3. Панель управления контрактами

  4. CRM для отелей

Теперь самое интересное - объявляю конкурс на самый интересный кейс использования MoonShine! 🏆

Автор лучшего кейса (которого мы выберем общим голосованием) получит настоящего PHP-слоника! 🐘 Итоги конкурса подведем через месяц голосованием. Те кто уже кейс оформили - участвуют автоматически)

План для написания вашего кейса:

  1. Расскажите о проекте и задачах, которые перед вами стояли 🎯

  2. Опишите, почему выбрали именно MoonShine и сравнить с другими решениями. Этот блок наиболее важен!

  3. Поделитесь интересными решениями и находками в процессе разработки

  4. Не забудьте про сложности, с которыми столкнулись, и как их преодолели

  5. В конце добавьте результаты внедрения и планы на будущее

Знаю, что многие из вас делают крутые проекты на MoonShine, но стесняются о них рассказывать. Самое время поделиться своим опытом с сообществом! Это отличная возможность не только показать свою экспертизу, но и помочь другим разработчикам увидеть потенциал MoonShine в различных сценариях использования.

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

Русские разработчики могут делать не хуже американских! Согласны с этим?

Да, это оффтопик — я пиарюсь и рассказываю о своём проекте. Присоединяйтесь на GitHub Discussion!

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

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

CodeAbbey выходит в Opensource. Сайт с задачами по программированию я начал строить осенью 2013. За последнее десятилетие разных ресурсов в этой теме появилоcь невообразимое количество - от LeetCode до Hyperskill. Так что скромный CodeAbbey мало чем выделяется - кроме несколько архаичного дизайна и горстки задач оригинального типа. Упражнения на Brainfuck и машину Тьюринга, интерактив с Атакой Пришельцев, также задачи в которых нужно делать ходы HTTP-запросами на сервер, и наоборот написание веб-краулера.

В начале лета 2024 возникла дискуссия, как сохранить сайт (там ведь и от пользователей уже задач набежало) - на случай если со мной что-то случится :)

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

Поэтому я засучил рукава и стал рефакторить код, выкладывая его по шагам на гитхаб. Каждый шаг получал отдельную ветку и некоторое описание - чтобы легче было поэтапно разобраться что к чему. Уже выложен весь основной функционал - с видео-инструкцией "как за полчаса задеплоиться на бесплатном хостинге". Теперь каждый может запустить подобный сайт для школы или ВУЗа, для коллег по работе.

По ходу оказалось что можно немало рассказать о разных технических мелочах придуманных для сайта. Правда пока не понял можно ли это делать в соответствии с правилами Хабра - можете прояснить в комментариях, кто разбирается :)

(cсылка на код в гитхабе найдётся в футере сайта)

Теги:
Всего голосов 4: ↑4 и ↓0+7
Комментарии0
Вниманию любителей воскрешать индикаторы, экраны и морские радары — два таких красавца. На хранение убирал живыми и с неплохой эмиссией. Обвязка, увы, «всё».
Вниманию любителей воскрешать индикаторы, экраны и морские радары — два таких красавца. На хранение убирал живыми и с неплохой эмиссией. Обвязка, увы, «всё».

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

Это осциллограф на ЭЛТ от монитора. Суть несложная — поворачиваем старичка вертикально, на кадровую развёртку (у которой обмотки с большой индуктивностью и на высокую частоту их не раскачаешь) подаём от 30 до сколько уж там выдержит герц «пилы». Получается ось X.

На бывшую строчную — исследуемый сигнал, в последнем каскаде лепим дико высоковольтный транзистор (которые и производились в своё время именно затем, чтобы остановить злобную самоиндукцию строчной развёртки), токоизмерительный шунт, с шунта заводим потенциал на ООС — получаем преобразователь входных вольт в выходные амперы (которые в отклоняющей катушке). Транзистор, наверное, придётся охлаждать Ниагарским водопадом :-D Но строчная уже спокойно может разглядеть и отработать не один десяток килогерц, что делает прибор уже более чем просто сувениром :) По крайней мере, на оси Y звук мы уже разглядим.

Через мелкую ёмкость измеряем первую производную от входного сигнала и её модуль закидываем на, правильно, Z. Чтобы не прожечь люминофор при рисовании прямой, но чтобы было что-то видно при бешено мечущемся уровне. Можно ещё пушки переключать, чтобы было три входа, работающих по очереди.

Разумеется, если у вас какие-то свои идеи развлечений с этими дудками — welcome :) А я и так задолжал тут пару обещанных статей, если не больше :( На такие вещи, как это чудо-юдо — меня уже никогда, видимо, не хватит… короче, #отдамдаром.

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

Anthropic сегодня внезапно выкатила текстовую нейросеть Sonnet 3.5 - очень интересный апгрейд Sonnet 3.

По большинству метрик она превосходит предыдущую топовую модель Claude 3 Opus, а также OpenAI GPT-4o - а по цене она как предыдущий Sonnet, т.е. в меру дешево. Контекст тоже большой, как и у предыдущей Sonnet - 200 000 токенов.

Уже подключил её себе на сервис VseGPT - т.к. делаю доступ через вебчат и OpenAI API из России к топовым нейросетям, включая GPT-4o, Claude, Gemini Pro и всякий опенсорс.

Еще пишу на Хабр про то, как подобрать нейросеть под свои задачи - и, похоже, сегодня появился сильный фаворит, осталось понять, где он лучше всего работает :)

Вот метрики для сравнения Sonnet 3.5 с другими топовыми моделями - надо сказать, впечатляет:

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

Кому нужно, свежая модель GPT-4o уже доступна из России по API через мой сервис, на котором я собираю разные текстовые нейросетевые модели.

Работает, короче :)
Работает, короче :)

Там же есть Claude 3 Opus, Google Gemini и вся прочая веселая классика.

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

Привет, читатель! Хочу поделиться обзором новой версии open-source проекта Wunjo, который почти готов к выпуску, осталось лишь устранить мелкие недочеты. Основной функционал v1 приложения: замена лиц, анимация губ, рестайлинг видео, удаление объектов и текста, синтез речи, клонирование голоса. Проект создан для автоматизации процесса создания контента. Например, я его использую для создания образовательных видео. Кейсы применения в видео ниже. Но есть и исследовательская идея с объединением как можно большего числа нейронных сетей вместе, их уже насчитывается 40, но и это не предел. Если вам интересно, как появился проект, то это здесь можно почитать.

В приложении доступно API для интеграции с вашим собственным кодом. В новом видео я показываю обновленный интерфейс и новые возможности.

Чтобы узнать больше, ознакомьтесь с журналом изменений в README на GitHub. Версия v1 уже доступна на сайте, пока мы ждем версию v2.

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

Поддержите проект звездой на GitHub – осталось немного до 1000! И следите за новостями в Telegram. Ваша поддержка ускорит выпуск новой версии. И до скорой встречи в v2!

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

Блин, Хабр! Я полчаса писал комментарий на комментарий, перепроверяя каждое слово гуглежом. Нажимаю отправить — позавчерашняя статья убрана в черновики! Фу так делать!

Пишу здесь комментарий ни к селу ни к городу ни о чём.

‑--‑--‑--‑--

Современные embedded языки имеют такие правила типизации, которые позволяют в тестах перебрать все возможные варианты значений или хотя бы категории вариантов (типа как для int: -1,1,0,min_int, max_int).

В Си и других языках той эпохи в любой аргумент (указатель) любой функции может прилететь nullptr, но в большинстве функций это никак не обрабатывается, потому что программист решил, что до сюда nullptr никак не долетит. Но по правилам языка может. Из‑за этого невозможно проверить покрытие тестами всех вариантов,потому что все возможные варианты даже по задумке работать не должны.

Си это не про надёжно. Си это про быстро летает и авось не упадёт.

С++11 пришёл и сел в ту же кучу, сделав допустимым shared_ptr<MyClass> sptr(nullptr); Его, конечно, можно запретить в своём проекте, но там ещё много чего учесть придётся, в итоге модерновый С++ тоже не тестируемый язык.

Почему я докапываюсь именно до Си? Потому что бортовое ПО всех трёх самолётов, где погибли люди из‑за ошибки в ПО было написано на Си и Ada. В том числе в 2018 году. Потому что всегда ж на них писали.

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

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

Вклад авторов