From bf711b2c490bcd0d5783d1c14fddb350eab792be Mon Sep 17 00:00:00 2001 From: Anna Sentimental Date: Tue, 10 Oct 2023 16:40:13 +0400 Subject: [PATCH] =?UTF-8?q?=D0=BB=D0=B0=D0=B1=D0=B0=202=20=D0=B3=D0=BE?= =?UTF-8?q?=D1=82=D0=BE=D0=B2=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tasks/zinoveva-ad/lab_2/.gitignore | 454 ++++++++++++++++++ tasks/zinoveva-ad/lab_2/README.md | 86 ++++ tasks/zinoveva-ad/lab_2/Screenshot_1.jpg | Bin 0 -> 8597 bytes tasks/zinoveva-ad/lab_2/Screenshot_2.jpg | Bin 0 -> 5405 bytes tasks/zinoveva-ad/lab_2/Screenshot_3.jpg | Bin 0 -> 6527 bytes tasks/zinoveva-ad/lab_2/Screenshot_4.jpg | Bin 0 -> 5728 bytes tasks/zinoveva-ad/lab_2/data/123.txt | 0 tasks/zinoveva-ad/lab_2/data/1234.txt | 0 tasks/zinoveva-ad/lab_2/data/data.txt | 12 + tasks/zinoveva-ad/lab_2/docker-compose.yml | 18 + tasks/zinoveva-ad/lab_2/lab_2.sln | 48 ++ .../lab_2/photo_2023-10-10_16-25-51.jpg | Bin 0 -> 17457 bytes tasks/zinoveva-ad/lab_2/result-1/data.txt | 3 + tasks/zinoveva-ad/lab_2/result/result.txt | 1 + tasks/zinoveva-ad/lab_2/worker-1/Dockerfile | 18 + tasks/zinoveva-ad/lab_2/worker-1/Program.cs | 27 ++ .../lab_2/worker-1/worker-1.csproj | 9 + tasks/zinoveva-ad/lab_2/worker-2/Dockerfile | 18 + tasks/zinoveva-ad/lab_2/worker-2/Program.cs | 58 +++ .../lab_2/worker-2/worker-2.csproj | 9 + 20 files changed, 761 insertions(+) create mode 100644 tasks/zinoveva-ad/lab_2/.gitignore create mode 100644 tasks/zinoveva-ad/lab_2/README.md create mode 100644 tasks/zinoveva-ad/lab_2/Screenshot_1.jpg create mode 100644 tasks/zinoveva-ad/lab_2/Screenshot_2.jpg create mode 100644 tasks/zinoveva-ad/lab_2/Screenshot_3.jpg create mode 100644 tasks/zinoveva-ad/lab_2/Screenshot_4.jpg create mode 100644 tasks/zinoveva-ad/lab_2/data/123.txt create mode 100644 tasks/zinoveva-ad/lab_2/data/1234.txt create mode 100644 tasks/zinoveva-ad/lab_2/data/data.txt create mode 100644 tasks/zinoveva-ad/lab_2/docker-compose.yml create mode 100644 tasks/zinoveva-ad/lab_2/lab_2.sln create mode 100644 tasks/zinoveva-ad/lab_2/photo_2023-10-10_16-25-51.jpg create mode 100644 tasks/zinoveva-ad/lab_2/result-1/data.txt create mode 100644 tasks/zinoveva-ad/lab_2/result/result.txt create mode 100644 tasks/zinoveva-ad/lab_2/worker-1/Dockerfile create mode 100644 tasks/zinoveva-ad/lab_2/worker-1/Program.cs create mode 100644 tasks/zinoveva-ad/lab_2/worker-1/worker-1.csproj create mode 100644 tasks/zinoveva-ad/lab_2/worker-2/Dockerfile create mode 100644 tasks/zinoveva-ad/lab_2/worker-2/Program.cs create mode 100644 tasks/zinoveva-ad/lab_2/worker-2/worker-2.csproj diff --git a/tasks/zinoveva-ad/lab_2/.gitignore b/tasks/zinoveva-ad/lab_2/.gitignore new file mode 100644 index 0000000..8afdcb6 --- /dev/null +++ b/tasks/zinoveva-ad/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/zinoveva-ad/lab_2/README.md b/tasks/zinoveva-ad/lab_2/README.md new file mode 100644 index 0000000..374edac --- /dev/null +++ b/tasks/zinoveva-ad/lab_2/README.md @@ -0,0 +1,86 @@ +# Отчёт по лабораторной работе №2 + +Выполнил: студентка гр. ИСЭбд-41, Зиновьева Анна. + +Вариант программы 1: Ищет в каталоге `/var/data` файл с самым коротким названием и перекладывает его в `/var/result/data.txt`. + +Вариант программы 2: Ищет наименьшее число из файла `/var/data/data.txt` и сохраняет количество таких чисел из последовательности в `/var/result/result.txt`. + +## Создание приложений + +Создадим 2 приложения. +Был выбран язык C# и технология .NET 7. + +Для создания обычных консольных приложений воспользуемся командами: + +```sh +dotnet new console -o worker-1 +dotnet new console -o worker-2 +``` + +Согласно варианту, программа 1 должна брать все файлы из папки `/var/data`, считывать длину их названия, найти минимальное и переложить его в папку `/var/result`. + +[Исходный текст программы worker-1](worker-1/Program.cs) + +Согласно варианту программа 2 должна брать строки из папки `/var/data/` с скопированным файлом, пытаться привести их к числам, затем найти минимальное из них. +Далее найти количество вхождений этого числа и результат записать в файл `/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-1/Dockerfile)) с подробным описанием процесса сборки. + +Был создан файл [docker-compose.yml](docker-compose.yml), в котором указан манифест для запуска распределённого приложения. + +Дополнительно был создан файл [.dockerignore](.dockerignore) и дополнен [.gitignore](.gitignore), чтобы исключить для сборки и коммита всё лишнее. + +## Сборка и запуск + +1. В каталог `./data` помещены 3 файла с различной длиной названия и содержимым. + +![](photo_2023-10-10_16-25-51.jpg) + +На выходе программа должна записать 7 8 8. + +![](Screenshot_2.jpg) + +2. Теперь, обрабатывая этот файл: + +![](Screenshot_3.jpg) + +На выходе программа должна записать число 2 в `./result` так как в файле c названием data.txt максимальное число = 8, которое встречается 2 раза. + +![](Screenshot_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 | Файл успешно создан: ../var/result/data.txt +lab_2-worker-2-1 | The maximum number is: 8 +lab_2-worker-2-1 | The count of maximum numbers is: 2 +lab_2-worker-1-1 exited with code 0 +lab_2-worker-2-1 exited with code 0 +``` + +В результате в каталоге `./result` создался файл `result.txt` с содержимым `7 8 8`, что соответствует входным данным. + +Изменение значений в файлах из каталога `./data` также изменяет содержимое в файлах из каталогов `./result-1` и `./result`. \ No newline at end of file diff --git a/tasks/zinoveva-ad/lab_2/Screenshot_1.jpg b/tasks/zinoveva-ad/lab_2/Screenshot_1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2264de61ee01f0ede641e2666acb7f1d5c7edafb GIT binary patch literal 8597 zcmdscXIN8Pw{9Tx08&FQN^epF2ue|DA|Qx>AcT(8fJl=PiWKQZU<(4$K{^t8??psv zAT$$fR6`FK;KXz9J;(h$-+rEZzO&DtGqc8z^~^Qr8t*9Y7<1)f{^ApW?vAF8CV+^D z2w+Y40WKB+w*Ww5;$IhGkPt3X3Q|%M5>hI1axw~PDr#yF6$nH_%Rom%OHT^|(Shmc z8JU=wnW-28>N-7ZH0R$a@mt=k%! zTG~2y?i)WaF*SQ=ZfEb{==9jx#rvs`ub+Rwvxw)BQPD9kVpG#zre|dS@hYpJu&B7C zw5HrJpmUn2?>yd{1+}FVn2ca=}Aa0OOr9E8e(${LTg7dEC7V zKwc8w3*MWA(?(o6!Ce4`Sny)<9YRNb(+3Hrn87rsD(6*HMw*rbKN zz;&+=)45V=ioY)t{?mpXTHSCeIaT&`#z!}DtBTLcB}-~sTV^X~AK1jVigpjzFFz@^ z((VNWdU{Omz$E((C3_XYUYLvkzhRzkc&{}wY^JqLCz7}`RyaB~lvs& zQ4w)IIyMJKW0W`j4`56#JwCLK$EdPK$&0rUfa?`i#3w zm^HOFjaL=FXOF)rHa7Uh&P=c6vLS^NOm>>}D!{yAwe;{TV7)W6a@(T|d3e0#bpgPp zxbW=nUH}p$afTNFN^t%KK$QoFxd224`XzL7;tXyETbS;u!*Y7gG%nd@Znx9C=2kc_dPgBZ6Us~fTnwp#2$2WZ;fwok!g^>*&Y z#UNqJstUZIFMeO3bF27N0UgEtrx$?e3xLp>?AQh1uS{_m_am%TGfld=dFJZZsi%3{ ziau>Iub7ICY8s`vjkouM7Co7p=pMG*sDTDCVw0kS+AO`zV89p4Y(l&Z{l-l`jA$>$p>H**_bA=QrD!mg!(krqw$m z3}&roY7W^XA!PDLep2RTb&b?<*HcG}FPpy7x3@JGmG0p;fhMVdzjt!)G8Z?f@V%Q9 z-#KUt)`ZMD1un^DM`*rV=w0U}rMwhLLjT>xqcRV^*L8yLsgQ4j=XBNZMf@rBe@_ar zX*t5&Gl%28>@$5c9~xCN#8gyS>XM6mwg=Ixdqno+D6mXC)#wn(emos5Vki=?`e|7K zlM!LVU3Iml*jd`b68cCx3We@Ox_)Jf*Q^3_2DLaXwOr#`|BecQhoZUtxW|i+7x5EZ zf31TbI;yyQ5%)@NSyk6EM8Y^YaZ@WfsL3lWRTfX`)vPUDTm1~EQ{&8T60s{?DW|9P z(^NP76cV)=(d_Z4T8pOPiytkAhZf0$!Ru4;fv-mP2936CE&%^L^?saY_9n;C4T{dn2D17cnHse2-R@88m$?_Q8PZFbRZ%4Ne6qeT3U*O z@5sV}sq5m*5?2!IAzxnp7HEN;<=Kj{}QoCCr_3| z@RMHMK#D_)$Q)`D+1m~}tDdMxqA_Am`QvrVnt`}%$=dJW`#r^_aqdPAv!5rc^23QT z$%Oy7S;43s;rmq`udXAYFP__|IPn`b{+Z+2x}xZ7;^ZXmt0C>o@RCj(t6a|AG=-y@ zK#_Cl%Ty)Y)t;s#jx9f;RTvs}9TCr3pT85#ESZ1g;%AE_cD@p+z!aaX=BUWV2Vn5@ z3O|C2MeE|@p})OOggi!a5I&`}7otI6m!riA+Q(L+SZLot{nTN(oc}h$A`K>3=nm{3 z6SsZ^w~Tin7cgbJRy=#194$%VuZnrlbmTBs4C&}h^KtS;Hty*FS|0d3NV($R zCd>8yIVBT7{tT0YJp2ZmOccvHTE74Q@sk+nZ&~yY4D(EZkSOaaJXlWDKqY%(PT9f= z3N`Lp=3^JycNsN7TtnfM_miCuy|&Ly&%5Z|(t_dWM6KUR^>?-{I~>zhrg1r4H0U^=tc~(Z z1Wkw!ebZ!(3@%MciAZ|3qv~{~<_u?S*o=6RVPp44z?2Kvgx8V45fU)IRQdx4{sUGy z%_*iIpx4mL=mn~Gbf!0XzuT(Q>Hd`zxm`EgG)vhJlVcAo7lA+IVQx>82V-;KJ*RU zAzY3|R<~oa1_1;0K^i8PZto&SG#{fpYen3)toNL9 zM(6KEi;chnLs-Q0R_40a>;`^!>YqyJ;RS%fAJ!AXg>zcdb=4CxYVDeajJesK(WiGzbSfH*Xos&tK7Q;*Kq-=`Ufj4AW%Prm^&H(lz_dBQ_&feXr!55BrA zpv|zU(~ztE{CTE`SiilI&ISh`ki^<9v!G;jj%#`6X(ul(0VBy|KH*-zq3RqJSoVV- zdPQzo&NIfa{;hOO_oJsbv?m}T6KgDSZac7VmUq}bcXXUjy|gr2ToPUO{)wB@p4Sjk zeI`{J_FbB*rmq1;Iq!-*7nnSVfxYjYn_Kr-alU(-Y$zRA_Br0eX0G|PqNA%i?{nv8 z0Yt{&p8pRkgG(DI$)nd3B^ym3pFpNiWdqTip0Q+$YdwnBlVx91<(cAMRJ)$anL8Fr zzr?*;<-# zr%vf;q}VHZkz5q}L}#T`C~X3gj;UeYSb=mlwatD@45-?knxm&_zsK(-qHJgcc>u6q z1D0}CfMXR_PtU8*vF2{RG`p??lIRmT$F9%?UB}j-gd-6A#x|0})*0U=_4boBcn!!U zg32T`nP3;xjh$?tvH^*X18IvD#k!`4JE<}ys`56hsW;nLsNWk{1zcNuoWJRN8h-5V z5tWgGxuL7xG;?`+Cu`P+f(9|BSC4*A)F@BlxBuIf%{2vi^>3VPWhaeW` zEG%*G+WaZih61qX0+*5?SpGc7q~E6CVSAUfaeO$?JMA@+MME#W^1<>+>jmKMwp+VR zzP}@8(HJ|JUg;ci8R3(!E$VmCla)E8oB3%6&a{}fPD-@R{Y}ej2g*N-6 zK1Wr%p4vkvCQ9q6UL{Ol5ThpDma<$S!maWOcZNu)I@yIXykh#E6pAj86Tti6s-cF4s&R$91SoAIItf zqDbmSy;+Xv^j5f#gRcSK=-%*BY@b*U8!P{;MN*uVXlwhdN6CzBhNaPpm_@OxFttYt z;0h{RzK|D4xM?2dMe=A6HLlLB5(3eulOI=(fr8h)*HJlN8Zw$#Kmm#o22Ek#Ufm+% zPvUg>Fz@^2h0ygmfxMVQ2~~}*sjBKM5a>v=H4y?Be<$!DnPzWG4sP`pgcA7>J1|E1f1Q{jf@Uf`%MwJ|k^uvps+iSF4PvBS8jL zdKFc#ygdYNLnVC`>|7Gtw4irJutRY^2IMQ_KE?XU?N~&^f=zxxrS>KI;6as!^*)!$%)8e%^GlpG?hbO}0lDqJlS53i2$%R>pV72EBDS67I|` zr($%w4lHG+0Mj}g8vOALylk(y!W>6F`vKX;b`AQ+N^aRo7SP|aMcLjJfAjMus>!VV zEZ1>mH8510li`w(2JhB~`U?Oi^M#K#L>mUnZ%Z=P&e$?=0G=eUGwI0O|MF6d{%icT z331o7f>_|Na6v5KALWOSUWbqXCP9@KW z^cZSzS9WinLbZo&Q-Xtl~lFY3aXHkG)`(Tn~&a7=cZwljiZiddR!q={I(ac=2d zJkiIzjP}G>;lL$uY>x)hJ)*x!$V*(G4Hi3NS9DbwEIY7hoJ;%7E^JJ?QC%F7GjcNlqy685VO!V{3QLYPCGURH;jndut3aZ4a@CDw2SYhD8 zIi3IJfC@dfx(Oq{%UwYmS)k@FcP3rq0DfonfmJhHeA_y7M4ELYE*G)JpTVD&W|C*p znWmeh7q}QTUHI}thPxQ6$xXmjMn!5hpyC9xQFLX^8QipMw7bFNysHLx`ESDh%ZB9c z!DwY3oZ70TrGm+1kq&Pnr4OZvw&Zct@|Tcxip3^BQ`S#MkbdO7p!+53=Ug*#%Y1j+ z8Z!;GF>SefCr(CXXlzWK;M7Ac{zfvj&8#oqH~I>wgbPA%NTR=mKJ8+~!Him3Cl5EZ zx7zrOseQYLwu@jek(k{y*?0G6GBwHdUR_40q2944JOuo~P=qcZRC~wN~Dd$s6 zOV*(QSrB8~0K0w|WU$W1A+V-+DFZ~C{S77DMANp-c=Fcn+WnlepT-s3%{5~Ac=H`D z;#lD~e~V3n=`hzuEU}7+sJ%H+l*gFZYH_RPvIFc65cv3 zvro6ljc4TAELVcJt6rzx0?$$}E*rl^YYPd5dYd(<#{PhBo?0psPsv-rq0>KR{#Bp< zvvu1rJ{SdFHGDpeyBKq&iJ?TwXoTa~`T~H|BJE76sq!*5)Ut@y{pDaDBfP-mmo&ne z@{$i2k%h5P4!*tUA2lba6cP*4*6uv%tz&cgIq6Q_!VoWf;)Qgr|13|dAbCr#AiDB( zSIy?Bb%O~UNjPp%|2-`9i_LV^xa%-5(sg!t#G&r6+#jhF67Kx(Iudmwp4lf?|7hrc zZz90=p7*8Ns$lOzjbQbV2`&d-pU=3B=`PR_<9R`xN-|D0`_T|!o4S_0wC(GOYDKaQ!?-wrF5=5rUgC2kY?UHxl| z%ab`hf?e98~Kg!qPUF+-T-0MX{y)>Q+rNr}u9|7Ml!faV+>)dqR^)GD>}OZoDs(FFTvOC3>M$mynU6y> z?KbpG76Z6c9sWB0RDC^_%mchRv`k|A%-#D#S{FtzWNfr)BohCUMq zFf>N4#Nm9d0$U06>XW|UK}AkGgbmWB+TTLE9?P9qxqjTFkZAipYhTf$K^@!blur$D{)Z%rYlSE&GbZ&sL5U~8aa@L3HzJ4q4 zl-v)Jb*0XnK(9bAFF#1-o_78f0S5Uq)S9o%XNN?6*~s-r!T+xSa(LlZ`#o{N4XlS} zMmK1}$nRQ=kk*kl(b+CHrA_F!&j~!!>VuNwphHq)#djco_#o=qIx>wO+FEd^Gr4VW z--vugaSxPvmj&oNXpsH!Tuc=@9ug1!+uB{r$kn(8o%TyC(dbD8#phUb4S4;K-{zal z75RH=DtCoIZG5W!NFGZ~1a@eEn*$q?j!C$$oi%i8mVa++$I;&8kL?wTB<0@pJ~B}v z5<0z0Xum~+34?y{#$pCUlI3w`2xa3(Yr@v{jX67Zt!YMD+;(rp97up-&p(loIF(nc zw5iesaqq&SuB!?n%A8Y%Y$!t?ohT&hLGoYuX&l8EqO=u=hO#OMjdrz6bXzBS()Zt6 zNj^1P3VK`;J(J7QjGZeIXv-X*@!?W1Oc0}TJyPrsp(BXrixKXQd@ zJ3G&^wykG^ZWXvFZG~LPHq8a^N~8}gT0mY)7rHZMI*u~W6L~f5#A201bXT4iuB=8F z;ipK8(#{bkDxtfQQ8qYNtmgi$kB2q1o5!uEiz~SBQ)IuqDJDX)?5J9*cvW}?rok6ZxqvzDeq2>&%WtsgaZE#x|-Fbs5Uvo1Ff zy>>sUHn=w%vK;K~{l#s+*jaw(gN)9g*AF#9_w(Q!c|NhJMfljeaQ2vZfEl_C-#Tvy bt~tw_3l;xgJF5XOEr=Bc{0|85V&UHa$i&p~ literal 0 HcmV?d00001 diff --git a/tasks/zinoveva-ad/lab_2/Screenshot_2.jpg b/tasks/zinoveva-ad/lab_2/Screenshot_2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0c4e55e11ddf9297cc69211b6efce403993cbb82 GIT binary patch literal 5405 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 abZlA05H23QnX}?m{DeXJe{X1$X8sKT*+*ai literal 0 HcmV?d00001 diff --git a/tasks/zinoveva-ad/lab_2/Screenshot_3.jpg b/tasks/zinoveva-ad/lab_2/Screenshot_3.jpg new file mode 100644 index 0000000000000000000000000000000000000000..63c55147c93a1bd973f0bc7dfef4056d1bb3214a GIT binary patch literal 6527 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 literal 0 HcmV?d00001 diff --git a/tasks/zinoveva-ad/lab_2/data/123.txt b/tasks/zinoveva-ad/lab_2/data/123.txt new file mode 100644 index 0000000..e69de29 diff --git a/tasks/zinoveva-ad/lab_2/data/1234.txt b/tasks/zinoveva-ad/lab_2/data/1234.txt new file mode 100644 index 0000000..e69de29 diff --git a/tasks/zinoveva-ad/lab_2/data/data.txt b/tasks/zinoveva-ad/lab_2/data/data.txt new file mode 100644 index 0000000..728ae1c --- /dev/null +++ b/tasks/zinoveva-ad/lab_2/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/zinoveva-ad/lab_2/docker-compose.yml b/tasks/zinoveva-ad/lab_2/docker-compose.yml new file mode 100644 index 0000000..9c753e7 --- /dev/null +++ b/tasks/zinoveva-ad/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/zinoveva-ad/lab_2/lab_2.sln b/tasks/zinoveva-ad/lab_2/lab_2.sln new file mode 100644 index 0000000..2c78217 --- /dev/null +++ b/tasks/zinoveva-ad/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", "{634E1073-C536-49F1-92E2-48812E9724D4}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "worker-2", "worker-2\worker-2.csproj", "{CD71CC0E-6A85-4AC9-B8CE-47910331C868}" +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 + {634E1073-C536-49F1-92E2-48812E9724D4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {634E1073-C536-49F1-92E2-48812E9724D4}.Debug|Any CPU.Build.0 = Debug|Any CPU + {634E1073-C536-49F1-92E2-48812E9724D4}.Debug|x64.ActiveCfg = Debug|Any CPU + {634E1073-C536-49F1-92E2-48812E9724D4}.Debug|x64.Build.0 = Debug|Any CPU + {634E1073-C536-49F1-92E2-48812E9724D4}.Debug|x86.ActiveCfg = Debug|Any CPU + {634E1073-C536-49F1-92E2-48812E9724D4}.Debug|x86.Build.0 = Debug|Any CPU + {634E1073-C536-49F1-92E2-48812E9724D4}.Release|Any CPU.ActiveCfg = Release|Any CPU + {634E1073-C536-49F1-92E2-48812E9724D4}.Release|Any CPU.Build.0 = Release|Any CPU + {634E1073-C536-49F1-92E2-48812E9724D4}.Release|x64.ActiveCfg = Release|Any CPU + {634E1073-C536-49F1-92E2-48812E9724D4}.Release|x64.Build.0 = Release|Any CPU + {634E1073-C536-49F1-92E2-48812E9724D4}.Release|x86.ActiveCfg = Release|Any CPU + {634E1073-C536-49F1-92E2-48812E9724D4}.Release|x86.Build.0 = Release|Any CPU + {CD71CC0E-6A85-4AC9-B8CE-47910331C868}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {CD71CC0E-6A85-4AC9-B8CE-47910331C868}.Debug|Any CPU.Build.0 = Debug|Any CPU + {CD71CC0E-6A85-4AC9-B8CE-47910331C868}.Debug|x64.ActiveCfg = Debug|Any CPU + {CD71CC0E-6A85-4AC9-B8CE-47910331C868}.Debug|x64.Build.0 = Debug|Any CPU + {CD71CC0E-6A85-4AC9-B8CE-47910331C868}.Debug|x86.ActiveCfg = Debug|Any CPU + {CD71CC0E-6A85-4AC9-B8CE-47910331C868}.Debug|x86.Build.0 = Debug|Any CPU + {CD71CC0E-6A85-4AC9-B8CE-47910331C868}.Release|Any CPU.ActiveCfg = Release|Any CPU + {CD71CC0E-6A85-4AC9-B8CE-47910331C868}.Release|Any CPU.Build.0 = Release|Any CPU + {CD71CC0E-6A85-4AC9-B8CE-47910331C868}.Release|x64.ActiveCfg = Release|Any CPU + {CD71CC0E-6A85-4AC9-B8CE-47910331C868}.Release|x64.Build.0 = Release|Any CPU + {CD71CC0E-6A85-4AC9-B8CE-47910331C868}.Release|x86.ActiveCfg = Release|Any CPU + {CD71CC0E-6A85-4AC9-B8CE-47910331C868}.Release|x86.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal diff --git a/tasks/zinoveva-ad/lab_2/photo_2023-10-10_16-25-51.jpg b/tasks/zinoveva-ad/lab_2/photo_2023-10-10_16-25-51.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f3c265d996036b141adbaac4586bbbd390b56d88 GIT binary patch literal 17457 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 z z&P&+~8BpNR?G^p~_gI&avpd%LHzb%Vc9%+;!feF3^DV-e^X+dqHB+ObOtFA^7hqSp zUHRkE_ly-Nz&D{I{K=Y?3BBA^4oa^AkJ55kx}Sjp@YT=nAGW7hxF?ZE2^q<95z`ymj=X zqA61ZC4Ufw+YJ8pcv&Vb^+p5+q~=b6zlj50+EEEEG~ecSpb60*&KmY?^{IR*=P_qLPCBqqJ;3T)dkb#Ij*hC@Ge=0!wbW1$lDuqKX%Ah zi#m=F*C;ci7vGU6TbLP%!;KcQlH`*-kc$>C2r~lG82hG0_&!q|CL#6#UZciw7_NOI zBufRYv0&TT05^P4-@~OrSrcuNzySUp2l{eB3UCh#mUuyuxaIj>9=P6mRFk-o>_n7Y zbo0SeI!exTNS4IF#yAQC>2EXO7};FEB(JB-aFW&4a9y@I`Xtx$SgZLzw~tQx4(uC% zef|kjKyrs3&}7XY5oq5ZKVh1%+tSWDqR0QTtZSOaY&H>Omhy4eg;mo`%$#qb3luIrAPyh2ix z5z4iRWM>6e!7q{hG5jvuq`4kyJ>MsYQc_vBWVUuJn`3CjYwhsI=##e@9u>QYIBWoeJ}{p0%Is`Cmc9Aa2R1cY*F2wzR4BkOUL(h`|Y zx}hfoSD?4u)i|OgISzy4LEqv49N!^+d$KZqA$avlBSXvQt4DQ3h8B5ezsEK?C(k%6 zP&K0$P=q{P&)yijUs7^y98pmcM0NrEu3_DE;owj(Pk{N}mOyHPrZtQ2UtsoFj_0M5 zEE~$p%VGixT%v7(!rrrjM3jmVXgA%9G|-$Dp$nkC&y98G^jeB0(h?@q_~Gc1SfA7e zcC+bK_QtiKVb}ImrtUtFmH#anw?E?IX{r9VjNn^(iqX*l;TU4w04A1&UX~fRl1ZeB zpk$%eshNY)+2Bh&8R6X@zw(`Y!* zpe|8fzXj=9Q+(0r3rAtbqYP~TH^~!q*b@&)oAcz?n4qI}x{wcQJyf?A=+1%j8A~$8 z@=ja1BN!XO(*r!RD2p@mFz&{9+ErTPQXtYtcgQpab>u>N4<+eJ*9R+82ab}wA`;k* zPKHb4D~rW?^Lt>i@Fa+Q1s?&ZwXSd-{@{@<1GdpB?XPo*f*|}9IXSgt9};LdB*?`d z&-ws>VD&Y-lky5hIU-RSHnZ8GD2gY#w28H~ z+?T+Ir=Jhy)> z@AI@Sx>;UUqB6yB*gO-{zFDI?`~jOts+hEVHf)NmuW$@ zB+2nGr3a!ZArJ+skAR$reNwEn?7Dew-!b59VQF)#TWe?<%?$edn*=XUxjnSmIGpu> z3wjx+gg>M56iE`15yP0;Iys<2s@lWSF`8dbX8MfO+yHE!G@9MxO^8R6^|Q$osZ*+d zoK675NRPq3bC(Rcv4I>d9hBr||L9Ou46C{Fp}DYm_uxG`fCc`;Plt~qGcp@4 z9FW8v!FGee^3lS_A@?gb_{?lsn39ZaiziQw1f8zrzS1!p@_A8wf4-jw8b)ShHpNQ~ d%mFLVk#+LqiaD2Six+y1DB)eGC|&*m|Jl_02`K;o literal 0 HcmV?d00001 diff --git a/tasks/zinoveva-ad/lab_2/result-1/data.txt b/tasks/zinoveva-ad/lab_2/result-1/data.txt new file mode 100644 index 0000000..b54cc0d --- /dev/null +++ b/tasks/zinoveva-ad/lab_2/result-1/data.txt @@ -0,0 +1,3 @@ +7 +8 +8 diff --git a/tasks/zinoveva-ad/lab_2/result/result.txt b/tasks/zinoveva-ad/lab_2/result/result.txt new file mode 100644 index 0000000..d8263ee --- /dev/null +++ b/tasks/zinoveva-ad/lab_2/result/result.txt @@ -0,0 +1 @@ +2 \ No newline at end of file diff --git a/tasks/zinoveva-ad/lab_2/worker-1/Dockerfile b/tasks/zinoveva-ad/lab_2/worker-1/Dockerfile new file mode 100644 index 0000000..e4756e5 --- /dev/null +++ b/tasks/zinoveva-ad/lab_2/worker-1/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-1.dll"] \ No newline at end of file diff --git a/tasks/zinoveva-ad/lab_2/worker-1/Program.cs b/tasks/zinoveva-ad/lab_2/worker-1/Program.cs new file mode 100644 index 0000000..6b16175 --- /dev/null +++ b/tasks/zinoveva-ad/lab_2/worker-1/Program.cs @@ -0,0 +1,27 @@ +using System; +using System.IO; + +var dir = new DirectoryInfo("../var/data"); + +var files = dir.GetFiles(); + +//var quantity_files = dir.GetFiles().Length; + +string resultFilePath = "../var/result/data.txt"; +try +{ + // Создаем новый файл или перезаписываем существующий + using (StreamWriter writer = new StreamWriter(resultFilePath, false)) + { + foreach (var file in files) + { + // Записываем в файл количество символов в имени каждого файла + writer.WriteLine(file.Name.Length); + } + } + Console.WriteLine("Файл успешно создан: " + resultFilePath); +} +catch (Exception ex) +{ + Console.WriteLine("Произошла ошибка: " + ex.Message); +} diff --git a/tasks/zinoveva-ad/lab_2/worker-1/worker-1.csproj b/tasks/zinoveva-ad/lab_2/worker-1/worker-1.csproj new file mode 100644 index 0000000..328500d --- /dev/null +++ b/tasks/zinoveva-ad/lab_2/worker-1/worker-1.csproj @@ -0,0 +1,9 @@ + + + + Exe + net5.0 + worker_1 + + + diff --git a/tasks/zinoveva-ad/lab_2/worker-2/Dockerfile b/tasks/zinoveva-ad/lab_2/worker-2/Dockerfile new file mode 100644 index 0000000..f80c2dc --- /dev/null +++ b/tasks/zinoveva-ad/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/zinoveva-ad/lab_2/worker-2/Program.cs b/tasks/zinoveva-ad/lab_2/worker-2/Program.cs new file mode 100644 index 0000000..56c440d --- /dev/null +++ b/tasks/zinoveva-ad/lab_2/worker-2/Program.cs @@ -0,0 +1,58 @@ +using System; +using System.IO; + +string filePath = "../var/data/data.txt"; +string resultPath = "../var/result/result.txt"; + +// Считываем числа из файла +int[] numbers = ReadNumbersFromFile(filePath); + +// Ищем наибольшее число +int maxNumber = FindMaxNumber(numbers); + +// Считаем количество таких чисел + int count = CountNumbers(numbers, maxNumber); + +// Сохраняем результат в файл + SaveCountToFile(resultPath, count); + +Console.WriteLine($"Максимальное число: {maxNumber}"); +Console.WriteLine($"Количество макисмальных чисел: {count}"); + + static int[] ReadNumbersFromFile(string filePath) + { + string[] lines = File.ReadAllLines(filePath); + int[] numbers = Array.ConvertAll(lines, int.Parse); + return numbers; + } + + static int FindMaxNumber(int[] numbers) + { + int maxNumber = int.MinValue; + foreach (int number in numbers) + { + if (number > maxNumber) + { + maxNumber = number; + } + } + return maxNumber; + } + + static int CountNumbers(int[] numbers, int targetNumber) + { + int count = 0; + foreach (int number in numbers) + { + if (number == targetNumber) + { + count++; + } + } + return count; + } + + static void SaveCountToFile(string filePath, int count) + { + File.WriteAllText(filePath, count.ToString()); + } \ No newline at end of file diff --git a/tasks/zinoveva-ad/lab_2/worker-2/worker-2.csproj b/tasks/zinoveva-ad/lab_2/worker-2/worker-2.csproj new file mode 100644 index 0000000..fb2480c --- /dev/null +++ b/tasks/zinoveva-ad/lab_2/worker-2/worker-2.csproj @@ -0,0 +1,9 @@ + + + + Exe + net5.0 + worker_2 + + +