papilio

Записи с меткой «Google»

Получение задач Google Tasks

Давненько я не писал в этот блог, хотя, конечно, не от того, что мне не о чем было писать или я перестал интересоваться web-разработкой и интернет-технологиями. Нет, скорее всего было просто лень :-)

Но чтобы эту лень побороть, надо пользоваться каким-нибудь планировщиком/календарём. А так как я полностью на продуктах Google, то неудивительно, что я пользуюсь Google Calendar (который замечательно синхронизируется как с системой, так и с телефоном) и теперь Google Tasks.

Итак, задача и проблема: мне необходимо вывести мои задачи Google Tasks прямо в консоли (это необходимо, например, чтобы потом повесить этот список задач прямо на мой рабочий стол, где уже есть Google Calendar). Как же это сделать, если пока нет Google Tasks API? Если нет, то нам придётся эмулировать работу браузера, чтобы получить список задач.

Для начала стоит выбрать верную версию сайта Google Tasks среди огромного множества (разные устройства, iGoogle, Gmail и т.п.). Я выбрал мобильную версию, так как можно напрямую обратиться к нужному списку:

  • https://mail.google.com/tasks/m для владельцев Google Accounts
  • https://mail.google.com/tasks/a/domain.com/m для пользователей Google Apps

Сначала я решил воспользоваться просто bash и написать скрипт. Но после того, как я довольно долго с этим промучался, я решил всё-таки писать на python, так как он есть у всех.

В итоге получился скрипт, который я немного прокомментирую чуть ниже (можно скачать отдельным файлом google_tasks.py):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
#!/usr/bin/env python
 
"""
This is a python script for retrieving Google Tasks 
Usage: 
    -e or --email [email] 
        Your Google Account or Google Apps email 
    -p or --password [password] 
        Your password 
    -b or --bullet [bullet] 
        Bullet for tasks list. Default is '*'
 
Example:
    google_tasks.py -e bob@gmail.com -p yaroslavl -b --
 
Thank you Scott Hillman for the implementation of Google Authentication
http://everydayscripting.blogspot.com/2009/10/python-fixes-to-google-login-script.html
 
Evgeny Pavlov, http://evgeny.tel
"""
 
import urllib
import urllib2
import htmllib
import getpass
import re
import sys
import getopt
 
def unescape(text):
    """Removes HTML or XML character references 
       and entities from a text string
 
       From Fredrik Lundh
       http://effbot.org/zone/re-sub.htm#unescape-html
 
       Little bit modified
    """
    def fixup(m):
        text = m.group(0)
        if text[:2] == "&#":
            # Character reference
            try:
                if text[:3] == "&#x":
                    return unichr(int(text[3:-1], 16))
                else:
                    return unichr(int(text[2:-1]))
            except ValueError:
                print "Error with encoding HTML entities"
                pass
        else:
            # Named entity
            text = unichr(htmlentitydefs.name2codepoint[text[1:-1]])
        return text # leave as is
    return re.sub("&#?\w+;", fixup, text)
 
def main(argv):
    """ Get arguments: email, password and type of bullet """
 
    bullet = '* '
    email =  ''
    password = ''
 
    try:
        opts, args = getopt.getopt(argv, "he:p:b:", ["help", "email=", "password=", "bullet="]) 
    except getopt.GetoptError:
        usage()
        sys.exit(2)
    for opt, arg in opts:
        if opt in ("-h", "--help"):
            usage()
            sys.exit()
        elif opt in ("-e", "--email"):
            email = arg
        elif opt in ("-p", "--password"):
            password = arg
        elif opt in ("-b", "--bullet"):
            bullet = arg    
 
    return (email, password, bullet)
 
def usage():
    """ Help and the list of arguments for this script """
 
    print """This is a python script for retrieving Google Tasks 
Usage: 
    -e or --email [email] 
        Your Google Account or Google Apps email 
    -p or --password [password] 
        Your password 
    -b or --bullet [bullet] 
        Bullet for tasks list. Default is '*'
 
Example:
    google_tasks.py -e bob@gmail.com -p yaroslavl -b --
 
Evgeny Pavlov, http://evgeny.tel"""
 
