Обзор типовых решений в области веб-разработки
· Операционная система Ubuntu 16.04 (рис. 1)
Является одной из самых популярных операционных систем семейства Linux. Выпускается в редакции Server и Desktop. Обладает предустановленным сервером Apache2, PHP7.0, mysql и ещё целым рядом программ, предназначенных для веб-разработки. Все популярные инструменты и технологии как правило создаются конкретно для пользователей данной операционной системы.
Обладает огромными возможностями для расширяемости, кастомизации, а также набором репозиториев, приложений и библиотек, удовлетворяющих почти любые нужды при разработке.
Для максимально удобного использования Ubuntu необходимы знания консольных команд, в которой происходит большинство взаимодействий с системой. Нет необходимости постоянного использования браузера и поиска нужных программ, скачивания их, настройки и т.д. Все эти действия заменят ввод пары команд в консоли.
Система является защищенной к вирусным атакам, обладает встроенными инструментами шифрования, распространяется бесплатно, обладает большим сообществом, регулярно обновляется [4].
Рис. 1. Рабочий стол Ubuntu 16.04
· Язык программирования PHP 7
Является намного быстрее по сравнению со своим предшественником PHP5.6 согласно источнику html5.by (рис. 2)
Рис. 2. Тест производительности PHP7 при работе различных фреймворков
В PHP7 были убраны многие устаревшие функции, введена поддержка строгой типизации, добавлены новые методы, операторы, синтаксис кодирования Unicode, групповая декларация use, множество новых возможностей синтаксиса, улучшенная обработка исключений, анонимные функции.
· Язык программирования ECMAScript 6
Одним из самых важных нововведений в последних версиях ECMAScript является полноценная поддержка использования классов, несмотря на то, что они, по сути, являются синтаксическим сахаром (конструкцией языка для упрощения реализации программного кода) прототипами [5].
Из остальных значительных нововведений можно выделить поддержку импорта и экспорта модулей, строковые шаблоны, введение нового способа объявления переменных через let и const, а также появление стрелочных функций.
· Менеджер пакетов Composer
Composer – это пакетный менеджер для языка PHP. Он упрощает установку каких-либо сторонних библиотек, используемых в проекте, перенос проекта от одного разработчику к другому.
Работа с composer осуществляется через командную строку. При установке какого-либо пакета, располагающегося в репозитории, имеется возможность указания версии. Composer обладает встроенным автозагрузчиком классов, прост в установке и конфигурации [6].
· Менеджер пакетов NPM
NPM представляет собой менеджер пакетов, входящий в состав NodeJS. Имеет огромную базу приложений в репозитории, упрощают установку и интеграцию различных js, css и прочих библиотек [7]. Так же, как и с Composer, взаимодействие осуществляется через командную строку, но имеется и возможность использования графических оболочек. Содержимое конфигурационного файл представляет собой json-массив, аналогично таковому в Composer.
· Шаблонизатор Twig
Twig является шаблонизатором, написанным на языке PHP. Позволяет жёстко разграничить понятия Controller и Viewer, так как при написании шаблона страницы используется только характерные для Viewer функции и синтаксис, который в свою очередь является более удобным и сокращённым по сравнению с PHP [8].
Twig обладает встроенной системой кеширования страниц, позволяет расширять свой функционал в зависимости от подробностей при разработке проекта путём написания дополнительных классов и методов, является шаблонизатором по умолчанию в Symfony.
У Twig открытый исходный код, имеется русскоязычная документация.
· ORM Doctrine
Doctrine создаёт слой абстракций над БД и позволяет связать их с концепциями объектно-ориентированного программирования. Работа с базой данных представляет собой исключительно взаимодействие с объектами. Каждая таблица – объект [9].
Doctrine избавляет программиста от написания дублирующегося кода в виде однотипных SQL-запросов, а синтаксис взаимодействия с объектами абсолютно не зависит от выбранной СУБД, обладает системой защиты от SQL-инъекций, обеспечивает сохранение целостности данных, имеет обширную документацию. При необходимости изменения СУБД код переписывать не нужно.
· Система контроля версий Git
Git является системой контроля версий, обладает как и возможностью консольного управления, так и графической оболочкой, интегрирован во множество IDE, имеет высокую производительность [10].
· IDE PhpStorm
PhpStorm идеально подходит для работы с Symfony, Drupal, WordPress, Zend Framework, Laravel, Magento, Joomla!, CakePHP, Yii, и другими фреймворками. Он индексирует весь код проекта, поддерживает множество языков, автодополнение, рефакторинг кода, подсветку ошибок, встроенные инструменты для работы с SFTP, консолью, базами данных и т. д. [11].
Для студентов PhpStorm распространяется бесплатно.
· Инструмент для сборки фронтенда Webpack
Инструмент для сборки фронтенда, обеспечивающиый объединение различных модулей, минимизацию файлов, использование различных загрузчиков и преобразователей. Обладает гибкими настройками, автоматической пересборкой при изменении, проектирование в зависимости от окружения [12].
· CSS-фреймворк Material Design Lite
Позволяет использовать элементы Material Design на сайте. Данный фреймворк не связан ни с каким js-фреймворком и является универсальным. Страницы, разработанные с помощью MDL будет придерживаться современных принципов веб-дизайна, поддерживать мобильные браузеры, будут адаптивны и минималистичны.
MDL включает в себя новые версии управления пользовательским интерфейсом, такие как кнопки, флажки и текстовые поля. Библиотека также включает в себя расширенные и специализированные функции, такие как карты, макеты колонок, ползунки, счетчики, вкладки и многое другое [13].
· Язык стилей LESS
Язык существенно расширяет стандартные возможности CSS, добавляет возможность использования переменных, вложенности, примесей, функций, операций. Любой валидный CSS код является валидным и в LESS [14].
· PHP-фреймворк Symfony3 (рис. 3)
Один из самых популярных и современных PHP-фреймворков на данный момент. Он использует модель MVC, поддерживает множество различных баз данных, в составе фреймворка поставляется Doctrine, Twig, Composer, а также ряд других библиотек. Весь исходный код фреймворка соответствует стандартам PSR, имеет поддержку PHP7. Symfony имеет собственный хост разработки, подробную документацию по функционалу с подробными примерами. Обновления появляются регулярно с периодичностью в несколько недель [15].
Рис. 3. Панель статистики в Symfony3
· БД PostgreSQL
Является объектно-реляционной базой данных, то есть содержит технологии, реализующие объектно-ориентированный подход [16]. Некоторые преимущества PostgreSQL по сравнению с MySQL:
o Подзапросы можно писать отдельно, давая им имена.
o Большое количество различных типов данных, в том числе возможность добавления пользовательских типов.
o Ограничения самой базы данных, обеспечивающие целостность данных. Возможность ограничения по некоторому диапазону, условию и т. д.
o Тип json и полноценная работа с ним.
o Хранимые процедуры на любых языках.
o Репликация работает быстро и консистентно.
o При правильной настройке запросы выполняются в разы быстрее.
o Строгий режим. В отличии от MySQL, PostrgreSQL не позволит сделать двусмысленный запрос и получить обрезанную строку, случайное число и т. д.
o Полнотекстовый поиск.
o Последовательности. В MySQL есть только AUTO_INCREMENT на поле таблицы, с итерацией по одному. В PostgreSQL этот механизм живет отдельно от таблицы, что можно использовать для самых разных потребностей, кроме того можно их создавать зацикленными.