среда, 10 апреля 2024 г.

Windows, Version, support, 2024 Server, ChartDirector, NETSDK1135,

Windows, Version, support, 2024 Server, ChartDirector

NETSDK1135

https://learn.microsoft.com/en-us/dotnet/core/tools/sdk-errors/netsdk1135?f1url=%3FappId%3DDev17IDEF1%26l%3DEN-US%26k%3Dk(NETSDK1135)%26rd%3Dtrue

Severity Code Description Project File Line Suppression State Details

Error NETSDK1135 SupportedOSPlatformVersion 10.0.22621.0 cannot be higher than TargetPlatformVersion 10.0.22000.0. WpfChartDir01 C:\Program Files\dotnet\sdk\8.0.202\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.TargetFrameworkInference.targets 215

net 8 with Windows
7
8
10.0.17763
10.0.18362
10.0.19041
10.0.20348
10.0.22000


C++, Uwp

С++, Uwp

// UWP (Universal Windows Platform) - это платформа для разработки приложений, которые могут работать на различных устройствах Windows 10, включая ПК, мобильные устройства, Xbox и HoloLens.

// UWP предоставляет функциональность для работы с файловой системой, сетью, устройствами ввода, и другими возможностями Windows.

// Языки программирования: C++, C#, Visual Basic, JavaScript.

// В UWP C++ используются следующие библиотеки:

// - Windows Runtime C++ Template Library (WRL)

// - C++/WinRT

// - C++/CX

// WRL (Windows Runtime C++ Template Library) - это библиотека шаблонов C++, которая предоставляет функции для работы с Windows Runtime (WinRT) в C++.

// Она позволяет использовать компоненты Windows Runtime в приложениях на C++, обеспечивая более низкоуровневый доступ к API Windows.

// WRL (Windows Runtime C++ Template Library) используется для работы с Windows Runtime (WinRT) в C++, предоставляя низкоуровневый доступ к API Windows.

// C++ WinRT занимает нишу разработки приложений для Windows, используя современные C++ и компоненты Windows Runtime (WinRT).

// Он предназначен для создания приложений с высокой производительностью и современным интерфейсом, используя C++.

// WinRT кроссплатформенный, поддерживая разработку приложений для Windows, Android, и iOS.

// WinRT не предоставляет встроенных средств для создания сервисов и конечных точек в стиле .NET Core.

// Однако, можно использовать WinRT для разработки клиентских приложений, которые взаимодействуют с сервисами и конечными точками,

// например, через HTTP-запросы к REST API.

// Да, в WinRT есть HttpClient для выполнения HTTP-запросов.

// HttpClient в WinRT поддерживает WebSockets, но не через HTTP/2.0.

// WebSockets в WinRT используют протокол WebSocket, который работает поверх TCP.

// Да, .NET Core HttpClient поддерживает WebSockets и может использовать HTTP/2.0.

// Да, .NET Core HttpClient поддерживает WebSockets и может использовать HTTP/2.0.

bool isWebSocket = client.DefaultRequestHeaders.Connection.Contains("Upgrade");

// Да, C++ проект "Desktop Windows App" представляет собой классическое приложение Windows, написанное на C++.

// Нет, "Desktop Windows App" в C++ не обязательно использует MFC (Microsoft Foundation Classes).

// Это может быть классическое приложение Windows, использующее WinAPI или другие технологии.

// UWP (Universal Windows Platform) - это платформа для разработки приложений, которые могут работать на различных устройствах Windows 10, включая ПК, мобильные устройства, Xbox и HoloLens.

// UWP предоставляет функциональность для работы с файловой системой, сетью, устройствами ввода, и другими возможностями Windows.

// Языки программирования: C++, C#, Visual Basic, JavaScript.

// В UWP C++ используются следующие библиотеки:

// - Windows Runtime C++ Template Library (WRL)

// - C++/WinRT

// - C++/CX

// WRL (Windows Runtime C++ Template Library) - это библиотека шаблонов C++, которая предоставляет функции для работы с Windows Runtime (WinRT) в C++.

// Она позволяет использовать компоненты Windows Runtime в приложениях на C++, обеспечивая более низкоуровневый доступ к API Windows.