if __name__ == "__main__":
    # Arguments
    (email, password, bullet) = main(sys.argv[1:])
 
    # Google Account or Google Apps
    email_split = email.split('@')
    try:
        email_domain = email_split[1]
    except:
        print 'Incorrect email address!\n'
        usage()
        sys.exit()
    if email_domain in ('googlemail.com', 'gmail.com', 'google.com'):
        google_apps = 0
    else:
        google_apps = 1
        email = email_split[0]
 
    # Initialization  
    opener = urllib2.build_opener(urllib2.HTTPCookieProcessor())
    urllib2.install_opener(opener)
 
    # Define URLs
    if google_apps:
        login_page_url = 'https://www.google.com/a/%s/ServiceLogin' % email_domain
        auth_url = 'https://www.google.com/a/%s/LoginAction2' % email_domain
        tasks_url = 'https://mail.google.com/tasks/a/%s/m' % email_domain
    else:
        login_page_url = 'https://www.google.com/accounts/ServiceLogin'
        auth_url = 'https://www.google.com/accounts/ServiceLoginAuth'
        tasks_url = 'https://mail.google.com/tasks/m'
 
    # 1. Load login page
    login_page_content = opener.open(login_page_url).read()
 
    # Find GALX value
    galx_match_obj = re.search(r'name="GALX"\s*value="([^"]+)"', login_page_content, re.IGNORECASE)
 
    galx = galx_match_obj.group(1) if galx_match_obj.group(1) is not None else ''
 
    # Set up login credentials
    login_params = urllib.urlencode( {
       'Email' : email,
       'Passwd' : password,
       'continue' : tasks_url,
       'GALX': galx
    })
 
    # 2. Login
    opener.open(auth_url, login_params)
 
    # 3. Open Tasks home page
    tasks_content = opener.open(tasks_url).read()
 
    # Check signing in
    key = re.search('create_tasks', tasks_content)
    if not key:
        print 'Check your credintals!'
        sys.exit()
 
    # Retrieve list ids
    tasks_content_split_obj = re.search(r'<select(.*?)select>', tasks_content, re.IGNORECASE)
    tasks_content_split = tasks_content_split_obj.group(1)
    listids = re.findall(r'[0-9]{20}:[0-9]:[0-9]', tasks_content_split)
 
    # 4. Fetch all lists
    for listid in listids:
        # List content
        list_content = opener.open(tasks_url + "?listid=%s" % listid).read()
 
        # Only tasks remain
        list_content_split_obj = re.search('(.*?)name="numa"', list_content, re.IGNORECASE | re.DOTALL)
        list_content_split = list_content_split_obj.group(1)
 
        # Get Tasks in
