Отправляет email-рассылки с помощью сервиса Sendsay

Создание сайтов на Python

  Все выпуски  

Создание сайтов на Python Выпуск 13


Знакомство с Python

Оглавление

  1. почему Python так хорош?
  2. что может Python?
  3. что такое GAE?
  4. немного о Django
  5. AppEngine framework для работы на GAE
  6. заключение

Почему Python так хорош?

Буквально 31 января вернулся с конференции Python программистов, которая прошла в Киеве 30 января. Получил отличный заряд новых знаний. Но начнем сначала.

Более 5 лет я занимаюсь разработкой сайтов на php. Начинал с php4, теперь пишу на php5.2.x (до php5.3 не дошли руки). Однако, мне посчастливилось работать поблизости с небольшой командой Python разработчиков. И они мне помогли начать изучать этот новый для меня язык программирования - Python.

Начал я с того, что узнал об GAE (речь о котором пойдет ниже), на котором можно создавать сайты только на Python. Это и стало причиной изучения именно Python. а не Ruby (последним занимается мой знакомый, бывший пхп zend сертифицированный специалист).

Опытные ребята из команды Питоновцев подсказали мне, чтобы я начал с изучения Python по книге Dive Into Python (сайт http://diveintopython.org). Книга написана на английском, хотя и есть онлайн версия на русском. Ребята, учите английский, если еще не успели этого сделать. С ним намного легче!

Что может Python?

Итак, мы начали читать о Питоне. Сразу заметили что Python хорошо работает в Линуксе. Оптять же совет - переходите на Ubuntu linux, о котором я уже писал в предыдущих рассылках. В Линуксе работать намного проще для программиста, хотя вначале несолько непривычно. Зато намного удобнее.

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

В операторе if нельзя делать присваивание. Что же, большинство ПХПшных ошибок уже здесь не допустишь. Вначале делаем присваивание, а уже в if сравниваем значения. Ошибки нельзя сделать, потому что синтаксис языка накладывает такое ограничение. Плохого кода становится меньше, это нас радует.

Мощные функции по обработке список [x+y for x, y in values if x+y > 20]. Однострочная конструкция, очень мощная и понятная человеку. Другая особенность - никаких ";" в конце каждой строки и никаких "{ ... }" для обрамления блоков. Эти конструкции не несут никакого смысла, соответственно мы их не используем в Питоне.

Подключать можно не только файлы, как делается в PHP. Здесь мы подключаем пакеты. наподобие как в Java. Однако, не указываем расширение файлов. Например "from blog import models", для импорта из пакета одного модуля. А можно и так "from blog import models as mymodels" для импорта модуля под нужным нам именем (такого в ПХП никак не сделаешь).

Мне нравится минимализм и понятность кода. Написать приложение можно всего 3 строками, и оно будет классно работать. В ПХП обычно метод занимает много десятков строк, что весьма нагружает.

Что такое GAE?

GAE (Google AppEngine) - веб сервер с установленным Python. Бусплатно предоставляется квота в 5 млн посетителей в месяц и 500 мб дискового пространства. Можно заплатить деньги чтобы снять эти ограничения.

Мы получаем возможность создавать быстрые и масштабируемые сайты. Если Вам мало места на диске - Вам ничего делать не придется, кроме как платить за квоту на диске. То же самое наблюдается и у хостинг провайдера (либо на выделенных серверах), но с большим отличием. Два и более серверов содержать дорого и сложно. Появляются проблемы масштабирования, па это дорогое и бестолковое занятие. Применение GAE освобождает нас от этой задачи - обо всем заботятся инженеры из Google. А у них опыт огромный.

Еще одно достоинство GAE заключается в том, что в роли хранилища данных применяется не стандартная база данных, а некое хранилище объектов языка Python. Это накладывает ограничения на допустимые операции (например, нельзя делать JOIN как в SQL). Для решения таких проблем нужно начать иначе проектировать приложение. Благодаря этому мы имеем максимально быстрое и удобное хранилище данных.

Подробнее об GAE читайте на странице Google AppEngine и Google AppEngine Getting Start.

Немного о Django

Django - один из самых мощных и понятных фреймворков, написанный на Python. Изначально разрабатывался для новостного портала, и затем стал весьма удобным решением для большинства задач. Создавать блоги или ленты новостей на нем - легче, чем где либо еще.

Особенность этого фреймворка в том, что проект состоит из приложений (applications). Каждое приложение можно использовать в другом проекте без изменений. Вы можете хорошо отладить одно приложение, в одном проекте, и использовать его в других своих проектах.

Другая особенность - масса имеющихся заготовок для отдачи статических страниц, вывода списка объектов без дополнительных наворотов и многое другое. А что самое важное - наличие автоматически генерируемой админки. Все что от Вас требуется - указать какие модели должны быть выведены на редактирование. Все остальное сделает за Вас Django.

AppEngine framework для работы на GAE

Сразу я увлекся проектом Google AppEngine и узнал, что Django не поддерживается в полной степени. Дело в том, что Django работает с реляционными базами данных, а Google AppEngine имеет другой механизм для хранения данных. Эта несовместимость заставила меня искать выходы. Одним из решений оказалось применение app-engine-path, который эмулирует поведение моделей, как в AppEngine. Однако эмуляция эта не всегда стабильна.

Пришел к решению объединить в рамках своего проекта все то, что работает на Google AppEngine без проблем, а так же дописать свои готовые приложения в стиле Django. Так родился новый проект под названием AppEngine framework. Некоторые люди заявляют мне "какой это фреймворк, если в нем так мало компонентов". Именно поэтому я сразу говорю, что я не изобретаю велосипед, а лишь объединяю хорошо зарекомендовавшие себя решения в рамках единого проекта, полностью совместимого под Google AppEngine.

Кроме того, я решил улучшить структуру проекта Django, и внес ряд изменений. Лично мне эти изменения позволяют лучше понимать проект и создавать новые проекты быстрее, чем когда-либо ранее.

Я приглашаю всех, кто желает попробовать что такое Python и что на нем можно сделать попробовать мою разработку. Надеюсь, Вы останетесь довольные так, что сделаете Donation (денежное пожертвование).

Заключение

Имея опыт в Python всего 2 месяца, я уже создал небольшой, но вполне рабочий проект. Кроме того, я получаю массу удовольствия от того, что код приложения запинмает так мало места, что я могу быстро вспомнить о чем шла речь за считанные секунды. А еще мне нравится то, что Python имеет очень понятный синтаксис и является самым быстрым скриптовым языком.

Еще могу сказать, что Python входит в поставку Linux по умолчанию, так как на нем написан множество графических программ. Питон можно применять для написания приложений на телефон. А можно делать и веб сайты. И все это - на одном, удобном и интуитивно понятном языке программирования. Python имеет хорошую документацию, и массу таких конструкций, которых нет нигде. А они удобны!

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

Рекомендую попробовать Python и мою личную разработку в действии. Я надеюсь, Вы откроете для себя новый Мир.



В избранное