<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://wiki.linuxformat.ru/wiki/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://wiki.linuxformat.ru/wiki/index.php?action=history&amp;feed=atom&amp;title=LXF117%3Agoogle</id>
		<title>LXF117:google - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://wiki.linuxformat.ru/wiki/index.php?action=history&amp;feed=atom&amp;title=LXF117%3Agoogle"/>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/index.php?title=LXF117:google&amp;action=history"/>
		<updated>2026-05-13T02:29:52Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.19.20+dfsg-0+deb7u3</generator>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/index.php?title=LXF117:google&amp;diff=9718&amp;oldid=prev</id>
		<title>Crazy Rebel: Викификация, оформление</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/index.php?title=LXF117:google&amp;diff=9718&amp;oldid=prev"/>
				<updated>2010-02-19T20:51:44Z</updated>
		
		<summary type="html">&lt;p&gt;Викификация, оформление&lt;/p&gt;
&lt;a href=&quot;http://wiki.linuxformat.ru/wiki/index.php?title=LXF117:google&amp;amp;diff=9718&amp;amp;oldid=9717&quot;&gt;Внесённые изменения&lt;/a&gt;</summary>
		<author><name>Crazy Rebel</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/index.php?title=LXF117:google&amp;diff=9717&amp;oldid=prev</id>
		<title>Crazy Rebel: викификация, оформление,</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/index.php?title=LXF117:google&amp;diff=9717&amp;oldid=prev"/>
				<updated>2010-02-19T12:53:32Z</updated>
		
		<summary type="html">&lt;p&gt;викификация, оформление,&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;: '''Hardcore Linux''' Проверь себя на крутом проекте для продвинутых пользователей&lt;br /&gt;
