1 (edited by k245 2023-09-05 07:52:48)

Topic: Курсы обучения и статьи о разработке приложений

В данной теме публикуются ссылки на статьи, публикуемые в моем блоге, который посвящен разработке приложений на платформе My Visual Database: https://k245.ru


https://lh5.googleusercontent.com/Ps7hF74MPsizPdiErgQ3Se6GvHt9RGZf9rDJUKHKIiUxisbsbMxeImTGX-y6iRS7ac2_VfSIwbB4s5gYHlgeIjII6YQXv3b5a3rI_XGP-tEp_2XnbWoGWKBe6A2yEicjLzwIZP8_=w640-h434


Приглашаю всех заинтересованных в группу ВК - https://vk.com/createmyvisualdatabaseapp Вопросы и предложения можно писать в ВК или здесь.


Курсы обучения находятся в Библиотеке: https://k245.ru/biblioteka

Визуальное программирование: блог и телеграм-канал.

2 (edited by k245 2022-03-23 07:42:45)

Re: Курсы обучения и статьи о разработке приложений

Представляю вашему вниманию первую статью из серии публикаций, посвященных разработке приложений на платформе My Visual Database, в которой описывается создание формы авторизации.


Форма №1

https://lh6.googleusercontent.com/qjlobLhZdw0BfUZaBPBMUIqzip7h9iA4yrhW07o7UTx1u-l9N_zNZUDvnSdH87vQYZ0whGmo46VW0PPpQELQW0hFxYbRFIUozO9XpTIe-uLeDKV16C_ihsOhM6prEbuAvp-cYR2S

Вступление

С чего начинается создание приложения для работы с базой данных? Казалось бы ответ очевиден – с проектирования базы данных, которая предназначена для решения конкретной прикладной задачи. Однако данная статья будет посвящена созданию основы, фундамента для любого приложения, создаваемого на платформе My Visual Database. Задача такого фундамента – обеспечить возможность роста и расширения функциональности с минимальными затратами.


С помощью My Visual Database можно создавать приложения, которые будут работать с СУБД SQLite или MySQL. Эта статья рассматривает использование SQLite, но большинство решений может быть использовано и для работы с MySQL.


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


Что же является главным фактором, определяющим архитектуру приложения? Смею утверждать, что главным является пользователь. Всё остальное должно лишь помогать ему решать задачи, стоящие перед ним. Поэтому, даже если вы создаёте самое простое приложение с одной оконной формой, не забывайте о главном - о пользователе.


Пользователь

Пользователь достоин того, чтобы увековечить его в создаваемой базе данных, поэтому первой таблицей, которую мы создадим, будет таблица “user_”.


Хотя My Visual Database разрешает использовать для названия таблиц и полей любые названия на любом языке, я рекомендую использовать английский, а если название поля или таблицы совпадает со служебным словом, то добавлять в конце символ подчёркивания. Это позволит упростить написание SQL-запросов.


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


Создадим таблицу user_ и добавим в неё несколько полей, которые будут являться идентификаторами пользователя, а также позволят произвести дальнейшую аутентификацию и авторизацию.


Статья вошла в книгу "Визуальное программирование":  https://mvdlibrary.blogspot.com/p/blog-page_6.html

Визуальное программирование: блог и телеграм-канал.

3 (edited by k245 2022-03-23 07:43:10)

Re: Курсы обучения и статьи о разработке приложений

Форма №2
https://pp.userapi.com/c850524/v850524002/8cc17/Y2d0XdXxRpc.jpg


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


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


Разумеется, кроме имени, на этой форме должна быть исчерпывающая информация о приложении: название, назначение, версия, информация о лицензионном соглашении, о владельце лицензии и так далее. Возможно, что предложенный вариант формы “About” кому-то покажется слишком сложным. Но если вы планируете для своего детища долгую жизнь, отнеситесь к данной информации с максимальной серьёзностью.


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


Статья вошла в книгу "Визуальное программирование":  https://mvdlibrary.blogspot.com/p/blog-page_6.html

