|
Проект, который родился не в воспаленном мозге программиста, а из потребности юзеров срочно завести картотеку.
Назад
Проект, который родился не в воспаленном мозге программиста, а из потребности юзеров срочно завести картотеку.
|
Почему я решил описать рождение именно этого проекта, а не одного из десятков других, коих история похожа, затрудняюсь сказать - так уж вышло.
Однажды в конце октября 2010 ко мне зашел начальник одного управления, которого высокое руководство бросило на прорыв с поручением срочно навести порядок в учете, ну скажем условно, курсантов учебного подразделения. Выяснилось, что в тот момент невозможно было достоверно сказать об этой группе людей, ничего, кроме того, что такая группа существует. Несколько пыльных папок с бумагами, да десяток разрозненных файлов в формате ворда и экселя - вот как хочешь, так и считай своих человечков.
Просьбу коллега сформулировал кратко: сделай срочно(!), какую-нибудь базу данных, чтоб можно было хоть элементарный список составить, ну а потом уж будем развивать... Вот такое ТЗ.
Последние лет десять я почти ничего, кроме web-проектов, не писал, поэтому мысли ваять что-то на дельфи, 1С или, прости господи, акцсесе у меня не возникло - ясно, что это будет web-сервис.
Пару минут (ну ладно, часов) я поразмышлял, и понял, что мне неизвестно:
- кроме фамилий, какие еще сведения о каждом курсанте необходимо хранить в базе;
- какого типа будут эти данные;
- какой механизм потребуется для отбора подмножеств курсантов (по курсам, специальностям, пр.)
- какие формы вывода на печать необходимо предусмотреть.
Времени на выяснение ответов не было, к тому же и не было никого живого, кто мог бы их внятно сформулировать. Нужно было срочно что-то придумать, а что неясно... Знакомо.
В таких случаях вместо удочки надо давать юзеру ножик (чтоб выстругал себе удилище), кусок лески и крючок. Я решил так и сделать.
Итак генератор, конфигуратор, конструктор - как хочешь назови - юзер сам должен строить свою систему. Сначала, конечно вкривь и вкось, потом вернется и поправит.
Поискал аналоги, повспоминал, понял - готового решения не найти - придется-таки поработать руками (для мозга здесь занятия не предвиделось).
Систему авторизации я взял из предыдцщего своего проекта, а все остальное решил написать с нуля.
В опорную таблицу (назвал ее t0) включил поля ФИО, Примечания и Дедлайн. Первое, очевидно, необходимо, остальные - от фонаря - чтоб место не пустовало на первом экране. (Визуализация в таком простом проекте сама получается, паралельно с разработкой базовой архитектуры.)
Остальные таблицы и их поля должен проектировать сам юзер (админ) из расчета - чтоб одна таблица помещалась по ширине экрана (в браузере конечно).
Ах да, база - MySQL, язык программирования - PHP, сервер - Linux & Apache, в общем классический LAMP.
Списки таблиц и полей сохраняются в базе, а рабочие таблицы на их основе создаются автоматом по мере заполнения данными. Типы полей я упростил до предела, дав админу на выбор очень короткий список: строка, текст, дата, число.
Если таблица еще пуста ее можно и удалить, иначе админ должен вначале перенести из нее непустые колонки в другую таблицу, можно специально создать таблицу под названием Корзина для подобных целей.
На самом деле таблицы mysql имеют имена типа t1, t2, t3, и поля f1, f2, f3, но для конструирования интерфейса юзера это не годится, поэтому предусмотрены места для хранения человеческих имен и порядка сортировки. В любое время админ может переименовать и пересортировать таблицы и поля в них. Таким образом админ формирует карточку курсанта состоящую из полей, которые сгруппированы потаблично.
Те поля у которых в конструкторе поставили птичку Фильтр - становятся донорами для селекторов в экранной таблице.
Потом я подумал, что неплохо бы к карточке дать возможность прикладывать файлы, фотографии и не только. Сделал и это. Вот конструктор и готов
Подобная штука (конструктор), чуть позже, была придумана для генерации отчетов (печатных форм). Конструировать их может только админ, а юзать могут все. О них подробно написано в FAQ`е.
Через пару дней после "получения ТЗ" отдел по учету курсантов, с радостным повизгиванием, начал заполнять базу (штук 200 фамилий я им залил из экселевского файла). А сегодня я закончил шлифовать ее (систему) наждачкой и решил зафиксировать эту историю для истории.
Пожалуй на этом нужно заканчивать лирику - пора давать адреса, пароли, явки:
Исходник (дамп внутри) брать
Смотреть действующую модель
Суперпользователь:
Логин: an2kus@gmail.com
Пароль: 111
Админ БД:
Логин: admin@gmail.com
Пароль: 111
Редактор БД:
Логин: editor@gmail.com
Пароль: 111
Юзер (читатель):
Логин: user@@gmail.com
Пароль: 111
Засим, привет!
Пишите, если что.
Док. 635412 Опублик.: 17.01.11 Число обращений: 0
Немченко Александр Борисович
|
|
|
|
|