Category Archives: Компьютер-лила

Обзор библиотеки Новая Навадвипа (NewNavadvipa) для С++Строителя 10.4.2

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

Библиотека Новая Навадвипа расширяет стандартную библиотеку VCL (Visual Comonent Library). В процессе работы обнаружены некоторые недостатки и ошибки C++Builder 10.4.2, а также появились несколько пожеланий для будущих версий C++Builder.
Прежде всего я хоту поблагодарить руководство и работников Эмбаркадеро за то, что выполнили некоторые мои пожелания, которые я написал в опросе пользователей C++Builder.
1. Это появление компонента TButtonedEdit! Но мне нужен TButtonedEdit со свойством EditMask! Для этого он должен наследоваться от TCustomMaskEdit, а не от TCustomEdit. Поэтому я наследовал свои компоненты TNNVDBComboBox и TNNVDBComboBoxDateTime от TDBEdit! В будущем я хочу поменять наследование от TDBEdit на наследование от TDBButtonedEdit. Кстати компонента TDBButtonedEdit не существует в версии 10.4.2!
2. Это возможность одновременного редактирования даты и времени в компоненте TDateTimePicker, и также использования CheckBox вместе с ним. CheckBox это хорошо, но он слишком прост для ясного определения периодов из одной или двух дат. Поэтому я сделал аналог CheckBox в компонентах TNNVComboBoxDateTime и TNNVDBComboBoxDateTime в виде текста “>=”, “<=", "=", "". Это очень наглядно для определения периодов, например:
X <= Date1 and Date2 >= X
X >= Date1 and Date2 <= X

Вот что не так и то, что хотелось бы увидеть в будущих версиях C++Builder.
1. Невозможность писать компоненты для Delphi на C++Builder. Это значит, что усилия C++ программистов становятся напрасными! Это подобно тому, что пар от парового двигателя уходит в свисток, а не используется для движения локомотива! Как то ведь вы получаете файлы *.Bpl на C++Builder. Нужно дело довести до конца!
2. Свойство Hint имеет однострочный редактор, а нужен многострочный редактор (multiline) – это же очевидно!
3. Чтобы наследовать TForm или TFrame из библиотеки, его нужно явным образом добавить в приложение, а хотелось бы вот какой вариант – функции RegisterForm() и RegisterFrame, которые подобны функции Register() для регистрации обычных компонент.
4. При использовании TForm или TFrame из библиотеки заработала хорошо только static link приложения, а link with runtime package- не работает с библиотекой NewNavadvipa!
5. В design time нельзя присвоить события OnGetFiler, OnGetDialogForm. Приходится делать это в run time!
coRes->OnGetFiler = coResGetFiler;
DUserRole->OnGetDialogForm = RolesGetDialogForm;
Хотя все определено корректно!
typedef PACKAGE void __fastcall( __closure *TNNVGetFiler ) ( System::TObject *Sender, TNNVTextStream *&Filer
);
typedef PACKAGE void __fastcall( __closure *TNNVOnGetDlgForm )( System::TObject* Sender, TCustomForm *&fm );
Вообще с автоматической генерацией событий в библиотеке NewNavadvipa творится полный кошмар и постоянно приходится изменять генерированный C++Builder текст методов событий вручную и затем присваивать события в Инспекторе Объектов!
6. Нельзя свободно менять позиции TField, которые вложены в поле TADTField в редакторе столбцов компонента TDBGrid! При всем при том, что сама компонента TDBGrid позволяет менять позиции этих столбцов в run time совершенно свободно! Это выглядит просто нелепо!

7. Нельзя передавать в процедуры и функции PostgreSQL параметры типа массив и объект. Это очень и очень снижает ценность FireDAC. Я раньше пользовался коммерческими компонентами Direct Oracle Acces – так вот там полностью была возможность передавать и принимать любые объекты Oracle!
8. Невозможность работы в C++Builder 10.4.2 Community Edition компилировать программы для Windows 64 bit не дает возможность использовать родную клиентскую библиотеку PostgreSQL – libpq.dll. Приходится использовать её версию из ODBC драйвера, который не обновляется уже несколько версий PostgreSQL.
9. Хорошо бы иметь возможность писать Web приложения на C++Builder прямо сразу “из коробки”. Все сторонние Веб-компоненты все равно требуют Delphi и не работают с C++Builder.

Теперь я хочу обратиться к руководителям и работникам компании Embarcadero!

