README.md

PrabhupadaDictionary

Харе Кришна, всем! Примите, пожалуйста, мои смиренные поклоны! Слава Шриле Прабхупаде!

Introduction

Санскритский словарь Шрилы Прабхупады. Кросс-библиотечный и кросс-платформенный! Работает как на CopperSpice, так и на Qt! Один проект в QtCreator обслуживает две библиотеки, просто в ражных режимах сборки. Отладка проекта доступна как в CopperSpice, так и в Qt!

Для версии Qt необходимы библиотеки https://gitflic.ru/project/navadvipa-chandra-das/biblioteka-nnprabhupada-dlya-qt https://gitflic.ru/project/navadvipa-chandra-das/biblioteka-nnprabhupadadb-dlya-qt

Для версии CopperSpice необходимы библиотеки https://github.com/Navadvipa-Chandra-das/copperspice

Authors / Contributors

  • Navadvipa Chandra dasa

License

This program is released under the 2-Clause BSD license. For more information refer to the LICENSE file provided with this project.

References

  • Website: nizhnyaya-navadvipa.ru
  • Email: navadvipa.chandra.das@nizhnyaya-navadvipa.ru

Это просто картинка двух версий Словаря Шрилы Прабхуады - на CopperSpice и на Qt

размер выполняемого файла

Библиотека и режим сборки CopperSpice Debug Qt Debug CopperSpice Release Qt Release
Размер выполняемого файла PrabhupadaDictionary.exe 1295872 586752 518656 200192

Измерение быстродействия в миллисекундах в разных библиотеках и режимах сборки

Событие CopperSpice Debug Qt Debug CopperSpice Release Qt Release
Начальная загрузка словаря Русский - RU 92078 23142 2374 927
Смена языка словаря с Русского на Английский - RU -> EN 94504 24757 2428 1087
Сортировка по Переводу RU 78353 22422 1412 582
Сортировка по Санскриту RU 68246 19788 1199 538
Сортировка по Переводу EN 94954 27988 1861 817
Сортировка по Санскриту EN 73198 21380 1439 662
Like Mode Sanskrit == “маха” Translate == "" RU 2119 65 50 23
Regular Expression Mode Sanskrit == “маха” Translate == "" RU 2685 62 95 60
Like Mode Sanskrit == “маха%муни” Translate == "" RU 2149 59 49 25
Regular Expression Mode Sanskrit == “маха.*муни” Translate == "" RU 2703 64 98 61
Like Mode Sanskrit == “маха” Translate == “великий” RU 2155 64 49 25
Regular Expression Mode Sanskrit == “маха” Translate == “великий” RU 2735 70 99 57
Like Mode Sanskrit == “maha” Translate == "" EN 2083 85 62 30
Regular Expression Mode Sanskrit == “maha” Translate == "" EN 2163 88 88 79
Like Mode Sanskrit == “maha%muni” Translate == "" EN 2089 93 62 32
Regular Expression Mode Sanskrit == “maha.*muni” Translate == "" EN 2162 84 105 74
Like Mode Sanskrit == “maha” Translate == “great” EN 2099 83 59 32
Regular Expression Mode Sanskrit == “maha” Translate == “great” EN 2188 78 93 72

Короткие выводы по соревнованию

Общий вывод такой - Qt уверенно побеждает CopperSpice как по размеру исполнимых файлов, так и по быстродействию! Причем нужно учесть, что код один и тот же, и компилятор тоже одинаковый! Настройки Debug и Release тоже одинаковые как для Qt, так и для CopperSpice

Еще один вывод - функция Like уверенно побеждает по быстродействию Regular Expression. Только в режиме Qt Debug они примерно равны.

С помощью QtCreator пишем и отлаживаем PrabhupadaDictionary

Режимы сборки

  1. Desktop-Debug - CopperSpice отладка.
  2. Desktop-Debug-Qt - Qt отладка.
  3. Desktop-Release - CopperSpice выпуск.
  4. Desktop-Release - Qt выпуск.

Картинка

Это просто пример, что отладка работает

Сборка CopperSpice и Qt, и QtCreator

Попробуем собрать Qt и QtCreator и CopperSpice из исходных текстов! Настроим QtCreator, чтобы можно было писать и отлаживать программы с CopperSpice

