Все потоки
Поиск
Написать публикацию
Обновить
350.22

Open source *

Открытое программное обеспечение

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

Совет по Joomla: метод debug() для отладки лейаутов

В Joomla есть понятие layout. Это кусочек вёрстки, который можно многажды использовать в любом месте сайта: как в панели администратора, так и во фронтенде. Можно рассматривать лейауты как оторванные от контекста элементы дизайна. Находятся они в папке layouts в корне сайта. Также, в случае с модулями они могут находиться в папке tmpl модуля. А в случае с плагинами - в tmpl плагина.

Их можно переопределять в шаблонах, в чём и заключается одна из главных фишек Joomla. Лейауты чаще всего рендерятся с помощью классов LayoutHelper или напрямую FileLayout. Писал о них ранее тут и тут.

А вот как увидеть какой именно файл переопределения используется? Сколько их вообще есть и по каким путям идёт поиск макетов? Для этого есть метод debug() (и у LayoutHelper и у FileLayout).

<?php
/**
* Method to render a layout with debug info
*
* @param   string  $layoutFile   Dot separated путь к файлу относитеьлно basePath
* @param   mixed   $displayData  Объект с данными для рендера
* @param   string  $basePath     Base path, где будет поиск файлов лейаутов
* @param   mixed   $options      Дополнительные опции для FileLayout
*
* @return  string
*
* @since   3.5
*/
public static function debug($layoutFile, $displayData = null, $basePath = '', $options = null)
{
 // Так проще показать параметры метода.
}

То есть мы в можем проверить следующим образом:

<?php
/**
 * Получаем параметры баннера
 */
$wt_custom_menu_item_banner = $menu->getParams()->get('wt_custom_menu_item_banner');

echo \Joomla\CMS\Layout\LayoutHelper::debug(
        ($wt_custom_menu_item_banner?->pluginlayout ?? 'default'),
        ['wt_custom_menu_item_banner' => $wt_custom_menu_item_banner],
        JPATH_SITE.'/plugins/system/wt_custom_menu_item_banner/tmpl'
    );

И увидим результат как на скриншоте в начале поста.

Чат русскоязычного Joomla-сообщества.

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

E-mail шаблоны Joomla 5: добавление и просмотр своих переменных

В Joomla 5 появились настраиваемые email-шаблоны, как системные, так и сторонних компонентов. Их нельзя (пока что) добавить самостоятельно, они добавляются расширениями при установке. Но их можно отредактировать в Система - Шаблоны - Шаблоны писем. В настройках шаблонов писем (кнопка настроек компонента в верхнем правом углу) мы выбираем формат писем текст или HTML. Тогда становятся доступны настройки макетов шаблонов писем Joomla. Эти глобальные параметры можно переопределить в каждом конкретном email-шаблоне. Таким образом для каждого из email-шаблонов можно указать свою вёрстку и настройки логотипа.
Это, конечно, требует отдельной подробной статьи...

Для разработчиков: как добавить свои переменные для e-mail шаблонов Joomla?

Полезны окажутся 2 триггера для плагинов: onMailBeforeTagsRendering и onMailBeforeRendering.

onMailBeforeRendering - триггер, который позволяет добавлять свои шорт-коды для строковой замены в плагине. Отдать туда надо массив вида [ variable_name => variable_value ]. Из админки свои переменные нужно добавлять уже с фигурными скобками: {variable_name} заменится на variable_value. Аргументом $event плагина является экземпляр класса BeforeRenderingMailTemplateEvent, в котором есть кроме прочих 2 метода: getTemplate() (получение объекта мейлера, куда можно добавлять свои данные) и getTemplateId() (получение id шаблона письма вида com_users.registration.admin.new_notification), по которому мы определяем нужный ли это для нас email-шаблон или нет. Аналогично контексту в контент-плагинах.

Также полезное свойство класса для передачи данных из плагина в лейаут письма для рендера - $layoutTemplateData. Это ассоциативный массив.

// Получаем текущий мейлер 
$mailTemplate = $event->getTemplate();
$data = [
   'variable_name' => 'variable_value'
];
// с Joomla 4 для всех типов писем. 2-й аргумент - plain - текстовый формат письма 
$mailTemplate->addTemplateData($data, false);
// с Joomla 5.2 - для HTML-писем
$mailTemplate->addLayoutTemplateData($data);

