[UPDATE] титульник: шапка по образцу, студент/преподаватель, год курсивом, Docker --user fix
This commit is contained in:
@@ -13,3 +13,6 @@ wheels/
|
|||||||
|
|
||||||
# Build dir
|
# Build dir
|
||||||
build/
|
build/
|
||||||
|
|
||||||
|
# Report
|
||||||
|
report.md
|
||||||
|
|||||||
+4
-1
@@ -9,4 +9,7 @@ if ! docker image inspect "$IMAGE" &>/dev/null; then
|
|||||||
docker build -t "$IMAGE" "$SCRIPT_DIR"
|
docker build -t "$IMAGE" "$SCRIPT_DIR"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
docker run --rm -v "$(pwd):/app" "$IMAGE" "$@"
|
docker run --rm \
|
||||||
|
-e UV_CACHE_DIR=/tmp/uv-cache \
|
||||||
|
-v "$(pwd):/app" \
|
||||||
|
"$IMAGE" "$@"
|
||||||
|
|||||||
@@ -47,6 +47,15 @@ PREAMBLE = r"""\documentclass[a4paper, 14pt]{extarticle}
|
|||||||
\usepackage{amsthm,amsfonts,amsmath,amssymb,amscd}
|
\usepackage{amsthm,amsfonts,amsmath,amssymb,amscd}
|
||||||
\usepackage{mathtools}
|
\usepackage{mathtools}
|
||||||
\usepackage[perpage]{footmisc}
|
\usepackage[perpage]{footmisc}
|
||||||
|
\usepackage{tabularx}
|
||||||
|
|
||||||
|
\newcommand{\sigline}[3][4cm]{%
|
||||||
|
\begin{tabular}[t]{@{}c@{}}%
|
||||||
|
\makebox[#1][c]{\strut #2} \\[-1em]%
|
||||||
|
\rule{#1}{0.4pt} \\[-1em]%
|
||||||
|
{\scriptsize #3}%
|
||||||
|
\end{tabular}%
|
||||||
|
}
|
||||||
|
|
||||||
\begin{document}"""
|
\begin{document}"""
|
||||||
|
|
||||||
|
|||||||
+45
-38
@@ -4,85 +4,92 @@ from __future__ import annotations
|
|||||||
def render_titlepage(fm: dict[str, str]) -> str:
|
def render_titlepage(fm: dict[str, str]) -> str:
|
||||||
faculty = fm.get("факультет", "")
|
faculty = fm.get("факультет", "")
|
||||||
department = fm.get("кафедра", "")
|
department = fm.get("кафедра", "")
|
||||||
|
report_type = fm.get("тип", "")
|
||||||
title = fm.get("название", "")
|
title = fm.get("название", "")
|
||||||
student = fm.get("студент", "")
|
student = fm.get("студент", "")
|
||||||
advisor = fm.get("преподаватель", "")
|
advisor = fm.get("преподаватель", "")
|
||||||
group = fm.get("группа", "")
|
group = fm.get("группа", "")
|
||||||
year = fm.get("год", "2026")
|
year = fm.get("год", "2026")
|
||||||
|
|
||||||
header_lines = [
|
ministry_lines = (
|
||||||
r"\vspace*{-0.7ex}",
|
"\\vspace*{-0.7ex}\n"
|
||||||
r"\hspace*{-6pt}\centerline{Министерство науки и высшего образования Российской Федерации}",
|
"\\hspace*{-6pt}\\centerline{Министерство науки и высшего образования Российской Федерации}\n"
|
||||||
r"\vspace*{-0.7ex}",
|
"\\vspace*{-0.7ex}\n"
|
||||||
r"\centerline{Федеральное государственное автономное образовательное учреждение}",
|
"\\centerline{Федеральное государственное бюджетное образовательное учреждение }\n"
|
||||||
r"\vspace*{-0.7ex}",
|
"\\vspace*{-0.7ex}\n"
|
||||||
r"\centerline{высшего образования}",
|
"\\centerline{высшего образования}\n"
|
||||||
r"\vspace*{-0.7ex}",
|
"\\vspace*{-0.7ex}\n"
|
||||||
r"\centerline{<<Московский государственный технический университет}",
|
"\\centerline{<<Московский государственный технический университет}\n"
|
||||||
r"\vspace*{-0.7ex}",
|
"\\vspace*{-0.7ex}\n"
|
||||||
r"\centerline{имени Н.Э. Баумана>>}",
|
"\\centerline{имени Н.Э. Баумана>>}\n"
|
||||||
r"\vspace*{-0.7ex}",
|
"\\vspace*{-0.7ex}\n"
|
||||||
r"\centerline{(национальный исследовательский университет)>>}",
|
"\\centerline{(национальный исследовательский университет)}\n"
|
||||||
r"\vspace*{-0.7ex}",
|
"\\vspace*{-0.7ex}\n"
|
||||||
r"\centerline{(МГТУ им. Н.Э. Баумана)}",
|
"\\centerline{(МГТУ им. Н.Э. Баумана)}"
|
||||||
]
|
)
|
||||||
header = "\n".join(header_lines)
|
|
||||||
|
|
||||||
return (
|
titlepage = (
|
||||||
"\\begin{titlepage}\n"
|
"\\begin{titlepage}\n"
|
||||||
"\\thispagestyle{empty}\n"
|
"\\thispagestyle{empty}\n"
|
||||||
"\\newpage\n"
|
"\\newpage\n"
|
||||||
"\n"
|
"\n"
|
||||||
|
"% --- Шапка ---\n"
|
||||||
"\\vspace*{-60pt}\n"
|
"\\vspace*{-60pt}\n"
|
||||||
"\\hspace{-65pt}\n"
|
"\\hspace{-65pt}\n"
|
||||||
"\\begin{minipage}{0.3\\textwidth}\n"
|
"\\begin{minipage}{0.3\\textwidth}\n"
|
||||||
"\\hspace*{-20pt}\\centering\n"
|
"\\hspace*{-20pt}\\centering\n"
|
||||||
"\\includegraphics[width=\\textwidth]{emblem}\n"
|
"\\includegraphics[width=\\textwidth]{emblem}\n"
|
||||||
"\\end{minipage}\n"
|
"\\end{minipage}\n"
|
||||||
f"\\begin{{minipage}}{{0.67\\textwidth}}\\small \\textbf{{\n"
|
"\\begin{minipage}{0.67\\textwidth}\\small \\textbf{"
|
||||||
f"{header}\n"
|
)
|
||||||
"}}\n"
|
titlepage += ministry_lines
|
||||||
"\\end{minipage}\n"
|
titlepage += (
|
||||||
|
"}\\end{minipage}\n"
|
||||||
"\n"
|
"\n"
|
||||||
|
"% --- Полосы ---\n"
|
||||||
"\\vspace{-25pt}\n"
|
"\\vspace{-25pt}\n"
|
||||||
"\\hspace{-35pt}\\rule{\\textwidth}{2.3pt}\n"
|
"\\hspace{-35pt}\\rule{\\textwidth}{2.3pt}\n"
|
||||||
"\n"
|
"\n"
|
||||||
"\\vspace*{-20.3pt}\n"
|
"\\vspace*{-20.3pt}\n"
|
||||||
"\\hspace{-35pt}\\rule{\\textwidth}{0.4pt}\n"
|
"\\hspace{-35pt}\\rule{\\textwidth}{0.4pt}\n"
|
||||||
"\n"
|
"\n"
|
||||||
f"\\vspace{{1.5ex}}\n"
|
"% --- Факультет и кафедра ---\n"
|
||||||
|
"\\vspace{1.5ex}\n"
|
||||||
f"\\hspace{{-35pt}} \\noindent \\small ФАКУЛЬТЕТ\\hspace{{80pt}} {faculty}\n"
|
f"\\hspace{{-35pt}} \\noindent \\small ФАКУЛЬТЕТ\\hspace{{80pt}} {faculty}\n"
|
||||||
"\n"
|
"\n"
|
||||||
"\\vspace*{-16pt}\n"
|
"\\vspace*{-16pt}\n"
|
||||||
"\\hspace{47pt}\\rule{0.83\\textwidth}{0.4pt}\n"
|
"\\hspace{47pt}\\rule{0.83\\textwidth}{0.4pt}\n"
|
||||||
"\n"
|
"\n"
|
||||||
f"\\vspace{{0.5ex}}\n"
|
"\\vspace{0.5ex}\n"
|
||||||
f"\\hspace{{-35pt}} \\noindent \\small КАФЕДРА\\hspace{{50pt}} {department}\n"
|
f"\\hspace{{-35pt}} \\noindent \\small КАФЕДРА\\hspace{{50pt}} {department}\n"
|
||||||
"\n"
|
"\n"
|
||||||
"\\vspace*{-16pt}\n"
|
"\\vspace*{-16pt}\n"
|
||||||
"\\hspace{30pt}\\rule{0.866\\textwidth}{0.4pt}\n"
|
"\\hspace{30pt}\\rule{0.866\\textwidth}{0.4pt}\n"
|
||||||
"\n"
|
"\n"
|
||||||
"\\vspace{11em}\n"
|
"% --- Название работы ---\n"
|
||||||
|
"\\vspace{6em}\n"
|
||||||
"\n"
|
"\n"
|
||||||
"\\begin{center}\n"
|
"\\begin{center}\n"
|
||||||
f"\\fontsize{{22pt}}{{26pt}}\\selectfont \\bfseries {title} \\\\\n"
|
f"\\Large {{\\bf {report_type}}} \\\\\n"
|
||||||
"\\end{center}\n"
|
f"\\large {title}\n"
|
||||||
"\n"
|
"\\end{center}\\normalsize\n"
|
||||||
"\\vspace{8em}\n"
|
|
||||||
"\n"
|
|
||||||
"\\noindent Студент группы " + group + "\n"
|
|
||||||
"\\hfill \\underline{\\hspace{3cm}} \\hfill \\underline{\\hspace{4cm}} \\\\\n"
|
|
||||||
"\\hfill (Группа) \\hfill (Подпись, дата) \\hfill (И.О. Фамилия) \\\\\n"
|
|
||||||
"\\vspace{2ex}\n"
|
|
||||||
"\n"
|
|
||||||
"\\noindent Преподаватель " + advisor + "\n"
|
|
||||||
"\\hfill \\underline{\\hspace{3cm}} \\hfill \\underline{\\hspace{4cm}} \\\\\n"
|
|
||||||
"\\hfill \\hfill (Подпись, дата) \\hfill (И.О. Фамилия)\n"
|
|
||||||
"\n"
|
"\n"
|
||||||
|
"% --- Подписи (tabularx) ---\n"
|
||||||
"\\vfill\n"
|
"\\vfill\n"
|
||||||
"\n"
|
"\n"
|
||||||
|
"\\noindent\n"
|
||||||
|
"\\begin{tabularx}{\\textwidth}{@{}l X c c@{}}\n"
|
||||||
|
f" Студент \\quad \\sigline[2.5cm]{{{group}}}{{(Группа)}} & & "
|
||||||
|
f"\\sigline{{}}{{(Подпись, дата)}} & \\sigline{{{student}}}{{(И.О. Фамилия)}} \\\\ [1.5cm]\n"
|
||||||
|
" Преподаватель & & "
|
||||||
|
f"\\sigline{{}}{{(Подпись, дата)}} & \\sigline{{{advisor}}}{{(И.О. Фамилия)}} \\\\\n"
|
||||||
|
"\\end{tabularx}\n"
|
||||||
|
"\n"
|
||||||
|
"% --- Год ---\n"
|
||||||
"\\begin{center}\n"
|
"\\begin{center}\n"
|
||||||
f"\\textsl{{{year} г.}}\n"
|
f"\\textsl{{{year} г.}}\n"
|
||||||
"\\end{center}\n"
|
"\\end{center}\n"
|
||||||
|
"\n"
|
||||||
"\\end{titlepage}"
|
"\\end{titlepage}"
|
||||||
)
|
)
|
||||||
|
return titlepage
|
||||||
|
|||||||
+1
-1
@@ -21,5 +21,5 @@ class Parser:
|
|||||||
for line in raw.splitlines():
|
for line in raw.splitlines():
|
||||||
if ":" in line:
|
if ":" in line:
|
||||||
key, _, value = line.partition(":")
|
key, _, value = line.partition(":")
|
||||||
result[key.strip()] = value.strip().strip("«»\"'")
|
result[key.strip()] = value.strip()
|
||||||
return result
|
return result
|
||||||
|
|||||||
@@ -1,55 +0,0 @@
|
|||||||
---
|
|
||||||
факультет: «Информатика и системы управления»
|
|
||||||
кафедра: «Теоретическая информатика и компьютерные технологии»
|
|
||||||
название: Отчёт о летней практике
|
|
||||||
студент: А. С. Булдаков
|
|
||||||
преподаватель: Д. П. Посевин
|
|
||||||
группа: ИУ9-22Б
|
|
||||||
---
|
|
||||||
|
|
||||||
# АННОТАЦИЯ
|
|
||||||
|
|
||||||
В настоящем отчёте описывается разработка серверной части программно-аппаратного комплекса мониторинга радиоэфира, предназначенного для обнаружения источников радиосигнала и вычисления их координат методом триангуляции.
|
|
||||||
|
|
||||||
Актуальность разработки обусловлена возрастающей потребностью в контроле радиоэлектронной обстановки для обнаружения неавторизованных передающих устройств.
|
|
||||||
|
|
||||||
Разработано серверное приложение на языке C++, включающее TCP-сервер для приёма данных от трёх программно-определяемых радиосистем, модуль вычисления координат источника на основе модели логарифмического затухания сигнала и метода роевой оптимизации, а также графический интерфейс на базе фреймворка Qt. Обмен данными между модулями реализован через потокобезопасную очередь с использованием условной переменной.
|
|
||||||
|
|
||||||
# СОДЕРЖАНИЕ
|
|
||||||
|
|
||||||
# ПЕРЕЧЕНЬ ПРИНЯТЫХ СОКРАЩЕНИЙ
|
|
||||||
|
|
||||||
SDR — Software-Defined Radio — программно-определяемая радиосистема
|
|
||||||
PSO — Particle Swarm Optimization — метод роевой оптимизации
|
|
||||||
TCP — Transmission Control Protocol — протокол управления передачей
|
|
||||||
GUI — Graphical User Interface — графический интерфейс пользователя
|
|
||||||
|
|
||||||
# ВВЕДЕНИЕ
|
|
||||||
|
|
||||||
Количество радиоэлектронных устройств в повседневной жизни неуклонно растёт. Помимо легитимных передатчиков в радиоэфире появляются устройства, эксплуатация которых несанкционирована или представляет потенциальную угрозу [1]. Для принятия решения о дальнейших действиях относительно обнаруженного источника радиосигнала необходимо не только зафиксировать сам факт его наличия, но и определить координаты передающего устройства [2].
|
|
||||||
|
|
||||||
Существующие решения для мониторинга радиоэфира, как правило, представляют собой дорогостоящие комплексные системы, требующие специализированного оборудования и инфраструктуры. Альтернативным подходом является использование компактных программно-определяемых радиосистем, способных передавать данные на обычные вычислительные модули для последующей обработки.
|
|
||||||
|
|
||||||
Целью работы является разработка серверной части программно-аппаратного комплекса мониторинга радиоэфира, обеспечивающего приём данных от программно-определяемых радиосистем и вычисление координат источников радиосигнала.
|
|
||||||
|
|
||||||
Для достижения поставленной цели необходимо решить следующие задачи:
|
|
||||||
|
|
||||||
1. Разработать TCP-сервер для приёма и обработки данных от трёх SDR-приёмников
|
|
||||||
2. Реализовать алгоритм триангуляции на основе модели логарифмического затухания сигнала и метода роевой оптимизации [3]
|
|
||||||
3. Разработать графический интерфейс для визуализации результатов пеленгации
|
|
||||||
4. Обеспечить взаимодействие модулей через потокобезопасную очередь
|
|
||||||
5. Настроить контейнеризацию приложения с помощью Docker
|
|
||||||
|
|
||||||
# Общее описание системы
|
|
||||||
|
|
||||||
# Выполненные работы
|
|
||||||
|
|
||||||
# ЗАКЛЮЧЕНИЕ
|
|
||||||
|
|
||||||
# СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
|
|
||||||
|
|
||||||
1. Гилев, И. В. Использование технологии SDR для анализа электромагнитной обстановки в системах связи специального назначения / И. В. Гилев, А. Р. Бушуева // Актуальные проблемы деятельности подразделений уголовно-исполнительной системы : сборник материалов Всероссийской научно-практической конференции. В 3 т., Воронеж, 23 октября 2025 года. – Воронеж: Федеральное казенное образовательное учреждение высшего профессионального образования "Воронежский институт Федеральной службы исполнения наказаний России", Издательско-полиграфический центр «Научная книга», 2025. – С. 324-328.
|
|
||||||
|
|
||||||
2. Шалаев, А. А. Оценка фактических значений отношения сигнал/шум в радионавигационных системах на основе экспериментальных данных / А. А. Шалаев // Crede Experto: транспорт, общество, образование, язык. – 2025. – № 4. – С. 61-76.
|
|
||||||
|
|
||||||
3. Семенюк, С. С. Определение местоположения источников радиоизлучений разностно-дальномерным методом на основе роевого интеллекта / С. С. Семенюк, А. В. Каблуков, А. С. Григоров // Динамика сложных систем - XXI век. – 2024. – Т. 18, № 1. – С. 51-57.
|
|
||||||
Reference in New Issue
Block a user