<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>http://digida.mgpu.ru/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Afonbro</id>
	<title>Поле цифровой дидактики - Вклад [ru]</title>
	<link rel="self" type="application/atom+xml" href="http://digida.mgpu.ru/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Afonbro"/>
	<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php/%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%92%D0%BA%D0%BB%D0%B0%D0%B4/Afonbro"/>
	<updated>2026-05-22T22:28:47Z</updated>
	<subtitle>Вклад</subtitle>
	<generator>MediaWiki 1.44.0</generator>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=%D0%98%D0%BD%D1%82%D0%B5%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D0%B2%D0%BD%D0%B0%D1%8F_%D0%BA%D0%B0%D1%80%D1%82%D0%B0_%D0%B2%D1%83%D0%B7%D0%BE%D0%B2_%D0%9C%D0%BE%D1%81%D0%BA%D0%B2%D1%8B&amp;diff=46164</id>
		<title>Интерактивная карта вузов Москвы</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=%D0%98%D0%BD%D1%82%D0%B5%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D0%B2%D0%BD%D0%B0%D1%8F_%D0%BA%D0%B0%D1%80%D1%82%D0%B0_%D0%B2%D1%83%D0%B7%D0%BE%D0%B2_%D0%9C%D0%BE%D1%81%D0%BA%D0%B2%D1%8B&amp;diff=46164"/>
		<updated>2026-04-14T07:42:05Z</updated>

		<summary type="html">&lt;p&gt;Afonbro: Новая страница: «категория: RRecipe категория: Scripting Tutorials == Описание проекта ==  Этот проект демонстрирует создание &amp;#039;&amp;#039;&amp;#039;интерактивной карты ведущих вузов Москвы&amp;#039;&amp;#039;&amp;#039; с помощью языка &amp;#039;&amp;#039;&amp;#039;R&amp;#039;&amp;#039;&amp;#039; и библиотеки &amp;#039;&amp;#039;&amp;#039;leaflet&amp;#039;&amp;#039;&amp;#039;. Скрипт упакован в один файл и не требует внешних источников данных...»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[категория: RRecipe]]&lt;br /&gt;
