Audiophile's Blog
Логин:Пароль:


Забыл пароль | Регистрация (убрать всю рекламу)
О сайте | Ликбез | Словарь | Audiophile's Testroom | Поддержать | Контакты
Разделы
Поиск по сайту
Популярное
Персональная настройка
Настройка звука онлайн (foobar2000, драйвера, Windows), создание персональных сборок foobar2000.

Контакты

Случайный опрос
Какой программный плеер вы используете для прослушивания музыки?
Всего ответов: 4942
Полезный софт
Opera QIP 2010 Download Master µTorrent
Ace Utilities AIDA64 SpeedFan 7-Zip
ESET NOD32 FileZilla Media Player Classic Home Cinema Paint.NET
Sony Sound Forge VirtualDub Unlocker Punto Switcher
Похожие проекты
Сейчас на сайте
Онлайн всего: 15
Гостей: 15
Пользователей: 0
»

«If you want something done right, do it yourself» — продолжение истории (audiophilesoft.com)


11 Февраля 2016, 21:39

«Если хочешь, чтобы что-то было сделано хорошо — сделай это сам» — принцип, в котором я иногда дохожу чуть ли не до абсурда. Но, всё благо, что приносит удовольствие.

Итак, после двух зим упорной разработки мой проект audiophilesoft.com «вышел в люди». История его создания весьма продолжительная: более года назад я анонсировал разработку собственного веб-приложения, причем абсолютно самописного — включая back-end (PHP, MySQL) и front-end (HTML, CSS и самая капля JavaScript).

Итак, начал я тогда с написания простейшего HTML (первый сайт на HTML я создал еще в 2006-м году, с мобильного телефона), но с некоторыми нововведениями: я стал использовать семантическую разметку новоиспеченного HTML5, полностью валидный код, а также вынес все стили в CSS, причем тоже новой, 3-й версии. Дизайн русской версии сайта был скопирован практически полностью, но сравните теперь этот сайт (audiiophilesoft.ru) и новый audiophilesoft.com, так сказать в разрезе:

Результат, как говорится, «на лицо». Скажу честно: код шаблонов uCoz/uWeb — это тихий ужас, и привести его хоть к какому-то стандарту (чтобы валидатор W3C не ругался) просто нет возможности, так как отдельные элементы просто недоступны для редактирования. А чего стоят стили, распиханные где попало — то в HTML, то в CSS... Интересно, что же у них тогда творится в PHP-коде?

Но разметка и стили — это были цветочки. Затем я полез со своим Notepad++ писать PHP-код... Начал прямо как школьник — с процедурного кода в отдельных php файлах, копировать/вставить (нет, чужой код я не использовал, но вот свой дублировать приходилось постоянно) и т. д.

В какой-то момент, параллельно изучая PHP, я дошёл до объектно-ориентированного программирования. Вот тут-то мой мир и перевернулся. Я понял, насколько убог процедурный стиль по сравнению с ООП, и понял, какие проблемы могут меня ждать, если в дальнейшем я захочу что-то подкорректировать или добавить. Так началась долгая история осваивания ООП на PHP. Было много проб, ошибок; код свой я, включая процедурную версию, переписывал наверное раз пять полностью (тот вариант, когда архитектура придумывается прямо на лету). В общем, это был довольно увлекательный процесс, который продлился всё начало прошлого года, и, после полугодового перерыва, продолжился этой зимой.

Интересно отметить один момент: когда моё приложение разрослось (количество классов превысило несколько десятков), я понял, что со своим простеньким редактором Notepad++ я точно далеко не пойду. В памяти приходилось держать огромное количество информации: где что лежит, где какие методы и параметры, а практически каждую букву кода, пробелы и переносы приходилось ставить руками. Причем в итоге я стал тратить 60% времени на поиск и исправление синтаксических ошибок, а еще 30% на отладку и исправление логики.

К счастью в конце концов я решился поставить и освоить замечательный IDE под названием PHPStorm. Благодаря ему я ускорил процесс разработки в несколько раз, избавился от рутинных операций, а отлавливать ошибки стало чрезвычайно просто: синтаксические PHPStorm показывает сразу, runtime отлавливаются дебаггером — в пошаговом режиме выполнения кода. И я уже не говорю об интеграции с системой контроля версий. Иногда мне хотелось чуть ли не расцеловать разработчиков этого IDE — настолько они упростили мне жизнь.