// пример из ядра Joomla
// Add additional data to the layout template
$this->addLayoutTemplateData([
    'siteName' => $app->get('sitename'),
    'lang'     => substr($this->language, 0, 2),
]);

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

Чат Joomla-сообщества в Telegram

Мой личный Telegram-канал

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

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

  • Время дискретизации не всегда может оказаться фиксированным

  • проблемы с дискретным дифференцированием

  • проблемы с дискретным интегрированием

Попробуем посмотреть, как обстоят дела с решением этих проблем при реализации в доступных open source проектах на гитхабе.

Топ 16 проектов на гитхабе с заявленной реализацией PID алгоритма

Топ выбирался по запросу PID в поиске гитхаба с опцией "best match"

Из 16 проектов 4 являются откровенным мусором, студенческой липой, иначе трудно объяснить такое количество звезд и форков.

GyverPID добавлена по причине относительно широкой известности в аудитории отечественных ардуинщиков.

Буду благодарен, если в комментах укажут другие достойные реализации PID регулятора

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

В конце прошлого года Группа Arenadata выпустила обновления ряда своих продуктов.

Новые релизы:

  • Arenadata DB (ADB) — v6.27.1.59;

  • Arenadata DB Backup Manager (ADBM) — v2.3.2;

  • Arenadata DB Control (ADBC) — v4.11.0;

  • Arenadata Streaming (ADS) — v3.6.2.2.b1;

  • Arenadata Catalog (ADC) — v0.8.0;

  • Arenadata Cluster Manager (ADCM) — v2.5.0.

Обновления компонентов Arenadata Cluster Manager (ADCM):

  • Arenadata Monitoring (ADM) — v4.1.0;

  • Arenadata Enterprise Tools (ADET) — v2024121800.

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

⛓ Текст обзора и ссылки на полное описание релизов здесь.

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

Учим английский и одновременно тренируем слепую печать на тренажере. Представлен бесплатный сервис, который поможет увеличить кодерскую продуктивность в разы и сэкономит рабочие часы:

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

  • Множество упражнений для развития скорости печати.

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

  • Можно отслеживать скорость и ритмичность печати.

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

Полезные советы от разработчика OpenSearch Даниила Дубровкина из AWS.

Вы смотрели The IT Crowd? Это уморительный британский телевизионный ситком примерно 2006 года, в котором группа ИТ‑гениев работала в отделе технической поддержки Reynholm Industries в Лондоне. Один из характерных смешных моментов заключается в том, что каждый раз, когда звонил телефон, Рой брал трубку и, не дожидаясь ответа, спрашивал: «Вы его выключили и снова включили?», а затем вешал трубку. Я часто чувствую себя Роем, когда общаюсь с пользователями, сообщающими об ошибках в проектах с открытым исходным кодом, которые я поддерживаю.

Вот мой структурированный подход к любым ошибкам (багам, проблемам), о которых сообщают в моих проектах с открытым исходным кодом:

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

  2. Не пытайтесь воспроизвести ошибку. Не уверены, что это ошибка? Не можете воспроизвести проблему? Вежливо запросите дополнительную информацию или разъяснения.

  3. Не пытайтесь написать тест, который докажет, что это ошибка. Попросите человека, сообщившего о проблеме, попытаться написать автоматизированный и провальный тест. Это поможет сузить круг проблем и гарантировать, что ошибка останется исправленной в будущем.

  4. Не исправляйте ошибку. Теперь, когда человек, сообщивший об ошибке, написал для неё автоматизированный тест, он так близок к её исправлению. Попросите его сделать это. Это дает человеку, сообщившему об ошибке, чувство причастности и вклада в проект.

  5. Не делайте ничего другого. Не можете получить никакого участия в устранении ошибки от человека, сообщившего о ней? Оставьте ошибку открытой. Кто‑то другой её подхватит.

tl;dr Не исправляйте ошибку! У здорового проекта с открытым исходным кодом будет много вовлечённых участников, особенно когда дело касается ошибок. Это один из самых простых плодов, которые вы можете собрать как сопровождающий. Тем не менее, иногда я просто хочу исправить ошибку сам, потому что это так интересно.

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

ИИ и Open Source — гремучая смесь?