Следуем по пути, предначертанном на сайте Qt — https://wiki.qt.io/Building_Qt_6_from_Git . Установил Far Manager, 7-zip — полезные штуки!

Также хочу заметить, что версии разных продуктов постоянно появляются новые. Устанавливайте новые версии.

  1. Устанавливаем PostgreSQL 17 64 bit, качаем отсюда — https://www.postgresql.org/download/windows/ . Путь к PostgreSQL прописывать в переменной Path не надо, его можно прописать в параметрах CMake сборки Qt. Но перед запуском уже готовых программ, которые скомпилированы с помощью Qt нужно будет срочно добавлять этот путь к системной переменной Path примерно такой командой: set Path=%Path%;C:\Prg\PostgreSQL\17\bin

  2. Качаем и устанавливаем Git отсюда — https://git-scm.com/download/win . Я разпаковываю в папку C:\Prg\PortableGit . Стараюсь избегать ненужного длинного названия Program Files, с которым не всегда удобно работать. Досталась мне версия PortableGit-2.44.0-64-bit.7z.exe . В системной переменной Path должно быть следующее: C:\Prg\PortableGit\cmd

  3. Устанавливаем CMake, качаем отсюда https://cmake.org/download/ , досталась мне версия cmake-3.28.3-windows-x86_64.zip . В системной переменной Path должно быть следующее: C:\Prg\cmake-3.28.3-windows-x86_64\bin

  4. Устанавливаем Ninja с папку C:\Prg\Ninja . Version 1.11.1 https://github.com/ninja-build/ninja/releases В системной переменной Path прописываем путь C:\Prg\Ninja .

  5. Устанавливаем VulkanSDK https://vulkan.lunarg.com/sdk/home#windows Мне досталась версия VulkanSDK-1.3.275.0-Installer.exe . Ни одну дополнительную галочку не выбирал. Установил по минимуму. В системной переменной Path должно быть следующее: C:\Prg\VulkanSDK\1.3.275.0\Bin Тут надо пояснить. Я установил две версии VulkanSDK. Одна версия 1.3.275.0 , вторая 1.4.321.1 . Версия 1.3.275.0 нужна для компиляции CopperSpice Версия 1.4.321.1 нужна для компиляции CopperSpice Скоро, я думаю, CopperSpice перейдет на новую версию. Перед компиляцие я устанавливаю нужную версию в системной переменной Path, а также в системных переменных VK_SDK_PATH VULKAN_SDK

  6. Устанавливаем Python. Попробуем скачать Windows installer (64-bit) Stable Releases на странице https://www.python.org/downloads/windows/ . На данный момент нужно выбрать версию Питона 3.11 python-3.11.8-amd64.exe . Хотя существует более новая версия 3.12, но под неё еще не исправлены исходные тексты Qt. Выбор более ранних версий, тоже приводил к ошибкам компиляции, и некоторые части библиотеки Qt не устанавливались. Оставил все галочки установки по умолчанию. В системную переменную PATH добавил вручную путь C:\Prg\Python\Python311 Установил вручную в Реестре Windows флаг HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem\LongPathsEnabled в значение 1. Питон вроде бы предлагает это сделать при установке. Если забыли сразу включить, то ничего страшного — никогда не поздно. Программа для работы с реестром Виндовс — regedit.exe .

  7. Устанавливаем в Питоне html5lib и spdx-tools, для этого переходим в папку C:\Prg\Python\Python313\Scripts и запускаем команду: pip3 install html5lib spdx-tools spdx

  8. Устанавливаем Visual Studio 2022. Качаем отсюда — https://visualstudio.microsoft.com/ru/vs/whatsnew/ Установил поддержку классических приложений C++, мобильных приложений для C++ и два языковых пакета — английский и русский!

  9. Установил WDK Для этого скачал wdksetup.exe . Найти можно на странице https://learn.microsoft.com/en-us/windows-hardware/drivers/download-the-wdk#download-icon-for-wdk-step-3-install-wdk . После этого будет доступен отладчик cdb.exe . Он понадобится для работы отладки кода в QtCreator. Находится отладчик тут — D:\Program Files (x86)\Windows Kits\10\Debuggers\x64\cdb.exe . Но QtCreator cfv его найдет!

  10. Устанавливаем Win Flex Bizon, качаем отсюда — https://sourceforge.net/projects/winflexbison/ В системную переменную Path добавил следующее: C:\Prg\Win_Flex_Bizon

  11. https://nodejs.org/en/download Мне досталась версия node-v18.18.2-x64.msi . Вместе с node.js не стал устанавливать Шоколадку, которая тянет много пакетов. Эти пакеты плохо контролируются. Еще один Питон! Зачем? Когда удалил все пакеты Chocolatey, но консоль Visual Studio 2022 для режима x64 перестала правильно запускаться. Так что Chocolatey не стал устанавливать.

  12. Устанавливаем libclang отсюда — https://download.qt.io/development_releases/prebuilt/libclang/ Мне досталась версия libclang-release_18.1.0-based-windows-vs2019_64.7z Распаковываем в папку C:\Prg\libclang_vs В системную переменную Path не надо добавлять этот путь. Сразу в параметрах CMake пропишем, равно как и путь к PostgreSQL!

  13. Нужно установить gperf. Скачал отсюда https://sourceforge.net/projects/gnuwin32/files/gperf/ не самую свежую версию gperf-3.0.1.exe и установил её в папке C:\Prg\GnuWin32 В системную переменную Path прописал путь C:\Prg\GnuWin32\bin

  14. Установил OpenSSL . Её требовала CopperSpice — библиотека, которая давным давно отпочковалась от Qt. Сам Qt её не требует. Качать можно отсюда — https://github.com/CristiFati/Prebuilt-Binaries/tree/master/OpenSSL/ Мне досталась версия OpenSSL-3.2.1-Win-pc064.zip . Распаковываем OpenSSL в каталог C:\Prg\OpenSSL\3.2.1

  15. В системную переменную Path добавить путь к библиотеке Qt, чтобы другие программы, написанные на Qt могли запускаться. У меня этот путь такой: D:\QtSource\ReleaseVS\Lib\bin

  16. Теперь перейдём к закачке исходных текстов Qt. Исходники Qt будем записывать в папку D:\QtSource\qt6 . Для этого в командной строке (я пользуюсь Far Manager) сделаем текущим каталог D:\QtSource\ и запустим команду: git clone git://code.qt.io/qt/qt5.git qt6 либо эту git clone https://code.qt.io/qt/qt5.git qt6 перейдем в каталог D:\QtSource\qt6 командой cd qt6 тут мы можем перейти в нужную ветку Qt. По умолчанию мы попадаем в ветку разработчиков dev, можно включить другую ветку, если Вы знаете её имя. Команда переключения веток такая: git switch dev на текущий момент выбрал версию git switch 6.9.2 потом запустим команду: init-repository.bat Она скачает все исходные тексты. Если не сработает, то выполнить команду git remote -v в папке Qt6 Скорее всего она посоветует выпонить команду git config –global –add safe.directory C:/QtSource/qt6 Выполните её! И init-repository.bat будет работать очень хорошо!

  17. Теперь перейдём к закачке исходных текстов QtCreator. Перейдем в каталог D:\QtSource Запускаем команду git clone git://code.qt.io/qt-creator/qt-creator.git или такую git clone https://code.qt.io/qt-creator/qt-creator.git потом выполнить cd qt-creator возможно придется выполнить git remote -v git config –global –add safe.directory D:/QtSource/qt-creator выполнить git submodule update –init –recursive

  18. Теперь перейдем к очень важному этапу создания нужных папок! У нас уже есть каталог D:\QtSource В нем есть каталог D:\QtSource\qt6, в который мы закачали исходные тексты Qt Также в нём есть D:\QtSource\qt-creator , в который мы закачали исходные тексты QtCreator. Создадим каталог D:\QtSource\Bat — в нем будут bat файлы для запуска нужных для компиляции команд. Создадим каталог D:\QtSource\Log — в нем будут log файлы, в которых будут отображаться весь процесс компиляции Qt. Создадим каталог qtcreator_build_vs — в нем будет скомпилирован и собран QtCreator с помощью компилятора MSVC, который устаановился вместе с Visual Studio 2022. Можно скомпилировать все и с помощью GCC 11.2, но в этом случае невозможно скомпилировать QtWebEngine и также не получается скомпилировать модуль для PostgreSQL. Создадим каталоги: D:\QtSource\ReleaseVS D:\QtSource\ReleaseVS\Build — тут будут храниться результаты конфигурирования библиотеки Qt D:\QtSource\ReleaseVS\Lib — тут будет храниться уже готовая к употреблению библиотека Qt

