<?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=%D0%A5%D0%B0%D1%80%D0%BB%D0%B0%D0%BC%D0%BE%D0%B2%D0%B0+%D0%90%D0%BD%D0%BD%D0%B0</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=%D0%A5%D0%B0%D1%80%D0%BB%D0%B0%D0%BC%D0%BE%D0%B2%D0%B0+%D0%90%D0%BD%D0%BD%D0%B0"/>
	<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/%D0%A5%D0%B0%D1%80%D0%BB%D0%B0%D0%BC%D0%BE%D0%B2%D0%B0_%D0%90%D0%BD%D0%BD%D0%B0"/>
	<updated>2026-05-22T03:23:21Z</updated>
	<subtitle>Вклад</subtitle>
	<generator>MediaWiki 1.44.0</generator>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=Nexia&amp;diff=45596</id>
		<title>Nexia</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=Nexia&amp;diff=45596"/>
		<updated>2026-03-27T07:31:04Z</updated>

		<summary type="html">&lt;p&gt;Харламова Анна: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Описание || Веб-приложение, отслеживающее популярные посты с платформы Reddit.&lt;br /&gt;
|-&lt;br /&gt;
| Область знаний || [[Программирование на Python, Работа с API, Веб-технологии]]&lt;br /&gt;
|-&lt;br /&gt;
| Близкие рецепту понятия || Лента, популярное, новости&lt;br /&gt;
|-&lt;br /&gt;
| Среды и средства для приготовления рецепта || [[Python]], [[Visual studio code]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Карточка проекта --&amp;gt;&lt;br /&gt;
    &amp;lt;div style=&amp;quot;background-color: #ffffff; padding: 20px; border-radius: 12px; margin-bottom: 20px; box-shadow: 0 1px 3px rgba(0,0,0,0.1);&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2 style=&amp;quot;color: #2c3e50; border-bottom: 2px solid #48db92; padding-bottom: 10px; margin-top: 0;&amp;quot;&amp;gt; &amp;lt;b&amp;gt;Сайт по сбору популярных статей Reddit&amp;lt;/b&amp;gt;&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Автор:&amp;lt;/b&amp;gt; Харламова Анна&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Группа:&amp;lt;/b&amp;gt; АДЭУ-221&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Дисциплина:&amp;lt;/b&amp;gt; Работа с API социальных сетей и визуализация данных&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Статус проекта:&amp;lt;/b&amp;gt; Выполнен&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #ffffff; padding: 20px; border-radius: 12px; margin-bottom: 20px; box-shadow: 0 1px 3px rgba(0,0,0,0.1);&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h3 style=&amp;quot;color: black;&amp;quot;&amp;gt;&amp;lt;b&amp;gt;Введение&amp;lt;/b&amp;gt;&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
🎯 Целью данной работы является разработка веб-приложения на основе FastAPI, предназначенного для автоматического сбора, обработки и предоставления пользователю популярных постов из Reddit и актуальных новостей с Hacker News.&lt;br /&gt;
Приложение должно обеспечивать удобный доступ к агрегированному контенту через API и веб-интерфейс.&lt;br /&gt;
&lt;br /&gt;
💡 Основная идея проекта — упростить доступ пользователей к актуальному и популярному контенту Reddit в удобном и структурированном виде.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;div style=&amp;quot;background-color: #ffffff; padding: 20px; border-radius: 12px; margin-bottom: 20px; box-shadow: 0 1px 3px rgba(0,0,0,0.1);&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h3 style=&amp;quot;color: black;&amp;quot;&amp;gt;&amp;lt;b&amp;gt;Задачи проекта:&amp;lt;/b&amp;gt;&amp;lt;/h3&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Изучить работу внешних API (Reddit и Hacker News).&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Реализовать клиент для получения постов и комментариев с Reddit.&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Реализовать клиент для получения новостей с Hacker News.&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Создать API-эндпоинты для: получения постов, получения новостей, получения комментариев.&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Организовать обработку и структурирование данных (JSON-формат).&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Реализовать логирование работы приложения.&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Обеспечить обработку ошибок при работе с внешними сервисами.&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Подключить статические файлы для отображения пользовательского интерфейса.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;div style=&amp;quot;background-color: #ffffff; padding: 20px; border-radius: 12px; margin-bottom: 20px; box-shadow: 0 1px 3px rgba(0,0,0,0.1);&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h3 style=&amp;quot;color: black;&amp;quot;&amp;gt;🏗 &amp;lt;b&amp;gt;Архитектура и блок-схема проекта&amp;lt;/b&amp;gt;&amp;lt;/h3&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;Архитектура построена по принципу клиент-серверной модели и включает несколько уровней:&amp;lt;/p&amp;gt;&lt;br /&gt;
        &lt;br /&gt;
        &amp;lt;div style=&amp;quot;display: flex; flex-direction: column; align-items: center; margin-top: 20px;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;div style=&amp;quot;position: relative; width: 360px;&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;div style=&amp;quot;background-color: #48db92; color: black; text-align: left; padding: 10px 0; border-radius: 8px; margin: 5px 0;&amp;quot;&amp;gt;🌐 &amp;lt;b&amp;gt;Уровень представления (Frontend)&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Реализован через статические файлы (static)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Отображает данные пользователю&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Отправляет HTTP-запросы к серверу&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;div style=&amp;quot;width: 2px; height: 15px; background-color: #48db92; margin: 0 auto;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;div style=&amp;quot;background-color: #48db92; color: black; text-align: left; padding: 10px 0; border-radius: 8px; margin: 5px 0;&amp;quot;&amp;gt;🚀 &amp;lt;b&amp;gt;Backend (API-сервер)&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Обработка HTTP-запросов&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Маршрутизация (/api/reddit, /api/news, /api/comments)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Возврат данных в формате JSON&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Логирование&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;div style=&amp;quot;width: 2px; height: 15px; background-color: #48db92; margin: 0 auto;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;div style=&amp;quot;background-color: #48db92; color: black; text-align: left; padding: 10px 0; border-radius: 8px; margin: 5px 0;&amp;quot;&amp;gt;🔌 &amp;lt;b&amp;gt;Слой бизнес-логики&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;RedditClient&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;NewsClient&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;div style=&amp;quot;width: 2px; height: 15px; background-color: #48db92; margin: 0 auto;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;div style=&amp;quot;background-color: #48db92; color: black; text-align: left; padding: 10px 0; border-radius: 8px; margin: 5px 0;&amp;quot;&amp;gt;🌍 &amp;lt;b&amp;gt;Внешние API&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Reddit API&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Hacker News API&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;div style=&amp;quot;width: 2px; height: 15px; background-color: #48db92; margin: 0 auto;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;div style=&amp;quot;background-color: #48db92; color: black; text-align: left; padding: 10px 0; border-radius: 8px; margin: 5px 0;&amp;quot;&amp;gt;⚙️ &amp;lt;b&amp;gt;Инфраструктурный слой&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Переменные окружения (.env)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Логирование (logging)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;HTTP-клиент (requests)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;ASGI-сервер Uvicorn&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #ffffff; padding: 20px; border-radius: 12px; margin-bottom: 20px; box-shadow: 0 1px 3px rgba(0,0,0,0.1);&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h3 style=&amp;quot;color: black;&amp;quot;&amp;gt;&amp;lt;b&amp;gt;Структура работы:&amp;lt;/b&amp;gt;&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:Структура в среде разработки.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #ffffff; padding: 20px; border-radius: 12px; margin-bottom: 20px; box-shadow: 0 1px 3px rgba(0,0,0,0.1);&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h3 style=&amp;quot;color: black;&amp;quot;&amp;gt;&amp;lt;b&amp;gt;Python-структура:&amp;lt;/b&amp;gt;&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import os&lt;br /&gt;
import logging&lt;br /&gt;
from fastapi import FastAPI, Query&lt;br /&gt;
from fastapi.staticfiles import StaticFiles&lt;br /&gt;
from dotenv import load_dotenv&lt;br /&gt;
&lt;br /&gt;
from reddit_client import RedditClient&lt;br /&gt;
from news_client import NewsClient&lt;br /&gt;
&lt;br /&gt;
load_dotenv()&lt;br /&gt;
&lt;br /&gt;
log_level = os.getenv(&amp;quot;LOG_LEVEL&amp;quot;, &amp;quot;INFO&amp;quot;)&lt;br /&gt;
logging.basicConfig(&lt;br /&gt;
    level=log_level,&lt;br /&gt;
    format=&amp;quot;%(asctime)s - %(name)s - %(levelname)s - %(message)s&amp;quot;,&lt;br /&gt;
    handlers=[&lt;br /&gt;
        logging.StreamHandler(),&lt;br /&gt;
        logging.FileHandler(&amp;quot;app.log&amp;quot;, encoding=&amp;quot;utf-8&amp;quot;)&lt;br /&gt;
    ]&lt;br /&gt;
)&lt;br /&gt;
logger = logging.getLogger(__name__)&lt;br /&gt;
&lt;br /&gt;
app = FastAPI(title=&amp;quot;Nexia API&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
@app.on_event(&amp;quot;startup&amp;quot;)&lt;br /&gt;
async def startup_event():&lt;br /&gt;
    logger.info(&amp;quot;Application starting up...&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
@app.get(&amp;quot;/api/reddit&amp;quot;)&lt;br /&gt;
async def get_reddit_feed(subreddit: str = Query(&amp;quot;popular&amp;quot;, description=&amp;quot;Subreddit name&amp;quot;)):&lt;br /&gt;
    logger.info(f&amp;quot;API request received for /api/reddit, subreddit: {subreddit}&amp;quot;)&lt;br /&gt;
    limit = int(os.getenv(&amp;quot;REDDIT_LIMIT&amp;quot;, &amp;quot;15&amp;quot;))&lt;br /&gt;
    client = RedditClient(limit=limit)&lt;br /&gt;
    result = client.fetch_posts(subreddit)&lt;br /&gt;
    if &amp;quot;error&amp;quot; in result:&lt;br /&gt;
        return {&amp;quot;status&amp;quot;: &amp;quot;error&amp;quot;, &amp;quot;message&amp;quot;: result[&amp;quot;error&amp;quot;]}&lt;br /&gt;
    return {&amp;quot;status&amp;quot;: &amp;quot;success&amp;quot;, &amp;quot;data&amp;quot;: result[&amp;quot;posts&amp;quot;]}&lt;br /&gt;
&lt;br /&gt;
@app.get(&amp;quot;/api/news&amp;quot;)&lt;br /&gt;
async def get_news_feed():&lt;br /&gt;
    logger.info(&amp;quot;API request received for /api/news&amp;quot;)&lt;br /&gt;
    client = NewsClient()&lt;br /&gt;
    news = client.fetch_latest_news(limit=15)&lt;br /&gt;
    return {&amp;quot;status&amp;quot;: &amp;quot;success&amp;quot;, &amp;quot;data&amp;quot;: news}&lt;br /&gt;
&lt;br /&gt;
@app.get(&amp;quot;/api/comments&amp;quot;)&lt;br /&gt;
async def get_comments(source: str = Query(..., description=&amp;quot;Source network (e.g. reddit)&amp;quot;), &lt;br /&gt;
                       post_id: str = Query(..., description=&amp;quot;Post ID&amp;quot;)):&lt;br /&gt;
    logger.info(f&amp;quot;API request received for /api/comments, source: {source}, id: {post_id}&amp;quot;)&lt;br /&gt;
    if source == &#039;reddit&#039;:&lt;br /&gt;
        client = RedditClient()&lt;br /&gt;
        comments = client.fetch_comments(post_id)&lt;br /&gt;
        return {&amp;quot;status&amp;quot;: &amp;quot;success&amp;quot;, &amp;quot;data&amp;quot;: comments}&lt;br /&gt;
    &lt;br /&gt;
    # News comments aren&#039;t supported in this iteration&lt;br /&gt;
    return {&amp;quot;status&amp;quot;: &amp;quot;error&amp;quot;, &amp;quot;message&amp;quot;: &amp;quot;Comments not supported for this source.&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
app.mount(&amp;quot;/&amp;quot;, StaticFiles(directory=&amp;quot;static&amp;quot;, html=True), name=&amp;quot;static&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    import uvicorn&lt;br /&gt;
    logger.info(&amp;quot;Starting uvicorn server on port 8000&amp;quot;)&lt;br /&gt;
    uvicorn.run(app, host=&amp;quot;0.0.0.0&amp;quot;, port=8000)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #ffffff; padding: 20px; border-radius: 12px; margin-bottom: 20px; box-shadow: 0 1px 3px rgba(0,0,0,0.1);&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h3 style=&amp;quot;color: black;&amp;quot;&amp;gt;⚙️ &amp;lt;b&amp;gt;Логика работы приложения&amp;lt;/b&amp;gt;&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:Логика работы приложения.png]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #ffffff; padding: 20px; border-radius: 12px; margin-bottom: 20px; box-shadow: 0 1px 3px rgba(0,0,0,0.1);&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h3 style=&amp;quot;color: black;&amp;quot;&amp;gt;&amp;lt;b&amp;gt;Пример вывода новостей:&amp;lt;/b&amp;gt;&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:Сайт.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #ffffff; padding: 20px; border-radius: 12px; margin-bottom: 20px; box-shadow: 0 1px 3px rgba(0,0,0,0.1);&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h3 style=&amp;quot;color: black;&amp;quot;&amp;gt;&amp;lt;b&amp;gt;Выводы о проделанной работе:&amp;lt;/b&amp;gt;&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В ходе выполнения проекта разработано веб-приложение на FastAPI, агрегирующее данные из Reddit и Hacker News. Реализованы API-эндпоинты, обработка данных и клиент-серверная архитектура. Поставленная цель достигнута, приложение успешно выполняет сбор и предоставление актуального контента.&lt;br /&gt;
&lt;br /&gt;
1. В процессе разработки:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Освоен фреймворк FastAPI для создания API.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Реализовано взаимодействие с внешними REST API.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Разработана клиент-серверная архитектура.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Настроено логирование и обработка ошибок.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Выполнено структурирование и преобразование данных.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Разработанное приложение:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Автоматизирует получение популярных постов и новостей.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Предоставляет единый интерфейс доступа к данным.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Может быть масштабировано и расширено.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Харламова Анна</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=Nexia&amp;diff=45502</id>
		<title>Nexia</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=Nexia&amp;diff=45502"/>
		<updated>2026-03-27T00:22:47Z</updated>

		<summary type="html">&lt;p&gt;Харламова Анна: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Описание || Веб-приложение, отслеживающее популярные посты с платформы Reddit.&lt;br /&gt;
|-&lt;br /&gt;
| Область знаний || [[Программирование на Python, Работа с API, Веб-технологии]]&lt;br /&gt;
|-&lt;br /&gt;
| Близкие рецепту понятия || Лента, популярное, новости&lt;br /&gt;
|-&lt;br /&gt;
| Среды и средства для приготовления рецепта || [[Python]], [[Visual studio code]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Карточка проекта --&amp;gt;&lt;br /&gt;
    &amp;lt;div style=&amp;quot;background-color: #ffffff; padding: 20px; border-radius: 12px; margin-bottom: 20px; box-shadow: 0 1px 3px rgba(0,0,0,0.1);&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2 style=&amp;quot;color: #2c3e50; border-bottom: 2px solid #48db92; padding-bottom: 10px; margin-top: 0;&amp;quot;&amp;gt; &amp;lt;b&amp;gt;Сайт по сбору популярных статей Reddit&amp;lt;/b&amp;gt;&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Автор:&amp;lt;/b&amp;gt; Харламова Анна&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Группа:&amp;lt;/b&amp;gt; АДЭУ-221&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Дисциплина:&amp;lt;/b&amp;gt; Работа с API социальных сетей и визуализация данных&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Статус проекта:&amp;lt;/b&amp;gt; Выполнен&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #ffffff; padding: 20px; border-radius: 12px; margin-bottom: 20px; box-shadow: 0 1px 3px rgba(0,0,0,0.1);&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h3 style=&amp;quot;color: black;&amp;quot;&amp;gt;&amp;lt;b&amp;gt;Введение&amp;lt;/b&amp;gt;&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
🎯 Целью данной работы является разработка веб-приложения на основе FastAPI, предназначенного для автоматического сбора, обработки и предоставления пользователю популярных постов из Reddit и актуальных новостей с Hacker News.&lt;br /&gt;
Приложение должно обеспечивать удобный доступ к агрегированному контенту через API и веб-интерфейс.&lt;br /&gt;
&lt;br /&gt;
💡 Основная идея проекта — упростить доступ пользователей к актуальному и популярному контенту Reddit в удобном и структурированном виде.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;div style=&amp;quot;background-color: #ffffff; padding: 20px; border-radius: 12px; margin-bottom: 20px; box-shadow: 0 1px 3px rgba(0,0,0,0.1);&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h3 style=&amp;quot;color: black;&amp;quot;&amp;gt;&amp;lt;b&amp;gt;Задачи проекта:&amp;lt;/b&amp;gt;&amp;lt;/h3&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Изучить работу внешних API (Reddit и Hacker News).&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Реализовать клиент для получения постов и комментариев с Reddit.&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Реализовать клиент для получения новостей с Hacker News.&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Создать API-эндпоинты для: получения постов, получения новостей, получения комментариев.&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Организовать обработку и структурирование данных (JSON-формат).&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Реализовать логирование работы приложения.&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Обеспечить обработку ошибок при работе с внешними сервисами.&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Подключить статические файлы для отображения пользовательского интерфейса.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;div style=&amp;quot;background-color: #ffffff; padding: 20px; border-radius: 12px; margin-bottom: 20px; box-shadow: 0 1px 3px rgba(0,0,0,0.1);&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h3 style=&amp;quot;color: black;&amp;quot;&amp;gt;🏗 &amp;lt;b&amp;gt;Архитектура и блок-схема проекта&amp;lt;/b&amp;gt;&amp;lt;/h3&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;Архитектура построена по принципу клиент-серверной модели и включает несколько уровней:&amp;lt;/p&amp;gt;&lt;br /&gt;
        &lt;br /&gt;
        &amp;lt;div style=&amp;quot;display: flex; flex-direction: column; align-items: center; margin-top: 20px;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;div style=&amp;quot;position: relative; width: 360px;&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;div style=&amp;quot;background-color: #48db92; color: black; text-align: left; padding: 10px 0; border-radius: 8px; margin: 5px 0;&amp;quot;&amp;gt;🌐 &amp;lt;b&amp;gt;Уровень представления (Frontend)&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Реализован через статические файлы (static)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Отображает данные пользователю&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Отправляет HTTP-запросы к серверу&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;div style=&amp;quot;width: 2px; height: 15px; background-color: #48db92; margin: 0 auto;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;div style=&amp;quot;background-color: #48db92; color: black; text-align: left; padding: 10px 0; border-radius: 8px; margin: 5px 0;&amp;quot;&amp;gt;🚀 &amp;lt;b&amp;gt;Backend (API-сервер)&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Обработка HTTP-запросов&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Маршрутизация (/api/reddit, /api/news, /api/comments)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Возврат данных в формате JSON&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Логирование&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;div style=&amp;quot;width: 2px; height: 15px; background-color: #48db92; margin: 0 auto;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;div style=&amp;quot;background-color: #48db92; color: black; text-align: left; padding: 10px 0; border-radius: 8px; margin: 5px 0;&amp;quot;&amp;gt;🔌 &amp;lt;b&amp;gt;Слой бизнес-логики&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;RedditClient&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;NewsClient&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;div style=&amp;quot;width: 2px; height: 15px; background-color: #48db92; margin: 0 auto;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;div style=&amp;quot;background-color: #48db92; color: black; text-align: left; padding: 10px 0; border-radius: 8px; margin: 5px 0;&amp;quot;&amp;gt;🌍 &amp;lt;b&amp;gt;Внешние API&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Reddit API&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Hacker News API&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;div style=&amp;quot;width: 2px; height: 15px; background-color: #48db92; margin: 0 auto;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;div style=&amp;quot;background-color: #48db92; color: black; text-align: left; padding: 10px 0; border-radius: 8px; margin: 5px 0;&amp;quot;&amp;gt;⚙️ &amp;lt;b&amp;gt;Инфраструктурный слой&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Переменные окружения (.env)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Логирование (logging)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;HTTP-клиент (requests)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;ASGI-сервер Uvicorn&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #ffffff; padding: 20px; border-radius: 12px; margin-bottom: 20px; box-shadow: 0 1px 3px rgba(0,0,0,0.1);&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h3 style=&amp;quot;color: black;&amp;quot;&amp;gt;&amp;lt;b&amp;gt;Структура работы:&amp;lt;/b&amp;gt;&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:Структура в среде разработки.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #ffffff; padding: 20px; border-radius: 12px; margin-bottom: 20px; box-shadow: 0 1px 3px rgba(0,0,0,0.1);&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h3 style=&amp;quot;color: black;&amp;quot;&amp;gt;&amp;lt;b&amp;gt;Python-структура:&amp;lt;/b&amp;gt;&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import os&lt;br /&gt;
import logging&lt;br /&gt;
from fastapi import FastAPI, Query&lt;br /&gt;
from fastapi.staticfiles import StaticFiles&lt;br /&gt;
from dotenv import load_dotenv&lt;br /&gt;
&lt;br /&gt;
from reddit_client import RedditClient&lt;br /&gt;
from news_client import NewsClient&lt;br /&gt;
&lt;br /&gt;
load_dotenv()&lt;br /&gt;
&lt;br /&gt;
log_level = os.getenv(&amp;quot;LOG_LEVEL&amp;quot;, &amp;quot;INFO&amp;quot;)&lt;br /&gt;
logging.basicConfig(&lt;br /&gt;
    level=log_level,&lt;br /&gt;
    format=&amp;quot;%(asctime)s - %(name)s - %(levelname)s - %(message)s&amp;quot;,&lt;br /&gt;
    handlers=[&lt;br /&gt;
        logging.StreamHandler(),&lt;br /&gt;
        logging.FileHandler(&amp;quot;app.log&amp;quot;, encoding=&amp;quot;utf-8&amp;quot;)&lt;br /&gt;
    ]&lt;br /&gt;
)&lt;br /&gt;
logger = logging.getLogger(__name__)&lt;br /&gt;
&lt;br /&gt;
app = FastAPI(title=&amp;quot;Nexia API&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
@app.on_event(&amp;quot;startup&amp;quot;)&lt;br /&gt;
async def startup_event():&lt;br /&gt;
    logger.info(&amp;quot;Application starting up...&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
@app.get(&amp;quot;/api/reddit&amp;quot;)&lt;br /&gt;
async def get_reddit_feed(subreddit: str = Query(&amp;quot;popular&amp;quot;, description=&amp;quot;Subreddit name&amp;quot;)):&lt;br /&gt;
    logger.info(f&amp;quot;API request received for /api/reddit, subreddit: {subreddit}&amp;quot;)&lt;br /&gt;
    limit = int(os.getenv(&amp;quot;REDDIT_LIMIT&amp;quot;, &amp;quot;15&amp;quot;))&lt;br /&gt;
    client = RedditClient(limit=limit)&lt;br /&gt;
    result = client.fetch_posts(subreddit)&lt;br /&gt;
    if &amp;quot;error&amp;quot; in result:&lt;br /&gt;
        return {&amp;quot;status&amp;quot;: &amp;quot;error&amp;quot;, &amp;quot;message&amp;quot;: result[&amp;quot;error&amp;quot;]}&lt;br /&gt;
    return {&amp;quot;status&amp;quot;: &amp;quot;success&amp;quot;, &amp;quot;data&amp;quot;: result[&amp;quot;posts&amp;quot;]}&lt;br /&gt;
&lt;br /&gt;
@app.get(&amp;quot;/api/news&amp;quot;)&lt;br /&gt;
async def get_news_feed():&lt;br /&gt;
    logger.info(&amp;quot;API request received for /api/news&amp;quot;)&lt;br /&gt;
    client = NewsClient()&lt;br /&gt;
    news = client.fetch_latest_news(limit=15)&lt;br /&gt;
    return {&amp;quot;status&amp;quot;: &amp;quot;success&amp;quot;, &amp;quot;data&amp;quot;: news}&lt;br /&gt;
&lt;br /&gt;
@app.get(&amp;quot;/api/comments&amp;quot;)&lt;br /&gt;
async def get_comments(source: str = Query(..., description=&amp;quot;Source network (e.g. reddit)&amp;quot;), &lt;br /&gt;
                       post_id: str = Query(..., description=&amp;quot;Post ID&amp;quot;)):&lt;br /&gt;
    logger.info(f&amp;quot;API request received for /api/comments, source: {source}, id: {post_id}&amp;quot;)&lt;br /&gt;
    if source == &#039;reddit&#039;:&lt;br /&gt;
        client = RedditClient()&lt;br /&gt;
        comments = client.fetch_comments(post_id)&lt;br /&gt;
        return {&amp;quot;status&amp;quot;: &amp;quot;success&amp;quot;, &amp;quot;data&amp;quot;: comments}&lt;br /&gt;
    &lt;br /&gt;
    # News comments aren&#039;t supported in this iteration&lt;br /&gt;
    return {&amp;quot;status&amp;quot;: &amp;quot;error&amp;quot;, &amp;quot;message&amp;quot;: &amp;quot;Comments not supported for this source.&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
app.mount(&amp;quot;/&amp;quot;, StaticFiles(directory=&amp;quot;static&amp;quot;, html=True), name=&amp;quot;static&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    import uvicorn&lt;br /&gt;
    logger.info(&amp;quot;Starting uvicorn server on port 8000&amp;quot;)&lt;br /&gt;
    uvicorn.run(app, host=&amp;quot;0.0.0.0&amp;quot;, port=8000)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #ffffff; padding: 20px; border-radius: 12px; margin-bottom: 20px; box-shadow: 0 1px 3px rgba(0,0,0,0.1);&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h3 style=&amp;quot;color: black;&amp;quot;&amp;gt;⚙️ &amp;lt;b&amp;gt;Логика работы приложения&amp;lt;/b&amp;gt;&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:Логика работы приложения.png]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #ffffff; padding: 20px; border-radius: 12px; margin-bottom: 20px; box-shadow: 0 1px 3px rgba(0,0,0,0.1);&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h3 style=&amp;quot;color: black;&amp;quot;&amp;gt;&amp;lt;b&amp;gt;Пример вывода новостей:&amp;lt;/b&amp;gt;&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:Сайт.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #ffffff; padding: 20px; border-radius: 12px; margin-bottom: 20px; box-shadow: 0 1px 3px rgba(0,0,0,0.1);&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h3 style=&amp;quot;color: black;&amp;quot;&amp;gt;&amp;lt;b&amp;gt;Выводы о проделанной работе:&amp;lt;/b&amp;gt;&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В ходе выполнения проекта разработано веб-приложение на FastAPI, агрегирующее данные из Reddit и Hacker News. Реализованы API-эндпоинты, обработка данных и клиент-серверная архитектура. Поставленная цель достигнута, приложение успешно выполняет сбор и предоставление актуального контента.&lt;br /&gt;
&lt;br /&gt;
1. В процессе разработки:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Освоен фреймворк FastAPI для создания API.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Реализовано взаимодействие с внешними REST API.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Разработана клиент-серверная архитектура.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Настроено логирование и обработка ошибок.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Выполнено структурирование и преобразование данных.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Разработанное приложение:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Автоматизирует получение популярных постов и новостей.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Предоставляет единый интерфейс доступа к данным.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Может быть масштабировано и расширено.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Харламова Анна</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:%D0%9B%D0%BE%D0%B3%D0%B8%D0%BA%D0%B0_%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B_%D0%BF%D1%80%D0%B8%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F.png&amp;diff=45501</id>
		<title>Файл:Логика работы приложения.png</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:%D0%9B%D0%BE%D0%B3%D0%B8%D0%BA%D0%B0_%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B_%D0%BF%D1%80%D0%B8%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F.png&amp;diff=45501"/>
		<updated>2026-03-27T00:22:20Z</updated>

		<summary type="html">&lt;p&gt;Харламова Анна: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Этапы обработки данных приложением&lt;/div&gt;</summary>
		<author><name>Харламова Анна</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=Nexia&amp;diff=45499</id>
		<title>Nexia</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=Nexia&amp;diff=45499"/>
		<updated>2026-03-27T00:12:48Z</updated>

		<summary type="html">&lt;p&gt;Харламова Анна: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Описание || Веб-приложение, отслеживающее популярные посты с платформы Reddit.&lt;br /&gt;
|-&lt;br /&gt;
| Область знаний || [[Программирование на Python, Работа с API, Веб-технологии]]&lt;br /&gt;
|-&lt;br /&gt;
| Близкие рецепту понятия || Лента, популярное, новости&lt;br /&gt;
|-&lt;br /&gt;
| Среды и средства для приготовления рецепта || [[Python]], [[Visual studio code]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Карточка проекта --&amp;gt;&lt;br /&gt;
    &amp;lt;div style=&amp;quot;background-color: #ffffff; padding: 20px; border-radius: 12px; margin-bottom: 20px; box-shadow: 0 1px 3px rgba(0,0,0,0.1);&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2 style=&amp;quot;color: #2c3e50; border-bottom: 2px solid #48db92; padding-bottom: 10px; margin-top: 0;&amp;quot;&amp;gt; Сайт по сбору популярных статей Reddit.&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Автор:&amp;lt;/b&amp;gt; Харламова Анна&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Группа:&amp;lt;/b&amp;gt; АДЭУ-221&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Дисциплина:&amp;lt;/b&amp;gt; Работа с API социальных сетей и визуализация данных&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Статус проекта:&amp;lt;/b&amp;gt; Выполнен&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #ffffff; padding: 20px; border-radius: 12px; margin-bottom: 20px; box-shadow: 0 1px 3px rgba(0,0,0,0.1);&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h3 style=&amp;quot;color: black;&amp;quot;&amp;gt;&amp;lt;b&amp;gt;Введение&amp;lt;/b&amp;gt;&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
🎯 Целью данной работы является разработка веб-приложения на основе FastAPI, предназначенного для автоматического сбора, обработки и предоставления пользователю популярных постов из Reddit и актуальных новостей с Hacker News.&lt;br /&gt;
Приложение должно обеспечивать удобный доступ к агрегированному контенту через API и веб-интерфейс.&lt;br /&gt;
&lt;br /&gt;
💡 Основная идея проекта — упростить доступ пользователей к актуальному и популярному контенту Reddit в удобном и структурированном виде.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;div style=&amp;quot;background-color: #ffffff; padding: 20px; border-radius: 12px; margin-bottom: 20px; box-shadow: 0 1px 3px rgba(0,0,0,0.1);&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h3 style=&amp;quot;color: black;&amp;quot;&amp;gt;&amp;lt;b&amp;gt;Задачи проекта:&amp;lt;/b&amp;gt;&amp;lt;/h3&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Изучить работу внешних API (Reddit и Hacker News).&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Реализовать клиент для получения постов и комментариев с Reddit.&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Реализовать клиент для получения новостей с Hacker News.&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Создать API-эндпоинты для: получения постов, получения новостей, получения комментариев.&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Организовать обработку и структурирование данных (JSON-формат).&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Реализовать логирование работы приложения.&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Обеспечить обработку ошибок при работе с внешними сервисами.&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Подключить статические файлы для отображения пользовательского интерфейса.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;div style=&amp;quot;background-color: #ffffff; padding: 20px; border-radius: 12px; margin-bottom: 20px; box-shadow: 0 1px 3px rgba(0,0,0,0.1);&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h3 style=&amp;quot;color: black;&amp;quot;&amp;gt;🏗 &amp;lt;b&amp;gt;Архитектура и блок-схема проекта&amp;lt;/b&amp;gt;&amp;lt;/h3&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;Архитектура построена по принципу клиент-серверной модели и включает несколько уровней:&amp;lt;/p&amp;gt;&lt;br /&gt;
        &lt;br /&gt;
        &amp;lt;div style=&amp;quot;display: flex; flex-direction: column; align-items: center; margin-top: 20px;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;div style=&amp;quot;position: relative; width: 360px;&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;div style=&amp;quot;background-color: #48db92; color: black; text-align: left; padding: 10px 0; border-radius: 8px; margin: 5px 0;&amp;quot;&amp;gt;🌐 &amp;lt;b&amp;gt;Уровень представления (Frontend)&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Реализован через статические файлы (static)&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Отображает данные пользователю&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Отправляет HTTP-запросы к серверу&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;div style=&amp;quot;width: 2px; height: 15px; background-color: #48db92; margin: 0 auto;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;div style=&amp;quot;background-color: #48db92; color: black; text-align: left; padding: 10px 0; border-radius: 8px; margin: 5px 0;&amp;quot;&amp;gt;🚀 &amp;lt;b&amp;gt;Backend (API-сервер)&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Обработка HTTP-запросов&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Маршрутизация (/api/reddit, /api/news, /api/comments)&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Возврат данных в формате JSON&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Логирование&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;div style=&amp;quot;width: 2px; height: 15px; background-color: #48db92; margin: 0 auto;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;div style=&amp;quot;background-color: #48db92; color: black; text-align: left; padding: 10px 0; border-radius: 8px; margin: 5px 0;&amp;quot;&amp;gt;🔌 &amp;lt;b&amp;gt;Слой бизнес-логики&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;RedditClient&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;NewsClient&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;div style=&amp;quot;width: 2px; height: 15px; background-color: #48db92; margin: 0 auto;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;div style=&amp;quot;background-color: #48db92; color: black; text-align: left; padding: 10px 0; border-radius: 8px; margin: 5px 0;&amp;quot;&amp;gt;🌍 &amp;lt;b&amp;gt;Внешние API&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Reddit API&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Hacker News API&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;div style=&amp;quot;width: 2px; height: 15px; background-color: #48db92; margin: 0 auto;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;div style=&amp;quot;background-color: #48db92; color: black; text-align: left; padding: 10px 0; border-radius: 8px; margin: 5px 0;&amp;quot;&amp;gt;⚙️ &amp;lt;b&amp;gt;Инфраструктурный слой&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Переменные окружения (.env)&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Логирование (logging)&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;HTTP-клиент (requests)&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;ASGI-сервер Uvicorn&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
            &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #ffffff; padding: 20px; border-radius: 12px; margin-bottom: 20px; box-shadow: 0 1px 3px rgba(0,0,0,0.1);&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h3 style=&amp;quot;color: black;&amp;quot;&amp;gt;&amp;lt;b&amp;gt;Структура работы:&amp;lt;/b&amp;gt;&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:Структура в среде разработки.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #ffffff; padding: 20px; border-radius: 12px; margin-bottom: 20px; box-shadow: 0 1px 3px rgba(0,0,0,0.1);&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h3 style=&amp;quot;color: black;&amp;quot;&amp;gt;&amp;lt;b&amp;gt;Python-структура:&amp;lt;/b&amp;gt;&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import os&lt;br /&gt;
import logging&lt;br /&gt;
from fastapi import FastAPI, Query&lt;br /&gt;
from fastapi.staticfiles import StaticFiles&lt;br /&gt;
from dotenv import load_dotenv&lt;br /&gt;
&lt;br /&gt;
from reddit_client import RedditClient&lt;br /&gt;
from news_client import NewsClient&lt;br /&gt;
&lt;br /&gt;
load_dotenv()&lt;br /&gt;
&lt;br /&gt;
log_level = os.getenv(&amp;quot;LOG_LEVEL&amp;quot;, &amp;quot;INFO&amp;quot;)&lt;br /&gt;
logging.basicConfig(&lt;br /&gt;
    level=log_level,&lt;br /&gt;
    format=&amp;quot;%(asctime)s - %(name)s - %(levelname)s - %(message)s&amp;quot;,&lt;br /&gt;
    handlers=[&lt;br /&gt;
        logging.StreamHandler(),&lt;br /&gt;
        logging.FileHandler(&amp;quot;app.log&amp;quot;, encoding=&amp;quot;utf-8&amp;quot;)&lt;br /&gt;
    ]&lt;br /&gt;
)&lt;br /&gt;
logger = logging.getLogger(__name__)&lt;br /&gt;
&lt;br /&gt;
app = FastAPI(title=&amp;quot;Nexia API&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
@app.on_event(&amp;quot;startup&amp;quot;)&lt;br /&gt;
async def startup_event():&lt;br /&gt;
    logger.info(&amp;quot;Application starting up...&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
@app.get(&amp;quot;/api/reddit&amp;quot;)&lt;br /&gt;
async def get_reddit_feed(subreddit: str = Query(&amp;quot;popular&amp;quot;, description=&amp;quot;Subreddit name&amp;quot;)):&lt;br /&gt;
    logger.info(f&amp;quot;API request received for /api/reddit, subreddit: {subreddit}&amp;quot;)&lt;br /&gt;
    limit = int(os.getenv(&amp;quot;REDDIT_LIMIT&amp;quot;, &amp;quot;15&amp;quot;))&lt;br /&gt;
    client = RedditClient(limit=limit)&lt;br /&gt;
    result = client.fetch_posts(subreddit)&lt;br /&gt;
    if &amp;quot;error&amp;quot; in result:&lt;br /&gt;
        return {&amp;quot;status&amp;quot;: &amp;quot;error&amp;quot;, &amp;quot;message&amp;quot;: result[&amp;quot;error&amp;quot;]}&lt;br /&gt;
    return {&amp;quot;status&amp;quot;: &amp;quot;success&amp;quot;, &amp;quot;data&amp;quot;: result[&amp;quot;posts&amp;quot;]}&lt;br /&gt;
&lt;br /&gt;
@app.get(&amp;quot;/api/news&amp;quot;)&lt;br /&gt;
async def get_news_feed():&lt;br /&gt;
    logger.info(&amp;quot;API request received for /api/news&amp;quot;)&lt;br /&gt;
    client = NewsClient()&lt;br /&gt;
    news = client.fetch_latest_news(limit=15)&lt;br /&gt;
    return {&amp;quot;status&amp;quot;: &amp;quot;success&amp;quot;, &amp;quot;data&amp;quot;: news}&lt;br /&gt;
&lt;br /&gt;
@app.get(&amp;quot;/api/comments&amp;quot;)&lt;br /&gt;
async def get_comments(source: str = Query(..., description=&amp;quot;Source network (e.g. reddit)&amp;quot;), &lt;br /&gt;
                       post_id: str = Query(..., description=&amp;quot;Post ID&amp;quot;)):&lt;br /&gt;
    logger.info(f&amp;quot;API request received for /api/comments, source: {source}, id: {post_id}&amp;quot;)&lt;br /&gt;
    if source == &#039;reddit&#039;:&lt;br /&gt;
        client = RedditClient()&lt;br /&gt;
        comments = client.fetch_comments(post_id)&lt;br /&gt;
        return {&amp;quot;status&amp;quot;: &amp;quot;success&amp;quot;, &amp;quot;data&amp;quot;: comments}&lt;br /&gt;
    &lt;br /&gt;
    # News comments aren&#039;t supported in this iteration&lt;br /&gt;
    return {&amp;quot;status&amp;quot;: &amp;quot;error&amp;quot;, &amp;quot;message&amp;quot;: &amp;quot;Comments not supported for this source.&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
app.mount(&amp;quot;/&amp;quot;, StaticFiles(directory=&amp;quot;static&amp;quot;, html=True), name=&amp;quot;static&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    import uvicorn&lt;br /&gt;
    logger.info(&amp;quot;Starting uvicorn server on port 8000&amp;quot;)&lt;br /&gt;
    uvicorn.run(app, host=&amp;quot;0.0.0.0&amp;quot;, port=8000)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #ffffff; padding: 20px; border-radius: 12px; margin-bottom: 20px; box-shadow: 0 1px 3px rgba(0,0,0,0.1);&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h3 style=&amp;quot;color: black;&amp;quot;&amp;gt;⚙️ &amp;lt;b&amp;gt;Логика работы приложения&amp;lt;/b&amp;gt;&amp;lt;/h3&amp;gt;&lt;br /&gt;
{{#mermaid:&lt;br /&gt;
flowchart TB&lt;br /&gt;
    A[Пользователь обращается к API (например, /api/reddit)] --&amp;gt; B(Сервер на FastAPI принимает запрос)&lt;br /&gt;
    B --&amp;gt; C(В зависимости от маршрута создаётся RedditClient или NewsClient)&lt;br /&gt;
    C --&amp;gt; D(Клиент отправляет HTTP-запрос к внешнему API)&lt;br /&gt;
    D --&amp;gt; E(Полученные данные:проверяются, обрабатываются и приводятся к нужному формату)&lt;br /&gt;
    E --&amp;gt; F[Результат возвращается пользователю в формате JSON]&lt;br /&gt;
    F --&amp;gt; G[Все действия логируются]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #ffffff; padding: 20px; border-radius: 12px; margin-bottom: 20px; box-shadow: 0 1px 3px rgba(0,0,0,0.1);&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h3 style=&amp;quot;color: black;&amp;quot;&amp;gt;&amp;lt;b&amp;gt;Страница с новостями:&amp;lt;/b&amp;gt;&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:Сайт.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #ffffff; padding: 20px; border-radius: 12px; margin-bottom: 20px; box-shadow: 0 1px 3px rgba(0,0,0,0.1);&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h3 style=&amp;quot;color: black;&amp;quot;&amp;gt;&amp;lt;b&amp;gt;Выводы о проделанной работе:&amp;lt;/b&amp;gt;&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В ходе выполнения проекта разработано веб-приложение на FastAPI, агрегирующее данные из Reddit и Hacker News. Реализованы API-эндпоинты, обработка данных и клиент-серверная архитектура. Поставленная цель достигнута, приложение успешно выполняет сбор и предоставление актуального контента.&lt;br /&gt;
&lt;br /&gt;
1. В процессе разработки:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Освоен фреймворк FastAPI для создания API.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Реализовано взаимодействие с внешними REST API.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Разработана клиент-серверная архитектура.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Настроено логирование и обработка ошибок.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Выполнено структурирование и преобразование данных.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Разработанное приложение:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Автоматизирует получение популярных постов и новостей.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Предоставляет единый интерфейс доступа к данным.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Может быть масштабировано и расширено.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Харламова Анна</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=Nexia&amp;diff=45498</id>
		<title>Nexia</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=Nexia&amp;diff=45498"/>
		<updated>2026-03-27T00:10:00Z</updated>

		<summary type="html">&lt;p&gt;Харламова Анна: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Описание || Веб-приложение, отслеживающее популярные посты с платформы Reddit.&lt;br /&gt;
|-&lt;br /&gt;
| Область знаний || [[Программирование на Python, Работа с API, Веб-технологии]]&lt;br /&gt;
|-&lt;br /&gt;
| Близкие рецепту понятия || Лента, популярное, новости&lt;br /&gt;
|-&lt;br /&gt;
| Среды и средства для приготовления рецепта || [[Python]], [[Visual studio code]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Карточка проекта --&amp;gt;&lt;br /&gt;
    &amp;lt;div style=&amp;quot;background-color: #ffffff; padding: 20px; border-radius: 12px; margin-bottom: 20px; box-shadow: 0 1px 3px rgba(0,0,0,0.1);&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2 style=&amp;quot;color: #2c3e50; border-bottom: 2px solid #48db92; padding-bottom: 10px; margin-top: 0;&amp;quot;&amp;gt; Сайт по сбору популярных статей Reddit.&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Автор:&amp;lt;/b&amp;gt; Харламова Анна&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Группа:&amp;lt;/b&amp;gt; АДЭУ-221&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Дисциплина:&amp;lt;/b&amp;gt; Работа с API социальных сетей и визуализация данных&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Статус проекта:&amp;lt;/b&amp;gt; Выполнен&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #ffffff; padding: 20px; border-radius: 12px; margin-bottom: 20px; box-shadow: 0 1px 3px rgba(0,0,0,0.1);&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h3 style=&amp;quot;color: black;&amp;quot;&amp;gt;&amp;lt;b&amp;gt;Введение&amp;lt;/b&amp;gt;&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
🎯 Целью данной работы является разработка веб-приложения на основе FastAPI, предназначенного для автоматического сбора, обработки и предоставления пользователю популярных постов из Reddit и актуальных новостей с Hacker News.&lt;br /&gt;
Приложение должно обеспечивать удобный доступ к агрегированному контенту через API и веб-интерфейс.&lt;br /&gt;
&lt;br /&gt;
💡 Основная идея проекта — упростить доступ пользователей к актуальному и популярному контенту Reddit в удобном и структурированном виде.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;div style=&amp;quot;background-color: #ffffff; padding: 20px; border-radius: 12px; margin-bottom: 20px; box-shadow: 0 1px 3px rgba(0,0,0,0.1);&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h3 style=&amp;quot;color: black;&amp;quot;&amp;gt;&amp;lt;b&amp;gt;Задачи проекта:&amp;lt;/b&amp;gt;&amp;lt;/h3&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Изучить работу внешних API (Reddit и Hacker News).&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Реализовать клиент для получения постов и комментариев с Reddit.&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Реализовать клиент для получения новостей с Hacker News.&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Создать API-эндпоинты для: получения постов, получения новостей, получения комментариев.&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Организовать обработку и структурирование данных (JSON-формат).&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Реализовать логирование работы приложения.&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Обеспечить обработку ошибок при работе с внешними сервисами.&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Подключить статические файлы для отображения пользовательского интерфейса.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;div style=&amp;quot;background-color: #ffffff; padding: 20px; border-radius: 12px; margin-bottom: 20px; box-shadow: 0 1px 3px rgba(0,0,0,0.1);&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h3 style=&amp;quot;color: black;&amp;quot;&amp;gt;🏗 &amp;lt;b&amp;gt;Архитектура и блок-схема проекта&amp;lt;/b&amp;gt;&amp;lt;/h3&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;Архитектура построена по принципу клиент-серверной модели и включает несколько уровней:&amp;lt;/p&amp;gt;&lt;br /&gt;
        &lt;br /&gt;
        &amp;lt;div style=&amp;quot;display: flex; flex-direction: column; align-items: center; margin-top: 20px;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;div style=&amp;quot;position: relative; width: 360px;&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;div style=&amp;quot;background-color: #48db92; color: black; text-align: left; padding: 10px 0; border-radius: 8px; margin: 5px 0;&amp;quot;&amp;gt;🌐 &amp;lt;b&amp;gt;Уровень представления (Frontend)&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Реализован через статические файлы (static)&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Отображает данные пользователю&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Отправляет HTTP-запросы к серверу&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;div style=&amp;quot;width: 2px; height: 15px; background-color: #48db92; margin: 0 auto;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;div style=&amp;quot;background-color: #48db92; color: black; text-align: left; padding: 10px 0; border-radius: 8px; margin: 5px 0;&amp;quot;&amp;gt;🚀 &amp;lt;b&amp;gt;Backend (API-сервер)&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Обработка HTTP-запросов&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Маршрутизация (/api/reddit, /api/news, /api/comments)&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Возврат данных в формате JSON&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Логирование&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;div style=&amp;quot;width: 2px; height: 15px; background-color: #48db92; margin: 0 auto;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;div style=&amp;quot;background-color: #48db92; color: black; text-align: left; padding: 10px 0; border-radius: 8px; margin: 5px 0;&amp;quot;&amp;gt;🔌 &amp;lt;b&amp;gt;Слой бизнес-логики&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;RedditClient&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;NewsClient&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;div style=&amp;quot;width: 2px; height: 15px; background-color: #48db92; margin: 0 auto;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;div style=&amp;quot;background-color: #48db92; color: black; text-align: left; padding: 10px 0; border-radius: 8px; margin: 5px 0;&amp;quot;&amp;gt;🌍 &amp;lt;b&amp;gt;Внешние API&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Reddit API&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Hacker News API&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;div style=&amp;quot;width: 2px; height: 15px; background-color: #48db92; margin: 0 auto;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;div style=&amp;quot;background-color: #48db92; color: black; text-align: left; padding: 10px 0; border-radius: 8px; margin: 5px 0;&amp;quot;&amp;gt;⚙️ &amp;lt;b&amp;gt;Инфраструктурный слой&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Переменные окружения (.env)&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Логирование (logging)&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;HTTP-клиент (requests)&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;ASGI-сервер Uvicorn&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
            &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #ffffff; padding: 20px; border-radius: 12px; margin-bottom: 20px; box-shadow: 0 1px 3px rgba(0,0,0,0.1);&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h3 style=&amp;quot;color: black;&amp;quot;&amp;gt;&amp;lt;b&amp;gt;Структура работы:&amp;lt;/b&amp;gt;&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:Структура в среде разработки.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #ffffff; padding: 20px; border-radius: 12px; margin-bottom: 20px; box-shadow: 0 1px 3px rgba(0,0,0,0.1);&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h3 style=&amp;quot;color: black;&amp;quot;&amp;gt;⚙️ &amp;lt;b&amp;gt;Логика работы приложения&amp;lt;/b&amp;gt;&amp;lt;/h3&amp;gt;&lt;br /&gt;
{{#mermaid:&lt;br /&gt;
flowchart TB&lt;br /&gt;
    A[Пользователь обращается к API (например, /api/reddit)] --&amp;gt; B(Сервер на FastAPI принимает запрос)&lt;br /&gt;
    B --&amp;gt; C(В зависимости от маршрута создаётся RedditClient или NewsClient)&lt;br /&gt;
    C --&amp;gt; D(Клиент отправляет HTTP-запрос к внешнему API)&lt;br /&gt;
    D --&amp;gt; E(Полученные данные:проверяются, обрабатываются и приводятся к нужному формату)&lt;br /&gt;
    E --&amp;gt; F[Результат возвращается пользователю в формате JSON]&lt;br /&gt;
    F --&amp;gt; G[Все действия логируются]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #ffffff; padding: 20px; border-radius: 12px; margin-bottom: 20px; box-shadow: 0 1px 3px rgba(0,0,0,0.1);&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h3 style=&amp;quot;color: black;&amp;quot;&amp;gt;&amp;lt;b&amp;gt;Страница с новостями:&amp;lt;/b&amp;gt;&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:Сайт.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #ffffff; padding: 20px; border-radius: 12px; margin-bottom: 20px; box-shadow: 0 1px 3px rgba(0,0,0,0.1);&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h3 style=&amp;quot;color: black;&amp;quot;&amp;gt;&amp;lt;b&amp;gt;Выводы о проделанной работе:&amp;lt;/b&amp;gt;&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В ходе выполнения проекта разработано веб-приложение на FastAPI, агрегирующее данные из Reddit и Hacker News. Реализованы API-эндпоинты, обработка данных и клиент-серверная архитектура. Поставленная цель достигнута, приложение успешно выполняет сбор и предоставление актуального контента.&lt;br /&gt;
&lt;br /&gt;
1. В процессе разработки:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Освоен фреймворк FastAPI для создания API.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Реализовано взаимодействие с внешними REST API.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Разработана клиент-серверная архитектура.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Настроено логирование и обработка ошибок.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Выполнено структурирование и преобразование данных.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Разработанное приложение:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Автоматизирует получение популярных постов и новостей.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Предоставляет единый интерфейс доступа к данным.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Может быть масштабировано и расширено.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Харламова Анна</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:%D0%A1%D1%82%D1%80%D1%83%D0%BA%D1%82%D1%83%D1%80%D0%B0_%D0%B2_%D1%81%D1%80%D0%B5%D0%B4%D0%B5_%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B8.png&amp;diff=45494</id>
		<title>Файл:Структура в среде разработки.png</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:%D0%A1%D1%82%D1%80%D1%83%D0%BA%D1%82%D1%83%D1%80%D0%B0_%D0%B2_%D1%81%D1%80%D0%B5%D0%B4%D0%B5_%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B8.png&amp;diff=45494"/>
		<updated>2026-03-26T23:51:39Z</updated>

		<summary type="html">&lt;p&gt;Харламова Анна: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Структура кода&lt;/div&gt;</summary>
		<author><name>Харламова Анна</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:%D0%A1%D1%82%D1%80%D1%83%D0%BA%D1%82%D1%83%D1%80%D0%B0_%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B0.png&amp;diff=45491</id>
		<title>Файл:Структура проекта.png</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:%D0%A1%D1%82%D1%80%D1%83%D0%BA%D1%82%D1%83%D1%80%D0%B0_%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B0.png&amp;diff=45491"/>
		<updated>2026-03-26T23:49:45Z</updated>

		<summary type="html">&lt;p&gt;Харламова Анна: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Структура проекта&lt;/div&gt;</summary>
		<author><name>Харламова Анна</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:%D0%A1%D0%B0%D0%B9%D1%82.png&amp;diff=45488</id>
		<title>Файл:Сайт.png</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:%D0%A1%D0%B0%D0%B9%D1%82.png&amp;diff=45488"/>
		<updated>2026-03-26T23:44:59Z</updated>

		<summary type="html">&lt;p&gt;Харламова Анна: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Пример выведения новости&lt;/div&gt;</summary>
		<author><name>Харламова Анна</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=Nexia&amp;diff=45487</id>
		<title>Nexia</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=Nexia&amp;diff=45487"/>
		<updated>2026-03-26T23:42:09Z</updated>

		<summary type="html">&lt;p&gt;Харламова Анна: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Описание || Веб-приложение, отслеживающее популярные посты с платформы Reddit.&lt;br /&gt;
|-&lt;br /&gt;
| Область знаний || [[Программирование на Python, Работа с API, Веб-технологии]]&lt;br /&gt;
|-&lt;br /&gt;
| Близкие рецепту понятия || Лента, популярное, новости&lt;br /&gt;
|-&lt;br /&gt;
| Среды и средства для приготовления рецепта || [[Python]], [[Visual studio code]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Карточка проекта --&amp;gt;&lt;br /&gt;
    &amp;lt;div style=&amp;quot;background-color: #ffffff; padding: 20px; border-radius: 12px; margin-bottom: 20px; box-shadow: 0 1px 3px rgba(0,0,0,0.1);&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2 style=&amp;quot;color: #2c3e50; border-bottom: 2px solid #48db92; padding-bottom: 10px; margin-top: 0;&amp;quot;&amp;gt; Сайт по сбору популярных статей Reddit.&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Автор:&amp;lt;/b&amp;gt; Харламова Анна&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Группа:&amp;lt;/b&amp;gt; АДЭУ-221&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Дисциплина:&amp;lt;/b&amp;gt; Работа с API социальных сетей и визуализация данных&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Статус проекта:&amp;lt;/b&amp;gt; Выполнен&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #ffffff; padding: 20px; border-radius: 12px; margin-bottom: 20px; box-shadow: 0 1px 3px rgba(0,0,0,0.1);&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h3 style=&amp;quot;color: black;&amp;quot;&amp;gt;Введение&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
🎯 Целью данной работы является разработка веб-приложения на основе FastAPI, предназначенного для автоматического сбора, обработки и предоставления пользователю популярных постов из Reddit и актуальных новостей с Hacker News.&lt;br /&gt;
Приложение должно обеспечивать удобный доступ к агрегированному контенту через API и веб-интерфейс.&lt;br /&gt;
&lt;br /&gt;
💡 Основная идея проекта — упростить доступ пользователей к актуальному и популярному контенту Reddit в удобном и структурированном виде.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;div style=&amp;quot;background-color: #ffffff; padding: 20px; border-radius: 12px; margin-bottom: 20px; box-shadow: 0 1px 3px rgba(0,0,0,0.1);&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h3 style=&amp;quot;color: black;&amp;quot;&amp;gt;Задачи проекта:&amp;lt;/h3&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Изучить работу внешних API (Reddit и Hacker News).&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Реализовать клиент для получения постов и комментариев с Reddit.&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Реализовать клиент для получения новостей с Hacker News.&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Создать API-эндпоинты для: получения постов, получения новостей, получения комментариев.&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Организовать обработку и структурирование данных (JSON-формат).&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Реализовать логирование работы приложения.&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Обеспечить обработку ошибок при работе с внешними сервисами.&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Подключить статические файлы для отображения пользовательского интерфейса.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;div style=&amp;quot;background-color: #ffffff; padding: 20px; border-radius: 12px; margin-bottom: 20px; box-shadow: 0 1px 3px rgba(0,0,0,0.1);&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h3 style=&amp;quot;color: black;&amp;quot;&amp;gt;🏗 Архитектура и блок-схема проекта&amp;lt;/h3&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;Архитектура построена по принципу клиент-серверной модели и включает несколько уровней:&amp;lt;/p&amp;gt;&lt;br /&gt;
        &lt;br /&gt;
        &amp;lt;div style=&amp;quot;display: flex; flex-direction: column; align-items: center; margin-top: 20px;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;div style=&amp;quot;position: relative; width: 360px;&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;div style=&amp;quot;background-color: #48db92; color: black; text-align: left; padding: 10px 0; border-radius: 8px; margin: 5px 0;&amp;quot;&amp;gt;🌐 Уровень представления (Frontend)&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Реализован через статические файлы (static).&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Отображает данные пользователю.&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Отправляет HTTP-запросы к серверу.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;div style=&amp;quot;width: 2px; height: 15px; background-color: #48db92; margin: 0 auto;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;div style=&amp;quot;background-color: #48db92; color: black; text-align: left; padding: 10px 0; border-radius: 8px; margin: 5px 0;&amp;quot;&amp;gt;🚀 Backend (API-сервер)&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Обработка HTTP-запросов.&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Маршрутизация (/api/reddit, /api/news, /api/comments).&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Возврат данных в формате JSON.&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Логирование.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;div style=&amp;quot;width: 2px; height: 15px; background-color: #48db92; margin: 0 auto;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;div style=&amp;quot;background-color: #48db92; color: black; text-align: left; padding: 10px 0; border-radius: 8px; margin: 5px 0;&amp;quot;&amp;gt;🔌 Слой бизнес-логики&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;RedditClient.&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;NewsClient.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;div style=&amp;quot;width: 2px; height: 15px; background-color: #48db92; margin: 0 auto;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;div style=&amp;quot;background-color: #48db92; color: black; text-align: left; padding: 10px 0; border-radius: 8px; margin: 5px 0;&amp;quot;&amp;gt;🌍 Внешние API&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Reddit API.&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Hacker News API.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;div style=&amp;quot;width: 2px; height: 15px; background-color: #48db92; margin: 0 auto;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;div style=&amp;quot;background-color: #48db92; color: black; text-align: left; padding: 10px 0; border-radius: 8px; margin: 5px 0;&amp;quot;&amp;gt;⚙️ Инфраструктурный слой&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Переменные окружения (.env).&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Логирование (logging).&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;HTTP-клиент (requests).&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;ASGI-сервер Uvicorn.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
            &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #ffffff; padding: 20px; border-radius: 12px; margin-bottom: 20px; box-shadow: 0 1px 3px rgba(0,0,0,0.1);&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h3 style=&amp;quot;color: black;&amp;quot;&amp;gt;⚙️ Логика работы приложения&amp;lt;/h3&amp;gt;&lt;br /&gt;
{{#mermaid:&lt;br /&gt;
flowchart TB&lt;br /&gt;
    A[Пользователь обращается к API (например, /api/reddit)] --&amp;gt; B(Сервер на FastAPI принимает запрос)&lt;br /&gt;
    B --&amp;gt; C(В зависимости от маршрута создаётся RedditClient или NewsClient)&lt;br /&gt;
    C --&amp;gt; D(Клиент отправляет HTTP-запрос к внешнему API)&lt;br /&gt;
    D --&amp;gt; E(Полученные данные:проверяются, обрабатываются и приводятся к нужному формату)&lt;br /&gt;
    E --&amp;gt; F[Результат возвращается пользователю в формате JSON]&lt;br /&gt;
    F --&amp;gt; G[Все действия логируются]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #ffffff; padding: 20px; border-radius: 12px; margin-bottom: 20px; box-shadow: 0 1px 3px rgba(0,0,0,0.1);&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h3 style=&amp;quot;color: black;&amp;quot;&amp;gt;Выводы о проделанной работе:&amp;lt;/h3&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #ffffff; padding: 20px; border-radius: 12px; margin-bottom: 20px; box-shadow: 0 1px 3px rgba(0,0,0,0.1);&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h3 style=&amp;quot;color: black;&amp;quot;&amp;gt;Выводы о проделанной работе:&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В ходе выполнения проекта разработано веб-приложение на FastAPI, агрегирующее данные из Reddit и Hacker News. Реализованы API-эндпоинты, обработка данных и клиент-серверная архитектура. Поставленная цель достигнута, приложение успешно выполняет сбор и предоставление актуального контента.&lt;br /&gt;
&lt;br /&gt;
1. В процессе разработки:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Освоен фреймворк FastAPI для создания API.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Реализовано взаимодействие с внешними REST API.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Разработана клиент-серверная архитектура.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Настроено логирование и обработка ошибок.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Выполнено структурирование и преобразование данных.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Разработанное приложение:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Автоматизирует получение популярных постов и новостей.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Предоставляет единый интерфейс доступа к данным.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Может быть масштабировано и расширено.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Харламова Анна</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=Nexia&amp;diff=45470</id>
		<title>Nexia</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=Nexia&amp;diff=45470"/>
		<updated>2026-03-26T22:40:42Z</updated>

		<summary type="html">&lt;p&gt;Харламова Анна: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Описание || Сайт, отслеживающий популярные посты с платформы Reddit.&lt;br /&gt;
|-&lt;br /&gt;
| Область знаний || [[Программирование на Python, Работа с API, Веб-технологии]]&lt;br /&gt;
|-&lt;br /&gt;
| Близкие рецепту понятия || Лента, популярное, новости&lt;br /&gt;
|-&lt;br /&gt;
| Среды и средства для приготовления рецепта || [[Python]], [[Visual studio code]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Карточка проекта --&amp;gt;&lt;br /&gt;
    &amp;lt;div style=&amp;quot;background-color: #ffffff; padding: 20px; border-radius: 12px; margin-bottom: 20px; box-shadow: 0 1px 3px rgba(0,0,0,0.1);&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2 style=&amp;quot;color: #2c3e50; border-bottom: 2px solid #48db92; padding-bottom: 10px; margin-top: 0;&amp;quot;&amp;gt; Сайт по сбору популярных статей Reddit.&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Автор:&amp;lt;/b&amp;gt; Харламова Анна&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Группа:&amp;lt;/b&amp;gt; АДЭУ-221&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Дисциплина:&amp;lt;/b&amp;gt; Работа с API социальных сетей и визуализация данных&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Статус проекта:&amp;lt;/b&amp;gt; Выполнен&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #ffffff; padding: 20px; border-radius: 12px; margin-bottom: 20px; box-shadow: 0 1px 3px rgba(0,0,0,0.1);&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h3 style=&amp;quot;color: #2c3e50;&amp;quot;&amp;gt;Введение&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
🎯 Целью данной работы является разработка веб-приложения на основе FastAPI, предназначенного для автоматического сбора, обработки и предоставления пользователю популярных постов из Reddit и актуальных новостей с Hacker News.&lt;br /&gt;
Приложение должно обеспечивать удобный доступ к агрегированному контенту через API и веб-интерфейс.&lt;br /&gt;
&lt;br /&gt;
💡 Основная идея проекта — упростить доступ пользователей к актуальному и популярному контенту Reddit в удобном и структурированном виде.&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;div style=&amp;quot;background-color: #ffffff; padding: 20px; border-radius: 12px; margin-bottom: 20px; box-shadow: 0 1px 3px rgba(0,0,0,0.1);&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h3 style=&amp;quot;color: #2c3e50;&amp;quot;&amp;gt;Задачи проекта:&amp;lt;/h3&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Изучить работу внешних API (Reddit и Hacker News).&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Реализовать клиент для получения постов и комментариев с Reddit.&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Реализовать клиент для получения новостей с Hacker News.&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Создать API-эндпоинты для: получения постов, получения новостей, получения комментариев.&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Организовать обработку и структурирование данных (JSON-формат).&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Реализовать логирование работы приложения.&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Обеспечить обработку ошибок при работе с внешними сервисами.&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Подключить статические файлы для отображения пользовательского интерфейса.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;div style=&amp;quot;background-color: #ffffff; padding: 20px; border-radius: 12px; margin-bottom: 20px; box-shadow: 0 1px 3px rgba(0,0,0,0.1);&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h3 style=&amp;quot;color: #2c3e50;&amp;quot;&amp;gt;🏗 Архитектура и блок-схема проекта&amp;lt;/h3&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;Архитектура построена по принципу клиент-серверной модели и включает несколько уровней:&amp;lt;/p&amp;gt;&lt;br /&gt;
        &lt;br /&gt;
        &amp;lt;div style=&amp;quot;display: flex; flex-direction: column; align-items: center; margin-top: 20px;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;div style=&amp;quot;position: relative; width: 360px;&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;div style=&amp;quot;background-color: #48db92; color: black; text-align: left; padding: 10px 0; border-radius: 8px; margin: 5px 0;&amp;quot;&amp;gt;🌐 Уровень представления (Frontend)&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Реализован через статические файлы (static).&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Отображает данные пользователю.&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Отправляет HTTP-запросы к серверу.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;div style=&amp;quot;width: 2px; height: 15px; background-color: #48db92; margin: 0 auto;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;div style=&amp;quot;background-color: #48db92; color: black; text-align: left; padding: 10px 0; border-radius: 8px; margin: 5px 0;&amp;quot;&amp;gt;🚀 Backend (API-сервер)&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Обработка HTTP-запросов.&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Маршрутизация (/api/reddit, /api/news, /api/comments).&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Возврат данных в формате JSON.&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Логирование.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;div style=&amp;quot;width: 2px; height: 15px; background-color: #48db92; margin: 0 auto;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;div style=&amp;quot;background-color: #48db92; color: black; text-align: left; padding: 10px 0; border-radius: 8px; margin: 5px 0;&amp;quot;&amp;gt;🔌 Слой бизнес-логики&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;RedditClient.&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;NewsClient.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;div style=&amp;quot;width: 2px; height: 15px; background-color: #48db92; margin: 0 auto;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;div style=&amp;quot;background-color: #48db92; color: black; text-align: left; padding: 10px 0; border-radius: 8px; margin: 5px 0;&amp;quot;&amp;gt;🌍 Внешние API&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Reddit API.&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Hacker News API.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;div style=&amp;quot;width: 2px; height: 15px; background-color: #48db92; margin: 0 auto;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;div style=&amp;quot;background-color: #48db92; color: black; text-align: left; padding: 10px 0; border-radius: 8px; margin: 5px 0;&amp;quot;&amp;gt;⚙️ Инфраструктурный слой&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Переменные окружения (.env).&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Логирование (logging).&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;HTTP-клиент (requests).&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;ASGI-сервер Uvicorn.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
            &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #ffffff; padding: 20px; border-radius: 12px; margin-bottom: 20px; box-shadow: 0 1px 3px rgba(0,0,0,0.1);&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h3 style=&amp;quot;color: #2c3e50;&amp;quot;&amp;gt;⚙️ Логика работы приложения&amp;lt;/h3&amp;gt;&lt;br /&gt;
{{#mermaid:&lt;br /&gt;
flowchart TB&lt;br /&gt;
    A[Пользователь обращается к API (например, /api/reddit)] --&amp;gt; B(Сервер на FastAPI принимает запрос)&lt;br /&gt;
    B --&amp;gt; C(В зависимости от маршрута создаётся RedditClient или NewsClient)&lt;br /&gt;
    C --&amp;gt; D(Клиент отправляет HTTP-запрос к внешнему API)&lt;br /&gt;
    D --&amp;gt; E(Полученные данные:проверяются, обрабатываются и приводятся к нужному формату)&lt;br /&gt;
    E --&amp;gt; F[Результат возвращается пользователю в формате JSON]&lt;br /&gt;
    F --&amp;gt; G[Все действия логируются]&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Харламова Анна</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=Nexia&amp;diff=45456</id>
		<title>Nexia</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=Nexia&amp;diff=45456"/>
		<updated>2026-03-26T22:03:41Z</updated>

		<summary type="html">&lt;p&gt;Харламова Анна: Новая страница: «{| class=&amp;quot;wikitable&amp;quot; |- | Описание || Сайт, который отслеживает популярные посты с платформы Reddit. |- | Область знаний || Программирование на Python, Работа с API, Веб-технологии |- | Область использования (ISTE) || Digital Citizen |- | Возрастная категория || 18 |- | Близкие рецепту поня...»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Описание || Сайт, который отслеживает популярные посты с платформы Reddit.&lt;br /&gt;
|-&lt;br /&gt;
| Область знаний || [[Программирование на Python, Работа с API, Веб-технологии]]&lt;br /&gt;
|-&lt;br /&gt;
| Область использования (ISTE) || [[Digital Citizen]]&lt;br /&gt;
|-&lt;br /&gt;
| Возрастная категория || 18&lt;br /&gt;
|-&lt;br /&gt;
| Близкие рецепту понятия || Лента, популярное, новости&lt;br /&gt;
|-&lt;br /&gt;
| Среды и средства для приготовления рецепта || [[Python]], [[Visual studio code]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Карточка проекта --&amp;gt;&lt;br /&gt;
    &amp;lt;div style=&amp;quot;background-color: #ffffff; padding: 20px; border-radius: 12px; margin-bottom: 20px; box-shadow: 0 1px 3px rgba(0,0,0,0.1);&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2 style=&amp;quot;color: #2c3e50; border-bottom: 2px solid #4a76a8; padding-bottom: 10px; margin-top: 0;&amp;quot;&amp;gt;📊 Сайт по сбору популярных статей Reddit.&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Автор:&amp;lt;/b&amp;gt; Харламова Анна&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Группа:&amp;lt;/b&amp;gt; АДЭУ-221&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Дисциплина:&amp;lt;/b&amp;gt; Работа с API социальных сетей и визуализация данных&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Статус проекта:&amp;lt;/b&amp;gt; Выполнен&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Введение ==&lt;br /&gt;
🎯 Целью данной работы является разработка веб-приложения на основе FastAPI, предназначенного для автоматического сбора, обработки и предоставления пользователю популярных постов из Reddit и актуальных новостей с Hacker News.&lt;br /&gt;
Приложение должно обеспечивать удобный доступ к агрегированному контенту через API и веб-интерфейс.&lt;br /&gt;
&lt;br /&gt;
💡 Основная идея проекта — упростить доступ пользователей к актуальному и популярному контенту Reddit в удобном и структурированном виде.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Задачи проекта --&amp;gt;&lt;br /&gt;
    &amp;lt;div style=&amp;quot;background-color: #ffffff; padding: 20px; border-radius: 12px; margin-bottom: 20px; box-shadow: 0 1px 3px rgba(0,0,0,0.1);&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h3 style=&amp;quot;color: #2c3e50;&amp;quot;&amp;gt;🎯 Цель проекта&amp;lt;/h3&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Изучить работу внешних API (Reddit и Hacker News).&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Реализовать клиент для получения постов и комментариев с Reddit.&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Реализовать клиент для получения новостей с Hacker News.&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Создать API-эндпоинты для: получения постов, получения новостей, получения комментариев.&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Организовать обработку и структурирование данных (JSON-формат).&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Реализовать логирование работы приложения.&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Обеспечить обработку ошибок при работе с внешними сервисами.&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Подключить статические файлы для отображения пользовательского интерфейса.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==🏗 Архитектура приложения==  &lt;br /&gt;
{{#mermaid: flowchart TB  &lt;br /&gt;
    A[🌐 Уровень представления (Frontend)] --&amp;gt; B(🚀 Backend (API-сервер))  &lt;br /&gt;
    B --&amp;gt; C(🔌 Слой бизнес-логики)  &lt;br /&gt;
    C --&amp;gt; D(🌍 Внешние API)&lt;br /&gt;
    D --&amp;gt; E(⚙️ Инфраструктурный слой)   &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Описание приложения ==&lt;br /&gt;
Мобильное приложение «Цитата дня» предлагает пользователям возможность получать ежедневные мотивационные цитаты простым нажатием кнопки. Каждая цитата выбрана с учетом ее способности вдохновлять и поддерживать позитивный настрой. Это приложение станет полезным инструментом для тех, кто ценит короткие, но глубокие мысли, способные изменить взгляд на мир и зарядить на новые свершения. Пользователи «Цитаты дня» смогут находить моменты для размышлений и саморефлексии, что поможет им сосредоточиться на важных аспектах жизни.&lt;br /&gt;
&lt;br /&gt;
== Цель проекта ==&lt;br /&gt;
Цель проекта «Цитата дня» заключается в предоставлении пользователям ежедневного источника вдохновения и мотивации через подобранные цитаты. Приложение стремится помочь людям находить моменты для размышлений, поддерживать позитивный настрой и способствовать личностному росту. Оно направлено на создание привычки уделять время саморазвитию и саморефлексии, что может способствовать улучшению общего психоэмоционального состояния пользователей.&lt;/div&gt;</summary>
		<author><name>Харламова Анна</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:%D0%A5%D0%B0%D1%80%D0%BB%D0%B0%D0%BC%D0%BE%D0%B2%D0%B0_%D0%90%D0%BD%D0%BD%D0%B0&amp;diff=45343</id>
		<title>Участник:Харламова Анна</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:%D0%A5%D0%B0%D1%80%D0%BB%D0%B0%D0%BC%D0%BE%D0%B2%D0%B0_%D0%90%D0%BD%D0%BD%D0%B0&amp;diff=45343"/>
		<updated>2026-03-26T16:30:34Z</updated>

		<summary type="html">&lt;p&gt;Харламова Анна: Новая страница: «{{UserMGPU |Field_of_knowledge=Математика, Экономика, Искусственный интеллект, Управление, Большие данные |Environment=Python, SQL, JavaScript, GitHub, UML,Use case, Sequence Diagram |Position=Бакалавриат |Profile=Экономика |PedDirection=Нет |Working_On=Цитата дня, Nexia }} Категория:UserMGPU Категория:АДЭУ-221»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{UserMGPU&lt;br /&gt;
|Field_of_knowledge=Математика, Экономика, Искусственный интеллект, Управление, Большие данные&lt;br /&gt;
|Environment=Python, SQL, JavaScript, GitHub, UML,Use case, Sequence Diagram&lt;br /&gt;
|Position=Бакалавриат&lt;br /&gt;
|Profile=Экономика&lt;br /&gt;
|PedDirection=Нет&lt;br /&gt;
|Working_On=Цитата дня, Nexia&lt;br /&gt;
}}&lt;br /&gt;
[[Категория:UserMGPU]]&lt;br /&gt;
[[Категория:АДЭУ-221]]&lt;/div&gt;</summary>
		<author><name>Харламова Анна</name></author>
	</entry>
</feed>