<tr></tr>
tasks_in_tr = re.findall(r'
<tr(.*?)tr>', list_content_split, re.IGNORECASE | re.DOTALL)
 
        # Work with this dirty tasks
        for task_in_tr in tasks_in_tr:
            # Retrieve task
            task_obj = re.search(r'
<td class="text">(.*?)</td>
', task_in_tr, re.IGNORECASE)
            task = task_obj.group(1)
 
            # Indent
            indent = len(re.findall(r'
<td class="checkbox"', task_in_tr)) - 1
 
            # HTML entities
            task = unescape(task)
            task = task.strip()
 
            # 5. At last output
            if task  != '': 
                print '  ' * indent, bullet, task

Скрипт выводит список задач Google Tasks в довольно приятном виде.

Как же работает этот скрипт? Всё довольно просто: для того чтобы пройти аутентификацию Google, нужны адрес электронной почты и пароль. При этом Google проверяет, как происходит вход, поэтому каждый раз генерирует специальное значение GALX, которое затем сверяет. Но обо всём (почти обо всём по порядку):

  • 31-56, функция unescape (). Необходима для конвертации т.н. HTML entities, которые присутствуют в мобильной версии Google Tasks. Переводит #&123; в нормальные символы. Реализацию подсмотрел на W3C.
  • 59-80, функция main () нам нужна для того, чтобы прочесть аргументы, переданные в командной строке. Идея из онлайн-книги Dive Into Python.
  • 106-118, определение, каким является аккаунт — Google Accounts или Google Apps. Происходит путём банальной проверки домена.
  • 134-151, аутентификация Google как раз с использованием GALX. Кроме того, необходимо использовать cookies. Идея блога Every Day Scripting. У меня получалось реализовать и с помощью wget. Если кому-то интересно, то могу поделиться.
  • А дальше происходит анализ HTML и поиск задач.

Чтобы воспользоваться скриптом, надо его просто положить в нужное вам место, сделать исполняемым (chown +x) и запускать со следущими параметрами:

google_tasks.py -e bob@gmail.com -p yaroslavl

Кроме того, можно менять оформление задач с помощью ключа -b: по-умолчанию стоит звёзточка.

Метки: , , , ,

Включение синхронизации с мобильными устройствами для Google Apps

Сегодня уже две записи, относящихся Google — думаю, что много. Тем не менее, в предыдущем посте я писал о том, что можно объединять контакты в адресной книге Google, а также синхронизировать их со своим мобильным телефоном.

Но, после того как я попробовал синхронизировать моё устройство Windows Mobile, у меня ничего не получилось. Оказывается, для тех, кто пользуется Службами Google в своём домене (Google Apps), надо самостоятельно включать такую возможность в панели управления.

Итак, чтобы включить возможность синхронизации мобильных устройств, надо зайти в панель управления, выбрать пункт Mobile (у меня английская версия):

Пункт Mobile в настройке

Пункт Mobile в настройке

И включить возможность синхронизации:

Включение синхронизации с мобильными устройствами

Включение синхронизации с мобильными устройствами

Теперь всё должно работать, если, конечно, настроить свой телефон. Спасибо блогу Google Apps.

Метки: , , , , , , ,

Объединение контактов Google

Мне нравится, когда всё в одном месте, и сделано так, что удобно пользоваться. Например, так реализована система контактов у Google — ей можно пользоваться во всех продуктах Google, а сама она достаточно удобна.

Но до сих пор была ужасная проблема. Если в адресной книге Google есть много записей одного человека, но с разными контактами, то их сложно объединить. Такое возникает, например, если у человека есть адрес электронной почты, а ещё потом добавляешь его в каком-нибудь icq-транспорте или импортируешь данные из другой адресной книги.

Я уже хотел сделать собственное объединение (это несложно, так как есть хорошее Contacts API). Однако, с последним обновлением в Google сделали возможность объединять контакты в адресной книге. Для этого надо выбрать необходимое число контактов:

Объединение контактов Google

Объединение контактов Google

Затем система сама всё распределит и предложит лучший вариант, который можно подредактировать. Но, как отмечают на официальном блоге Gmail, система автодополнения адреса при составлении письма пока работает не так, как хотелось бы.

Осталось только разобраться с большим количеством контактов. Ведь теперь появилась и синхронизация контактов со многими мобильными устройствами, включая Windows Mobile.

Метки: , , , , , , ,

Google Short Links

Этой осенью Google включил Labs в Apps не только для своей почты, но и вообще во всём сервисе. Теперь там появляются новые интересные сервисы от различных разработчиков. В качестве примера я расскажу о Google Shortlinks.

Чтобы включить что-нибудь из Labs в Google Apps надо сначала, конечно, включить английский (US) интерфейс, а затем перейти по ссылке добавление новых сервисов (на этой же странице можно подключить Google App Engine или, например, недавно там появились контакты):

Добавление нового сервиса в Google Apps

Добавление нового сервиса в Google Apps

Затем нажать на ссылку See more services from Google Labs:

See more services from Google Labs

See more services from Google Labs

А уже там можно выбрать нужный сервис. Их пока всего три: Moderator, Short Links и Code Review:

Google Labs

Google Labs

Итак, мы включаем Short Links, указываем нужный нам адрес, прописываем всё в DNS и… а для чего нужен этот сервис? Это похоже на сервисы, подобные TinyURL: указываем длинную ссылку, а нам дают короткую. В принципе, это и есть полное описание. Кстати, Short Links написан на python и расположен на Google App Engine.

Google Short Links

Google Short Links

Однако, есть ряд преимуществ и существенных отличий:

  • Собственный домен для коротких ссылок.
  • Учёт количества переходов по ссылке (можно использовать для анализа чего-либо).
  • Личные ссылки (для удобства, что-то вроде быстрого набора).

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

Я пользуюсь. Удобная замена TinyURL :)

Метки: , , , , , , , , , ,

Sitemap для WordPress MU

Известно, что использование sitemap (информация в Википедии) — это в любом случае хорошо, так как прежде всего мы облегчаем поисковым системам жизнь, указывая, какие страницы есть на сайте (блоге). А если учитывать, что и Google, и Яндекс поддерживают sitemap (в том числе — добавление через инструменты вебмастера), то всё-таки стоит их создать для сайта.

Для WordPress есть отличный плагин — Google XML Sitemaps, который делает полностью всё сам. Добавляет нужные пути в файл sitemap.xml, пересоздаёт его в фоновом режиме после каждой новой публикации и пингует поисковые системы. Но в WordPress MU его нужно немного подправить, чтобы он правильно работал.

Итак, ниже идёт переведённый и чуть изменённый вариант пошагового руководства по настройке sitemap для WordPress MU:

  1. Cкачайте новую версию Google XML Sitemap и разархивируйте его в папку с плагинами.
  2. Откройте файл sitemap-core.php в директории wp-content/plugins/google-sitemap-generator и найдите там второе вхождение строки
    return $res;
  3. Выше этой строчки вставьте
    global $blog_id;
    if ($blog_id != 1)
    {$res .= 'wp-content/blogs.dir/' . $blog_id . '/files/';}
  4. В файле wp-includes/functions.php найдите
    'htm|html' =&gt; 'text/html',
  5. Строчкой выше вставьте
    'xml' =&gt; 'text/xml',
  6. Откройте wp-content/blogs.php и найдите
    'htm|html' =&gt; 'text/html',
  7. Строчкой выше вставьте
    'xml' =&gt; 'text/xml',
  8. Если у вас Apache, то откройте .htaccess и найдите
    RewriteRule ^(.*/)?files/(.*) wp-content/blogs.php?file=$2 [L]
  9. Строчкой ниже вставьте
    RewriteRule ^(.*/)?sitemap.xml wp-content/blogs.php?file=sitemap.xml [L]
    RewriteRule ^(.*/)?sitemap.xml.gz wp-content/blogs.php?file=sitemap.xml.gz [L]
  10. Если же у вас Lighttpd, то откройте файл конфигурации и в настройках найдите (это для случая, если используется mod_rewrite)
    "^/(.*)?/?files/(.*)" =&gt; "wp-content/blogs.php?file=$2",
  11. Ниже строчкой вставьте
    "^/(.*)?sitemap.xml$" =&gt; "wp-content/blogs.php?file=sitemap.xml",
    "^/(.*)?sitemap.xml.gz$" =&gt; "wp-content/blogs.php?file=sitemap.xml.gz",
  12. Зайдите в настройки всего сайта (АдминистрированиеПараметры) и в настройках типов файлов укажите дополнительно xml и xml.gz:
    jpg jpeg png gif mp3 mov avi wmv midi mid pdf swf html htm xml xml.gz
  13. Активируйте плагин
  14. В настройках плагина для каждого конкретного сайта укажите собственное размещение файла sitemap.xml. Это должно выглядеть примерно так:
    /home/xxxxxxx/public_html/wp-content/blogs.dir/1/files/sitemap.xml
    — для главного сайта. А для других укажите нужный номер (замените 1) по ID блога. В оригинальной статье предлагается использовать для других блогов x, но у меня почему-то не получилось, поэтому пришлось делать для каждой ленты вручную.
  15. Всё. Теперь можно добавлять sitemap во все поисковики (кстати, можно и в robots.txt)

Для Яндекса (Яндекс.Вебмастер):

Добавление sitemap в Яндекс.Вебмастер

Добавление sitemap в Яндекс.Вебмастер

Для Google (Webmaster Tools):

Добавление sitemap в Google Webmaster Tools

Добавление sitemap в Google Webmaster Tools

Теперь всё работает отлично!

Метки: , , , , , , , , , , , ,

Презентации в интернете

Я недавно писал про то, что Google Docs помогает в учёбе: можно совместно делать презентации прямо в интернете, не устанавливая для этого дополнительного программного обеспечения. Сейчас же я хочу написать не только о таких сервисах, но и о тех, которые можно использовать, если вы просто хотите показать свою презентацию.

Например, вы сделали презентацию в Microsoft PowerPoint и хотите показать её знакомым или выложить в блоге. Как это сделать? Разместить сам .ppt-файл для скачивания? Да, так можно сделать, но стоит всё-таки учесть, что не у всех стоит MS Office или что-то подобное, зато у всех есть (почти у всех) поддержка Flash в браузере. Именно на этом и основаны сервисы, на которые можно закачать уже существующую презентацию, чтобы показать другим, всего лишь дав специальную ссылку или вставив презентацию прямо на блог, как это делается с YouTube-видеороликами.

Итак, ниже речь пойдёт о следующих сервисах:

А также стоит упомянуть сервисы по созданию презентаций:

SlideShare— один из самых популярных подобных сервисов в интернете.

Первая страница SlideShare

Первая страница SlideShare

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

Загрузка презентации на SlideShare

Загрузка презентации на SlideShare

Из плюсов также можно отметить загрузку презентаций размером аж до 100 Мб. Кроме того есть множество социальных функций: рейтинг, сообщества, комментарии и т.п. Минусы SlideShare: достаточно медленная работа и невозможность загрузки файлов .pptx (MS Office 2007).

authorSTREAM поддерживает .pptx, быстро работает и тоже позволяет закачивать презентации без регистрации.

authorSTREAM

authorSTREAM


Менее популярен, поэтому, наверное, старается внедрить как можно больше различных полезных фишек: API, загрузка презентации на YouTube и т.п. Конечно же, презентацию также можно вставить на свой блог или сайт.

Scribd — другой довольно популярный сервис по обмену презентациями. К сожадению, без регистрации закачать ничего нельзя, зато эта регистрация проходит в один клик сразу же после выбора файла. Система поддерживает очень много форматов (.pptx, ,doc, .pdf, .xls и т.п.) и работает быстро.

Загрузка презентации в Scribd

Загрузка презентации в Scribd


Как и в SlideShare очень много в Scribd построено на социальности: друзья, похожие презентации и т.п.

Стоит отметить, что все вышеописанные сервисы отлично справились с моими тестовыми презентациями (в них находились эффекты, встроенные шрифты (нестандартные), картинки и фотографии). Но SlideShare эффекты вообще удалил, authorSTREAM же оставил всё точь-в-точь, как это выглядело бы в PowerPoint. Теперь же стоит рассказать о сервисах, позволяющих создавать презентации прямо в интернете.

Google Docs — просто, быстро и интегрирован с другими сервисами Google. Большой плюс: одновременная работа и возможность экспорта в .ppt и PDF, а также встроить прямо на страницу в интернете. Но каких-то особенных фишек нет — вообще можно сказать, что всё скудно. Однако, недавно появилось много шаблонов.

Zoho Show — компонент известного Zoho. Предоставляет множество «фишек», в том числе и по работе с текстом. Также есть возможность одновременной работы.

Zoho Show

Zoho Show

SlideRocket — один из самых продвинутых сервисов по созданию презентаций (среди тех, конечно, что я видел). Можно посмотреть презентацию его презентации его возможностей:

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

Выбор за вами, но я всё-таки пока выбрал Google Docs и SlideShare с authorSTREAM.

Ссылки по теме:

Метки: , , , , , , , , ,

Презентации Google Docs помогают в учёбе

Я уже давно пользуюсь инструментарием, предлагающемся в Google Docs:

  • Документы
  • Таблицы
  • Презентации

Особенно удобно, что всё располагается в собственном домене. Но вчера я впервые попробовал воспользоваться документами Google в «учебном процессе». Нам довольно часто по учёбе необходимо делать различные презентации. Естественно, делать одному неинтересно и неэффективно, поэтому мы работает по двое, а иногда и по трое. Как же, например, втроём создать одну презентацию? Обычно каждый делает свой кусок в MS PowerPoint и рассылает остальным по электронной почте, и уже после этого кто-то один всё приводит к единому оформлению и правильным логическим связям.

Всё это занимает достаточно много времени. По опыту предыдущих презентаций — от трёх дней. Но с документами в сети всё пошло намного быстрее.

Я создал презентацию в Google Docs и разослал всем приглашения. В течение одного вечера и одного утра мы сделали совместно одну хорошую презентацию. Какие же преимущества:

  • Это бесплатно. Необходим только интернет.
  • Мы можем одновременно обсуждать и делать презентацию. Да, каждый делает свою часть, а другие видят, что уже сделано. Если это реализовать обычным способом, то необходимо постоянно пересылать друг другу файлы.
  • Можно дать ссылку на уже готовую презентацию другому человеку.
  • Если забыл записать презентацию, то она всегда есть в интернете.
  • Создание презентации в Google Docs — очень простое дело. Минимум инструментов, и ничего не мешает.
  • Сохраняются промежуточные версии, на которые можно откатиться.

После создания я сделал экспорт в PDF, и на занятии сегодня мы хорошо выступили. Большой плюс, что эту презентацию можно вставить прямо в запись блога:

Минусы:

  • Необходим постоянный доступ в интернет, но можно, например, воспользоваться Google Gears. Хотя в некоторых случаях всё-таки больше преимуществ у обычных программ.
  • Нет эффектов (и хорошо!), но нет и вставки номера текущей страницы — из-за этого приходится вводить эти числа самому.
  • Иногда данные могут не сохранится из-за одновременного редактирования одного и того же слайда.

Итог: в некоторых случаях всё-таки презентации от Google являются полезными.

Метки: , , , , , , ,

Google Адреса

Одним из наиболее заметным нововведением Gmail 2.0 стала улучшенная адресная книга, с лучшим поиском и более удобным интерфейсом:

Google Адреса

Google Адреса

Можно заметить, что адресная книга открывается не сразу, а всё из-за того, что расположена она во фрейме iframe.

Google недавно обновил отдельную страницу для адресной книги, добавив при этом свой логотип. К сожалению, адрес страницы не очень-то легко запоминаемый: http://mail.google.com/mail/contacts/ui/ContactManager.

Очень удобно иногда пользоваться такой адресной книгой. Кстати, если вы пользуетесь Google Apps (Службы Google), то адрес такой страницы уже немного другой: https://mail.google.com/a/ваш_домен/contacts/ui/ContactManager

Источник новости — Google Contacts от Google Operating System.

Метки: , , , , , ,

Где же новые записи?

Я очень редко пишу в этот блог записи, которые просто так и никак не относятся к основным темам этого блога. Тем не менее мне стоит написать, что блог не заброшен, и ещё будут интересные записи.

Но почему же не было вообще ничего? Сначала я был в Финляндии на Jyväskylä Summer School, где узнал новое о Information Society и Game Theory.

Jyvaskyla: Carita and Evgeny

Сейчас же я на другой летней школе, а именно на Russian Summer School in Information Retrieval, где узнаю, например, о CBIR.

О чём же я хочу написать после того, как наконец-то снова буду в Ярославле?

  • Обновлённая статья о установке и настройке Opera Mini для компьютера (в т.ч. и не только для Windows).
  • Советы по работе с Drupal.
  • Работа с Amazon S3, в том числе настройка резервного копирования для серверов.
  • Знакомство с Google App Engine.
  • Новые советы по работе с WordPress и кок-что с линуксом.

Конечно, это не всё, о чём я хочу написать. Но это будет первым. Спасибо всем, кто читает мой блог и поддерживает меня.

Метки: , , , , , ,

Google App Engine открыт теперь для всех

Блог Google System сообщил о том, что теперь Google App Engine (GAE) открыт для всех разработчиков. GAE позволяет создавать практически любые web-приложения с лёгким масштабированием.

Google App Engine

Бесплатно Google предоставляет 500 Mb свободного места и процессорной мощности на пять миллионов просмотров страниц в месяц. Скоро (или уже?) появятся и платные услуги:

$0.10 — $0.12 per CPU core-hour
$0.15 — $0.18 per GB-month of storage
$0.11 — $0.13 per GB outgoing bandwidth
$0.09 — $0.11 per GB incoming bandwidth

— что очень похоже на Amazon, о котором я недавно писал.

Я уже активировал себе GAE. Большой плюс для тех, кто пользуется Google Apps (Службы Google): можно привязать GAE к своему домену.

Google App Engine in Google Apps

Я уже придумал, что сделаю — это, скорее всего, будет что-то связанное с проектом Face Detection. Писать же пока можно только на питоне, который я совершенно не знаю, но от этого ещё более интересно что-то делать.

Можно использовать и фреймворк Django. Нашёл интересные статьи для быстрого старта:

Хоть Google и обещает сделать поддержку и других языков, но чем питон плох? Буду изучать!

Метки: , , , , , ,