16
Проект “Ниҳол”. Некоторые особенности и опыт веб-разработки. Группа разработчиков CODE.TJ: Раджабов Комил

Проект "Нихол"

Embed Size (px)

Citation preview

Page 1: Проект "Нихол"

Проект “Ниҳол”. Некоторые особенности и опыт

веб-разработки.

Группа разработчиков CODE.TJ:

Раджабов Комил

Page 2: Проект "Нихол"

Что такое “Ниҳол” ?

“Ниҳол” – это упрощенный и легкий фреймворк для разработки веб-приложений и веб-сервисов. Он разработан на базе PHP и JavaScript. Простота и легкость в использовании, а также модульная структура придают ему гибкость и возможность масштабирования. Примечание: Фреймворк (каркас) – это структура программной системы, а также набор готовых компонентов и моделей, облегчающих разработку программного продукта.

Page 3: Проект "Нихол"

О том как появился проект

В 2011-м году мой друг обратился ко мне с просьбой помочь ему с разработкой небольшого приложения для корпоративных нужд. Примерно так все и началось… Отмечу, что это произошло после моего приезда из Москвы, где я работал в команде над одним B2B проектом, и на тот момент у меня уже был некоторый опыт разработки (VB, C#, JS, PHP). Видимо именно тогда пришла мысль о создании некоего удобного инструмента, который бы позволил разрабатывать веб-приложения в дальнейшем (затем я начал работу еще над одним проектом также на базе вновь разработанного единого каркаса).

Page 4: Проект "Нихол"

Структура “Ниҳол”

Система логически разделена на три основных составляющих – это ядро, модули приложения (back-end) и пользовательский интерфейс (front-end). На сегодня в основе “Ниҳол” заложены принципы объектно-ориентированного программирования (ООП) и собственная реализация шаблона проектирования MVC (Модель-Представление-Контроллер).

Page 5: Проект "Нихол"

Файловая иерархияNIHOL

├───app

│ ├───mvc

│ │ ├───controllers

│ │ ├───models

│ │ └───views

│ ├───pages

│ └───sql

├───core

│ ├───lib

│ └───mvc

│ ├───controllers

│ ├───models

│ └───views

└───ui

├───templates

│ └───appname

│ ├───css

│ └───img

│ └───ico

└───tools

├───bootstrap

│ ├───css

│ ├───fonts

│ └───js

└───jquery

└───ui

├───css

│ └───smoothness

│ └───images

└───js

└───i18n

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

Page 6: Проект "Нихол"

Хронология развития

Page 7: Проект "Нихол"

О кодеЗа время работы над развитием проекта применялись разнообразные подходы при написании

кода. В ранних версиях каркас разрабатывался с обильным применением функций, затем начался переход к повсеместному применению ООП, то есть функции преобразовались в методы неких классов, затем классы группировались в области имен и т.д. Например, на смену стандартным функциям для работы с базами данных в “Ниҳол” стал применяться функционал PDO, что позволяет делать приложения более безопасными и гибкими по отношению к источникам данных. Также повсеместно применялись успешные практики сообщества PHP-разработчиков для решения тех или иных задач проектирования. В системе есть своя реализация принципов шаблона (паттерна) проектирования MVC, также встречаются шаблоны типа «синглтон», применяется autoloader классов и многие другие полезные приемы. Что касается пользовательского интерфейса, то “Ниҳол” позволяет интегрировать сторонние инструменты, такие как JQuery, JQuery UI, Bootstrap и др., это добавляет удобство для разработки, при этом также сохраняется возможность использования своих собственных шаблонов и front-end скриптов. В ходе работы над некоторыми конкретными задачами приходилось реализовывать возможности локализации интерфейса, в том числе и на таджикский язык. В ядре системы имеются модули управления пользователями и группами пользователей, кроме того есть панель управления для пользователей и администраторов.

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

Таким образом, “Ниҳол” – это open source проект, которому есть куда развиваться =)

Page 8: Проект "Нихол"

Применяемые технологии

Page 9: Проект "Нихол"

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

Page 10: Проект "Нихол"

Проект автоматизированного мониторингаДанный программный продукт был реализован для осуществления автоматизированного мониторинга хода реализации проекта «Управление инвестициями на питание в наиболее необеспеченные продовольствием районы Хатлонской области». Он охватывал город Душанбе и 10 районов Хатлонской области, откуда посредством каналов связи (3G модемы осуществлялся доступ к приложению и базе данных).

Page 11: Проект "Нихол"

Формы для ввода информации и сводные таблицы

Page 12: Проект "Нихол"

Статистика системы по районам

Page 13: Проект "Нихол"

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

Page 14: Проект "Нихол"

ВопросникВопросник содержал порядка 300 вопросов, были большие формы с обработкой зависимостей… Была привязка данных к точкам карте (геолокация)…

Page 15: Проект "Нихол"

Один из новых проектовДанный проект автоматизирует процесс управления и обработки отчетов телефонного биллинга… Работает с отчетами в формате XML, преобразует при необходимости в Excel или веб-вариант, предоставляя доступ пользователей к личным кабинетам, вывод статистики, содержание справочной информации и др.

Page 16: Проект "Нихол"

СПАСИБО ЗА ВНИМАНИЕ!

Наши контакты: Website: http://code.tj; E-mail: [email protected]; http://facebook.com/groups/code.tj