19.1. Устанавливаем язык Go. Качаем тут - https://go.dev/dl/

19.2. Теперь перейдем к очень важному этапу создания нужных файлов! Звёздочки копировать не надо! Они просто служат для обозначения границ — начало файла и конец файла. Создадим файл D:\QtSource\Bat\LogReleaseVSConfig.bat и запишем его содержимое таким образом:

ReleaseVSConfig.bat => ./../Log/ReleaseVSConfig.log

Создадим файл D:\QtSource\Bat\LogReleaseVSBuild.bat и запишем его содержимое таким образом:

ReleaseVSBuild.bat => ./../Log/ReleaseVSBuild.log

Создадим файл D:\QtSource\Bat\ReleaseVSConfig.bat и запишем его содержимое таким образом:

set BUILD_DIR=D:/QtSource

cd %BUILD_DIR%/ReleaseVS/Build

%BUILD_DIR%/Qt6/configure.bat -prefix %BUILD_DIR%/ReleaseVS/Lib ^
  -release ^
  -sql-psql ^
  -qt-zlib ^
  -confirm-license ^
  -opensource ^
  -DOPENSSL_ROOT=C:/Prg/OpenSSL/3.4.1 ^
  -- -DCMAKE_PREFIX_PATH=C:/Prg/libclang_vs;C:/Prg/PostgreSQL/17