// WRL (Windows Runtime C++ Template Library) используется для работы с Windows Runtime (WinRT) в C++, предоставляя низкоуровневый доступ к API Windows.

// Написание TCP/IP сервера на UWP C++ может быть сложным, поскольку UWP ограничивает доступ к сетевым функциям для повышения безопасности и изоляции приложений.

// Однако, с использованием StreamSocketListener и StreamSocket для асинхронного ввода-вывода данных, это возможно.

// Да, TCP/IP клиент в UWP реализован через классы StreamSocket и StreamSocketListener для асинхронного ввода-вывода данных.

// В UWP есть поддержка TCP/IP клиента, но прямой поддержки TCP/IP сервера нет.

// Для реализации сервера в UWP можно использовать StreamSocketListener для прослушивания входящих соединений.

// В UWP C++ напрямую использовать Boost.Asio для создания TCP/IP сервера невозможно из-за ограничений безопасности и изоляции приложений.

// Однако, можно использовать StreamSocketListener для асинхронного ввода-вывода данных, что позволяет реализовать аналогичную функциональность.

// Boost.Asio можно использовать в любых приложениях C++ Desktop Windows App, которые не подвержены ограничениям безопасности и изоляции UWP.

// Это включает в себя классические приложения Windows, написанные на C++, которые не требуют публикации в Microsoft Store.

// Для написания сервера TCP с использованием Boost.Asio в C++ Desktop Windows App в Visual Studio, можно использовать следующие типы проектов:

// - "Windows Desktop Wizard" для создания классического приложения Windows.

// - "Windows Console Application" для создания консольного приложения, которое также может быть использовано для серверных приложений.

// - "Windows Forms Application" для создания приложения с графическим интерфейсом пользователя, если требуется визуальное представление данных.

// - "Windows Presentation Foundation (WPF) Application" для создания более сложных графических интерфейсов пользователя.

// Важно отметить, что для использования Boost.Asio в проектах, не предназначенных для UWP, необходимо убедиться, что в проекте отключены ограничения безопасности и изоляции, которые применяются к UWP приложениям.

// "Windows Forms Application" и "Windows Presentation Foundation (WPF) Application" в Visual Studio по умолчанию создаются для C# и VB.NET.

// Для создания аналогичных проектов на C++ с использованием Windows Forms или WPF, необходимо указать C++ в качестве языка программирования при создании проекта.

// В Visual Studio, при создании нового проекта, выберите "Windows Desktop Wizard" и укажите C++ в качестве языка программирования, чтобы создать проект на C++ с поддержкой Windows Forms или WPF.

// Использование Windows Presentation Foundation (WPF) с C++ в Visual Studio возможно, но требует дополнительных шагов для настройки проекта.

// Visual Studio поддерживает создание WPF приложений на C++, но для этого необходимо включить поддержку CLR (Common Language Runtime) и использовать C++/CLI.

// C++/CLI позволяет использовать .NET Framework и его функции, включая Reflection, в C++ приложениях.

// Пример создания WPF приложения на C++:

// 1. Создайте новый проект "CLR Empty Project".

// 2. Добавьте ссылку на сборку Windows Presentation Foundation.

// 3. Используйте C++/CLI для написания кода, который использует WPF.

// Да, это возможно. Вы можете написать сервер на C++ в виде Windows Service, который будет обрабатывать сетевые соединения, и использовать C# для создания пользовательского интерфейса с помощью Windows Forms или WPF.

// Windows Service позволяет запускать приложение в фоновом режиме, не требуя взаимодействия с пользователем.

// Для связи между сервером на C++ и клиентом на C# можно использовать различные методы, включая TCP/IP соединения, файлы, или даже Windows Communication Foundation (WCF) для более сложных сценариев.

// Да, это нормальный и распространенный подход. Создание сервера на C++ с минимальным интерфейсом в виде UWP приложения (для управления запуском и остановкой сервиса) и основного интерфейса на C# позволяет максимально использовать преимущества каждой технологии.

// UWP приложение может быть использовано для управления сервисом, в то время как C# приложение обеспечивает более богатый и удобный пользовательский интерфейс.

// Этот подход позволяет разделить ответственность между сервером и клиентом, упрощая разработку и поддержку приложения.

// Для UI TCP сервера на C++ можно использовать следующие варианты:

