<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2russianfull.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" version="2.0">

<channel>
	<title>Evgeny Pavlov: блог об интернете, веб-технологиях, дизайне и вёрстке</title>
	
	<link>http://e-pavlov.ru</link>
	<description>ай-ти: советы и интернетные решения</description>
	<lastBuildDate>Fri, 30 Oct 2009 12:18:18 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.5</generator>
	<language>ru</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/e-pavlov" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="e-pavlov" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><image><link>http://blog.piclab.ru/e-pavlov</link><url>http://blog.piclab.ru/e-pavlov/wp-content/themes/light-eunix/images/evgeny_pavlov.jpg</url><title>Evgeny Pavlov</title></image><feedburner:emailServiceId xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">e-pavlov</feedburner:emailServiceId><feedburner:feedburnerHostname xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://feedburner.google.com</feedburner:feedburnerHostname><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://add.my.yahoo.com/rss?url=http%3A%2F%2Ffeeds.feedburner.com%2Fe-pavlov" src="http://us.i1.yimg.com/us.yimg.com/i/us/my/addtomyyahoo4.gif">Subscribe with My Yahoo!</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2Fe-pavlov" src="http://www.newsgator.com/images/ngsub1.gif">Subscribe with NewsGator</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://feeds.my.aol.com/add.jsp?url=http%3A%2F%2Ffeeds.feedburner.com%2Fe-pavlov" src="http://o.aolcdn.com/favorites.my.aol.com/webmaster/ffclient/webroot/locale/en-US/images/myAOLButtonSmall.gif">Subscribe with My AOL</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.bloglines.com/sub/http://feeds.feedburner.com/e-pavlov" src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Ffeeds.feedburner.com%2Fe-pavlov" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2Fe-pavlov" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.pageflakes.com/subscribe.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2Fe-pavlov" src="http://www.pageflakes.com/ImageFile.ashx?instanceId=Static_4&amp;fileName=ATP_blu_91x17.gif">Subscribe with Pageflakes</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://lenta.yandex.ru/settings.xml?name=feed&amp;url=http%3A%2F%2Ffeeds.feedburner.com%2Fe-pavlov" src="http://lenta.yandex.ru/i/addfeed.gif">?????? ? ??????.?????</feedburner:feedFlare><item>
		<title>Получение задач Google Tasks</title>
		<link>http://e-pavlov.ru/blog/2009/10/30/google-tasks-python.html#utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=google-tasks-python</link>
		<comments>http://e-pavlov.ru/blog/2009/10/30/google-tasks-python.html#comments</comments>
		<pubDate>Fri, 30 Oct 2009 12:00:27 +0000</pubDate>
		<dc:creator>Evgeny Pavlov</dc:creator>
				<category><![CDATA[Unix]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Google Apps]]></category>
		<category><![CDATA[Google Calendar]]></category>
		<category><![CDATA[Google Tasks]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://e-pavlov.ru/?p=434</guid>
		<description><![CDATA[Давненько я не писал в этот блог, хотя, конечно, не от того, что мне не о чем было писать или я перестал интересоваться web-разработкой и интернет-технологиями. Нет, скорее всего было просто лень :-)
Но чтобы эту лень побороть, надо пользоваться каким-нибудь планировщиком/календарём. А так как я полностью на продуктах Google, то неудивительно, что я пользуюсь Google [...]]]></description>
			<content:encoded><![CDATA[<p>Давненько я не писал в этот блог, хотя, конечно, не от того, что мне не о чем было писать или я перестал интересоваться web-разработкой и интернет-технологиями. Нет, скорее всего было просто лень :-)</p>
<p>Но чтобы эту лень побороть, надо пользоваться каким-нибудь планировщиком/календарём. А так как я полностью на продуктах Google, то неудивительно, что я пользуюсь <a href="http://calendar.google.com" class="liexternal">Google Calendar</a> (который замечательно синхронизируется как с системой, так и с телефоном) и теперь <strong>Google Tasks</strong>.</p>
<p>Итак, задача и проблема: <strong>мне необходимо вывести мои задачи Google Tasks прямо в консоли</strong> (это необходимо, например, чтобы потом повесить этот список задач прямо на мой рабочий стол, где уже есть Google Calendar). Как же это сделать, если пока нет Google Tasks API? Если нет, то нам придётся эмулировать работу браузера, чтобы получить список задач.</p>
<p>Для начала стоит выбрать верную версию сайта <a href="http://googlesystem.blogspot.com/2009/10/fullscreen-google-tasks.html" class="liexternal">Google Tasks среди огромного множества</a> (разные устройства, iGoogle, Gmail и т.п.). Я выбрал мобильную версию, так как можно напрямую обратиться к нужному списку:</p>
<ul>
<li><strong>https://mail.google.com/tasks/m</strong> для владельцев Google Accounts</li>
<li><strong>https://mail.google.com/tasks/a/domain.com/m</strong> для пользователей Google Apps</li>
</ul>
<p>Сначала я решил воспользоваться просто bash и написать скрипт. Но после того, как я довольно долго с этим промучался, я решил <strong>всё-таки писать на python</strong>, так как он есть у всех.</p>
<p>В итоге получился скрипт, который я немного прокомментирую чуть ниже (можно скачать отдельным файлом <a href="http://e-pavlov.ru/files/2009/10/google_tasks.py" class="liinternal">google_tasks.py</a>):</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>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
</pre></td><td class="code"><pre class="python" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">#!/usr/bin/env python</span>
&nbsp;
<span style="color: #483d8b;">&quot;&quot;&quot;
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 '*'
&nbsp;
Example:
    google_tasks.py -e bob@gmail.com -p yaroslavl -b --
&nbsp;
Thank you Scott Hillman for the implementation of Google Authentication
http://everydayscripting.blogspot.com/2009/10/python-fixes-to-google-login-script.html
&nbsp;
Evgeny Pavlov, http://evgeny.tel
&quot;&quot;&quot;</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">urllib</span>
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">urllib2</span>
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">htmllib</span>
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">getpass</span>
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">re</span>
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">sys</span>
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">getopt</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">def</span> unescape<span style="color: black;">&#40;</span>text<span style="color: black;">&#41;</span>:
    <span style="color: #483d8b;">&quot;&quot;&quot;Removes HTML or XML character references 
       and entities from a text string
&nbsp;
       From Fredrik Lundh
       http://effbot.org/zone/re-sub.htm#unescape-html
&nbsp;
       Little bit modified
    &quot;&quot;&quot;</span>
    <span style="color: #ff7700;font-weight:bold;">def</span> fixup<span style="color: black;">&#40;</span>m<span style="color: black;">&#41;</span>:
        text = m.<span style="color: black;">group</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">0</span><span style="color: black;">&#41;</span>
        <span style="color: #ff7700;font-weight:bold;">if</span> text<span style="color: black;">&#91;</span>:<span style="color: #ff4500;">2</span><span style="color: black;">&#93;</span> == <span style="color: #483d8b;">&quot;&amp;#&quot;</span>:
            <span style="color: #808080; font-style: italic;"># Character reference</span>
            <span style="color: #ff7700;font-weight:bold;">try</span>:
                <span style="color: #ff7700;font-weight:bold;">if</span> text<span style="color: black;">&#91;</span>:<span style="color: #ff4500;">3</span><span style="color: black;">&#93;</span> == <span style="color: #483d8b;">&quot;&amp;#x&quot;</span>:
                    <span style="color: #ff7700;font-weight:bold;">return</span> <span style="color: #008000;">unichr</span><span style="color: black;">&#40;</span><span style="color: #008000;">int</span><span style="color: black;">&#40;</span>text<span style="color: black;">&#91;</span><span style="color: #ff4500;">3</span>:-<span style="color: #ff4500;">1</span><span style="color: black;">&#93;</span>, <span style="color: #ff4500;">16</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
                <span style="color: #ff7700;font-weight:bold;">else</span>:
                    <span style="color: #ff7700;font-weight:bold;">return</span> <span style="color: #008000;">unichr</span><span style="color: black;">&#40;</span><span style="color: #008000;">int</span><span style="color: black;">&#40;</span>text<span style="color: black;">&#91;</span><span style="color: #ff4500;">2</span>:-<span style="color: #ff4500;">1</span><span style="color: black;">&#93;</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
            <span style="color: #ff7700;font-weight:bold;">except</span> <span style="color: #008000;">ValueError</span>:
                <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;Error with encoding HTML entities&quot;</span>
                <span style="color: #ff7700;font-weight:bold;">pass</span>
        <span style="color: #ff7700;font-weight:bold;">else</span>:
            <span style="color: #808080; font-style: italic;"># Named entity</span>
            text = <span style="color: #008000;">unichr</span><span style="color: black;">&#40;</span><span style="color: #dc143c;">htmlentitydefs</span>.<span style="color: black;">name2codepoint</span><span style="color: black;">&#91;</span>text<span style="color: black;">&#91;</span><span style="color: #ff4500;">1</span>:-<span style="color: #ff4500;">1</span><span style="color: black;">&#93;</span><span style="color: black;">&#93;</span><span style="color: black;">&#41;</span>
        <span style="color: #ff7700;font-weight:bold;">return</span> text <span style="color: #808080; font-style: italic;"># leave as is</span>
    <span style="color: #ff7700;font-weight:bold;">return</span> <span style="color: #dc143c;">re</span>.<span style="color: black;">sub</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;&amp;#?<span style="color: #000099; font-weight: bold;">\w</span>+;&quot;</span>, fixup, text<span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">def</span> main<span style="color: black;">&#40;</span>argv<span style="color: black;">&#41;</span>:
    <span style="color: #483d8b;">&quot;&quot;&quot; Get arguments: email, password and type of bullet &quot;&quot;&quot;</span>
&nbsp;
    bullet = <span style="color: #483d8b;">'* '</span>
    <span style="color: #dc143c;">email</span> =  <span style="color: #483d8b;">''</span>
    password = <span style="color: #483d8b;">''</span>
&nbsp;
    <span style="color: #ff7700;font-weight:bold;">try</span>:
        opts, args = <span style="color: #dc143c;">getopt</span>.<span style="color: #dc143c;">getopt</span><span style="color: black;">&#40;</span>argv, <span style="color: #483d8b;">&quot;he:p:b:&quot;</span>, <span style="color: black;">&#91;</span><span style="color: #483d8b;">&quot;help&quot;</span>, <span style="color: #483d8b;">&quot;email=&quot;</span>, <span style="color: #483d8b;">&quot;password=&quot;</span>, <span style="color: #483d8b;">&quot;bullet=&quot;</span><span style="color: black;">&#93;</span><span style="color: black;">&#41;</span> 
    <span style="color: #ff7700;font-weight:bold;">except</span> <span style="color: #dc143c;">getopt</span>.<span style="color: black;">GetoptError</span>:
        usage<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
        <span style="color: #dc143c;">sys</span>.<span style="color: black;">exit</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">2</span><span style="color: black;">&#41;</span>
    <span style="color: #ff7700;font-weight:bold;">for</span> opt, arg <span style="color: #ff7700;font-weight:bold;">in</span> opts:
        <span style="color: #ff7700;font-weight:bold;">if</span> opt <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;-h&quot;</span>, <span style="color: #483d8b;">&quot;--help&quot;</span><span style="color: black;">&#41;</span>:
            usage<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
            <span style="color: #dc143c;">sys</span>.<span style="color: black;">exit</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
        <span style="color: #ff7700;font-weight:bold;">elif</span> opt <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;-e&quot;</span>, <span style="color: #483d8b;">&quot;--email&quot;</span><span style="color: black;">&#41;</span>:
            <span style="color: #dc143c;">email</span> = arg
        <span style="color: #ff7700;font-weight:bold;">elif</span> opt <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;-p&quot;</span>, <span style="color: #483d8b;">&quot;--password&quot;</span><span style="color: black;">&#41;</span>:
            password = arg
        <span style="color: #ff7700;font-weight:bold;">elif</span> opt <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;-b&quot;</span>, <span style="color: #483d8b;">&quot;--bullet&quot;</span><span style="color: black;">&#41;</span>:
            bullet = arg    
&nbsp;
    <span style="color: #ff7700;font-weight:bold;">return</span> <span style="color: black;">&#40;</span><span style="color: #dc143c;">email</span>, password, bullet<span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">def</span> usage<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>:
    <span style="color: #483d8b;">&quot;&quot;&quot; Help and the list of arguments for this script &quot;&quot;&quot;</span>
&nbsp;
    <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;&quot;&quot;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 '*'
&nbsp;
Example:
    google_tasks.py -e bob@gmail.com -p yaroslavl -b --
&nbsp;
Evgeny Pavlov, http://evgeny.tel&quot;&quot;&quot;</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">if</span> __name__ == <span style="color: #483d8b;">&quot;__main__&quot;</span>:
    <span style="color: #808080; font-style: italic;"># Arguments</span>
    <span style="color: black;">&#40;</span><span style="color: #dc143c;">email</span>, password, bullet<span style="color: black;">&#41;</span> = main<span style="color: black;">&#40;</span><span style="color: #dc143c;">sys</span>.<span style="color: black;">argv</span><span style="color: black;">&#91;</span><span style="color: #ff4500;">1</span>:<span style="color: black;">&#93;</span><span style="color: black;">&#41;</span>
&nbsp;
    <span style="color: #808080; font-style: italic;"># Google Account or Google Apps</span>
    email_split = <span style="color: #dc143c;">email</span>.<span style="color: black;">split</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'@'</span><span style="color: black;">&#41;</span>
    <span style="color: #ff7700;font-weight:bold;">try</span>:
        email_domain = email_split<span style="color: black;">&#91;</span><span style="color: #ff4500;">1</span><span style="color: black;">&#93;</span>
    <span style="color: #ff7700;font-weight:bold;">except</span>:
        <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">'Incorrect email address!<span style="color: #000099; font-weight: bold;">\n</span>'</span>
        usage<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
        <span style="color: #dc143c;">sys</span>.<span style="color: black;">exit</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
    <span style="color: #ff7700;font-weight:bold;">if</span> email_domain <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: black;">&#40;</span><span style="color: #483d8b;">'googlemail.com'</span>, <span style="color: #483d8b;">'gmail.com'</span>, <span style="color: #483d8b;">'google.com'</span><span style="color: black;">&#41;</span>:
        google_apps = <span style="color: #ff4500;">0</span>
    <span style="color: #ff7700;font-weight:bold;">else</span>:
        google_apps = <span style="color: #ff4500;">1</span>
        <span style="color: #dc143c;">email</span> = email_split<span style="color: black;">&#91;</span><span style="color: #ff4500;">0</span><span style="color: black;">&#93;</span>
&nbsp;
    <span style="color: #808080; font-style: italic;"># Initialization  </span>
    opener = <span style="color: #dc143c;">urllib2</span>.<span style="color: black;">build_opener</span><span style="color: black;">&#40;</span><span style="color: #dc143c;">urllib2</span>.<span style="color: black;">HTTPCookieProcessor</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
    <span style="color: #dc143c;">urllib2</span>.<span style="color: black;">install_opener</span><span style="color: black;">&#40;</span>opener<span style="color: black;">&#41;</span>
&nbsp;
    <span style="color: #808080; font-style: italic;"># Define URLs</span>
    <span style="color: #ff7700;font-weight:bold;">if</span> google_apps:
        login_page_url = <span style="color: #483d8b;">'https://www.google.com/a/%s/ServiceLogin'</span> <span style="color: #66cc66;">%</span> email_domain
        auth_url = <span style="color: #483d8b;">'https://www.google.com/a/%s/LoginAction2'</span> <span style="color: #66cc66;">%</span> email_domain
        tasks_url = <span style="color: #483d8b;">'https://mail.google.com/tasks/a/%s/m'</span> <span style="color: #66cc66;">%</span> email_domain
    <span style="color: #ff7700;font-weight:bold;">else</span>:
        login_page_url = <span style="color: #483d8b;">'https://www.google.com/accounts/ServiceLogin'</span>
        auth_url = <span style="color: #483d8b;">'https://www.google.com/accounts/ServiceLoginAuth'</span>
        tasks_url = <span style="color: #483d8b;">'https://mail.google.com/tasks/m'</span>
&nbsp;
    <span style="color: #808080; font-style: italic;"># 1. Load login page</span>
    login_page_content = opener.<span style="color: #008000;">open</span><span style="color: black;">&#40;</span>login_page_url<span style="color: black;">&#41;</span>.<span style="color: black;">read</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
&nbsp;
    <span style="color: #808080; font-style: italic;"># Find GALX value</span>
    galx_match_obj = <span style="color: #dc143c;">re</span>.<span style="color: black;">search</span><span style="color: black;">&#40;</span>r<span style="color: #483d8b;">'name=&quot;GALX&quot;<span style="color: #000099; font-weight: bold;">\s</span>*value=&quot;([^&quot;]+)&quot;'</span>, login_page_content, <span style="color: #dc143c;">re</span>.<span style="color: black;">IGNORECASE</span><span style="color: black;">&#41;</span>
&nbsp;
    galx = galx_match_obj.<span style="color: black;">group</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">1</span><span style="color: black;">&#41;</span> <span style="color: #ff7700;font-weight:bold;">if</span> galx_match_obj.<span style="color: black;">group</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">1</span><span style="color: black;">&#41;</span> <span style="color: #ff7700;font-weight:bold;">is</span> <span style="color: #ff7700;font-weight:bold;">not</span> <span style="color: #008000;">None</span> <span style="color: #ff7700;font-weight:bold;">else</span> <span style="color: #483d8b;">''</span>
&nbsp;
    <span style="color: #808080; font-style: italic;"># Set up login credentials</span>
    login_params = <span style="color: #dc143c;">urllib</span>.<span style="color: black;">urlencode</span><span style="color: black;">&#40;</span> <span style="color: black;">&#123;</span>
       <span style="color: #483d8b;">'Email'</span> : <span style="color: #dc143c;">email</span>,
       <span style="color: #483d8b;">'Passwd'</span> : password,
       <span style="color: #483d8b;">'continue'</span> : tasks_url,
       <span style="color: #483d8b;">'GALX'</span>: galx
    <span style="color: black;">&#125;</span><span style="color: black;">&#41;</span>
&nbsp;
    <span style="color: #808080; font-style: italic;"># 2. Login</span>
    opener.<span style="color: #008000;">open</span><span style="color: black;">&#40;</span>auth_url, login_params<span style="color: black;">&#41;</span>
&nbsp;
    <span style="color: #808080; font-style: italic;"># 3. Open Tasks home page</span>
    tasks_content = opener.<span style="color: #008000;">open</span><span style="color: black;">&#40;</span>tasks_url<span style="color: black;">&#41;</span>.<span style="color: black;">read</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
&nbsp;
    <span style="color: #808080; font-style: italic;"># Check signing in</span>
    key = <span style="color: #dc143c;">re</span>.<span style="color: black;">search</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'create_tasks'</span>, tasks_content<span style="color: black;">&#41;</span>
    <span style="color: #ff7700;font-weight:bold;">if</span> <span style="color: #ff7700;font-weight:bold;">not</span> key:
        <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">'Check your credintals!'</span>
        <span style="color: #dc143c;">sys</span>.<span style="color: black;">exit</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
&nbsp;
    <span style="color: #808080; font-style: italic;"># Retrieve list ids</span>
    tasks_content_split_obj = <span style="color: #dc143c;">re</span>.<span style="color: black;">search</span><span style="color: black;">&#40;</span>r<span style="color: #483d8b;">'&lt;select(.*?)select&gt;'</span>, tasks_content, <span style="color: #dc143c;">re</span>.<span style="color: black;">IGNORECASE</span><span style="color: black;">&#41;</span>
    tasks_content_split = tasks_content_split_obj.<span style="color: black;">group</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">1</span><span style="color: black;">&#41;</span>
    listids = <span style="color: #dc143c;">re</span>.<span style="color: black;">findall</span><span style="color: black;">&#40;</span>r<span style="color: #483d8b;">'[0-9]{20}:[0-9]:[0-9]'</span>, tasks_content_split<span style="color: black;">&#41;</span>
&nbsp;
    <span style="color: #808080; font-style: italic;"># 4. Fetch all lists</span>
    <span style="color: #ff7700;font-weight:bold;">for</span> listid <span style="color: #ff7700;font-weight:bold;">in</span> listids:
        <span style="color: #808080; font-style: italic;"># List content</span>
        list_content = opener.<span style="color: #008000;">open</span><span style="color: black;">&#40;</span>tasks_url + <span style="color: #483d8b;">&quot;?listid=%s&quot;</span> <span style="color: #66cc66;">%</span> listid<span style="color: black;">&#41;</span>.<span style="color: black;">read</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
&nbsp;
        <span style="color: #808080; font-style: italic;"># Only tasks remain</span>
        list_content_split_obj = <span style="color: #dc143c;">re</span>.<span style="color: black;">search</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'(.*?)name=&quot;numa&quot;'</span>, list_content, <span style="color: #dc143c;">re</span>.<span style="color: black;">IGNORECASE</span> | <span style="color: #dc143c;">re</span>.<span style="color: black;">DOTALL</span><span style="color: black;">&#41;</span>
        list_content_split = list_content_split_obj.<span style="color: black;">group</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">1</span><span style="color: black;">&#41;</span>
&nbsp;
        <span style="color: #808080; font-style: italic;"># Get Tasks in</span>
<span style="color: #66cc66;">&lt;</span>tr<span style="color: #66cc66;">&gt;&lt;</span>/tr<span style="color: #66cc66;">&gt;</span>
tasks_in_tr = <span style="color: #dc143c;">re</span>.<span style="color: black;">findall</span><span style="color: black;">&#40;</span>r<span style="color: #483d8b;">'
&lt;tr(.*?)tr&gt;'</span>, list_content_split, <span style="color: #dc143c;">re</span>.<span style="color: black;">IGNORECASE</span> | <span style="color: #dc143c;">re</span>.<span style="color: black;">DOTALL</span><span style="color: black;">&#41;</span>
&nbsp;
        <span style="color: #808080; font-style: italic;"># Work with this dirty tasks</span>
        <span style="color: #ff7700;font-weight:bold;">for</span> task_in_tr <span style="color: #ff7700;font-weight:bold;">in</span> tasks_in_tr:
            <span style="color: #808080; font-style: italic;"># Retrieve task</span>
            task_obj = <span style="color: #dc143c;">re</span>.<span style="color: black;">search</span><span style="color: black;">&#40;</span>r<span style="color: #483d8b;">'
&lt;td class=&quot;text&quot;&gt;(.*?)&lt;/td&gt;
'</span>, task_in_tr, <span style="color: #dc143c;">re</span>.<span style="color: black;">IGNORECASE</span><span style="color: black;">&#41;</span>
            task = task_obj.<span style="color: black;">group</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">1</span><span style="color: black;">&#41;</span>
&nbsp;
            <span style="color: #808080; font-style: italic;"># Indent</span>
            indent = <span style="color: #008000;">len</span><span style="color: black;">&#40;</span><span style="color: #dc143c;">re</span>.<span style="color: black;">findall</span><span style="color: black;">&#40;</span>r<span style="color: #483d8b;">'
&lt;td class=&quot;checkbox&quot;'</span>, task_in_tr<span style="color: black;">&#41;</span><span style="color: black;">&#41;</span> - <span style="color: #ff4500;">1</span>
&nbsp;
            <span style="color: #808080; font-style: italic;"># HTML entities</span>
            task = unescape<span style="color: black;">&#40;</span>task<span style="color: black;">&#41;</span>
            task = task.<span style="color: black;">strip</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
&nbsp;
            <span style="color: #808080; font-style: italic;"># 5. At last output</span>
            <span style="color: #ff7700;font-weight:bold;">if</span> task  <span style="color: #66cc66;">!</span>= <span style="color: #483d8b;">''</span>: 
                <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">'  '</span> <span style="color: #66cc66;">*</span> indent, bullet, task</pre></td></tr></table></div>

<p><strong>Скрипт выводит список задач Google Tasks в довольно приятном виде</strong>. </p>
<p>Как же работает этот скрипт? Всё довольно просто: для того чтобы пройти аутентификацию Google, нужны адрес электронной почты и пароль. При этом Google проверяет, как происходит вход, поэтому каждый раз генерирует специальное значение GALX, которое затем сверяет. Но обо всём (почти обо всём по порядку):</p>
<ul>
<li>31-56, функция unescape (). Необходима для конвертации т.н. HTML entities, которые присутствуют в мобильной версии Google Tasks. Переводит #&123; в нормальные символы. <a href="http://www.w3.org/QA/2008/04/unescape-html-entities-python.html" class="liexternal">Реализацию подсмотрел на W3C</a>.</li>
<li>59-80, функция main () нам нужна для того, чтобы прочесть аргументы, переданные в командной строке. <a href="http://www.faqs.org/docs/diveintopython/kgp_commandline.html" class="liexternal">Идея из онлайн-книги Dive Into Python</a>.</li>
<li>106-118, определение, каким является аккаунт — Google Accounts или Google Apps. Происходит путём банальной проверки домена.</li>
<li>134-151, аутентификация Google как раз с использованием GALX. Кроме того, необходимо использовать cookies. <a href="http://everydayscripting.blogspot.com/2009/10/python-fixes-to-google-login-script.html" class="liexternal">Идея блога Every Day Scripting</a>. У меня получалось реализовать и с помощью wget. Если кому-то интересно, то могу поделиться.</li>
<li>А дальше происходит анализ HTML и поиск задач.</li>
</ul>
<p>Чтобы воспользоваться скриптом, надо его просто положить в нужное вам место, сделать исполняемым (chown +x) и запускать со следущими параметрами:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">google_tasks.py <span style="color: #660033;">-e</span> bob<span style="color: #000000; font-weight: bold;">@</span>gmail.com <span style="color: #660033;">-p</span> yaroslavl</pre></div></div>

<p>Кроме того, можно менять оформление задач с помощью ключа 	<em>-b</em>: по-умолчанию стоит звёзточка.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/e-pavlov?a=5YbyQcYwBJE:oxumwN2-A8I:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/e-pavlov?i=5YbyQcYwBJE:oxumwN2-A8I:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/e-pavlov?a=5YbyQcYwBJE:oxumwN2-A8I:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/e-pavlov?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/e-pavlov?a=5YbyQcYwBJE:oxumwN2-A8I:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/e-pavlov?i=5YbyQcYwBJE:oxumwN2-A8I:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/e-pavlov?a=5YbyQcYwBJE:oxumwN2-A8I:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/e-pavlov?i=5YbyQcYwBJE:oxumwN2-A8I:F7zBnMyn0Lo" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://e-pavlov.ru/blog/2009/10/30/google-tasks-python.html/feed</wfw:commentRss>
		<slash:comments>51</slash:comments>
		</item>
		<item>
		<title>Статистика подкастов</title>
		<link>http://e-pavlov.ru/blog/2009/03/16/statistika-podkastov.html#utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=statistika-podkastov</link>
		<comments>http://e-pavlov.ru/blog/2009/03/16/statistika-podkastov.html#comments</comments>
		<pubDate>Mon, 16 Mar 2009 17:26:32 +0000</pubDate>
		<dc:creator>Evgeny Pavlov</dc:creator>
				<category><![CDATA[Интернет]]></category>
		<category><![CDATA[Blubrry]]></category>
		<category><![CDATA[Piclab Podcast]]></category>
		<category><![CDATA[podcast]]></category>
		<category><![CDATA[rpod.ru]]></category>
		<category><![CDATA[подкаст]]></category>
		<category><![CDATA[подкасты]]></category>
		<category><![CDATA[статистика подкастов]]></category>
		<category><![CDATA[статистика скачиваний подкастов]]></category>

		<guid isPermaLink="false">/?p=431</guid>
		<description><![CDATA[Недавно на нашей основной ленте мы выпустили свой первый PicLab Podcast. Конечно же, хотелось бы узнать, сколько скачивают этот подкаст, с каких программ и из каких регионов.
Самый простой вариант это сделать — зарегистрироваться в каком-нибудь подкаст-каталоге (директории подкастов), выложить аудио-файл на их сервер и смотреть красивую статистику. Но я практически сразу отмёл этот способ, так [...]]]></description>
			<content:encoded><![CDATA[<p>Недавно на нашей основной ленте мы <a href="http://blog.piclab.ru/2009/03/04/piclab-podcast-1.html" class="liexternal">выпустили свой первый <strong>PicLab Podcast</strong></a>. Конечно же, хотелось бы узнать, <strong>сколько скачивают этот подкаст</strong>, с каких программ и из каких регионов.</p>
<p>Самый простой вариант это сделать — зарегистрироваться в каком-нибудь подкаст-каталоге (директории подкастов), выложить аудио-файл на их сервер и смотреть красивую статистику. Но я практически сразу отмёл этот способ, так как мне не совсем нравится то, что, например, <a href="http://rpod.ru" class="liexternal">Russian Podcasting</a> добавляет небольшую короткую аудиорекламу в начале каждого подкаста, если он записан на их сервере. Всё правильно: <strong>за хранение подкаста на их сервере всё-таки надо как-то платить</strong>.</p>
<p>Другой способ — это <strong>платные директории подкастов</strong> (например, <a href="http://blubrry.com/" class="liexternal">LibSyn</a>). Они не добавляют рекламы к вашим подкастам и предоставляют отличную статистику.</p>
<p>Но зачем же платить, если есть место на собственном сервере, или, что ещё лучше, можно <a href="/2009/02/16/cloudberry-explorer-for-amazon-s3.html" class="liinternal">разместить всё на Amazon S3</a>? Но тогда возникает вопрос: как подсчитать статистику таких подкастов, особенно, если хочется их выложить сразу же на нескольких директориях подкастов? Всё просто: <strong>надо воспользоваться бесплатным сервисом <a href="http://blubrry.com/" class="liexternal">Blubrry</a></strong>!</p>
<p>Для этого достаточно добавить к адресу своего подкаста специальный адрес сервиса Blubrry. Например, для нашего подкаста он выглядит как</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">http:<span style="color: #000000; font-weight: bold;">//</span>media.blubrry.com<span style="color: #000000; font-weight: bold;">/</span>piclab<span style="color: #000000; font-weight: bold;">/</span></pre></div></div>

<p>— следовательно, если сам подкаст лежит по адресу <strong>http://blog.piclab.ru/wp-content/podcasts/piclab_podcast_01_04032009.mp3</strong>, то новый адрес будет иметь вид <a href="http://media.blubrry.com/piclab/blog.piclab.ru/wp-content/podcasts/piclab_podcast_01_04032009.mp3" class="liexternal"><strong>http://media.blubrry.com/piclab/blog.piclab.ru/wp-content/podcasts/piclab_podcast_01_04032009.mp3</strong></a>.</p>
<p>Именно этим и обеспечивается возможность подсчёта статистики сервисом Blubrry.<br />
<div id="attachment_433" class="wp-caption aligncenter" style="width: 480px"><a href="/files/2009/03/blubrry_summary.png" ><img src="/files/2009/03/blubrry_summary-470x366.png" alt="Сводка по статистики всех подкастов в Blubrry" title="Сводка по статистики всех подкастов в Blubrry" width="470" height="366" class="size-medium wp-image-433" /></a><p class="wp-caption-text">Сводка по статистики всех подкастов в Blubrry</p></div></p>
<p>Конечно, в бесплатной версии не так много возможностей, однако можно посмотреть на <strong>общее количество скачиваний,</strong> с каких программ качают и откуда.<br />
<div id="attachment_434" class="wp-caption aligncenter" style="width: 415px"><a href="/files/2009/03/blubrry_episode.png" ><img src="/files/2009/03/blubrry_episode-405x1023.png" alt="Статистика конкретного подкаста в сервисе Blubrry" title="Статистика конкретного подкаста в сервисе Blubrry" width="405" height="1023" class="size-large wp-image-434" /></a><p class="wp-caption-text">Статистика конкретного подкаста в сервисе Blubrry</p></div></p>
<p>Кроме того, можно узнать <strong>с каких мест больше всего скачивают ваши подкасты</strong>: это удобно, когда вы размещаете подкасты в различных директориях.</p>
<p>По-моему, <strong>удобно</strong>. Хотя я попробую ещё поискать системы, которые можно было бы просто поставить на свой сервер. Да, можно анализировать логи, но, может быть, если что-то специально для подкастов?</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/e-pavlov?a=xaFRKfdhvVs:5uhPEyYdvYc:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/e-pavlov?i=xaFRKfdhvVs:5uhPEyYdvYc:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/e-pavlov?a=xaFRKfdhvVs:5uhPEyYdvYc:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/e-pavlov?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/e-pavlov?a=xaFRKfdhvVs:5uhPEyYdvYc:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/e-pavlov?i=xaFRKfdhvVs:5uhPEyYdvYc:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/e-pavlov?a=xaFRKfdhvVs:5uhPEyYdvYc:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/e-pavlov?i=xaFRKfdhvVs:5uhPEyYdvYc:F7zBnMyn0Lo" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://e-pavlov.ru/blog/2009/03/16/statistika-podkastov.html/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Как скачать полностью блог</title>
		<link>http://e-pavlov.ru/blog/2009/03/15/kak-skachat-polnostyu-blog.html#utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=kak-skachat-polnostyu-blog</link>
		<comments>http://e-pavlov.ru/blog/2009/03/15/kak-skachat-polnostyu-blog.html#comments</comments>
		<pubDate>Sun, 15 Mar 2009 19:15:53 +0000</pubDate>
		<dc:creator>Evgeny Pavlov</dc:creator>
				<category><![CDATA[Интернет]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[wget]]></category>
		<category><![CDATA[скачать блог]]></category>
		<category><![CDATA[скачать сайт]]></category>
		<category><![CDATA[скачать сайт полностью]]></category>

		<guid isPermaLink="false">/?p=428</guid>
		<description><![CDATA[Я уже как-то писал, как скачать полностью сайт с помощью программы Wget. Но когда я попытался скачать блог на WordPress с включённой функцией т.н. чистых ссылок (permalink), то у меня не скачивались статьи.
Почему же так получалось? Всё просто. Для начала рассмотрим стандартный вид адреса статьи в блоге:

/2009/02/10/merge-google-contacts.html

— Wget будет скачивать и /2009/02, что является страницей [...]


Связанные записи:<ol><li><a href='http://e-pavlov.ru/blog/2008/05/04/kak-polnostyu-skachat-tselyiy-sayt-legko-i-byistro.html' rel='bookmark' title='Permanent Link: Как полностью скачать целый сайт легко и быстро'>Как полностью скачать целый сайт легко и быстро</a> <small>У вас когда-нибудь была необходимость полностью скачать (то есть целиком)...</small></li></ol>]]></description>
			<content:encoded><![CDATA[<p>Я уже как-то писал, как <a href="/2008/05/04/kak-polnostyu-skachat-tselyiy-sayt-legko-i-byistro.html" class="liinternal">скачать полностью сайт с помощью программы Wget</a>. Но когда я попытался скачать блог на WordPress с включённой функцией т.н. <em>чистых ссылок</em> (permalink), то у меня не скачивались статьи.</p>
<p>Почему же так получалось? Всё просто. Для начала рассмотрим стандартный вид адреса статьи в блоге:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">2009</span><span style="color: #000000; font-weight: bold;">/</span>02<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">10</span><span style="color: #000000; font-weight: bold;">/</span>merge-google-contacts.html</pre></div></div>

<p>— Wget будет скачивать и <strong>/2009/02</strong>, что является страницей архива всех записей за данный период, и саму статью. Первую страницу он сохранит в файл <strong>02</strong> в директории <strong>2009</strong>, но куда же сохранить статью, если уже не получится создать директории с тем же именем <strong>02</strong>? Именно в этом и была у меня проблема.</p>
<p>Всё <a href="http://seogadget.co.uk/download-your-website-with-wget/" class="liexternal">решается просто</a>: достаточно указать флаг <em><strong>-E</strong></em> в параметрах запуска Wget, чтобы он <strong>все страницы сохранял с расширением <em>.html</em></strong>. Теперь страница с архивом будет сохранена как <strong>02.html</strong> в директории <strong>2009</strong>, так что Wget сможет создать директории <strong>02</strong>, чтобы сохранить запись.</p>
<p>Итак, итоговая строка запуска Wget с параметрами будет выглядеть так:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">wget</span> <span style="color: #660033;">-r</span> <span style="color: #660033;">-l20</span> <span style="color: #660033;">-k</span> <span style="color: #660033;">-E</span> <span style="color: #660033;">-c</span> http:<span style="color: #000000; font-weight: bold;">//</span>www.site.ru</pre></div></div>

<p>где <strong>r</strong> — рекурсивно,<br />
<strong>l</strong> — глубина рекурсии,<br />
<strong>c</strong> — с возможностью докачки,<br />
<strong>k</strong> — конвертация ссылок в абсолютные по окончанию закачки,<br />
<strong>E</strong> — сохранять страницы с расширением .html.</p>
<p>Я пробовал другие программы, но Wget всё равно лучше и проще.</p>


<p>Связанные записи:<ol><li><a href='http://e-pavlov.ru/blog/2008/05/04/kak-polnostyu-skachat-tselyiy-sayt-legko-i-byistro.html' rel='bookmark' title='Permanent Link: Как полностью скачать целый сайт легко и быстро'>Как полностью скачать целый сайт легко и быстро</a> <small>У вас когда-нибудь была необходимость полностью скачать (то есть целиком)...</small></li></ol></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/e-pavlov?a=K6Mu11Gb2NI:QD2kjPSOXv0:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/e-pavlov?i=K6Mu11Gb2NI:QD2kjPSOXv0:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/e-pavlov?a=K6Mu11Gb2NI:QD2kjPSOXv0:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/e-pavlov?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/e-pavlov?a=K6Mu11Gb2NI:QD2kjPSOXv0:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/e-pavlov?i=K6Mu11Gb2NI:QD2kjPSOXv0:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/e-pavlov?a=K6Mu11Gb2NI:QD2kjPSOXv0:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/e-pavlov?i=K6Mu11Gb2NI:QD2kjPSOXv0:F7zBnMyn0Lo" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://e-pavlov.ru/blog/2009/03/15/kak-skachat-polnostyu-blog.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>CloudBerry Explorer — работать с Amazon S3 стало проще</title>
		<link>http://e-pavlov.ru/blog/2009/02/16/cloudberry-explorer-for-amazon-s3.html#utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=cloudberry-explorer-for-amazon-s3</link>
		<comments>http://e-pavlov.ru/blog/2009/02/16/cloudberry-explorer-for-amazon-s3.html#comments</comments>
		<pubDate>Mon, 16 Feb 2009 20:25:44 +0000</pubDate>
		<dc:creator>Evgeny Pavlov</dc:creator>
				<category><![CDATA[Интернет]]></category>
		<category><![CDATA[Amazon]]></category>
		<category><![CDATA[Amazon S3]]></category>
		<category><![CDATA[CloudBerry]]></category>
		<category><![CDATA[CloudBerry Explorer]]></category>
		<category><![CDATA[S3 backup]]></category>
		<category><![CDATA[резервное копирование]]></category>

		<guid isPermaLink="false">/?p=411</guid>
		<description><![CDATA[Я уже давно и постоянно пользуюсь сервисом S3 от компании Amazon. Если по-простому, то это система хранения файлов с относительно низкими ценами (если просто хранить, а не давать другим много скачивать). Я уже давно использую Amazon S3 и как средство для личного резервного копирования, так и для размещения фотографий и других медиафайлов для моего tumblr.
Не [...]


Связанные записи:<ol><li><a href='http://e-pavlov.ru/blog/2008/05/21/amazon-s3-hranenie-faylov-i-backup.html' rel='bookmark' title='Permanent Link: Amazon S3: хранение файлов и backup'>Amazon S3: хранение файлов и backup</a> <small>Недавно я задумался о сохранности своих данных: да, их можно...</small></li><li><a href='http://e-pavlov.ru/blog/2009/03/16/statistika-podkastov.html' rel='bookmark' title='Permanent Link: Статистика подкастов'>Статистика подкастов</a> <small>Недавно на нашей основной ленте мы выпустили свой первый PicLab...</small></li></ol>]]></description>
			<content:encoded><![CDATA[<p>Я уже давно и постоянно пользуюсь сервисом <a href="http://aws.amazon.com/s3/" class="liexternal">S3 от компании Amazon</a>. Если по-простому, то это система хранения файлов с <strong>относительно низкими ценами</strong> (если просто хранить, а не давать другим много скачивать). Я уже давно использую Amazon S3 и как средство для <a href="/2008/05/21/amazon-s3-hranenie-faylov-i-backup.html" class="liinternal">личного резервного копирования</a>, так и для размещения фотографий и других медиафайлов для <a href="http://t.eunix.ru" class="liexternal">моего tumblr</a>.</p>
<p>Не так-то и очевидно, как разместить файл на Amazon S3. Во-первых, это не FTP и обычными программами не подключиться. Во-вторых, у <strong>Amazon S3 собственная особенная архитектура</strong>, состоящая из bucket, объектов (это файлы) и т.п. Поэтому очень <strong>важно пользоваться удобной программой</strong>, в который бы всё выглядело привычно, как будто бы мы подключились к обычному (s) FTP-серверу. Например, это <a href="https://addons.mozilla.org/en-US/firefox/addon/3247" class="liexternal">дополнение к Firefox под названием S3Fox</a> — отличное решение, но, к сожалению, иногда очень медленно работает и не умеет переименовывать файлы.</p>
<p>Недавно мне сказали о новой разработке по работе с сервисом Amazon S3 — <a href="http://cloudberrylab.com/" class="liexternal">CloudBerry Explorer</a>. Хотя он ещё только развивается, но уже <strong>умеет очень много</strong>:</p>
<ul>
<li><strong>Возможность переименовывать объекты (файлы)</strong></li>
<li>Улучшенная производительность при работе с большим количеством файлом и большими файлами</li>
<li>Поддержка <a href="http://streamincloud.com" class="liexternal">сервиса streamincloud.com</a> для кодирования видео в FLV на лету для Amazon S3</li>
<li>Поддержка команд <a href="http://cloudberrylab.com/?id=14" class="liexternal">PowerShell</a></li>
<li>Регистрация и соединение с любым количеством аккаунтов Amazon S3</li>
<li>Одновременная работа с любым количеством аккаунтов Amazon S3</li>
<li>Быстрое копирование между аккаунтами и buckets Amazon S3</li>
<li>Расшаривание buckets и файлов, расположенных на Amazon S3 с другими пользователями</li>
<li>Создание, просмотр и удаление S3 buckets</li>
<li>Копирование и перемещение файлов между Amazon S3 и локальным компьютером</li>
<li>Установка прав доступа</li>
<li>Автоматизация рутиных задач с Microsoft PowerShell</li>
<li>Создание внешних адресов URL</li>
<li>Перемещение и копирование в фоне</li>
<li>Поддержка MD5 для проверки файлов во время передачи на S3</li>
<li>Копирование файлов из проводника Windows</li>
<li>Поддержка сервиса <a href="http://aws.amazon.com/cloudfront/" class="liexternal">Amazon CloudFront</a></li>
<li>Поддержка CNAME</li>
<li>Поддержка подписанных адресов URL, а также лимитированных по времени</li>
<li>Установка списков ACL к дочерним объектам</li>
</ul>
<p>Большой список возможностей, особенно учитывая, что это <strong>бесплатная программа</strong>. Теперь о некоторых из этих функций и возможностей подробнее со скриншотами.</p>
<p><strong>Программа работает пока только на Windows</strong>. Итак, начнём с первого запуска. Меня попросили зарегистрироваться (зачем это необходимо, мне пока неизвестно):<br />
<div id="attachment_413" class="wp-caption aligncenter" style="width: 429px"><a href="/files/2009/02/1_first_screen_of_cloudberry.png" ><img src="/files/2009/02/1_first_screen_of_cloudberry.png" alt="Регистрация программы CloudBerry Explorer" title="Регистрация программы CloudBerry Explorer" width="419" height="404" class="size-full wp-image-413" /></a><p class="wp-caption-text">Регистрация программы CloudBerry Explorer</p></div></p>
<p>Сама программа выглядит как любой FTP-клиент: два окна для работы с файлами. С любой стороны можно открыть как локальный диск, так и любой <em>buckets</em> любого зарегистрированного аккаунта Amazon S3.<br />
<div id="attachment_414" class="wp-caption aligncenter" style="width: 480px"><a href="/files/2009/02/2_cloudberry.png" ><img src="/files/2009/02/2_cloudberry-470x282.png" alt="Вид CloudBerry" title="Вид CloudBerry" width="470" height="282" class="size-medium wp-image-414" /></a><p class="wp-caption-text">Вид CloudBerry</p></div></p>
<p>Также, как и в S3Fox, можно сохранить параметры сразу же для нескольких аккаунтов Amazon S3, но, в отличие от дополнения Firefox, можно соединиться одновременно с несколькими аккаунтами.<br />
<div id="attachment_415" class="wp-caption aligncenter" style="width: 365px"><a href="/files/2009/02/3_credintals.png" ><img src="/files/2009/02/3_credintals.png" alt="Ввод данных для Amazon S3" title="Ввод данных для Amazon S3" width="355" height="336" class="size-full wp-image-415" /></a><p class="wp-caption-text">Ввод данных для Amazon S3</p></div></p>
<p>Возможность одновременного подключения реализована с помощью вкладок (табов) — точно также, как и в любом браузере:<br />
<div id="attachment_424" class="wp-caption aligncenter" style="width: 385px"><a href="/files/2009/02/12_tabs.png" ><img src="/files/2009/02/12_tabs.png" alt="Вкладки в CloudBerry Explorer" title="Вкладки в CloudBerry Explorer" width="375" height="123" class="size-full wp-image-424" /></a><p class="wp-caption-text">Вкладки в CloudBerry Explorer</p></div></p>
<p>Работа с программой очень проста. При подключении к своему аккаунта сразу можно перейти к <em>buckets</em>:<br />
<div id="attachment_416" class="wp-caption aligncenter" style="width: 480px"><a href="/files/2009/02/4_buckets.png" ><img src="/files/2009/02/4_buckets-470x282.png" alt="Список buckets" title="Список buckets" width="470" height="282" class="size-medium wp-image-416" /></a><p class="wp-caption-text">Список buckets</p></div></p>
<p>Самой важной особенностью программы, которую отличают её от других, я считаю <strong>возможность переименования объектов, то есть файлов</strong>. Мне очень не хватало такой функции ранее:<br />
<div id="attachment_417" class="wp-caption aligncenter" style="width: 457px"><a href="/files/2009/02/5_rename.png" ><img src="/files/2009/02/5_rename.png" alt="Переименование объекта в Amazon S3 с помощью CloudBerry Explorer " title="Переименование объекта в Amazon S3 с помощью CloudBerry Explorer " width="447" height="300" class="size-full wp-image-417" /></a><p class="wp-caption-text">Переименование объекта в Amazon S3 с помощью CloudBerry Explorer </p></div></p>
<p>Стоит отметить и удобство в мелочах. Например, строка адреса реализована так, что папки являются ссылками, нажав на которые можно перейти в данную папку:<br />
<div id="attachment_418" class="wp-caption aligncenter" style="width: 480px"><a href="/files/2009/02/6_address_line.png" ><img src="/files/2009/02/6_address_line-470x167.png" alt="Адресная строка в CloudBerry Explorer" title="Адресная строка в CloudBerry Explorer" width="470" height="167" class="size-medium wp-image-418" /></a><p class="wp-caption-text">Адресная строка в CloudBerry Explorer</p></div></p>
<p>Кроме того, можно редактировать права доступа. Например, открыть доступ на запись другому пользователю Amazon. Но я заметил, что CloudBerry Explorer по-умолчанию добавляет пользователя <strong>streamincloud</strong> для возможности перекодирование видео-файлов в FLV на лету (сервис <a href="http://streamincloud.com" class="liexternal">streamincloud.com</a>). Да, это удобно, но всё-таки странно, что CloudBerry Explorer добавляет всё это самостоятельно:<br />
<div id="attachment_419" class="wp-caption aligncenter" style="width: 396px"><a href="/files/2009/02/7_object_properties.png" ><img src="/files/2009/02/7_object_properties.png" alt="Редактирование ACL" title="Редактирование ACL" width="386" height="469" class="size-full wp-image-419" /></a><p class="wp-caption-text">Редактирование ACL</p></div></p>
<p>Очень удобно реализована работа с получением адреса на собственный файл (объект):<br />
<div id="attachment_420" class="wp-caption aligncenter" style="width: 429px"><a href="/files/2009/02/8_web_url.png" ><img src="/files/2009/02/8_web_url.png" alt="Web URL" title="Web URL" width="419" height="472" class="size-full wp-image-420" /></a><p class="wp-caption-text">Web URL</p></div></p>
<p>Затем можно как получить публичный адрес (если права проставлены правильно), так и приватный. Хорошо, что сделали указание домена CNAME, хотя раньше я просто стирал часть адреса:<br />
<div id="attachment_421" class="wp-caption aligncenter" style="width: 420px"><a href="/files/2009/02/9_cname.png" ><img src="/files/2009/02/9_cname.png" alt="Создание адреса с CNAME" title="Создание адреса с CNAME" width="410" height="410" class="size-full wp-image-421" /></a><p class="wp-caption-text">Создание адреса с CNAME</p></div></p>
<p>Также можно создать и адреса со «сроком годности»:<br />
<div id="attachment_422" class="wp-caption aligncenter" style="width: 420px"><a href="/files/2009/02/10_new_link.png" ><img src="/files/2009/02/10_new_link.png" alt="Создание приватной ссылки" title="Создание приватной ссылки" width="410" height="410" class="size-full wp-image-422" /></a><p class="wp-caption-text">Создание приватной ссылки</p></div></p>
<p>В конце отмечу работу с копированием между <em>buckets</em> и различными аккаунтами Amazon S3. Во-первых, это будет бесплатно (при соотвествующей настройке и размещении в одной зоне), во-вторых, это точно так же, как и работа с обычными файлами:<br />
<div id="attachment_423" class="wp-caption aligncenter" style="width: 396px"><a href="/files/2009/02/11_amazon_to_amazon.png" ><img src="/files/2009/02/11_amazon_to_amazon.png" alt="Настройка копирования между Amazon" title="Настройка копирования между Amazon" width="386" height="469" class="size-full wp-image-423" /></a><p class="wp-caption-text">Настройка копирования между Amazon</p></div></p>
<p>Теперь <strong>я пользуюсь в Windows этой программы для работы со своим аккаунтом Amazon S3</strong>. Надеюсь, что <a href="http://cloudberrylab.com/" class="liexternal">CloudBerry Explorer</a> останется бесплатным. Кстати, ещё можно посмотреть из <a href="http://cloudberrylab.com/?id=18" class="liexternal">промо-ролик</a>:</p>
<div align="center">
<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/tzAZ-AYJja8&#038;rel=0&#038;color1=0xb1b1b1&#038;color2=0xcfcfcf&#038;hl=en&#038;feature=player_embedded&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><embed src="http://www.youtube.com/v/tzAZ-AYJja8&#038;rel=0&#038;color1=0xb1b1b1&#038;color2=0xcfcfcf&#038;hl=en&#038;feature=player_embedded&#038;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"></embed></object>
</div>


<p>Связанные записи:<ol><li><a href='http://e-pavlov.ru/blog/2008/05/21/amazon-s3-hranenie-faylov-i-backup.html' rel='bookmark' title='Permanent Link: Amazon S3: хранение файлов и backup'>Amazon S3: хранение файлов и backup</a> <small>Недавно я задумался о сохранности своих данных: да, их можно...</small></li><li><a href='http://e-pavlov.ru/blog/2009/03/16/statistika-podkastov.html' rel='bookmark' title='Permanent Link: Статистика подкастов'>Статистика подкастов</a> <small>Недавно на нашей основной ленте мы выпустили свой первый PicLab...</small></li></ol></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/e-pavlov?a=pdDSQxiH8fo:b8dPaDsdKkM:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/e-pavlov?i=pdDSQxiH8fo:b8dPaDsdKkM:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/e-pavlov?a=pdDSQxiH8fo:b8dPaDsdKkM:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/e-pavlov?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/e-pavlov?a=pdDSQxiH8fo:b8dPaDsdKkM:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/e-pavlov?i=pdDSQxiH8fo:b8dPaDsdKkM:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/e-pavlov?a=pdDSQxiH8fo:b8dPaDsdKkM:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/e-pavlov?i=pdDSQxiH8fo:b8dPaDsdKkM:F7zBnMyn0Lo" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://e-pavlov.ru/blog/2009/02/16/cloudberry-explorer-for-amazon-s3.html/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Включение синхронизации с мобильными устройствами для Google Apps</title>
		<link>http://e-pavlov.ru/blog/2009/02/10/vklyuchenie-sinhronizatsii-s-mobilnyimi-ustroystvami-dlya-google-apps.html#utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=vklyuchenie-sinhronizatsii-s-mobilnyimi-ustroystvami-dlya-google-apps</link>
		<comments>http://e-pavlov.ru/blog/2009/02/10/vklyuchenie-sinhronizatsii-s-mobilnyimi-ustroystvami-dlya-google-apps.html#comments</comments>
		<pubDate>Tue, 10 Feb 2009 05:17:41 +0000</pubDate>
		<dc:creator>Evgeny Pavlov</dc:creator>
				<category><![CDATA[Интернет]]></category>
		<category><![CDATA[GMail]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Google Apps]]></category>
		<category><![CDATA[Windows Mobile]]></category>
		<category><![CDATA[контакты]]></category>
		<category><![CDATA[контакты Google]]></category>
		<category><![CDATA[почта]]></category>
		<category><![CDATA[синхронизация]]></category>

		<guid isPermaLink="false">/?p=406</guid>
		<description><![CDATA[Сегодня уже две записи, относящихся Google — думаю, что много. Тем не менее, в предыдущем посте я писал о том, что можно объединять контакты в адресной книге Google, а также синхронизировать их со своим мобильным телефоном.
Но, после того как я попробовал синхронизировать моё устройство Windows Mobile, у меня ничего не получилось. Оказывается, для тех, кто [...]


Связанные записи:<ol><li><a href='http://e-pavlov.ru/blog/2008/04/03/gmail-app-dlya-google-apps.html' rel='bookmark' title='Permanent Link: Gmail App для Google Apps'>Gmail App для Google Apps</a> <small>Многие знают, что Gmail позволяет пользователям проверять почту любыми способами:...</small></li><li><a href='http://e-pavlov.ru/blog/2008/12/23/google-short-links.html' rel='bookmark' title='Permanent Link: Google Short Links'>Google Short Links</a> <small>Этой осенью Google включил Labs в Apps не только для...</small></li><li><a href='http://e-pavlov.ru/blog/2009/02/10/merge-google-contacts.html' rel='bookmark' title='Permanent Link: Объединение контактов Google'>Объединение контактов Google</a> <small>Мне нравится, когда всё в одном месте, и сделано так,...</small></li></ol>]]></description>
			<content:encoded><![CDATA[<p>Сегодня уже две записи, относящихся Google — думаю, что много. Тем не менее, в <a href="/2009/02/10/merge-google-contacts.html" class="liinternal">предыдущем посте я писал о том, что можно объединять контакты в адресной книге Google</a>, а также синхронизировать их со своим мобильным телефоном.</p>
<p>Но, после того как я попробовал синхронизировать моё устройство Windows Mobile, у меня ничего не получилось. Оказывается, <strong>для тех, кто пользуется <a href="http://www.google.com/a/" class="liexternal">Службами Google в своём домене</a> (Google Apps), надо самостоятельно включать такую возможность в панели управления</strong>.</p>
<p>Итак, чтобы включить возможность синхронизации мобильных устройств, надо зайти в панель управления, выбрать пункт <em>Mobile</em> (у меня английская версия):<br />
<div id="attachment_407" class="wp-caption aligncenter" style="width: 374px"><a href="/files/2009/02/google_mobile.png" ><img src="/files/2009/02/google_mobile.png" alt="Пункт Mobile в настройке" title="Пункт Mobile в настройке" width="364" height="262" class="size-full wp-image-407" /></a><p class="wp-caption-text">Пункт Mobile в настройке</p></div></p>
<p>И включить возможность синхронизации:<br />
<div id="attachment_408" class="wp-caption aligncenter" style="width: 480px"><a href="/files/2009/02/google_sync_enable.png" ><img src="/files/2009/02/google_sync_enable-470x311.png" alt="Включение синхронизации с мобильными устройствами" title="Включение синхронизации с мобильными устройствами" width="470" height="311" class="size-medium wp-image-408" /></a><p class="wp-caption-text">Включение синхронизации с мобильными устройствами</p></div></p>
<p>Теперь всё должно работать, если, конечно, <a href="http://www.google.com/support/mobile/bin/answer.py?answer=138636&#038;topic=14299" class="liexternal">настроить свой телефон</a>. <a href="http://googleappsupdates.blogspot.com/2009/02/calendar-and-contact-sync-available-for.html" class="liexternal">Спасибо блогу Google Apps</a>.</p>


<p>Связанные записи:<ol><li><a href='http://e-pavlov.ru/blog/2008/04/03/gmail-app-dlya-google-apps.html' rel='bookmark' title='Permanent Link: Gmail App для Google Apps'>Gmail App для Google Apps</a> <small>Многие знают, что Gmail позволяет пользователям проверять почту любыми способами:...</small></li><li><a href='http://e-pavlov.ru/blog/2008/12/23/google-short-links.html' rel='bookmark' title='Permanent Link: Google Short Links'>Google Short Links</a> <small>Этой осенью Google включил Labs в Apps не только для...</small></li><li><a href='http://e-pavlov.ru/blog/2009/02/10/merge-google-contacts.html' rel='bookmark' title='Permanent Link: Объединение контактов Google'>Объединение контактов Google</a> <small>Мне нравится, когда всё в одном месте, и сделано так,...</small></li></ol></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/e-pavlov?a=dcZKSeNz3ko:HLo3Yxgv5dM:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/e-pavlov?i=dcZKSeNz3ko:HLo3Yxgv5dM:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/e-pavlov?a=dcZKSeNz3ko:HLo3Yxgv5dM:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/e-pavlov?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/e-pavlov?a=dcZKSeNz3ko:HLo3Yxgv5dM:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/e-pavlov?i=dcZKSeNz3ko:HLo3Yxgv5dM:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/e-pavlov?a=dcZKSeNz3ko:HLo3Yxgv5dM:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/e-pavlov?i=dcZKSeNz3ko:HLo3Yxgv5dM:F7zBnMyn0Lo" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://e-pavlov.ru/blog/2009/02/10/vklyuchenie-sinhronizatsii-s-mobilnyimi-ustroystvami-dlya-google-apps.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Объединение контактов Google</title>
		<link>http://e-pavlov.ru/blog/2009/02/10/merge-google-contacts.html#utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=merge-google-contacts</link>
		<comments>http://e-pavlov.ru/blog/2009/02/10/merge-google-contacts.html#comments</comments>
		<pubDate>Tue, 10 Feb 2009 04:48:12 +0000</pubDate>
		<dc:creator>Evgeny Pavlov</dc:creator>
				<category><![CDATA[Интернет]]></category>
		<category><![CDATA[GMail]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Google Contacts]]></category>
		<category><![CDATA[merge Google Contacts]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[контакты Google]]></category>
		<category><![CDATA[объединение контактов]]></category>
		<category><![CDATA[объединение контактов Gmail]]></category>

		<guid isPermaLink="false">/?p=402</guid>
		<description><![CDATA[Мне нравится, когда всё в одном месте, и сделано так, что удобно пользоваться. Например, так реализована система контактов у Google — ей можно пользоваться во всех продуктах Google, а сама она достаточно удобна.
Но до сих пор была ужасная проблема. Если в адресной книге Google есть много записей одного человека, но с разными контактами, то их [...]


Связанные записи:<ol><li><a href='http://e-pavlov.ru/blog/2008/09/25/google-adresa.html' rel='bookmark' title='Permanent Link: Google Адреса'>Google Адреса</a> <small>Одним из наиболее заметным нововведением Gmail 2.0 стала улучшенная адресная...</small></li><li><a href='http://e-pavlov.ru/blog/2009/02/10/vklyuchenie-sinhronizatsii-s-mobilnyimi-ustroystvami-dlya-google-apps.html' rel='bookmark' title='Permanent Link: Включение синхронизации с мобильными устройствами для Google Apps'>Включение синхронизации с мобильными устройствами для Google Apps</a> <small>Сегодня уже две записи, относящихся Google — думаю, что много....</small></li><li><a href='http://e-pavlov.ru/blog/2008/12/23/google-short-links.html' rel='bookmark' title='Permanent Link: Google Short Links'>Google Short Links</a> <small>Этой осенью Google включил Labs в Apps не только для...</small></li></ol>]]></description>
			<content:encoded><![CDATA[<p>Мне нравится, когда всё в одном месте, и сделано так, что удобно пользоваться. Например, так реализована система контактов у Google — ей можно пользоваться во всех продуктах Google, а сама она достаточно удобна.</p>
<p>Но до сих пор была ужасная проблема. Если в адресной книге Google есть много записей одного человека, но с разными контактами, то их сложно объединить. Такое возникает, например, если у человека есть адрес электронной почты, а ещё потом добавляешь его в каком-нибудь icq-транспорте или импортируешь данные из другой адресной книги.</p>
<p>Я уже хотел сделать собственное объединение (это несложно, так как есть хорошее <a href="http://code.google.com/apis/contacts/" class="liexternal">Contacts API</a>). Однако, с последним обновлением в Google <strong>сделали возможность объединять контакты в адресной книге</strong>. Для этого надо выбрать необходимое число контактов:<br />
<div id="attachment_403" class="wp-caption aligncenter" style="width: 480px"><a href="/files/2009/02/google_merge.png" ><img src="/files/2009/02/google_merge-470x238.png" alt="Объединение контактов Google" title="Объединение контактов Google" width="470" height="238" class="size-medium wp-image-403" /></a><p class="wp-caption-text">Объединение контактов Google</p></div></p>
<p>Затем система сама всё распределит и предложит лучший вариант, который можно подредактировать. Но, как <a href="http://gmailblog.blogspot.com/2009/02/sync-your-contacts-and-calendar-with.html" class="liexternal">отмечают на официальном блоге Gmail</a>, система автодополнения адреса при составлении письма пока работает не так, как хотелось бы.</p>
<p>Осталось только разобраться с большим количеством контактов. Ведь теперь появилась и синхронизация контактов со многими мобильными устройствами, включая Windows Mobile.</p>


<p>Связанные записи:<ol><li><a href='http://e-pavlov.ru/blog/2008/09/25/google-adresa.html' rel='bookmark' title='Permanent Link: Google Адреса'>Google Адреса</a> <small>Одним из наиболее заметным нововведением Gmail 2.0 стала улучшенная адресная...</small></li><li><a href='http://e-pavlov.ru/blog/2009/02/10/vklyuchenie-sinhronizatsii-s-mobilnyimi-ustroystvami-dlya-google-apps.html' rel='bookmark' title='Permanent Link: Включение синхронизации с мобильными устройствами для Google Apps'>Включение синхронизации с мобильными устройствами для Google Apps</a> <small>Сегодня уже две записи, относящихся Google — думаю, что много....</small></li><li><a href='http://e-pavlov.ru/blog/2008/12/23/google-short-links.html' rel='bookmark' title='Permanent Link: Google Short Links'>Google Short Links</a> <small>Этой осенью Google включил Labs в Apps не только для...</small></li></ol></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/e-pavlov?a=qaTWxrA6e_4:pS0fjbKXWK4:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/e-pavlov?i=qaTWxrA6e_4:pS0fjbKXWK4:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/e-pavlov?a=qaTWxrA6e_4:pS0fjbKXWK4:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/e-pavlov?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/e-pavlov?a=qaTWxrA6e_4:pS0fjbKXWK4:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/e-pavlov?i=qaTWxrA6e_4:pS0fjbKXWK4:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/e-pavlov?a=qaTWxrA6e_4:pS0fjbKXWK4:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/e-pavlov?i=qaTWxrA6e_4:pS0fjbKXWK4:F7zBnMyn0Lo" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://e-pavlov.ru/blog/2009/02/10/merge-google-contacts.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Управление компьютером прямо в браузере</title>
		<link>http://e-pavlov.ru/blog/2009/01/26/upravlenie-kompyuterom-pryamo-v-brauzere.html#utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=upravlenie-kompyuterom-pryamo-v-brauzere</link>
		<comments>http://e-pavlov.ru/blog/2009/01/26/upravlenie-kompyuterom-pryamo-v-brauzere.html#comments</comments>
		<pubDate>Mon, 26 Jan 2009 09:30:54 +0000</pubDate>
		<dc:creator>Evgeny Pavlov</dc:creator>
				<category><![CDATA[Просто записи]]></category>
		<category><![CDATA[remote control]]></category>
		<category><![CDATA[TeamViewer]]></category>
		<category><![CDATA[UltraVNC]]></category>
		<category><![CDATA[VNC]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[передача файлов]]></category>
		<category><![CDATA[удалённое управление]]></category>
		<category><![CDATA[управление компьютером]]></category>
		<category><![CDATA[управление через браузер]]></category>

		<guid isPermaLink="false">/?p=394</guid>
		<description><![CDATA[Полгода назад я писал о программе, сэкономившей мне много часов — Teamviewer. С помощью этой прогрограммы можно легко управлять другим компьютером. Для этого достаточно знать всего лишь два числа: идентификатор и пароль. При этом не нужно задумывать о каких-либо дополнительных настройках, как это может быть с обычным VNC, так как Teamviewer сразу умеет работать и [...]


Связанные записи:<ol><li><a href='http://e-pavlov.ru/blog/2008/06/06/dostup-k-rabochemu-stolu-poluchit-ochen-legko.html' rel='bookmark' title='Permanent Link: Доступ к рабочему столу получить очень легко'>Доступ к рабочему столу получить очень легко</a> <small>— что-то последнее время я стал чаще уделять внимание заголовкам...</small></li><li><a href='http://e-pavlov.ru/blog/2008/09/24/zapusk-linuksovskih-programm-pryamo-iz-windows.html' rel='bookmark' title='Permanent Link: Запуск линуксовских программ прямо из Windows'>Запуск линуксовских программ прямо из Windows</a> <small>Многие в последнее время совершают какие-то переходы: то на Mac,...</small></li><li><a href='http://e-pavlov.ru/blog/2009/02/10/merge-google-contacts.html' rel='bookmark' title='Permanent Link: Объединение контактов Google'>Объединение контактов Google</a> <small>Мне нравится, когда всё в одном месте, и сделано так,...</small></li></ol>]]></description>
			<content:encoded><![CDATA[<p>Полгода назад я <a href="/blog/2008/06/06/dostup-k-rabochemu-stolu-poluchit-ochen-legko.html" class="liinternal">писал о программе, сэкономившей мне много часов</a> — <a href="http://teamviewer.com/index.aspx" class="liexternal">Teamviewer</a>. С помощью этой прогрограммы можно легко управлять другим компьютером. Для этого достаточно знать всего лишь два числа: идентификатор и пароль. При этом не нужно задумывать о каких-либо дополнительных настройках, как это может быть с обычным <a href="http://en.wikipedia.org/wiki/Virtual_Network_Computing" rel="nofollow" class="liwikipedia">VNC</a>, так как <a href="http://teamviewer.com/index.aspx" class="liexternal">Teamviewer</a> сразу умеет работать и через прокси, и через <a href="http://en.wikipedia.org/wiki/Network_Address_Translation" rel="nofollow" class="liwikipedia">NAT</a>.</p>
<p>Недавно разработчики обновили клиент под Windows до четвёртой версии и одновременно открыли интересный онлайн-сервис. Именно о нём я и хочу рассказать.<br />
<span id="more-394"></span><br />
Во-первых, при запуске программы сразу видно отличие от предыдущих версий: <strong>появился список контактов</strong>:<br />
<div id="attachment_395" class="wp-caption aligncenter" style="width: 210px"><a href="/files/2009/01/partner_list.png" ><img src="/files/2009/01/partner_list.png" alt="Список контактов в Teamviewer" title="Partner List" width="200" height="413" class="size-full wp-image-395" /></a><p class="wp-caption-text">Список контактов в Teamviewer</p></div><br />
— это нововведение теперь позволяет вообще не спрашивать пароль или запоминать идентификатор, так как при попытке быстрого подключения (quick access) на удалённом компьютере появится диалоговое окно, спрашивающие разрешение на подключение.</p>
<p>Конечно, для того чтобы заработал список контактов, надо зарегистрироваться на сайте. Новые контакты добавляются обычным вводом идентификатора или имени пользователя. Существует возможность создавать группы.</p>
<p>Но самым интересным является <strong>полнофункциональная версия Teamviewer, сделанная полностью на Flash</strong>. Это означает, что просто на сайте Teamviewer вы можете подключится к любому человеку, введя его идентификатор или используя контакт-лист. Так как всё реализовано во Flash, то нет практически никаких препятствий для полного управления.<br />
<div id="attachment_396" class="wp-caption aligncenter" style="width: 480px"><a href="/files/2009/01/teamviewer_brower.png" ><img src="/files/2009/01/teamviewer_brower-470x238.png" alt="Teamviewer прямо в браузере" title="Teamviewer in Brower" width="470" height="238" class="size-medium wp-image-396" /></a><p class="wp-caption-text">Teamviewer прямо в браузере</p></div></p>
<p>Я нашёл интересный способ использования этой возможности. Иногда хочется получить доступ к своего компьютеру с работы или в университете. Почему бы для этого не воспользоваться Teamvierer, если он уже стоит в системе? Для этого достаточно <strong>добавить самого себя</strong> в контакт-лист, поставить предустановленный пароль в программе и… всё — можно работать за своим компьютером с любого браузера.<br />
<div id="attachment_397" class="wp-caption aligncenter" style="width: 480px"><a href="/files/2009/01/teamviewer_password.png" ><img src="/files/2009/01/teamviewer_password-470x238.png" alt="Ввод пароля в онлайн версии Teamviewer" title="Teamviewer Password" width="470" height="238" class="size-medium wp-image-397" /></a><p class="wp-caption-text">Ввод пароля в онлайн версии Teamviewer</p></div></p>
<p>Да, существуют и другие программы, позволяющие делать подобное, но мне понравился Teamviewer.</p>
<p>Кстати, в новой версии появилась функция презентации через браузер. Жаль, что только для двоих в бесплатной версии.</p>


<p>Связанные записи:<ol><li><a href='http://e-pavlov.ru/blog/2008/06/06/dostup-k-rabochemu-stolu-poluchit-ochen-legko.html' rel='bookmark' title='Permanent Link: Доступ к рабочему столу получить очень легко'>Доступ к рабочему столу получить очень легко</a> <small>— что-то последнее время я стал чаще уделять внимание заголовкам...</small></li><li><a href='http://e-pavlov.ru/blog/2008/09/24/zapusk-linuksovskih-programm-pryamo-iz-windows.html' rel='bookmark' title='Permanent Link: Запуск линуксовских программ прямо из Windows'>Запуск линуксовских программ прямо из Windows</a> <small>Многие в последнее время совершают какие-то переходы: то на Mac,...</small></li><li><a href='http://e-pavlov.ru/blog/2009/02/10/merge-google-contacts.html' rel='bookmark' title='Permanent Link: Объединение контактов Google'>Объединение контактов Google</a> <small>Мне нравится, когда всё в одном месте, и сделано так,...</small></li></ol></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/e-pavlov?a=Xm5x02kG8FE:-n4OvHc4ZyU:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/e-pavlov?i=Xm5x02kG8FE:-n4OvHc4ZyU:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/e-pavlov?a=Xm5x02kG8FE:-n4OvHc4ZyU:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/e-pavlov?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/e-pavlov?a=Xm5x02kG8FE:-n4OvHc4ZyU:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/e-pavlov?i=Xm5x02kG8FE:-n4OvHc4ZyU:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/e-pavlov?a=Xm5x02kG8FE:-n4OvHc4ZyU:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/e-pavlov?i=Xm5x02kG8FE:-n4OvHc4ZyU:F7zBnMyn0Lo" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://e-pavlov.ru/blog/2009/01/26/upravlenie-kompyuterom-pryamo-v-brauzere.html/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Flex Builder бесплатно для студентов</title>
		<link>http://e-pavlov.ru/blog/2008/12/28/flex-builder-besplatno-dlya-studentov.html#utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=flex-builder-besplatno-dlya-studentov</link>
		<comments>http://e-pavlov.ru/blog/2008/12/28/flex-builder-besplatno-dlya-studentov.html#comments</comments>
		<pubDate>Sun, 28 Dec 2008 15:12:17 +0000</pubDate>
		<dc:creator>Evgeny Pavlov</dc:creator>
				<category><![CDATA[Просто записи]]></category>
		<category><![CDATA[Adobe]]></category>
		<category><![CDATA[Adobe AIR]]></category>
		<category><![CDATA[Air]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Flex Bulider 3 Pro]]></category>
		<category><![CDATA[free Flex]]></category>
		<category><![CDATA[ISIC]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[бесплатное ПО]]></category>
		<category><![CDATA[бесплатный Flex Builder]]></category>
		<category><![CDATA[ПО для студентов]]></category>

		<guid isPermaLink="false">/?p=387</guid>
		<description><![CDATA[Недавно я захотел попробовать поразбираться в технологии Adobe Air, после того, как Adobe выпустила стабильную версию под Linux.
Оказывается, есть три возможных путей разработки приложения под Air:

Как Ajax-разработчик
Как Flex-разработчик
Как Flash-разработчик

С первым всё понятно: можно скачать бесплатную Aptana и начать создавать приложения. Но мне захотелось попробовать Flex Builder: ведь в нём можно и не только с Air [...]]]></description>
			<content:encoded><![CDATA[<p>Недавно я захотел попробовать поразбираться в <a href="http://www.adobe.com/products/air/" class="liexternal">технологии Adobe Air</a>, после того, как <a href="http://blogs.adobe.com/air/2008/12/adobe_air_15_now_available_for.html" class="liexternal">Adobe выпустила стабильную версию под Linux</a>.</p>
<p>Оказывается, есть три возможных путей разработки приложения под Air:</p>
<ul>
<li>Как Ajax-разработчик</li>
<li><strong>Как Flex-разработчик</strong></li>
<li>Как Flash-разработчик</li>
</ul>
<p>С первым всё понятно: <a href="http://www.aptana.com/air" class="liexternal">можно скачать бесплатную Aptana</a> и начать создавать приложения. Но мне захотелось попробовать Flex Builder: ведь в нём можно и не только с Air работать.</p>
<p>Но <a href="http://www.adobe.com/products/flex/" class="liexternal">Flex Builder Pro 3</a> стоит <strong>почти 250$</strong>. Я понимаю, что для некоторых это не проблема, но, тем не менее, я всегда стараюсь найти что-то легальное. Так оказывается, что <strong>Flex Builder Adobe распространяет для студентов бесплатно!</strong></p>
<p>Для этого надо зайти на <a href="https://freeriatools.adobe.com/flex/" class="liexternal">специальный сайт</a> и ввести свои данные (также приложить отсканированный студенческий или ISIC).<br />
<div id="attachment_388" class="wp-caption aligncenter" style="width: 480px"><a href="/files/2008/12/adobe_flex_student.png" ><img src="/files/2008/12/adobe_flex_student-470x358.png" alt="Бесплатный Adobe Flex Builder для студентов" title="Бесплатный Adobe Flex Builder для студентов" width="470" height="358" class="size-medium wp-image-388" /></a><p class="wp-caption-text">Бесплатный Adobe Flex Builder для студентов</p></div></p>
<p>На следующий день после того, как я всё заполнил, <strong>мне прислали регистрационный ключ</strong>. Теперь можно эксперементировать с AIR. Итак, ссылка на специальную страницу:</p>
<ul>
<li><a href="https://freeriatools.adobe.com/flex/" class="liexternal">https://freeriatools.adobe.com/flex/</a></li>
</ul>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/e-pavlov?a=gkVLEu-6-M8:cgAXTGsWscw:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/e-pavlov?i=gkVLEu-6-M8:cgAXTGsWscw:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/e-pavlov?a=gkVLEu-6-M8:cgAXTGsWscw:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/e-pavlov?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/e-pavlov?a=gkVLEu-6-M8:cgAXTGsWscw:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/e-pavlov?i=gkVLEu-6-M8:cgAXTGsWscw:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/e-pavlov?a=gkVLEu-6-M8:cgAXTGsWscw:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/e-pavlov?i=gkVLEu-6-M8:cgAXTGsWscw:F7zBnMyn0Lo" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://e-pavlov.ru/blog/2008/12/28/flex-builder-besplatno-dlya-studentov.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Типограф для WordPress</title>
		<link>http://e-pavlov.ru/blog/2008/12/24/tipograf-dlya-wordpress.html#utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=tipograf-dlya-wordpress</link>
		<comments>http://e-pavlov.ru/blog/2008/12/24/tipograf-dlya-wordpress.html#comments</comments>
		<pubDate>Wed, 24 Dec 2008 10:16:21 +0000</pubDate>
		<dc:creator>Evgeny Pavlov</dc:creator>
				<category><![CDATA[Просто записи]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[WordPress MU]]></category>
		<category><![CDATA[WP Typograph Lite]]></category>
		<category><![CDATA[Искариот]]></category>
		<category><![CDATA[многоточие]]></category>
		<category><![CDATA[типограф]]></category>
		<category><![CDATA[типографика]]></category>
		<category><![CDATA[тире]]></category>

		<guid isPermaLink="false">/?p=384</guid>
		<description><![CDATA[Я думаю, что многие знакомы с типографикой: она важна для правильно оформления текста.

Правильная кавычки — это «ёлочки».
Тире — это не дефис.
Минус (2−1) — это тоже не дефис.
Многоточие… совсем не три точки.
И другие правила

Но ведь многих символов просто нет на клавиатуре! Да, можно воспользоваться, например, типографской раскладкой Ильи Бирмана — но не у всех же она [...]


Связанные записи:<ol><li><a href='http://e-pavlov.ru/blog/2008/03/17/wordpress-i-lighttpd.html' rel='bookmark' title='Permanent Link: WordPress и lighttpd'>WordPress и lighttpd</a> <small>Мы поставили WordPress не на Apache, как это обычно бывает,...</small></li><li><a href='http://e-pavlov.ru/blog/2008/10/23/ispolzovanie-mod_magnet-dlya-blogov-na-wordpress.html' rel='bookmark' title='Permanent Link: Использование mod_magnet для блогов на WordPress'>Использование mod_magnet для блогов на WordPress</a> <small>Если у вас в качестве сервера выбран быстрый и лёгкий...</small></li><li><a href='http://e-pavlov.ru/blog/2008/12/12/uvelichenie-proizvoditelnosti-wordpress-wp-super-cache-i-lighttpd.html' rel='bookmark' title='Permanent Link: Увеличение производительности WordPress: WP Super Cache и Lighttpd'>Увеличение производительности WordPress: WP Super Cache и Lighttpd</a> <small>Заканчивая цикл статей по mod_magnet и lighttpd стоит упомянуть настройку...</small></li></ol>]]></description>
			<content:encoded><![CDATA[<p>Я думаю, что многие знакомы с <a href="http://ru.wikipedia.org/wiki/%D0%A2%D0%B8%D0%BF%D0%BE%D0%B3%D1%80%D0%B0%D1%84%D0%B8%D0%BA%D0%B0" rel="nofollow" class="liwikipedia">типографикой</a>: она важна для правильно оформления текста.</p>
<ul>
<li>Правильная кавычки — это «ёлочки».</li>
<li>Тире — это не дефис.</li>
<li>Минус (2−1) — это тоже не дефис.</li>
<li>Многоточие… совсем не три точки.</li>
<li><a href="http://www.erlang.com.ru/web/articles/typo/" class="liexternal">И другие правила</a></li>
</ul>
<p>Но ведь многих символов просто нет на клавиатуре! Да, можно воспользоваться, например, <a href="http://ilyabirman.ru/tools/typography-layout/" class="liexternal">типографской раскладкой Ильи Бирмана</a> — но не у всех же она стоит.</p>
<p>Именно по этому и создаются т.н. типографы — специальные программы и скрипты, которые всё делают за вас. Например, поставили три точки, а программа — нужный символ.</p>
<p>Такая программа есть и для WordPress: <a href="http://wordpress.org/extend/plugins/wp-russian-typograph/" class="liexternal">WP Typograph Lite</a> от <a href="http://iskariot.ru/wordpress/typo/" class="liexternal">Искариота</a>.<br />
Основная функциональность:</p>
<ul>
<li>Правильные кавычки.</li>
<li>Длинное тире между словами — с запретом отрывать от предыдущего слова.</li>
<li>— Черта, — в диалогах.</li>
<li>Минус между цифрами 0–9.</li>
<li>Многоточие — тремя точками...</li>
<li>Убирает точку в конце заголовка страницы.</li>
<li>В тегах &lt;code&gt;, &lt;pre&gt; и &lt;script&gt; (и некоторых других) текст не изменяет.</li>
<li>В &lt;code&gt; автоматически заменяет &lt; на &amp;lt;, исправляет кавычки на машинописные для корректного копирования-вставки.</li>
<li>Заменяет функцию wpautop, исправляет ошибки визуального редактора со вставкой тегов.</li>
<li>Форматирует некоторые спецсимволы, такие как &frac12;, &copy;, <sup>&trade;</sup> и др.</li>
<li>Делает ссылки в комментариях кликабельными (с http и www), автоматически сокращая анкор, если ссылка длинная.</li>
</ul>
<p>У меня стоит. Рекомендую. Итак, основные ссылки:</p>
<ul>
<li><a href="http://wordpress.org/extend/plugins/wp-russian-typograph/" class="liexternal">Страница плагина WP Typograph Lite на WordPress.org</a></li>
<li><a href="http://iskariot.ru/wordpress/typo/" class="liexternal">Сайт автора</a></li>
</ul>


<p>Связанные записи:<ol><li><a href='http://e-pavlov.ru/blog/2008/03/17/wordpress-i-lighttpd.html' rel='bookmark' title='Permanent Link: WordPress и lighttpd'>WordPress и lighttpd</a> <small>Мы поставили WordPress не на Apache, как это обычно бывает,...</small></li><li><a href='http://e-pavlov.ru/blog/2008/10/23/ispolzovanie-mod_magnet-dlya-blogov-na-wordpress.html' rel='bookmark' title='Permanent Link: Использование mod_magnet для блогов на WordPress'>Использование mod_magnet для блогов на WordPress</a> <small>Если у вас в качестве сервера выбран быстрый и лёгкий...</small></li><li><a href='http://e-pavlov.ru/blog/2008/12/12/uvelichenie-proizvoditelnosti-wordpress-wp-super-cache-i-lighttpd.html' rel='bookmark' title='Permanent Link: Увеличение производительности WordPress: WP Super Cache и Lighttpd'>Увеличение производительности WordPress: WP Super Cache и Lighttpd</a> <small>Заканчивая цикл статей по mod_magnet и lighttpd стоит упомянуть настройку...</small></li></ol></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/e-pavlov?a=WEqkqzSked8:bDcGG_6LwtE:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/e-pavlov?i=WEqkqzSked8:bDcGG_6LwtE:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/e-pavlov?a=WEqkqzSked8:bDcGG_6LwtE:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/e-pavlov?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/e-pavlov?a=WEqkqzSked8:bDcGG_6LwtE:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/e-pavlov?i=WEqkqzSked8:bDcGG_6LwtE:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/e-pavlov?a=WEqkqzSked8:bDcGG_6LwtE:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/e-pavlov?i=WEqkqzSked8:bDcGG_6LwtE:F7zBnMyn0Lo" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://e-pavlov.ru/blog/2008/12/24/tipograf-dlya-wordpress.html/feed</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Google Short Links</title>
		<link>http://e-pavlov.ru/blog/2008/12/23/google-short-links.html#utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=google-short-links</link>
		<comments>http://e-pavlov.ru/blog/2008/12/23/google-short-links.html#comments</comments>
		<pubDate>Tue, 23 Dec 2008 19:35:49 +0000</pubDate>
		<dc:creator>Evgeny Pavlov</dc:creator>
				<category><![CDATA[Интернет]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Google App Engine]]></category>
		<category><![CDATA[Google Apps]]></category>
		<category><![CDATA[Google Labs]]></category>
		<category><![CDATA[Google Short Links]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[shortcuts]]></category>
		<category><![CDATA[shortlinks]]></category>
		<category><![CDATA[TinyURL]]></category>
		<category><![CDATA[короткие ссылки]]></category>
		<category><![CDATA[ссылки]]></category>

		<guid isPermaLink="false">/?p=378</guid>
		<description><![CDATA[Этой осенью Google включил Labs в Apps не только для своей почты, но и вообще во всём сервисе. Теперь там появляются новые интересные сервисы от различных разработчиков. В качестве примера я расскажу о Google Shortlinks.
Чтобы включить что-нибудь из Labs в Google Apps надо сначала, конечно, включить английский (US) интерфейс, а затем перейти по ссылке добавление [...]


Связанные записи:<ol><li><a href='http://e-pavlov.ru/blog/2009/02/10/vklyuchenie-sinhronizatsii-s-mobilnyimi-ustroystvami-dlya-google-apps.html' rel='bookmark' title='Permanent Link: Включение синхронизации с мобильными устройствами для Google Apps'>Включение синхронизации с мобильными устройствами для Google Apps</a> <small>Сегодня уже две записи, относящихся Google — думаю, что много....</small></li><li><a href='http://e-pavlov.ru/blog/2008/09/25/google-adresa.html' rel='bookmark' title='Permanent Link: Google Адреса'>Google Адреса</a> <small>Одним из наиболее заметным нововведением Gmail 2.0 стала улучшенная адресная...</small></li><li><a href='http://e-pavlov.ru/blog/2008/05/31/google-app-engine-otkryit-teper-dlya-vseh.html' rel='bookmark' title='Permanent Link: Google App Engine открыт теперь для всех'>Google App Engine открыт теперь для всех</a> <small>Блог Google System сообщил о том, что теперь Google App...</small></li></ol>]]></description>
			<content:encoded><![CDATA[<p>Этой осенью Google включил Labs в <a href="http://google.com/a/" class="liexternal">Apps</a> не только для своей почты, но и вообще во всём сервисе. Теперь там появляются новые интересные сервисы от различных разработчиков. В качестве примера я расскажу о <strong>Google Shortlinks</strong>.</p>
<p>Чтобы включить что-нибудь из Labs в Google Apps надо сначала, конечно, <strong>включить английский (US) интерфейс</strong>, а затем перейти по ссылке добавление новых сервисов (на этой же странице можно подключить Google App Engine или, например, недавно там появились контакты):<br />
<div id="attachment_379" class="wp-caption aligncenter" style="width: 480px"><a href="/files/2008/12/shortlinks_step1.png" ><img src="/files/2008/12/shortlinks_step1-470x296.png" alt="Добавление нового сервиса в Google Apps" title="Добавление нового сервиса в Google Apps" width="470" height="296" class="size-medium wp-image-379" /></a><p class="wp-caption-text">Добавление нового сервиса в Google Apps</p></div></p>
<p>Затем нажать на ссылку <strong>See more services from Google Labs</strong>:<br />
<div id="attachment_380" class="wp-caption aligncenter" style="width: 480px"><a href="/files/2008/12/shortlinks_step2.png" ><img src="/files/2008/12/shortlinks_step2-470x188.png" alt="See more services from Google Labs " title="See more services from Google Labs " width="470" height="188" class="size-medium wp-image-380" /></a><p class="wp-caption-text">See more services from Google Labs </p></div></p>
<p>А уже там можно выбрать нужный сервис. Их пока всего три: Moderator, Short Links и Code Review:<br />
<div id="attachment_381" class="wp-caption aligncenter" style="width: 480px"><a href="/files/2008/12/shortlinks_step3.png" ><img src="/files/2008/12/shortlinks_step3-470x298.png" alt="Google Labs" title="Google Labs" width="470" height="298" class="size-medium wp-image-381" /></a><p class="wp-caption-text">Google Labs</p></div></p>
<p>Итак, мы включаем Short Links, указываем нужный нам адрес, прописываем всё в DNS и… а для чего нужен этот сервис? Это похоже на сервисы, подобные <a href="http://tinyurl.com" class="liexternal">TinyURL</a>: указываем длинную ссылку, а нам дают короткую. В принципе, это и есть полное описание. Кстати, Short Links написан на python и расположен на Google App Engine.</p>
<div id="attachment_382" class="wp-caption aligncenter" style="width: 479px"><a href="/files/2008/12/shortlinks.png" ><img src="/files/2008/12/shortlinks-469x141.png" alt="Google Short Links" title="Google Short Links" width="469" height="141" class="size-medium wp-image-382" /></a><p class="wp-caption-text">Google Short Links</p></div>
<p>Однако, есть ряд преимуществ и существенных отличий:</p>
<ul>
<li>Собственный домен для коротких ссылок.</li>
<li>Учёт количества переходов по ссылке (можно использовать для анализа чего-либо).</li>
<li>Личные ссылки (для удобства, что-то вроде быстрого набора).</li>
</ul>
<p>Недавно добавились полезные букмарклеты, а также хэшированные ссылки (не надо самому придумывать короткую ссылку).</p>
<p><strong>Я пользуюсь.</strong> Удобная замена <a href="http://tinyurl.com" class="liexternal">TinyURL</a> :)</p>


<p>Связанные записи:<ol><li><a href='http://e-pavlov.ru/blog/2009/02/10/vklyuchenie-sinhronizatsii-s-mobilnyimi-ustroystvami-dlya-google-apps.html' rel='bookmark' title='Permanent Link: Включение синхронизации с мобильными устройствами для Google Apps'>Включение синхронизации с мобильными устройствами для Google Apps</a> <small>Сегодня уже две записи, относящихся Google — думаю, что много....</small></li><li><a href='http://e-pavlov.ru/blog/2008/09/25/google-adresa.html' rel='bookmark' title='Permanent Link: Google Адреса'>Google Адреса</a> <small>Одним из наиболее заметным нововведением Gmail 2.0 стала улучшенная адресная...</small></li><li><a href='http://e-pavlov.ru/blog/2008/05/31/google-app-engine-otkryit-teper-dlya-vseh.html' rel='bookmark' title='Permanent Link: Google App Engine открыт теперь для всех'>Google App Engine открыт теперь для всех</a> <small>Блог Google System сообщил о том, что теперь Google App...</small></li></ol></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/e-pavlov?a=YwGNU9hSfX8:n7aUpAfuNlQ:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/e-pavlov?i=YwGNU9hSfX8:n7aUpAfuNlQ:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/e-pavlov?a=YwGNU9hSfX8:n7aUpAfuNlQ:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/e-pavlov?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/e-pavlov?a=YwGNU9hSfX8:n7aUpAfuNlQ:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/e-pavlov?i=YwGNU9hSfX8:n7aUpAfuNlQ:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/e-pavlov?a=YwGNU9hSfX8:n7aUpAfuNlQ:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/e-pavlov?i=YwGNU9hSfX8:n7aUpAfuNlQ:F7zBnMyn0Lo" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://e-pavlov.ru/blog/2008/12/23/google-short-links.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss><!-- Dynamic page generated in 7.186 seconds. --><!-- Cached page generated by WP-Super-Cache on 2010-03-21 00:06:40 -->