Создадим файл D:\QtSource\Bat\ReleaseVSBuild.bat и запишем его содержимое таким образом:

rem set Path=%Path%;C:\Prg\PostgreSQL\17;C:\Prg\libclang_vs
set BUILD_DIR=C:/QtSource
cd %BUILD_DIR%/ReleaseVS/Build
cmake —build . —parallel 5
cd %BUILD_DIR%/ReleaseVS/Build
cmake —install .

Создадим файл D:\QtSource\Bat\Log-qt-creator-build-vs.bat и запишем его содержимое таким образом:

qt-creator-build-vs.bat => ./../Log/qt-creator-build-vs.log

Создадим файл D:\QtSource\Bat\qt-creator-build-vs.bat и запишем его содержимое таким образом:

set BUILD_DIR=D:\QtSource\qtcreator_build_vs
cd %BUILD_DIR%

cmake -DCMAKE_BUILD_TYPE=Release -G Ninja ^
  -DCMAKE_PREFIX_PATH=D:\QtSource\ReleaseVS\Lib;C:\Prg\libclang_vs ^
  D:\QtSource\qt-creator

cmake --build . --parallel

cd %BUILD_DIR%

cmake --install .```
  1. Теперь мы должны запустить терминал (консоль), но не просто любую командную оболочку, а ту которую предоставила нам программа Visual Studio 2022. Я выбрал x64 Native Tools. У меня этот ярлык находится тут: D:\ProgramData\Microsoft\Windows\Start Menu\Programs\Visual Studio 2022\Visual Studio Tools\VC\x64 Native Tools Command Prompt for VS 2022.lnk Для удобства я его закрепил на панели задач, так как приходится часто его нажимать. Обычно я сразу же перехожу в каталог Far Manager и запускаю его. Так удобнее. Например так: cd D:\P + клавиша Tab — получаем cd D:\Prg, набираем символы \f и нажимаем клавишу Tab, получаем cd C:\Prg\Far Manager, нажимаем Enter, набираем Far и снова нажимаем Enter — вот Far Manager и запустился. Если же мы выберем другую архитектуру компилятора, наприме x86_x64, то мы тоже сможем скомпилировать библиотеку Qt и в ней, но в этом случае на неудастся соединиться с сервером PostgreSQL при помощи его родных библиотек, как например C:\Prg\PostgreSQL\16\bin\libpq.dll и подобных. Для успешного соединения нам, вероятней всего понадобится набор таких библиотек, скомпилированных именно для архитектуры x86_x64. Также необходимо перевести консоль в utf-8 командой chcp 65001

Для удобства я сделал bat файл D:\CopperSpice\Bat\StartFar.bat

chcp 65001
C:\Prg\Far\Far.exe

Он сразу переводит консоль в utf-8 и запускает Far Manager Сразу скажу, что для компиляции Qt я запускаю консоль в режиме адиминистратора, а для компиляции CopperSpice достаточно обычного запуска консоли. QtCreator пишет файлы в каталог “C:\Program Files (x86)\QtCreator”. Для этого нужны полномочия Адиминистратора.

  1. Столкнулся с неприятной проблемой компиляции, которая требует установки zstd я скачал zstd-v1.5.7-win64.zip отсюда https://github.com/facebook/zstd/releases В переменную PATH добавил строку C:\Prg\zstd-v1.5.7-win64\dll

  2. Теперь просто последовательно запускаем три файла D:\QtSource\Bat\LogReleaseVSConfig.bat D:\QtSource\Bat\LogReleaseVSBuild.bat D:\QtSource\Bat\Log-qt-creator-build-vs.bat При этом нужно ждать, пока завершится выполнения каждого файла, перед тем как запускать следующий.

Вот и всё! В итоге мы получили рабочую библиотеку Qt и замечательный инструмент Qt Creator! Можно на рабочем столе создать ярлык для запуска Qt Creator и работать по-стахановски. Qt Creator находится здесь — D:\QtSource\qtcreator_build_vs\bin\qtcreator.exe .

Устанавливаем CopperSpice! Каталоги можете выбрать другие.

  1. Создаем каталог D:\CopperSpice
  2. Выполняем клонирование репозитория CopperSpice командой для оригинального CopperSpice git clone https://github.com/copperspice/copperspice Source

для форка CopperSpice git clone https://github.com/Navadvipa-Chandra-das/copperspice Source

git clone https://github.com/copperspice/cs_designer

git clone https://github.com/copperspice/doxypressapp

Исходные тексты KitchenSink я распоковал в каталог D:/CopperSpicePrg/KitchenSink

  1. Создаем каталоги: D:\CopperSpice\Bat

D:\CopperSpice\Release\Build

D:\CopperSpice\Release\Lib

D:\CopperSpice\Debug\Build

D:\CopperSpice\Debug\Lib

D:\CopperSpice\ReleaseDesigner\Build

D:\CopperSpice\ReleaseDesigner\Lib

D:\CopperSpice\ReleaseDoxypressApp\Build

D:\CopperSpice\ReleaseDoxypressApp\Lib

D:\CopperSpice\ReleaseKitchenSink\Build

D:\CopperSpice\ReleaseKitchenSink\Lib

  1. Создаем файлы: D:\CopperSpice\Bat\Release.bat
set BUILD_DIR=D:/CopperSpice

cd %BUILD_DIR%/Release/Build

cmake -G "Ninja" ^
  -DCMAKE_BUILD_TYPE=Release ^
  -DCMAKE_INSTALL_PREFIX=%BUILD_DIR%/Release/Lib ^
  -DOPENSSL_ROOT=C:/Prg/OpenSSL/3.4.1 ^
  -Dlibpqxx_DIR="D:/CopperSpice/ReleaseLibpqxx/Lib/lib/cmake/libpqxx" ^
  -DPostgreSQL_ROOT=C:/Prg/PostgreSQL/17 ^
  %BUILD_DIR%/Source

ninja

ninja install

D:\CopperSpice\Bat\Debug.bat

set BUILD_DIR=D:/CopperSpice

cd %BUILD_DIR%/Debug/Build

cmake -G "Ninja" ^
  -DCMAKE_BUILD_TYPE=Debug ^
  -DCMAKE_INSTALL_PREFIX=%BUILD_DIR%/Debug/Lib ^
  -DOPENSSL_ROOT_DIR=C:/Prg/OpenSSL/3.4.0 ^
  -DPostgreSQL_ROOT=C:\Prg\PostgreSQL\17 ^
  %BUILD_DIR%/Source

ninja

ninja install

D:\CopperSpice\Bat\ReleaseDesigner.bat

set BUILD_DIR=D:/CopperSpice/ReleaseDesigner/Build

cd %BUILD_DIR%
cmake -G "Ninja" -DCMAKE_BUILD_TYPE=Release ^
-DCMAKE_INSTALL_PREFIX="D:/CopperSpice/ReleaseDesigner/Bin" ^
-DCMAKE_PREFIX_PATH="D:/CopperSpice/Release/Lib/cmake/CopperSpice" ^
D:/CopperSpice/cs_designer

cd %BUILD_DIR%
ninja -v

cd %BUILD_DIR%
ninja -v install

D:\CopperSpice\Bat\ReleaseDoxypressApp.bat

set BUILD_DIR=D:/CopperSpice/ReleaseDoxypressApp/Build

cd %BUILD_DIR%
cmake -G "Ninja" -DCMAKE_BUILD_TYPE=Release ^
-DCMAKE_INSTALL_PREFIX="D:/CopperSpice/ReleaseDoxypressApp/Bin" ^
-DCMAKE_PREFIX_PATH="D:/CopperSpice/Release/Lib/cmake/CopperSpice" ^
D:/CopperSpice/doxypressapp

cd %BUILD_DIR%
ninja -v

cd %BUILD_DIR%
ninja -v install

D:\CopperSpice\Bat\ReleaseKitchenSink.bat

set BUILD_DIR=D:/CopperSpice/ReleaseKitchenSink/Build

cd %BUILD_DIR%
cmake -G "Ninja" -DCMAKE_BUILD_TYPE=Release ^
-DCMAKE_INSTALL_PREFIX="D:/CopperSpice/ReleaseKitchenSink/Bin" ^
-DCMAKE_PREFIX_PATH="D:/CopperSpice/Release/Lib/cmake/CopperSpice" ^
D:/CopperSpicePrg/KitchenSink

cd %BUILD_DIR%
ninja -v

cd %BUILD_DIR%
ninja -v install
  1. Смотри пенкт 21. Теперь мы должны запустить терминал (консоль), но не просто любую командную оболочку, а ту которую предоставила нам программа Visual Studio 2022. Я выбрал x64 Native Tools. У меня этот ярлык находится тут: D:\ProgramData\Microsoft\Windows\Start Menu\Programs\Visual Studio 2022\Visual Studio Tools\VC\x64 Native Tools Command Prompt for VS 2022.lnk

Выполним команду: cd D:\CopperSpice\Bat

Можно запустить Release.bat или Release.bat > Release.log для удобного просмотра лог-файла. Эта команда установит Release версию CopperSpice

Команда Debug.bat > Debug.log установит Debug версию CopperSpice

Команда ReleaseDesigner.bat > ReleaseDesigner.log установит D:\CopperSpice\ReleaseDesigner\Bin\Designer.exe

Команда ReleaseDoxypressApp.bat > ReleaseDoxypressApp.log Установит D:\CopperSpice\ReleaseDoxypressApp\Bin\DoxyPressApp.exe

Команда ReleaseKitchenSink.bat > ReleaseKitchenSink.log Установит DoxyPressApp.exe D:\CopperSpice\ReleaseKitchenSink\Bin\KitchenSink.exe

  1. Установим официальный клиент PostgreSQL для C++ - libpqxx ! cd D:\CopperSpice git clone https://github.com/jtv/libpqxx

  2. Создадим каталоги (папки) D:\CopperSpice\ReleaseLibpqxx\Build D:\CopperSpice\ReleaseLibpqxx\Lib

  3. Создадим файл D:\CopperSpice\Bat\ReleaseLibpqxx.bat

set BUILD_DIR=D:/CopperSpice

cd %BUILD_DIR%/ReleaseLibpqxx/Build

cmake -G "Ninja" ^
  -DCMAKE_BUILD_TYPE=Release ^
  -DCMAKE_INSTALL_PREFIX=%BUILD_DIR%/ReleaseLibpqxx/Lib ^
  -DPostgreSQL_ROOT=C:\Prg\PostgreSQL\17 ^
  %BUILD_DIR%/libpqxx

ninja

ninja install
  1. Выполним команды cd D:\CopperSpice\Bat ReleaseLibpqxx.bat > ReleaseLibpqxx.log

Харе Кришна! С уважением, Навадвипа Чандра дас.

License

This program is released under the 2-Clause BSD license. For more information refer to the LICENSE file provided with this project.

References

  • Website: http://nizhnyaya-navadvipa.ru/
  • Email: navadvipa.chandra.das at nizhnyaya-navadvipa.ru
Описание
Санскритский словарь Шрилы Прабхупады на CopperSpice
Конвейеры
0 успешных
0 с ошибкой
Разработчики