Архив за месяц: Октябрь 2023

Соль нужно очищать


Харе Кришна, всем!
Примите, пожалуйста, мои смиренные поклоны!
Слава Шриле Прабхупаде!
Много раз готовил такой раствор на засолку овощей — 700 грамм соли на 10 литров воды. Всегда оставалось на дне нерастворимое белое прозрачное вещество. Марки соли были разные, результат примерно был одинаковый. Сейчас сделал 70 грамм соли на литр воды, нерастворимый осадок собрал, высушил и сфотографировал. Солью этой пользоваться можно только после удаления этого осадка. Попробую растворить килограмм соли в литрах трёх, четырёх воды и выпарить. Главное, чтобы дно кастрюли выдержало.
Харе Кришна!
С уважением, Навадвипа Чандра дас.

Установка Qt из исходных текстов на Windows 10 64 bit

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

Попробуем собрать Qt и QtCreator из исходных текстов! Для чего из исходных текстов? Ведь можно же просто скачать готовый установщик Qt и установить уже скомпилированные модули, готовые для работы! Да! Всё это правда! Но правда и то, что в этом случае Вы не сможете отредактировать сами исходные тексты Qt! А иногда это хочется! И иногда надо!

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

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

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. Устанавливаем Strawberry Perl. Качаем отсюда — https://strawberryperl.com/releases.html
Мне досталась портативная версия strawberry-perl-5.38.0.1-64bit-portable.zip .
Распаковал в папку C:\Prg\strawberry
В системную переменную Path добавил следующее: C:\Prg\strawberry\perl\bin

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. Находится отладчик тут — «C:\Program Files (x86)\Windows Kits\10\Debuggers\x64\cdb.exe» . Но QtCreator cfv его найдет!

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

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

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

13. Устанавливаем 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!

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

15. Установил 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, а в системную переменную Path прописываем путь C:\Prg\OpenSSL\3.2.1\bin

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

17. Теперь перейдём к закачке исходных текстов Qt.
Исходники Qt будем записывать в папку C:\QtSource\qt6 .
Для этого в командной строке (я пользуюсь Far Manager) сделаем текущим каталог C:\QtSource\ и запустим команду:
git clone git://code.qt.io/qt/qt5.git qt6
либо эту
git clone https://code.qt.io/qt/qt5.git qt6
перейдем в каталог C:\QtSource\qt6 командой
cd qt6
тут мы можем перейти в нужную ветку Qt. По умолчанию мы попадаем в ветку разработчиков dev, можно включить другую ветку, если Вы знаете её имя. Команда переключения веток такая:
git switch dev
потом запустим команду:
init-repository.bat
Она скачает все исходные тексты.

18. Теперь перейдём к закачке исходных текстов QtCreator.
Перейдем в каталог C:\QtSource
Запускаем команду
git clone git://code.qt.io/qt-creator/qt-creator.git
или такую
git clone https://code.qt.io/qt-creator/qt-creator.git

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

20. Теперь перейдем к очень важному этапу создания нужных файлов! Звёздочки копировать не надо! Они просто служат для обозначения границ — начало файла и конец файла.
Создадим файл C:\QtSource\Bat\LogReleaseVSConfig.bat и запишем его содержимое таким образом:
****************
ReleaseVSConfig.bat => ./../Log/ReleaseVSConfig.log
****************

Создадим файл C:\QtSource\Bat\LogReleaseVSBuild.bat и запишем его содержимое таким образом:
****************
ReleaseVSBuild.bat => ./../Log/ReleaseVSBuild.log
****************

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

set Path=%Path%;C:\Prg\PostgreSQL\16
set BUILD_DIR=C:/QtSource

cd %BUILD_DIR%/ReleaseVS/Build

%BUILD_DIR%/Qt6/configure -prefix %BUILD_DIR%/ReleaseVS/Lib ^
-release ^
-sql-psql ^
-android-javac-source 8 -android-javac-target 8 ^
— -DCMAKE_PREFIX_PATH=C:/Prg/libclang_vs;C:/Prg/PostgreSQL/16

****************

Тут хочу сделать небольшой комментарий. Ранее параметр — -DCMAKE_PREFIX_PATH=C:/Prg/libclang_vs;C:/Prg/PostgreSQL/16 отрабатывал хорошо на два пути, а с недавних пор захватывается только один путь, а второй, который следует за точкой с запятой — отбрасывается с предупреждением.

CMake Warning: Ignoring extra path from command line: «C:/Prg/PostgreSQL/16»

