From 8ddd3850372165da7ded743f02a9d6743e3b8621 Mon Sep 17 00:00:00 2001 From: Khalitova Angelina Date: Tue, 3 Oct 2023 23:36:51 +0400 Subject: [PATCH] without comment --- tasks/khalitova-am/lab_2/.dockerignore | 2 + tasks/khalitova-am/lab_2/.gitignore | 456 ++++++++++++++++++ tasks/khalitova-am/lab_2/README.md | 52 ++ tasks/khalitova-am/lab_2/docker-compose.yml | 13 + tasks/khalitova-am/lab_2/shot.png | Bin 0 -> 69467 bytes .../lab_2/var/data/another_data.txt | 2 + tasks/khalitova-am/lab_2/var/data/data.txt | 12 + tasks/khalitova-am/lab_2/worker-1/Dockerfile | 12 + tasks/khalitova-am/lab_2/worker-1/Program.cs | 22 + .../lab_2/worker-1/worker-1.csproj | 11 + tasks/khalitova-am/lab_2/worker-2/Dockerfile | 12 + tasks/khalitova-am/lab_2/worker-2/Program.cs | 30 ++ .../lab_2/worker-2/worker-2.csproj | 11 + 13 files changed, 635 insertions(+) create mode 100644 tasks/khalitova-am/lab_2/.dockerignore create mode 100644 tasks/khalitova-am/lab_2/.gitignore create mode 100644 tasks/khalitova-am/lab_2/README.md create mode 100644 tasks/khalitova-am/lab_2/docker-compose.yml create mode 100644 tasks/khalitova-am/lab_2/shot.png create mode 100644 tasks/khalitova-am/lab_2/var/data/another_data.txt create mode 100644 tasks/khalitova-am/lab_2/var/data/data.txt create mode 100644 tasks/khalitova-am/lab_2/worker-1/Dockerfile create mode 100644 tasks/khalitova-am/lab_2/worker-1/Program.cs create mode 100644 tasks/khalitova-am/lab_2/worker-1/worker-1.csproj create mode 100644 tasks/khalitova-am/lab_2/worker-2/Dockerfile create mode 100644 tasks/khalitova-am/lab_2/worker-2/Program.cs create mode 100644 tasks/khalitova-am/lab_2/worker-2/worker-2.csproj diff --git a/tasks/khalitova-am/lab_2/.dockerignore b/tasks/khalitova-am/lab_2/.dockerignore new file mode 100644 index 0000000..54fec4f --- /dev/null +++ b/tasks/khalitova-am/lab_2/.dockerignore @@ -0,0 +1,2 @@ +*/*/bin +*/*/obj diff --git a/tasks/khalitova-am/lab_2/.gitignore b/tasks/khalitova-am/lab_2/.gitignore new file mode 100644 index 0000000..3c395b3 --- /dev/null +++ b/tasks/khalitova-am/lab_2/.gitignore @@ -0,0 +1,456 @@ +var/result/ + +## 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 +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/khalitova-am/lab_2/README.md b/tasks/khalitova-am/lab_2/README.md new file mode 100644 index 0000000..9d1ec4d --- /dev/null +++ b/tasks/khalitova-am/lab_2/README.md @@ -0,0 +1,52 @@ +# Отчёт по лабораторной работе №2 + +Выполнила: студентка гр. ИСЭбд-41 Халитова А.М. + +Вариант программы 1: Ищет в каталоге /var/data самый большой по объёму файл и перекладывает его в /var/result/data.txt. +Вариант программы 2: Ищет наибольшее число из файла /var/data/data.txt и сохраняет количество таких чисел из последовательности в /var/result/result.txt. + +## Создание приложений + +Создано два приложения .Net 6.0 на языке C# с помощью команд: +```sh +dotnet new console worker-1 +dotnet new console worker-2 +``` +Программа №1 по варианту выполняет поиск самого большого файла в каталоге `/var/data` и перемещает его содержимое в `/var/result/data.txt`. +[Код программы worker-1](worker-1/Program.cs) + +Программа №2 ищет наибольшее чисо в файле `/var/result/data.txt` (папка `/data` заменена на `/result` так как по условию задания результат программы 1, который перещемен в `/var/result/data.txt` является исходными данными для программы 2). + +[Код программы worker-2](worker-2/Program.cs) + +Дополнительно создан файл [.gitignore](.gitignore) с помощью команды `dotnet new gitignore`. + +## Настройка окружения + +Для связи двух приложений воспользуемся следующей схемой: + +1. Каталог `./data` примонтирован в каталог `/var/data` для получения исходных данных программы №1. +2. Каталог `./result` примонтирован в каталог `/var/result` для перемещения промежуточных данных, полученных программой №1, для программы №2. И также каталог `./result` получает результаты работы программы №2. + +Для каждой программы были созданы файлы Dockerfile с образами ([программа №1](worker-1/Dockerfile), [программа №2](worker-1/Dockerfile)) с описанием процесса сборки. + +Был создан файл [docker-compose.yml](docker-compose.yml), в котором указан манифест для запуска распределённого приложения. +Был создан файл [.dockerignore](.dockerignore). + +## Сборка и запуск + +В каталог `./data` помещены 2 файла: `another_data.txt` и `data.txt`. Первый файл содержит два числа, а второй 12. + +Для запуска приложения вводим команду `docker compose up`. + + + +В результате выполнения в каталоге `/var/result` был создан файл `/result.txt`, который содержит количество наибольшего числа в исходном файле. В нашем файле это число 9 и встречается оно 2 раза, соответственно, в файле хранится `2`. А также в результате выполнения программы результат выводится на экран (в консоль): +![](shot.png) + + + + + + + diff --git a/tasks/khalitova-am/lab_2/docker-compose.yml b/tasks/khalitova-am/lab_2/docker-compose.yml new file mode 100644 index 0000000..91500e5 --- /dev/null +++ b/tasks/khalitova-am/lab_2/docker-compose.yml @@ -0,0 +1,13 @@ +version: "3.1" +services: + worker-1: + build: ./worker-1 + volumes: + - ./data:/var/data + - ./result:/var/result + worker-2: + build: ./worker-2 + volumes: + - ./result:/var/result + depends_on: + - worker-1 diff --git a/tasks/khalitova-am/lab_2/shot.png b/tasks/khalitova-am/lab_2/shot.png new file mode 100644 index 0000000000000000000000000000000000000000..eda77326ef10eaeffd0b8d7e9413812661bdceaf GIT binary patch literal 69467 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 JDivP7{a*?9QhWda literal 0 HcmV?d00001 diff --git a/tasks/khalitova-am/lab_2/var/data/another_data.txt b/tasks/khalitova-am/lab_2/var/data/another_data.txt new file mode 100644 index 0000000..7a754f4 --- /dev/null +++ b/tasks/khalitova-am/lab_2/var/data/another_data.txt @@ -0,0 +1,2 @@ +1 +2 \ No newline at end of file diff --git a/tasks/khalitova-am/lab_2/var/data/data.txt b/tasks/khalitova-am/lab_2/var/data/data.txt new file mode 100644 index 0000000..728ae1c --- /dev/null +++ b/tasks/khalitova-am/lab_2/var/data/data.txt @@ -0,0 +1,12 @@ +5 +7 +3 +7 +5 +8 +8 +9 +9 +5 +2 +1 \ No newline at end of file diff --git a/tasks/khalitova-am/lab_2/worker-1/Dockerfile b/tasks/khalitova-am/lab_2/worker-1/Dockerfile new file mode 100644 index 0000000..b80273a --- /dev/null +++ b/tasks/khalitova-am/lab_2/worker-1/Dockerfile @@ -0,0 +1,12 @@ +# +FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build-env +WORKDIR /app + +COPY . ./ +RUN dotnet restore +RUN dotnet publish -c Release -o out + +FROM mcr.microsoft.com/dotnet/aspnet:6.0 +WORKDIR /app +COPY --from=build-env /app/out . +ENTRYPOINT ["dotnet", "worker-1.dll"] diff --git a/tasks/khalitova-am/lab_2/worker-1/Program.cs b/tasks/khalitova-am/lab_2/worker-1/Program.cs new file mode 100644 index 0000000..e65c2fc --- /dev/null +++ b/tasks/khalitova-am/lab_2/worker-1/Program.cs @@ -0,0 +1,22 @@ +using System.Text; + +string[] files = Directory.GetFiles("../../../../var/data"); +string maxFilePath = ""; +long maxFileLenght = 0; +foreach(var filePath in files){ + FileInfo fileInfo = new FileInfo(filePath); + if(fileInfo.Length > maxFileLenght){ + maxFileLenght = fileInfo.Length; + maxFilePath = filePath; + } +} +using (FileStream fstream = File.OpenRead(maxFilePath)){ + byte[] buffer = new byte[fstream.Length]; + await fstream.ReadAsync(buffer, 0, buffer.Length); + string text = Encoding.Default.GetString(buffer); + using(FileStream fstream1 = new FileStream("../../../../var/result/data.txt", FileMode.OpenOrCreate)){ + fstream1.SetLength(0); + byte[] buffer1 = Encoding.Default.GetBytes(text); + await fstream1.WriteAsync(buffer1, 0, buffer1.Length); + } +} diff --git a/tasks/khalitova-am/lab_2/worker-1/worker-1.csproj b/tasks/khalitova-am/lab_2/worker-1/worker-1.csproj new file mode 100644 index 0000000..3f5cb43 --- /dev/null +++ b/tasks/khalitova-am/lab_2/worker-1/worker-1.csproj @@ -0,0 +1,11 @@ + + + + Exe + net6.0 + worker_1 + enable + enable + + + diff --git a/tasks/khalitova-am/lab_2/worker-2/Dockerfile b/tasks/khalitova-am/lab_2/worker-2/Dockerfile new file mode 100644 index 0000000..ab40bcb --- /dev/null +++ b/tasks/khalitova-am/lab_2/worker-2/Dockerfile @@ -0,0 +1,12 @@ +FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build-env +WORKDIR /app + +COPY . ./ +RUN dotnet restore +RUN dotnet publish -c Release -o out + +FROM mcr.microsoft.com/dotnet/aspnet:6.0 +WORKDIR /app +COPY --from=build-env /app/out . +ENTRYPOINT ["dotnet", "worker-2.dll"] + diff --git a/tasks/khalitova-am/lab_2/worker-2/Program.cs b/tasks/khalitova-am/lab_2/worker-2/Program.cs new file mode 100644 index 0000000..40b6894 --- /dev/null +++ b/tasks/khalitova-am/lab_2/worker-2/Program.cs @@ -0,0 +1,30 @@ +using System.Text; + +string[] numbers; +using (FileStream fstream = File.OpenRead("../../../../var/result/data.txt")){ + byte[] buffer = new byte[fstream.Length]; + await fstream.ReadAsync(buffer, 0, buffer.Length); + string text = Encoding.Default.GetString(buffer); + text = text.Replace("\r\n",";"); + numbers = text.Split(new char[]{';'}); +} +int maxNumber = 0; +int maxNumberCount = 0; +foreach(var number in numbers){ + if(Convert.ToInt32(number) < maxNumber){ + continue; + } + if(Convert.ToInt32(number) == maxNumber){ + maxNumberCount++; + continue; + } + if(Convert.ToInt32(number) > maxNumber){ + maxNumber = Convert.ToInt32(number); + maxNumberCount = 1; + } +} +using(FileStream fstream = new FileStream("../../../../var/result/result.txt", FileMode.OpenOrCreate)){ + byte[] buffer = Encoding.Default.GetBytes(maxNumberCount.ToString()); + await fstream.WriteAsync(buffer, 0, buffer.Length); +} +Console.WriteLine(maxNumberCount); \ No newline at end of file diff --git a/tasks/khalitova-am/lab_2/worker-2/worker-2.csproj b/tasks/khalitova-am/lab_2/worker-2/worker-2.csproj new file mode 100644 index 0000000..960073b --- /dev/null +++ b/tasks/khalitova-am/lab_2/worker-2/worker-2.csproj @@ -0,0 +1,11 @@ + + + + Exe + net6.0 + worker_2 + enable + enable + + +