// 1. Qt - кроссплатформенная библиотека для создания графических интерфейсов, поддерживающая C++.

// 2. wxWidgets - еще одна кроссплатформенная библиотека для создания GUI приложений на C++.

// 3. MFC (Microsoft Foundation Classes) - для создания нативных Windows приложений на C++.

// 4. WinForms или WPF с использованием C++/CLI для интеграции с .NET.

// Примеры использования:

// - Qt с C++ для создания сервера и клиента.

// - wxWidgets для создания GUI для сервера.

// Для Node.js и React:

// - Node.js может быть использован для создания сервера, а React для клиентского интерфейса.

// - Примеры: сервер на Node.js с использованием Express.js для обработки HTTP запросов, и клиент на React для отображения данных.

// Да, Visual Studio поддерживает разработку приложений на C++ с использованием Qt.

// Для работы с Qt в Visual Studio необходимо установить Qt Visual Studio Tools, которые предоставляют интеграцию Qt в среду разработки.

// Это позволяет создавать, отлаживать и развертывать приложения на Qt прямо из Visual Studio.

Тогода QT, наверное лучше, чем любое UWP c++

1. Скачайте и установите Qt Visual Studio Tools из Visual Studio Marketplace.

2. Запустите Visual Studio 2022.

3. Перейдите в "Инструменты" -> "Параметры" -> "Расширения" -> "Qt VS Tools".

4. В разделе "Qt Versions" нажмите "Добавить" и укажите путь к установленному Qt.

5. После добавления Qt версии, перейдите в "Инструменты" -> "Параметры" -> "Проекты и решения" -> "VC++ каталоги".

6. Добавьте пути к заголовочным файлам и библиотекам Qt в соответствующие поля.

7. Перейдите в "Инструменты" -> "Параметры" -> "Проекты и решения" -> "Сборка и запуск".

8. В разделе "Общие" убедитесь, что в поле "Параметры запуска" указан путь к исполняемому файлу Qt.

9. Создайте новый проект Qt в Visual Studio 2022, выбрав "Qt Application" в качестве типа проекта.

10. Настройте проект, добавив необходимые файлы и ресурсы.

11. Скомпилируйте и запустите проект, чтобы убедиться в корректности установки и настройки.

среда, 3 апреля 2024 г.

Restore, Backup, DataBase, Script, Sql

RESTORE DATABASE DbTrade2

FROM DISK = 'C:\path\to\your\backup.bak'

WITH REPLACE;


Шаг 1: Проверка прав доступа

Первым делом убедитесь, что у вашего пользователя есть необходимые права для записи в каталог данных. В Windows, каталог данных SQL Server обычно находится в C:\Program Files\Microsoft SQL Server\MSSQL<версия>.<имя_экземпляра>\MSSQL\DATA. Вам нужно иметь права на запись в этот каталог.

  1. Проверка прав доступа:
    • Откройте Проводник Windows и перейдите в каталог данных.
    • Щелкните правой кнопкой мыши на папке и выберите "Свойства".
    • Перейдите на вкладку "Безопасность" и проверьте, есть ли у вашего пользователя права на запись. Если нет, вам нужно будет изменить права доступа или использовать учетную запись с соответствующими правами.

Шаг 2: Использование командной строки для восстановления

Если у вас нет прав на запись в каталог данных или вы предпочитаете использовать командную строку, вы можете восстановить базу данных с помощью команды sqlcmd или osql. Это может быть полезно, если у вас есть права на запись в другой каталог.

  1. Открытие командной строки:
    • Нажмите Win + R, введите cmd и нажмите Enter.
  1. Восстановление базы данных:
    • Используйте следующую команду для восстановления базы данных из файла .bak в другой каталог, где у вас есть права на запись. Замените <путь_к_файлу_bak>, <имя_сервера>, <имя_базы_данных> и <путь_к_новому_каталогу> на соответствующие значения.
sqlcmd -S <имя_сервера> -Q "RESTORE DATABASE <имя_базы_данных> FROM DISK = '<путь_к_файлу_bak>' WITH MOVE '<имя_логического_имени_файла>' TO '<путь_к_новому_каталогу>\<имя_файла_базы_данных>.mdf', MOVE '<имя_логического_имени_файла_логики>' TO '<путь_к_новому_каталогу>\<имя_файла_базы_данных>.ldf'"
  • <имя_логического_имени_файла> и <имя_логического_имени_файла_логики> можно найти, выполнив следующий запрос в SSMS:
RESTORE FILELISTONLY FROM DISK = '<путь_к_файлу_bak>'

Шаг 3: Проверка настроек SQL Server

Если вы все еще сталкиваетесь с проблемами, проверьте настройки SQL Server:

  1. Проверка настроек SQL Server:
    • Откройте SQL Server Configuration Manager.
    • Перейдите в "SQL Server Services" и убедитесь, что служба SQL Server запущена.
    • Перейдите в "SQL Server Network Configuration" и проверьте, что протокол TCP/IP включен.

Заключение

Если после выполнения этих шагов проблема не решена, возможно, потребуется дополнительная диагностика. Убедитесь, что у вас есть права администратора на сервере или что вы используете учетную запись с соответствующими правами доступа.


Sockets, 2011, 2011_3, Intel, HardWare

https://dzen.ru/a/X7BpyvJGbhgQlkH8

Главное отличие сокетов заключается в чипсете lga2011 использует чипсет x79 на архитектуре Sandy Bridge-E и Ivy Bridge-E, а lga2011-3 чипсет x99 на архитектуре Haswell-E. А также эти сокеты работают на разной памяти сокет lga2011 работает только на ddr3, а lga 2011-3 работает и на ddr3 и на ddr4(в основном используется память ddr4). Так что при всей схожести процессор от lga 2011 не встанет в сокет lga2011-3 и наоборот.

2680 vs 2690

https://technical.city/ru/cpu/Xeon-E5-2690-v4-protiv-Xeon-E5-2680-v4

https://technical.city/ru/cpu/Xeon-E5-2690-v4-protiv-Xeon-E5-2690-v3

https://technical.city/ru/cpu/Xeon-E5-2690-v3-protiv-Xeon-E5-2680-v4

https://technical.city/ru/cpu/Xeon-E5-2680-v4-protiv-Xeon-E3-1270-v3

понедельник, 1 апреля 2024 г.

TermoPasta, Processor


https://hyperpc.ru/blog/upgrade-pc/thermal-interface

  • Arctic MX-4 – 84°C
  • ArcticSilver 5 – 85°C
  • CoolerMaster MasterGel Maker – 82.7°C
  • Cryorig CP5 – 85°C
  • DeepCool Z9 – 85.3°C
  • EK Water Blocks EK-Tim – 83.8°C
  • Innovation Cooling IC Diamond 24 Carat – 82.7°C
  • KingPin Cooling KPx – 80°C
  • Noctua NT-H1 – 84.8°C
  • Noctua NT-H2 – 80.8°C
  • ProlimaTech PK-3 – 82°C
  • Thermal Grizzly Kryonaut – 84.5°C
  • Thermal Grizzly Hydronaut – 85.8°C
  • Thermal Grizzly Carbonaut – 87°C
  • ProlimaTech PK-3 – 82°C
  • КПТ-8 – 92.2°C
Нанесите новую термопасту на кристалл и размажьте ее любым подручным инструментом, можно сделать это пальцем, обвернутым в пищевую пленку или использовать пластиковую карту для распределения. Пасту наносите не больше спичечной головки. Помните, что она нужна только для сглаживания неровностей, а не в качестве прокладки.














воскресенье, 17 марта 2024 г.

Migration, NetFramework, NetCore

https://learn.microsoft.com/en-us/dotnet/core/porting/

https://www.reddit.com/r/dotnet/comments/15vp6zh/migrating_from_net_framework_48_to_net_core_in/?rdt=47453

https://www.evoketechnologies.com/blog/guidelines-for-migrating-from-net-framework-to-net-core/

https://stackoverflow.com/questions/65017865/migrate-net-framework-4-8-to-net-5

https://positiwise.com/blog/how-to-migrate-from-net-framework-to-net-core-a-detailed-guide

https://steven-giesel.com/blogPost/f531dded-44af-4341-871c-d54875877900

https://eluminoustechnologies.com/blog/convert-net-framework-to-net-core/

