<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	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/"
	>

<channel>
	<title>Semyon&#039;s blog &#187; Веб</title>
	<atom:link href="http://uoziod.ru/category/web/feed/" rel="self" type="application/rss+xml" />
	<link>http://uoziod.ru</link>
	<description>May beauty be all around</description>
	<lastBuildDate>Tue, 08 Nov 2011 12:45:24 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.4</generator>
		<item>
		<title>Blyper &#8211; музыкальный оповеститель</title>
		<link>http://uoziod.ru/2010/09/28/blyper/</link>
		<comments>http://uoziod.ru/2010/09/28/blyper/#comments</comments>
		<pubDate>Tue, 28 Sep 2010 08:10:58 +0000</pubDate>
		<dc:creator>uoziod</dc:creator>
				<category><![CDATA[Веб]]></category>
		<category><![CDATA[Blyper]]></category>
		<category><![CDATA[Last.fm]]></category>
		<category><![CDATA[MusicBrainz]]></category>
		<category><![CDATA[веб-сервис]]></category>
		<category><![CDATA[музыка]]></category>
		<category><![CDATA[оповещение]]></category>

		<guid isPermaLink="false">http://uoziod.ru/?p=513</guid>
		<description><![CDATA[Не так давно я натолкнулся на интересный сервис, предназначенный для меломанов. Основная его задача &#8211; донести о новом релизе любимого музыканта пользователю. Для этого он использует аккаунт пользователя Last.fm для выяснения его музыкальных предпочтений и базу MusicBrainz для отправки информации о новых релизах указанных музыкантов почтовой рассылкой. Интерфейс сервиса доступен на многих языках, включая русский. [...]]]></description>
			<content:encoded><![CDATA[<p><a target="_blank" rel="nofollow" href="http://blyper.com"><img src="http://uoziod.ru/wp-content/uploads/2010/01/Screen-shot-2010-01-09-at-7.28.34-PM.PNG" alt="Blyper" title="Blyper" width="226" height="81" class="alignright size-full wp-image-517" /></a>Не так давно я натолкнулся на интересный сервис, предназначенный для меломанов. Основная его задача &#8211; донести о новом релизе любимого музыканта пользователю. Для этого он использует аккаунт пользователя <a target="_blank" rel="nofollow" href="http://last.fm">Last.fm</a> для выяснения его музыкальных предпочтений и базу <a target="_blank" rel="nofollow" href="http://www.musicbrainz.org">MusicBrainz</a> для отправки информации о новых релизах указанных музыкантов почтовой рассылкой. Интерфейс сервиса доступен на многих языках, включая русский.<span id="more-513"></span></p>
<h3>Почему Blyper?</h3>
<p>Сколько музыкантов и коллективов в Вашей музыкальной коллекции? В коллекции среднестатистического меломана обычно свыше 50 таких единиц. Отслеживание выпусков новых альбомов или синглов каждого Вашего любимого музыканта заняло бы всё Ваше время, и&#8230; совсем не факт, что очередные поиски увенчаются успехом.</p>
<p>А как на счёт не слишком известных музыкантах? Шанс встретить информацию об их новинках в музыкальной прессе сведён к нулю. Как следствие &#8211; Вы рискуете пропустить столько интересной музыки!</p>
<p>Хотим Вас заверить &#8211; доверяя решение этой задачи нам, такого не произойдёт!</p>
<ul>
<li>Пусть Вас больше не заботит: что некоторые музыкальные релизы пройдут мимо вас</li>
<li>Будьте уверены в том, что Ваша музыкальная база полноценна</li>
<li>Вы контролируете регулярность оповещений</li>
<li>Также Вы можете узнать о ранее неизвестных Вам музыкантах, благодаря изучению библиотек других пользователей сервиса</li>
<li>Делитесь своими музыкальными предпочтениями со своими друзьями, и&#8230;</li>
<li>Упростите им задачу выбора подарка Вам на день рожденья, добавляя музыкальные релизы в &laquo;Список желаемых&raquo;</li>
<li>Ну и наконец, наш сервис подскажет, в каком из ближайших магазинов есть в продаже понравившаяся Вам музыка!</li>
</ul>
<p><small>© <a href="http://uoziod.ru">Semyon&#039;s blog</a>, 2010.<br />
<a href="http://uoziod.ru/2010/09/28/blyper/">Прямая ссылка</a> |
<a href="http://uoziod.ru/2010/09/28/blyper/#comments">комментариев: 0</a> |
добавить в
<a href="http://del.icio.us/post?url=http://uoziod.ru/2010/09/28/blyper/&title=Blyper &#8211; музыкальный оповеститель">del.icio.us</a>
<br/>
Теги: <a href="http://uoziod.ru/tag/blyper/" rel="tag">Blyper</a>, <a href="http://uoziod.ru/tag/last-fm/" rel="tag">Last.fm</a>, <a href="http://uoziod.ru/tag/musicbrainz/" rel="tag">MusicBrainz</a>, <a href="http://uoziod.ru/tag/%d0%b2%d0%b5%d0%b1-%d1%81%d0%b5%d1%80%d0%b2%d0%b8%d1%81/" rel="tag">веб-сервис</a>, <a href="http://uoziod.ru/tag/%d0%bc%d1%83%d0%b7%d1%8b%d0%ba%d0%b0/" rel="tag">музыка</a>, <a href="http://uoziod.ru/tag/%d0%be%d0%bf%d0%be%d0%b2%d0%b5%d1%89%d0%b5%d0%bd%d0%b8%d0%b5/" rel="tag">оповещение</a><br/>
</small></p>]]></content:encoded>
			<wfw:commentRss>http://uoziod.ru/2010/09/28/blyper/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Самовольно под &#171;колпак&#187;</title>
		<link>http://uoziod.ru/2010/09/11/sharing-my-location/</link>
		<comments>http://uoziod.ru/2010/09/11/sharing-my-location/#comments</comments>
		<pubDate>Sat, 11 Sep 2010 18:55:07 +0000</pubDate>
		<dc:creator>uoziod</dc:creator>
				<category><![CDATA[Веб]]></category>
		<category><![CDATA[Device Locator]]></category>
		<category><![CDATA[Google Latitude]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[веб-сервис]]></category>

		<guid isPermaLink="false">http://uoziod.ru/?p=2753</guid>
		<description><![CDATA[По другому эту статью можно было бы назвать &#171;Find My Phone (и даже больше) по доступной цене&#187;. Здесь я опишу возможности, открываемые тандемом между веб-сервисом для пользователей iPhone Device Locator, и уже давно известным Google Latitude. Появление Google Latitude для iPhone произошло, когда в ОС устройства ещё не было многозадачности. Более того, к моменту её [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://uoziod.ru/wp-content/uploads/2010/09/map-with-pin-150x150.jpg" alt="" title="Location" width="150" height="150" class="alignright size-thumbnail wp-image-2987" />По другому эту статью можно было бы назвать &laquo;<strong>Find My Phone</strong> (и даже больше) по доступной цене&raquo;. Здесь я опишу возможности, открываемые тандемом между веб-сервисом для пользователей iPhone <strong><a rel="nofollow" href="http://device-locator.com/">Device Locator</a></strong>, и уже давно известным <strong><a rel="nofollow" href="http://www.google.com/latitude">Google Latitude</a></strong>.</p>
<p>Появление Google Latitude для iPhone произошло, когда в ОС устройства ещё не было <em>многозадачности</em>. Более того, к моменту её появления, запущенный где-то на фоне сайт Google Latitude не щадил бы аккумулятор, за счёт постоянного получения координат устройства.</p>
<p><span id="more-2753"></span>Кстати сказать, в процессе изучения этого вопроса я наткнулся на <a href="http://clickontyler.com/blog/2009/06/sosumi-a-mobileme-scraper/">Sosumi</a> &#8211; PHP-скрипт, позволяющий получать координаты устройства используя сервис <strong>Find My Phone</strong> проекта Apple <a rel="nofollow"href="http://me.com">MobileMe</a> (стоимость годовой подписки на который составляет более &euro;65). Получение координат устройства &#8211; решение только половины проблемы. После этого ещё останется обновить координаты в Google Latitude используя его API. Безусловно, этот способ для обывателя будет дорогостоящим и, более того, не совсем очевидным.</p>
<p>Приблизительно неделю назад, случайно вспомнив об этой идее и теперь уже имеющейся многозадачности в iPhone, я решил по-шерстить AppStore на предмет &laquo;Google Latitude Update&raquo;. Среди прочего меня заинтересовал сервис <strong>Device Locator</strong>, потому как он единственный из числа результатов поиска позиционировался как <em>сервис</em>. Условия использования сервиса свободные, однако стоимость приложения &#8211; $4.99. Пожалуй это все затраты на пути к реализации описанной задумки! Более того, это решение подразумевает весьма деликатное отношение к аккумулятору устройства&#8230;</p>
<h3>Теперь по порядку</h3>
<p>На <a rel="nofollow" target="_blank" href="http://device-locator.com/">сайте сервиса</a> предложено заполнить неприлично простую регистрационную форму. Эти данные потребуется ввести при первом запуске приобретённого <a rel="nofollow" target="_blank" href="http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?id=380395093&#038;onlyLatestVersion=true&#038;pageNumber=0&#038;sortOrdering=1&#038;type=Purple+Software">приложения</a>.</p>
<p>После этой процедуры устанавливается связь между мобильным устройством и веб-сервисом. Теперь необходимо установить интервал между <em>пингами</em> устройства. То есть вновь обращаемся к сайту сервиса и выполняем вход в личный кабинет. Здесь предоставлен список зарегистрированных устройств с возможностью регулирования интервала <em>пингов</em> его местоположения, триггером функционирования приложения, возможностью установки еже-15-секундного тревожного сигнала или банальной отправки Push-сообщения на устройство.</p>
<p>Помимо перечисленного, для каждого из зарегистрированных устройств доступен раздел <strong>Settings</strong>, где возможна настройка автоматического обновления координат в Google Latitude. Здесь же присутствует полезная для разработчиков функция &#8211; возможность передачи координат устройства через URL заданной формы.</p>
<h3>Подробнее об интервалах</h3>
<p>Не будет новостью, что чем короче промежуток между запросами, тем быстрее разряжается устройство. В представленном списке интервалы подразделяются на 2 категории. В случае выбора обновления местоположения исключительно по истечению некоторого промежутка времени, приложение будет отправлять обновлённые данные в случае, если оно запущено. Если же установить параметр обновления с учётом смены телефонной вышки (Tower Switch), то приложение начинает работать как сервис (даже если оно не запущено). Таким образом новые координаты отправляются без участия пользователя.</p>
<p>Идеальным по мнению разработчиков сочетающим точность (<em>свежесть</em> отправляемых координат) и щадящим аккумулятор режимом является <strong>30 минут + смена вышки</strong>.</p>
<h3>В результате</h3>
<p><iframe src="http://www.google.com/latitude/apps/badge/api?user=-8416623605218700952&#038;type=iframe&#038;maptype=roadmap&#038;hl=ru" width="100%" height="400" frameborder="0"></iframe></p>
<h3>Заметил лишь недавно</h3>
<p>После того, как я стал использовать <strong>Device Locator</strong>, заметил следующие нововведения на приборной доске <strong>Google Latitude</strong>:<br />
<a href="http://uoziod.ru/wp-content/uploads/2010/09/tomoon.png" rel="lightbox[2753]"><img src="http://uoziod.ru/wp-content/uploads/2010/09/tomoon-300x31.png" alt="" title="Расстояние до луны" width="300" height="31" class="alignnone size-medium wp-image-2786" /></a><br />
<a href="http://uoziod.ru/wp-content/uploads/2010/09/howispendtime.png" rel="lightbox[2753]"><img src="http://uoziod.ru/wp-content/uploads/2010/09/howispendtime-300x179.png" alt="" title="Как я провожу время" width="300" height="179" class="alignnone size-medium wp-image-2787" /></a></p>
<p><small>© <a href="http://uoziod.ru">Semyon&#039;s blog</a>, 2010.<br />
<a href="http://uoziod.ru/2010/09/11/sharing-my-location/">Прямая ссылка</a> |
<a href="http://uoziod.ru/2010/09/11/sharing-my-location/#comments">комментариев: 0</a> |
добавить в
<a href="http://del.icio.us/post?url=http://uoziod.ru/2010/09/11/sharing-my-location/&title=Самовольно под &laquo;колпак&raquo;">del.icio.us</a>
<br/>
Теги: <a href="http://uoziod.ru/tag/device-locator/" rel="tag">Device Locator</a>, <a href="http://uoziod.ru/tag/google-latitude/" rel="tag">Google Latitude</a>, <a href="http://uoziod.ru/tag/iphone/" rel="tag">iPhone</a>, <a href="http://uoziod.ru/tag/%d0%b2%d0%b5%d0%b1-%d1%81%d0%b5%d1%80%d0%b2%d0%b8%d1%81/" rel="tag">веб-сервис</a><br/>
</small></p>]]></content:encoded>
			<wfw:commentRss>http://uoziod.ru/2010/09/11/sharing-my-location/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Мониторинг интернет-обменников</title>
		<link>http://uoziod.ru/2010/06/10/bestchange/</link>
		<comments>http://uoziod.ru/2010/06/10/bestchange/#comments</comments>
		<pubDate>Thu, 10 Jun 2010 09:20:33 +0000</pubDate>
		<dc:creator>uoziod</dc:creator>
				<category><![CDATA[Веб]]></category>
		<category><![CDATA[веб-сервис]]></category>
		<category><![CDATA[обмен валюты]]></category>

		<guid isPermaLink="false">http://uoziod.ru/?p=729</guid>
		<description><![CDATA[Интернет сегодня изобилует различными сервисами обмена электронных валют. Лично у меня в ходу пара-тройка избранных сервисов, которыми я пользуюсь, в зависимости от необходимых направлений. Сегодня нашёл прекрасный сервис мониторинга обменников! Здесь всё и сразу &#8211; сводная статистика, калькулятор по всем обменникам, система оповещений. Порадовало также наличие PDA-версии сервиса. © Semyon&#039;s blog, 2010. Прямая ссылка &#124; [...]]]></description>
			<content:encoded><![CDATA[<p>Интернет сегодня изобилует различными сервисами обмена электронных валют. Лично у меня <em>в ходу</em> пара-тройка избранных сервисов, которыми я пользуюсь, в зависимости от необходимых направлений.</p>
<p>Сегодня нашёл прекрасный сервис <a href="http://www.bestchange.ru/">мониторинга обменников</a>! Здесь всё и сразу &#8211; сводная статистика, калькулятор по всем обменникам, система оповещений. Порадовало также наличие PDA-версии сервиса.</p>
<p><small>© <a href="http://uoziod.ru">Semyon&#039;s blog</a>, 2010.<br />
<a href="http://uoziod.ru/2010/06/10/bestchange/">Прямая ссылка</a> |
<a href="http://uoziod.ru/2010/06/10/bestchange/#comments">комментариев: 0</a> |
добавить в
<a href="http://del.icio.us/post?url=http://uoziod.ru/2010/06/10/bestchange/&title=Мониторинг интернет-обменников">del.icio.us</a>
<br/>
Теги: <a href="http://uoziod.ru/tag/%d0%b2%d0%b5%d0%b1-%d1%81%d0%b5%d1%80%d0%b2%d0%b8%d1%81/" rel="tag">веб-сервис</a>, <a href="http://uoziod.ru/tag/%d0%be%d0%b1%d0%bc%d0%b5%d0%bd-%d0%b2%d0%b0%d0%bb%d1%8e%d1%82%d1%8b/" rel="tag">обмен валюты</a><br/>
</small></p>]]></content:encoded>
			<wfw:commentRss>http://uoziod.ru/2010/06/10/bestchange/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Apple vs. Adobe: &#171;Скрипач не нужен&#187;</title>
		<link>http://uoziod.ru/2010/05/01/apple-vs-adobe/</link>
		<comments>http://uoziod.ru/2010/05/01/apple-vs-adobe/#comments</comments>
		<pubDate>Fri, 30 Apr 2010 20:10:03 +0000</pubDate>
		<dc:creator>uoziod</dc:creator>
				<category><![CDATA[Веб]]></category>
		<category><![CDATA[Adobe]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[H.264]]></category>
		<category><![CDATA[Hovl]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[Steve Jobs]]></category>

		<guid isPermaLink="false">http://uoziod.ru/?p=671</guid>
		<description><![CDATA[Благодарю Hovl&#8216;а за наводку на интересную и актуальную публикацию Стива Джобса о том, почему на мобильных устройствах Apple нет и не будет поддержки Flash. Статья изобилует мыльными фактами о том, почему на мобильных устройствах Apple не нужен Flash, и конечно же в рамках данной ситуации (когда Apple подготовил превосходную платформу для создания приложений для своих [...]]]></description>
			<content:encoded><![CDATA[<p>Благодарю <em>Hovl</em>&#8216;а за наводку на интересную и актуальную публикацию Стива Джобса о том, <a target="_blank" rel="nofollow" href="http://www.apple.com/hotnews/thoughts-on-flash/">почему на мобильных устройствах Apple нет и не будет поддержки Flash</a>.</p>
<p><span id="more-671"></span>Статья изобилует <em>мыльными фактами</em> о том, почему на мобильных устройствах Apple не нужен Flash, и конечно же в рамках данной ситуации (когда Apple подготовил превосходную платформу для создания приложений для своих устройств) всё достаточно складно. Думаю чаще всего недовольства пользователей мобильных устройств Apple по этому поводу возникают из-за невозможности просмотра видеороликов <strong>не</strong> на YouTube. Однако в публикации на эту тему достаточно обнадёживающе говорится о возможностях HTML5 и H.264&#8230; Хотя всё это пока очень уж в зачаточном состоянии.</p>
<p>Что ж, остаётся терпеливо ждать прогресса!)</p>
<p><small>© <a href="http://uoziod.ru">Semyon&#039;s blog</a>, 2010.<br />
<a href="http://uoziod.ru/2010/05/01/apple-vs-adobe/">Прямая ссылка</a> |
<a href="http://uoziod.ru/2010/05/01/apple-vs-adobe/#comments">комментариев: 0</a> |
добавить в
<a href="http://del.icio.us/post?url=http://uoziod.ru/2010/05/01/apple-vs-adobe/&title=Apple vs. Adobe: &laquo;Скрипач не нужен&raquo;">del.icio.us</a>
<br/>
Теги: <a href="http://uoziod.ru/tag/adobe/" rel="tag">Adobe</a>, <a href="http://uoziod.ru/tag/apple/" rel="tag">Apple</a>, <a href="http://uoziod.ru/tag/flash/" rel="tag">Flash</a>, <a href="http://uoziod.ru/tag/h-264/" rel="tag">H.264</a>, <a href="http://uoziod.ru/tag/hovl/" rel="tag">Hovl</a>, <a href="http://uoziod.ru/tag/html5/" rel="tag">HTML5</a>, <a href="http://uoziod.ru/tag/steve-jobs/" rel="tag">Steve Jobs</a><br/>
</small></p>]]></content:encoded>
			<wfw:commentRss>http://uoziod.ru/2010/05/01/apple-vs-adobe/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google Wave</title>
		<link>http://uoziod.ru/2009/12/12/google-wave/</link>
		<comments>http://uoziod.ru/2009/12/12/google-wave/#comments</comments>
		<pubDate>Sat, 12 Dec 2009 04:20:56 +0000</pubDate>
		<dc:creator>uoziod</dc:creator>
				<category><![CDATA[Веб]]></category>
		<category><![CDATA[Google Wave]]></category>
		<category><![CDATA[team-менеджмент]]></category>
		<category><![CDATA[веб-сервис]]></category>

		<guid isPermaLink="false">http://uoziod.ru/?p=384</guid>
		<description><![CDATA[Не так давно я заметил, что стоит только заговорить о сервисе Google Wave, в случае, если собеседник слышит о нём впервые, у меня снова возникает вопрос &#8212; как правильно описать этот продукт? Проблема этого вопроса, как мне показалось, в затруднении кратко рассказать о функционале и особенностях сервиса таким образом, чтобы стала очевидна надобность в нём [...]]]></description>
			<content:encoded><![CDATA[<p><a class="cleanlink" target="_blank" href="http://wave.google.com"><img src="http://uoziod.ru/wp-content/uploads/2009/12/wave1.png" alt="Google Wave" title="Google Wave" width="533" height="316" class="alignnone size-full wp-image-390" /></a></p>
<p>Не так давно я заметил, что стоит только заговорить о сервисе <strong>Google Wave</strong>, в случае, если собеседник слышит о нём впервые, у меня снова возникает вопрос &#8212; как правильно описать этот продукт? Проблема этого вопроса, как мне показалось, в затруднении кратко рассказать о функционале и особенностях сервиса таким образом, чтобы стала очевидна надобность в нём как в таковом&#8230; Этим постом я попробую на примерах и со скриншотами сделать обзор пока ещё &laquo;preview&raquo;-версии новинки от <em>Google</em>.</p>
<p><span id="more-384"></span>Моё первое знакомство с <em>Google Wave</em> проходило в рамках следующего видео. Конечно, на протяжении почти полутора часов внимать всю информацию из этого ролика &#8212; большое дело, но мне было достаточно короткого обзора &laquo;о самом главном&raquo; первых приблизительно 20 минут:</p>
<p><object width="480" height="295"><param name="movie" value="http://www.youtube.com/v/v_UyVmITiYQ&#038;hl=ru_RU&#038;fs=1&#038;rel=0"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/v_UyVmITiYQ&#038;hl=ru_RU&#038;fs=1&#038;rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="295"></embed></object></p>
<h3>Своими словами</h3>
<p><em>Google Wave</em> &#8212; новый способ (групповой) коммуникации в Интернете.</p>
<p><a class="cleanlink" href="http://uoziod.ru/wp-content/uploads/2009/12/wave-overview.png" rel="lightbox[384]"><img src="http://uoziod.ru/wp-content/uploads/2009/12/wave-overview-300x239.png" alt="Google Wave: интерфейс" title="Google Wave: интерфейс" width="300" height="239" class="alignnone size-medium wp-image-396" /></a></p>
<p>Внешне интерфейс напоминает почту, однако вместо списка писем здесь &#8212; &laquo;<strong>waves</strong>&raquo; (&laquo;<strong>волны</strong>&laquo;). Только что создав и оформив очередную волну Вы являетесь единственным её участником. Добавить участников можно двумя способами:</p>
<ul>
<li>нажатием на кнопку добавления с последующим добавлением пользователей из появившегося списка контактов (классический, см. рисунок ниже)</li>
<li>перетягиванием мышью пользователей из списка контактов расположенном непосредственно в интерфейсе к кнопке добавления участников (drag &#038; drop).</li>
</ul>
<p><img src="http://uoziod.ru/wp-content/uploads/2009/12/wave-overview1.png" alt="Google Wave: добавление участников конференции" title="Google Wave: добавление участников конференции" width="322" height="130" class="alignnone size-full wp-image-406" /></p>
<p>Волна состоит из череды сообщений, которые, между прочим, создаются не обязательно хронологически. Участник в праве ответить на ту или иную реплику в любой момент.</p>
<p><img src="http://uoziod.ru/wp-content/uploads/2009/12/wave-overview.gif" alt="Google Wave: ответ на сообщение" title="Google Wave: ответ на сообщение" width="363" height="152" class="alignnone size-full wp-image-409" /></p>
<p>Самой невероятной, на мой взгляд, feature&#8217;й сервиса является &laquo;<strong>абсолютно прямой эфир</strong>&laquo;&#8230; Когда у <em>волны</em> есть несколько участников и, положим, двое из них одновременно находятся в обсуждении, то вместо привычного оповещения &laquo;<em>Коля печатает&#8230;</em>&raquo; оба будут видеть вводимый друг другом текст <strong>в реальном времени</strong>.</p>
<p><img src="http://uoziod.ru/wp-content/uploads/2009/12/wave-overview1.gif" alt="Google Wave: бегунок прокрутки (scroll bar)" title="Google Wave: бегунок прокрутки (scroll bar)" width="40" height="213" class="alignright size-full wp-image-412" />Обратите внимание на инновационный <em>бегунок прокрутки</em> (<em>scroll bar</em>). Для прокрутки списков можно перемещать как сам бегунок, так и ограничиться использованием кнопок управления прокруткой расположенных на самом элементе. Согласитесь &#8212; удобно!?</p>
<p>Многие пользователи ПК сложно представляют себе управление компьютером без <em>горячих клавиш</em>. Конечно же и этот момент предусмотрен разработчиками <em>Google Wave</em>. Например для того, чтобы создать новое сообщение следом за сфокусированном (а если фокус отсутствует, то под сфокусированным подразумевается последнее), используется сочетание клавиш <strong>Shift</strong> + <strong>Enter</strong>.</p>
<p><em>Google Wave</em> оснащён <strong>гаджетами</strong> &#8212; интерактивными элементами, добавление которых возможно прямо внутри создаваемых сообщений. В качестве <em>примеров от разработчиков</em> сегодня можно наблюдать следующие расширения:<br />
<a href="http://uoziod.ru/wp-content/uploads/2009/12/wave-overview3.png" rel="lightbox[384]"><img src="http://uoziod.ru/wp-content/uploads/2009/12/wave-overview3-180x300.png" alt="Google Wave: гаджеты" title="Google Wave: гаджеты" width="180" height="300" class="alignright size-medium wp-image-417" /></a></p>
<ul>
<li><strong>ресурсы из результатов поиска</strong> &#8212; Google Search gadget</li>
<li><strong>опросник</strong> &#8212; Yes/No/Maybe gadget</li>
<li><strong>карта</strong> &#8212; Map gadget</li>
<li>и возможность установки <em>удалённого гаджета</em> по URL (вот, кстати, <a target="_blank" href="http://wavety.com/">каталог гаджетов</a>)</li>
</ul>
<p>Средствами <strong>Google Gears</strong> пользователи <em>Wave</em> могут элементарно добавлять к сообщениям файлы (будь то мультимедиа или PDF-документ). Способ таков: найдя необходимый файл в <em>Проводнике</em>/<em>Finder</em> перетягиваем его непосредственно в открытую волну открытую в браузере, где и наблюдаем его после загрузки! Просто гениально!</p>
<p>Выше я перечислил только показавшиеся основными и весьма порадовавшие особенности сервиса. Ну а теперь что касается повстречавшихся <em>загадок</em>&#8230; Конечно же принимается во внимание то, что сервис находится в статусе <strong>preview</strong>.</p>
<p>Итак, обнаружено следующее необъяснимое явление: <em>статусы пользователей</em>, даже тех, кто совершенно безошибочно в данный момент используют <em>Google Wave</em> (о чём свидетельствуют изменения, происходящие внутри той или иной <em>волны</em> в реальном времени) по логике должны быть отражены в списке контактов, однако характерный зелёный кружок (лично у меня) присутствует только над собственными изображениями. В ходе обсуждений этой необъяснимой вещи с другими пользователями <em>Wave</em> было выяснено, что проблема имеет место быть не только у меня.</p>
<p>Как уже говорилось немного раньше, сервис находится в стадии <em>preview</em> (далеко не <em>beta</em>). Вспоминается опыт с <strong>Google Mail</strong>, когда открытой для регистрации почта стала спустя несколько лет после старта &laquo;по приглашениям&raquo;. Сегодня вновь приглашённый в <em>Google Wave</em> может отправить 10 приглашений своим своим друзьям и товарищам. Однако <a target="_blank" href="https://services.google.com/fb/forms/wavesignup/">есть такая форма</a>, используя которую любой желающий может оставить запрос на приглашение в <em>Google Wave</em>, <em>как только это станет возможным</em>.</p>
<p><strong>P.S</strong>: Кому уже сейчас не терпится обозреть сервис самостоятельно, могу поспособствовать этому несколькими оставшимися приглашениями &#8212; оставляйте запросы в комментариях.</p>
<p><small>© <a href="http://uoziod.ru">Semyon&#039;s blog</a>, 2009.<br />
<a href="http://uoziod.ru/2009/12/12/google-wave/">Прямая ссылка</a> |
<a href="http://uoziod.ru/2009/12/12/google-wave/#comments">комментариев: 0</a> |
добавить в
<a href="http://del.icio.us/post?url=http://uoziod.ru/2009/12/12/google-wave/&title=Google Wave">del.icio.us</a>
<br/>
Теги: <a href="http://uoziod.ru/tag/google-wave/" rel="tag">Google Wave</a>, <a href="http://uoziod.ru/tag/team-%d0%bc%d0%b5%d0%bd%d0%b5%d0%b4%d0%b6%d0%bc%d0%b5%d0%bd%d1%82/" rel="tag">team-менеджмент</a>, <a href="http://uoziod.ru/tag/%d0%b2%d0%b5%d0%b1-%d1%81%d0%b5%d1%80%d0%b2%d0%b8%d1%81/" rel="tag">веб-сервис</a><br/>
</small></p>]]></content:encoded>
			<wfw:commentRss>http://uoziod.ru/2009/12/12/google-wave/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Teamer и его команда</title>
		<link>http://uoziod.ru/2009/06/22/teamer/</link>
		<comments>http://uoziod.ru/2009/06/22/teamer/#comments</comments>
		<pubDate>Mon, 22 Jun 2009 11:49:35 +0000</pubDate>
		<dc:creator>uoziod</dc:creator>
				<category><![CDATA[Веб]]></category>
		<category><![CDATA[team-менеджмент]]></category>
		<category><![CDATA[Xio]]></category>
		<category><![CDATA[веб-сервис]]></category>

		<guid isPermaLink="false">http://uoziod.ru/?p=79</guid>
		<description><![CDATA[Сегодня Xio предложил вести внутрикомандное общение в интересном веб-сервисе для team-менеджмента, не перегруженным большим количеством опций и настроек. Cервис представляет собой &#171;общую записную книжку&#187; форменно напоминающую что-то между форумом/wiki. Первым делом зайдя на сайт Вам будет предложено завести аккаунт. После этой процедуры можно как принимать участие в ведущихся на сервисе проектах, так и создавать свои [...]]]></description>
			<content:encoded><![CDATA[<p><a target="_blank" href="http://www.teamer.ru/"><img src="http://uoziod.ru/wp-content/uploads/2009/06/teamer.gif" alt="teamer" title="teamer" width="150" height="52" class="alignright size-full wp-image-163" /></a>Сегодня <strong>Xio</strong> предложил вести внутрикомандное общение в интересном веб-сервисе для team-менеджмента, не перегруженным большим количеством опций и настроек.</p>
<p>Cервис представляет собой &laquo;общую записную книжку&raquo; форменно напоминающую что-то между форумом/wiki. Первым делом зайдя на сайт Вам будет предложено завести аккаунт. После этой процедуры можно как принимать участие в ведущихся на сервисе проектах, так и создавать свои собственные, приглашать в их участие сотоварищей.</p>
<p>Внутри созданного проекта используется только три сущности: <em>папки</em>, <em>заметки</em> и <em>задания</em>, все из которых (кроме <em>папок</em>) могут быть открыты или назначены конкретным людям, участвующим в проекте.</p>
<p>На сервисе предусмотрена система оповещения об обновлениях в проекте через e-mail, ICQ или Jabber, однако функционирует на данный момент только оповещение по электронной почте.</p>
<p><small>© <a href="http://uoziod.ru">Semyon&#039;s blog</a>, 2009.<br />
<a href="http://uoziod.ru/2009/06/22/teamer/">Прямая ссылка</a> |
<a href="http://uoziod.ru/2009/06/22/teamer/#comments">комментариев: 0</a> |
добавить в
<a href="http://del.icio.us/post?url=http://uoziod.ru/2009/06/22/teamer/&title=Teamer и его команда">del.icio.us</a>
<br/>
Теги: <a href="http://uoziod.ru/tag/team-%d0%bc%d0%b5%d0%bd%d0%b5%d0%b4%d0%b6%d0%bc%d0%b5%d0%bd%d1%82/" rel="tag">team-менеджмент</a>, <a href="http://uoziod.ru/tag/xio/" rel="tag">Xio</a>, <a href="http://uoziod.ru/tag/%d0%b2%d0%b5%d0%b1-%d1%81%d0%b5%d1%80%d0%b2%d0%b8%d1%81/" rel="tag">веб-сервис</a><br/>
</small></p>]]></content:encoded>
			<wfw:commentRss>http://uoziod.ru/2009/06/22/teamer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Хостинг-Центр РБК и WordPress (depricated)</title>
		<link>http://uoziod.ru/2009/06/09/hc-ru-i-wordpress/</link>
		<comments>http://uoziod.ru/2009/06/09/hc-ru-i-wordpress/#comments</comments>
		<pubDate>Tue, 09 Jun 2009 16:27:15 +0000</pubDate>
		<dc:creator>uoziod</dc:creator>
				<category><![CDATA[Веб]]></category>
		<category><![CDATA[.htaccess]]></category>
		<category><![CDATA[CMS]]></category>
		<category><![CDATA[hack]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[хостинг]]></category>

		<guid isPermaLink="false">http://uoziod.ru/?p=21</guid>
		<description><![CDATA[Вот уже приблизительно два года я пользуюсь услугами хостинг-провайдера Хостинг-Центр РБК. В лист предоставляемых услуг входит возможность создания самостоятельных подсайтов внутри имеющегося домена, на которые накладываются странные ограничения. Те, кто пытался установить WordPress, TYPO3, Joomla и прочие гибко настраиваемые CMS наверняка знают о чём идёт речь. Проблема заключается в установленных ограничениях на оперативную память для [...]]]></description>
			<content:encoded><![CDATA[<p>Вот уже приблизительно два года я пользуюсь услугами хостинг-провайдера <em>Хостинг-Центр РБК</em>. В лист предоставляемых услуг входит возможность создания самостоятельных подсайтов внутри имеющегося домена, на которые накладываются странные ограничения. Те, кто пытался установить <strong>WordPress</strong>, <strong>TYPO3</strong>, <strong>Joomla</strong> и прочие гибко настраиваемые CMS наверняка знают о чём идёт речь.</p>
<p><span id="more-21"></span>Проблема заключается в установленных ограничениях на оперативную память для исполняемых скриптов. Поэтому при попытке запустить &laquo;громоздкий&raquo; скрипт сервер возвращает ошибку.</p>
<blockquote><p>Fatal error: Out of memory (allocated 9699328)</p></blockquote>
<p>Разговоры на эту тему с техподдержкой ХЦ <a title="Форум HostObzor" href="http://forum.hostobzor.ru/index.php?showtopic=11104" target="_blank">бесполезны</a>.</p>
<p>В данной статье речь пойдёт о простом (не идеальном) способе обхода описанной проблемы используя <em>.htaccess</em> и <em>php</em>.</p>
<p>Очевидно то, что для корректной установки и дальнейшей работы CMS необходимо будет запустить её на основном либо другом удалённом хостинге. Затем <em>.htaccess</em> на нашем подсайте будет отлавливать HTTP-запросы и отдавать их нашему <em>php-cкрипту</em>, который будет делать реальные запросы к удалённому сайту, забирать и изменять ссылки в содержимом, а затем его выводить.</p>
<p>Определимся с деталями. Положим что уже есть установленный и работающий <em>WordPress</em> на сайте <strong>http://www.site.ru/blog/</strong>. На основном хостинге создан подсайт <strong>blog.site.ru</strong>, где мы хотим видеть наш блог. В настройках веб-сервера нашего подсайта (в контрольной панели Хостинг-Центра РБК) выбрана версия PHP5. Версия движка <em>WordPress</em> &#8211; <strong>2.7.1</strong>.</p>
<h3>.htaccess</h3>
<p>Первым действием в публичной папке подсайта (&laquo;<em>~/www/htdocs/</em>&laquo;) создаём (либо изменяем содержимое уже имеющегося файла) &laquo;<em>.htaccess</em>&raquo; на следующие строки</p>
<pre>&lt;IfModule mod_rewrite.c&gt;
	RewriteEngine On
	RewriteBase /
	RewriteCond %{REQUEST_FILENAME} !-f
	RewriteCond %{REQUEST_FILENAME} !-d
	RewriteRule . /index.php [L]
&lt;/IfModule&gt;</pre>
<p>Это стандартный <em>.htaccess</em>-файл движка блогов WordPress, являющийся идеально подходящим как для нашего случая, так и для тех, когда на удалённом сайте установлена любая другая CMS. Данная конфигурация возвращает пользователю, запрашивающему адрес вида <strong>http://blog.site.ru/&lt;что угодно&gt;</strong> результат работы скрипта <em>index.php</em>. В самом <em>index.php</em> мы уже работаем с запрошенным URL.</p>
<blockquote><p>В PHP включена поддержка libcurl &#8212; библиотеки функций, написанной      Daniel Stenberg, которая позволяет взаимодействовать с различными     серверами по различным протоколам.</p></blockquote>
<p>Возможности этой библиотеки мы и будем в основном использовать в нашем скрипте.</p>
<p>Первый подводный камень &#8212; невозможность обработки нашим скриптом POST-запросов, а это значит что для наименьших &laquo;потерь&raquo; (да, они всё-таки предстоят в нашем случае) админкой <em>WordPress</em>&#8216;а придётся пользоваться по реальному адресу. Скорее всего проблема в том, что POST-запросы хранятся в заголовке документа, и при попытке внешнего скрипта (нашего <em>index.php</em>) для нашего реального сайта &laquo;подсунуть&raquo; ему переменные в POST-запросе останавливают выполнение нашего скрипта из соображений безопасности. Формы на сайте использующие метод GET (например тот же поиск) работать будут нормально.</p>
<h3>index.php</h3>
<p>Метод работы <strong>cURL</strong> в PHP делится на 2 части: случаи, когда мы работаем с заголовком запрашиваемого документа, и случаи, когда мы работаем с его телом. В нашем случае мы действуем сразу в обоих направлениях.</p>
<p>Итак, второе наше действие &#8212; создаём <em>index.php</em>.</p>
<p>Прежде всего определимся с переменными GET-форм. Передавать их в запросе следует используя специальный параметр сеанса <em>cURL</em> &#8212; <strong>CURLOPT_POSTFIELDS</strong>. Значение этого параметра &#8212; собственно сами данные POST-запроса известного вида &laquo;<em>?key=value&amp;key2=value2</em>&laquo;. Наш скрипт получает переменные эти в виде массива <strong>$_POST</strong>.</p>
<pre>foreach ($_POST as $key =&gt; $value) {
	$postapx .= "&amp;" . $key . '=' . $value;
}</pre>
<p>Этот фрагмент собирает все полученные скриптом переменные в строку (<strong>$postapx</strong>), которую мы будем присоединять к нашим запросам реальной страницы.</p>
<p>Как говорилось выше, работа <em>сURL</em> разделена на две части: <em>возврат заголовка</em> и <em>возврат содержимого</em> запрашиваемого документа. Прежде чем выводить содержимое, необходимо скопировать заголовок удалённой страницы.</p>
<pre>$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://www.site.ru/blog" . $_SERVER["REQUEST_URI"]);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_NOBODY, 1);
if ($postapx) {
	curl_setopt($ch, CURLOPT_POST, 1);
	curl_setopt($ch, CURLOPT_POSTFIELDS, $postapx);
}
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$resp = curl_exec($ch);
curl_close($ch);</pre>
<p>Инициализируем сеанс <em>cURL</em> и задаём ему параметры. <strong>CURLOPT_URL</strong> &#8212; указание запрашиваемой страницы. <strong>CURLOPT_HEADER</strong> &#8212; переключатель установленный в значение &laquo;включен&raquo; (по умолчанию &laquo;выключен&raquo;), отвечающий за возврат в результат заголовка. <strong>CURLOPT_NOBODY</strong> &#8212; переключатель, отключающий включение в результат запроса содержимого документа, потому как мы заняты пока исключительно заголовками. Затем мы проверяем наличие переменных GET-запроса нашему скрипту и при положительном результате включаем их в запрос удалённого документа.  Положительное значение переключателя <strong>CURL_RETURNTRANSFER</strong> запрещает прямой вывод результата запроса, вместо чего возвращает его в виде значения. Полезно, когда мы хотим записать его в переменную (<strong>$resp</strong>) для дальнейших операций над результатом. Все необходимые действия выполнены. Закрываем сеанс.</p>
<pre>$headLines = explode("\n", $resp);
$i = 0;
foreach ($headLines as &amp;$value) {
	$i++;
	if ($i &gt; 2) {
		$skip = false;
		if (
			strstr($value, "Connection: keep-alive") ||
			strstr($value, "Keep-Alive:") ||
			strstr($value, "Transfer-Encoding:")
		)
			$skip = true;
		if (!$skip)
			header($value);
	}
}</pre>
<p>Данные заголовка запрошенного документа сейчас хранятся в исходном виде &#8212; каждый новый параметр заголовка разделяется символом переноса строки <strong>\n</strong>. Существует необходимость работать с каждым параметром отдельно. Первая строка разбивает каждую новую строку принятой информации в отдельные элементы массива оператором <em>explode</em>. Далее наш скрипт перебирает каждый параметр на предмет необходимости включения его в наш документ.</p>
<blockquote><p>HTTP/1.1 200 OK<br />
Server: nginx/0.5.35</p></blockquote>
<p>Первые две строки наш скрипт вернёт и без их наследования, поэтому организованный перед циклом счётчик <strong>$i</strong> пропускает обработку первых двух строк результата. Есть ещё несколько параметров (<em>Connection</em>, <em>Keep-Alive</em> и <em>Transfer-Encoding</em>) которые мы не наследуем из-за неуместности их при работе со статичными веб-документами.</p>
<pre>$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://www.site.ru/blog" . $_SERVER["REQUEST_URI"] . $postapx);
if ($postapx) {
	curl_setopt($ch, CURLOPT_POST, 1);
	curl_setopt($ch, CURLOPT_POSTFIELDS, $postapx);
}
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$content = curl_exec($ch);
curl_close($ch);</pre>
<p>Снова инициализируем <em>cURL</em>-сессию, теперь уже для записи содержимого запрашиваемого документа в переменную <strong>$content</strong>.</p>
<pre>$content = str_replace('http://www.site.ru/blog', 'http://blog.site.ru', $content);
print $content;</pre>
<p>Затем производим в результате запроса замену всех присутствующих в нём ссылок на удалённые ресурсы и выводим его.</p>
<p>На этом этапе можно проверить работоспособность нашего скрипта. Но помните о рассказанных ранее проблемах с POST-запросами. Далее речь пойдёт лишь о частном случае с <em>WordPress</em>.</p>
<h3>А теперь о жертвах</h3>
<p>Сразу нужно упомянуть о том, что единственную <em>жертву</em> мы имеем лишь в случае, когда мы не используем других попыток создать POST-запрос нашему скрипту. В ином случае <em>жертвами</em> становятся все файлы, делающие эти попытки. Таким образом логично выключить из шаблона ссылки для входа и регистрации в административной зоне<em> WordPress</em> (вход и регистрация), т.к. всё-равно функционировать они не будут.</p>
<p>Как следствие: Вы публикуете новый материал и вообще пользуетесь админкой по реальному её адресу вида <strong>http://www.site.ru/blog/wp-login.php</strong>.</p>
<p>Публично POST-запрос в блоге также используется, когда пользователь пытается оставить комментарий к записи. Следовательно наша жертва &#8211; файл <strong>wp-comments-post.php</strong>. Он начинается со следующего блока:</p>
<pre>if ( 'POST' != $_SERVER['REQUEST_METHOD'] ) {
	header('Allow: POST');
	header('HTTP/1.1 405 Method Not Allowed');
	header('Content-Type: text/plain');
	exit;
}</pre>
<p>Он полностью комментируется. Затем методом поиска и замены ищем все фрагменты &laquo;<strong>$_POST</strong>&raquo; заменяя их на &laquo;<strong>$_GET</strong>&laquo;.</p>
<p>Нужно помнить об этих изменениях при обновлениях движка <em>WordPress</em> эти изменения аннулируются.</p>
<p>Последний этап &#8212; изменение метода формы обращённой к только что изменённому файлу. В случае с использованием стандартной темы <strong>Kubrick</strong> она находится в файле <strong>comments.php</strong> в каталоге темы.</p>
<p>В нём ищем:</p>
<pre>&lt;form action="&lt;?php echo get_option('siteurl'); ?&gt;/wp-comments-post.php" method="POST" id="commentform"&gt;</pre>
<p>&#8230; и заменяем <strong>method=&quot;POST&quot;</strong> на <strong>method=&quot;GET&quot;</strong>.</p>
<p>Вот и всё!</p>
<p><a href="http://uoziod.ru/wp-content/uploads/2009/06/hc-ru-wordpress.zip">Архив содержащий скрипт и изменённый wp-comment-post.php</a> (<em>2,459 b</em>)</p>
<p><strong>UPD от 15.07.2009:</strong><br />
Яндекс снял с индекса&#8230; Пожалуй есть причины переселить блог на другой хостинг.</p>
<p><small>© <a href="http://uoziod.ru">Semyon&#039;s blog</a>, 2009.<br />
<a href="http://uoziod.ru/2009/06/09/hc-ru-i-wordpress/">Прямая ссылка</a> |
<a href="http://uoziod.ru/2009/06/09/hc-ru-i-wordpress/#comments">комментариев: 10</a> |
добавить в
<a href="http://del.icio.us/post?url=http://uoziod.ru/2009/06/09/hc-ru-i-wordpress/&title=Хостинг-Центр РБК и WordPress (depricated)">del.icio.us</a>
<br/>
Теги: <a href="http://uoziod.ru/tag/htaccess/" rel="tag">.htaccess</a>, <a href="http://uoziod.ru/tag/cms/" rel="tag">CMS</a>, <a href="http://uoziod.ru/tag/hack/" rel="tag">hack</a>, <a href="http://uoziod.ru/tag/php/" rel="tag">php</a>, <a href="http://uoziod.ru/tag/wordpress/" rel="tag">WordPress</a>, <a href="http://uoziod.ru/tag/%d1%85%d0%be%d1%81%d1%82%d0%b8%d0%bd%d0%b3/" rel="tag">хостинг</a><br/>
</small></p>]]></content:encoded>
			<wfw:commentRss>http://uoziod.ru/2009/06/09/hc-ru-i-wordpress/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
	</channel>
</rss>