На The Register вышла статья о том, что Python-разработчики завалены баг-репортами, которые придумал ИИ: это стало известно при анализе опенсорс-кода, который часто переиспользуется в сотнях проектов. Это не первая претензия к ИИ. Значит ли это, что он не подходит для разработки? Или всё же существуют способы, которые могут облегчить жизнь программистам, несмотря на его недостатки?

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

Ранее исследователь ИБ сообщал, что галлюцинации ИИ, используемого для генерации технической документации, позволили ему внедрить в описание название фейковой библиотеки для распознавания лиц. Её скачали 15 000 раз: будь она создана хакером, тот мог бы вложить в нее практически любую функциональность.

Кажется, что ИИ в разработке преследуют проблемы, причём связаны они с опенсорсом. Это не так. Во-первых, опенсорс — на виду, проблемы в нем проще. И ещё важнее, что галлюцинации — это не порождение ChatGPT. Ещё годы назад галлюцинации преследовали ИИ, например, стрекоза иногда распознавалась как ружьё — ну что в них похожего?! Зато сейчас мало кто возьмётся соревноваться с ИИ в скорости и точности распознавания, может, и в разработке эти недочёты удастся решить.

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

🎉 Релиз MoonShine v3 админ панели для Laravel! 🎉

Друзья, у нас праздник!

10 декабря наконец-то зарелизили MoonShine v3 (open-source панели администратора для проектов на Laravel).

Кто не вкурсе, вот статьи:

Первый взгляд на MoonShine

MoonShine 2.0. Что нового?

Это было непросто. Пришлось отложить дату релиза, но зато успел всё сделать что запланировано. 🔥

Что было на стриме:

  • 🕰 Краткая история создания MoonShine — от первых шагов до сегодняшнего дня.

  • 🚀 Релиз на GitHub, деплой новой версии лендинга и документации.

  • 🛍 Демонстрация маркетплейса приложений для MoonShine

Обязательно посмотрите запись стрима! Вы не только узнаете больше о MoonShine, но и вдохновитесь на свои проекты.

🎥 Ссылка на стрим

Немного выдохну, и сделаю подробный разбор по возможностям MoonShine v3.

Сайт проекта - https://moonshine-laravel.com/

Чат в телеграм - https://t.me/moonshine_ru

#MoonShine #релиз #CutCode

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

Исследовал интернет и наткнулся на GitHub Unwrapped. Он на основе активности в GitHub создаёт видео, где можно увидеть часто используемые языки, часы спонтанной работы, звёзды и всё остальное. Достаточно ввести только имя профиля, чтобы получить видео. Код открыт.

Сделано с использованием Remotion — тоже с открытым кодом, которая позволяет автоматизировать создание видео на React в веб. Документация хорошая, но надо разбираться. Увидел это и решил, что круто, надо поделиться!

P.S. Моя активность в этом ролике, если кому-то будет интересно.

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

🤒 Оптимизация электропотребления в Linux

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

Рассмотрим 3 инструмента:

  1. Один из самых популярных — TLP

TLP (The Linux Power Management). Мощный инструмент, много гибких настроек для процессора, дисков, сетевых интерфейсов и т.д. Хорошая документация. TLP работает в фоновом режиме, после настройки все будет работать само. Существует удобный TLPUI, чтобы не менять конфиги руками. Автоматически переходит в режим экономии при подключении зарядки.

+ Много гибких параметров

+ Автоматическое адаптивное управление

+ Разные типы устройств

- Возможно, надо будет доп настраивать для некоторых систем (на моем Lenovo Ideapad например пришлось читать вот это, благо дока хорошая)

- Необходимость обновления (сомнительно)

  1. Самый эффективный — auto-cpufreq

Автоматически управляет частотой процессора исходя из нагрузки и состояния батареи. Якобы сильно эффективнее и лучше TLP. Может работать вместе с ним, хотя и не рекомендуется.

+ Простота использования — достаточно запустить и забыть

+ Интеграция с другими инструментами

+ Постоянное обновление частоты процессора в зависимости от нагрузки

- Может потребовать доп настройки

- Требует админских прав для работы (сомнительно)

  1. От корпорации зла — Power Profiles Daemon (ppd)

Power Profiles Daemon — три режима работы (производительность, сбалансированный, экономия), между которыми можно переключаться. По умолчанию во всех DE именно он находится в виджете "батарея". Сделан Red Hat.