https://modlogix.com/blog/5-things-you-should-know-before-moving-an-app-from-net-framework-to-net-core/

Migrating a large application from .NET Framework 4.8 to .NET Core involves careful planning and execution. Given the complexity and scale of your application, directly migrating to .NET Core 8.0 might be the most efficient approach, especially considering the future-proofing aspect. Here's a structured approach based on the provided sources:

1. Assessment & Planning

    Evaluate the current application: Understand the application's architecture, dependencies, and third-party libraries. This step is crucial for identifying potential challenges during migration 45.

    Choose the target .NET Core version: As of the latest information, .NET Core has been succeeded by .NET 5 and later versions, including .NET 6 and .NET 7. .NET 8.0 is not yet released as of the last update. Therefore, you should choose the latest stable version of .NET Core or .NET 5/6/7, depending on your specific needs and compatibility requirements 45.

2. Setup the Development Environment

    Install the .NET Core SDK: Download and install the SDK for the target .NET Core version. This is essential for developing and testing your application on .NET Core 45.

3. Migrate Code & Dependencies

    Create new .NET Core projects: Start by creating new .NET Core projects for each of your solutions. This step involves transferring the code from your .NET Framework projects to the new .NET Core projects 45.

    Migrate NuGet Packages: Ensure that all NuGet packages used in your .NET Framework projects are compatible with .NET Core. You may need to find alternatives for packages that are not supported 45.

4. Migrate Your Data

    Data Access Layers: Review and update your data access layers to ensure compatibility with .NET Core. This might involve updating database connection strings, ORM configurations, and data access code 45.

5. Migrate .csproj File

    Update .csproj files: Migrate your .csproj files to the new format used by .NET Core. This step is crucial for ensuring that your projects are correctly configured for .NET Core 45.

6. Configure Your App for the New Platform

    Runtime Options: Configure your application to target the new .NET Core version by updating the runtimeOptions in your configuration file 5.

7. Testing & Deployment

    Testing: Thoroughly test your application to identify and fix any issues that arise during the migration process. This includes unit tests, integration tests, and manual testing 45.

    Deployment: Update your deployment scripts and processes to work with .NET Core. This might involve setting up continuous integration/continuous deployment (CI/CD) pipelines for .NET Core applications 45.

8. Monitoring & Maintenance

    Monitoring: After deployment, monitor your application for any performance or stability issues. This step is crucial for ensuring that the migration was successful and that your application is running smoothly on .NET Core 45.

Conclusion

Directly migrating to the latest stable version of .NET Core (or .NET 5/6/7) is recommended for a large application like yours. This approach not only ensures compatibility with future .NET Core versions but also allows you to leverage the latest features and performance improvements offered by .NET Core. Remember, the migration process requires careful planning, thorough testing, and possibly significant code refactoring. Consider engaging with a team of experienced .NET developers or consulting with a professional service to ensure a smooth transition.

Миграция большого приложения с .NET Framework 4.8 на .NET Core требует тщательного планирования и выполнения. Учитывая сложность и масштаб вашего приложения, прямой переход на .NET Core 8.0 может оказаться наиболее эффективным подходом, особенно с учетом перспективности. Вот структурированный подход, основанный на предоставленных источниках:

1. Оценка и планирование

     Оцените текущее приложение: изучите архитектуру приложения, зависимости и сторонние библиотеки. Этот шаг имеет решающее значение для выявления потенциальных проблем во время миграции 45.

     Выберите целевую версию .NET Core. Согласно последней информации, на смену .NET Core пришли .NET 5 и более поздние версии, включая .NET 6 и .NET 7. На момент последнего обновления .NET 8.0 еще не выпущена. Поэтому вам следует выбрать последнюю стабильную версию .NET Core или .NET 5/6/7, в зависимости от ваших конкретных потребностей и требований совместимости 45.

2. Настройка среды разработки

     Установите пакет SDK для .NET Core. Загрузите и установите SDK для целевой версии .NET Core. Это важно для разработки и тестирования вашего приложения на .NET Core 45.

