О проекте
Проект MyFirstSite.ru был запущен в феврале 2010 года. В то время один из моих друзей пытался сделать свой первый сайт, не имея изначально навыков веб-программирования и верстки. Я ему периодически помогал советами. Однажды он подметил, что неплохо бы было создать ресурс с такой информацией для начинающих веб-мастеров. Я подумал: "Почему бы и нет?".
Первая версия сайта работала на CMS Joomla, т.к. не хотелось тратить время на написание сайта, а сконцентрироваться на составлении материала. Постепенно я начал понемногу разбираться в Joomla и даже написал несколько расширений для MyFirstSite.ru. Но все же я ощущал излишнюю громоздкость и отсутствие полной свободы в воплощении идей расширения функционала сайта.
Апрель 2011 года стал переломным в истории проекта. В конце месяца сайт был переведен на собственный легкий и быстрый движок (о движке чуть позже). Благодаря реорганизации структура сайта стала более простой и понятной, ускорилась работа сайта. Появилась более продвинутая система комментирования, раздел "Инструменты" и "Новости Интернета".
Учитывая тематику сайта хочется поподробнее рассказать именно о технической стороне его работы.
Хостинг
Сайт за время своей работы сменил несколько серверов. Сначала он работал под обычным хостингом, позже для удобного управления всеми своими проектами я приобрел виртуальный выделенный сервер с ОС Debian 5 и сайт переехал туда. На сервере были частые проблемы с каналом, поэтому пришлось его менять. Следующий VPS был стабильным и устраивал полностью. Работал он под Debian 6. Мне, все же, хотелось попробовать развернуть сервер на моем любимом ArchLinux и поэтому свершился очередной переезд в пользу технологии Xen.
Сейчас сайт работает на виртуальном сервере с ArchLinux. Территориально сервер расположен в датацентре в Германии.
Веб-сервер
Изначально сайт работал под управлением веб-сервера Apache. С переездом на виртуальные сервера я решил опробовать связку Nginx + Apache, что, как я считаю, оправдало себя полностью. Nginx и Apache имеют специфичную для движка сайта конфигурацию. Допустим, запрещено любое прямое обращение к PHP-файлам, а разделение запросов осуществляется по следующему правилу:
location / { root /var/www/myfirstsite.ru/html; expires 30d; try_files $uri $uri/ @fallback; }
Движок
Движок сайта написан на PHP и использует СУБД MySQL. По сути, это форк другого движка (автор D. Blokhin). Он представляет из себя набор PHP-классов. Движок имеет такие возможности как модульность, шаблонизацию, событийность, блочное кеширование. Функционал сайта построен на нескольких десятках модулей.
Подсветка синтаксиса
Для подсветки синтаксиса на страницах сайта используется GeSHi. Это довольно функциональный и удобный инструмент для подсветки синтаксиса написанный на PHP. Специальный модуль использует функционал GeSHi и позволяет "разукрасить" код в статьях, комментариях и в любом другом месте.
Поиск
Для поиска по сайту используется поисковая система Яндекс. Модуль поиска использует API сервиса xml.yandex.ru.
jQuery
Не так давно я все же решил подключить эту библиотеку. JS-кода на сайте совсем немного. На данный момент он обрабатывает форму поиска и реализует стилизацию checkbox'ов в формах. Все реализовано таким образом, что без проблем функционирует с отключенной поддержкой JavaScript в браузере. Сайт заранее переведен на jQuery с учетом дальнейшего развития проекта.
Любопытный факт: я сторонник операционной системы Linux, у меня ArchLinux стоит на всех машинах (дома, на работе, нетбук, веб-сервер). Но на сайте описываю Windows. Так как практически все новички - пользователи Windows. Для создания публикаций использую виртуальную машину с Windows (кстати, лицензионной).
Быть может, имеет смысл затронуть и тему Linux в своих статьях...
Проект действительно очень интересный: понравился дизайн сайта и представление материала. Но вот как отфильтровать статьи по определенной тематике так и не нашел. Как так? Нужно сделать меню, фильрующую статьи по HTML, CSS, PHP, CMS, MySQL и т.п.
Замечание действительно по делу. Сам не раз задавался вопросом, что навигация не идеальна. Изначально проект задумывался как последовательный курс. Что смог расписал по этой задумке, сейчас в планах наполнять сайт просто полезным интересным материалом, конечно, встает вопрос в удобной навигации всего этого.
Возможно, напрашивается что-то типа "облака тегов" или ярлыков с присвоением их каждой статье.
В принципе, в данный момент выручить может поиск, который, как мне кажется, вполне неплохо справляется со своими задачами.
Ну если делать облако тегов, то как дополнение. А меню тематики материалов все же должно быть... как мне кажется. Зашел на сайт, выбрал для себя интересный раздел и читаешь его. Без поисков и ковыряния в облаке. Но облако тоже нужно.
думаю нужно и то и другое. Разделы, как основной фильтр статей (причем именно для статей), и облако тегов для всего сайта.
Что касается последовательности, то ее никто не отменял. Уроки могут быть последовательны, а статьи они сами по себе. Получится такой универсальный сайт с учением и просто интересными статьями.
Это мое мнение.
Вообще я бы посоветовал вам объдинить усилия с этим автором: http://www.webremeslo.ru/html/glava10.html у него замечательно все организовано (но не идеально) и он сам по себе очень хорошо материал излагает. Но только по CSS и HTML. А вместе вы сделаете сайт с материалам по всем актуальным языкам.
Мой коммент можно удалить, если что.
Согласен. В принципе, наработки уже есть. Проект Winner Code создан мною на том же самом движке, что и MyFirstSite.ru, там есть и дерево разделов, и облако тегов. Нужно лишь выкроить время и перенести модули.
Тут есть еще один нюанс: у меня хронологически связаны статьи и уроки в более раннем периоде. Допустим, статья "Язык разметки гипертекста", за ней следует урок "Создание HTML-страницы". В общем, для отслеживания этой хронологии я и сделал дополнительный раздел, где весь материал отсортирован по дате размещения.
Но дополнительной структуризацией я обязательно займусь в будущем.