Расскажу кратко о тех новшествах библиотеки NewNavadvipa, которые вы можете взять себе и внедрить их в C++Builder или даже также и в Delphi, при условии либо переписывания кода на Паскаль, либо сделать возможность приёма Delphi компонентов, которые написаны на C++Builder.

1. Очень полезный класс
class PACKAGE TNNVTextStream : public TStream
который позволяет очень легко сохранять в потоке и считывать из потока различные типы данных. Например:
coRes->Filer->WriteFont( Font );
coRes->Filer->WriteByte( AlphaBlendValue );

coRes->Filer->ReadFont( Font );
AlphaBlendValue = coRes->Filer->ReadByte();

2. На нем основан компонент TNNVConfig, который позволяет сохранять данные программы между её различными запусками! Можно сохранять настройки в файле, а можно сохранять настройки в базе данных! Например можно сохранить настройки ширины каждого столбца компонента TNNVDBGrid очень просто:
dgUsers->LoadFromFiler( coRes->Filer );

dgUsers->SaveToFiler( coRes->Filer );

А сам компонент TNNVDBGrid может вызвать диалог настройки самой себя пользователем прямо в run time!
3. Очень полезное расширение возможностей TForm – добавление метода ShowDialog. Этот метод позволяет обойтись без метода ShowModal очень во многих случаях. Как только диалоговая форма теряет фокус – она автоматически закрывается! И это очень нравится пользователям.
4. Вы можете добавить две новых кнопки в TDBNavigator – это кнопка “Запомнить строку” и кнопка “Установить поля строк”. Как это работает, лучше показать на картинках, чем описывать. Ну словами так – запомнить строку. Потом выбрать одну или несколько строк в компоненте TDBGrid и установить те поля, которые выбрал пользователь в специальном диалоге-окне теми значениями, которые содержит та первая строка, которая была запомнена при помощи первой кнопки! Очень полезная возможность!
5. TNNVDBSearchDialog – удобный поиск по базе данных.
6. TDBTreeView – очень полезный компонент.
7. Также есть и другие компоненты.

8. Можете взять меня на удаленную работу.
9. Исходный код можно найти тут – https://github.com/Navadvipa-Chandra-das/NizhnyayaNavadvipa .

10. Приложение “Джая Шрила Прабхупада” – может занять место в ряду “Samples” приложений компании Embarcadero! Вот оно – https://github.com/Navadvipa-Chandra-das/JayaShrilaPrabhupada ! Только нужно учесть, что GitHub портит кодировку Ansi русских букв, которые сохраняет C++Builder Text Editor, поэтому там есть каталог Archive, где есть исходные тексты в архиве!
Пользователь “Navadvipa Chandra das”!
Пароль “Hare_Krishna” !
Пароль для PgAdmin “SNixk_ExcynhiL”!

Если Вы заинтересовались чем либо из предложенного мной, я надеюсь получить от Вас ответ.

Харе Кришна!

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

Словарь Шрилы Прабхупады


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

Когда-то давно по вдохновению от Абхинанды Прабху написал программу санскритского словаря Шрилы Прабхупады. В свое время, Абхинанда Прабху был нашим региональным секретарем на Донбассе!
Он был платным, что создавало большие неудобства, так как нужно было получать код. Я рассылал коды. А однажды на одном из вайшнавских форумах я прочитал, что какой смысл ему писать, если он на письма все равно не отвечает. А у меня просто прекратилось автоматическое получение писем со старого ящика alejan@rambler.ru в мой новый ящик navadwip@rambler.ru . Простите, пожалуйста. Если так случилось, я просто не читал таких писем. Вскоре мы с Абхинандой Прабху сделали эту версию словаря безплатной и без кода. Код, кстати был неудобен и при смене жесткого диска его нужно было получать заново. Все исходные тексты словаря были потеряны.
Теперь написал словарь с нуля. Это почти полная копия старой программы, но у неё есть несколько преимуществ и нет такого, в чем бы старая версия программы превосходила бы её!
Преимущества:
1. В словаре стало больше языков – пять языков – русский, английский, чешский, испанский, португальский, а были два языка – русский и английский.
2. С словарях гораздо больше слов, по сравнению со старой версией. Например в русском словаре стало 141 382 слов, было 63 155 слов.
3. Кодировка строк в новой программе более современная многосимвольная – Unicode, а была односимвольная ANSI.
4. Шрифт с диакритикой теперь Gaura Times выглядит безупречно, чего не скажеш о TimesSanscrit, который я рисовал весьма несовершенным редактором, и буквы наплывали друг на друга и выглядели коряво.
5. Поиск слов поддерживает полноценные “регулярные выражения”, а были только самопальные два универсальных символа – % – любой пропуск и ? – любая буква.