3. Перенос кода и зависимостей

     Создайте новые проекты .NET Core. Начните с создания новых проектов .NET Core для каждого из ваших решений. Этот шаг включает перенос кода из ваших проектов .NET Framework в новые проекты .NET Core 45.

     Миграция пакетов NuGet. Убедитесь, что все пакеты NuGet, используемые в ваших проектах .NET Framework, совместимы с .NET Core. Возможно, вам придется найти альтернативы пакетам, которые не поддерживаются 45.

4. Перенесите ваши данные

     Уровни доступа к данным: просмотрите и обновите уровни доступа к данным, чтобы обеспечить совместимость с .NET Core. Это может включать обновление строк подключения к базе данных, конфигураций ORM и кода доступа к данным 45.

5. Перенос файла .csproj

     Обновите файлы .csproj: перенесите файлы .csproj в новый формат, используемый .NET Core. Этот шаг имеет решающее значение для обеспечения правильной настройки ваших проектов для .NET Core 45.

6. Настройте свое приложение для новой платформы.

     Параметры времени выполнения: настройте свое приложение для использования новой версии .NET Core, обновив runtimeOptions в файле конфигурации 5.

7. Тестирование и развертывание

     Тестирование. Тщательно протестируйте свое приложение, чтобы выявить и устранить любые проблемы, возникающие в процессе миграции. Сюда входят модульные тесты, интеграционные тесты и ручное тестирование45.

     Развертывание. Обновите сценарии и процессы развертывания для работы с .NET Core. Это может включать настройку конвейеров непрерывной интеграции/непрерывного развертывания (CI/CD) для приложений .NET Core 45.

8. Мониторинг и обслуживание

     Мониторинг. После развертывания отслеживайте свое приложение на предмет проблем с производительностью или стабильностью. Этот шаг имеет решающее значение для обеспечения успешной миграции и бесперебойной работы вашего приложения на .NET Core 45.

Заключение

Для такого большого приложения, как ваше, рекомендуется прямой переход на последнюю стабильную версию .NET Core (или .NET 5/6/7). Такой подход не только обеспечивает совместимость с будущими версиями .NET Core, но также позволяет использовать новейшие функции и улучшения производительности, предлагаемые .NET Core. Помните, что процесс миграции требует тщательного планирования, тщательного тестирования и, возможно, значительного рефакторинга кода. Рассмотрите возможность привлечения команды опытных разработчиков .NET или консультации с профессиональной службой, чтобы обеспечить плавный переход.


doubles

https://learn.microsoft.com/en-us/dotnet/api/system.double.equals?view=net-8.0

https://learn.microsoft.com/en-us/dotnet/api/system.double.compareto?view=net-8.0

https://softwareengineering.stackexchange.com/questions/133738/how-can-i-properly-compare-double-values-for-equality-in-a-unit-test

https://stackoverflow.com/questions/3420812/how-do-i-find-if-two-variables-are-approximately-equals

https://www.geeksforgeeks.org/double-compareto-method-in-c-sharp-with-examples/

https://softwareengineering.stackexchange.com/questions/418182/which-is-preferred-subclass-double-or-create-extension-methods-to-test-relativ

https://github.com/fluentassertions/fluentassertions/issues/101

This approach provides a flexible and reusable way to compare double values with a specified tolerance, which can be particularly useful in scenarios where precision is crucial, such as in scientific calculations or when dealing with very small differences that are practically significant

Creating a class with a private property for tolerance and a method to compare two double values using this tolerance is a thoughtful approach, especially when there are many comparisons with the same tolerance. This decision aligns well with the principles of encapsulation and reusability in object-oriented programming (OOP).

Encapsulation is about bundling data and related operations into a single unit, or object, which helps in organizing code into logical units that represent real-world entities or concepts. This makes the code easier to understand and work with, as you can focus on the interface and behavior of each object rather than its internal implementation details 3. By encapsulating the tolerance value within a class, you ensure that the tolerance can only be modified through the class's methods, which can enforce any necessary business logic or validation. This approach also enhances code reuse by allowing the comparison logic to be reused across different parts of your application without duplicating the tolerance value 34.

Reusability is another key benefit of this approach. By encapsulating the comparison logic within a class, you can easily reuse this logic in different parts of your application without having to rewrite the same code multiple times. This not only saves time but also reduces the risk of errors and inconsistencies in your code 4.