Поэтому я включил этот путь в переменную системную Path. Можно его включить в систему и на постоянной основе, а не в bat файле. Почему я так сделал? При компиляции библиотеки CopperSpices этот буть мне мешал и приводил к ошибке. Правда эта ошибка уже давно может быть исправлена. Пока не проверял.

Создадим файл C:\QtSource\Bat\ReleaseVSBuild.bat и запишем его содержимое таким образом:
****************
set BUILD_DIR=C:/QtSource

cd %BUILD_DIR%/ReleaseVS/Build

cmake —build . —parallel

cd %BUILD_DIR%/ReleaseVS/Build

cmake —install  .
****************

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

Создадим файл C:\QtSource\Bat\qt-creator-build-vs.bat и запишем его содержимое таким образом:
****************
rem set Path=%Path%;C:\QtSource\ReleaseVS\Lib\bin
cd C:\QtSource\qtcreator_build_vs

cmake -DCMAKE_BUILD_TYPE=Release -G Ninja «-DCMAKE_PREFIX_PATH=C:\QtSource\ReleaseVS\Lib;C:\Prg\libclang_vs» C:\QtSource\qt-creator
cmake —build .
****************

21. Теперь мы должны запустить терминал (консоль), но не просто любую командную оболочку, а ту которую предоставила нам программа Visual Studio 2022. Я выбрал x64 Native Tools. У меня этот ярлык находится тут:
C:\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 C:\P + клавиша Tab — получаем cd C:\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.

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

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

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

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


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

Вот прочитал интересный стих из «Шримад Бхагаматам» об избиении и убийстве невинных в укромном месте. Решил поделиться!

Шримад-бхагаватам 1.17.6
йас твам̇ кр̣шн̣е гате дӯрам̇
саха-га̄н̣д̣ӣва-дханвана̄
ш́очйо ’сй аш́очйа̄н рахаси
прахаран вадхам архаси
Пословный перевод

йах̣ — в связи с тем, что; твам — негодяй; кр̣шн̣е — Господь Кришна; гате — скрылся; дӯрам — из виду; саха — вместе с; га̄н̣д̣ӣва — лук Гандива; дханвана̄ — носящим его (Арджуной); ш́очйах̣ — преступником; аси — ты считаешься; аш́очйа̄н — невинных; рахаси — в уединенном месте; прахаран — избивающий; вадхам — чтобы тебя убили; архаси — заслуживаешь.
Перевод

Негодяй, не потому ли ты осмелился бить невинную корову, что поблизости нет Господа Кришны и Арджуны, носителя лука Гандивы? Раз ты избиваешь невинных в укромном месте, ты преступник и потому заслуживаешь смерти.
Комментарий

В цивилизации, в которой существование Бога открыто отрицается и нет таких воинов-преданных, как Арджуна, сообщники века Кали, пользуясь тем, что в государстве царит беззаконие, организованно убивают на бойнях животных, в частности коров. Такие убийцы должны быть осуждены на смерть по приказу праведного царя, подобного Махарадже Парикшиту. С точки зрения праведного царя, преступник, который тайно убивает животное, заслуживает смертной казни наравне с тем, кто тайно убивает невинного младенца.

Конец цитаты.

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

При внимательном рассмотрении религиозных систем, направленных на поклонение полубогам или кому-либо еще, помимо Верховной Личности Бога, совсем нетрудно заметить, что все они проникнуты злобой и потому лишены чистоты.


Харе Кришна, всем!
Примите, пожалуйста, мои смиренные поклоны!
Слава Шриле Прабхупаде!
Вот прочитал очень интересный стих из Шримад Бхагаватам с комментариями Шрилы Прабхупады о различиях бхагавата -дхармы и других религий. Решил поделиться!

Шримад-бхагаватам 6.16.41
вишама-матир на йатра нр̣н̣а̄м̇
твам ахам ити мама тавети ча йад анйатра
вишама-дхийа̄ рачито йах̣
са хй авиш́уддхах̣ кшайишн̣ур адхарма-бахулах̣
Пословный перевод

вишама — разграничивающее (на свою и чужую религию, свою и чужую веру); матих̣ — сознание; на — не; йатра — в которой; нр̣н̣а̄м — человеческого общества; твам — ты; ахам — я; ити — так; мама — мое; тава — твое; ити — так; ча — также; йат — которое; анйатра — в других (религиозных учениях, помимо бхагавата- дхармы); вишама-дхийа̄ — подобным предвзятым разумом; рачитах̣ — порождена; йах̣ — которая; сах̣ — такая (религия); хи — конечно; авиш́уддхах̣ — нечистая; кшайишн̣ух̣ — преходящая; адхарма- бахулах̣ — проникнутая безбожием.
Перевод