+ Интеграция с системой

+ Поддержка различных профилей питания

+ Легкость использования через графический интерфейс

— Менее гибок, чем перечисленные выше

Я по итогу выбрал auto-cpufreq и tlp (только потому, что ограничивает заряд батареи)
Если вам есть что сказать, с удовольствием пообщаемся в комментах :)

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

Привет! Сегодня мы хотим представить программу для контрибьюторов Diplodoc — опенсорс-платформы Яндекса для создания документации в формате Docs as Code. Это ваш шанс внести значимый вклад в развитие платформы и получить классные призы за участие.

Мы предлагаем

Мы создали специальную подборку задач, которые вы можете решать, чтобы помочь нам улучшить платформу. Задачи доступны на разных уровнях сложности: easy, medium и hard. Это отличная возможность проявить себя, внести свой вклад в проект и получить заслуженные награды.

Вы получаете

За решение лёгких и средних задач мы подготовили стильный мерч Diplodoc. А за сложные задачи вы вдобавок получите промокод на использование ресурсов Yandex Cloud.

FAQ

Как выбрать задачу?

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

Как отправить решение?

Подготовьте PR с вашим решением. Наша команда проверит его. Если в итоге он будет принят, вы получите подарок.

Сколько задачек можно решить?

Сколько угодно, однако приз вы получите только за одно решение.

До какого числа действует программа?

Программа активна до конца января. Мы будем добавлять задачи, так что следите за обновлениями в нашем чате в Telegram!

Не упустите возможность внести свой вклад в будущее Diplodoc!

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

Привет, Хабр!

Довольно часто на разных ресурсах попадаются посты в духе «Linux глазами пользователя Windows». Где обычно описывается, как же не привычно всё выглядит, насколько это сложный и травмирующий опыт для пользователя. О чувстве неполноценности нового опыта. Но что если мы посмотрим на этот процесс с обратной стороны.

Сам я перешёл на Linux ещё во времена, когда актуальной была Windows XP, и с тех пор не касался в домашнем использовании продукции Microsoft. И вот у меня в руках оказался ноутбук, на который необходимо заново поставить и настроить Windows 10.

Первая сложность, с которой я столкнулся,- это собственно создание загрузочной флешки. Когда мы создаём загрузочную флешку для установки дистрибутива Linux, то просто записываем дисковый образ, и готово. С Windows так не получится: всё начинается с того, что потребуется использовать специальное ПО, к примеру, WoeUSB.

После того как успешно установили ОС и компьютер включился мы попадаем в мир чистого GUI. Никаких менеджеров пакетов, только файлы с расширением «exe» и магазин приложений. Нельзя просто добавить репозиторий с нужной программой и потом установить её одной командой.

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

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

LibreOffice и Linus mode = on

После событий в ядре linux с удалением российских мейнтейнеров мне стало не очень хорошо в связи с предчувствиями, что это коснется всего опенсорца рано или поздно, но я никак не ожидал, что в LibreOffice я увижу первое подтверждение своим опасениям. Итак, Michael Meeks, глава Collabora Productivity, сотрудники которой делают половину вклада в LibreOffice недавно в своем блоге написал такое:

Impressed to read about the expulsion of Russian maintainers from the Linux Kernel by gregkh, with rationale from James. Raising awareness of the origin of critical software used in your supply-chain is important, even if FLOSS - sad as it may be for various blameless individuals.

В вольном переводе от ГуглТранслятинга это будет как-то так:

Впечатлен, прочитав об изгнании российских мейнтейнеров из ядра Linux от gregkh, с обоснованием от James. Повышение осведомленности о происхождении критического программного обеспечения, используемого в вашей цепочке поставок, важно, даже если это FLOSS - как бы грустно это ни было для различных невиновных людей.

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

ОпенСорц он не для всех Опен, к сожалению получается так.

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

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

Всем привет! Кто хочет поучиться кодить на Rust присоединившись к Open Source проекту?
Проект rustsn представляет собой инструмент на языке Rust, который выполняет следующие функции:

  • Генерация, компиляция и тестирование кода с использованием моделей машинного обучения (LLMs).

  • Разрешение зависимостей.

  • Предоставление объяснений существующего кода с помощью встраиваний (embeddings).

https://github.com/evgenyigumnov/rustsn

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