Moreover, this design choice aligns with the principles of modularity and flexibility in OOP. Encapsulating the tolerance value within a class makes your code more modular, as it separates the concerns of comparison logic and tolerance management. This separation of concerns makes your code easier to troubleshoot, collaborate on, and upgrade 4. Additionally, by encapsulating the tolerance value, you gain flexibility in adjusting the tolerance as needed without affecting the rest of your program.

In summary, creating a class with a private property for tolerance and a method to compare two double values using this tolerance is a sound decision that leverages the principles of encapsulation and reusability in OOP. It enhances code organization, readability, and maintainability, making it easier to manage and reuse comparison logic across your application.

Этот подход обеспечивает гибкий и многоразовый способ сравнения двойных значений с заданным допуском, что может быть особенно полезно в сценариях, где точность имеет решающее значение, например, в научных расчетах или при работе с очень небольшими различиями, которые являются практически значимыми.

Создание класса с частным свойством допуска и методом сравнения двух двойных значений с использованием этого допуска — продуманный подход, особенно когда имеется много сравнений с одним и тем же допуском. Это решение хорошо согласуется с принципами инкапсуляции и повторного использования в объектно-ориентированном программировании (ООП).

Инкапсуляция — это объединение данных и связанных с ними операций в единую единицу или объект, что помогает организовать код в логические единицы, представляющие реальные сущности или концепции. Это упрощает понимание кода и работу с ним, поскольку вы можете сосредоточиться на интерфейсе и поведении каждого объекта, а не на деталях его внутренней реализации. 3. Инкапсулируя значение допуска внутри класса, вы гарантируете, что допуск можно будет изменить только посредством методы класса, которые могут реализовать любую необходимую бизнес-логику или проверку. Этот подход также улучшает повторное использование кода, позволяя повторно использовать логику сравнения в разных частях вашего приложения без дублирования значения допуска 34.

Возможность повторного использования — еще одно ключевое преимущество этого подхода. Инкапсулируя логику сравнения внутри класса, вы можете легко повторно использовать эту логику в разных частях вашего приложения без необходимости переписывать один и тот же код несколько раз. Это не только экономит время, но и снижает риск ошибок и несоответствий в вашем коде 4.

Более того, этот выбор дизайна соответствует принципам модульности и гибкости ООП. Инкапсуляция значения допуска внутри класса делает ваш код более модульным, поскольку разделяет задачи логики сравнения и управления допусками. Такое разделение задач упрощает поиск и устранение неисправностей вашего кода, совместную работу и обновление. 4. Кроме того, инкапсулируя значение допуска, вы получаете гибкость в настройке допуска по мере необходимости, не затрагивая остальную часть вашей программы.

Таким образом, создание класса с частным свойством допуска и методом сравнения двух двойных значений с использованием этого допуска является разумным решением, которое использует принципы инкапсуляции и повторного использования в ООП. Он улучшает организацию кода, его читаемость и удобство обслуживания, упрощая управление и повторное использование логики сравнения в вашем приложении.

среда, 13 марта 2024 г.

Event, Driven

https://github.com/microservices-demo/microservices-demo

https://github.com/dotnet-architecture/eShopOnWeb

https://github.com/microsoft/eShopOnContainers

https://github.com/EventStore/EventStore

https://github.com/EventuatePlatform/eventuate-tram-core


Clean vs Event

Clean Architecture
1. Сложность: Чистая архитектура может быть сложной для понимания и реализации, особенно для новичков.
2. Переоптимизация: Некоторые критики утверждают, что применение Чистой архитектуры может привести к переоптимизации, особенно в маленьких проектах.
3. Недостаток стандартов: Несмотря на популярность, Чистая архитектура не имеет официальных стандартов или руководств, что может затруднить ее применение.
4. Сложность интеграции: Интеграция различных слоев может быть сложной, особенно при работе с внешними системами или API.
5. Необходимость в обучении: Для эффективного использования Чистой архитектуры требуется глубокое понимание принципов и паттернов проектирования.

1. Высокая степень абстракции: Это может усложнить понимание и поддержку кода.
2. Необходимость в большом количестве кода: Для реализации Чистой архитектуры может потребоваться больше кода, чем для традиционных подходов.
3. Сложность в настройке: Настройка и конфигурация различных слоев может быть сложной задачей.
4. Потенциальная избыточность: В некоторых случаях, использование Чистой архитектуры может привести к избыточности кода.
Clean Architecture vs Event-Driven (EDA)
-разные цели
-разные преимущества
Зависит от конкретных требований проекта.