&lt;br /&gt;
==''GAE'': Создаем web-приложение==&lt;br /&gt;
&lt;br /&gt;
: С ''Google App Engine'' легко создавать масштабируемые приложения, не вникая в детали масштабирования. '''Дэн Фрост''' закинет программу в облака.&lt;br /&gt;
&lt;br /&gt;
''Google App Engine'' – платформа для разработки приложений в инфраструктуре Google. Как и другие масштабируемые платформы, она дает возможность разместить приложение на «облаке» ([[LXF108:CloudComputing|LXF108]]), не тратясь на содержание собственной серверной «фермы».&lt;br /&gt;
&lt;br /&gt;
В отличие от других решений по облачным вычислениям, ''Google App Engine'' применяется только для создания web-приложений. Вы можете управлять web-страницами, хранить информацию и взаимодействовать с внешними web-серверами, но не имеете доступа к файлам, дискам и базам данных, как было бы в обычной среде.&lt;br /&gt;
&lt;br /&gt;
Это может заставить вас изменить структуру приложения, но зато в вашем распоряжении будут очень мощные инструменты. ''Google App Engine'' поддерживает учетные записи Google, обработку изображений, огромные хранилища данных и взаимодействие с некоторыми службами Google посредством библиотеки ''Google Data Library''.&lt;br /&gt;
&lt;br /&gt;
Пока поддерживаются только приложения на языке ''Python''. Если это не ваш любимый язык программирования – «следите за рекламой»: в будущем появятся и другие.&lt;br /&gt;
&lt;br /&gt;
===Работа с ''App Engine''===&lt;br /&gt;
&lt;br /&gt;
Сначала поработаем локально, пользуясь сервером разработчика '''dev_appserver.py''', который имитирует реальную среду. Предоставляемая SDK, она включает работающий сервер, хранилище данных, псевдоучетные записи пользователей и все необходимое для создания приложения. Когда ваш новый шедевр Web 2.0 будет готов, разверните его на серверах Google с помощью скрипта '''appcfg.py''', который загрузит программу на вашу учетную запись в ''App Engine'' (создайте ее на сайте http://appengine.google.com).&lt;br /&gt;
&lt;br /&gt;
Пора установить среду разработки. Сначала позаботьтесь о наличии установленного ''Python 2.5'', после чего можно загрузить ''App Engine'' для вашей ОС с сайта http://code.google.com/appengine/downloads.html. В Linux, распакуйте архив и добавьте ''App Engine'' в переменную окружения '''$PATH''':&lt;br /&gt;
&lt;br /&gt;
 export PATH=$PATH:/path/to/google_appengine/&lt;br /&gt;
&lt;br /&gt;
Проверьте, что это работает, набрав ''dev_appserver.py'' в командной строке – вы должны увидеть обычную страницу справки. Затем создайте каталог для своего приложения:&lt;br /&gt;
&lt;br /&gt;
 mkdir ~/myapp/&lt;br /&gt;
&lt;br /&gt;
Теперь создайте файл ключа для ''App Engine'': '''app.yaml'''. Он указывает ''App Engine'', в каком каталоге находится приложение и как обращаться с каждым его файлом. Заполните '''~/myapp/app.yaml''' таким содержимым:&lt;br /&gt;
&lt;br /&gt;
 application: mydemoapp&lt;br /&gt;
 version: 1&lt;br /&gt;
 runtime: python&lt;br /&gt;
 api_version: 1&lt;br /&gt;
 handlers:&lt;br /&gt;
  - url: /.*&lt;br /&gt;
    script: main.py&lt;br /&gt;
&lt;br /&gt;
Этот файл сообщает ''App Engine'', что имя приложения – '''mydemoapp''', а все запросы должны передаваться скрипту '''main.py'''. Для обработки любого URL-адреса можно задать любой скрипт и даже применить шаблоны для использования различных файлов:&lt;br /&gt;
&lt;br /&gt;
 url: /browse/(.*?)/&lt;br /&gt;
 script: /listings/\1.py&lt;br /&gt;
&lt;br /&gt;
Приведенная выше конфигурация передает все в скрипт '''main.py''', поэтому создайте этот файл и добавьте в него вывод традиционного сообщения:&lt;br /&gt;
&lt;br /&gt;
 print “Hello, World”&lt;br /&gt;
&lt;br /&gt;
Наше скромное приложение готово. Запустите сервер с помощью скрипта '''dev_appserver.py''' и откройте в браузере адрес http://localhost:8080.&lt;br /&gt;
&lt;br /&gt;
 dev_appserver.py ~/myapp/&lt;br /&gt;
&lt;br /&gt;
В ''App Engine'' допустимо большинство стандартных выражений ''Python''; исключения в основном касаются доступа к файловой системе. Попробуйте добавить методы и классы, создайте модуль, и вы увидите, что среда вам знакома.&lt;br /&gt;
&lt;br /&gt;
====Применение ''webapp''====&lt;br /&gt;
&lt;br /&gt;
В состав ''App Engine'' входит MV-каркас ''webapp'', позволяющий создавать хорошо структурированные приложения всего несколькими строками кода. Первая строка импортирует его, затем создается обработчик – это простой класс, унаследованный от '''webapp.RequestHandler''':&lt;br /&gt;
&amp;lt;source lang=python&amp;gt;&lt;br /&gt;
 from google.appengine.ext import webapp&lt;br /&gt;
 class ExampleApp(webapp.RequestHandler):&lt;br /&gt;
   def get(self):&lt;br /&gt;
     self.response.out.write(‘Hello, well structured world’)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В обработчике есть два важных метода – '''get()''' и '''post()'''. Первый вызывается для всех запросов '''HTTP GET''', второй – для всех запросов '''HTTP POST'''. Следом за самим обработчиком запросов нужно зарегистрировать его в ''webapp'' и вызвать метод '''main() webapp''':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=python&amp;gt;&lt;br /&gt;
 application = webapp.WSGIApplication(&lt;br /&gt;
   [(‘/’, ExampleApp)],&lt;br /&gt;
   debug=True)&lt;br /&gt;
   def main():&lt;br /&gt;
     run_wsgi_app(application)&lt;br /&gt;
     if __name__ == “__main__”:&lt;br /&gt;
       main()&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Снова откройте в браузере URL приложения, и вы увидите весьма невыразительную строку текста. Давайте улучшим ее, переместив сообщение в шаблон – создайте файл '''index.html''':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=xml&amp;gt;&lt;br /&gt;
 &amp;lt;html&amp;gt;&lt;br /&gt;
 &amp;lt;head&amp;gt;&amp;lt;title&amp;gt;Hi there!&amp;lt;/title&amp;gt;&amp;lt;/head&amp;gt;&lt;br /&gt;
 &amp;lt;body&amp;gt;&amp;lt;h1&amp;gt;Hello from the template&amp;lt;/h1&amp;gt;&amp;lt;/body&amp;gt;&lt;br /&gt;
 &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем подключите шаблон, изменив метод '''get()''':&lt;br /&gt;
&amp;lt;source lang=python&amp;gt;&lt;br /&gt;
 def get(self):&lt;br /&gt;
   template_vars = {}&lt;br /&gt;
   self.response.out.write(template.render(path, template_vars))&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если вы хотите включить таблицы стилей, ''JavaScript'', изображения или любые другие статические файлы, нужно предупредить об этом '''app.yaml'''. Добавьте в него следующие строки перед обработчиком '''url: /.*''':&lt;br /&gt;
&lt;br /&gt;
 - url: /style&lt;br /&gt;
   static_dir: style&lt;br /&gt;
&lt;br /&gt;
Затем создайте каталог '''style''' и файл '''app.css''' и включите их в '''index.html''':&lt;br /&gt;
&amp;lt;source lang=xml&amp;gt;&lt;br /&gt;
 &amp;lt;link rel=“stylesheet” href=”/style/app.css” type=“text/css”&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь можно добавить в CSS-файл какой-нибудь стиль – сделайте это сами.&lt;/div&gt;</summary>
		<author><name>Crazy Rebel</name></author>	</entry>

	</feed>