Итак, к чему же я пришёл. Мне удалось остаться верным своим принципам: никакого чужого кода, сторонних компонентов и прочей ерунды «на блюдечке». В конце концов я даже научился ставить и настраивать связку Apache/PHP/MySQL на Windows. Касаемо PHP-приложения: мне удалось воссоздать концепцию модулей аналогичную uWeb (с некоторыми улучшениями, о которых я грезил всё время пользования CMS): на данный момент функционирует модуль страниц, статей, программ (с добавлением материалов через веб-интерфейс), есть простая регистрация, возможность добавлять комментарии для зарегистрированных пользователей. Также реализовано большое количество неочевидных, но крайне полезных для поисковой оптимизации штук: автогенерация sitemap (причем изнутри, без HTTP запросов), отправка заголовков Last-Modified, Not-Modified, разметка RDF — наконец-то мне удалось взять под контроль всё, вплоть до заголовков, отправляемых Apache. Ну и конечно безопасность: при регистрации есть капча, все проверки полей выполняются как в браузере, так и на сервере, возможность SQL инъекций исключена; также я ввёл ограничение на количество неудачных попыток входа и на добавление комментариев. Приложение построено по принципу Model-View-Controller, в View реализована шаблонизация.

Финальным этапом всей этой эпопеи было то, чего я боялся весь последний год: знакомство с Linux. В какой-то момент мой сайт заработал как надо на моём локальном компьютере, но теперь мне предстояло запустить его в сеть. Я сразу отказался от всяческих хостингов: ведь мой проект написан для последних PHP 7, MySQL 5.7.7+, и последние версии компонентов окружения для него критичны. Кроме того, как я уже писал, мне нужен полный контроль над каждым компонентом системы: Apache, MySQL, PHP.

Таким образом я сделал выбор в пользу VPS (виртуального частного сервера). Благодаря человеку с toster.ru я нашёл отличный недорогой хостинг FirstVDS. Интересно заметить, что я приобрёл свой простенький VDS за 270 р/месяц, а за один только CMS uWeb я плачу 300 р (и это еще со скидкой как старожилу, иначе было бы все 600). Повторяться о различиях собственного сервера и ограниченного CMS я не буду.

А дальше — не знаю, что бы я делал без сайтов toster.ru, stackoverflow.com (и, конечно, своего опыта работы с компьютерами). Человеку, который всю жизнь сидел на Windows GUI — и сразу вот так дать SSH консоль CentOS (Linux)... В общем, неделю-другую мне пришлось очень хорошо покопаться, дабы, во-первых, установить необходимые компоненты, настроить их, и, во-вторых, заставить работать сайт в этом окружении. Здесь вам и поиск репозиториев, и слеши (а вы знали, что Linux в путях использует только слеши «/», в то время как Windows — и «/» и «\»?), и проблемы с временной зоной, кодировками и прочие проблемы, о которых не подозреваешь, пока не попытаешься перенести своё приложение с Windows на Linux. Последней проблемой, которую я решил буквально только что, стал запуск почтового сервера (для отправки писем при регистрации пользователей). Теперь чувствую, что претендую не только на роль программиста, но и сисадмина (по совместительству).

Но хорошо всё то, что хорошо кончается. Домен уже перенесен на новый IP, сайт работает — пока в режиме отладки, так что буду благодарен, если потестируете (начиная с регистрации) и сообщите о найденных ошибках.

А вот так сейчас выглядит файл загрузки моего приложения в PHPStorm:

P. S. Теперь, когда закончится отладка, самое время будет заняться заполнением сайта материалами — то есть переводом с русского на английский.

 
   
Просмотров: 2821 | Автор: | Добавил: Audiophile () | Рейтинг: 5.0/5, голосов: 2
Всего комментариев: 3
[3] DJ_Master_Phil   (14 Ноября 2016 22:18)
Нужно умело делегировать полномочия. А то всё сам да сам, так и надорваться можно))

[2] maximus_lt   (30 Октября 2016 00:52)
По ссылке пусто.

[1] j7n   (30 Марта 2016 09:01)
Приятно что новый сайт все еще быстро работает и в Опере прекрасно читается. Recaptcha скорее самая тяжелая его часть. Отсутствует плоский метро дизайн!!! :)

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Авторские статьи
Сообщество
Последнее на форуме
Кодеки
TAK FLAC APE WV
MPC OGG AAC/ALAC MP3
WMA TTA OFR LA
Теги
Follow me
Twitter YouTube
Google+ Facebook
Полезные ссылки
Copyright Taras Kovrijenko © 2009–2016