From 03b402cfe077141fad3bd5a9a933fc96f3c8e2e2 Mon Sep 17 00:00:00 2001 From: Foma Medvedev Date: Sat, 17 Jan 2026 19:17:06 +0500 Subject: [PATCH 1/3] =?UTF-8?q?=D0=BE=D0=B1=D1=80=D0=B0=D0=B1=D0=BE=D1=82?= =?UTF-8?q?=D0=BA=D0=B0=20=D0=BE=D1=88=D0=B8=D0=B1=D0=BE=D0=BA=20=D0=B2?= =?UTF-8?q?=D0=B2=D0=BE=D0=B4=D0=B0+=D0=BD=D0=B5=D1=85=D0=B2=D0=B0=D1=82?= =?UTF-8?q?=D0=BA=D0=B8=20=D0=BC=D0=B5=D1=81=D1=82=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../TagsCloudApp/CloudVisualizer.cs | 51 + .../TagsCloudApp/ConsoleClient.cs | 129 + TagsCloudContainer/TagsCloudApp/IClient.cs | 11 + TagsCloudContainer/TagsCloudApp/Program.cs | 27 + .../TagsCloudApp/TagsCloudApp.csproj | 14 + TagsCloudContainer/TagsCloudContainer.sln | 28 + .../BoringWordsProcessor.cs | 35 + .../CalculateNextRectangleSize.cs | 48 + .../TagsCloudContainer/ContainerComposer.cs | 20 + .../TagsCloudContainer/IFileReader.cs | 6 + .../TagsCloudContainer/IWordMeasurer.cs | 9 + .../TagsCloudContainer/ImageGeneratorInfo.cs | 28 + .../TagsCloudContainer.csproj | 24 + .../Tests/BoringWordsProcessorTests.cs | 90 + .../Tests/DIContainerTests.cs | 44 + .../Tests/TXTReaderTests.cs | 39 + .../Tests/VisualizationComposerTests.cs | 68 + .../TextRectangleContainer.cs | 17 + .../TextRectangleContainerProcessor.cs | 39 + .../TagsCloudContainer/TxtReader.cs | 22 + .../TagsCloudContainer/WordMeasurer.cs | 32 + TagsCloudContainer/custom.bmp | Bin 0 -> 4000054 bytes TagsCloudContainer/global.json | 7 + TagsCloudContainer/output.bmp | Bin 0 -> 4000054 bytes TagsCloudContainer/text.txt | 7 + TagsCloudContainer/text1.txt | 5000 +++++++++++++++++ 26 files changed, 5795 insertions(+) create mode 100644 TagsCloudContainer/TagsCloudApp/CloudVisualizer.cs create mode 100644 TagsCloudContainer/TagsCloudApp/ConsoleClient.cs create mode 100644 TagsCloudContainer/TagsCloudApp/IClient.cs create mode 100644 TagsCloudContainer/TagsCloudApp/Program.cs create mode 100644 TagsCloudContainer/TagsCloudApp/TagsCloudApp.csproj create mode 100644 TagsCloudContainer/TagsCloudContainer.sln create mode 100644 TagsCloudContainer/TagsCloudContainer/BoringWordsProcessor.cs create mode 100644 TagsCloudContainer/TagsCloudContainer/CalculateNextRectangleSize.cs create mode 100644 TagsCloudContainer/TagsCloudContainer/ContainerComposer.cs create mode 100644 TagsCloudContainer/TagsCloudContainer/IFileReader.cs create mode 100644 TagsCloudContainer/TagsCloudContainer/IWordMeasurer.cs create mode 100644 TagsCloudContainer/TagsCloudContainer/ImageGeneratorInfo.cs create mode 100644 TagsCloudContainer/TagsCloudContainer/TagsCloudContainer.csproj create mode 100644 TagsCloudContainer/TagsCloudContainer/Tests/BoringWordsProcessorTests.cs create mode 100644 TagsCloudContainer/TagsCloudContainer/Tests/DIContainerTests.cs create mode 100644 TagsCloudContainer/TagsCloudContainer/Tests/TXTReaderTests.cs create mode 100644 TagsCloudContainer/TagsCloudContainer/Tests/VisualizationComposerTests.cs create mode 100644 TagsCloudContainer/TagsCloudContainer/TextRectangleContainer.cs create mode 100644 TagsCloudContainer/TagsCloudContainer/TextRectangleContainerProcessor.cs create mode 100644 TagsCloudContainer/TagsCloudContainer/TxtReader.cs create mode 100644 TagsCloudContainer/TagsCloudContainer/WordMeasurer.cs create mode 100644 TagsCloudContainer/custom.bmp create mode 100644 TagsCloudContainer/global.json create mode 100644 TagsCloudContainer/output.bmp create mode 100644 TagsCloudContainer/text.txt create mode 100644 TagsCloudContainer/text1.txt diff --git a/TagsCloudContainer/TagsCloudApp/CloudVisualizer.cs b/TagsCloudContainer/TagsCloudApp/CloudVisualizer.cs new file mode 100644 index 000000000..b3cfe0835 --- /dev/null +++ b/TagsCloudContainer/TagsCloudApp/CloudVisualizer.cs @@ -0,0 +1,51 @@ +using System.Drawing; +using System.Drawing.Imaging; +using TagsCloudContainer; + +namespace TagsCloudApp; + +public class CloudVisualizer +{ + private static Bitmap _bitmap; + public static Graphics Graphics { get; private set; } + + public static void PrepareGraphics(Size imageSize) + { + _bitmap = new Bitmap(imageSize.Width, imageSize.Height); + Graphics = Graphics.FromImage(_bitmap); + } + + public static void Draw(TextRectangleContainerProcessor processor, + ImageGeneratorInfo info, + string inputFile, + IWordMeasurer wordMeasurer) + { + var path = info.OutputFileName; + var dir = Path.GetDirectoryName(path); + if (!string.IsNullOrEmpty(dir) && !Directory.Exists(dir)) + Directory.CreateDirectory(dir); + + Graphics.Clear(info.BackgroundColor); + + using var brush = new SolidBrush(info.TextColor); + + var format = new StringFormat + { + Alignment = StringAlignment.Center, + LineAlignment = StringAlignment.Center + }; + + foreach (var container in processor.ProcessFile(inputFile, wordMeasurer)) + { + if (container is null) + continue; + var rect = container.Rectangle; + using var font = + new Font(info.Font.FontFamily, info.Font.Size * container.FontSizeScale, info.Font.Style); + Graphics.DrawString(container.Text, font, brush, rect, format); + } + + _bitmap.Save(path); + } + +} \ No newline at end of file diff --git a/TagsCloudContainer/TagsCloudApp/ConsoleClient.cs b/TagsCloudContainer/TagsCloudApp/ConsoleClient.cs new file mode 100644 index 000000000..36739594d --- /dev/null +++ b/TagsCloudContainer/TagsCloudApp/ConsoleClient.cs @@ -0,0 +1,129 @@ +using System.Drawing; +using ErrorHandling; +using TagsCloudContainer; + +namespace TagsCloudApp; + +public class ConsoleClient : IClient +{ + private const string ReadFontColorPrompt = "Введите английское название цвета шрифта (enter для дефолтного значения):"; + private const string ReadBGColorPrompt = "Введите английское название цвета фона (enter для дефолтного значения):"; + private const string ReadFontNamePrompt = "Введите название шрифта (enter для дефолтного значения):"; + private const string ReadFontSizePrompt = "Введите размер изображения через пробел двумя числами (enter для дефолтного значения):"; + private const string ReadOutputFileNamePrompt = "Введите желаемое имя для выходного файла (enter для дефолтного значения):"; + private const string ReadBanWordsPrompt = "Введите через запятую слова, которые хотите игнорировать (enter, если хотите видеть все слова)"; + private const string ReadOutputFileFormat = "Введите желаемый формат выходного файла (enter для дефолтного значения)"; + + public ImageGeneratorInfo GetImageGeneratorInfo() + { + var textColor = ReadColor(ReadFontColorPrompt).GetValueOrThrow(); + var bgColor = ReadColor(ReadBGColorPrompt).GetValueOrThrow(); + var font = ReadFont(ReadFontNamePrompt).GetValueOrThrow(); + var imageSize = ReadSize(ReadFontSizePrompt).GetValueOrThrow(); + var outputFile = ReadString(ReadOutputFileNamePrompt); + var banWords = ReadList(ReadBanWordsPrompt); + var outputFileFormat = ReadFormat(ReadOutputFileFormat).GetValueOrThrow(); + + return new ImageGeneratorInfo( + textColor, + bgColor, + font, + imageSize, + outputFile, + banWords, + outputFileFormat + ); + } + + private Result ReadColor(string prompt) + { + Console.WriteLine(prompt); + var input = Console.ReadLine(); + if (string.IsNullOrEmpty(input)) + return Result.Ok(null); + var color = Color.FromName(input); + if (color.IsKnownColor) + return Result.Ok(color); + return Result.Fail($"Цвета {color} нет, попробуй ещё раз"); + } + + private Result ReadFont(string prompt, float defaultSize = 60) + { + Console.WriteLine(prompt); + var input = Console.ReadLine(); + if (string.IsNullOrEmpty(input)) + return Result.Ok(null); + if (FontFamily.Families.Any(f => f.Name.Equals(input, StringComparison.OrdinalIgnoreCase))) + return Result.Ok(new Font(input, defaultSize)); + return Result.Fail($"Шрифта {input} нет, попробуй ещё раз"); + } + + private Result ReadSize(string prompt) + { + Console.WriteLine(prompt); + var input = Console.ReadLine(); + if (string.IsNullOrEmpty(input)) + return Result.Ok(null); + var parts = input.Split(' ', StringSplitOptions.RemoveEmptyEntries); + if (parts.Length == 2 && + int.TryParse(parts[0], out var width) && + int.TryParse(parts[1], out var height)) + { + return Result.Ok(new Size(width, height)); + } + return Result.Fail("Нужно ввести два числа через пробел"); + } + + private string? ReadString(string prompt) + { + Console.WriteLine(prompt); + var input = Console.ReadLine(); + return string.IsNullOrEmpty(input) ? null : input; + } + + private List? ReadList(string prompt) + { + Console.WriteLine(prompt); + var input = Console.ReadLine(); + return string.IsNullOrEmpty(input) ? new List() : input.Split(',').Select(s => s.Trim()).ToList(); + } + + private Result ReadFormat(string prompt) + { + Console.WriteLine(prompt); + var input = Console.ReadLine(); + if (string.IsNullOrEmpty(input)) + return Result.Ok(null); + if (input[0] == '.') + input = input[1..]; + switch (input) + { + case "png": + break; + case "jpg": + break; + case "jpeg": + break; + case "bmp": + break; + default: + return Result.Fail( + $"Формат {input} не поддерживается, повторите попытку! (Доступные форматы: png, jpg, jpeg, bmp"); + } + return Result.Ok(input); + } + + public Result GetImagePath() + { + Console.WriteLine("Введи название входного файла:"); + var fileName = Console.ReadLine(); + if (string.IsNullOrEmpty(fileName)) + return Result.Fail("Имя файла не может быть пустым!"); + if (!File.Exists(fileName)) + { + var fullPath = Path.GetFullPath(fileName); + return Result.Fail($"Файл {fileName} не найден по пути {fullPath}, повтори ввод"); + } + return Result.Ok(fileName); + } +} diff --git a/TagsCloudContainer/TagsCloudApp/IClient.cs b/TagsCloudContainer/TagsCloudApp/IClient.cs new file mode 100644 index 000000000..fe01c3b73 --- /dev/null +++ b/TagsCloudContainer/TagsCloudApp/IClient.cs @@ -0,0 +1,11 @@ +using ErrorHandling; +using TagsCloudContainer; + +namespace TagsCloudApp; + +public interface IClient +{ + public ImageGeneratorInfo GetImageGeneratorInfo(); + + public Result GetImagePath(); +} \ No newline at end of file diff --git a/TagsCloudContainer/TagsCloudApp/Program.cs b/TagsCloudContainer/TagsCloudApp/Program.cs new file mode 100644 index 000000000..2f2a73e30 --- /dev/null +++ b/TagsCloudContainer/TagsCloudApp/Program.cs @@ -0,0 +1,27 @@ +using System.Drawing; +using Autofac; +using TagsCloudApp; +using TagsCloudContainer; + +public static class Program +{ + public static void Main() + { + var client = new ConsoleClient(); + var imageGeneratorInfo = client.GetImageGeneratorInfo(); + var fileName = client.GetImagePath().GetValueOrThrow(); + var imageSize = imageGeneratorInfo.ImageSize; + var imageCenter = new Point(imageSize.Width / 2, imageSize.Height / 2); + CloudVisualizer.PrepareGraphics(imageSize); + var container = ContainerComposer.Compose(imageCenter, imageGeneratorInfo.ImageSize, + CloudVisualizer.Graphics, imageGeneratorInfo.Font, imageGeneratorInfo.BanWords); + + var wordProcessor = container + .Resolve(); + + var measurer = container + .Resolve(); + + CloudVisualizer.Draw(wordProcessor, imageGeneratorInfo, fileName, measurer); + } +} \ No newline at end of file diff --git a/TagsCloudContainer/TagsCloudApp/TagsCloudApp.csproj b/TagsCloudContainer/TagsCloudApp/TagsCloudApp.csproj new file mode 100644 index 000000000..9ef808fde --- /dev/null +++ b/TagsCloudContainer/TagsCloudApp/TagsCloudApp.csproj @@ -0,0 +1,14 @@ + + + + Exe + net8.0 + enable + enable + + + + + + + diff --git a/TagsCloudContainer/TagsCloudContainer.sln b/TagsCloudContainer/TagsCloudContainer.sln new file mode 100644 index 000000000..9b0bd1a40 --- /dev/null +++ b/TagsCloudContainer/TagsCloudContainer.sln @@ -0,0 +1,28 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TagsCloudContainer", "TagsCloudContainer\TagsCloudContainer.csproj", "{B669CC7B-C5A0-40AE-AF5F-E2A98EBC343A}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TagsCloudVisualization", "..\..\tdd\TagsCloudVisualization\TagsCloudVisualization\TagsCloudVisualization.csproj", "{81220AF5-C90D-46F1-85E7-B6145D71A691}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TagsCloudApp", "TagsCloudApp\TagsCloudApp.csproj", "{39391998-1546-4A9D-B534-A4756C13A9DF}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {B669CC7B-C5A0-40AE-AF5F-E2A98EBC343A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B669CC7B-C5A0-40AE-AF5F-E2A98EBC343A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B669CC7B-C5A0-40AE-AF5F-E2A98EBC343A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B669CC7B-C5A0-40AE-AF5F-E2A98EBC343A}.Release|Any CPU.Build.0 = Release|Any CPU + {81220AF5-C90D-46F1-85E7-B6145D71A691}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {81220AF5-C90D-46F1-85E7-B6145D71A691}.Debug|Any CPU.Build.0 = Debug|Any CPU + {81220AF5-C90D-46F1-85E7-B6145D71A691}.Release|Any CPU.ActiveCfg = Release|Any CPU + {81220AF5-C90D-46F1-85E7-B6145D71A691}.Release|Any CPU.Build.0 = Release|Any CPU + {39391998-1546-4A9D-B534-A4756C13A9DF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {39391998-1546-4A9D-B534-A4756C13A9DF}.Debug|Any CPU.Build.0 = Debug|Any CPU + {39391998-1546-4A9D-B534-A4756C13A9DF}.Release|Any CPU.ActiveCfg = Release|Any CPU + {39391998-1546-4A9D-B534-A4756C13A9DF}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal diff --git a/TagsCloudContainer/TagsCloudContainer/BoringWordsProcessor.cs b/TagsCloudContainer/TagsCloudContainer/BoringWordsProcessor.cs new file mode 100644 index 000000000..4e64bb4d2 --- /dev/null +++ b/TagsCloudContainer/TagsCloudContainer/BoringWordsProcessor.cs @@ -0,0 +1,35 @@ +using WeCantSpell.Hunspell; + +namespace TagsCloudContainer; + +public class BoringWordsProcessor +{ + private const float BoringWordQuantityThreshold = 0.35f; + private readonly List _banWords; + + public BoringWordsProcessor(List banWords) + { + this._banWords = banWords; + } + + public Dictionary WordsToLowerAndRemoveBoringWords(List words) + { + var banWordsDict = WordList.CreateFromWords(_banWords); + var frequencyDict = new Dictionary(); + foreach (var word in words) + { + var lowerCaseWord = word.ToLower(); + if (banWordsDict.Check(lowerCaseWord)) + continue; + frequencyDict.TryAdd(lowerCaseWord, 0); + ++frequencyDict[lowerCaseWord]; + var a = (float)frequencyDict[lowerCaseWord] / words.Count; + } + + return frequencyDict + .OrderByDescending(x => x.Value) + .ThenBy(x => x.Key) + .Where(x => ((float)x.Value / words.Count) < BoringWordQuantityThreshold) + .ToDictionary(x => x.Key, x => x.Value); + } +} \ No newline at end of file diff --git a/TagsCloudContainer/TagsCloudContainer/CalculateNextRectangleSize.cs b/TagsCloudContainer/TagsCloudContainer/CalculateNextRectangleSize.cs new file mode 100644 index 000000000..fae5d69a1 --- /dev/null +++ b/TagsCloudContainer/TagsCloudContainer/CalculateNextRectangleSize.cs @@ -0,0 +1,48 @@ +using System.Drawing; + +namespace TagsCloudContainer; + +public class RectangleSizeCalculator +{ + private Size _maxSize; + private Size _minSize; + private int _maxFrequency; + private bool _isMaxFrequencyInitialized; + + internal RectangleSizeCalculator(Size imageSize) + { + _maxSize = new Size((int)(imageSize.Width), (int)(imageSize.Height * 0.1)); + _minSize = new Size((int)(imageSize.Width * 0.01), (int)(imageSize.Height * 0.005)); + } + + internal Size CalculateNextRectangleSize(KeyValuePair wordInfo, + IWordMeasurer wordMeasurer, out float scale) + { + var wordFrequency = wordInfo.Value; + if (!_isMaxFrequencyInitialized) + { + _isMaxFrequencyInitialized = true; + _maxFrequency = wordFrequency; + } + + scale = (float)wordFrequency / _maxFrequency; + if (scale < 0.05) + return Size.Empty; + var rawSize = wordMeasurer.Measure(wordInfo.Key, scale); + return ClampSize(rawSize); + } + + private Size ClampSize(Size size) + { + if (size.Width < _minSize.Width) + size.Width = _minSize.Width; + else if (size.Width > _maxSize.Width) + size.Width = _maxSize.Width; + if (size.Height < _minSize.Height) + size.Height = _minSize.Height; + else if (size.Height > _maxSize.Height) + size.Height = _maxSize.Height; + + return Size.Round(size); + } +} \ No newline at end of file diff --git a/TagsCloudContainer/TagsCloudContainer/ContainerComposer.cs b/TagsCloudContainer/TagsCloudContainer/ContainerComposer.cs new file mode 100644 index 000000000..ba18a0e23 --- /dev/null +++ b/TagsCloudContainer/TagsCloudContainer/ContainerComposer.cs @@ -0,0 +1,20 @@ +using System.Drawing; +using Autofac; +using TagsCloudVisualization; + +namespace TagsCloudContainer; + +public static class ContainerComposer +{ + public static IContainer Compose(Point center, Size imageSize, Graphics graphics, Font font, List banWords) + { + var builder = new ContainerBuilder(); + builder.RegisterInstance(new CircularCloudLayouter(center, imageSize)).As(); + builder.RegisterInstance(new TxtReader()).As(); + builder.RegisterInstance(new RectangleSizeCalculator(imageSize)); + builder.RegisterInstance(new BoringWordsProcessor(banWords)); + builder.RegisterType(); + builder.RegisterInstance(new WordMeasurer(graphics, font)).As(); + return builder.Build(); + } +} \ No newline at end of file diff --git a/TagsCloudContainer/TagsCloudContainer/IFileReader.cs b/TagsCloudContainer/TagsCloudContainer/IFileReader.cs new file mode 100644 index 000000000..dc76caa31 --- /dev/null +++ b/TagsCloudContainer/TagsCloudContainer/IFileReader.cs @@ -0,0 +1,6 @@ +namespace TagsCloudContainer; + +public interface IFileReader +{ + internal List ReadFile(string path); +} \ No newline at end of file diff --git a/TagsCloudContainer/TagsCloudContainer/IWordMeasurer.cs b/TagsCloudContainer/TagsCloudContainer/IWordMeasurer.cs new file mode 100644 index 000000000..40b1d4358 --- /dev/null +++ b/TagsCloudContainer/TagsCloudContainer/IWordMeasurer.cs @@ -0,0 +1,9 @@ +using System.Drawing; + +namespace TagsCloudContainer; + +public interface IWordMeasurer +{ + public Size Measure(string word, float scale); + public Font GetFont(float scale); +} \ No newline at end of file diff --git a/TagsCloudContainer/TagsCloudContainer/ImageGeneratorInfo.cs b/TagsCloudContainer/TagsCloudContainer/ImageGeneratorInfo.cs new file mode 100644 index 000000000..7566a89b4 --- /dev/null +++ b/TagsCloudContainer/TagsCloudContainer/ImageGeneratorInfo.cs @@ -0,0 +1,28 @@ +using System.Drawing; + +namespace TagsCloudContainer; + +public class ImageGeneratorInfo +{ + public Color TextColor { get; set; } + public Color BackgroundColor { get; set; } + public Font Font { get; set; } + public Size ImageSize { get; set; } + public string OutputFileName { get; set; } + public List BanWords { get; set; } + + public ImageGeneratorInfo(Color? textColor = null, Color? backgroundColor = null, + Font? font = null, Size? imageSize = null, string? outputFileName = null, List? banWords = null, + string? outputFileFormat = null) + { + Font = font ?? new Font(FontFamily.GenericSansSerif, 60); + TextColor = textColor ?? Color.Black; + BackgroundColor = backgroundColor ?? Color.White; + ImageSize = imageSize ?? new Size(1000, 1000); + OutputFileName = outputFileName ?? "output"; + if (OutputFileName[^1] != '.') + OutputFileName += "."; + OutputFileName += outputFileFormat ?? "bmp"; + BanWords = banWords ?? new List(); + } +} diff --git a/TagsCloudContainer/TagsCloudContainer/TagsCloudContainer.csproj b/TagsCloudContainer/TagsCloudContainer/TagsCloudContainer.csproj new file mode 100644 index 000000000..994ec1909 --- /dev/null +++ b/TagsCloudContainer/TagsCloudContainer/TagsCloudContainer.csproj @@ -0,0 +1,24 @@ + + + + Exe + net8.0 + enable + enable + + + + + + + + + + + + + + + + + diff --git a/TagsCloudContainer/TagsCloudContainer/Tests/BoringWordsProcessorTests.cs b/TagsCloudContainer/TagsCloudContainer/Tests/BoringWordsProcessorTests.cs new file mode 100644 index 000000000..9ff98642a --- /dev/null +++ b/TagsCloudContainer/TagsCloudContainer/Tests/BoringWordsProcessorTests.cs @@ -0,0 +1,90 @@ +using System.Drawing; +using NUnit.Framework; +using Autofac; +using FluentAssertions; + +namespace TagsCloudContainer.Tests; + +[TestFixture] +public class BoringWordsProcessorTests +{ + private Point _center; + private Size _imageSize; + private string _filePath = "TestData"; + private IContainer _container; + private Graphics _graphics; + private Bitmap _bitmap; + + [SetUp] + public void Setup() + { + _center = new Point(400, 400); + _imageSize = new Size(800, 800); + _bitmap = new Bitmap(_imageSize.Width, _imageSize.Height); + _graphics = Graphics.FromImage(_bitmap); + var font = new Font(FontFamily.GenericSansSerif, 20); + + _container = ContainerComposer.Compose(_center, _imageSize, _graphics, font,["банворд"]); + } + + [Test] + public void WordsToLowerAndRemoveBoringWords_HandleFile_Should_IgnoreBanWords() + { + var path = Path.Combine(_filePath, + "TXTReader_ReadFile_Should_IgnoreBanWords.txt"); + var expectedData = new[] { "слово" }; + + var inputData = _container + .Resolve() + .ReadFile(path); + + var resultData = _container + .Resolve() + .WordsToLowerAndRemoveBoringWords(inputData).Keys; + + resultData.Should().BeEquivalentTo(expectedData); + } + + [Test] + public void WordsToLowerAndRemoveBoringWords_HandleFile_Should_MakeWordsToLower() + { + var path = Path.Combine(_filePath, + "WordsToLowerAndRemoveBoringWords_HandleFile_Should_MakeWordsToLower.txt"); + var expectedData = new[] { "слово" }; + + var inputData = _container + .Resolve() + .ReadFile(path); + + var resultData = _container + .Resolve() + .WordsToLowerAndRemoveBoringWords(inputData).Keys; + + resultData.Should().BeEquivalentTo(expectedData); + } + + [Test] + public void WordsToLowerAndRemoveBoringWords_HandleFile_Should_IgnoreBoringWords() + { + var path = Path.Combine(_filePath, + "WordsToLowerAndRemoveBoringWords_HandleFile_Should_IgnoreBoringWords.txt"); + var expectedData = new string[0]; + + var inputData = _container + .Resolve() + .ReadFile(path); + + var resultData = _container + .Resolve() + .WordsToLowerAndRemoveBoringWords(inputData).Keys; + + resultData.Should().BeEquivalentTo(expectedData); + } + + [TearDown] + public void TearDown() + { + _graphics.Dispose(); + _bitmap.Dispose(); + } +} \ No newline at end of file diff --git a/TagsCloudContainer/TagsCloudContainer/Tests/DIContainerTests.cs b/TagsCloudContainer/TagsCloudContainer/Tests/DIContainerTests.cs new file mode 100644 index 000000000..7b542a925 --- /dev/null +++ b/TagsCloudContainer/TagsCloudContainer/Tests/DIContainerTests.cs @@ -0,0 +1,44 @@ +using System.Drawing; +using Autofac; +using FluentAssertions; +using NUnit.Framework; +using TagsCloudVisualization; + +namespace TagsCloudContainer.Tests; + +[TestFixture] +public class DIContainerTests +{ + private Point _center; + private Size _imageSize; + private string _filePath = "TestData"; + private IContainer _container; + private Graphics _graphics; + private Bitmap _bitmap; + + [SetUp] + public void Setup() + { + _center = new Point(400, 400); + _imageSize = new Size(800, 800); + _bitmap = new Bitmap(_imageSize.Width, _imageSize.Height); + _graphics = Graphics.FromImage(_bitmap); + var font = new Font(FontFamily.GenericSansSerif, 20); + + _container = ContainerComposer.Compose(_center, _imageSize, _graphics, font,[]); + } + + [Test] + public void DIContainer_Resolve_CircularCloudLayouter_Test() + { + var layouter = _container.Resolve(); + layouter.Should().NotBeNull(); + } + + [TearDown] + public void TearDown() + { + _graphics.Dispose(); + _bitmap.Dispose(); + } +} \ No newline at end of file diff --git a/TagsCloudContainer/TagsCloudContainer/Tests/TXTReaderTests.cs b/TagsCloudContainer/TagsCloudContainer/Tests/TXTReaderTests.cs new file mode 100644 index 000000000..9b7425cbf --- /dev/null +++ b/TagsCloudContainer/TagsCloudContainer/Tests/TXTReaderTests.cs @@ -0,0 +1,39 @@ +using FluentAssertions; +using NUnit.Framework; + +namespace TagsCloudContainer.Tests; + +[TestFixture] +public class TXTReaderTests +{ + private TxtReader _txtReader; + private string _filePath = "TestData"; + + [SetUp] + public void Setup() + { + _txtReader = new TxtReader(); + } + + [Test] + public void TXTReader_ReadFile_Should_CorrectlyReadText() + { + var expectedData = new List { "odin" }; + + var data = _txtReader.ReadFile(Path.Combine(_filePath, + "TextReader_ReadFile_Should_CorrectlyReadText.txt")); + + expectedData.Should().BeEquivalentTo(data); + } + + [Test] + public void TXTReader_ReadFile_Should_Not_ModifyText() + { + var expectedData = new List { "слово", "скучное", "в", "СЛОВО" }; + + var data = _txtReader.ReadFile(Path.Combine(_filePath, + "TXTReader_ReadFile_Should_IgnoreTextCase.txt")); + + expectedData.Should().BeEquivalentTo(data); + } +} \ No newline at end of file diff --git a/TagsCloudContainer/TagsCloudContainer/Tests/VisualizationComposerTests.cs b/TagsCloudContainer/TagsCloudContainer/Tests/VisualizationComposerTests.cs new file mode 100644 index 000000000..b7deef53c --- /dev/null +++ b/TagsCloudContainer/TagsCloudContainer/Tests/VisualizationComposerTests.cs @@ -0,0 +1,68 @@ +using System.Drawing; +using NUnit.Framework; +using Autofac; +using FluentAssertions; + +namespace TagsCloudContainer.Tests; + +[TestFixture] +public class VisualizationComposerTests +{ + private Point _center; + private Size _imageSize; + private string _filePath = "TestData"; + private IContainer _container; + private Graphics _graphics; + private Bitmap _bitmap; + + [SetUp] + public void Setup() + { + _center = new Point(400, 400); + _imageSize = new Size(800, 800); + _bitmap = new Bitmap(_imageSize.Width, _imageSize.Height); + _graphics = Graphics.FromImage(_bitmap); + var font = new Font(FontFamily.GenericSansSerif, 20); + + _container = ContainerComposer.Compose(_center, _imageSize, _graphics, font,[]); + } + + [Test] + public void VisualizationComposer_Should_ComposeDataCorrectly() + { + var path = Path.Combine(_filePath, + "VisualizationComposer_Should_ComposeDataCorrectly.txt"); + var expectedData = PrepareComposerExpectedData(path); + + var resultData = _container + .Resolve() + .ProcessFile(path, _container.Resolve()); + + expectedData.Should().BeEquivalentTo(resultData); + } + + private TextRectangleContainer[] PrepareComposerExpectedData(string path) + { + var inputData = _container + .Resolve() + .ReadFile(path); + + var data = _container + .Resolve() + .WordsToLowerAndRemoveBoringWords(inputData); + + var containers = new TextRectangleContainer[data.Count]; + var rect1 = new Rectangle(new Point(358, 383), new Size(84, 34)); + var rect2 = new Rectangle(new Point(404, 417), new Size(12, 17)); + containers[0] = new TextRectangleContainer(rect1, "слово", 1); + containers[1] = new TextRectangleContainer(rect2, "в",0.5f ); + return containers; + } + + [TearDown] + public void TearDown() + { + _graphics.Dispose(); + _bitmap.Dispose(); + } +} \ No newline at end of file diff --git a/TagsCloudContainer/TagsCloudContainer/TextRectangleContainer.cs b/TagsCloudContainer/TagsCloudContainer/TextRectangleContainer.cs new file mode 100644 index 000000000..45e0e2481 --- /dev/null +++ b/TagsCloudContainer/TagsCloudContainer/TextRectangleContainer.cs @@ -0,0 +1,17 @@ +using System.Drawing; + +namespace TagsCloudContainer; + +public class TextRectangleContainer +{ + public Rectangle Rectangle { get; private set; } + public string Text { get; private set; } + public float FontSizeScale { get; private set; } + + public TextRectangleContainer(Rectangle rectangle, string text, float scale) + { + Rectangle = rectangle; + Text = text; + FontSizeScale = scale; + } +} \ No newline at end of file diff --git a/TagsCloudContainer/TagsCloudContainer/TextRectangleContainerProcessor.cs b/TagsCloudContainer/TagsCloudContainer/TextRectangleContainerProcessor.cs new file mode 100644 index 000000000..25c302b98 --- /dev/null +++ b/TagsCloudContainer/TagsCloudContainer/TextRectangleContainerProcessor.cs @@ -0,0 +1,39 @@ +using System.Drawing; +using TagsCloudVisualization; + +namespace TagsCloudContainer; + +public class TextRectangleContainerProcessor +{ + private readonly IFileReader _fileReader; + private readonly ILayouter _layouter; + private readonly RectangleSizeCalculator _rectangleSizeCalculator; + private readonly BoringWordsProcessor _boringWordsProcessor; + + public TextRectangleContainerProcessor(IFileReader fileReader, ILayouter layouter, + RectangleSizeCalculator calculator, BoringWordsProcessor boringWordsProcessor) + { + this._fileReader = fileReader; + this._layouter = layouter; + this._rectangleSizeCalculator = calculator; + this._boringWordsProcessor = boringWordsProcessor; + } + + public IEnumerable ProcessFile(string path, IWordMeasurer wordMeasurer) + { + var readData = _boringWordsProcessor.WordsToLowerAndRemoveBoringWords(_fileReader.ReadFile(path)); + + foreach (var wordInfo in readData) + { + var rectSize = _rectangleSizeCalculator.CalculateNextRectangleSize(wordInfo, wordMeasurer, out var scale); + if (rectSize == Size.Empty) + { + yield return null; + continue; + } + + var rect = _layouter.PutNextRectangle(rectSize).GetValueOrThrow(); + yield return new TextRectangleContainer(rect, wordInfo.Key, scale); + } + } +} \ No newline at end of file diff --git a/TagsCloudContainer/TagsCloudContainer/TxtReader.cs b/TagsCloudContainer/TagsCloudContainer/TxtReader.cs new file mode 100644 index 000000000..c414c4737 --- /dev/null +++ b/TagsCloudContainer/TagsCloudContainer/TxtReader.cs @@ -0,0 +1,22 @@ +using WeCantSpell.Hunspell; + +namespace TagsCloudContainer; + +internal class TxtReader : IFileReader +{ + public List ReadFile(string path) + { + var parsedWords = new List(); + using (var reader = new StreamReader(path)) + { + while (!reader.EndOfStream) + { + var line = reader.ReadLine(); + if (line is null) + continue; + parsedWords.Add(line); + } + } + return parsedWords; + } +} \ No newline at end of file diff --git a/TagsCloudContainer/TagsCloudContainer/WordMeasurer.cs b/TagsCloudContainer/TagsCloudContainer/WordMeasurer.cs new file mode 100644 index 000000000..c04957f24 --- /dev/null +++ b/TagsCloudContainer/TagsCloudContainer/WordMeasurer.cs @@ -0,0 +1,32 @@ +using System.Drawing; + +namespace TagsCloudContainer; + +public class WordMeasurer : IWordMeasurer +{ + private readonly Graphics _graphics; + private readonly Font _font; + + public WordMeasurer(Graphics graphics, Font font) + { + this._graphics = graphics; + this._font = font; + } + + public Size Measure(string word, float scale) + { + var tempFont = GetFont(scale); + var sizeF = _graphics.MeasureString(word, tempFont); + tempFont.Dispose(); + + return new Size( + (int)Math.Ceiling(sizeF.Width), + (int)Math.Ceiling(sizeF.Height) + ); + } + + public Font GetFont(float scale) + { + return new Font(_font.FontFamily, _font.Size * scale, _font.Style); + } +} \ No newline at end of file diff --git a/TagsCloudContainer/custom.bmp b/TagsCloudContainer/custom.bmp new file mode 100644 index 0000000000000000000000000000000000000000..a754a1eb6826e7cd654eadf052ec4120548888ca GIT binary patch literal 4000054 zcmeF4O?uoguw9)mqc_PKGRz9z>`gM#B)idadM}t{AwA4499+rQzAghK*gsOYbm&he zn*<6~g+l_D?4SSrfBy47{_BU9|LlMNtN;DK|Nj2>-+uhh{_1`CzyIUM5BS~f58{P+7=Qs7fB_hQ0T_S*7=Qs7_%sI2rzRI z`Ln+mELkVD&Ztg*T)M2qM$cQ-{EzNbw&U$lJa*T0ezsTd`fF{!(njkgq#;-AI|o_+ zuLjBs=XJ&QOE<1^d%oM2*VpD>+POdQ{>yXw;x>+~ZLf8UnODW-{2j4JS#&iFzyJ)u z01UtY48Q;kz`$2yK>En~G-Dg>PyIQn~@lk#2OdX%)Anm06y}DU%)b^I|nS*QdpMEILTt3r@w@z3{kSu;tSr3T&8rl~!%UX9WA ztNz}zFFRSL*4Od$p>_XL|Jo00(Aja9lb`juZni&*F@2~$X8n49V5^>e+VVZ?&wP`e zS^l$rPu<&6<5&CDZ~J!1+P-Z0dx>4@aBYPF7=Qs7fB_hQ0T_S*7dowOnm`R^R2MBkS|s)VL=J(5^I_%EfoRxqjVW z+f%u!b2HAWZ(ToqsP*$$Z9k9IdbU0DJ^iYAbzQG#`L|ZytFN|BP2aix=RFs;eRS00v+H24DaNU;qYS00u@3 zNE2G0r^d4$(Z1Gyw_5r(k5`?O&)r+sGpUDbyQ!2BmhIj%ci85d4g)X%126ysFaQHE00Uo(fz;=zOHw;pr&{AkCslpE zb*wUDjVU|Up;^E6{agBSRNrlkG_JL)?Yh2SyKY@O?%bb#)*QH8`p`r9XPN29y?SY= z^%t3=6~FACD(>)VdkE+^gP`vBI^ z+Sjyy58v)8_~{^Kwc4)rRZ4 zPqN*6ZM)4HPwM1RJb8ReZ`*IT)4P20`|Z;1E!uVaD{J?y+cmTD`3OfVZBd5t1O{LL z24DaNU;qYS00th90c-EmOV{Ub%4Mttq;Fm%g!+5kwOB)BpITq^Qd8ZV`X|e!7TJ0a za@HS}+tRq%MtAYc>GNyyuYPoW|iI0uiN)Gn)c`~80Z!CAC zGaql&?#%vdzhXM;vn2h!`z|BjU)$VQm%Ha$e%0?AkY6vS_S?^UwvX+{8#m|^`UD1G z00v+H24DaN?!$oQ*?NBdvwz>0me&8OPEzjm-uFHo-_+;Uza!o3{>%5!r>;`nvs#xg zeVIMOoz=Jf)MBG&j`mS)G_|wwoL+jh+DKhE(v9+C&jL*C<$ren#CBHKw%KHJaIYl$Jlo9uBi7u0@{r}!?u-xBP5YO$ z>-JaH>NEMKHvRnE?8$#WKi4_f`akP--(#4S$@20;uTNcP`+N7*hGSFPFR!m}W!y&A z*YVf>xe(d0zbmm(=If3f^euf0126ysFaQHE00XyY!1}1mqp9X~-Zh{1GSkN@>vE}w zQtz~GWTeHcnXIX1^;g=KpCg?q&GG)^TqWlBBkXV0aNe)FGe0t?BOjd4y56g|>iebn zw?Fcu_4u-nY*TU9oVea4YsXyMtF|(BYgvERA~~t`?04-eY0SMgW$V&*s~=mh<)d;c zwye*sfm3^rj@!r7)X8_os935#@7?)(kq;TK4z&Jf4o*F1dhfk`+lq-}x4%}CQ*sIe zFaQHE00S@p1CPmo=IQnGpzf>F>9x6G-r z+HIx&C?3~yo7QUH?{(E~vvMw9*UrI~548>Vm)2YL?E5Ge@?&QAlKiJnRi~+~*8i;4 zvg|e6j_Zi+ny+LgeaRTyM?UWS`1!H-Z>?9`-Lf${CcBD3K3Shzv+JBY_kYsG+RkU@ z{#``XcYKODwYs)n`uh^}>|4jA&-Gq+y;eQPuYS<>sJ{Cgeg2r^!H6mL(N{14126ys zFaQHE@No>}JU;WT`Mc-rx&K+VQ-3^*&-i&A_gnhh`g)|@t*`qngTLeM+gYVbKuH*APnzSRm@7zke`}-yO*4tt`S*CtQ zJ&(QW_Z{B6`emT6Y-1%x%3ODzkU#PV126ysFaQHE00XyU!1LTcGu!vMZO*5qAEZy; zpNRf>Z+7l${ivR0WxceiZ9hkQ#{P3$%=>T0-lKEibE9>3{hZc5OFw(5`q~;=$E8JG z$Ll;kJ11PG+PNIiKl74C zX#JnHiS&x~g!O~D^=U8ekg{jB|EZB#YWv&Mtp^Yg~%MaOo?Zr+=! zJmj&_{Ty>7+oR*|7d?aa`Q?3S`)IqiamiZezOM_H)ThpzHF864U;qYS00v+H24DaN z%z$->b%HcO>$<_(S~^^x3vI7|@2{HMcB~nsBYwR8`A+4u>9(J3?RyeEJ)64f+2X?A zKi7loWA(F^*8hAyWUj2Uea}kAd>*LYNYAFeRvDjnY1iAf?{li|Khm!2Ubo7=Qs7fB_hQ0T|d~AoavdFIZEgPLPft=>zKx+0EZPYTfuq<81l%h{vp% zl&jg|96X}`__TjLs2aWXj-Ihw%bJNiH=J`lgB~rd?@aq6oAo*RsElln+I9P^_xqk4 zks}y@0T_S*7=Qs7fPv3s!1~;pQW_$)KA#YHS! zM_>R3U;qYS00v+H24DaNU;qYS00v+H24DaNU;qYS00v+H24DaNU;qYS00v+H24DaN zU;qYS00v+H24DaNU;qYS;A0ukcPeQ4PM^#8j*R7ZWz_in9hY@KuRr!&B;Vv424DaN zU;qYS00v+H2EH!?`P~ZA=zQ1T*JVNaeDvGy`VNWH`P{!l;)U;#=sDtgNDg2C24DaN zU;qYS00v+H20n`co}YgVdwDNp_WhGh_eg&9-;d}zF~8GN_f7nJhkl=fboKkUTK;+O zL)LlGj~|}(eV6Y`eeL~P+vaC6NV^}yAbBRwFaQHE00S@p126ysFaQJJodN&WgCw(Z zk-yv6^m~rKG`Tdlemz33T}QtOX>ITKH&~nd_agQB<<$PFqjqe=^|UYBljiR({ciue z_Y?7Rt%3mfjgp4W2p9I<}>C>T{KOJ)zGtZ)|g|f&mzS0T_S* z7=Qs7fB_hQf$zb9^mLO>{`Ed~>uBq9bCB<2cNyt$>HE~!dR-T3_?749YRli(KDuvU zUs!(+HtA>j83teg24DaNU;qYS00v;-J27yQp4NAycR{YWrHi|qetW-rzE?eUeCqRj z=B@hD@u#zF={@bT{r;Zz+*UcicDvqpYI=U&?-_JIn*8{6-$2LtBL^@5126ysFaQHE z00S@p126ysUzLHk?{Dj$`Ie6MV$Iz2*>W9w`-J+tW>+5c{&z1bD=n?X?`xM$)zRYj zzh|BLeeJSgz5Z4y{&W4Wnt$Tr+5!VG00S@p126ysFaQHE00S@}2BeGqnQxeY2^fF@ z7=Qs7fB_hQ0T_S*7=Qs7_&f&m-gQ4SryoAAAILqqhXELX0T_S*7;_#&yolHTt8>?JD}0$>v@AQas>l000S@p126ysFaQHEu*HD&d4CLgXpuf|uj9`n zw{A(#RP#A&HJ;DxXXR#}XHK8>>q0+X^jp5~zX|;QMEB3Jp zp82lh8RJ$TJliq!IoFhDV-|m576xDd24DaNU;qYS;8_^3#+*G9_i<^?*8l4Jnf**% z$48nvHEyl1x^>@H`PAlW&x^Eh*3pZY$vt+e*2yzHh9cb)V@zGU4j z?`P`r%VjS0@!A+&|0}JtADa5%;P?N3rCbopW!D?>M&4im24DaNU;qYS00v-Sn*nK9 zYvIgQ>ao%B)V`zRGkuQm-l^?lDn<&uZikJVh~dks`Km)2j@^0jSVZ=a{+hy1_*48Q;kzyJ)u z01Uvu*JnT)v-N*fKcyZU>F?Bot+jvN<9>;DO?~M1siz+!jk&7NFYz&Bd?tOKx?1P3 z^SY&zoyXMG-d5hTA7*y4jOxzHab5ZP*A@DhK867pfB_hQ0T_S*7=VGx7|^rNsy|a} z?dfyXmA*?Gm+14Jv|!cOM}4gID_@tySZ&AuuqsrPK_wcC1sC-mBLD(l28?PuS#PXBsC!}nZY>*K7x{aC#R;qv!f%h#D6c5am? zE!kh5`)mKKe$982jZf6)>2vkFa^aY=uT-Zlt?y7wwSFz9*O@=%<`RE=pUL*^rx{uC z!}nA6V)OaCVzb6p{j|TMJlOX~Ui(~lCVl>lK0h)8`1Wyg3vx}aVE_hT00v;-G6t-v zZ=uiC2b$Bj{yhGOK36^KoYrfm{6I+ox~1%&j5BjqHD{K)WIKI$kLJ(+_9@%<(Tv$F`Izffe@1Op?K&z` z?auu9+1@|P@A6vD7^*fhp7guMHY+#syT;}=M>c$(%IDGX^y$&IeZAP@{gM2BMxP%k zfB16QynwusHyD5c7=Qs7_&f%r<68fhnk(n)Rx@YOy%qtEu8_2-T2)XypuAPrA`~F(85A2WoLIqp@ zOYQD5UaywToNZ}e+dZ<**!JR4OrtVtFYRpkn6ZrbN;{*rGG|-<$S0Q_aq45Tp=DIY zc}$;1KD*prY%Vuj`<#?NXx;l>`)Ak1S>Le#zWqUd$uA7R01UtY48Xv>8PJ@*Y2F{t zrc)EtWAZ0;z(||q{6Fib-PA@o-yhlY95s(+8)?h=y41&8)wi9GT4%hyJKvU3UeX`e z+0$6rZ>?KSR?^;HpJdsi+xAs~%`~bxQJGonX=heOzGW;Ut($hP@yB_Py^%ke`>ohz zCw)@cJYU?-N^Dtnw4L|1)XvE7QN7RJXFkOHOaHA2|7M_K(6V@8!k9+m2Hc9_;?v}pad%NalHrKCyIMzK~lKtA$PjN3NZQ7o4vg$+D z-`Y-IX0}(#q&}M2ksle$Xzsnz)=C-2tg<71GWW`B<=yqQ&e-0+1L8dFhrQU+=4iW~ z16w|g>VMY0><{I#=G*zJ`|WQ%&tyZ3&!1}F`&Hk^YOb;`TDMitE!R^!TB>jN^x1JI zgBg>KJ13)a#PzeBVrcy@<8+K$=VRJ(dD*J|WI1i`mCfVTFUO{Ka&enkSI51-`oL@E zT`&LxFaQHE00S`ay%_Kue`|i&y8f%5Z%&=HH8;-rdF%7goLeVr_Cs^kEqhsKbvu2X zX@Q(C&)T=1+4C`D8MSvSe;mJjui8t;GWYVi>O0rhy2j=hY8~&Fy-{pwbF`hhWsA8{ z-Ot>2gpW~QWPUSmnGfaEIT0hTt-Wc)8IQ_G_D5~^vwY5ea@?)QHahnmf953X`?zv5 zE8{q~@?@K7ujb2Tyw0+BlHm&+)g~&pG#& zj~UA>H@EP|am)8nOxNgh*_K`F2e-8no6C;Yt2rFi{mgylqvj)h%0A8e8rcu612#Gb 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 z00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_< z0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb z2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$## zAOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;| zfB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U< z00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa z0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV= z5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHaf zKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_ z009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz z00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_< z0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb z2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$## zAOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;| zfB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U< z00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa z0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV= z5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHaf zKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_ z009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz z00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_< z0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb z2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$## XAOHafKmY;|fB*y_009V`i@^T}ne+mc literal 0 HcmV?d00001 diff --git a/TagsCloudContainer/text.txt b/TagsCloudContainer/text.txt new file mode 100644 index 000000000..0011fa4e7 --- /dev/null +++ b/TagsCloudContainer/text.txt @@ -0,0 +1,7 @@ +слово +СКУЧноЕ +скучное +в +СЛОВО +СКУЧНОЕ +СКУЧНОЕ \ No newline at end of file diff --git a/TagsCloudContainer/text1.txt b/TagsCloudContainer/text1.txt new file mode 100644 index 000000000..c4b2dbbed --- /dev/null +++ b/TagsCloudContainer/text1.txt @@ -0,0 +1,5000 @@ +Полный +по +HTML +Функция +Статья +Веб +на +Синтаксис +Блог +на +Новость +Тестирование +Веб +Репозиторий +Интеллект +Приложение +что +Стек +Нейросеть +Игра +но +не +Веб +в +на +от +HTML +Алгоритм +Дизайн +Дизайн +также +Функция +Игра +CSS +Пакет +Данные +Анализ +также +Игра +как +как +Метка +Код +SQL +не +Категория +Облако +на +на +Регистрация +Искусственный +Поиск +Мобильное +Репозиторий +Пакет +Репозиторий +от +от +Новость +Слово_266 +Слово_358 +Сайт +Версия +Система +на +Данные +Полный +Сайт +Сервер +от +Ошибка +как +это +как +Стек +что +в +Данных +или +Разработка +Алгоритм +Стек +для +не +не +Обучение +CSS +SQL +в +Анализ +Анализ +Версия +в +и +SQL +Фильтр +Нейросеть +Алгоритм +что +CSS +не +Интерфейс +с +это +это +Код +в +на +Менеджер +Контроль +SQL +Блог +Контроль +в +JavaScript +Библиотека +CSS +Дизайн +Обучение +Игра +Python +или +что +также +Слово_466 +Слово_449 +также +Python +от +Интеллект +Категория +Анализ +для +Библиотека +Ошибка +Блог +Логин +Нейросеть +это +что +Java +Java +Ветка +Git +База +от +Контроль +Настройка +но +также +Java +на +но +Клиент +Система +Python +Статья +Тестирование +Блог +Python +Фреймворк +Java +от +с +как +C++ +Слово_281 +Менеджер +по +Git +для +Функция +Репозиторий +Нейросеть +но +Клиент +с +Контроль +Оптимизация +и +Данные +Фильтр +Приложение +не +с +Пакет +Полный +Git +Алгоритм +Профиль +Полный +Синтаксис +Фронтенд +Шифрование +Библиотека +SQL +или +Приложение +Сервер +Искусственный +это +и +Слово_147 +по +Искусственный +HTML +Интерфейс +Git +с +SQL +Слово_108 +База +Тестирование +не +Ветка +Разработка +что +и +Ошибка +Код +с +Синтаксис +Слово_141 +также +также +Разработка +Версия +Фреймворк +не +на +что +Система +Функция +Слово_238 +Слово_286 +Игра +от +Интерфейс +Слово_307 +Тестирование +также +Анализ +или +Java +Версия +для +Python +это +Функция +Новость +Искусственный +не +Тестирование +Функция +Настройка +но +Метка +Сайт +и +HTML +Фреймворк +Библиотека +это +Веб +Код +Контроль +Слово_162 +Фреймворк +Менеджер +Искусственный +Функция +База +Облако +Слово_270 +на +как +Приложение +Запрос +на +Админ +JavaScript +с +Дата +на +Функция +Библиотека +Приложение +Слово_299 +Время +в +также +или +или +Анализ +Фреймворк +Клиент +также +Версия +Слово_239 +также +от +Дата +и +это +для +Интеллект +Пользователь +Обучение +Сайт +Синтаксис +Шифрование +но +Слово_196 +Пользователь +Время +Контроль +или +Настройка +Алгоритм +Обучение +Слово_108 +Категория +Мобильное +Слово_177 +Нейросеть +Статья +Приложение +Клиент +SQL +Профиль +Статья +и +Обучение +Искусственный +Логин +не +Система +Веб +Нейросеть +Код +Полный +не +Слово_494 +в +Сайт +Игра +Приложение +Данные +Поиск +База +Мобильное +от +на +Слово_255 +в +Веб +Дата +Сайт +с +Дизайн +это +Git +Git +что +Слово_499 +Игра +Python +Приложение +что +Дата +по +Слово_283 +Логин +Слово_114 +Библиотека +Настройка +это +Функция +и +или +Пакет +Алгоритм +Бэкенд +Запрос +Репозиторий +Сайт +Интеллект +Java +Регистрация +Блог +JavaScript +Нейросеть +Настройка +или +HTML +Данные +Контроль +Дизайн +или +как +Менеджер +Сортировка +но +Слово_316 +Ветка +Категория +на +в +Java +от +Код +Алгоритм +Интерфейс +Панель +Дата +Алгоритм +Игра +Пароль +Анализ +Система +с +что +в +Веб +Система +Веб +Приложение +Разработка +Интерфейс +Код +что +и +Слово_372 +Бэкенд +Тестирование +на +Данных +C++ +Бэкенд +Облако +Репозиторий +CSS +Репозиторий +Версия +C++ +Интеллект +HTML +Стек +Тег +Веб +Анализ +Интерфейс +HTML +Python +по +C++ +Слово_106 +База +Менеджер +Python +Интеллект +на +что +Бэкенд +Слово_160 +Тестирование +Код +Репозиторий +что +на +Полный +это +Пользователь +не +с +Слово_492 +Сайт +в +Искусственный +Запрос +Фильтр +в +Метка +что +Пароль +что +Дизайн +Синтаксис +с +как +Фреймворк +Безопасность +что +Пакет +Интерфейс +Приложение +это +Обучение +с +от +Слово_424 +Тестирование +Код +Регистрация +что +Регистрация +Шифрование +Игра +для +База +Нейросеть +Слово_242 +Git +не +Регистрация +от +Клиент +с +не +Искусственный +для +HTML +Дата +Анализ +Статья +Система +с +Поиск +JavaScript +Клиент +Клиент +Дизайн +не +Категория +Контроль +как +Искусственный +Админ +SQL +Тестирование +по +что +Стек +также +что +Версия +с +Вход +Запрос +от +по +Игра +Искусственный +как +SQL +Веб +но +и +также +по +и +Тестирование +Слово_216 +Сайт +Данные +на +Сортировка +Шифрование +Запрос +на +от +Тестирование +Дизайн +Категория +Пакет +но +для +Игра +от +Контроль +Сервер +как +CSS +Слово_244 +Искусственный +Вход +Вход +Пакет +Шифрование +на +Безопасность +Слово_236 +как +но +Статья +Тег +Слово_354 +Категория +Слово_117 +это +Слово_152 +или +Фильтр +это +Профиль +Интеллект +SQL +но +Мобильное +с +также +Слово_415 +также +Библиотека +Панель +Панель +это +на +по +Алгоритм +но +Интеллект +Библиотека +SQL +и +Регистрация +это +как +но +Сортировка +от +для +в +Слово_114 +Алгоритм +Приложение +по +Фреймворк +в +Слово_133 +это +Игра +Настройка +Игра +CSS +Веб +Фильтр +Контроль +или +Слово_245 +Категория +Репозиторий +в +Алгоритм +Шифрование +Запрос +Безопасность +в +с +Python +по +Искусственный +в +Интеллект +Клиент +что +на +Шифрование +Код +Нейросеть +Слово_497 +JavaScript +также +Слово_160 +Сервер +Репозиторий +для +Сайт +C++ +как +Интерфейс +C++ +с +Мобильное +с +Фреймворк +Репозиторий +не +Синтаксис +как +Git +Данных +Тестирование +JavaScript +Система +также +но +Ошибка +Ветка +по +Веб +Git +Дата +Слово_399 +Git +Оптимизация +Алгоритм +Менеджер +Регистрация +но +CSS +Панель +Админ +Ветка +Анализ +что +от +Python +на +Сервер +Искусственный +как +на +Метка +Фреймворк +Слово_229 +также +Вход +Сайт +Обучение +Код +от +Веб +JavaScript +Тег +Мобильное +Сортировка +Полный +Категория +на +как +от +Система +но +также +Анализ +как +Ошибка +Веб +Категория +Блог +Разработка +Данные +Тестирование +Профиль +Данные +SQL +Профиль +с +Код +Искусственный +это +для +Слово_367 +на +не +это +Синтаксис +Сайт +Слово_269 +это +Менеджер +Искусственный +JavaScript +Python +по +Пакет +Код +Функция +Веб +Система +HTML +Разработка +Тестирование +Сортировка +на +Оптимизация +и +в +Клиент +Категория +Дизайн +Репозиторий +также +но +Клиент +и +это +Версия +Python +от +Фронтенд +Тестирование +Блог +База +Данных +Менеджер +но +не +Ветка +Сортировка +SQL +что +Дата +но +Запрос +с +Нейросеть +по +Git +Анализ +Фронтенд +Искусственный +Функция +Приложение +как +Python +Java +или +на +или +Слово_109 +для +для +Алгоритм +по +Шифрование +но +в +Клиент +Git +это +Фильтр +Фреймворк +Данные +Нейросеть +База +что +Данные +HTML +Python +Код +Фильтр +как +и +Менеджер +Код +с +Запрос +Слово_288 +Дизайн +в +что +Сайт +Система +Обучение +Слово_401 +Стек +Логин +что +но +Тестирование +как +Данные +Панель +от +по +Безопасность +как +Статья +Мобильное +C++ +на +с +это +Искусственный +Интерфейс +CSS +Репозиторий +Дизайн +C++ +Нейросеть +что +также +Слово_200 +Python +Слово_248 +для +Админ +Система +База +C++ +Полный +Блог +Пользователь +и +JavaScript +Вход +Слово_302 +от +Функция +Версия +это +HTML +Блог +Нейросеть +для +не +и +Код +Приложение +Полный +с +Приложение +Запрос +это +Версия +как +или +и +не +с +или +по +Слово_399 +Дата +не +это +Сервер +Интерфейс +Ошибка +Сайт +Git +как +Стек +Блог +Фильтр +что +Нейросеть +Клиент +Менеджер +это +Клиент +Сервер +это +Фреймворк +Версия +что +Python +по +для +Блог +Обучение +не +JavaScript +это +не +Клиент +в +Анализ +Слово_206 +по +Игра +на +Интеллект +для +Приложение +Админ +Дизайн +по +Данные +это +в +Мобильное +Слово_358 +по +Библиотека +для +Интерфейс +Библиотека +Игра +или +Фреймворк +C++ +для +от +Данные +Обучение +или +Дизайн +Фронтенд +что +Система +Репозиторий +Метка +C++ +Мобильное +Данные +Сервер +Нейросеть +это +также +Тестирование +не +C++ +Дизайн +Полный +Приложение +Git +Пакет +или +Оптимизация +и +для +Регистрация +но +Профиль +База +Java +также +в +Версия +Клиент +Репозиторий +по +Слово_416 +Мобильное +Данные +Блог +Дизайн +как +Сайт +с +Данные +для +Функция +на +Данные +Клиент +Сайт +Веб +для +Слово_280 +Данные +Нейросеть +на +Интерфейс +на +Искусственный +или +но +не +Мобильное +Вход +Данных +по +также +Нейросеть +не +Пакет +Искусственный +по +Анализ +SQL +Алгоритм +Фреймворк +и +что +с +Функция +Логин +База +Ошибка +Пользователь +JavaScript +Время +от +Сортировка +но +также +Нейросеть +JavaScript +Админ +для +Разработка +Игра +Данные +Оптимизация +по +Админ +Ветка +Функция +Данные +Искусственный +Стек +Git +это +Сайт +Искусственный +также +и +Данные +Веб +не +Интеллект +с +Сайт +Нейросеть +Полный +с +для +Статья +Мобильное +для +HTML +но +как +от +HTML +для +Категория +Искусственный +с +Настройка +Фильтр +что +в +с +в +с +по +Репозиторий +Фреймворк +от +Метка +Веб +База +Java +База +для +Git +Клиент +от +это +по +с +Слово_111 +Обучение +или +как +и +не +Блог +но +по +с +Сайт +Слово_283 +Фильтр +Шифрование +Ошибка +Обучение +Логин +C++ +также +Библиотека +Ошибка +Полный +Система +или +Git +Категория +Время +Вход +SQL +Система +Интеллект +не +Сайт +что +как +Данных +Версия +Python +SQL +Функция +Репозиторий +Слово_402 +что +Анализ +Полный +Тестирование +Слово_485 +Ветка +Фреймворк +Профиль +Шифрование +для +Метка +База +на +Алгоритм +Слово_282 +Python +Искусственный +также +с +но +Слово_125 +Приложение +Ветка +как +Анализ +с +но +Слово_252 +не +но +это +от +HTML +Искусственный +от +Сервер +по +для +Версия +на +не +не +по +от +Репозиторий +Функция +для +в +Новость +Стек +Облако +Python +Нейросеть +как +Ветка +Клиент +Приложение +но +не +Мобильное +Данные +Фреймворк +Обучение +на +как +Нейросеть +Сайт +что +Искусственный +Анализ +Контроль +Нейросеть +это +JavaScript +Тестирование +Оптимизация +Стек +и +Админ +Данные +Пользователь +JavaScript +Интерфейс +Менеджер +CSS +или +Регистрация +с +Пароль +Сервер +для +Python +Функция +Слово_484 +Слово_280 +с +Интеллект +Обучение +в +по +Данных +Приложение +Git +Запрос +Алгоритм +это +Данные +Запрос +также +Java +в +Версия +Шифрование +Слово_500 +от +от +также +с +Время +Приложение +Менеджер +или +Анализ +от +Код +как +с +Слово_407 +на +Версия +SQL +Библиотека +Анализ +Панель +Слово_264 +Дата +Дизайн +Игра +Менеджер +но +Сервер +Статья +Разработка +Искусственный +Менеджер +или +также +не +Приложение +Слово_488 +Код +для +Ветка +но +База +это +Искусственный +HTML +Нейросеть +для +HTML +Слово_414 +Пакет +также +Синтаксис +HTML +Фреймворк +Система +Обучение +Библиотека +Разработка +Слово_193 +Веб +Фильтр +Приложение +Алгоритм +по +Интеллект +Игра +CSS +Git +Приложение +Интеллект +в +что +Код +как +Код +но +Python +также +Нейросеть +Профиль +Фронтенд +Код +Репозиторий +Статья +C++ +как +также +не +Анализ +Пакет +Логин +Оптимизация +Функция +Приложение +что +Функция +Java +Тестирование +также +это +Панель +с +Алгоритм +Тег +Облако +Слово_422 +Слово_231 +Искусственный +C++ +что +на +но +Слово_106 +Стек +Слово_300 +Полный +JavaScript +это +или +JavaScript +Ошибка +Код +в +по +как +Менеджер +в +Менеджер +Веб +или +Слово_250 +Java +что +для +Данных +Git +Библиотека +с +для +Тег +Анализ +не +в +это +что +Python +CSS +не +JavaScript +Анализ +CSS +Анализ +в +Нейросеть +Дата +что +Игра +Слово_139 +но +Слово_273 +Нейросеть +Тестирование +Данные +Контроль +Git +CSS +Обучение +от +Ошибка +также +или +в +как +Интеллект +Пакет +Пароль +что +Категория +на +не +Контроль +от +Блог +Регистрация +Алгоритм +Слово_360 +Пакет +Алгоритм +Безопасность +JavaScript +Ветка +Python +Слово_323 +Сайт +Слово_432 +Код +Ветка +как +Регистрация +Нейросеть +Статья +Клиент +Код +но +как +Код +но +Git +также +Новость +также +Java +Фреймворк +Версия +не +от +Данных +с +Интеллект +Синтаксис +Данные +Обучение +Веб +Слово_105 +Слово_303 +Настройка +Библиотека +как +Разработка +Алгоритм +HTML +Искусственный +Пакет +Фильтр +C++ +по +для +HTML +Стек +также +C++ +Python +Репозиторий +Игра +Java +Логин +JavaScript +но +Алгоритм +Пакет +Система +Запрос +Разработка +Слово_160 +Пароль +Java +Пользователь +База +C++ +Приложение +Ветка +также +как +в +для +Пакет +Python +C++ +JavaScript +Данных +CSS +Веб +Интеллект +также +Слово_174 +но +Данные +Анализ +по +Новость +C++ +Интерфейс +также +по +Клиент +Искусственный +Python +Искусственный +также +JavaScript +Версия +с +Интерфейс +Ошибка +Дизайн +Система +или +как +не +Запрос +Тег +Фильтр +Ветка +Тестирование +Ветка +Java +Репозиторий +от +Сайт +Анализ +и +Веб +это +Слово_472 +Интерфейс +Логин +Система +или +Фреймворк +Данных +но +Настройка +SQL +для +Мобильное +это +на +Категория +Тестирование +по +Система +с +как +в +Настройка +JavaScript +Сайт +Обучение +C++ +Пакет +Git +Контроль +Репозиторий +Тег +как +или +Пользователь +от +что +что +Java +Пакет +Слово_484 +Веб +Код +от +Функция +Искусственный +Ошибка +как +Полный +Искусственный +База +Код +Слово_203 +Версия +Время +Система +Слово_236 +и +от +от +с +от +Тестирование +Метка +Статья +для +HTML +и +Интеллект +Фреймворк +Интерфейс +Контроль +Код +Данные +Интерфейс +База +в +Разработка +также +это +Сервер +Обучение +не +Игра +и +Стек +с +Контроль +что +Функция +Фреймворк +или +Пакет +от +в +Бэкенд +Данные +также +Репозиторий +с +Искусственный +от +но +Обучение +что +Дизайн +Шифрование +также +Искусственный +Дизайн +Сервер +от +Фронтенд +Тег +Функция +Игра +для +Дизайн +Поиск +Функция +C++ +Разработка +Разработка +Ошибка +Версия +Слово_217 +Слово_495 +SQL +Python +Фронтенд +Логин +также +JavaScript +CSS +как +с +Функция +на +не +или +в +CSS +Облако +Фильтр +для +Функция +Сортировка +Тестирование +База +в +Слово_258 +Интерфейс +Сортировка +Фреймворк +на +Нейросеть +База +в +или +Сайт +Версия +Git +с +Система +Разработка +Ошибка +с +Дизайн +Фронтенд +это +как +по +также +Мобильное +Облако +Пакет +Фронтенд +или +по +Пароль +Алгоритм +Интерфейс +на +Фреймворк +Обучение +Админ +также +по +Админ +Игра +Пакет +по +что +как +Бэкенд +от +C++ +что +Клиент +База +по +Репозиторий +CSS +Библиотека +Метка +HTML +CSS +Слово_375 +Репозиторий +Контроль +Сайт +Данные +Сервер +Полный +Функция +не +CSS +по +Код +в +Синтаксис +Приложение +Сервер +Библиотека +Менеджер +что +Версия +в +C++ +Пользователь +Интерфейс +Синтаксис +это +Слово_422 +но +для +Функция +Нейросеть +что +на +Интеллект +на +это +Слово_488 +и +Настройка +как +Функция +что +Облако +также +Игра +по +Функция +Регистрация +Искусственный +с +Безопасность +также +Веб +Разработка +по +но +Разработка +Веб +Приложение +JavaScript +но +с +от +Git +и +Разработка +Искусственный +это +в +по +Слово_352 +как +это +по +Нейросеть +не +Веб +Оптимизация +Обучение +это +не +от +на +Git +Админ +это +Сортировка +не +Мобильное +в +что +База +Система +это +Данные +или +с +Код +и +как +Поиск +Слово_256 +Ошибка +Слово_159 +Тег +это +Искусственный +Дизайн +Обучение +по +Слово_372 +Интерфейс +Контроль +SQL +Система +также +SQL +Слово_409 +также +Репозиторий +Интеллект +по +Оптимизация +Данных +что +Сервер +Сайт +Python +в +Анализ +Тестирование +Приложение +Git +по +Дизайн +и +Тег +как +C++ +База +Веб +в +Игра +Клиент +Логин +Полный +Слово_125 +от +Обучение +также +Бэкенд +или +Статья +Метка +Версия +Алгоритм +это +Алгоритм +Дизайн +Библиотека +Тег +для +Новость +Блог +C++ +на +также +по +на +Версия +Код +Сервер +Новость +JavaScript +Блог +для +Нейросеть +База +Код +Слово_177 +Анализ +не +Слово_360 +Слово_161 +Ветка +Обучение +Версия +от +Веб +что +Блог +Python +не +Слово_263 +Данных +Админ +как +Функция +в +но +Блог +Фильтр +Обучение +C++ +Python +на +Слово_145 +Анализ +также +Алгоритм +Слово_446 +это +также +Игра +от +Ветка +Интеллект +Веб +Слово_485 +Пакет +Фреймворк +Тег +как +Пользователь +как +Слово_364 +по +Алгоритм +Анализ +Нейросеть +Время +для +Нейросеть +Игра +JavaScript +Игра +База +Облако +Нейросеть +Ошибка +Тестирование +но +Сервер +Код +Git +Функция +Приложение +Тестирование +Искусственный +Запрос +Пакет +Тестирование +от +Дизайн +Нейросеть +Пакет +Контроль +с +Обучение +как +Контроль +Искусственный +в +но +Разработка +что +не +Анализ +Фронтенд +Ветка +Пакет +с +Данные +Слово_308 +или +Код +Облако +Контроль +Слово_118 +в +Функция +не +Слово_244 +Стек +Слово_258 +не +не +как +Данных +Фронтенд +или +Анализ +Настройка +Репозиторий +C++ +Пакет +Профиль +Интеллект +Время +что +Пакет +Сервер +Код +Пакет +это +Ошибка +с +Вход +в +на +Пользователь +Запрос +это +Данных +Время +как +Время +Библиотека +не +CSS +Нейросеть +также +Веб +Алгоритм +Синтаксис +или +с +как +Игра +Слово_355 +Пользователь +для +Анализ +Фильтр +не +или +что +Менеджер +не +Поиск +Репозиторий +Разработка +Код +также +по +не +Python +Анализ +Пакет +Разработка +Клиент +Репозиторий +это +Админ +Функция +Алгоритм +Шифрование +и +Менеджер +для +что +Шифрование +Тестирование +Интерфейс +CSS +Python +по +это +Логин +Ошибка +Библиотека +Оптимизация +это +и +или +Приложение +и +что +Слово_115 +Ошибка +CSS +CSS +Обучение +Логин +Обучение +и +Менеджер +Пользователь +Пароль +Мобильное +это +Git +как +Дизайн +Дизайн +Контроль +Библиотека +Игра +CSS +Python +Анализ +Мобильное +C++ +на +Время +Игра +Пакет +Git +Интеллект +SQL +не +Тестирование +по +CSS +Git +как +от +от +Интеллект +также +Код +Алгоритм +Контроль +Git +Слово_189 +Анализ +CSS +что +в +Библиотека +Обучение +Слово_308 +Время +JavaScript +но +Сервер +HTML +HTML +в +на +также +для +Интерфейс +в +это +это +Сервер +Статья +Слово_262 +Git +что +Настройка +Сервер +Код +Синтаксис +на +от +Настройка +но +Фронтенд +JavaScript +это +также +Полный +CSS +как +Интерфейс +Функция +не +не +Git +Версия +HTML +в +Статья +Веб +что +также +по +База +Менеджер +Дата +в +Java +Игра +Шифрование +Ошибка +Оптимизация +от +Слово_168 +C++ +Оптимизация +Шифрование +Обучение +SQL +Java +JavaScript +Python +Репозиторий +в +Ветка +в +Синтаксис +Пароль +на +Система +для +Git +не +Ошибка +Блог +CSS +но +Мобильное +как +для +SQL +Разработка +Данные +Стек +Алгоритм +Интеллект +Веб +это +Тестирование +Контроль +Поиск +Система +или +JavaScript +Поиск +Разработка +на +Алгоритм +JavaScript +но +Интеллект +Ошибка +Синтаксис +для +SQL +для +Сайт +Бэкенд +Библиотека +это +что +CSS +Сервер +Категория +Приложение +Запрос +Полный +Пакет +Веб +Тестирование +Синтаксис +Контроль +Алгоритм +Тестирование +это +от +также +Интеллект +как +Разработка +SQL +Клиент +Контроль +База +Ошибка +это +JavaScript +не +или +HTML +по +Интеллект +Python +Клиент +это +Алгоритм +не +Логин +Python +в +Слово_477 +Слово_105 +Тег +Сервер +Дизайн +и +Тег +Контроль +Python +также +Контроль +Разработка +C++ +от +Фреймворк +Бэкенд +HTML +Профиль +Дизайн +Контроль +Python +с +Слово_395 +или +Метка +Библиотека +Пользователь +Java +SQL +Регистрация +но +Игра +Репозиторий +Новость +Стек +но +Дата +Приложение +Анализ +или +Обучение +также +Git +но +Облако +Мобильное +Слово_224 +Слово_342 +Система +Искусственный +Обучение +Сайт +HTML +на +что +на +также +Искусственный +с +SQL +Фреймворк +Пароль +Облако +но +Админ +по +Нейросеть +Логин +Слово_402 +Панель +Слово_332 +Админ +Сервер +как +по +Алгоритм +Анализ +CSS +Запрос +Ошибка +Бэкенд +Искусственный +Безопасность +от +Библиотека +Тестирование +Время +Бэкенд +Фронтенд +Код +Разработка +Анализ +на +с +Слово_138 +Сортировка +Приложение +Клиент +с +CSS +на +SQL +это +Слово_248 +JavaScript +Веб +Тестирование +Нейросеть +по +Регистрация +Веб +для +Git +Пакет +Фреймворк +Бэкенд +Время +Тестирование +Алгоритм +как +Функция +также +Синтаксис +для +по +также +Java +Слово_122 +как +Ошибка +Дата +Функция +не +с +Тег +Слово_319 +Пакет +Обучение +для +Метка +Алгоритм +Алгоритм +Клиент +Нейросеть +Репозиторий +JavaScript +Сервер +в +от +это +База +Метка +Слово_173 +Админ +с +Нейросеть +по +не +Код +это +и +C++ +Анализ +Менеджер +Git +Слово_412 +что +Git +Интеллект +что +также +JavaScript +Алгоритм +Сортировка +Слово_308 +База +также +Логин +Новость +по +Настройка +в +Тестирование +База +SQL +Система +Данных +от +не +Ошибка +Сортировка +Репозиторий +Бэкенд +или +Нейросеть +Библиотека +с +для +Шифрование +База +Слово_281 +Стек +Версия +Запрос +на +Мобильное +Новость +Система +с +также +Веб +Регистрация +Слово_312 +Данные +Алгоритм +Ветка +для +Слово_331 +Git +с +Функция +по +Клиент +Слово_112 +Сайт +Интеллект +это +для +Админ +Контроль +Безопасность +Java +для +Логин +SQL +Пароль +Логин +CSS +и +CSS +не +в +что +Стек +Бэкенд +Алгоритм +по +в +Нейросеть +с +также +от +также +на +в +Тестирование +JavaScript +Менеджер +Git +Сайт +Функция +с +на +Игра +Мобильное +но +HTML +Синтаксис +Данные +Код +C++ +Тестирование +но +в +также +Метка +Блог +HTML +Версия +Git +в +Пользователь +также +также +Фреймворк +JavaScript +Искусственный +Клиент +это +Пароль +Тестирование +Ошибка +Сервер +как +это +с +Функция +JavaScript +JavaScript +C++ +Данные +Данные +Контроль +Разработка +Git +Слово_130 +Сервер +JavaScript +Синтаксис +но +для +HTML +Менеджер +CSS +Фильтр +Сайт +База +Код +JavaScript +Слово_228 +Ветка +Полный +Нейросеть +Тестирование +Тег +Функция +Сервер +с +Git +Оптимизация +Функция +Регистрация +для +и +Новость +как +Клиент +также +Слово_166 +Ошибка +на +Версия +на +Дизайн +Дата +Поиск +на +Функция +Репозиторий +SQL +Искусственный +и +от +Интеллект +не +Фреймворк +Репозиторий +с +Анализ +Метка +от +Статья +База +с +Код +Менеджер +Алгоритм +Поиск +что +Версия +по +с +от +не +Сайт +Пароль +как +от +что +в +Данные +это +Слово_312 +от +также +Приложение +не +Данных +в +также +Функция +Нейросеть +но +по +как +что +также +Разработка +Запрос +но +HTML +Анализ +Вход +Версия +Данные +или +для +или +от +Облако +Дизайн +но +по +Слово_206 +или +или +Версия +Репозиторий +Искусственный +как +Сайт +Приложение +Интерфейс +но +Ветка +Разработка +но +Слово_368 +на +Сервер +Приложение +Слово_201 +Синтаксис +с +Поиск +Интерфейс +Библиотека +Python +Система +Интерфейс +или +C++ +SQL +JavaScript +что +в +или +как +Интеллект +но +также +Система +JavaScript +и +не +Безопасность +но +или +это +Фреймворк +База +Тестирование +в +CSS +Слово_466 +Python +но +от +что +не +Интеллект +в +Python +Git +Время +Алгоритм +Контроль +Веб +Контроль +но +Веб +Библиотека +Контроль +Ветка +Ветка +CSS +Искусственный +Мобильное +или +Репозиторий +Нейросеть +База +и +Метка +Слово_135 +Метка +не +Фреймворк +Слово_455 +JavaScript +Интеллект +JavaScript +Поиск +но +Фреймворк +и +также +Интерфейс +Анализ +это +Искусственный +с +Тег +База +на +это +База +как +Интерфейс +Безопасность +Сайт +Блог +Данных +Менеджер +Синтаксис +База +Ветка +Интерфейс +также +Ошибка +по +Git +Java +Регистрация +это +также +Облако +Анализ +Ошибка +HTML +Ошибка +Слово_449 +Git +но +по +Сайт +Менеджер +Разработка +Слово_231 +и +Сайт +Данных +что +Слово_487 +это +Слово_252 +также +в +Репозиторий +как +Сайт +Код +в +на +по +на +от +это +по +Слово_235 +Ошибка +но +Стек +Панель +Контроль +Java +Игра +Игра +Разработка +или +Git +по +Версия +Тег +Пакет +не +Нейросеть +и +Java +или +и +Пакет +Контроль +или +Ошибка +это +Обучение +Данные +Слово_295 +Новость +CSS +Тестирование +что +Python +Нейросеть +что +Фреймворк +Слово_494 +в +Безопасность +Разработка +C++ +Библиотека +на +Git +но +также +это +Блог +и +Метка +или +Стек +Стек +как +Контроль +Интеллект +Полный +Интерфейс +Админ +или +Интерфейс +Вход +Слово_284 +как +по +Ветка +Обучение +Слово_365 +Ветка +Синтаксис +Поиск +HTML +Ветка +также +Код +Слово_483 +SQL +также +Код +Функция +Функция +Обучение +Менеджер +Бэкенд +Регистрация +Админ +как +Обучение +Контроль +Java +Данные +на +Система +Тестирование +Интеллект +C++ +Игра +Библиотека +Ветка +Python +Версия +Разработка +и +Дизайн +Слово_413 +HTML +Java +не +Время +Дизайн +Менеджер +по +HTML +для +Время +Java +и +Ошибка +JavaScript +по +Веб +Дизайн +Система +в +Обучение +Интерфейс +Данные +как +и +это +Фронтенд +что +Регистрация +Интеллект +но +это +Вход +Мобильное +Нейросеть +Клиент +Нейросеть +JavaScript +Версия +Игра +Java +на +Метка +и +Новость +Новость +Тег +с +Система +также +База +но +Клиент +Фреймворк +Данные +Игра +Анализ +от +Стек +Искусственный +Контроль +Интерфейс +от +не +Алгоритм +на +JavaScript +Код +Мобильное +Интерфейс +но +от +Дата +но +на +Слово_262 +с +не +не +Библиотека +Слово_247 +что +также +для +Сайт +с +Нейросеть +на +Блог +для +Настройка +Поиск +что +Пароль +Новость +Разработка +Интеллект +в +Поиск +но +что +как +Git +Java +Игра +База +Разработка +Сайт +от +в +Код +для +Данные +Код +также +База +для +но +Оптимизация +Бэкенд +Вход +Сервер +не +Фреймворк +в +но +это +Обучение +по +Запрос +от +от +Категория +и +что +Ошибка +Сортировка +для +CSS +Клиент +Искусственный +Панель +Сервер +или +База +Веб +Слово_420 +Слово_296 +но +Регистрация +Полный +также +Слово_254 +в +Мобильное +но +Клиент +C++ +Нейросеть +или +не +или +Пароль +Разработка +Пакет +Git +на +с +HTML +Git +Менеджер +HTML +но +но +Репозиторий +Приложение +с +Блог +и +но +не +Python +на +это +Система +и +в +SQL +Слово_286 +База +Настройка +Фреймворк +Логин +Слово_274 +с +Данные +Безопасность +что +что +Оптимизация +Код +Поиск +Пароль +что +Тестирование +Ошибка +Данные +Оптимизация +Панель +Сайт +Нейросеть +также +Профиль +и +Код +Слово_334 +Контроль +Время +не +по +Python +HTML +Сервер +JavaScript +на +HTML +Версия +но +Данные +также +Слово_178 +и +C++ +или +от +HTML +Слово_324 +Версия +Фреймворк +как +не +Слово_120 +что +Фреймворк +HTML +на +Админ +CSS +Пакет +Сервер +Менеджер +Клиент +или +Код +Java +Слово_193 +Мобильное +Анализ +Java +C++ +Библиотека +на +C++ +Категория +Облако +на +Разработка +Настройка +Приложение +Интеллект +также +Контроль +Менеджер +на +как +JavaScript +Интеллект +Ветка +Панель +также +с +Контроль +но +Данные +Интерфейс +это +это +Java +Мобильное +CSS +от +Мобильное +Слово_446 +Панель +Игра +не +Интерфейс +Поиск +Игра +Менеджер +по +Контроль +Дизайн +Данных +Версия +HTML +но +SQL +Слово_241 +или +Сайт +Слово_422 +Контроль +Python +для +Пакет +Облако +Пакет +Фронтенд +Ошибка +Фронтенд +Python +База +не +и +Алгоритм +Искусственный +Сайт +SQL +Интерфейс +в +HTML +на +Git +и +Веб +Анализ +Менеджер +Ветка +это +Игра +C++ +Разработка +от +Сайт +Слово_223 +CSS +не +Обучение +но +Код +C++ +с +Тестирование +Мобильное +это +Функция +Интеллект +Менеджер +Система +Ошибка +как +на +Репозиторий +Оптимизация +Слово_414 +База +Ветка +также +Шифрование +Оптимизация +Пакет +Дата +для +Интерфейс +что +Разработка +Слово_248 +это +и +Контроль +Искусственный +Функция +Синтаксис +Версия +не +База +Алгоритм +Код +Нейросеть +не +Слово_430 +Фреймворк +Вход +Слово_140 +и +Безопасность +Ветка +Интеллект +Время +Репозиторий +Блог +Обучение +Время +Безопасность +в +Менеджер +SQL +Версия +Код +что +не +Шифрование +Слово_486 +с +Тестирование +Пакет +Игра +Версия +или +Пакет +и +в +но +Нейросеть +Облако +по +База +CSS +CSS +Git +но +но +Админ +но +Сайт +Сервер +Пакет +по +в +Данных +от +как +Вход +не +как +от +Пакет +Python +но +Дата +CSS +Контроль +Мобильное +Алгоритм +что +Оптимизация +также +Фреймворк +в +Java +Слово_401 +C++ +Слово_332 +или +Система +Искусственный +Админ +Слово_274 +не +Java +Сайт +это +Ветка +Интерфейс +Алгоритм +как +Категория +Полный +Дата +Интеллект +не +Слово_387 +Фреймворк +и +Алгоритм +Репозиторий +Приложение +SQL +Безопасность +Дизайн +Интерфейс +Интерфейс +Интеллект +Интерфейс +Данных +но +Приложение +также +Обучение +Облако +Оптимизация +Искусственный +не +Ветка +База +Мобильное +Пароль +Веб +как +но +для +но +Библиотека +от +Слово_256 +Менеджер +JavaScript +Слово_466 +Сортировка +в +с +на +Пакет +Фреймворк +Пакет +Синтаксис +или +Пакет +Слово_455 +Сайт +CSS +Вход +Слово_478 +по +Слово_466 +Дата +от +Клиент +также +не +HTML +как +Менеджер +Репозиторий +Сервер +для +не +Статья +Регистрация +Разработка +Java +от +Слово_483 +Интерфейс +что +SQL +в +для +для +База +от +Ветка +Поиск +не +Слово_452 +как +Версия +Тестирование +Слово_171 +Код +Python +Библиотека +CSS +по +но +но +также +Бэкенд +Нейросеть +Синтаксис +Фреймворк +Сервер +JavaScript +C++ +от +Система +Git +также +Обучение +это +Обучение +Тестирование +CSS +Вход +Функция +или +Клиент +SQL +для +Сайт +База +Слово_178 +от +Слово_455 +Контроль +Java +Игра +в +это +или +Git +Сервер +Система +Новость +Нейросеть +Искусственный +CSS +Анализ +с +Тег +Игра +Java +Обучение +Git +Безопасность +как +Обучение +для +от +Анализ +C++ +на +Разработка +Панель +для +с +это +это +в +Настройка +Система +Мобильное +Алгоритм +SQL +для +Приложение +Функция +Слово_431 +Java +Данные +с +Новость +и +Фильтр +Регистрация +и +но +Интерфейс +Игра +Java +Админ +но +Разработка +по +Система +но +Безопасность +также +Запрос +Полный +Интеллект +это +Искусственный +Git +Запрос +Интеллект +Профиль +SQL +Статья +с +Ошибка +Обучение +или +Нейросеть +Интерфейс +Репозиторий +Данные +или +Фреймворк +Функция +Менеджер +как +как +Git +Git +как +Интеллект +Веб +и +в +Фильтр +Нейросеть +Сайт +Нейросеть +Ошибка +Профиль +Ошибка +Дизайн +Алгоритм +Пакет +Ветка +Бэкенд +Поиск +SQL +Python +Функция +не +Мобильное +Искусственный +как +и +Шифрование +на +Данных +для +от +что +Искусственный +также +Интерфейс +C++ +Ошибка +Интеллект +в +Метка +но +также +Дата +также +Git +как +это +Тестирование +Контроль +Фронтенд +Логин +Нейросеть +от +C++ +HTML +Статья +Фреймворк +Клиент +Синтаксис +Облако +Пакет +это +с +Дизайн +Библиотека +Мобильное +Версия +Регистрация +Игра +Статья +Приложение +Данные +Тег +что +Слово_167 +Синтаксис +База +Настройка +Git +Функция +Менеджер +Репозиторий +Сайт +Функция +Безопасность +как +Веб +Данных +Данные +но +в +Слово_290 +Интеллект +Система +но +Искусственный +C++ +но +Время +JavaScript +HTML +в +Слово_444 +Система +C++ +Python +Безопасность +не +Функция +Git +Данных +Версия +Фреймворк +в +это +Слово_432 +Игра +и +Пакет +Репозиторий +Репозиторий +как +Интерфейс +но +или +Ошибка +Веб +по +Python +Веб +Мобильное +это +с +не +База +для +Разработка +JavaScript +Слово_478 +Приложение +это +Блог +Фильтр +Профиль +и +также +Сайт +Python +Метка +Функция +и +не +Приложение +Пакет +от +не +JavaScript +Менеджер +Тестирование +как +Git +Обучение +с +Код +Категория +Алгоритм +Разработка +Поиск +Панель +это +Слово_331 +и +в +Игра +Алгоритм +Git +но +Искусственный +Слово_185 +Облако +Мобильное +для +Функция +Пакет +Оптимизация +от +Бэкенд +также +Фреймворк +с +Новость +Игра +Сервер +на +Слово_493 +от +Код +База +не +Java +как +на +SQL +также +Игра +Менеджер +Пароль +на +Тег +Контроль +от +SQL +Поиск +Нейросеть +Дата +по +Веб +Функция +Метка +Клиент +Функция +также +Код +Пакет +и +C++ +Анализ +Клиент +CSS +Версия +Функция +HTML +от +Python +Обучение +это +Панель +Нейросеть +Приложение +Мобильное +Контроль +для +Веб +CSS +Мобильное +HTML +Версия +Искусственный +Слово_328 +HTML +как +по +Стек +Git +Пакет +Интерфейс +Стек +Статья +от +Слово_106 +Нейросеть +Анализ +Библиотека +Слово_445 +Стек +Поиск +Функция +Ветка +в +Поиск +это +Контроль +Система +но +Ошибка +Java +в +как +Код +Время +не +Блог +как +Веб +Версия +что +Python +в +Приложение +Настройка +Слово_498 +по +Облако +Категория +Веб +Пакет +Нейросеть +Пакет +это +что +Слово_169 +как +как +JavaScript +в +C++ +на +Git +и +и +HTML +Слово_460 +Java +Слово_270 +Слово_276 +Функция +JavaScript +Репозиторий +на +Искусственный +и +в +Сайт +Мобильное +Версия +также +Настройка +и +Фреймворк +с +Сайт +Слово_230 +или +Интеллект +CSS +также +Искусственный +по +как +Python +не +с +с +это +Ошибка +также +как +Python +Искусственный +Система +Разработка +Ветка +Пакет +или +Фронтенд +Игра +Система +Оптимизация +или +также +CSS +Интеллект +Слово_323 +и +Анализ +с +Админ +Шифрование +для +Мобильное +Сайт +Менеджер +Система +Алгоритм +Слово_280 +Код +Обучение +на +для +не +по +и +Интеллект +Тег +JavaScript +Разработка +Система +или +как +как +Нейросеть +как +или +Фреймворк +но +HTML +Тестирование +Облако +Нейросеть +Новость +в +Тег +Репозиторий +Слово_326 +как +Нейросеть +Данных +Регистрация +как +Веб +Мобильное +Слово_341 +Версия +Тестирование +но +Интерфейс +от +База +Ошибка +по +для +Данные +и +как +Обучение +Блог +по +HTML +Слово_238 +Менеджер +Контроль +Анализ +Время +что +Git +База +Веб +Версия +по +но +Слово_170 +Git +Слово_192 +что +по +Метка +в +Блог +Слово_351 +не +от +Тестирование +Контроль +Функция +Код +с +не +не +Дизайн +HTML +в +Стек +Система +HTML +Слово_379 +на +и +Интеллект +Запрос +это +Тег +Оптимизация +Статья +что +Приложение +Клиент +Игра +Ветка +или +Слово_121 +Анализ +с +на +также +Пользователь +Слово_293 +что +в +Дизайн +Сайт +и +что +SQL +Нейросеть +Контроль +Искусственный +это +Контроль +Слово_285 +Категория +Искусственный +Шифрование +как +Библиотека +это +как +но +Фреймворк +не +и +также +Слово_368 +Безопасность +или +Пакет +Интеллект +HTML +также +в +не +JavaScript +как +по +Приложение +Обучение +не +Менеджер +это +Python +Профиль +Репозиторий +Категория +Контроль +что +Категория +Пользователь +Синтаксис +Python +в +Версия +Нейросеть +и +от +Поиск +HTML +для +Интерфейс +Код +Слово_418 +Дизайн +Слово_441 +HTML +HTML +для +Система +это +Фильтр +Мобильное +Код +Метка +Код +JavaScript +Библиотека +Python +это +Слово_262 +Система +Вход +для +от +Пакет +Искусственный +Git +также +также +Приложение +SQL +База +что +Ошибка +Игра +и +Функция +как +C++ +Ошибка +HTML +Обучение +также +для +Сайт +но +JavaScript +но +Фильтр +но +Метка +или +Нейросеть +Приложение +Клиент +Поиск +Настройка +как +для +Приложение +Java +Слово_328 +Версия +также +Данные +это +Искусственный +Python +не +JavaScript +Версия +Версия +Данных +База +и +по +в +Сайт +Сайт +или +но +в +Клиент +Полный +Шифрование +в +Поиск +SQL +Анализ +Слово_452 +Python +и +Слово_322 +Веб +Дизайн +Приложение +Клиент +Новость +Библиотека +Мобильное +как +Слово_486 +и +Мобильное +Статья +Нейросеть +Тестирование +Функция +Слово_214 +CSS +и +и +как +Java +или +по +не +SQL +Интерфейс +по +Код +Искусственный +Дата +Дата +Библиотека +Дизайн +Git +по +Тестирование +в +Ветка +Сортировка +Админ +Интерфейс +Данные +что +или +CSS +на +Фронтенд +Дизайн +Мобильное +и +Настройка +Слово_160 +Игра +Игра +Git +Запрос +Интерфейс +по +Дата +в +Функция +SQL +Анализ +по +Обучение +на +на +Разработка +для +Данные +с +Приложение +для +Менеджер +Обучение +Веб +Данных +Пакет +Менеджер +Система +Менеджер +Пароль +Мобильное +в +и +также +Время +на +Репозиторий +Игра +HTML +Настройка +Фреймворк +Java +CSS +Менеджер +по +с +Репозиторий +Полный +Система +по +Клиент +как +Искусственный +от +как +Python +Статья +Бэкенд +Искусственный +Слово_449 +и +Функция +и +с +или +Оптимизация +Java +от +CSS +или +Панель +База +Настройка +это +Разработка +Система +от +Java +Тестирование +HTML +База +как +также +HTML +это +как +Интерфейс +C++ +Сервер +Приложение +Версия +CSS +но +Данные +для +Сервер +Вход +Функция +и +и +Веб +также +это +Обучение +Python +Дизайн +Python +Веб +Настройка +также +Мобильное +Интеллект +на +по +Java +или +также +Клиент +Java +Настройка +Дизайн +Разработка +Интерфейс +Синтаксис +Алгоритм +CSS +также +и +SQL +JavaScript +SQL +Python +Вход +Фреймворк +не +для +CSS +Слово_399 +Вход +База +Нейросеть +Игра +Интеллект +SQL +SQL +как +Фреймворк +Контроль +в +с +но +Админ +Вход +Версия +Библиотека +Бэкенд +Репозиторий +что +HTML +Python +в +на +Анализ +Слово_439 +с +Анализ +Репозиторий +не +Сервер +не +что +Версия +CSS +Полный +Мобильное +SQL +Сервер +Пароль +или +но +на +в +Панель +что +Приложение +не +SQL +но +Логин +Веб +Нейросеть +для +для +Сервер +Тестирование +Дизайн +Обучение +в +в +Менеджер +Слово_277 +для +HTML +Логин +Git +не +но +не +Обучение +Фреймворк +или +Вход +от +Интеллект +Новость +Слово_107 +Блог +Пользователь +Тестирование +Репозиторий +на +База +как +что +также +не +по +Дизайн +Git +Настройка +Сайт +Git +Python +от +с +Веб +Облако +не +Клиент +с +Ошибка +Запрос +от +Разработка +и +Библиотека +с +от +Веб +по +Интерфейс +Клиент +Данные +Стек +от +Код +Ошибка +Ошибка +Анализ +Панель +Ветка +Сервер +Настройка +Шифрование +или +Данных +Бэкенд +Пакет +Python +База +Шифрование +Мобильное +в +Блог +что +как +по +Нейросеть +или +и +от +Разработка +Время +Данные +Полный +Веб +Ветка +Данные +но +Библиотека +Регистрация +Версия +Игра +Искусственный +Тестирование +но +Java +Панель +Фреймворк +Алгоритм +Обучение +Ветка +Статья +JavaScript +Репозиторий +Версия +как +для +Веб +Python +HTML +для +Слово_453 +Анализ +Нейросеть +это +для +Слово_369 +Ошибка +в +на +Новость +но +JavaScript +Контроль +Вход +Поиск +это +Тестирование +Искусственный +на +Репозиторий +что +по +Веб +Слово_257 +Панель +Приложение +JavaScript +Интерфейс +Мобильное +База +Система +Интеллект +по +Клиент +Категория +также +Поиск +Слово_231 +на +Java +Анализ +но +Слово_111 +Репозиторий +Пакет +по +Ветка +Разработка +для +Время +как +от +что +не +не +Python +Категория +также +Фреймворк +но +Искусственный +Клиент +Поиск +Код +Версия +не +Тег +не +Приложение +Ветка +Алгоритм +Разработка +Слово_179 +также +Система +Тег +с +Тестирование +это +как +от +Менеджер +Сервер +по +и +или +Функция +C++ +Настройка +Профиль +Слово_338 +но +Слово_378 +Приложение +Слово_338 +Слово_478 +Разработка +Анализ +Искусственный +Пакет +также +Фреймворк +как +по +по +CSS +HTML +Ошибка +с +JavaScript +Интерфейс +Данные +или +Слово_202 +Настройка +и +на +или +Оптимизация +Клиент +Python +но +Ошибка +также +SQL +от +Данные +от +SQL +Дата +Git +Пакет +Дизайн +Полный +Данные +JavaScript +на +или +Контроль +Время +но +Библиотека +Разработка +Блог +как +не +в +по +Игра +JavaScript +и +в +Слово_432 +Слово_313 +Данные +в +не +для +Python +для +что +с +Java +но +Интеллект +C++ +Сервер +не +Облако +Настройка +Интерфейс +Слово_131 +это +Синтаксис +Обучение +как +Тег +Регистрация +по +Дизайн +Облако +с +это +Слово_279 +Анализ +Пользователь +с +Облако +Дизайн +Интерфейс +Дата +с +Бэкенд +Слово_197 +HTML +Статья +Библиотека +не +Код +по +Сайт +CSS +Версия +на +с +или +Данные +как +Мобильное +Python From 50768d0aabce93fdccc44878bfeec55549d0bc53 Mon Sep 17 00:00:00 2001 From: Foma Medvedev Date: Sat, 17 Jan 2026 19:32:19 +0500 Subject: [PATCH 2/3] =?UTF-8?q?=D1=81=D0=BB=D1=83=D1=87=D0=B0=D0=B9=D0=BD?= =?UTF-8?q?=D0=BE=20=D0=BE=D1=82=D0=BF=D1=80=D0=B0=D0=B2=D0=B8=D0=BB=20?= =?UTF-8?q?=D1=81=20=D0=BA=D1=80=D0=B8=D0=B2=D1=8B=D0=BC=D0=B8=20=D1=81?= =?UTF-8?q?=D1=81=D1=8B=D0=BB=D0=BA=D0=B0=D0=BC=D0=B8=20=D0=BD=D0=B0=20?= =?UTF-8?q?=D0=BF=D1=80=D0=BE=D0=B5=D0=BA=D1=82,=20=D0=B8=D1=81=D0=BF?= =?UTF-8?q?=D1=80=D0=B0=D0=B2=D0=B8=D0=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- TagsCloudContainer/TagsCloudContainer.sln | 12 +-- .../TagsCloudContainer.csproj | 3 +- .../ArchimedeanSpiralPointGenerator.cs | 24 +++++ .../CircularCloudLayouter.cs | 82 ++++++++++++++ .../GenerationConstants.cs | 12 +++ .../TagsCloudVisualization/ILayouter.cs | 10 ++ .../TagsCloudVisualization/IPointGenerator.cs | 8 ++ .../TagsCloudVisualization/PointExtensions.cs | 16 +++ .../RectangleExtensions.cs | 9 ++ .../TagsCloudVisualization/Result.cs | 101 ++++++++++++++++++ .../TagsCloudVisualization.csproj | 10 ++ 11 files changed, 280 insertions(+), 7 deletions(-) create mode 100644 TagsCloudContainer/TagsCloudVisualization/ArchimedeanSpiralPointGenerator.cs create mode 100644 TagsCloudContainer/TagsCloudVisualization/CircularCloudLayouter.cs create mode 100644 TagsCloudContainer/TagsCloudVisualization/GenerationConstants.cs create mode 100644 TagsCloudContainer/TagsCloudVisualization/ILayouter.cs create mode 100644 TagsCloudContainer/TagsCloudVisualization/IPointGenerator.cs create mode 100644 TagsCloudContainer/TagsCloudVisualization/PointExtensions.cs create mode 100644 TagsCloudContainer/TagsCloudVisualization/RectangleExtensions.cs create mode 100644 TagsCloudContainer/TagsCloudVisualization/Result.cs create mode 100644 TagsCloudContainer/TagsCloudVisualization/TagsCloudVisualization.csproj diff --git a/TagsCloudContainer/TagsCloudContainer.sln b/TagsCloudContainer/TagsCloudContainer.sln index 9b0bd1a40..dbd2051be 100644 --- a/TagsCloudContainer/TagsCloudContainer.sln +++ b/TagsCloudContainer/TagsCloudContainer.sln @@ -2,10 +2,10 @@ Microsoft Visual Studio Solution File, Format Version 12.00 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TagsCloudContainer", "TagsCloudContainer\TagsCloudContainer.csproj", "{B669CC7B-C5A0-40AE-AF5F-E2A98EBC343A}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TagsCloudVisualization", "..\..\tdd\TagsCloudVisualization\TagsCloudVisualization\TagsCloudVisualization.csproj", "{81220AF5-C90D-46F1-85E7-B6145D71A691}" -EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TagsCloudApp", "TagsCloudApp\TagsCloudApp.csproj", "{39391998-1546-4A9D-B534-A4756C13A9DF}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TagsCloudVisualization", "TagsCloudVisualization\TagsCloudVisualization.csproj", "{305481A1-EF22-489A-8B87-338FDDEE48B5}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -16,13 +16,13 @@ Global {B669CC7B-C5A0-40AE-AF5F-E2A98EBC343A}.Debug|Any CPU.Build.0 = Debug|Any CPU {B669CC7B-C5A0-40AE-AF5F-E2A98EBC343A}.Release|Any CPU.ActiveCfg = Release|Any CPU {B669CC7B-C5A0-40AE-AF5F-E2A98EBC343A}.Release|Any CPU.Build.0 = Release|Any CPU - {81220AF5-C90D-46F1-85E7-B6145D71A691}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {81220AF5-C90D-46F1-85E7-B6145D71A691}.Debug|Any CPU.Build.0 = Debug|Any CPU - {81220AF5-C90D-46F1-85E7-B6145D71A691}.Release|Any CPU.ActiveCfg = Release|Any CPU - {81220AF5-C90D-46F1-85E7-B6145D71A691}.Release|Any CPU.Build.0 = Release|Any CPU {39391998-1546-4A9D-B534-A4756C13A9DF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {39391998-1546-4A9D-B534-A4756C13A9DF}.Debug|Any CPU.Build.0 = Debug|Any CPU {39391998-1546-4A9D-B534-A4756C13A9DF}.Release|Any CPU.ActiveCfg = Release|Any CPU {39391998-1546-4A9D-B534-A4756C13A9DF}.Release|Any CPU.Build.0 = Release|Any CPU + {305481A1-EF22-489A-8B87-338FDDEE48B5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {305481A1-EF22-489A-8B87-338FDDEE48B5}.Debug|Any CPU.Build.0 = Debug|Any CPU + {305481A1-EF22-489A-8B87-338FDDEE48B5}.Release|Any CPU.ActiveCfg = Release|Any CPU + {305481A1-EF22-489A-8B87-338FDDEE48B5}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection EndGlobal diff --git a/TagsCloudContainer/TagsCloudContainer/TagsCloudContainer.csproj b/TagsCloudContainer/TagsCloudContainer/TagsCloudContainer.csproj index 994ec1909..b9369e663 100644 --- a/TagsCloudContainer/TagsCloudContainer/TagsCloudContainer.csproj +++ b/TagsCloudContainer/TagsCloudContainer/TagsCloudContainer.csproj @@ -18,7 +18,8 @@ - + + diff --git a/TagsCloudContainer/TagsCloudVisualization/ArchimedeanSpiralPointGenerator.cs b/TagsCloudContainer/TagsCloudVisualization/ArchimedeanSpiralPointGenerator.cs new file mode 100644 index 000000000..a07579052 --- /dev/null +++ b/TagsCloudContainer/TagsCloudVisualization/ArchimedeanSpiralPointGenerator.cs @@ -0,0 +1,24 @@ +using System.Drawing; + +namespace TagsCloudVisualization; + +internal class ArchimedeanSpiralPointGenerator(Point start, float density) : IPointGenerator +{ + private Point _start = start; + private float _step = 0f; + private const uint MaxNumberOfPoints = UInt32.MaxValue; + private uint numberOfReturnedPoints = 0; + + public IEnumerable GetNextPoint() + { + yield return _start; + while (numberOfReturnedPoints < MaxNumberOfPoints) + { + var newX = _start.X + density * _step * (float)Math.Cos(_step); + var newY = _start.Y + density * _step * (float)Math.Sin(_step); + yield return Point.Round(new PointF(newX, newY)); + _step += 0.01f; + ++numberOfReturnedPoints; + } + } +} \ No newline at end of file diff --git a/TagsCloudContainer/TagsCloudVisualization/CircularCloudLayouter.cs b/TagsCloudContainer/TagsCloudVisualization/CircularCloudLayouter.cs new file mode 100644 index 000000000..4228bca5a --- /dev/null +++ b/TagsCloudContainer/TagsCloudVisualization/CircularCloudLayouter.cs @@ -0,0 +1,82 @@ +using System.Drawing; +using System.Runtime.CompilerServices; +using ErrorHandling; + +[assembly: InternalsVisibleTo("TagsCloudVisualizationTests")] +namespace TagsCloudVisualization; + +public class CircularCloudLayouter : ILayouter +{ + private readonly List _prevRectangles; + private readonly IPointGenerator _pointGenerator; + private readonly Rectangle _field; + private const int Density = 1; + private Point _center; + + public CircularCloudLayouter(Point center, Size fieldSize) + { + _pointGenerator = new ArchimedeanSpiralPointGenerator(center, Density); + _prevRectangles = new List(); + this._center = center; + this._field = new Rectangle(center.X - fieldSize.Width / 2, + center.Y - fieldSize.Height / 2, + fieldSize.Width, + fieldSize.Height); + } + + public IEnumerable GetLayout() + { + foreach (var rectangle in _prevRectangles) + yield return rectangle; + } + + public Result PutNextRectangle(Size rectangleSize) + { + foreach (var nextRectangleCenter in _pointGenerator.GetNextPoint()) + { + var nextRectanglePos = nextRectangleCenter - rectangleSize / 2; + if (CheckNextRectIntersection(nextRectanglePos, rectangleSize, out var nextRect)) + continue; + var pressedNextRect = new Rectangle(PressRectangleToCenter(nextRect), rectangleSize); + if (CheckIsRectOnField(pressedNextRect)) + { + _prevRectangles.Add(pressedNextRect); + return Result.Ok(pressedNextRect); + } + return Result.Fail("Слишком маленький целевой размер изображения, облако не помещается!"); + } + return Result.Fail("Слишком маленький целевой размер изображения, облако не помещается!"); + } + + internal Point PressRectangleToCenter(Rectangle rectangle) + { + var rectPos = rectangle.Location; + while (true) + { + var rectCenter = new Point( + rectPos.X + rectangle.Width / 2, + rectPos.Y + rectangle.Height / 2); + var direction = _center.Subtract(rectCenter); + if (direction == Point.Empty) + return rectPos; + var nextPos = rectPos.Add(direction); + if (CheckNextRectIntersection(nextPos, rectangle.Size, out _)) + return rectPos; + rectPos = nextPos; + } + } + + private bool CheckNextRectIntersection(Point nextPos, Size size, out Rectangle nextRect) + { + var possibleNextRect = new Rectangle(nextPos, size); + if (_prevRectangles.Any(x => x.IntersectsWith(possibleNextRect))) + { + nextRect = Rectangle.Empty; + return true; + } + nextRect = possibleNextRect; + return false; + } + + private bool CheckIsRectOnField(Rectangle rect) => _field.Contains(rect); +} \ No newline at end of file diff --git a/TagsCloudContainer/TagsCloudVisualization/GenerationConstants.cs b/TagsCloudContainer/TagsCloudVisualization/GenerationConstants.cs new file mode 100644 index 000000000..a357eb724 --- /dev/null +++ b/TagsCloudContainer/TagsCloudVisualization/GenerationConstants.cs @@ -0,0 +1,12 @@ +using System.Drawing; + +namespace TagsCloudVisualization; + +public static class GenerationConstants +{ + public const int CenterX = 400; + public const int CenterY = 400; + public const int DefaultRectWidth = 10; + public const int DefaultRectHeight = 20; + public const int DefaultRectNumber = 100; +} \ No newline at end of file diff --git a/TagsCloudContainer/TagsCloudVisualization/ILayouter.cs b/TagsCloudContainer/TagsCloudVisualization/ILayouter.cs new file mode 100644 index 000000000..d935e7319 --- /dev/null +++ b/TagsCloudContainer/TagsCloudVisualization/ILayouter.cs @@ -0,0 +1,10 @@ +using System.Drawing; +using ErrorHandling; + +namespace TagsCloudVisualization; + +public interface ILayouter +{ + public IEnumerable GetLayout(); + public Result PutNextRectangle(Size rectangleSize); +} \ No newline at end of file diff --git a/TagsCloudContainer/TagsCloudVisualization/IPointGenerator.cs b/TagsCloudContainer/TagsCloudVisualization/IPointGenerator.cs new file mode 100644 index 000000000..9a524785c --- /dev/null +++ b/TagsCloudContainer/TagsCloudVisualization/IPointGenerator.cs @@ -0,0 +1,8 @@ +using System.Drawing; + +namespace TagsCloudVisualization; + +internal interface IPointGenerator +{ + public IEnumerable GetNextPoint(); +} \ No newline at end of file diff --git a/TagsCloudContainer/TagsCloudVisualization/PointExtensions.cs b/TagsCloudContainer/TagsCloudVisualization/PointExtensions.cs new file mode 100644 index 000000000..6bc692e48 --- /dev/null +++ b/TagsCloudContainer/TagsCloudVisualization/PointExtensions.cs @@ -0,0 +1,16 @@ +using System.Drawing; + +namespace TagsCloudVisualization; + +public static class PointExtensions +{ + public static Point Subtract(this Point point, Point other) + { + return new Point(point.X - other.X, point.Y - other.Y); + } + + public static Point Add(this Point point, Point other) + { + return new Point(point.X + other.X, point.Y + other.Y); + } +} \ No newline at end of file diff --git a/TagsCloudContainer/TagsCloudVisualization/RectangleExtensions.cs b/TagsCloudContainer/TagsCloudVisualization/RectangleExtensions.cs new file mode 100644 index 000000000..aa25aea9f --- /dev/null +++ b/TagsCloudContainer/TagsCloudVisualization/RectangleExtensions.cs @@ -0,0 +1,9 @@ +using System.Drawing; + +namespace TagsCloudVisualization; + +public static class RectangleExtensions +{ + public static Point GetCenter(this Rectangle rectangle) => + rectangle.Location + rectangle.Size / 2; +} \ No newline at end of file diff --git a/TagsCloudContainer/TagsCloudVisualization/Result.cs b/TagsCloudContainer/TagsCloudVisualization/Result.cs new file mode 100644 index 000000000..ea8dcb099 --- /dev/null +++ b/TagsCloudContainer/TagsCloudVisualization/Result.cs @@ -0,0 +1,101 @@ +using System; + +namespace ErrorHandling; + +public class None +{ + private None() + { + } +} + +public struct Result +{ + public Result(string error, T value = default(T)) + { + Error = error; + Value = value; + } + + public string Error { get; } + internal T Value { get; } + + public T GetValueOrThrow() + { + if (IsSuccess) return Value; + throw new InvalidOperationException($"No value. Only Error {Error}"); + } + + public bool IsSuccess => Error == null; +} + +public static class Result +{ + public static Result AsResult(this T value) + { + return Ok(value); + } + + public static Result Ok(T value) + { + return new Result(null, value); + } + + public static Result Fail(string e) + { + return new Result(e); + } + + public static Result Of(Func f, string error = null) + { + try + { + return Ok(f()); + } + catch (Exception e) + { + return Fail(error ?? e.Message); + } + } + + public static Result Then( + this Result input, + Func continuation) + { + return Then(input, (inp) => Of(() => continuation(inp))); + } + + public static Result Then( + this Result input, + Func> continuation) + { + if (input.IsSuccess) + return continuation(input.Value); + return Fail(input.Error); + } + + public static Result OnFail( + this Result input, + Action handleError) + { + if (!input.IsSuccess) + handleError(input.Error); + return input; + } + + public static Result ReplaceError( + this Result input, + Func continuation) + { + if (!input.IsSuccess) + return Fail(continuation(input.Value)); + return input; + } + + public static Result RefineError( + this Result input, + string refine) + { + return input.ReplaceError((x) => $"{refine}. {input.Error}"); + } +} \ No newline at end of file diff --git a/TagsCloudContainer/TagsCloudVisualization/TagsCloudVisualization.csproj b/TagsCloudContainer/TagsCloudVisualization/TagsCloudVisualization.csproj new file mode 100644 index 000000000..135d1a5a0 --- /dev/null +++ b/TagsCloudContainer/TagsCloudVisualization/TagsCloudVisualization.csproj @@ -0,0 +1,10 @@ + + + + Library + net8.0 + enable + enable + + + From 630634087846e8268adcb33b8b92890c0f5518e4 Mon Sep 17 00:00:00 2001 From: Foma Medvedev Date: Sun, 18 Jan 2026 21:13:19 +0500 Subject: [PATCH 3/3] =?UTF-8?q?=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=B8?= =?UTF-8?q?=D0=BB=20=D0=B7=D0=B0=D0=BC=D0=B5=D1=87=D0=B0=D0=BD=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../TagsCloudContainer/BoringWordsProcessor.cs | 2 +- .../TagsCloudContainer/CalculateNextRectangleSize.cs | 10 ++-------- .../TagsCloudContainer/ContainerComposer.cs | 2 +- .../TagsCloudContainer/IBoringWordsProcessor.cs | 6 ++++++ .../Tests/BoringWordsProcessorTests.cs | 6 +++--- .../Tests/VisualizationComposerTests.cs | 2 +- 6 files changed, 14 insertions(+), 14 deletions(-) create mode 100644 TagsCloudContainer/TagsCloudContainer/IBoringWordsProcessor.cs diff --git a/TagsCloudContainer/TagsCloudContainer/BoringWordsProcessor.cs b/TagsCloudContainer/TagsCloudContainer/BoringWordsProcessor.cs index 4e64bb4d2..be0ee207a 100644 --- a/TagsCloudContainer/TagsCloudContainer/BoringWordsProcessor.cs +++ b/TagsCloudContainer/TagsCloudContainer/BoringWordsProcessor.cs @@ -2,7 +2,7 @@ namespace TagsCloudContainer; -public class BoringWordsProcessor +public class BoringWordsProcessor : IBoringWordsProcessor { private const float BoringWordQuantityThreshold = 0.35f; private readonly List _banWords; diff --git a/TagsCloudContainer/TagsCloudContainer/CalculateNextRectangleSize.cs b/TagsCloudContainer/TagsCloudContainer/CalculateNextRectangleSize.cs index fae5d69a1..a70caf265 100644 --- a/TagsCloudContainer/TagsCloudContainer/CalculateNextRectangleSize.cs +++ b/TagsCloudContainer/TagsCloudContainer/CalculateNextRectangleSize.cs @@ -34,14 +34,8 @@ internal Size CalculateNextRectangleSize(KeyValuePair wordInfo, private Size ClampSize(Size size) { - if (size.Width < _minSize.Width) - size.Width = _minSize.Width; - else if (size.Width > _maxSize.Width) - size.Width = _maxSize.Width; - if (size.Height < _minSize.Height) - size.Height = _minSize.Height; - else if (size.Height > _maxSize.Height) - size.Height = _maxSize.Height; + size.Width = Math.Clamp(size.Width, _minSize.Width, _maxSize.Width); + size.Height = Math.Clamp(size.Height, _minSize.Height, _maxSize.Height); return Size.Round(size); } diff --git a/TagsCloudContainer/TagsCloudContainer/ContainerComposer.cs b/TagsCloudContainer/TagsCloudContainer/ContainerComposer.cs index ba18a0e23..c7430e2e1 100644 --- a/TagsCloudContainer/TagsCloudContainer/ContainerComposer.cs +++ b/TagsCloudContainer/TagsCloudContainer/ContainerComposer.cs @@ -12,7 +12,7 @@ public static IContainer Compose(Point center, Size imageSize, Graphics graphics builder.RegisterInstance(new CircularCloudLayouter(center, imageSize)).As(); builder.RegisterInstance(new TxtReader()).As(); builder.RegisterInstance(new RectangleSizeCalculator(imageSize)); - builder.RegisterInstance(new BoringWordsProcessor(banWords)); + builder.RegisterInstance(new BoringWordsProcessor(banWords)).As(); builder.RegisterType(); builder.RegisterInstance(new WordMeasurer(graphics, font)).As(); return builder.Build(); diff --git a/TagsCloudContainer/TagsCloudContainer/IBoringWordsProcessor.cs b/TagsCloudContainer/TagsCloudContainer/IBoringWordsProcessor.cs new file mode 100644 index 000000000..a553f5caa --- /dev/null +++ b/TagsCloudContainer/TagsCloudContainer/IBoringWordsProcessor.cs @@ -0,0 +1,6 @@ +namespace TagsCloudContainer; + +public interface IBoringWordsProcessor +{ + public Dictionary WordsToLowerAndRemoveBoringWords(List words); +} \ No newline at end of file diff --git a/TagsCloudContainer/TagsCloudContainer/Tests/BoringWordsProcessorTests.cs b/TagsCloudContainer/TagsCloudContainer/Tests/BoringWordsProcessorTests.cs index 9ff98642a..7b5400a9d 100644 --- a/TagsCloudContainer/TagsCloudContainer/Tests/BoringWordsProcessorTests.cs +++ b/TagsCloudContainer/TagsCloudContainer/Tests/BoringWordsProcessorTests.cs @@ -39,7 +39,7 @@ public void WordsToLowerAndRemoveBoringWords_HandleFile_Should_IgnoreBanWords() .ReadFile(path); var resultData = _container - .Resolve() + .Resolve() .WordsToLowerAndRemoveBoringWords(inputData).Keys; resultData.Should().BeEquivalentTo(expectedData); @@ -57,7 +57,7 @@ public void WordsToLowerAndRemoveBoringWords_HandleFile_Should_MakeWordsToLower( .ReadFile(path); var resultData = _container - .Resolve() + .Resolve() .WordsToLowerAndRemoveBoringWords(inputData).Keys; resultData.Should().BeEquivalentTo(expectedData); @@ -75,7 +75,7 @@ public void WordsToLowerAndRemoveBoringWords_HandleFile_Should_IgnoreBoringWords .ReadFile(path); var resultData = _container - .Resolve() + .Resolve() .WordsToLowerAndRemoveBoringWords(inputData).Keys; resultData.Should().BeEquivalentTo(expectedData); diff --git a/TagsCloudContainer/TagsCloudContainer/Tests/VisualizationComposerTests.cs b/TagsCloudContainer/TagsCloudContainer/Tests/VisualizationComposerTests.cs index b7deef53c..f10983ad8 100644 --- a/TagsCloudContainer/TagsCloudContainer/Tests/VisualizationComposerTests.cs +++ b/TagsCloudContainer/TagsCloudContainer/Tests/VisualizationComposerTests.cs @@ -48,7 +48,7 @@ private TextRectangleContainer[] PrepareComposerExpectedData(string path) .ReadFile(path); var data = _container - .Resolve() + .Resolve() .WordsToLowerAndRemoveBoringWords(inputData); var containers = new TextRectangleContainer[data.Count];