И для этого не нужен SAP. Кому интересна тема автоматизации производства и управления потребности в материалах на производстве MRP может посмотреть работу MRP системы в реальности.

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

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

Подключайтесь к вебинару «Практикум Cloud.ru Evolution: знакомство с облаком».

📅 Когда: 15 октября в 11:00 мск

📍 Где: онлайн

Cloud.ru Evolution — публичное облако, построенное на собственных разработках и свободно распространяемых компонентах, которое отлично подойдет для тестирования и разработки на виртуальных машинах, создания cloud native приложений и безопасной публикации в интернете.

На вебинаре вы узнаете все нюансы облачной платформы Cloud.ru Evolution: в прямом эфире подробно расскажем про сетевые и вспомогательные сервисы, поддержание безопасности и работу с виртуальными машинами. А еще в формате демо покажем, как развернуть сайт на WordPress в облаке.

Программа встречи:

  • обзор основных облачных сервисов Cloud.ru Evolution;

  • обзор облачных сервисов, которые скоро появятся на платформе;

  • как выглядит базовая архитектура для миграции сайта или интернет-магазина в облако;

  • как перенести сайт и стабильно работать в любой период;

  • ответы на вопросы участников.

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

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

Оставляйте вопросы по теме в комментариях под этим постом 👇 — спикеры ответят на них в процессе встречи. 

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

Ускорение Youtube в Линукс - обновление по состоянию на 22.09.2024 скрипта для простой установки/настройки ПО bol-van/zapret.

Сделал обновление по состоянию на 22.09.2024 скрипта для простой установки/настройки ПО bol-van/zapret из исходников для нормальной работы Youtube в Линукс из моего поста от 10.08.2024, т.к. обновился и сам bol-van/zapret и его актуальные настройки.

Два архива  Скрипты для Ubuntu-based ОС, скрипты для Red-Hat-based ОС. Проверенно на Linux Mint 20.1 "Ulyssa" и "Fedora 40" соответственно. В каждом архиве три скрипта: скрип-установщик, скрипт обновления bol-van/zapret(не изменящий его настройки), и скрипт деинсталятор.

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

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

Совет о Joomla: использование FileLayout для рендера элементов макета.

Этот механизм используется под капотом Joomla для рендера отображения почти всех элементов интерфейса как фронта, так и админки. Обычно переиспользуемые "запчасти" выносятся в отдельные файлы: кнопки, тулбары, меню, табы и т.д. Для унификации отображения каждого элемента нужны некие данные данные и/или параметры: например, заголовок таба, надпись или onclick для кнопки, CSS класс и т.д.

<?php
use Joomla\CMS\Layout\FileLayout;

/**
 * Method to instantiate the file-based layout.
 *
 * @param   string  $layoutId  Dot separated путь к файлу, включая имя файла относительно base path
 * @param   string  $basePath  Основной путь к папке с макетами
 * @param   mixed   $options   Данные, нужные для работы макета. Registry или массив
 *
 * @since   3.0
 */
 $layout = new FileLayout('layout_file_name', JPATH_SITE . '/path/to/your/layout', ['buttonName' => 'Button name']);
// Рендерим наш макет
echo $layout->render();

Внутрь файла (/path/to/your/layout/layout_file_name.php в нашем случае) передаются данные и параметры для рендера. Получить эти данные можно следующим образом.

<?php
// Это содержимое файла /path/to/your/layout/layout_file_name.php
// Переданные данные приходят в формате Registry. Можно указать значение по умолчанию
$buttonName = $this->options->get('buttonName', 'Default name if value is empty');
?>
<button class="btn btn-primary"><?php echo $buttonName;?></button>

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

Linux-разработчик стал жертвой сваттинга после критики Rust на стриме

Гражданин Германии Rene Rebé, участвующий в разработке Linux, получил отряд полиции к себе домой из-за анонимного электронного письма, отосланного неким недробожелателем в местный полицейский участок. Полицейские осмотрели дом, надели на Rene наручники и около часа продержали в участке.

Незадолго до этого Rene во время стрима подверг критике язык программирования Rust и решение включить его в ядро Linux. В комментариях на Reddit и Youtube многие считают, что именно это послужило причиной анонимного ложного доноса на разработчика.

Сам Rene в описании к видеоролику иронично предположил, что это благодарность за 25 лет его работы в опенсорсе.

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

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

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