[[категория: Scripting Tutorials]]&lt;br /&gt;
== Описание проекта ==&lt;br /&gt;
&lt;br /&gt;
Этот проект демонстрирует создание &#039;&#039;&#039;интерактивной карты ведущих вузов Москвы&#039;&#039;&#039; с помощью языка &#039;&#039;&#039;R&#039;&#039;&#039; и библиотеки &#039;&#039;&#039;leaflet&#039;&#039;&#039;. Скрипт упакован в один файл и не требует внешних источников данных — вся информация (названия, адреса, координаты и ссылки на сайты) уже включена в код.&lt;br /&gt;
&lt;br /&gt;
Проект наглядно показывает:&lt;br /&gt;
&lt;br /&gt;
*   работу с пакетом &amp;lt;code&amp;gt;leaflet&amp;lt;/code&amp;gt; для создания веб-карт;&lt;br /&gt;
*   использование &amp;lt;code&amp;gt;dplyr&amp;lt;/code&amp;gt; для манипуляции данными;&lt;br /&gt;
*   создание интерактивных маркеров с группировкой в кластеры;&lt;br /&gt;
*   формирование HTML-содержимого для всплывающих подсказок.&lt;br /&gt;
&lt;br /&gt;
Карта отображается прямо во встроенном браузере RStudio (вкладка Viewer) и может быть сохранена в автономный HTML-файл.&lt;br /&gt;
&lt;br /&gt;
== Необходимые инструменты ==&lt;br /&gt;
&lt;br /&gt;
*   &#039;&#039;&#039;R 4.0+&#039;&#039;&#039;&lt;br /&gt;
*   &#039;&#039;&#039;Пакеты:&#039;&#039;&#039; leaflet, dplyr, htmltools&lt;br /&gt;
&lt;br /&gt;
=== Установка пакетов ===&lt;br /&gt;
&lt;br /&gt;
При первом запуске скрипт автоматически проверит наличие пакетов и установит недостающие из CRAN.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;r&amp;quot;&amp;gt;&lt;br /&gt;
if (!require(leaflet)) install.packages(&amp;quot;leaflet&amp;quot;)&lt;br /&gt;
if (!require(dplyr)) install.packages(&amp;quot;dplyr&amp;quot;)&lt;br /&gt;
if (!require(htmltools)) install.packages(&amp;quot;htmltools&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Полный код скрипта ==&lt;br /&gt;
&lt;br /&gt;
Сохраните следующий код в файл с расширением &amp;lt;code&amp;gt;.R&amp;lt;/code&amp;gt; (например, &amp;lt;code&amp;gt;moscow_universities_map.R&amp;lt;/code&amp;gt;) и выполните его в RStudio.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;r&amp;quot; line&amp;gt;&lt;br /&gt;
# Интерактивная карта ведущих вузов Москвы&lt;br /&gt;
# Проект по программированию на R&lt;br /&gt;
&lt;br /&gt;
# 1. Установка и загрузка необходимых пакетов&lt;br /&gt;
if (!require(leaflet)) install.packages(&amp;quot;leaflet&amp;quot;)&lt;br /&gt;
if (!require(dplyr)) install.packages(&amp;quot;dplyr&amp;quot;)&lt;br /&gt;
if (!require(htmltools)) install.packages(&amp;quot;htmltools&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
library(leaflet)&lt;br /&gt;
library(dplyr)&lt;br /&gt;
library(htmltools)&lt;br /&gt;
&lt;br /&gt;
# 2. Создание набора данных с координатами вузов&lt;br /&gt;
universities &amp;lt;- data.frame(&lt;br /&gt;
  name = c(&lt;br /&gt;
    &amp;quot;МГУ имени М.В. Ломоносова&amp;quot;,&lt;br /&gt;
    &amp;quot;НИУ «Высшая школа экономики»&amp;quot;,&lt;br /&gt;
    &amp;quot;МФТИ (Физтех)&amp;quot;,&lt;br /&gt;
    &amp;quot;МГТУ им. Н.Э. Баумана&amp;quot;,&lt;br /&gt;
    &amp;quot;НИЯУ «МИФИ»&amp;quot;,&lt;br /&gt;
    &amp;quot;РУДН&amp;quot;,&lt;br /&gt;
    &amp;quot;МГИМО МИД России&amp;quot;,&lt;br /&gt;
    &amp;quot;РЭУ им. Г.В. Плеханова&amp;quot;,&lt;br /&gt;
    &amp;quot;Финансовый университет&amp;quot;,&lt;br /&gt;
    &amp;quot;РАНХиГС&amp;quot;,&lt;br /&gt;
    &amp;quot;РГГУ&amp;quot;,&lt;br /&gt;
    &amp;quot;Первый МГМУ им. И.М. Сеченова&amp;quot;&lt;br /&gt;
  ),&lt;br /&gt;
  lat = c(&lt;br /&gt;
    55.702,   # МГУ (Главное здание на Воробьёвых горах)&lt;br /&gt;
    55.755,   # ВШЭ (Покровский бульвар)&lt;br /&gt;
    55.712,   # МФТИ (Долгопрудный)&lt;br /&gt;
    55.766,   # МГТУ им. Баумана&lt;br /&gt;
    55.757,   # МИФИ&lt;br /&gt;
    55.648,   # РУДН&lt;br /&gt;
    55.672,   # МГИМО&lt;br /&gt;
    55.728,   # РЭУ им. Плеханова&lt;br /&gt;
    55.799,   # Финансовый университет&lt;br /&gt;
    55.671,   # РАНХиГС&lt;br /&gt;
    55.775,   # РГГУ&lt;br /&gt;
    55.727    # Сеченовский университет&lt;br /&gt;
  ),&lt;br /&gt;
  lng = c(&lt;br /&gt;
    37.530,   # МГУ&lt;br /&gt;
    37.652,   # ВШЭ&lt;br /&gt;
    37.518,   # МФТИ&lt;br /&gt;
    37.679,   # МГТУ&lt;br /&gt;
    37.668,   # МИФИ&lt;br /&gt;
    37.520,   # РУДН&lt;br /&gt;
    37.486,   # МГИМО&lt;br /&gt;
    37.629,   # РЭУ&lt;br /&gt;
    37.596,   # Финуниверситет&lt;br /&gt;
    37.603,   # РАНХиГС&lt;br /&gt;
    37.597,   # РГГУ&lt;br /&gt;
    37.625    # Сеченовский&lt;br /&gt;
  ),&lt;br /&gt;
  address = c(&lt;br /&gt;
    &amp;quot;Ленинские горы, 1&amp;quot;,&lt;br /&gt;
    &amp;quot;Покровский бульвар, 11&amp;quot;,&lt;br /&gt;
    &amp;quot;Институтский пер., 9, Долгопрудный&amp;quot;,&lt;br /&gt;
    &amp;quot;2-я Бауманская ул., 5&amp;quot;,&lt;br /&gt;
    &amp;quot;Каширское ш., 31&amp;quot;,&lt;br /&gt;
    &amp;quot;ул. Миклухо-Маклая, 6&amp;quot;,&lt;br /&gt;
    &amp;quot;пр-т Вернадского, 76&amp;quot;,&lt;br /&gt;
    &amp;quot;Стремянный пер., 36&amp;quot;,&lt;br /&gt;
    &amp;quot;Ленинградский пр-т, 49&amp;quot;,&lt;br /&gt;
    &amp;quot;пр-т Вернадского, 82&amp;quot;,&lt;br /&gt;
    &amp;quot;Миусская пл., 6&amp;quot;,&lt;br /&gt;
    &amp;quot;ул. Трубецкая, 8, стр. 2&amp;quot;&lt;br /&gt;
  ),&lt;br /&gt;
  website = c(&lt;br /&gt;
    &amp;quot;https://www.msu.ru/&amp;quot;,&lt;br /&gt;
    &amp;quot;https://www.hse.ru/&amp;quot;,&lt;br /&gt;
    &amp;quot;https://mipt.ru/&amp;quot;,&lt;br /&gt;
    &amp;quot;https://bmstu.ru/&amp;quot;,&lt;br /&gt;
    &amp;quot;https://mephi.ru/&amp;quot;,&lt;br /&gt;
    &amp;quot;https://www.rudn.ru/&amp;quot;,&lt;br /&gt;
    &amp;quot;https://mgimo.ru/&amp;quot;,&lt;br /&gt;
    &amp;quot;https://www.rea.ru/&amp;quot;,&lt;br /&gt;
    &amp;quot;http://www.fa.ru/&amp;quot;,&lt;br /&gt;
    &amp;quot;https://www.ranepa.ru/&amp;quot;,&lt;br /&gt;
    &amp;quot;https://www.rsuh.ru/&amp;quot;,&lt;br /&gt;
    &amp;quot;https://www.sechenov.ru/&amp;quot;&lt;br /&gt;
  ),&lt;br /&gt;
  stringsAsFactors = FALSE&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
# 3. Создание HTML-содержимого для всплывающих подсказок&lt;br /&gt;
universities &amp;lt;- universities %&amp;gt;%&lt;br /&gt;
  mutate(&lt;br /&gt;
    popup_content = paste0(&lt;br /&gt;
      &amp;quot;&amp;lt;b&amp;gt;&amp;quot;, name, &amp;quot;&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&amp;quot;,&lt;br /&gt;
      &amp;quot;📍 &amp;quot;, address, &amp;quot;&amp;lt;br&amp;gt;&amp;quot;,&lt;br /&gt;
      &amp;quot;🌐 &amp;lt;a href=&#039;&amp;quot;, website, &amp;quot;&#039; target=&#039;_blank&#039;&amp;gt;&amp;quot;, website, &amp;quot;&amp;lt;/a&amp;gt;&amp;quot;&lt;br /&gt;
    )&lt;br /&gt;
  )&lt;br /&gt;
&lt;br /&gt;
# 4. Создание интерактивной карты&lt;br /&gt;
map &amp;lt;- leaflet(universities) %&amp;gt;%&lt;br /&gt;
  # Добавление базового слоя карты (OpenStreetMap)&lt;br /&gt;
  addTiles() %&amp;gt;%&lt;br /&gt;
  # Установка начального вида (центр Москвы)&lt;br /&gt;
  setView(lng = 37.618, lat = 55.751, zoom = 10) %&amp;gt;%&lt;br /&gt;
  # Добавление маркеров&lt;br /&gt;
  addMarkers(&lt;br /&gt;
    lng = ~lng,&lt;br /&gt;
    lat = ~lat,&lt;br /&gt;
    popup = ~popup_content,&lt;br /&gt;
    label = ~name,               # Подсказка при наведении&lt;br /&gt;
    labelOptions = labelOptions(&lt;br /&gt;
      noHide = FALSE,&lt;br /&gt;
      direction = &amp;quot;auto&amp;quot;&lt;br /&gt;
    ),&lt;br /&gt;
    clusterOptions = markerClusterOptions()  # Группировка маркеров при большом масштабе&lt;br /&gt;
  ) %&amp;gt;%&lt;br /&gt;
  # Добавление легенды&lt;br /&gt;
  addControl(&lt;br /&gt;
    html = &amp;quot;&amp;lt;div style=&#039;padding: 8px; background: white; border-radius: 4px; box-shadow: 0 2px 4px rgba(0,0,0,0.1);&#039;&amp;gt;&amp;lt;b&amp;gt;🏛️ Ведущие вузы Москвы&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&amp;quot;,&lt;br /&gt;
    position = &amp;quot;topright&amp;quot;&lt;br /&gt;
  )&lt;br /&gt;
&lt;br /&gt;
# 5. Отображение карты&lt;br /&gt;
map&lt;br /&gt;
&lt;br /&gt;
# 6. Сохранение карты в HTML-файл (опционально)&lt;br /&gt;
# htmlwidgets::saveWidget(map, &amp;quot;moscow_universities_map.html&amp;quot;, selfcontained = TRUE)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Как это работает ==&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Создание набора данных&#039;&#039;&#039;: Внутри скрипта задаётся &amp;lt;code&amp;gt;data.frame&amp;lt;/code&amp;gt; с названиями, адресами, координатами и ссылками на сайты 12 ведущих университетов Москвы. Координаты определены приблизительно по главным корпусам.&lt;br /&gt;
# &#039;&#039;&#039;Формирование подсказок&#039;&#039;&#039;: С помощью &amp;lt;code&amp;gt;dplyr::mutate()&amp;lt;/code&amp;gt; создаётся колонка с HTML-кодом, который будет показан при клике на маркер. Всплывающее окно содержит название, адрес и кликабельную ссылку на сайт вуза.&lt;br /&gt;
# &#039;&#039;&#039;Построение карты&#039;&#039;&#039;:&lt;br /&gt;
#*   &amp;lt;code&amp;gt;leaflet()&amp;lt;/code&amp;gt; инициализирует карту.&lt;br /&gt;
#*   &amp;lt;code&amp;gt;addTiles()&amp;lt;/code&amp;gt; добавляет базовый слой OpenStreetMap.&lt;br /&gt;
#*   &amp;lt;code&amp;gt;setView()&amp;lt;/code&amp;gt; задаёт начальный центр и масштаб (Москва).&lt;br /&gt;
#*   &amp;lt;code&amp;gt;addMarkers()&amp;lt;/code&amp;gt; размещает маркеры, группируя их в кластеры (&amp;lt;code&amp;gt;markerClusterOptions()&amp;lt;/code&amp;gt;) для улучшения читаемости при уменьшении масштаба.&lt;br /&gt;
#*   &amp;lt;code&amp;gt;addControl()&amp;lt;/code&amp;gt; добавляет кастомную легенду в правый верхний угол.&lt;br /&gt;
# &#039;&#039;&#039;Отображение&#039;&#039;&#039;: При выполнении скрипта карта автоматически открывается во вкладке &#039;&#039;&#039;Viewer&#039;&#039;&#039; в RStudio.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
&lt;br /&gt;
*   [Документация пакета leaflet](https://rstudio.github.io/leaflet/)&lt;br /&gt;
*   [Документация пакета dplyr](https://dplyr.tidyverse.org/)&lt;br /&gt;
*   [Официальный сайт R](https://www.r-project.org/)&lt;br /&gt;
*   [Страница загрузки RStudio](https://posit.co/download/rstudio-desktop/)&lt;/div&gt;</summary>
		<author><name>Afonbro</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=%D0%98%D0%BD%D1%82%D0%B5%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D0%B2%D0%BD%D1%8B%D0%B9_%D0%B4%D0%B0%D1%88%D0%B1%D0%BE%D1%80%D0%B4_%D0%B4%D0%B8%D0%BD%D0%B0%D0%BC%D0%B8%D0%BA%D0%B8_%D1%86%D0%B5%D0%BD_%D0%BD%D0%B0_%D0%BD%D0%B5%D0%B4%D0%B2%D0%B8%D0%B6%D0%B8%D0%BC%D0%BE%D1%81%D1%82%D1%8C_%D0%BD%D0%B0_%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%B5_Parquet_%D0%B8_DuckDB&amp;diff=45970</id>
		<title>Интерактивный дашборд динамики цен на недвижимость на основе Parquet и DuckDB</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=%D0%98%D0%BD%D1%82%D0%B5%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D0%B2%D0%BD%D1%8B%D0%B9_%D0%B4%D0%B0%D1%88%D0%B1%D0%BE%D1%80%D0%B4_%D0%B4%D0%B8%D0%BD%D0%B0%D0%BC%D0%B8%D0%BA%D0%B8_%D1%86%D0%B5%D0%BD_%D0%BD%D0%B0_%D0%BD%D0%B5%D0%B4%D0%B2%D0%B8%D0%B6%D0%B8%D0%BC%D0%BE%D1%81%D1%82%D1%8C_%D0%BD%D0%B0_%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%B5_Parquet_%D0%B8_DuckDB&amp;diff=45970"/>
		<updated>2026-04-12T17:08:32Z</updated>

		<summary type="html">&lt;p&gt;Afonbro: Новая страница: «Категория:BigDataWorks == Описание проекта ==  Этот проект демонстрирует создание интерактивного дашборда для анализа динамики цен на недвижимость с использованием &amp;#039;&amp;#039;&amp;#039;DuckDB&amp;#039;&amp;#039;&amp;#039; (встраиваемой аналитической базы данных) и &amp;#039;&amp;#039;&amp;#039;Plotly Dash&amp;#039;&amp;#039;&amp;#039;. Проект наглядно показывает кл...»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Категория:BigDataWorks]]&lt;br /&gt;
== Описание проекта ==&lt;br /&gt;
&lt;br /&gt;
Этот проект демонстрирует создание интерактивного дашборда для анализа динамики цен на недвижимость с использованием &#039;&#039;&#039;DuckDB&#039;&#039;&#039; (встраиваемой аналитической базы данных) и &#039;&#039;&#039;Plotly Dash&#039;&#039;&#039;. Проект наглядно показывает ключевые методы работы с большими данными:&lt;br /&gt;
&lt;br /&gt;
*   &#039;&#039;&#039;Пакетная обработка:&#039;&#039;&#039; Эффективная работа с большими объёмами данных без полной загрузки в память.&lt;br /&gt;
*   &#039;&#039;&#039;Колоночное хранение:&#039;&#039;&#039; Использование формата Parquet для ускорения аналитических запросов и экономии места.&lt;br /&gt;
*   &#039;&#039;&#039;Векторизованные SQL-запросы:&#039;&#039;&#039; Агрегация и фильтрация данных на лету с помощью DuckDB.&lt;br /&gt;
&lt;br /&gt;
В качестве источника данных используется открытый набор «Индексы цен на рынке жилья» от Росстата (ЕМИСС), доступный в формате Parquet.&lt;br /&gt;
&lt;br /&gt;
== Источник данных ==&lt;br /&gt;
&lt;br /&gt;
Датасет «Индексы цен на рынке жилья (ЕМИСС)» от Росстата. &lt;br /&gt;
&lt;br /&gt;
*   &#039;&#039;&#039;Страница датасета:&#039;&#039;&#039; https://repository.econdata.tech/dataset/emiss_30925&lt;br /&gt;
*   &#039;&#039;&#039;Прямая ссылка на Parquet:&#039;&#039;&#039; https://repository.econdata.tech/dataset/emiss_30925/resource/60378ec6-c7a8-4cec-9a59-e841ca206b3f&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Код дашборда ==&lt;br /&gt;
&lt;br /&gt;
Код для создания интерактивного дашборда. Он выполняет следующие шаги:&lt;br /&gt;
&lt;br /&gt;
#  Подключается к DuckDB и загружает данные из Parquet-файла.&lt;br /&gt;
#  Создаёт интерактивный веб-интерфейс с выпадающим списком для выбора региона.&lt;br /&gt;
#  Строит линейный график динамики цен для выбранного региона.&lt;br /&gt;
#  Отображает среднюю цену за весь период.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
import duckdb&lt;br /&gt;
import dash&lt;br /&gt;
from dash import dcc, html, Input, Output&lt;br /&gt;
import plotly.express as px&lt;br /&gt;
import pandas as pd&lt;br /&gt;
&lt;br /&gt;
# 1. Подключение к DuckDB и загрузка данных&lt;br /&gt;
conn = duckdb.connect()&lt;br /&gt;
&lt;br /&gt;
# Прямая ссылка на Parquet-файл (можно заменить на локальный путь)&lt;br /&gt;
DATA_URL = &amp;quot;https://repository.econdata.tech/dataset/emiss_30925/resource/60378ec6-c7a8-4cec-9a59-e841ca206b3f&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Регистрируем Parquet-файл как таблицу в DuckDB&lt;br /&gt;
conn.execute(f&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    CREATE OR REPLACE TABLE real_estate AS &lt;br /&gt;
    SELECT * FROM &#039;{DATA_URL}&#039;&lt;br /&gt;
&amp;quot;&amp;quot;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
# Предварительно получаем список уникальных регионов для выпадающего списка&lt;br /&gt;
regions_df = conn.execute(&amp;quot;SELECT DISTINCT region FROM real_estate ORDER BY region&amp;quot;).fetchdf()&lt;br /&gt;
regions = regions_df[&#039;region&#039;].tolist()&lt;br /&gt;
&lt;br /&gt;
# 2. Инициализация Dash-приложения&lt;br /&gt;
app = dash.Dash(__name__)&lt;br /&gt;
&lt;br /&gt;
app.layout = html.Div([&lt;br /&gt;
    html.H1(&amp;quot;📈 Интерактивный дашборд: Динамика цен на недвижимость&amp;quot;, &lt;br /&gt;
            style={&#039;textAlign&#039;: &#039;center&#039;}),&lt;br /&gt;
    &lt;br /&gt;
    html.Label(&amp;quot;Выберите регион:&amp;quot;),&lt;br /&gt;
    dcc.Dropdown(&lt;br /&gt;
        id=&#039;region-dropdown&#039;,&lt;br /&gt;
        options=[{&#039;label&#039;: r, &#039;value&#039;: r} for r in regions],&lt;br /&gt;
        value=regions[0],  # значение по умолчанию&lt;br /&gt;
        clearable=False&lt;br /&gt;
    ),&lt;br /&gt;
    &lt;br /&gt;
    dcc.Graph(id=&#039;price-chart&#039;),&lt;br /&gt;
    &lt;br /&gt;
    html.Div(id=&#039;avg-price-text&#039;, style={&#039;marginTop&#039;: 20, &#039;fontSize&#039;: 20})&lt;br /&gt;
])&lt;br /&gt;
&lt;br /&gt;
# 3. Callback для обновления графика и текста при смене региона&lt;br /&gt;
@app.callback(&lt;br /&gt;
    [Output(&#039;price-chart&#039;, &#039;figure&#039;),&lt;br /&gt;
     Output(&#039;avg-price-text&#039;, &#039;children&#039;)],&lt;br /&gt;
    Input(&#039;region-dropdown&#039;, &#039;value&#039;)&lt;br /&gt;
)&lt;br /&gt;
def update_dashboard(selected_region):&lt;br /&gt;
    # SQL-запрос с агрегацией данных по выбранному региону&lt;br /&gt;
    query = f&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        SELECT &lt;br /&gt;
            date,&lt;br /&gt;
            AVG(price_index) as avg_index&lt;br /&gt;
        FROM real_estate&lt;br /&gt;
        WHERE region = &#039;{selected_region}&#039;&lt;br /&gt;
        GROUP BY date&lt;br /&gt;
        ORDER BY date&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    df = conn.execute(query).fetchdf()&lt;br /&gt;
    &lt;br /&gt;
    # Создание графика Plotly&lt;br /&gt;
    fig = px.line(df, x=&#039;date&#039;, y=&#039;avg_index&#039;, &lt;br /&gt;
                  title=f&#039;Динамика индекса цен в регионе: {selected_region}&#039;,&lt;br /&gt;
                  labels={&#039;avg_index&#039;: &#039;Индекс цен&#039;, &#039;date&#039;: &#039;Дата&#039;})&lt;br /&gt;
    &lt;br /&gt;
    # Расчёт среднего значения для текстового блока&lt;br /&gt;
    avg_price = df[&#039;avg_index&#039;].mean()&lt;br /&gt;
    avg_text = f&amp;quot;Средний индекс цен за период: {avg_price:.2f}&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    return fig, avg_text&lt;br /&gt;
&lt;br /&gt;
# 4. Запуск сервера&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    app.run_server(debug=True)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Как это работает ==&lt;br /&gt;
&lt;br /&gt;
#  &#039;&#039;&#039;DuckDB&#039;&#039;&#039; напрямую читает Parquet-файл, извлекая только нужные колонки и строки (благодаря предикативному пушдауну, Predicate Pushdown). Это позволяет обрабатывать гигабайты данных на обычном компьютере.&lt;br /&gt;
#  &#039;&#039;&#039;Dash&#039;&#039;&#039; создаёт веб-интерфейс на чистом Python, без необходимости писать HTML или JavaScript.&lt;br /&gt;
#  При выборе региона в выпадающем списке выполняется SQL-запрос к DuckDB, который агрегирует данные и возвращает результат для построения графика.&lt;br /&gt;
&lt;br /&gt;
== Демонстрация ключевых методов Big Data ==&lt;br /&gt;
&lt;br /&gt;
*   &#039;&#039;&#039;Экономия памяти:&#039;&#039;&#039; DuckDB загружает данные частями (chunks), не расходуя всю оперативную память.&lt;br /&gt;
*   &#039;&#039;&#039;Колоночное хранение (Parquet):&#039;&#039;&#039; Чтение только нужных колонок ускоряет запросы в десятки раз по сравнению с CSV.&lt;br /&gt;
*   &#039;&#039;&#039;Векторизованные запросы:&#039;&#039;&#039; DuckDB использует SIMD-инструкции процессора для параллельной обработки данных.&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
&lt;br /&gt;
*   [Документация DuckDB](https://duckdb.org/docs/)&lt;br /&gt;
*   [Документация Plotly Dash](https://dash.plotly.com/)&lt;br /&gt;
*   [Датасет ЕМИСС](https://repository.econdata.tech/dataset/emiss_30925)&lt;/div&gt;</summary>
		<author><name>Afonbro</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=Java_for_BigData&amp;diff=45848</id>
		<title>Java for BigData</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=Java_for_BigData&amp;diff=45848"/>
		<updated>2026-04-06T20:32:19Z</updated>

		<summary type="html">&lt;p&gt;Afonbro: /* Перечень рецептов */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Scripting Tutorials&lt;br /&gt;
|Description=Как использовать Java для обработки больших данных? Перечень рецептов&lt;br /&gt;
|Field_of_knowledge=Информатика, Интернет вещей, Большие данные&lt;br /&gt;
|FieldActivity=Computational Thinker&lt;br /&gt;
|Возрастная категория=14&lt;br /&gt;
|Environment=Java&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Перечень рецептов ==&lt;br /&gt;
==== Потоковое чтение больших файлов (JDBC ResultSet) ====&lt;br /&gt;
Обрабатывает миллионы записей из БД без переполнения памяти (OutOfMemoryError)..&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
// public void readLargeDataset() {&lt;br /&gt;
    String url = &amp;quot;jdbc:postgresql://localhost:5432/bigdata&amp;quot;;&lt;br /&gt;
    try (Connection conn = DriverManager.getConnection(url, &amp;quot;user&amp;quot;, &amp;quot;pass&amp;quot;)) {&lt;br /&gt;
        conn.setAutoCommit(false);&lt;br /&gt;
        Statement stmt = conn.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY);&lt;br /&gt;
        stmt.setFetchSize(1000);&lt;br /&gt;
        ResultSet rs = stmt.executeQuery(&amp;quot;SELECT * FROM large_table&amp;quot;);&lt;br /&gt;
        while (rs.next()) {&lt;br /&gt;
            processRow(rs);&lt;br /&gt;
        }&lt;br /&gt;
    } catch (SQLException e) { e.printStackTrace(); }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Параллельная обработка с Java Stream API ====&lt;br /&gt;
Быстро фильтрует и агрегирует большие наборы данных, задействуя все ядра процессора&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
// List&amp;lt;Integer&amp;gt; numbers = new ArrayList&amp;lt;&amp;gt;();&lt;br /&gt;
for (int i = 0; i &amp;lt; 10_000_000; i++) numbers.add(i);&lt;br /&gt;
&lt;br /&gt;
long start = System.nanoTime();&lt;br /&gt;
long sum = numbers.parallelStream()   // параллельный поток&lt;br /&gt;
        .mapToLong(i -&amp;gt; (long) i * i)   // возводим в квадрат&lt;br /&gt;
        .sum();&lt;br /&gt;
System.out.println(&amp;quot;Сумма квадратов: &amp;quot; + sum + &amp;quot;, время: &amp;quot; + (System.nanoTime() - start) + &amp;quot; нс&amp;quot;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Afonbro</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=R_for_Big_Data&amp;diff=45847</id>
		<title>R for Big Data</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=R_for_Big_Data&amp;diff=45847"/>
		<updated>2026-04-06T20:32:05Z</updated>

		<summary type="html">&lt;p&gt;Afonbro: /* Перечень рецептов */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Scripting Tutorials&lt;br /&gt;
|Description=R для обработки больших данных&lt;br /&gt;
|Field_of_knowledge=Информатика, Большие данные&lt;br /&gt;
|FieldActivity=Computational Thinker&lt;br /&gt;
|Возрастная категория=14&lt;br /&gt;
|Environment=R,Spark&lt;br /&gt;
}}&lt;br /&gt;
== Перечень рецептов ==&lt;br /&gt;
Из книг:&lt;br /&gt;
# &#039;&#039;&#039;[[R for Data Science]]&#039;&#039;&#039;&lt;br /&gt;
# [[Big Data with R]]&lt;br /&gt;
# [[Introductory Statistics for Economics]]&lt;br /&gt;
# [[Learning analytics methods and tutorials: A practical guide using R]]&lt;br /&gt;
&lt;br /&gt;
==== data.table: Быстрая фильтрация и группировка ====&lt;br /&gt;
Этот код создает таблицу с 10 миллионами строк и за доли секунды вычисляет среднее значение для каждого из десяти сегментов данных.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
// library(data.table)&lt;br /&gt;
&lt;br /&gt;
# Создание data.table&lt;br /&gt;
dt &amp;lt;- data.table(id = 1:1e7, value = runif(1e7))&lt;br /&gt;
&lt;br /&gt;
# Фильтрация строк (i) и вычисление среднего (j) по группам (by)&lt;br /&gt;
result &amp;lt;- dt[value &amp;gt; 0.5, .(avg_value = mean(value)), by = .(id %% 10)]&lt;br /&gt;
head(result)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== dtplyr: dplyr для огромных данных ====&lt;br /&gt;
Вы пишете привычный dplyr-код, а пакет dtplyr переводит его в высокопроизводительный data.table.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
// library(dtplyr)&lt;br /&gt;
library(dplyr, warn.conflicts = FALSE)&lt;br /&gt;
&lt;br /&gt;
# Ленивая операция: код переводится в data.table, но данные не загружаются&lt;br /&gt;
lazy_dt &amp;lt;- lazy_dt(dt)&lt;br /&gt;
result &amp;lt;- lazy_dt %&amp;gt;%&lt;br /&gt;
  filter(value &amp;gt; 0.5) %&amp;gt;%&lt;br /&gt;
  group_by(group = id %% 10) %&amp;gt;%&lt;br /&gt;
  summarise(avg_value = mean(value))&lt;br /&gt;
&lt;br /&gt;
# Момент выполнения: data.table выполняет запрос&lt;br /&gt;
result_df &amp;lt;- as.data.frame(result)&lt;br /&gt;
head(result_df)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Afonbro</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=MapReduce&amp;diff=45846</id>
		<title>MapReduce</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=MapReduce&amp;diff=45846"/>
		<updated>2026-04-06T20:28:36Z</updated>

		<summary type="html">&lt;p&gt;Afonbro: /* Пример */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Понятие&lt;br /&gt;
|Description=MapReduce — модель распределённых вычислений, представленная компанией Google, используемая для параллельных вычислений над очень большими, вплоть до нескольких петабайт, наборами данных в компьютерных кластерах.&lt;br /&gt;
|Field_of_knowledge=Большие данные&lt;br /&gt;
|Environment=Hadoop&lt;br /&gt;
}}&lt;br /&gt;
MapReduce — это фреймворк для вычисления некоторых наборов распределенных задач с использованием большого количества компьютеров (называемых «нодами»), образующих кластер.&lt;br /&gt;
&lt;br /&gt;
Работа MapReduce состоит из двух шагов: Map и Reduce, названных так по аналогии с одноименными функциями высшего порядка, map и reduce.&lt;br /&gt;
&lt;br /&gt;
=== Map ===&lt;br /&gt;
На Map-шаге происходит предварительная обработка входных данных. Для этого один из компьютеров (называемый главным узлом — master node) получает входные данные задачи, разделяет их на части и передает другим компьютерам (рабочим узлам — worker node) для предварительной обработки.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Стадия Map зачастую представляет собой обычное чтение с жёсткого диска. Кроме чтения здесь могут применяться однострочные трансформации и фильтры, т.е. операции без join, group by, order by, distinct и без агрегирующих функций. Данные зачастую сохранены равномерно на каждом сервере. Все серверы участвуют в этой стадии и делят нагрузку равномерно.&lt;br /&gt;
&lt;br /&gt;
=== Reduce ===&lt;br /&gt;
На Reduce-шаге происходит свёртка предварительно обработанных данных. Главный узел получает ответы от рабочих узлов и на их основе формирует результат — решение задачи, которая изначально формулировалась.&lt;br /&gt;
&lt;br /&gt;
Здесь происходят все группирующие операции, а также операции, которые записывают результат. Некоторые операции не могут выполняться одновременно на нескольких серверах, поэтому для их выполнения требуется собрать весь объем данных на одном сервере. &lt;br /&gt;
&lt;br /&gt;
== Пример ==&lt;br /&gt;
Канонический пример приложения, написанного с помощью MapReduce, — это процесс, подсчитывающий, сколько раз различные слова встречаются в наборе документов:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot; line&amp;gt;&lt;br /&gt;
// Функция, используемая рабочими нодами на Map-шаге&lt;br /&gt;
// для обработки пар ключ-значение из входного потока&lt;br /&gt;
void map(String name, String document):&lt;br /&gt;
    // Входные данные:&lt;br /&gt;
    //   name - название документа&lt;br /&gt;
    //   document - содержимое документа&lt;br /&gt;
    for each word in document:&lt;br /&gt;
        EmitIntermediate(word, &amp;quot;1&amp;quot;);&lt;br /&gt;
 &lt;br /&gt;
// Функция, используемая рабочими нодами на Reduce-шаге&lt;br /&gt;
// для обработки пар ключ-значение, полученных на Map-шаге&lt;br /&gt;
void reduce(Iterator partialCounts):&lt;br /&gt;
    // Входные данные:&lt;br /&gt;
    //   partialCounts - список группированных промежуточных результатов. Количество записей в partialCounts и есть &lt;br /&gt;
    //     требуемое значение&lt;br /&gt;
    int result = 0;&lt;br /&gt;
    for each v in partialCounts:&lt;br /&gt;
        result += parseInt(v);&lt;br /&gt;
    Emit(AsString(result));&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Анализ логов веб-сервера ====&lt;br /&gt;
Анализ логов для подсчёта количества обращений к каждому URL..&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
// from mrjob.job import MRJob&lt;br /&gt;
import re&lt;br /&gt;
&lt;br /&gt;
class MRLogAnalyzer(MRJob):&lt;br /&gt;
&lt;br /&gt;
    # Mapper: извлекает URL из строки лога и выдает (url, 1)&lt;br /&gt;
    def mapper(self, _, line):&lt;br /&gt;
        # Простое регулярное выражение для извлечения URL (GET /path HTTP/...)&lt;br /&gt;
        match = re.search(r&#039;\&amp;quot;(?:GET|POST) (.*?) HTTP/&#039;, line)&lt;br /&gt;
        if match:&lt;br /&gt;
            url = match.group(1)&lt;br /&gt;
            yield (url, 1)&lt;br /&gt;
&lt;br /&gt;
    # Reducer: суммирует количество обращений к каждому URL&lt;br /&gt;
    def reducer(self, key, values):&lt;br /&gt;
        yield (key, sum(values))&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    MRLogAnalyzer.run()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Анализ числовых данных (среднее арифметическое) ====&lt;br /&gt;
Этот пример показывает, как MapReduce используется не только для текста, но и для обработки числовых данных, например, для нахождения среднего значения.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
// from mrjob.job import MRJob&lt;br /&gt;
&lt;br /&gt;
class MRAverage(MRJob):&lt;br /&gt;
&lt;br /&gt;
    # Mapper: выдает ключ &#039;avg&#039; и пару (значение, 1)&lt;br /&gt;
    def mapper(self, _, line):&lt;br /&gt;
        num = float(line.strip())&lt;br /&gt;
        yield (&#039;avg&#039;, (num, 1))&lt;br /&gt;
&lt;br /&gt;
    # Reducer: суммирует все значения и счетчики, затем вычисляет среднее&lt;br /&gt;
    def reducer(self, key, values):&lt;br /&gt;
        total_sum = 0&lt;br /&gt;
        total_count = 0&lt;br /&gt;
        for value, count in values:&lt;br /&gt;
            total_sum += value&lt;br /&gt;
            total_count += count&lt;br /&gt;
        yield (&#039;average&#039;, total_sum / total_count)&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    MRAverage.run()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Afonbro</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Afonbro&amp;diff=45845</id>
		<title>Участник:Afonbro</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Afonbro&amp;diff=45845"/>
		<updated>2026-04-06T20:00:46Z</updated>

		<summary type="html">&lt;p&gt;Afonbro: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Категория:ИНДОР-211]]&lt;br /&gt;
[[Категория:UserMGPU]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Автор&lt;br /&gt;
! Ссылка&lt;br /&gt;
! Год рождения&lt;br /&gt;
|-&lt;br /&gt;
| [[HasName::Дмитрий]]&lt;br /&gt;
| [[HasVK::https://vk.com/fulldegr0d]]&lt;br /&gt;
| [[HasBirthYear::2003]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Afonbro</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Afonbro&amp;diff=45844</id>
		<title>Участник:Afonbro</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Afonbro&amp;diff=45844"/>
		<updated>2026-04-06T19:51:47Z</updated>

		<summary type="html">&lt;p&gt;Afonbro: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Категория:ИНДОР-211]]&lt;br /&gt;
[[Категория:UserMGPU]]&lt;br /&gt;
{{#get_web_data: url = https://example.com/authors.csv&lt;br /&gt;
 |format = csv with header&lt;br /&gt;
 |data = Author=name, VK=vk, Birth=year&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#for_external_table:&lt;br /&gt;
 {{!}}-&lt;br /&gt;
 {{!}} Автор: {{{Author}}}  &lt;br /&gt;
 {{!}} VK: [{{{VK}}} {{{VK}}}]  &lt;br /&gt;
 {{!}} Год рождения: {{{Birth}}}&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Afonbro</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Afonbro&amp;diff=45843</id>
		<title>Участник:Afonbro</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Afonbro&amp;diff=45843"/>
		<updated>2026-04-06T19:48:59Z</updated>

		<summary type="html">&lt;p&gt;Afonbro: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Категория:ИНДОР-211]]&lt;br /&gt;
[[Категория:UserMGPU]]&lt;br /&gt;
{{#get_web_data:url=https://corgis-edu.github.io/corgis/datasets/csv/video_games/video_games.csv&lt;br /&gt;
 |format=csv with header&lt;br /&gt;
 |filter=Genres=Action&lt;br /&gt;
 |data=Title=Title, Genres=Metadata.Genres&lt;br /&gt;
}}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Автор&lt;br /&gt;
! Ссылка&lt;br /&gt;
! Год рождения&lt;br /&gt;
{{#for_external_table:&lt;br /&gt;
 {{!}}-&lt;br /&gt;
 {{!}} {{{Author}}}&lt;br /&gt;
 {{!}} {{{URL}}}&lt;br /&gt;
 {{!}} {{{Birth}}}&lt;br /&gt;
}}&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Afonbro</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Afonbro&amp;diff=45842</id>
		<title>Участник:Afonbro</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Afonbro&amp;diff=45842"/>
		<updated>2026-04-06T19:47:03Z</updated>

		<summary type="html">&lt;p&gt;Afonbro: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Категория:ИНДОР-211]]&lt;br /&gt;
[[Категория:UserMGPU]]&lt;br /&gt;
{{#get_web_data:url=https://corgis-edu.github.io/corgis/datasets/csv/video_games/video_games.csv&lt;br /&gt;
 |format=csv with header&lt;br /&gt;
 |filter=Genres=Action&lt;br /&gt;
 |data=Title=Title, Genres=Metadata.Genres&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Afonbro</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Afonbro&amp;diff=20468</id>
		<title>Участник:Afonbro</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Afonbro&amp;diff=20468"/>
		<updated>2024-10-07T13:45:08Z</updated>

		<summary type="html">&lt;p&gt;Afonbro: Новая страница: «Категория:ИНДОР-211 Категория:UserMGPU»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Категория:ИНДОР-211]]&lt;br /&gt;
[[Категория:UserMGPU]]&lt;/div&gt;</summary>
		<author><name>Afonbro</name></author>
	</entry>
</feed>