From 6b3e0e37fb60aa906910bc6b05ae9feca83767ac Mon Sep 17 00:00:00 2001 From: 2510m <2510m@LAPTOP-F3BSA9F2> Date: Tue, 24 Oct 2023 21:30:27 +0400 Subject: [PATCH] commit_laba2 --- tasks/lyamzina-ma/lab_1/README.md | 148 ++++++ tasks/lyamzina-ma/lab_2/.gitignore | 454 ++++++++++++++++++ tasks/lyamzina-ma/lab_2/README.md | 85 ++++ tasks/lyamzina-ma/lab_2/data/data.txt | 19 + tasks/lyamzina-ma/lab_2/data/data1.txt | 13 + tasks/lyamzina-ma/lab_2/docker-compose.yml | 18 + tasks/lyamzina-ma/lab_2/lab_2.sln | 48 ++ tasks/lyamzina-ma/lab_2/photo/1.png | Bin 0 -> 15101 bytes tasks/lyamzina-ma/lab_2/photo/2.png | Bin 0 -> 11452 bytes tasks/lyamzina-ma/lab_2/photo/3.png | Bin 0 -> 10710 bytes tasks/lyamzina-ma/lab_2/photo/4.png | Bin 0 -> 17626 bytes tasks/lyamzina-ma/lab_2/result-1/data.txt | 2 + tasks/lyamzina-ma/lab_2/result/result.txt | 1 + tasks/lyamzina-ma/lab_2/worker-1/Dockerfile | 18 + tasks/lyamzina-ma/lab_2/worker-1/Program.cs | 28 ++ .../lab_2/worker-1/worker-1.csproj | 9 + tasks/lyamzina-ma/lab_2/worker-2/Dockerfile | 18 + tasks/lyamzina-ma/lab_2/worker-2/Program.cs | 22 + .../lab_2/worker-2/worker-2.csproj | 9 + 19 files changed, 892 insertions(+) create mode 100644 tasks/lyamzina-ma/lab_1/README.md create mode 100644 tasks/lyamzina-ma/lab_2/.gitignore create mode 100644 tasks/lyamzina-ma/lab_2/README.md create mode 100644 tasks/lyamzina-ma/lab_2/data/data.txt create mode 100644 tasks/lyamzina-ma/lab_2/data/data1.txt create mode 100644 tasks/lyamzina-ma/lab_2/docker-compose.yml create mode 100644 tasks/lyamzina-ma/lab_2/lab_2.sln create mode 100644 tasks/lyamzina-ma/lab_2/photo/1.png create mode 100644 tasks/lyamzina-ma/lab_2/photo/2.png create mode 100644 tasks/lyamzina-ma/lab_2/photo/3.png create mode 100644 tasks/lyamzina-ma/lab_2/photo/4.png create mode 100644 tasks/lyamzina-ma/lab_2/result-1/data.txt create mode 100644 tasks/lyamzina-ma/lab_2/result/result.txt create mode 100644 tasks/lyamzina-ma/lab_2/worker-1/Dockerfile create mode 100644 tasks/lyamzina-ma/lab_2/worker-1/Program.cs create mode 100644 tasks/lyamzina-ma/lab_2/worker-1/worker-1.csproj create mode 100644 tasks/lyamzina-ma/lab_2/worker-2/Dockerfile create mode 100644 tasks/lyamzina-ma/lab_2/worker-2/Program.cs create mode 100644 tasks/lyamzina-ma/lab_2/worker-2/worker-2.csproj diff --git a/tasks/lyamzina-ma/lab_1/README.md b/tasks/lyamzina-ma/lab_1/README.md new file mode 100644 index 0000000..71586b1 --- /dev/null +++ b/tasks/lyamzina-ma/lab_1/README.md @@ -0,0 +1,148 @@ +# Отчёт по лабораторной работе №1 + +Выполнила: студентка гр. ИСЭбд-41, Лямзина М.А. + +## Разворачивание сервиса Gitea + +Содержимое файла `docker-compose.yml` в папке Gitea: +```yaml +version: "3" + +networks: + gitea: + external: false +# Контейнер Gitea +services: # Описание служб + server: + image: gitea/gitea:1.20.4 # Образ gitea + container_name: gitea # Наименование контейнера + environment: # Наши параметры + - USER_UID=1000 + - USER_GID=1000 + - GITEA__database__DB_TYPE=mysql + - GITEA__database__HOST=db:3306 + - GITEA__database__NAME=gitea + - GITEA__database__USER=gitea + - GITEA__database__PASSWD=gitea + restart: always + networks: # Параметры сети + - gitea + volumes: # Каталоги для хранения данных контейнера + - ./gitea:/data + - /etc/timezone:/etc/timezone:ro + - /etc/localtime:/etc/localtime:ro + ports: # Порт локальный и внутри сети + - "3000:3000" + - "222:22" + depends_on: + - db +# База данных + db: + image: mysql:8 # Образ БД и версия + restart: always # Параметр перезапуска + environment: # Подключаем каталог с базой данных + - MYSQL_ROOT_PASSWORD=gitea + - MYSQL_USER=gitea + - MYSQL_PASSWORD=gitea + - MYSQL_DATABASE=gitea + networks: # Параметры сети + - gitea + volumes: # Том для хранения данных БД + - ./mysql:/var/lib/mysql +``` +В папке girea создаем файл +![](Скрины/1.png) + +Далее в командной строке разворачиваем сервис командой `docker-compose up -d`: +![](Скрины/2.png) + +Открываем Docker Desktop и проверяем, что контейнер сервера БД и Gitea созданы и запущены: +![](Скрины/3.png) + +Переходим на http://localhost:222: +![](Скрины/4.png) + +Регистрируемся и автоматически входим в учетную запись: +![](Скрины/5.png) + + +## Разворачивание сервиса Wordpress + +Также в файл `docker-compose.yml` в папке Wordpress прописываем следующий код: + +```yaml +version: '3.1' + +services: +# Контейнер Wordpress + wordpress: + image: wordpress # Образ + restart: always # Параметр перезапуска + ports: # На каком порте запускаем + - 7071:80 + environment: # Настройки БД WordPress для подключения + WORDPRESS_DB_HOST: database # Имя хоста БД MySQL + WORDPRESS_DB_USER: user # Имя пользователя БД + WORDPRESS_DB_PASSWORD: password # Пароль пользователя БД + WORDPRESS_DB_NAME: name_database # Имя БД + volumes: # Каталог хранения файлов WordPress + - wordpress:/var/www/html +# Контейнер MySQL + database: + image: mysql:5.7 # Образ и его версия + restart: always # Параметр перезапуска + environment: # Настройки БД для подключения + MYSQL_DATABASE: name_database + MYSQL_USER: user + MYSQL_PASSWORD: password + MYSQL_RANDOM_ROOT_PASSWORD: '12345' + volumes: # Каталог хранения данных БД + - database:/var/lib/mysql + +volumes: + wordpress: + database: +``` +Далее в командной строке разворачиваем сервис командой `docker-compose up -d`: +![](Скрины/6.png) + +Открываем Docker Desktop и проверяем, что контейнер сервера БД и Wordpress созданы и запущены: +![](Скрины/7.png) + +Устанавливаем Wordpress и проверяем, что все работает: +![](Скрины/8.png) + +## Разворачивание сервиса Redmine + +Также в файл `docker-compose.yml` в папке Redmine прописываем код: + +```yaml +version: '3.1' + +services: +# Контейнер Redmine + redmine: + image: redmine # Образ контейнера + restart: always + ports: # На какой порт запускать + - 8080:3000 + environment: + REDMINE_DB_MYSQL: db + REDMINE_DB_PASSWORD: example + REDMINE_SECRET_KEY_BASE: supersecretkey +# Контейнер БД MySQL + db: + image: mysql:5.7 # Образ БД и ее версия + restart: always + environment: # Название и пароль админа БД + MYSQL_ROOT_PASSWORD: example + MYSQL_DATABASE: redmine +``` +Далее в командной строке разворачиваем сервис командой `docker-compose up -d`: +![](Скрины/9.png) + +Переходим на http://localhost:8080: +![](Скрины/10.png) + +Регистрируемся и проверяем, что все работает: +![](Скрины/11.png) diff --git a/tasks/lyamzina-ma/lab_2/.gitignore b/tasks/lyamzina-ma/lab_2/.gitignore new file mode 100644 index 0000000..8afdcb6 --- /dev/null +++ b/tasks/lyamzina-ma/lab_2/.gitignore @@ -0,0 +1,454 @@ +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. +## +## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore + +# User-specific files +*.rsuser +*.suo +*.user +*.userosscache +*.sln.docstates + +# User-specific files (MonoDevelop/Xamarin Studio) +*.userprefs + +# Mono auto generated files +mono_crash.* + +# Build results +[Dd]ebug/ +[Dd]ebugPublic/ +[Rr]elease/ +[Rr]eleases/ +x64/ +x86/ +[Ww][Ii][Nn]32/ +[Aa][Rr][Mm]/ +[Aa][Rr][Mm]64/ +bld/ +[Bb]in/ +[Oo]bj/ +[Ll]og/ +[Ll]ogs/ + +# Visual Studio 2015/2017 cache/options directory +.vs/ +# Uncomment if you have tasks that create the project's static files in wwwroot +#wwwroot/ + +# Visual Studio 2017 auto generated files +Generated\ Files/ + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +# NUnit +*.VisualState.xml +TestResult.xml +nunit-*.xml + +# Build Results of an ATL Project +[Dd]ebugPS/ +[Rr]eleasePS/ +dlldata.c + +# Benchmark Results +BenchmarkDotNet.Artifacts/ + +# .NET Core +project.lock.json +project.fragment.lock.json +artifacts/ + +# Tye +.tye/ + +# ASP.NET Scaffolding +ScaffoldingReadMe.txt + +# StyleCop +StyleCopReport.xml + +# Files built by Visual Studio +*_i.c +*_p.c +*_h.h +*.ilk +*.meta +*.obj +*.iobj +*.pch +*.pdb +*.ipdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*_wpftmp.csproj +*.log +*.vspscc +*.vssscc +.builds +*.pidb +*.svclog +*.scc + +# Chutzpah Test files +_Chutzpah* + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opendb +*.opensdf +*.sdf +*.cachefile +*.VC.db +*.VC.VC.opendb + +# Visual Studio profiler +*.psess +*.vsp +*.vspx +*.sap + +# Visual Studio Trace Files +*.e2e + +# TFS 2012 Local Workspace +$tf/ + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper +*.DotSettings.user + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# AxoCover is a Code Coverage Tool +.axoCover/* +!.axoCover/settings.json + +# Coverlet is a free, cross platform Code Coverage Tool +coverage*.json +coverage*.xml +coverage*.info + +# Visual Studio code coverage results +*.coverage +*.coveragexml + +# NCrunch +_NCrunch_* +.*crunch*.local.xml +nCrunchTemp_* + +# MightyMoose +*.mm.* +AutoTest.Net/ + +# Web workbench (sass) +.sass-cache/ + +# Installshield output folder +[Ee]xpress/ + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish/ + +# Publish Web Output +*.[Pp]ublish.xml +*.azurePubxml +# Note: Comment the next line if you want to checkin your web deploy settings, +# but database connection strings (with potential passwords) will be unencrypted +*.pubxml +*.publishproj + +# Microsoft Azure Web App publish settings. Comment the next line if you want to +# checkin your Azure Web App publish settings, but sensitive information contained +# in these scripts will be unencrypted +PublishScripts/ + +# NuGet Packages +*.nupkg +# NuGet Symbol Packages +*.snupkg +# The packages folder can be ignored because of Package Restore +**/[Pp]ackages/* +# except build/, which is used as an MSBuild target. +!**/[Pp]ackages/build/ +# Uncomment if necessary however generally it will be regenerated when needed +#!**/[Pp]ackages/repositories.config +# NuGet v3's project.json files produces more ignorable files +*.nuget.props +*.nuget.targets + +# Microsoft Azure Build Output +csx/ +*.build.csdef + +# Microsoft Azure Emulator +ecf/ +rcf/ + +# Windows Store app package directories and files +AppPackages/ +BundleArtifacts/ +Package.StoreAssociation.xml +_pkginfo.txt +*.appx +*.appxbundle +*.appxupload + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!?*.[Cc]ache/ + +# Others +ClientBin/ +~$* +*~ +*.dbmdl +*.dbproj.schemaview +*.jfm +*.pfx +*.publishsettings +orleans.codegen.cs + +# Including strong name files can present a security risk +# (https://github.com/github/gitignore/pull/2483#issue-259490424) +#*.snk + +# Since there are multiple workflows, uncomment next line to ignore bower_components +# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) +#bower_components/ + +# RIA/Silverlight projects +Generated_Code/ + +# Backup & report files from converting an old project file +# to a newer Visual Studio version. Backup files are not needed, +# because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm +ServiceFabricBackup/ +*.rptproj.bak + +# SQL Server files +*.mdf +*.ldf +*.ndf + +# Business Intelligence projects +*.rdl.data +*.bim.layout +*.bim_*.settings +*.rptproj.rsuser +*- [Bb]ackup.rdl +*- [Bb]ackup ([0-9]).rdl +*- [Bb]ackup ([0-9][0-9]).rdl + +# Microsoft Fakes +FakesAssemblies/ + +# GhostDoc plugin setting file +*.GhostDoc.xml + +# Node.js Tools for Visual Studio +.ntvs_analysis.dat +node_modules/ + +# Visual Studio 6 build log +*.plg + +# Visual Studio 6 workspace options file +*.opt + +# Visual Studio 6 auto-generated workspace file (contains which files were open etc.) +*.vbw + +# Visual Studio LightSwitch build output +**/*.HTMLClient/GeneratedArtifacts +**/*.DesktopClient/GeneratedArtifacts +**/*.DesktopClient/ModelManifest.xml +**/*.Server/GeneratedArtifacts +**/*.Server/ModelManifest.xml +_Pvt_Extensions + +# Paket dependency manager +.paket/paket.exe +paket-files/ + +# FAKE - F# Make +.fake/ + +# CodeRush personal settings +.cr/personal + +# Python Tools for Visual Studio (PTVS) +__pycache__/ +*.pyc + +# Cake - Uncomment if you are using it +# tools/** +# !tools/packages.config + +# Tabs Studio +*.tss + +# Telerik's JustMock configuration file +*.jmconfig + +# BizTalk build output +*.btp.cs +*.btm.cs +*.odx.cs +*.xsd.cs + +# OpenCover UI analysis results +OpenCover/ + +# Azure Stream Analytics local run output +ASALocalRun/ + +# MSBuild Binary and Structured Log +*.binlog + +# NVidia Nsight GPU debugger configuration file +*.nvuser + +# MFractors (Xamarin productivity tool) working folder +.mfractor/ + +# Local History for Visual Studio +.localhistory/ + +# BeatPulse healthcheck temp database +healthchecksdb + +# Backup folder for Package Reference Convert tool in Visual Studio 2017 +MigrationBackup/ + +# Ionide (cross platform F# VS Code tools) working folder +.ionide/ + +# Fody - auto-generated XML schema +FodyWeavers.xsd + +## +## Visual studio for Mac +## + + +# globs +Makefile.in +*.userprefs +*.usertasks +config.make +config.status +aclocal.m4 +install-sh +autom4te.cache/ +*.tar.gz +tarballs/ +test-results/ + +# Mac bundle stuff +*.dmg +*.app + +# content below from: https://github.com/github/gitignore/blob/master/Global/macOS.gitignore +# General +.DS_Store +.AppleDouble +.LSOverride + +# Icon must end with two \r +Icon + + +# Thumbnails +._* + +# Files that might appear in the root of a volume +.DocumentRevisions-V100 +.fseventsd +.Spotlight-V100 +.TemporaryItems +.Trashes +.VolumeIcon.icns +.com.apple.timemachine.donotpresent + +# Directories potentially created on remote AFP share +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk + +# content below from: https://github.com/github/gitignore/blob/master/Global/Windows.gitignore +# Windows thumbnail cache files +Thumbs.db +ehthumbs.db +ehthumbs_vista.db + +# Dump file +*.stackdump + +# Folder config file +[Dd]esktop.ini + +# Recycle Bin used on file shares +$RECYCLE.BIN/ + +# Windows Installer files +*.cab +*.msi +*.msix +*.msm +*.msp + +# Windows shortcuts +*.lnk + +# JetBrains Rider +.idea/ +*.sln.iml + +## +## Visual Studio Code +## +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json diff --git a/tasks/lyamzina-ma/lab_2/README.md b/tasks/lyamzina-ma/lab_2/README.md new file mode 100644 index 0000000..7ea8a56 --- /dev/null +++ b/tasks/lyamzina-ma/lab_2/README.md @@ -0,0 +1,85 @@ +# Отчёт по лабораторной работе №2 + +Выполнил: студентка гр. ИСЭбд-41, Лямзина Мария. + +Вариант программы 1: 2. Формирует файл `/var/result/data.txt` из первых строк всех файлов каталога `/var/data`. + +Вариант программы 2: 4. Ищет наименьшее число из файла `/var/data/data.txt` и сохраняет количество таких чисел из последовательности `/var/result/result.txt`. + +## Создание приложений + +Создадим 2 приложения. +Был выбран язык C# и технология .NET 5. + +Для создания обычных консольных приложений воспользуемся командами: + +```sh +dotnet new console -o worker-1 +dotnet new console -o worker-2 +``` + +Согласно варианту, программа 1 должна брать из `/var/data` по первой строчке из каждого файла, и в результате записать все в файл `/var/result/data.txt`. + +[Исходный текст программы worker-1](worker-1/Program.cs) + +Согласно варианту программа 2 искать в файле `/var/data/data.txt` наименьшее число и посчитать количетсво таких чисел. +Далее количество записывается в `/var/result/result.txt`. + +[Исходный текст программы worker-2](worker-2/Program.cs) + +Дополнительно создан файл [.gitignore](.gitignore) для того, чтобы не закоммитить в git ничего лишнего. + +## Настройка окружения + +Для связи двух приложений воспользуемся следующей схемой: + +1. Каталог `./data` должен быть примонтирован в каталог `/var/data` для программы 1. + Оттуда будут браться исходные данные. +2. Каталог `./result-1` должен быть примонтирован в каталог `/var/result` для программы 2. + Туда будут складываться промежуточные данные. +3. Каталог `./result-1` также должен быть примонтирован в каталог `/var/data` для программы 2. + Оттуда будут браться промежуточные результаты. +4. Каталог `./result` должен быть примонтирован в каталог `/var/result` для программы 2. + Туда будут складывать результаты финальной обработки. + +Для каждой программы были созданы файлы Dockerfile ([программа 1](worker-1/Dockerfile), [программа 2](worker-2/Dockerfile)) с подробным описанием процесса сборки. + +Был создан файл [docker-compose.yml](docker-compose.yml), в котором указан манифест для запуска распределённого приложения. + + +## Сборка и запуск + +1. В каталог `./data` помещены 2 файла с различной значениями. + +![](photo/1.png) +![](photo/2.jpg) + + +На выходе программа должна записать 1 и 1. + +![](photo/3.jpg) + +2. Теперь, обрабатывая этот файл: + +![](photo/1.jpg) + +Программа найдет число 1 как минимальное, оно повторяется 2 раза значит в `/var/result/result.txt` выведется число 2 . + +![](photo/4.jpg) + +Для запуска приложения необходимо ввести команду `docker compose up --build`. +Результат запуска после сборки: + +``` +[+] Running 2/0 + ✔ Container lab_2-worker-1-1 Created 0.0s + ✔ Container lab_2-worker-2-1 Created 0.0s +Attaching to lab_2-worker-1-1, lab_2-worker-2-1 +lab_2-worker-1-1 | Файл успешно сформирован! +lab_2-worker-2-1 | Количество наименьших чисел сохранено в файле: /var/result/result.txt +lab_2-worker-1-1 exited with code 0 +lab_2-worker-2-1 exited with code 0 +``` +В результате в каталоге `./result` создался файл `data.txt` с содержимым `1 1`, что соответствует входным данным. + +В каталоге `./result` создался файл `result.txt` с содержимым `2`, что соответствует входным данным. diff --git a/tasks/lyamzina-ma/lab_2/data/data.txt b/tasks/lyamzina-ma/lab_2/data/data.txt new file mode 100644 index 0000000..65a3986 --- /dev/null +++ b/tasks/lyamzina-ma/lab_2/data/data.txt @@ -0,0 +1,19 @@ +1 +22 +11 +15 +46 +23 +11 +55 +449 +78 +65 +15 +35 +1 +59 +11 +87 +465 +11 \ No newline at end of file diff --git a/tasks/lyamzina-ma/lab_2/data/data1.txt b/tasks/lyamzina-ma/lab_2/data/data1.txt new file mode 100644 index 0000000..d232e5f --- /dev/null +++ b/tasks/lyamzina-ma/lab_2/data/data1.txt @@ -0,0 +1,13 @@ +1 +5 +4 +6 +4 +5 +7 +5 +3 +2 +2 +2 +4 \ No newline at end of file diff --git a/tasks/lyamzina-ma/lab_2/docker-compose.yml b/tasks/lyamzina-ma/lab_2/docker-compose.yml new file mode 100644 index 0000000..9c753e7 --- /dev/null +++ b/tasks/lyamzina-ma/lab_2/docker-compose.yml @@ -0,0 +1,18 @@ +version: "3.1" +services: + worker-1: + build: ./worker-1 + volumes: + # Монтирует локальную папку data к папке data в контейнере. + - ./data:/var/data + # Монтирует локальную папку result-1 к папке result в контейнере. + - ./result-1:/var/result + worker-2: + build: ./worker-2 + volumes: + # Монтирует локальную папку result-1 к папке data в контейнере. + - ./result-1:/var/data + - ./result:/var/result + # Зависимость от первого приложения. + depends_on: + - worker-1 \ No newline at end of file diff --git a/tasks/lyamzina-ma/lab_2/lab_2.sln b/tasks/lyamzina-ma/lab_2/lab_2.sln new file mode 100644 index 0000000..2dbd45a --- /dev/null +++ b/tasks/lyamzina-ma/lab_2/lab_2.sln @@ -0,0 +1,48 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.30114.105 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "worker-1", "worker-1\worker-1.csproj", "{8B8730EA-D88C-4713-8AA4-A3D12ABFAC77}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "worker-2", "worker-2\worker-2.csproj", "{3C748027-270F-4C30-8D0E-27C0D2866B71}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Debug|x64 = Debug|x64 + Debug|x86 = Debug|x86 + Release|Any CPU = Release|Any CPU + Release|x64 = Release|x64 + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {8B8730EA-D88C-4713-8AA4-A3D12ABFAC77}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {8B8730EA-D88C-4713-8AA4-A3D12ABFAC77}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8B8730EA-D88C-4713-8AA4-A3D12ABFAC77}.Debug|x64.ActiveCfg = Debug|Any CPU + {8B8730EA-D88C-4713-8AA4-A3D12ABFAC77}.Debug|x64.Build.0 = Debug|Any CPU + {8B8730EA-D88C-4713-8AA4-A3D12ABFAC77}.Debug|x86.ActiveCfg = Debug|Any CPU + {8B8730EA-D88C-4713-8AA4-A3D12ABFAC77}.Debug|x86.Build.0 = Debug|Any CPU + {8B8730EA-D88C-4713-8AA4-A3D12ABFAC77}.Release|Any CPU.ActiveCfg = Release|Any CPU + {8B8730EA-D88C-4713-8AA4-A3D12ABFAC77}.Release|Any CPU.Build.0 = Release|Any CPU + {8B8730EA-D88C-4713-8AA4-A3D12ABFAC77}.Release|x64.ActiveCfg = Release|Any CPU + {8B8730EA-D88C-4713-8AA4-A3D12ABFAC77}.Release|x64.Build.0 = Release|Any CPU + {8B8730EA-D88C-4713-8AA4-A3D12ABFAC77}.Release|x86.ActiveCfg = Release|Any CPU + {8B8730EA-D88C-4713-8AA4-A3D12ABFAC77}.Release|x86.Build.0 = Release|Any CPU + {3C748027-270F-4C30-8D0E-27C0D2866B71}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {3C748027-270F-4C30-8D0E-27C0D2866B71}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3C748027-270F-4C30-8D0E-27C0D2866B71}.Debug|x64.ActiveCfg = Debug|Any CPU + {3C748027-270F-4C30-8D0E-27C0D2866B71}.Debug|x64.Build.0 = Debug|Any CPU + {3C748027-270F-4C30-8D0E-27C0D2866B71}.Debug|x86.ActiveCfg = Debug|Any CPU + {3C748027-270F-4C30-8D0E-27C0D2866B71}.Debug|x86.Build.0 = Debug|Any CPU + {3C748027-270F-4C30-8D0E-27C0D2866B71}.Release|Any CPU.ActiveCfg = Release|Any CPU + {3C748027-270F-4C30-8D0E-27C0D2866B71}.Release|Any CPU.Build.0 = Release|Any CPU + {3C748027-270F-4C30-8D0E-27C0D2866B71}.Release|x64.ActiveCfg = Release|Any CPU + {3C748027-270F-4C30-8D0E-27C0D2866B71}.Release|x64.Build.0 = Release|Any CPU + {3C748027-270F-4C30-8D0E-27C0D2866B71}.Release|x86.ActiveCfg = Release|Any CPU + {3C748027-270F-4C30-8D0E-27C0D2866B71}.Release|x86.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal diff --git a/tasks/lyamzina-ma/lab_2/photo/1.png b/tasks/lyamzina-ma/lab_2/photo/1.png new file mode 100644 index 0000000000000000000000000000000000000000..1df5bb048edce43b0d22dc3fa16397052ee071fb GIT binary patch literal 15101 zcmeHuXIPV4+HNR{fPhL<6tKbuq(~Klpdd-1A##3loW4k zLm=cr;7j`0QSg&hk=IP%A2PW1T{%c@*SUG{4W;!hwObHKK?Lo={UhLe>PLzOa0uj- zE9r}D+=|m30+D*7bo-W$yXo?nkE;nF=N|tbZ^M(p}8Z| zaWX^HP?idM45mw6Nm;GZI-UPDBZ&w9*G8O9y!AE2V zYtr35D=i%ElL5qZX*3$0ken=zPMqQx+uHRp+-~Z|+^*}xBK^|L4n}hhqm()KqGaBs zEE1+-HwTdF3xnhAF_zd3Vra7Ac8uv^3o$P@p|aTTyCp$G%^s1t>aR`+*6FP=gYtGd z8jOxGo=qB2Cbl262=x(LX7mx5T@8fN*^<=l)vQmW;(Y7u1hZvU)%)suMBNp~`Ih}} zLsu49cKkL=w~^B8vU8a~x_N9%yGKmp>v~~x6+AoM@p#@D?THIDM5x!++S#DZ?-Ga2 z{VZ;SZB-=&XwyvO#Gw0XzTRMVuQi**{9Ot>Vz&gTGiIF8Bfq^U*R4cY4yqH{ely_U zrOM#oecgokIr6N_z)=6*Gd*2z;hJ%c33vS~DKv}RtiIXEu4?e3G~x7VtRG>vWT~KRywh(L zw|g&mh0xKkx8vnJM_|bF8~L&tmb5)Kf!*_~(?8oV|0K%QX`d*QnNhgCxamv$;5$li z7W+}NX(+kx+_irL?}J1|IIhI*n|}6lHth{e+Gp~e@cMp8--6YT@l6?;i&+hlP?}mj zx*=(=EZJeb$_q2L89Qj{TuR)K%@Wy%4fsZF$0zOkF%5Iy*!WR(;8WQnBjfCaTkZCB zOC*1}zOK91m}*qAAd;dxSF52|SB>dsFzelyW$ShJwH>%Mnd3ca>iD(B#F>ESOnXZ2 z#9>r>JqCSKsLs}D*5cB={R`fUKaQTRe`I7RQz;zjR8etebReb0&1s;;Z*et_t=rj` zV7BE+RP3chpRYl(I<=NRF8f~a5qZpsf&BQ1^KP}sF{^cM#1?0F$#Zv;vP$aCA@F*^ ziCXzb&=cnVkbSF*3i;<1p@IGI|e$n zUW)QG1Y*ukejEbHrzZnldoKt=0fA)8`;$Q+0~hK+i!Pop2bUvQl7d;m8}e)dNUs>= zAHg*+$clpB1o3-!B|nCn-lz;-y}RC5rXc|4)TXtO)je#=cdJz0NgLf(1E{>R!X z2EDEo9XI{t5XVdyA?`E7Am*WUMJ}^#ezv*YmH1?@&33cHzNiC-$RCHHL^TclL)D4> z#gw?pvs<}bzUxXiI6Smp2jwnA)2=QI;$oV{Lh5F5UKqj=pIIc|W>F-5cB1b4o(Z8h zYGrRpoS;s)Gq#1>7JG~x&5uGYdrtAC44OfpSM6(pV+0AWN-?siSfmOA+ zRBVL(KI6$7u3O9|?#>=wb8>zAjri3*WL;f0f8BiUzL-%P-Vj@{O`YTCfWojCt@xPv z?V+^b8TPI@`*i+^&jr%Reb?Jm_Hbq0i~13Sh`pzRgT1JS(Pdk)#QhYTHSTTu7X4%_ z>tLLntV`X2srv#;J2qn$lyFsj<`Xf^29wJ+3qpgOhD}<98R&G-SSf5 z?>}9y|3IS?|2 zr>aiCO@k`oPrtQim=4~(!e9@}$-JlS_QFH2YJe*33eKv=%5ODmZ;z93mY_BMoyttO zj3R&7@oeMbkD^ug9;UwWFPZqttwMMw!E&v`THhTT9^t$5rq=E9V(OSlJCx}n#jDjR@;u;-ZSz1(Vn=uC^EKi7}}mLZZ^`k~kg$2Uz-s*B(E8p+)JVOeTFZl8P@En5~Ac$hwGki|}f z1EwI9n(htWpe>W0tr5>vC>vs@i1ZDsTOLI^L36E%31a(k9{ZhdRtEOwiuS(aeRGPa zP<4L2AJsg%vo^NV%@VVH9`xd6h=gx(KBj$sM2m#6eJj&Jl|k%qS;ycK{pT_6B)p~K zaKR{ni@5u^V|lxMY@((+aEQ=3E7RRIBfBhJS~zhRNA&WWyK==IKhfeCe8jGn&5gC+TuBE=Ty|^VSQYMRR^LX}YRB)A@ z!81a3KcJvvUtqbc`2A&vT*3RB)xOe2atuT_CyQlRgcPU7YE4D;vbdgisrth9fX93g z=lsVPP`&r+N=0g>W5#8pyO+!oy;R{|dlXIuf>-~%*I={Vr#^vWcN%) zUbX0UdDr5O`M1U4s?iv7{JJb*VAMzd`pE7l+U`H36HK;UyJj5i_BWTrE89yDc}$N6 zX~vv$1=yIq=gT+;LgG0W4-nzp*cSb{l~)y}uePsv z)NNde9TJczxAGgRWbs+quc}#g&8;-+SXqwO-0lz0f8OcSxBr^si^$-vahl1Zy;~^y zX)76HV?pf)R@=!LoxA#F@l&H=Zu4<_{b93*BG?R6Vf0&8M96Td;VdU+}WH%-&R) zwO?3@tZ>rdbe!4tTNx7@=_ecZl7ys9!F9f`yPEqy92SGN%N9RsbU(ki{j>~Pg-9c+ z;fcoY*5uQxneh6D4($rW)=jFNgUZo*xEqG+>t;W+)c0aS93&o z3gJuKQt)|_W-;mJ#;b6m3(_t0qX)_lY^ia{9-BO#uG(rh`JnP}#*BVWFvhTUiy0oI zaQ$Oimk-gZE>_j%^JCO%bYfv$#>8C)Om64ysIAvY0Mp(}6l>V?~H2t119t)pPco-BL$H)fHDgjx^I0;Ur>;Mo-eiPJj@wV8>25Xy8lDm+Te~#>s|eEu|XEx^S+^$4kEfL zEnDytv0?W?P4cb+%LuMGBC2EJB{EWdnP6BmI=~aO-+p-Hi}v-i3o%#ts?SBt_nd-% zl6GCC@!2e8ysGMPZE$}yqpWE(&s-n(-szKl%yOP-|KQk5ru;nf)yjRBe=4j)T%~)+uhdVgu z&czTFB;P|Pc+6RuwpLoV?rg%kG2G`+a7HD^7*e9lXWxJXk%L$J^wU11wOUzcz$kT8RSFHKaR;;g0KaSwl+9SfNBF4WY z7LB;`kNB{=m3mnOA+ zo4zj$R(#<7^YI@TO~>~%7HR|5-r&ORUvIn{#ChNBq#sA{TU6!6?yFp%_C7~1X-1j8 z&|IDMaQthM>tc9?uS&;=M)gYmY`GskcawE$NOl(~v8GTy>gYzbZq;f3O?q3y&naJUPPUQ+i?9`>M zLwtBxyH^hF7*+nz@{Q>FevjyW(FM3s?OQ?bcU(6JKiVhiRK(1N-wFDB%-Me;v+K*6|+mq`w*;}F7 z7Ic{itj^l-Blw_Xw_~)^tvtRT#)#qzzf<2>AFA5gGdrkC;=yyr46i(i&_{Rs-Ot(V zLW)T&dby!CvJO*Z-ccPwd5Q8DZUm8Is)<`>&icGVT(C zyE1q;8yPh|^hytKAMQnI+iwuVKjCD3-z~Rg!GA>ZF-UfgFm^4*9m>kS+mPp}AfmS= z_?K82@mqw~#P^)4CKj931C9bCY1{*O{fY8^sR?<~GdX34k$WW@i%5epx5Pzk`Hx#U zVi74taf5cZR#AhW*E|T=#KF=auo~Ox@Ule_*&De?3wRtF8Ow71oy*VHAr@S(S=7^7Un;Wva=e$dw%8e-O1q~xlPa&*+&h1M*vU+0!h zp?oJckc(g(3t5@(Q-D!HAh~Mh!%PRd7 zXN9+5kY20z6B)FQj)_@lU?4~*wt2rxFtNMGDU6nGeN0E66v>%h7P_>mwU0XmYl}Rm zyPYiX_>~w05=yH|GGt9p1up-acI}_s!!LKo_#slV3wo&}qDv0tIDRIRHaW0Tx4=D; zSFJUAE&?<2f(HW8Y$Rti@0+she5hxhsXex`%)4RmLMbQ~BT+~mO3f>Ip*ahtXWsgZ zLk{c~nSDSjzT~sw3`L9BYtd+#Z-I=qo93aF>IrQgsy#}ZJj0Ls`^g}hNvA1D?vim1 zQsfd1<-p0Ky+`+^J=6Nx8Q=zyw57Gz7urjPE8^m7=c36Ve?0g|Co~&|$$BIpScB%t zYfc${VCQmofy)&8iCz9Aq7;j{E#f)ju%c-OfrMxYQM_a{O(=`@xO)MG5&}2zEOtko zyQZANo%P({^t0H8Wei=_-3$EUcaB2*r%zTx7{}iqm8iB+Zjh0F=BWqDWpwTRvppQU z+>Hz|TwrYcYo~A-P>{#;{2w={Sd_>)xl4*qPUK#as9u6sJxf|UwR|ss@q-wP22!wM z3Ox%kxeI|jq~xwYVG4o#!4?otmF}=;>fGaWK_;O?fKipEP1Q=`tP72WFcfmLfOhk? z8w7Gb?uplFu))W!{u>tjU+-yBq-2Z)#=|I{=d_Fz?UrZWpid3C`I=Upw&R<>X9Rnjp}IYISiFi(6yo$3Gu( zlsF4q0}ZEzSe@^CWyl;V(Tegfdv#lOqXCqW(Ia(Is1b71;%DsfFW3AZQ1UnlwE5K-d&MuL7|OE59YPGO?o?u3%s)qgs!$z%E{|~<&BBevH$kJMifbiJoIdcV<=N-GaMOuaY?W~3weA9uREWk+?n1anYbD#_fJT*U+DRLv zSB_QbFpDql$Ymu+K-V9p>C-l{DzxcAi7_8aO+Bx%>5A64+KU=wa*;s&){0!hKx6!4 zG?TW6LS|;whOmW^squHk_h-U5T36)QvC5ZUT_reE7&I9S!98vDV`>_<6^Ge_K;&gFTR z?!y;RJ2yqTJh$WJv#l+go0+5>s3HCrPbGPne-AAC@a`u(V7&%7$@Sz%R&~G9o0g?G77A02ebg-j;Z=nW0$lW_FnOLq<5X`TTA2F(VK$Iv?b4VHC+X5 zW_pxpLPKN1*q!ZFB)&Aa=9ws&hXdClkQsjnopV=YhS0a` z-LtWyG?1I?G>ZQ51JP*}cAeh_2|_?G z8dp->5f-N8!F)LRJl3a#7m#$Z{Kg3BSs##p2^19*&($e6jIgE~ro)PUkV@*?`T8t# zJz$Ye(6L}sT1ezl4J8NUW-sl4YV{PqolSO^UEun})#?fg_(q4il{HtH2$sXp9s>D% zY%-G)Y*o*Z#Xo@j(q#G{0>?jGu6|P;cMn}THlk~#ym7fj?D`{h9@u6ec;=-n-C!$G z&wK?FZZ)6ep(1^5u)veX{SZhwc^|pRyD5vHeyFo#4iA2yAId00BX|vxK_ zz(*MBsRlM6HEaqASR(5d^!OTiTzBGdbM{8{4$b!T<#R1gMk9_hf@FzumNwcQ*H`@k38}4-yT=|;={(HD!Ybxxp1KVO3s}Y z23jBl_J~~dXZg=22M_n}@;0VXbl8P)IA{$j!6YK6g}(TNxVgUuj;DiKl~sEvL6}D} zcU{%}u^PR-G*6&jbOH^yb;^%y6pXd{e4V-)nJaWEnOQOma=Wi@4e7Bt#6t?gP*|i=54nDlF6#4JdMoHeWM>WvM!dxr-XknK53d_J8~YWqx!(1 zAom@K+OLo7JXhy;-vL^;>B4z3E4f$!N!BSl-B>R%+gSw0?P({vtXl7kEM`?F;><`N zC`#rYHj$Z!;jY2=t0DdmSU=pVmZWf}tLtn$J2a8{qw`AoH>J(H8=q9N9;~OkW_4tL z`%t+}Qr?e_tdQFDg!jjU&j5&+j{L{UIy+MG`A_<}0Ml_XeoBFl5>_C_Ll-wY6w3_h znPdhxN6%z4E`++xeb9Hj-S1IuQgR>G|MCt)>4(KM9&*Tun;&fhc${^L7)@oQ;fgga z)s{PUC2VdIn2zjeiJWVK)mJgKFf+BFSh-OMa4qvP3aMJo^L5$7K98G*J9q)~Yu+SR zjb14I3BV*(7sqy1zb#l0D~3*QzMEwJJuTAo6v0P14kKrX9Kc+b#MHh%0~6t9_fHzB zgcc4z4Bxa9<H{oxoWu%A1ag~Pu*+w<+o>CD8Y>$-nt`kFQi72%-_tx zT28`r6^&HYq5-7$0f}#?etUMsN=<{eY{phGgDWYYu~s7@4ruQuT&KynB>9nzU2TC+ zLSV8`fo7_U`*oP%M{+(x{M;MGyro6jB9{aOgpw^4Bb`k7_|4v;Elb)KJHd^RbDamS zqS94~CdXM5yJW7HVf^LoLUy5SF~$QP%&6+QadZY3vgD^7tvuIAPT^&8x8;;}xt`fr z3iEvyb`c85O(9CF6RRXgUdyD7m@ySw{SniGxHY4MZ_fHsD|w1X#A&uk;fWI0v&(xM z5!c(`Y4W{?&y>Z>_&6fGR1#e;-Y~@#a!H<|hMdq0pcWF4XnYuc(_Rd`jCA&9X|#E6S<*T%zpdUTQn-O(609$R{HiL#%F^sLUf{Mkk3k&K?04 zTNfFJDymzT1O!hRp984$g~E^3?Q2VKB{Bx?eB1!kv9Etm>qT6XC;_GM1PQYHUI_O2XX3hGaHM_VVJ(_E1NyP?ZIm`zX2%C3ujDM|~)0Wj9XSdPXocv(Ln+RAOwRSO#<0bIZ27sF{vSdSM zI0B2ks$6lJQ>jtj>E?@}Q>EpN+gRmGVi1D{m~p+_ z)&P07WYMkg=q$PU5yIf9qDPCN!w=?H-p3E6zDY}E*Fr>eC`PM=l%TVIQvhRvYfGJR zGb~G<<8c-Rb4CJ*GERH@(3u8lCJ!hZ}>3*Okbn{7EHJ<0_F5fB=wh+G=8lN5Tmu<=v%&Ks{!#3#aA>bc|Tn+nC_YMKIM?WD;|CzWk z`YgaA6L<+{&BeWU8A=ulm=mP-t82GVuDTqI=DEoO8x!9zs>y(deH*u1N1Mr?{sSY? z&+e$D|Ea%ornE~`iJ+wbJzz4R`MR?|Tw&u5T&~KxpTA_^ySZcm{+{~}k7wFz=&;{a z?QQWz8b#|Jc*|u_3xdc};^_LgUR{nxASyH~R`^2vfi7omj%FN=FB#vibi8cC1A#d-I zUg4a}0NMe&P#qH!W?0i!QSNELS{*_zZa0&_+}AzP8(1d}ID?6YyuQVa?`yIhORCj%gniFLP90l?%5QDSfrHVqDtR+_MybQQ@TtJyB>-d{p!~iH zZtIXsJO{bLA6Bjxz)Jr<8}kb{Uy>@z!rbZkKU5qkdHC0dWUfllWa{XKbzAG9$2g(yXiN|7>l54%X)*d2UQ7WdhuchpXj*%4EUVLRt$<$dy@h|=I&2NN^a=v zxy0O;NU24xe`b-oO{Bd13Rf~nxy&JhP$UJ2 z%FE2#Lmk82dO|>08b-5req1|HPm;Bjuh30>>hDt~2jF%^-6?!0;`8&jtQ1YWTv}>x z?=$iajgnkoHh}4Mnuq?6sR-iP4Cn|sUf1F`(c!Ki1gDJkoKBnst+WJ!{?S`?PVP$K z_C0w)nr0b)8#8edl}7yZ4j=GySBpCH0e$Fy^w9I-u$Jz$!^l~wXc23WY&79#>JZ?*X7c6+iWVvUVlyve!t8QBO^l>t7!s)0LRQvET_b~H~i*3oU*NVJ&M!H zDQ5hMx9BD3hkg;m60vdG$t3MrPKN%Kp(BQu9DxTVl8#fI*YL-a4ouxr_)p`ft5WeZ zqh~T;7B!^lL%$bkv-4$Eldz<)HyebtP%=b@=oaSGanP$c=k)s%07=f_mjlq86T+n$FG2h*rt-?WY+yimY;1v)o$%8 z$&`$_T<*3#cmuD%=y)s(%fNMNE{Uj5R{j!!`PYe5q@0O93D(90p7sg!MHwjx?CZ~x zVUXQI?JeL=b-vuRGqu*TjGSKIS?Vj2ec%LSO1XjPi^2QNC0DN>ZKme$9BEU1w`Oi; z_DD{pyVfu|?)|Cu(~ED;fRP@8405d8{7Brn_|%wmQE!Kvu=IflQnaSq^*c{(Bd^{% z1vGeva}F8g?F&kGjyPMjq%-=;mY6>zbY&35sT$PLHe&-#RWAh8yRQ>}ssa-9TzicY zBh|;nD-%7L3Wl}-Gmic=!*F~6s4;I~hTlN(DnDZp1+EYFVHJ!cAjDPt@eE1oJ7PpY ztE!@PNQE{V=Nc}EXQWcXr(dfyQzS@qsc7xgPp?wcfc%2%&b0@T0=n3vXp0izEs#1pUnv-*g#_!PVq#8_c*^9kY=Zlph2p=<8g77(dc({wM4Cp8kDafP%8kl2ieq#w^_Xf(0jlhr zezls^HDQYdP}e1Ee*VDBG$bg|aX@o}(=v@zJy4hikop>^f2|-GS}Yq%^yUEaF%d<8 z2OHjztyiW0fSeo^ZczMXVZ_U;^WjwIeh&zMz*#&ARI8;?S=Lp_Tz!_aoFpn{P5LwF z#?F=w0OB_~a=AV(pej~6Xy<7f+g(r#&*Fj-ZS?-4XV&h`#<#MlJl58`kb;Ao)!Xi^N!)<%ss> z#8AuwGZzv=ta{aU7MpLS{j??A{-W&yxj-Q?3q!}5*DWP{lU zoaS6q{fij_Z$~CylPpnyK!Qti?=|j^Ho)K22m_quHGk^U&rn>!jIruV zCmTGF%;9Ctuufa^@obEON6*#D$=iU|yU0Q}jra*pYp3IOF-by2W5J>@8BSJ<=Bj7b zxaOv~bpa5KD?o)CJdH@Bn@)k_xFZmzDhTJD8}Ft>oE&&y3KjY@8uANL!k9Cpj(?$# zC{*F6LRGePvBP}VDG1JoU- z7r}R!Q6^HZ1r8|AU}4@HK@dKt@3$up>;qjYi~G) z1ar6!W+p&m(Fc6;U3Q&o|nM^PN<(E-m12m zbec*H{x1O0M=*mK#)`OX@b6LZ_YTe|sD$}oq*y%(6x^7=o%mn+`V@%0|0ude%>}a&YZu0HqxN-nra5Zd^a>%@y_jub|voZ)913NmO{MDM-Z>xvR-Im% zvYUy%D7Q{?a=JSBt^UFmhe+t^ClxSWp9v{b;=W_0YC;Aa?aX7x(~Dr#0SF?3NC6VH z|7I7H3tgV1!4bpNf^qhN|I!)r?=ury98p6&TMDTQ*B_A3=PHS50xXN)M`7&b<6Y;U zVp3rM_MGz0pXo=>URYmz z#k$~A3!Z4lOTciR5GAt>SWjy{3a@;nokwRk$`hNDDJ%wP{MeI|V7l>r3>yrH@I3v8gI zq};f4jYU_#d`zuD{n>i_nonC8Z^T?}zNm;#ZxlY1loloQ+Q_bhnOQykbZ2qxOTmn+ zd2y-X-i&9A3JKHTJP6XBH1*9Cmc+2KF3GeN*CuI#DEA0y8e`?Z4qprn$6R95HG6-% zWPduOYU)aF2FXh?nc4V&p|bvYikD_aX3|cfD#mKj)LW9bxI7=}h(xQYziKW1{4Es( z;{M(rX@zQ?e1bum9LYQToE3h#w^g9z_Lvj;6t)y0W&iCx>8f3FR`Y|gy=l4u-R~5$ z^n*1Y7)CE;{2M#>vS|#Gc+o)8#9kYz7Wj;7LEx=3|{JZ z=o)A}q-N`F?&KR+nB%3Z|Jn$DH|HAi_)DJC8{7qnP^nC>*JL1^XSx*nbF@84jk^yf z3g>(NA28S6)!8t+aXl-VWRd`qwxy}H=(@gaoaiTRr}3v+KJgQ5mFS$W@5mJa$yn=BZ&DY=zo2(}n`d*1JOkDM z%xaQM@o(?qAQ0D~k0}(pFy9xLgwW12>4}0@xael;PjPRdJo~5xgAZk{sOpvueAOmR zRHtW&5E03@;{kBx`04jaZ>JmMB&W1pQ9taxjx$o1gF9eKi!h4XM0lN2?^5C+nKjT_HLpUf?JqV zOdi;YWj*8@8ci-yH!cu|1GPfNoRs?N4PMkeTYsii7`r^4WyM`xZei)!tscjG@Lsnw z5#=u2mvv-1^rB@J%1=edNU-K~7;l1UrC36?4ov-pBqn@lqz3Kv@J=*zW?_i)8t~vJ zq(4#%Ifb^bSn1l2QVRp6W2O9VtJAKl`18(fD~I+_75Yk4@7(JpfwT(<_A>}OzLNW| zSz_K%2uj^*36|A`-hM^~q164EHjl2nPh&I{p0Vt+ux>^zT4F{FqfHmX?f*L3t>TbR za1A1 zeL-^cnX|CDe6&H%@Z`AQ`oa?v9SGzrI8DGM`A%tjZ9XInL*u2JtJ&G?x~;W<3Z7+e zat&o){>+{?%|Cv>e??lzN%BTYd#eEI5icLoDgtS%>yY7P(?<V zjzZ2u4rE`O;A}3!I-=VW%AK6j#~lung9l629=Z-Oj#c2)-1H|hlYL4O5;F#0&%vU= zmLI$RXVY|PDFVl0^M4~)y^buM|F2LL=&kCU4yJRl>RH=M&vPIuvSyUyE4}9tr8)gOB({aenug^K=i*4Gco6^c6i*BBZ;ifynR_UQ z8E0RA{1PHvY<(dLZd8J4SBqvSZXPaidT-Qw!=%z?0r%L*+D+M~_k&b;oD>8i)J`O` za=BSUfoE~>P@z;Y90cI%h3;i!JiVUbLvpWG6wp6p^>Ut6F05amaHu|9^K(DDh7h z;CUQ4i(_1W;n;un7gYZ#-2NXC{{O!j#DBW(FE@!4h*|oAYk2b4z{f$96x46$%9%g; EUyv4t9{>OV literal 0 HcmV?d00001 diff --git a/tasks/lyamzina-ma/lab_2/photo/2.png b/tasks/lyamzina-ma/lab_2/photo/2.png new file mode 100644 index 0000000000000000000000000000000000000000..1952fb757ac5cc7111c0037e282d4e81a1b05a53 GIT binary patch literal 11452 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 literal 0 HcmV?d00001 diff --git a/tasks/lyamzina-ma/lab_2/photo/4.png b/tasks/lyamzina-ma/lab_2/photo/4.png new file mode 100644 index 0000000000000000000000000000000000000000..d08f3c0fa6cb15315abbacb3f593cd8e45a29044 GIT binary patch literal 17626 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 W7aBAicfec@P 0) + { + writer.WriteLine(lines[0]); + } + } + } + + Console.WriteLine("Файл успешно сформирован!"); + } +} diff --git a/tasks/lyamzina-ma/lab_2/worker-1/worker-1.csproj b/tasks/lyamzina-ma/lab_2/worker-1/worker-1.csproj new file mode 100644 index 0000000..328500d --- /dev/null +++ b/tasks/lyamzina-ma/lab_2/worker-1/worker-1.csproj @@ -0,0 +1,9 @@ + + + + Exe + net5.0 + worker_1 + + + diff --git a/tasks/lyamzina-ma/lab_2/worker-2/Dockerfile b/tasks/lyamzina-ma/lab_2/worker-2/Dockerfile new file mode 100644 index 0000000..f80c2dc --- /dev/null +++ b/tasks/lyamzina-ma/lab_2/worker-2/Dockerfile @@ -0,0 +1,18 @@ +# Задаем базовый образ на .net +FROM mcr.microsoft.com/dotnet/sdk:5.0 AS build-env +# Задаем рабочую директорию +WORKDIR /src + + +# Копируем файлы и папки в каталог в контейнер +COPY . ./ +# Создаем образы и устанавливаем данные пакеты в контейнер +RUN dotnet restore +COPY . . +RUN dotnet publish -c Release -o /publish + +FROM mcr.microsoft.com/dotnet/aspnet:5.0 +WORKDIR /publish +COPY --from=build-env /publish . +# Вызываем приложение во время выполнения контейнера +ENTRYPOINT ["dotnet", "worker-2.dll"] \ No newline at end of file diff --git a/tasks/lyamzina-ma/lab_2/worker-2/Program.cs b/tasks/lyamzina-ma/lab_2/worker-2/Program.cs new file mode 100644 index 0000000..cf9c2f2 --- /dev/null +++ b/tasks/lyamzina-ma/lab_2/worker-2/Program.cs @@ -0,0 +1,22 @@ +using System; +using System.IO; +using System.Linq; + +class Program +{ + static void Main() + { + string inputFile = "/var/data/data.txt"; + string outputFile = "/var/result/result.txt"; + + string[] lines = File.ReadAllLines(inputFile); + int[] numbers = lines.Select(int.Parse).ToArray(); + + int minNumber = numbers.Min(); + int countOfMinNumbers = numbers.Count(n => n == minNumber); + + File.WriteAllText(outputFile, countOfMinNumbers.ToString()); + + Console.WriteLine("Количество наименьших чисел сохранено в файле: " + outputFile); + } +} diff --git a/tasks/lyamzina-ma/lab_2/worker-2/worker-2.csproj b/tasks/lyamzina-ma/lab_2/worker-2/worker-2.csproj new file mode 100644 index 0000000..fb2480c --- /dev/null +++ b/tasks/lyamzina-ma/lab_2/worker-2/worker-2.csproj @@ -0,0 +1,9 @@ + + + + Exe + net5.0 + worker_2 + + + -- 2.25.1