“Как больше нет времени ?”
Студент-программист ощутил реальный смысл слова “deadline”…

Студент-программист ощутил реальный смысл слова “deadline”…

Я полагаю, все знают принцип LIFO - “Last In First Out“, что означает “Последним Пришёл - Первым Ушёл” (т.е. стэк). Но есть и другие варинты:
Кому надо русифицировать TortoiseSVN, скачайте русский пак (1.72 Мб)
P.S. У кого инсталлятор SVN говорит о том, что надо сначала обновить Windows Installer - просто скачайте обновление (2.6 Мб), а потом ставьте SVN.
Занимаясь веб-разработкой профессионально, нельзя не знать как все работает до последней шестеренки. Поэтому я считаю будет уместно рассказать о том как происходит взаимодействие сервера и клиента и для этого препарировать HTTP протокол как основу такого взаимодействия.
Когда вы пробовали создавать первые HTML страницы, вы либо открывали их через двойное нажатие мышкой браузером прямо с диска (файловой системы), либо выкладывали на локальный или удаленный web-сервер и открывали браузером URL. В обоих случаях, результать один и тот-же - вы видете HTML страницу в браузере. Однако, когда вы открываете страницу расположенную на web-сервере через HTTP протокол, неявно передается достаточно много дополнительной информации, а именно заголовки HTTP. Протокол передачи - это договор между сервером и клиентом о допустимых вопросах и ответах. Протокол задокументирован в виде стандарта RFC2616.
Общение между сервером и клиентом может быть описано как разговор человека в магазине:
Клиент: Привет! Я Мозилла-Файрфокс, можно-ли мне файлик products.html с хоста shop.com ?
Сервер: Да, есть у меня такой файлик, он имеет тип text|/html и вот его содержимое.
(Клиент получает целиком файл, смотрит на него и натыкается на тег <img>)
Клиент: Привет! Я Мозилла-Файрфокс, можно ли мне файлик product.jpg с хоста shop.com ?
Сервер: Да, есть у меня такой файлик, он имеет тип image/jpg и вот его содержимое.
(Клиент получает файл и отображает на экране)
И так далее. Что кстати сразу замечу - сервер понятия не имеет что оба раза это был один и тот же клиент. HTTP-протокол называется “stateless” - он не хранит состояние соединения и передачи. Вопрос - ответ - “вiльна каса”.
Вернемся к заголовкам. Они бывают двух типов - заголовки запроса (request) и заголовки ответа (response). Например, вы набираете URL нашего сайта и он открывается. На языке современного протокола HTTP версии 1.1 это выглядит так:
Запрос:
GET / HTTP/1.1
Host: iwannabedeveloper.com
User-Agent: Mozilla/5.0
Ответ сервера:
HTTP/1.1 200 OK
Date: Mon, 25 Jun 2007 13:50:37 GMT
Server: Apache/2.0.46 (CentOS)
Accept-Ranges: bytes
X-Powered-By: PHP/4.3.2
X-Pingback: http://iwannabedeveloper.com/xmlrpc.php
Content-Encoding: gzip
Vary: Accept-Encoding
Connection: close
Transfer-Encoding: chunked
Content-Type: text/html; charset=UTF-8
После заголовков следует содержимое страницы в виде HTML:
< !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
Выглядит довольно просто. В запросе клиент указывает какой файл он просит сервер вернуть и опознает себя (хоть и не обязан) как Mozilla. Запрос посылается методом GET, и есть еще метод POST, но о нем в следующий раз. В ответ клиент получает информацию о запрашиваемом файле и сам файл. Наиболее значимые заголовки ответа - это Content-Type и Status. Content-Type сообщает клиенту какого типа файл будет передаваться, а в случае HTML, какая кодировка будет использоваться. Список типов файлов (MIME-types) стандартизована и с ней можно ознакомится здесь. Status - (200 ОК) - это стандартизованный код выполнения запроса. Код 200 означает что запрошенный файл был найден и успешно передан клиенту. Например код 404 означает что файл не найден, код 301 - что файл перемещен в другое место, а код 500 - что во время выполнения запроса произошла непоправимая ошибка на сервере. Список кодов описан в упомянутом стандарте RFC2616.
Вот в кратце как работает HTTP протокол. Есть еще много вопросов которые мы разберем позже - например, как передаются формы и файлы других типов или как можно управлять передаваемыми заголовками с помощью PHP.
Давайте разберёмся, что такое SVN и зачем он нужен.
Я сейчас читаю книжку “Building scalable web sites” (”Создание масштабируемых веб-сайтов“) на примере проекта Flickr.com, так вот в разделе разработки значится три вещи, которые обязательно должны быть в девелоперской команде:
На первом месте стоит система контроля версий. Почему?
Во-первых, она позволяет разработчику быстро исправить свои ошибки. Система хранит все промежуточные “фотографии” проекта и позволяет по ним перемещаться, при необходимости возвращая систему на прежнее, стабильное состояние. Разработка есть творчество, это факт. Иногда такое “натворишь”, что хочется всё отменить и начать сначала. Вот система контроля версий и позволяет это сделать - она хранит все этапы создания ваших приложений.
Во-вторых, система контроля версий позволяет сразу нескольким людям работать не только над одним проектом, но и даже над одними и теми же файлами.
Реализаций таких систем много, есть платные и бесплатные. Самые популярные: CVS (Сontrol Version System) и SVN (Subversion). Мы будем пользоваться последней из них - SVN.
Пара ссылок для ознакомления: описание в Википедии и подробный мануал работы с системой (на доходивом русском).
Итак, есть где-то какой-то SVN, который делает кучу всего полезного. Как им пользоваться?
Система имеет две части: серверную и клиентскую (локальную для вас). Это позволяет всем работать откуда им удобно.
Серверную часть за вас уже проинсталлировали и дали УРЛ вида http://svn.server.com:7575/projects/super_project/ Это всё, что нам пока нужно.
На клиенте нужно поставить специальную программу - Tortoise SVN, которая будет за вас общаться с сервером, автоматизируя кучу ручной работы. Качаем, инсталлируем, ничего сложного. Теперь заходим в ваш document root (ту папку, документы которой показывает ваш броузер, когда вы заходите на http://localhost), создаем папку для нашего проекта, заходим, ПКМ (правый клик мыши), “SVN Checkout” - чтобы стянуть файлы с сервера в эту папку (надо же нам над чем-то работать). Появится диалог, как на рисунке.

Нажимаем ОК, у вас спросят логин/пароль. Вводим.

После этого папка начнет наполнятся файлами. Отлично!

Теперь собственно работа над проектом: вы спокойно правите файлы, и потом решаете опубликовать ваши наработки. Для этого в папке с проектом ПКМ и “SVN Commit“. Сервер получит ваши наработки и сам хитро соединит ваши правки с работой других людей.
После этого вы наверняка захотите получить себе результат этого объединения (это и есть командная работа). Для этого ПКМ и “SVN Update“.