6. Программа может быть собрана для Микрософт Виндовс, Линукса и Макинтоша, то есть она теперь стала кроссплатформенной!
7. Совремменный 64 битный компилятор С++ даст лучшую оптимизацию и быстродейтсвие программы.
8. Улучшена работа с закладками! Теперь они запоминают не только номер строки, но и язык словаря Шрилы Прабхупады, вид сортировки, сами слова для поиска санскрита и перевода и, конечно же, номер строки!

Сортировка санскрита происходит с учетом диакритики! Например “а” с чертой вверху следует за простой “а”, “у” с чертой вверху следует за простой “у” и так для всех букв с диакритикой.

Также хочу выразить признательность преданному – администратору сайта https://vedabase.io, имя которого я к сожалению не помню сейчас и который несколько лет назад предоставил мне базу данных слов Шрилы Прабхупады с переводом на пять языков мира (португальский, английский, испанский, чешский и русский), а также замечательный шрифт Гаура Таймс, который позволял работать с этой базой. Сейчас уже и Gaura Times устарел и шрифт используется другой и другая раскладка диакритики. Ой. Не поспеешь. Также благодарность всем прогрммистам, трудом которых я пользовался – библиотека Ultimate++, компиляторы, линковщики, опрерационная система.

https://github.com/Navadvipa-Chandra-das/PrabhupadaSlovary – тут исходный текст.

Тут можно скачать готовую сборку для Виндовс от Микрософт 32 и 64 бита. Вскорости будет сборка для Линукса и скорее всего и для Макинтоша от Эпл.

http://nizhnyaya-navadvipa.ru/download/PrabhupadaSlovary/PrabhupadaSlovaryWindows32bit.7z

http://nizhnyaya-navadvipa.ru/download/PrabhupadaSlovary/PrabhupadaSlovaryWindows64bit.7z

Кстати, если возможно, помогите, пожалуйста нашей строящейся вайшнавской сельскохозяйственной общине Нижняя Навадвипа. Сейчас на трактор собираем. Вот наш сайт – http://nizhnyaya-navadvipa.ru/ .

Большое спасибо! Харе Кришна!

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

Вёрстка вайшнавского календаря-панчанги. Путь джедая.


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

Это статья о том, как за несколько часов сверстать книгу вайшнавского календаря-панчанги на много лет вперед, например на 50 или даже на сто лет вперёд! При этом календарь на 52 года помещается всего лишь на 76 обыкновенных офисных листах формата А4, при печати с двух сторон, и может быть распечатан даже на домашнем принтере без особого труда. Можно сделать перекидной настольный календарь, можно сделать отрывной настольный или настенный календарь, а можно сделать буклет или книгу – как Вам будет угодно. Вот примерный вид:

Хотите? Тогда эта статья для Вас!

1. Сам календарь можно просчитать на программе GCal, которую можно скачать на сайте krishnadays.com .
Интересно заметить, что для того, чтобы просчитать календарь для Донецка без учета перехода на летнее время, пришлось выбрать часовой пояс пояс +3 Indian/Antanarivo, а если выбрать +3 Europe/Moscow, то переход на летнее время будет учитываться, а по факту такого перехода уже нет.
2. Результат нужно сохранить в текстовом файле (формат txt)!
3. Необходимо запустить программу “Конвертилка-переводчик Прабхупада”, которую можно скачать по адресу – http://nizhnyaya-navadvipa.ru/apps/ или собрать её из исходных текстов, находящихся по адресу – https://github.cBookletimposerom/Navadvipa-Chandra-das/prabhupada_calendar . С сайта github можно скачать программу разными способами. Первый способ, скачать архив по адресу – https://github.com/Navadvipa-Chandra-das/prabhupada_calendar/releases . Выбирайте свежую версию. Второй способ – выполнить команду в терминале:
$ git clone https://github.com/Navadvipa-Chandra-das/prabhupada_calendar.git
Но чтобы команда git в терминале (консоли) работала, возможно придется установить программу, например в моей системе Линукс Федора 27 такая установка выглядит так:
$ sudo dnf install git-all
Третий же способ – скачать “Конвертилку-переводчик Прабхупада” при помощи утилиты dub – менеджера пакетов языка программирования D . Язык D можно установить с сайта dlang.org . В моем случае для успешно компиляции программы потребовалось установить некоторые дополнительные пакеты в Линукс Федора. Вот команды:

$ sudo dnf install SDL2 libevent-devel openssl-devel libcurl-devel git-all
$ dub fetch prabhupada_calendar
$ dub run prabhupada_calendar --build=release

В скачанной программе “Конвертилка-переводчик Прабхупада” в каталоге (папке) prabhupada_calendar есть каталог RU . В этом каталоге есть все необходимые файлы для верстки Вашего вайшнавского календаря-панчанги! Для начала нам понадобится файл Perevod.txt, а файлы Донецк 2017-2069.sla.gz и FreeSerif.zip нам понадобятся позже. Остальные файлы в папке RU – это просто демонстрационные примеры.

Нужно запустить программу “Конвертилка-переводчик Прабхупада”. В поле ввода Входной файл нужно выбрать Ваш календарь-панчангу, который выдала Вам программа вайшнавского календаря GCal, в моем варианте это Donetsk2017-2069.txt, в поле ввода выходной файл нужно написать имя того текстового файла, в котором программа сохранит результат перевода и конвертации календаря, я использую расширение “ура” – Donetsk2017-2069.ура, а в третьем поле “Файл перевода” необходимо выбрать файл Perevod.txt, который Вы сможете найти в каталоге prabhupada_calendar/RU скачанной программы. Все галочки я рекомендую оставить включенными. Смело нажимаем кнопку “Есть работать по Стахановски!” и ждем, пока программа работает над формированием календаря-панчанги в текстовом виде. После формирования результата, я рекомендую установить в Вашей операционной системе шрифт FreeSerif, так как вся верстка в моем варианте использует именно этот шрифт, но Вы можете использовать и любой другой. Для установки FreeSerif необходимо распаковать файл FreeSerif.zip из каталога RU и полученные файлы с расширением tft установить в Вашу систему. Возможно, что шрифт FreeSerif у Вас уже установлен, тогда его дополнительно устанавливать не надо!
Теперь Вам необходимо установит программу Scribus . Я использовал версию Scribus 1.4.6 . Пробовал также версию Scribus 1.5.3 , но, к сожалению, новая версия Скрибуса так медленно работала, что собственно работать на ней я не смог. Каждый шелчок мышью – и зависание на десятки минут, если не на часы. Scribus 1.4.6 с большими файлами работает тоже очень и очень медленно, но Вы наберитесь терпения – десять минут на операцию – это нормально для него 🙂 . Возможно, что у меня мало памяти для Скрибуса (2 Гигабайта), возможно мой диск SSD слишком медленно работает с файлом подкачки. Возможно. Возможно у Вас не будет проблем с быстродействием Скрибус, хотя это сомнительно. Так или иначе – идем дальше! Нужно запустить программу Скрибус 1.4.6 и открыть демонстрационный и он же шаблонный файл Донецк 2017-2069.sla.gz , который находится все в том же каталоге RU . Теперь, когда файл загружен, необходимо проделать проделать несколько шагов:
1. На первой странице календаря-панчанги выбрать мышкой текстовый блок с календарем. Теперь кнопка “Изменить текст (Ctrl+T)” станет доступной! Надо нажать её! Кстати у меня быстрая клавиша Скрибуса 1.4.6 Ctrl+T не работала, равно как и многие другие быстрые клавиши. В Скрибусе 1.5.3 быстрые клавиши работали! Итак у нас появилась окошко редактирования текста “Story Editor – Текст 5”, где Текст 5 – просто имя нашего текстового блока. В нем мы и будем работать! Для начала удалим весь текст – команда меню “Файл” -> “Удалить весь текст”
2. Загрузим наш календарь-панчангу на русском языке: меню “Файл” -> “Загрузить из файла” и выбрать наш файл на русском, в моем варианте – Donetsk2017-2069.ура .
3. Выделяем весь текст – меню “Правка” -> “Выделить всё Ctrl+A”
4. Установить стиль “Праздник” для всех абзацев календаря-панчанги. Щелкнуть мышкой на первом абзаце с целью убрать выделение всего текста.
5. Воспользуемся диалогом “Поиск и замена” для установки нужных стилей определенным абзацам календаря-панчанги. Меню – “Правка” -> “Найти/заменить… Ctrl+F”

В колонке “Найти:” устанавливаем галочку Текст и в поле ввода текста пишем “Маса, Гаурабда”
Внизу устанавливаем галочку “Слово целиком”
В колонке “Заменить на:” в поле ввода тоже пишем “Маса, Гаурабда”
Устанавливаем галочку “Стиль” и выбираем мышкой стиль “Месяц”