Clean Architecture
1. Когда требуется высокая степень гибкости и масштабируемости. 2. Когда проект имеет сложную бизнес-логику, требующую четкого разделения ответственности. 3. Когда важна поддерживаемость и легкость тестирования кода. Event-Driven архитектура: 1. Когда проект требует асинхронной обработки событий, например, в системах обработки транзакций или в системах, где события генерируются в реальном времени. 2. Когда важна отказоустойчивость и масштабируемость, особенно в распределенных системах. 3. Когда требуется легкое расширение и интеграция с другими системами через события. Выбор Clean Architecture
vs Event-Driven зависит от специфики проекта,
требований к производительности,
масштабируемости и гибкости.
Возможна комбинация для создания гибкой и масштабируемой системы.

пятница, 23 февраля 2024 г.

Git, Own, Git, Server, MyOwn

My own Git

https://habr.com/ru/companies/ruvds/articles/359216/

Product, Refurbished , Recertified

https://www.refurb.me/blog/refurbished-vs-recertified-whats-difference

Разница между восстановленным и повторно сертифицированным зависит от продавца, который использует эти термины, например Apple, Amazon, Gazelle или Back Market. Оба относятся к продукту, который был восстановлен после проверки, испытаний и процесса очистки.

Так в чем же разница? Можем ли мы действительно использовать их взаимозаменяемо?

На RefurbMe мы ежедневно сравниваем лучшие предложения по восстановленным продуктам Apple, доступные на рынке. Поэтому мы кое-что знаем о том, как вызывать и определять сотни электронных устройств на нашей платформе. Мы продолжим это в этой статье.

Восстановленные продукты — это устройства, которые были восстановлены до полного рабочего состояния как новые после того, как они были в эксплуатации или использовались в качестве демонстрационных моделей. Часто это модели, используемые в демонстрациях в магазинах, а затем тщательно очищенные и протестированные перед продажей широкой публике.

Иногда ноутбук, компьютер или смартфон могут быть неисправны или они больше не нужны покупателю после покупки. В этом случае оригинальный производитель или сторонний восстановитель проведет строгий процесс тестирования продукта и всех его компонентов, чтобы убедиться в его соответствии функциональным стандартам нового продукта.

Когда все будет отремонтировано, отреставрировано и очищено, оно продается как отремонтированное по более низкой цене. Их функциональность точно такая же, как у совершенно нового продукта; единственная разница - их косметическое состояние. Некоторые продавцы и сайты могут даже включать оригинальные аксессуары к товару.

Повторная сертификация в настоящее время является устаревшей фразой. Первоначально это означало, что продукт был снова проверен и сертифицирован, а это означало, что он пригоден для продажи. Точно так же, как новый продукт получает разрешение на продажу на рынке, подержанный продукт будет проверен и сертифицирован на соответствие стандартам и продан снова.

Хотя некоторые термины, такие как «заводская сертификация» или «заводская повторная сертификация», все еще актуальны в некоторых магазинах, вы можете найти гораздо более распространенное слово: «восстановленный». Термин «сертифицированный отремонтированный» или «только что отремонтированный» стал более популярным из-за его относительной простоты понимания.

Термины «ресертифицированный» и «сертифицированный восстановленный» используются все реже и реже. Общее определение продукта, который был протестирован, очищен и восстановлен до полной работоспособности, — восстановленный.

Восстановленный продукт — это не то же самое, что подержанный продукт или продукт в открытой упаковке. Хотя сертифицированный специалист по восстановлению осмотрел отремонтированное устройство, бывшие в употреблении или в открытой упаковке изделия могут быть проданы без проведения каких-либо предварительных испытаний и даже без гарантии.

На RefurbMe мы продаем только отремонтированные устройства Apple с гарантией, проверенные профессиональными специалистами по восстановлению, и предлагаем беспроблемную политику возврата. Заходите на нашу платформу и найдите выгодное предложение!

GPT, MBR, Windows, Install, Video

https://remontka.pro/disk-has-mbr-partition-table-windows-install/