Раздираемые внутренними противоречиями, все виды религий, за исключением бхагавата-дхармы, основаны на корыстных устремлениях и разделении на чужих и своих, чужое и свое. Такое умонастроение чуждо последователям «Шримад-Бхагаватам». Они полностью поглощены сознанием Кришны, считая, что Кришна принадлежит им, а они — Ему. Люди обращаются к другим, низшим видам религии с целью уничтожить своих врагов или обрести мистические способности, однако подобные религии полны страсти и зависти и потому нечисты и преходящи. Пронизанные злобой, они наполнены безбожием.
Комментарий

Бхагавата-дхарма свободна от противоречий. В ней отсутствуют понятия «моя религия» и «твоя религия». Следовать бхагавата-дхарме — значит следовать наставлениям Верховного Господа, Бхагавана, изложенным в «Бхагавад-гите»: сарва- дхарма̄н паритйаджйа ма̄м экам̇ ш́аран̣ам̇ враджа. Бог един, Бог один для всех, поэтому все должны предаться Богу. Это и есть религия в ее чистой форме. Религия состоит из предписаний Господа (дхармам̇ ту са̄кша̄д бхагават-пран̣ӣтам). В бхагавата-дхарме нет места делению на «мою веру» и «твою веру». Каждый должен верить в Верховного Господа и исполнять Его волю. А̄нукӯлйена кр̣шн̣а̄нуш́ӣланам: любое указание Кришны, или Бога, должно неукоснительно исполняться. Такова истинная дхарма, религия.

У того, кто действительно сознает Кришну, не может быть врагов. Да и откуда им взяться у того, чье единственное занятие — побуждать окружающих предаться Кришне, Богу? Вражда возникает тогда, когда одни берутся отстаивать индуизм, другие — ислам, третьи — христианство, четвертые — еще какую-нибудь религию. История знает немало примеров столкновений на религиозной почве между теми, кто следовал различным религиозным течениям, не дающим ясного представления о Боге. Но вероучения, не основанные на служении Всевышнему, обречены на скорое вырождение, ибо проникнуты злобой. Такие религиозные течения быстро наживают себе многочисленных врагов. Чтобы этого избежать, следует отказаться от таких понятий, как «моя вера» и «твоя вера». Каждый должен верить в Бога и предаться Ему. Это и есть бхагавата- дхарма.

Бхагавата-дхарма — не какая-нибудь надуманная сектантская вера, поскольку она побуждает человека искать связь всего сущего с Кришной (ӣш́а̄ва̄сйам идам̇ сарвам). Веды гласят, что Брахман, Всевышний, присутствует повсюду: сарвам̇ кхалв идам̇ брахма. Бхагавата-дхарма позволяет ощутить присутствие Всевышнего во всем. Бхагавата-дхарма не провозглашает этот мир иллюзорным. Поскольку все сущее изошло из Всевышнего, оно не может быть иллюзией — всему можно найти применение в служении Всевышнему. К примеру, сейчас мы начитываем этот текст с помощью микрофона на диктофон и таким образом устанавливаем связь диктофона с Верховным Брахманом. Теперь это устройство — тоже Брахман, поскольку используется для служения Господу. В этом состоит истинный смысл изречения сарвам̇ кхалв идам̇ брахма. Все сущее есть Брахман, поскольку все может быть обращено на служение Верховному Господу. Нет ничего, что можно было бы назвать митхьей, иллюзорным, — все сущее реально.

Бхагавата-дхарму называют сарвоткр̣шт̣а, лучшей из всех религиозных систем, поскольку идущие этим путем ни к кому не питают вражды. Чистые бхагаваты, чистые преданные, с открытым сердцем призывают каждого присоединиться к движению сознания Кришны. В этом отношении преданные ничем не отличаются от Верховной Личности Бога. Сухр̣дам̇ сарва-бхӯта̄на̄м: они — друзья всех живых существ. Поэтому этот религиозный путь — самый лучший. В отличие от бхагавата-дхармы, все другие так называемые религии предназначены только для ограниченного круга людей с определенным мировоззрением, однако сознание Кришны, или бхагавата-дхарма, не связано подобными ограничениями. При внимательном рассмотрении религиозных систем, направленных на поклонение полубогам или кому-либо еще, помимо Верховной Личности Бога, совсем нетрудно заметить, что все они проникнуты злобой и потому лишены чистоты.

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