Отсебятина Статьи Проекты
Облако тегов
Web CMS CSS htaccess HTML Javascript MySQL Php Безопасность Мониторы Новостная лента Оптимизация Ошибки Разработка сайта Часы Юзабилити оптимизация ошибки

Рассказ об учении

Отсебятина от 06 ноября 2008 года.    Теги: PHP Mysql Разработка сайта


В статье я расскажу, как сам изучал и изучаю веб-разработки и посоветую так же :)

После четырех месяцев поверхностного изучения PHP я написал свой первый сайт, который был на файлах. Я понял принцип “как сайт реагирует на действия пользователя”. Понимал, что впереди еще много чего - базы данных, страшное слово ООП, что знаний еще не достаточно для написания сайта под заказ, но, в тоже время, знал, что уже и с такими знаниями многие зарабатывают на жизнь.


Каждый новый сайт приносил мне новые знания, опыт, улучшения кода. Взгляд на прошлую работу после очередного творения примерно такой: "Жесть! И я это писал??!!". Судя по разговорам с другими программистами, я понял, что это — норма и, к счастью, хороший знак — налицо улучшения.


Но, чем дальше я заходил, тем больше понимал, что все, что я знал раньше - это примитив, по сравнению с тем, что необходимо узнать. Хотя без этого примитива не обойтись — база, как никак. Поэтому советую любому новичку начинать с написания простейшей гостевой на файлах. Не стоит в первую неделю обучения программированию писать супермегасайт с базой данных. Как показывает практика (по форуму заметно), те, кто так начинал — запутывались в огромном потоке информации, которую надо было изучить и научиться ей оперировать. Они прекращали программировать, либо пропускали этот материал и кодили с большим количеством грубых и опасных ошибок, не ведая, что делают.


Не стремитесь написать крупный сайт сразу. Начинайте изучение с написания небольших скриптов и функций. Со временем сформируется понимание, как работает сайт, как соединить эти функции.

Спустя год-два изучения возникнет мысль: "Ну вот, я написал крупный сайт. Значит и подобие Яндексу смогу". Конечно, вы без проблем сможете написать подобие яндекса за пару лет, но только ваш сайт будет в тысячу раз хуже: поиск не такой уникальный, пропускная способность низкая, плохая возможность расширения. Тут приходит понимание, что знаний ой как недостаточно. Перед вами открывается новый мир - архитектуры, ООП, оптимизации, кэши, распределения нагрузок, алгоритмы поиска, паттерны проектирования и прочее прочее. Сначала пухнет голова от всех определений, потом все постепенно укладывается по полочкам. Вооружившись книгами, статьями, мануалами, попробуйте спроектировать и разработать сайт с применением хотя бы большей части приведенных технологий. Для этого придумайте сайт с большим функционалом (не обязательно под заказ).


Важный этап - проектирование. Запомните это раз и навсегда. Прежде чем делать сайт, подумайте о его целях, направленности, функциональности. Распишите на бумаге функции, разделы и прочие атрибуты, нарисуйте их взаимодействие. Напишите список управляющих классов, нарисуйте базу данных. Представьте разработанную вами систему и попробуйте ей пользоваться мысленно. Все идеи и поправки сразу заносите на бумагу. После внесите поправки на нарисованной архитектуре. Думать, много думать. Большинство ошибок совершаются еще на стадии проектирования. Что-то не продумал, а потом, чтобы добавить это "что-то", надо перекапывать половину системы.


При написании сайта старайтесь придерживаться выбранной архитектуры. Смотрите чужие работы, чтобы перенять опыт (есть проблема – найти качественные работы). Следите за тем, чтобы система была гибкой (с легкостью модернизируемой), понятной и "легкой". Следите за стилистикой кода - комментарии, отступы.


Популярность ООП в том, что программисту, разрабатывающему новый модуль, вовсе не обязательно изучать, как обращаться к базе данных напрямую, как обрабатывать данные. Он просто передает запрос в качестве параметра в метод класса базы данных и получает результат выборки в виде массива. В то время как в класс работы с базой данных можно переписать под другую СУБД, не влияя напрямую на работу сайта и не затрагивая его остальные части. Это лишь простейший пример, почему объектный подход популярен среди веб-программистов. Но не так сладок мед, как кажется: программист, не зная, какие операции делаются с данными, которыми он оперирует, может сильно уменьшить быстродействие. Например, он прогоняет данные через десяток методов (всё может происходить незаметно - через наследование, инкапсуляцию), а потом еще и обрабатывает их своими функциями. Сам того не ведая, он перебирает один и тот же массив десяток с лишним раз. Грубый пример, но наглядный, показывающий, что любой подход имеет свои + и -. В любом случае необходимо подходить к делу с умом, да и не промахнуться на стадии проектирования.


При написании запросов к базе данных следите за их громоздкостью. Проверяйте их через EXPLAIN. Старайтесь как можно меньше делать крупных выборок, вложенных запросов. Да и вообще, проектируйте базу так, чтобы запросов было как можно меньше, а не по 150 на страницу, как в одной из CMS (название точно не помню). Хорошие статьи по этому поводу: MySQL Performance real life Tips and Tricks MySQL Performance real life Tips and Tricks. To be continued. MySQL Performance real life Tips and Tricks. Part 3-rd. (Статьи на русском)
Как не нужно составлять запросы Изучайте более углубленно язык SQL и возможности вашей СУБД (особенно обратите внимание на оптимизацию и встроенные функции). Это сыграет вам на руку.


Позаботьтесь о кэшировании.

Для a href="http://www.codenet.ru/webmast/php/caching.php">клиентского создайте в базе таблицу с штампами изменений страниц или e-tags. Для серверного можете ограничиться созданием обычных файлов с отрисованными html-страницами. Но лучше использовать кэширование в оперативной памяти. Наиболее популярная утилита — Memcache. Мы просто кладем с помощью PHP в memcache необходимые данные и вытаскиваем их оттуда, когда нам необходимо. Перед вами откроются новые возможности, как оптимизаторские, так и новаторские.


Прочтите книгу по паттернам программирования. Они помогут иногда избежать долгие изобретения велосипедов.

Со временем я буду наполнять статью ссылками по теме.


Еще одна вещь, которая, я считаю, может сказаться на профессионализме разработчика - понимание принципов работы компьютера, ну и, конечно же, знание математики.
Не зная, что происходит после обработки "текста" с помощью PHP, ,вы многое упускаете. Хороший веб-программист должен знать протокол HTTP, структуру сети, принципы Web, а так же внутренние взаимодействия в ОС. Он не должен отвечать на вопрос "Что происходит, когда я набираю адрес сайта в браузере" подобным образом: "Ну сервер присылает страничку". Конечно, никто не будет с вас требовать объяснения "а куда делся svchost в windows", достаточно будет просто упомянуть про этап получения IP (через hosts/dns) и отсылку заголовка с запросом на этот IP.
Математика и все её виды позволят вам писать оригинальные и производительные специализированные алгоритмы, распределять нагрузки итд.


Не грех осознавать работу встроенных PHP-функций изнутри. Особенно, функции сортировки массивов, типы сортировки.

Надеюсь, что запугал новичков ?, но указал верный путь.
Оставить сообщение






Любое копирование должно сопровождаться ссылкой на сайт.
Если вам что-то не понравилось — сообщайте.
Кича Владимир
x
Мне не нравится этот сайт, удалить его