Визуальное программирование: блог и телеграм-канал.

Re: Курсы обучения и статьи о разработке приложений

Hello K25

Great idea to write a training on creation of application manipulating one or more databases
data made with MVD.

Your first two articles are very clear, well written, well illustrated, snipets of strictly effective codes.

Nothing to say but encouragement.

For my personal interest, I translated them into French (my mother language

If your articles are free for the vast majority of users (and future) of MVD, I can communicate them to you, and I can even translate them in English to increase the distribution.

An email from you and go.

Once again, congratulations, it's gone.

Best regards

JB

5 (edited by newusr 2019-01-15 09:20:24)

Re: Курсы обучения и статьи о разработке приложений

vovka3003 wrote:

Сложно назвать это защитой (если вообще можно назвать защитой нешифрованную xml инструкцию, полностью дублирующую скрипт). Несложным парсером можно получить полноценное содержимое.
Вкупе с открытым содержимым форм создаваемые проекты можно считать беззащитными.

Ага, особенно если в скрипте хранится информация о подключении к MySQL серверу)))
Давно задавал вопрос защиты разработчику, но кроме совета удалить script.pas и хранить пароль в отдельном зашифрованном файле решений ни каких ...
Приходится использовать другие способы защиты.

Re: Курсы обучения и статьи о разработке приложений

jean.brezhonek wrote:

For my personal interest, I translated them into French (my mother language
If your articles are free for the vast majority of users (and future) of MVD, I can communicate them to you, and I can even translate them in English to increase the distribution.
An email from you and go.

Hello Jean!
Thank you for your appreciation of my work. Of course, you can freely translate them into other languages, when publishing, please give references to the source. I would be grateful if you send me links to your translation publications. The purpose of my articles is to expand the audience of MVD users, to increase development efficiency by increasing the level of knowledge. Perhaps in the future I will write a book based on these articles. Can I hope for your help in translating it? You can write me on mail: k245@mail.ru

Визуальное программирование: блог и телеграм-канал.

Re: Курсы обучения и статьи о разработке приложений

vovka3003 wrote:

Вкупе с открытым содержимым форм создаваемые проекты можно считать беззащитными.

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

Визуальное программирование: блог и телеграм-канал.

Re: Курсы обучения и статьи о разработке приложений

newusr wrote:

Давно задавал вопрос защиты разработчику, но кроме совета удалить script.pas и хранить пароль в отдельном зашифрованном файле решений ни каких ...
Приходится использовать другие способы защиты.

Хранить пароль доступа в скриптах имеет смысл только в случае, если вы - единственный пользователь системы. По личному опыту могу сказать, что, когда не хочется использовать встроенную систему безопасности СУБД, возникает соблазн создать свою, попроще. Или когда встроенной системы нет (SQLite). Но, если есть возможность, используйте штатную СБ, и тогда проблемы с хранением пароля не станет, потому что его нужно будет вводить при каждом подключении к серверу smile

Визуальное программирование: блог и телеграм-канал.

Re: Курсы обучения и статьи о разработке приложений

vovka3003 wrote:

Я бы просто рекомендовал это осветить в курсах.

Принято smile

Визуальное программирование: блог и телеграм-канал.

Re: Курсы обучения и статьи о разработке приложений

k245 wrote:

Хранить пароль доступа в скриптах имеет смысл только в случае, если вы - единственный пользователь системы..... Но, если есть возможность, используйте штатную СБ, и тогда проблемы с хранением пароля не станет, потому что его нужно будет вводить при каждом подключении к серверу smile

Я говорил о случае когда подключение к БД MySQL происходит скриптом и данные для подключения записаны в скрипт. Не понял, зачем пользователю каждый раз нужно будет вводить данные для доступа к БД MySQL (ip, логин, пароль пользователя БД), зачем вообще пользователю знать что происходит подключение к какой-то там базе.
Согласен с vovka3003, что необходимо этот вопрос рассмотреть в курсах. Материал мне тоже понравился, ждём новых статей!

Re: Курсы обучения и статьи о разработке приложений

newusr wrote:

...зачем пользователю каждый раз нужно будет вводить данные для доступа к БД MySQL (ip, логин, пароль пользователя БД)...

Логин и пароль нужно вводить ручками при каждом подключении, это основа любой системы безопасности. С другой стороны наблюдается тенденция игнорировать эту безопасность (например, хранение паролей браузером и автоматическая подстановка при входе на страницу). Наверное, такая возможность нужна, но при этом предупредить пользователя, что используя эту фичу, он создаёт дыру в системе безопасности smile  IP и порт подключения, разумеется, нужно хранить в настройках.

newusr wrote:

Материал мне тоже понравился, ждём новых статей!

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

Визуальное программирование: блог и телеграм-канал.

Re: Курсы обучения и статьи о разработке приложений

Hello k25

No problem for the translation of your articles.
But before, by principle and respect, see with Dmitri, you use the name of his creation (My Visual Database) and he may have something to say on this point.

JB

Re: Курсы обучения и статьи о разработке приложений

jean.brezhonek wrote:

Hello k25

No problem for the translation of your articles.
But before, by principle and respect, see with Dmitri, you use the name of his creation (My Visual Database) and he may have something to say on this point.

JB

Hello.


k245 is my partner and I fully support his work on creating lessons for My Visual Database.
Thank you for the help! smile

Dmitry.

Re: Курсы обучения и статьи о разработке приложений

Hello Dmitry, k25

Well, no problem to go !

JB

Re: Курсы обучения и статьи о разработке приложений

Hello Dmitry, k25

Please, find in attachment, your two first courses translated into french.
I'm going on with english translation.

Regards
JB

Re: Курсы обучения и статьи о разработке приложений

Hello Dmitry, k25

Please, find in attachment, your two first courses translated into french.
I'm going on with english translation.

Regards
JB

17 (edited by k245 2022-03-23 07:43:30)

Re: Курсы обучения и статьи о разработке приложений

Меню
https://pp.userapi.com/c849224/v849224200/11ea85/4ff7aNpuhtE.jpg
Данная статья продолжает рассказ об универсальном наборе функций для создания многопользовательского приложения и посвящена подсистеме главного меню. В качестве основы взят проект about.vdb, описанный в статье “Форма №2”.


Роль главного меню

Если в вашем приложении больше одной формы (а в нашем базовом проекте их уже пять), то вам обязательно понадобится главное меню. Кроме функции отображения различных форм и вызова процедур, главное меню выполняет очень важную работу: знакомит пользователя с возможностями приложения. Хорошо продуманная и лёгкая для восприятия структура главного меню – это один из признаков дружественного пользовательского интерфейса.


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


Структура форм

Традиционно различают два типа представления оконного интерфейса: SDI и MDI.


SDI (Single Document Interface) – однодокументный интерфейс.
Приложения с таким интерфейсом имеют одну главную форму, на которой отображается редактируемый объект. Все остальные формы являются вспомогательными и отображаются модально.


MDI (Multiple Document Interface) – многодокументный интерфейс.
Данный интерфейс предполагает отображение нескольких форм внутри главной формы. При этом они одновременно отображаются в рабочей области, а могут быть развёрнуты на всю рабочую область с возможностью быстрого переключения между ними. Несмотря на то, что Windows имеет встроенную возможность создавать MDI-окна, на практике чаще используется альтернативный метод визуализации MDI с применением компонента TPageControl или динамическое встраивание форм.


Статья вошла в книгу "Визуальное программирование":  https://mvdlibrary.blogspot.com/p/blog-page_6.html

Визуальное программирование: блог и телеграм-канал.

18 (edited by k245 2022-03-23 07:43:47)

Re: Курсы обучения и статьи о разработке приложений

Наводим порядок


В My Visual Database нет ограничений на количество строк в скрипте, но листать исходники, которые занимают несколько экранов, очень неудобно. В реальных проектах число строк кода может достигать нескольких тысяч. Каким образом можно навести порядок в скриптах, чтобы сделать их чтение и редактирование комфортным?

https://pp.userapi.com/c847018/v847018050/19fc06/P4s2KRUgS0M.jpg


Статья вошла в книгу "Визуальное программирование":  https://mvdlibrary.blogspot.com/p/blog-page_6.html

Визуальное программирование: блог и телеграм-канал.

19 (edited by k245 2022-03-23 07:43:58)

Re: Курсы обучения и статьи о разработке приложений

Панель инструментов

https://pp.userapi.com/c850224/v850224959/ecf65/1QCixMjNi-c.jpg


После главного меню вторым по востребованности элементом пользовательского интерфейса является панель инструментов: кнопки для быстрого доступа к отдельным пунктам главного меню.


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


Статья вошла в книгу "Визуальное программирование":  https://mvdlibrary.blogspot.com/p/blog-page_6.html

Визуальное программирование: блог и телеграм-канал.

Re: Курсы обучения и статьи о разработке приложений

k245 wrote:

Панель инструментов

Читать статью полностью: https://vk.com/@createmyvisualdatabasea … strumentov

// загрузка картинок в TImageList
procedure LoadImages( AImageList:TImageList; AImageNames: TStringList; ASize:integer; AImageDir:string );
// загрузка картинок сделана процедурой с параметрами, так как в приложении может быть несколько размеров изображений
// которые должны храниться в разных списках; картинки в формате png

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

// назначить индекс изображения по названию файла
procedure SetImage( AImageList:TImageList; AImageNames: TStringList; AButton:TdbButton; AImageName:string );

Re: Курсы обучения и статьи о разработке приложений

mapcreatormail wrote:

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

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

Визуальное программирование: блог и телеграм-канал.

22 (edited by k245 2022-03-23 07:44:11)

Re: Курсы обучения и статьи о разработке приложений

Главная форма


https://pp.userapi.com/c844416/v844416659/1a142c/oJ10f-0mH2I.jpg


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


Статья вошла в книгу "Визуальное программирование":  https://mvdlibrary.blogspot.com/p/blog-page_6.html

Визуальное программирование: блог и телеграм-канал.

23 (edited by k245 2022-03-23 07:44:20)

Re: Курсы обучения и статьи о разработке приложений

Форма для данных


https://pp.userapi.com/c849324/v849324370/136957/3cDPj8zjKQc.jpg


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


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


Статья вошла в книгу "Визуальное программирование":  https://mvdlibrary.blogspot.com/p/blog-page_6.html

Визуальное программирование: блог и телеграм-канал.

Re: Курсы обучения и статьи о разработке приложений

k245 wrote:
mapcreatormail wrote:

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

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

Количество параметров в процедуре SetImage() все-таки увеличилось на один,  см. https://vk.com/@createmyvisualdatabasea … zobrazheny

Визуальное программирование: блог и телеграм-канал.

25 (edited by k245 2022-03-23 07:44:31)

Re: Курсы обучения и статьи о разработке приложений

Настройки: code VS base


https://sun1-16.userapi.com/c851216/v851216003/ce13f/bZ5Sp4_Cf3Q.jpg


В нашем проекте поддерживается возможность ведения настроек проекта как в коде, так и в базе данных. Речь идет о настройке главного меню и системы прав. Однако, при детальном анализе текущей реализации была выявлена проблема: удаление всех данных перед созданием, а так же использование встроенного в СУБД механизма каскадного удаления данных может привести к потере данных, введенных вручную или к блокировке удаления из-за наличия связанных данных.


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


Возможно, что в реальном проекте не понадобится одновременно использовать оба механизма ввода данных, но некоторые приёмы, рассматриваемые в данной статье, можно использовать и в прикладных задачах.


Статья вошла в книгу "Визуальное программирование":  https://mvdlibrary.blogspot.com/p/blog-page_6.html

Визуальное программирование: блог и телеграм-канал.