Нажимаем кнопку “Искать”, после этого кнопка “Заменить всё” становится доступной! Именно её мы и нажимаем! Теперь ждем результата. Для выполнения всех замен может уйти несколько минут.
6. Провести поиск и замену для всех месяцев по рецепту пункта 5, с той лишь разницей, что стиль в колонке “Заменить на:” нужно установить в “День” :
января заменяем на января со стилем “День”
февраля заменяем на февраля со стилем “День”
марта заменяем на марта со стилем “День”
апреля заменяем на апреля со стилем “День”
мая заменяем на мая со стилем “День”
июня заменяем на июня со стилем “День”
июля заменяем на июля со стилем “День”
августа заменяем на августа со стилем “День”
сентября заменяем на сентября со стилем “День”
октября заменяем на октября со стилем “День”
ноября заменяем на ноября со стилем “День”
декабря заменяем на декабря со стилем “День”

не забывая, что галочку “Слово целиком” на всякий случай нужно включать
7. Провести поиск и замену фразы “Солнце вошло” по тому же рецепту, с той лишь разницей, что стиль в колонке “Заменить на:” нужно установить в “Солнце”!
8. Нажимаем кнопку “Обновить текст в блоке и выйти Ctrl+W” или аналогичное меню “Файл” -> “Обновить текст в блоке и выйти Ctrl+W”.
9. Сохраняем наш календарь-панчангу, нажав кнопку “Сохранить (Ctrl+S)”.
10. Экспортируем наш календарь-панчангу в файл формата PDF. Меню – “Файл” -> “Экспортировать” -> “Сохранить как PDF…” . Я включил галочку “Сжать текст и векторную графику” – качество от этого не меняется, только размер PDF-ки, остальные настройки оставил как есть “Все страницы”, Совместимость – “PDF 1.4 (Acrobat 5)”. Пишем подходящее имяч файла, в моем случае это – Донецк 2017-2069.pdf и жмём кнопку “Сохранить”! Ждем окончания процесса!
11. Теперь файл Донецк 2017-2069.pdf готов, в нем каждая страничка имеет размер А5 и теперь необходимо из этого файла получить такой файл pdf, в котором каждая страничка будет иметь в два раза больший размер, то есть А4 и на которой будет помещаться ровно по две страницы нашего календаря-панчанги или на крайней странице формата А4 может быть одна страница формата А5, если количество страниц А5 нечетное число. На профессиональном жаргоне такое действие называется “спуск полос”. Помню выражение “спуск полос” я первый раз услышал от Абхинанды прабху. Краткое ознакомление с программами для “спуска полос” выявило закономерность – практически все серьёзные программы “спуска полос” – платные, со стоимостью доходящей до нескольких тысяч долларов. Я воспользовался бесплатной программой для спуска полос – Bookletimposer, которую необходимо установить с сайта – http://kjo.herbesfolles.org/bookletimposer/ . Если Вы пользователь Ubuntu – можно скачать установочный пакет, для других систем автор Bookletimposer Kjö Hansi Glaz предлагает установить из исходных текстов. Это не трудно. Скачиваем исходные тексты и в терминале в каталоге программы Bookletimposer выполняем всего две команды:

$ ./setup.py build
$ sudo ./setup.py install

Программа Bookletimposer написана на языке программирования Питон версии 2. В моем случае мне потребовалось установить в мою операционную систему Линукс Федора 27 дополнительные пакеты:

$ sudo dnf install python3-distutils-extra python2-distutils-extra intltool python2-PyPDF2 python3-PyPDF2 pyPdf

10. Итак, когда Bookletimposer успешно установлен, его необходимо запустить! После запуска я выбрал вариант “Put multiple input pages on one output sheet label” – это третяя огромная кнопка-флажок в самом верху! Осталось выбрать “Input file” (входной файл) – в моем случае – это файл “Донецк 2017-2069.pdf” . Bookletimposer любезно предложил в качестве имени выходного файла “Донецк 2017-2069-conv.pdf”. Я согласился и нажал кнопку “Преобразовать”. Все! Остается дождаться результата! И календарик-панчанга на много много лет вперед готов! Ура! Харе Кришна! Теперь остается только напечатать календарик и подшить его. Данный вариант верстки рассчитан на подшивку вдоль верхнего края календаря. Сам календарь-панчанга получился в “альбомной” ориентации.

Харе Кришна!

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