<?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>&#60;![[ XINIT ]]&#62;</title>
	<atom:link href="http://xinit.ru/feed" rel="self" type="application/rss+xml" />
	<link>http://xinit.ru</link>
	<description>Блог Калининградского IT-шника. Разработки, статьи, обзоры</description>
	<lastBuildDate>Mon, 12 Jul 2010 16:50:27 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Обновлены скрипты Vkontakte Scripts</title>
		<link>http://xinit.ru/blog/%d0%be%d0%b1%d0%bd%d0%be%d0%b2%d0%bb%d0%b5%d0%bd%d1%8b-%d1%81%d0%ba%d1%80%d0%b8%d0%bf%d1%82%d1%8b-vkontakte-scripts</link>
		<comments>http://xinit.ru/blog/%d0%be%d0%b1%d0%bd%d0%be%d0%b2%d0%bb%d0%b5%d0%bd%d1%8b-%d1%81%d0%ba%d1%80%d0%b8%d0%bf%d1%82%d1%8b-vkontakte-scripts#comments</comments>
		<pubDate>Thu, 13 May 2010 20:23:51 +0000</pubDate>
		<dc:creator>Kolonist</dc:creator>
				<category><![CDATA[Новости сайта]]></category>
		<category><![CDATA[Решения и продукты]]></category>
		<category><![CDATA[digital_investigation]]></category>
		<category><![CDATA[Greasemonkey]]></category>
		<category><![CDATA[solutions]]></category>
		<category><![CDATA[vkontakte_scripts]]></category>

		<guid isPermaLink="false">http://xinit.ru/?p=305</guid>
		<description><![CDATA[Greasemonkey-скрипты для получения дополнительной информации с сайте &#171;Вконтакте&#187; Vkontakte Scripts обновлены. Исправлено множество ошибок, работа скриптов подстроена под новые возможности Контакта. В частности, скрипты корректно работают с короткими именами пользователей. Теперь скрипты автоматически определяют текущий домен (vkontakte.ru или vk.com) и формируют ссылки на его основе, так что непреднамеренный переход в другой аккаунт исключен. Кроме того, [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://pub.xinit.ru/solutions/di-investigation/vkontakte_scripts/favicon_150.jpg" width="150" height="150" alt="" style="float: left; margin: 0 10px 0 0" />Greasemonkey-скрипты для получения дополнительной информации с сайте &laquo;Вконтакте&raquo; <strong><a href="http://xinit.ru/solutions/vkontakte-scripts" title="Перейти к описанию скриптов Vkontakte Scripts">Vkontakte Scripts</a></strong> обновлены.</p>
<p>Исправлено множество ошибок, работа скриптов подстроена под новые возможности Контакта. В частности, скрипты корректно работают с короткими именами пользователей. Теперь скрипты автоматически определяют текущий домен (vkontakte.ru или vk.com) и формируют ссылки на его основе, так что непреднамеренный переход в другой аккаунт исключен.</p>
<p>Кроме того, появилась возможность выяснять пользователя, закачавшего (а не добавившего через поиск) видео, аудио или изображение в Контакт. Добавлена возможность просмотра истории статусов. Причем, для открытых профилей доступна полная история статусов, а для закрытых &#8212; около 10 последний статусов.</p>
]]></content:encoded>
			<wfw:commentRss>http://xinit.ru/blog/%d0%be%d0%b1%d0%bd%d0%be%d0%b2%d0%bb%d0%b5%d0%bd%d1%8b-%d1%81%d0%ba%d1%80%d0%b8%d0%bf%d1%82%d1%8b-vkontakte-scripts/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>API «ВКонтакте»: разработка iFrame-приложений</title>
		<link>http://xinit.ru/blog/api-%c2%ab%d0%b2%d0%ba%d0%be%d0%bd%d1%82%d0%b0%d0%ba%d1%82%d0%b5%c2%bb-%d1%80%d0%b0%d0%b7%d1%80%d0%b0%d0%b1%d0%be%d1%82%d0%ba%d0%b0-iframe-%d0%bf%d1%80%d0%b8%d0%bb%d0%be%d0%b6%d0%b5%d0%bd%d0%b8%d0%b9</link>
		<comments>http://xinit.ru/blog/api-%c2%ab%d0%b2%d0%ba%d0%be%d0%bd%d1%82%d0%b0%d0%ba%d1%82%d0%b5%c2%bb-%d1%80%d0%b0%d0%b7%d1%80%d0%b0%d0%b1%d0%be%d1%82%d0%ba%d0%b0-iframe-%d0%bf%d1%80%d0%b8%d0%bb%d0%be%d0%b6%d0%b5%d0%bd%d0%b8%d0%b9#comments</comments>
		<pubDate>Tue, 13 Apr 2010 22:11:28 +0000</pubDate>
		<dc:creator>Kolonist</dc:creator>
				<category><![CDATA[Web-разработка]]></category>
		<category><![CDATA[Программирование]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[СамоPR]]></category>

		<guid isPermaLink="false">http://xinit.ru/?p=298</guid>
		<description><![CDATA[В апрельском номере журнала PC Magazine/RE вышла статья API «ВКонтакте»: разработка iFrame-приложений, в которой подробно рассказано о разработке iFrame-приложений Вконтакте. Если Вам интересна эта тема &#8212; рекомендую, потому как там все очень подробно описано, с примерами кода. По всем вопросам, возникающим в ходе изучения статьи, обращайтесь сюда с комментариями, либо на указанный в статье email.]]></description>
			<content:encoded><![CDATA[<p>В апрельском номере журнала <strong>PC Magazine/RE</strong> вышла статья <strong><a href="http://pcmag.ru/solutions/detail.php?ID=39385">API «ВКонтакте»: разработка iFrame-приложений</a></strong>, в которой подробно рассказано о разработке iFrame-приложений Вконтакте. Если Вам интересна эта тема &#8212; рекомендую, потому как там все очень подробно описано, с примерами кода.</p>
<p>По всем вопросам, возникающим в ходе изучения статьи, обращайтесь сюда с комментариями, либо на указанный в статье email.</p>
]]></content:encoded>
			<wfw:commentRss>http://xinit.ru/blog/api-%c2%ab%d0%b2%d0%ba%d0%be%d0%bd%d1%82%d0%b0%d0%ba%d1%82%d0%b5%c2%bb-%d1%80%d0%b0%d0%b7%d1%80%d0%b0%d0%b1%d0%be%d1%82%d0%ba%d0%b0-iframe-%d0%bf%d1%80%d0%b8%d0%bb%d0%be%d0%b6%d0%b5%d0%bd%d0%b8%d0%b9/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Вспомнить всё. Open your mind</title>
		<link>http://xinit.ru/blog/%d0%b2%d1%81%d0%bf%d0%be%d0%bc%d0%bd%d0%b8%d1%82%d1%8c-%d0%b2%d1%81%d1%91-open-your-mind</link>
		<comments>http://xinit.ru/blog/%d0%b2%d1%81%d0%bf%d0%be%d0%bc%d0%bd%d0%b8%d1%82%d1%8c-%d0%b2%d1%81%d1%91-open-your-mind#comments</comments>
		<pubDate>Wed, 24 Mar 2010 11:54:06 +0000</pubDate>
		<dc:creator>Kolonist</dc:creator>
				<category><![CDATA[Юмор]]></category>

		<guid isPermaLink="false">http://xinit.ru/?p=293</guid>
		<description><![CDATA[Просто не мог не разместить этот анимированный гиф у себя. Смотрите под спойлером. Нажмите, чтобы посмотреть изображение&#160;]]></description>
			<content:encoded><![CDATA[<p>Просто не мог не разместить этот анимированный гиф у себя. Смотрите под спойлером.</p>
<div style="border-left:#c3cbd1 1px solid;padding:0px;width:95%;margin:10px auto;">
<div style="background:#e9e9e6; border: #c3cbd1 1px solid;padding:2px;cursor:pointer;font-size:12px" onclick="spoiler_toggle(this);"><img style="margin:0px 3px;" src="http://xinit.ru/wp-includes/images/icon_plus.gif" alt="" width="9" height="9"/><span>Нажмите, чтобы посмотреть изображение&nbsp;</span></div>
<div style="display:none;background:#f5f5f5;border:#c3cbd1 1px solid;border-top:0;padding:2px;">
<img src="http://pub.xinit.ru/share/fun/remember_all.gif" alt="Open your mind..." />
</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://xinit.ru/blog/%d0%b2%d1%81%d0%bf%d0%be%d0%bc%d0%bd%d0%b8%d1%82%d1%8c-%d0%b2%d1%81%d1%91-open-your-mind/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Работа с cookie на JavaScript</title>
		<link>http://xinit.ru/blog/%d1%80%d0%b0%d0%b1%d0%be%d1%82%d0%b0-%d1%81-cookie-%d0%bd%d0%b0-javascript</link>
		<comments>http://xinit.ru/blog/%d1%80%d0%b0%d0%b1%d0%be%d1%82%d0%b0-%d1%81-cookie-%d0%bd%d0%b0-javascript#comments</comments>
		<pubDate>Sat, 23 Jan 2010 22:26:53 +0000</pubDate>
		<dc:creator>Kolonist</dc:creator>
				<category><![CDATA[Web-разработка]]></category>
		<category><![CDATA[Программирование]]></category>
		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://xinit.ru/?p=276</guid>
		<description><![CDATA[Довольно часто, при разработке приложений на JavaScript нужно что-то записывать или читать из cookie. И вот в чем проблема &#8212; JavaScript и DOM HTML не имеют вменяемых методов для работы с cookies! В этой статье я покажу пусть и очень простые, но так необходимые PHP-like функции для работы с куками на JavaScript. Функции сделаны похожими [...]]]></description>
			<content:encoded><![CDATA[<p>Довольно часто, при разработке приложений на JavaScript нужно что-то записывать или читать из cookie. И вот в чем проблема &#8212; JavaScript и DOM HTML не имеют вменяемых методов для работы с cookies! В этой статье я покажу пусть и очень простые, но так необходимые PHP-like функции для работы с куками на JavaScript.</p>
<p><span id="more-276"></span></p>
<p>Функции сделаны похожими на PHP-шные. В принципе, все они давно описаны, однако до сих пор работа с cookies в JavaScript может поставить в затруднительное положение начинающих JavaScript-программистов.</p>
<h4>Получение cookie</h4>
<p>Функция принимает один параметр &#8212; имя переменной, которую нужно считать из куки. Возвращает значение переменной, или null, если cookie с таким именем не установлена.</p>
<p>В принципе, можно было бы использовать регулярные выражения вместо циклов, немного оптимизировать цикл, и функция получилась бы куда более лаконичной. Однако, тут вы можете лучше понять, что происходит при чтении переменной из куки.</p>
<pre name="code" class="js">
/**
 * Get cookie.
 *
 * @param String name Name of cookie variable to get.
 * @return String Value of the variable we get.
 */
function getcookie(name) {

    //get all variables stored in the cookie
    var aCookie = document.cookie.split(';');

    //search variable we need
    for (var i = 0; i < aCookie.length; i++) {

        //remove spaces
        while(aCookie[i][0] == ' ') {
            aCookie[i] = aCookie[i].substr(1);
        }

        //get array [name, value]
        var aCrumb = aCookie[i].split('=');

        //if name is the same we are looking for, then return it
        if (name == aCrumb[0]) {
            return unescape(aCrumb[1]);
        }
    }

    //no variable with given name found
    return null;
}
</pre>
<h4>Установка cookie</h4>
<p>Функция аналогична одноименной PHP-шной, за исключением отсутствия последнего параметра.</p>
<pre name="code" class="js">
/**
 * Set cookie with given name and value.
 *
 * @param String name Name of cookie variable.
 * @param String value Value of variable.
 * @param String expires Number of seconds cookie will be alive.
 * @param String path Server path to reduce visibility scope.
 * @param String domain Domain name for cookie.
 * @param String secure Secure.
 */
function setcookie(name, value, expires, path, domain, secure) {

    //define expires time
    var today = new Date();
    var expires_date = new Date(today.getTime() + (expires * 1000));

    //set cookie
    document.cookie =
            name + '=' + escape(value) +
            (expires ? ';expires=' + expires_date.toUTCString() : '') +
            (path    ? ';path=' + path : '' ) +
            (domain  ? ';domain=' + domain : '' ) +
            (secure  ? ';secure' : '' );
}
</pre>
<h4>Удаление cookie</h4>
<p>В принципе, для удаления cookies используется функция <em>setcookie()</em>, со всеми параметрами<br />
ранее установленной cookie, но с истекшим временем жизни. Эта функция сделана лишь для сокращения записи.</p>
<pre name="code" class="js">
/**
 * Delete cookie. Use exactly the same parameters you used while cookie
 * creation.
 *
 * @param String name Name of cookie variable.
 * @param String path Server path.
 * @param String domain Domain name for cookie.
 */
function deletecookie(name, path, domain) {

    //make cookie expire 1 second ago
    setcookie(name, '', -1, path, domain);
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://xinit.ru/blog/%d1%80%d0%b0%d0%b1%d0%be%d1%82%d0%b0-%d1%81-cookie-%d0%bd%d0%b0-javascript/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Скрипт-обертка для использования JavaScript API Вконтакте</title>
		<link>http://xinit.ru/blog/%d1%81%d0%ba%d1%80%d0%b8%d0%bf%d1%82-%d0%be%d0%b1%d0%b5%d1%80%d1%82%d0%ba%d0%b0-%d0%b4%d0%bb%d1%8f-%d0%b8%d1%81%d0%bf%d0%be%d0%bb%d1%8c%d0%b7%d0%be%d0%b2%d0%b0%d0%bd%d0%b8%d1%8f-javascript-api-%d0%b2</link>
		<comments>http://xinit.ru/blog/%d1%81%d0%ba%d1%80%d0%b8%d0%bf%d1%82-%d0%be%d0%b1%d0%b5%d1%80%d1%82%d0%ba%d0%b0-%d0%b4%d0%bb%d1%8f-%d0%b8%d1%81%d0%bf%d0%be%d0%bb%d1%8c%d0%b7%d0%be%d0%b2%d0%b0%d0%bd%d0%b8%d1%8f-javascript-api-%d0%b2#comments</comments>
		<pubDate>Sun, 17 Jan 2010 20:17:37 +0000</pubDate>
		<dc:creator>Kolonist</dc:creator>
				<category><![CDATA[Web-разработка]]></category>
		<category><![CDATA[Решения и продукты]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[solutions]]></category>

		<guid isPermaLink="false">http://xinit.ru/?p=270</guid>
		<description><![CDATA[На сайте размещен скрипт Vkontakte JavaScript API wrapper. Vkontakte JavaScript API wrapper предназначен для того, чтобы упростить разработку iframe-приложений для сайта Вконтакте, использующих Вконтакте API. Это JavaScript-файл, который вам надо подключить к странице, чтобы использовать Вконтакте API. При этом, не нужно задумываться над вычислением параметра sig, над формированием URL для вызова метода API, над реализацией [...]]]></description>
			<content:encoded><![CDATA[<p>На сайте размещен скрипт <a href="http://xinit.ru/solutions/vkontakte-javascript-api-wrapper" title="Перейти на страницу описания приложения"><strong>Vkontakte JavaScript API wrapper</strong></a>.</p>
<p><strong>Vkontakte JavaScript API wrapper</strong> предназначен для того, чтобы упростить разработку iframe-приложений для сайта Вконтакте, использующих Вконтакте API. Это JavaScript-файл, который вам надо подключить к странице, чтобы использовать Вконтакте API. При этом, не нужно задумываться над вычислением параметра sig, над формированием URL для вызова метода API, над реализацией кроссдоменных запросов на основе технологии JSONP, над получением параметров приложения, передаваемых ему через строку запроса &#8212; все это делается автоматически!</p>
]]></content:encoded>
			<wfw:commentRss>http://xinit.ru/blog/%d1%81%d0%ba%d1%80%d0%b8%d0%bf%d1%82-%d0%be%d0%b1%d0%b5%d1%80%d1%82%d0%ba%d0%b0-%d0%b4%d0%bb%d1%8f-%d0%b8%d1%81%d0%bf%d0%be%d0%bb%d1%8c%d0%b7%d0%be%d0%b2%d0%b0%d0%bd%d0%b8%d1%8f-javascript-api-%d0%b2/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Обновились скрипты Vkontakte Scripts</title>
		<link>http://xinit.ru/blog/%d0%be%d0%b1%d0%bd%d0%be%d0%b2%d0%b8%d0%bb%d0%b8%d1%81%d1%8c-%d1%81%d0%ba%d1%80%d0%b8%d0%bf%d1%82%d1%8b-vkontakte-scripts-2009-11-29</link>
		<comments>http://xinit.ru/blog/%d0%be%d0%b1%d0%bd%d0%be%d0%b2%d0%b8%d0%bb%d0%b8%d1%81%d1%8c-%d1%81%d0%ba%d1%80%d0%b8%d0%bf%d1%82%d1%8b-vkontakte-scripts-2009-11-29#comments</comments>
		<pubDate>Mon, 30 Nov 2009 22:23:21 +0000</pubDate>
		<dc:creator>Kolonist</dc:creator>
				<category><![CDATA[Новости сайта]]></category>
		<category><![CDATA[Решения и продукты]]></category>
		<category><![CDATA[Greasemonkey]]></category>
		<category><![CDATA[solutions]]></category>
		<category><![CDATA[vkontakte_scripts]]></category>

		<guid isPermaLink="false">http://xinit.ru/?p=230</guid>
		<description><![CDATA[Обновились скрипты для получения информации о пользователях сайта В контакте Vkontakte Scripts. В новой версии скриптов значительно доработан пользовательский интерфейс. В частности, теперь не нужно ждать полной загрузки страницы для того, чтобы получить ссылку на видео или аудио-файл &#8212; достаточно просто навести курсор на видео-плеер или кнопку воспроизведения аудио-файлов. Кроме того, значительно изменилась полная версия [...]]]></description>
			<content:encoded><![CDATA[<p>Обновились скрипты для получения информации о пользователях сайта <a href="http://vk.com/" title="Перейти к сервису &laquo;В контакте&raquo;" rel="nofollow">В контакте</a> <a href="http://xinit.ru/solutions/vkontakte-scripts" title="Перейти к странице описания и загрузки скриптов &laquo;Vkontakte Scripts&raquo;">Vkontakte Scripts</a>.</p>
<p><span id="more-230"></span></p>
<p>В новой версии скриптов значительно доработан пользовательский интерфейс. В частности, теперь не нужно ждать полной загрузки страницы для того, чтобы получить ссылку на видео или аудио-файл &#8212; достаточно просто навести курсор на видео-плеер или кнопку воспроизведения аудио-файлов.</p>
<p>Кроме того, значительно изменилась полная версия скрипта для добывания информации о пользователях. Теперь все ссылки открываются в домене <em>vk.com</em>, добавлены ссылки для просмотра видеофайлов, на которых отмечен пользователь, во время ожидания данных сервера, теперь отображается индикатор загрузки, при возникновении ошибок, они теперь отображаются пользователю, а дополнительная информация с Userapi теперь доступна и на странице пользователя, а не только на странице поиска.</p>
<p>Также исправлены некоторые ошибки.</p>
<p>Внимание! Изменения не коснулись версии <em>light</em>.</p>
<p>Всем пользователям полной версии скрипта необходимо обратиться к разработчику одним из указанных в файле <strong>support.txt</strong> способов для получения новой версии.</p>
<p><a href="http://xinit.ru/solutions/vkontakte-scripts" title="Перейти к странице описания и скачивания скриптов &laquo;Vkontakte Scripts&raquo;">Перейти к странице Vkontakte Scripts</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://xinit.ru/blog/%d0%be%d0%b1%d0%bd%d0%be%d0%b2%d0%b8%d0%bb%d0%b8%d1%81%d1%8c-%d1%81%d0%ba%d1%80%d0%b8%d0%bf%d1%82%d1%8b-vkontakte-scripts-2009-11-29/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Отправка СМС-сообщений через Интернет</title>
		<link>http://xinit.ru/blog/%d0%be%d1%82%d0%bf%d1%80%d0%b0%d0%b2%d0%ba%d0%b0-%d1%81%d0%bc%d1%81-%d1%81%d0%be%d0%be%d0%b1%d1%89%d0%b5%d0%bd%d0%b8%d0%b9-%d1%87%d0%b5%d1%80%d0%b5%d0%b7-%d0%b8%d0%bd%d1%82%d0%b5%d1%80%d0%bd%d0%b5</link>
		<comments>http://xinit.ru/blog/%d0%be%d1%82%d0%bf%d1%80%d0%b0%d0%b2%d0%ba%d0%b0-%d1%81%d0%bc%d1%81-%d1%81%d0%be%d0%be%d0%b1%d1%89%d0%b5%d0%bd%d0%b8%d0%b9-%d1%87%d0%b5%d1%80%d0%b5%d0%b7-%d0%b8%d0%bd%d1%82%d0%b5%d1%80%d0%bd%d0%b5#comments</comments>
		<pubDate>Sat, 17 Oct 2009 09:17:15 +0000</pubDate>
		<dc:creator>Kolonist</dc:creator>
				<category><![CDATA[Web-разработка]]></category>
		<category><![CDATA[Решения и продукты]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[solutions]]></category>
		<category><![CDATA[Интернет]]></category>

		<guid isPermaLink="false">http://kolonist.ru/?p=204</guid>
		<description><![CDATA[Теперь PHP-класс для бесплатной отправки СМС-сообщений через Интернет доступен на странице продуктов. Кроме того, обновилась его версия до 2.1. В принципе, обновления не повлияли на работоспособность скрипта &#8212; просто удален избыточный код, так что обновляйте по желанию.]]></description>
			<content:encoded><![CDATA[<p>Теперь PHP-класс для бесплатной отправки СМС-сообщений через Интернет доступен на <a href="http://xinit.ru/solutions/yasms" title="Перейти к описанию класса yasms">странице продуктов</a>. Кроме того, обновилась его версия до 2.1. В принципе, обновления не повлияли на работоспособность скрипта &#8212; просто удален избыточный код, так что обновляйте по желанию.</p>
]]></content:encoded>
			<wfw:commentRss>http://xinit.ru/blog/%d0%be%d1%82%d0%bf%d1%80%d0%b0%d0%b2%d0%ba%d0%b0-%d1%81%d0%bc%d1%81-%d1%81%d0%be%d0%be%d0%b1%d1%89%d0%b5%d0%bd%d0%b8%d0%b9-%d1%87%d0%b5%d1%80%d0%b5%d0%b7-%d0%b8%d0%bd%d1%82%d0%b5%d1%80%d0%bd%d0%b5/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Отправляем SMS с сайта на PHP</title>
		<link>http://xinit.ru/blog/%d0%be%d1%82%d0%bf%d1%80%d0%b0%d0%b2%d0%bb%d1%8f%d0%b5%d0%bc-sms-%d1%81-%d1%81%d0%b0%d0%b9%d1%82%d0%b0-%d0%bd%d0%b0-php</link>
		<comments>http://xinit.ru/blog/%d0%be%d1%82%d0%bf%d1%80%d0%b0%d0%b2%d0%bb%d1%8f%d0%b5%d0%bc-sms-%d1%81-%d1%81%d0%b0%d0%b9%d1%82%d0%b0-%d0%bd%d0%b0-php#comments</comments>
		<pubDate>Sat, 03 Oct 2009 22:38:09 +0000</pubDate>
		<dc:creator>Kolonist</dc:creator>
				<category><![CDATA[Web-разработка]]></category>
		<category><![CDATA[Программирование]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Интернет]]></category>

		<guid isPermaLink="false">http://kolonist.ru/?p=191</guid>
		<description><![CDATA[Меня уже давно занимает одна задача &#8212; отправка SMS через Интернет. Конечно, скажите Вы, это можно сделать с сайта оператора, но, во-первых, там везде стоит CAPTCHA, так что автоматически отправлять sms не получится, а во-вторых, оператор вставляет в текст SMS свою рекламу и мой IP-адрес. Мне же хотелось бы сделать отправку SMS со своего сайта, [...]]]></description>
			<content:encoded><![CDATA[<p>Меня уже давно занимает одна задача &#8212; отправка SMS через Интернет. Конечно, скажите Вы, это можно сделать с сайта оператора, но, во-первых, там везде стоит <a href="http://ru.wikipedia.org/wiki/CAPTCHA" title="Перейти к статье Wikipedia о CAPTCHA">CAPTCHA</a>, так что автоматически отправлять sms не получится, а во-вторых, оператор вставляет в текст SMS свою рекламу и мой IP-адрес. Мне же хотелось бы сделать отправку SMS со своего сайта, в полностью автоматическом режиме &#8212; чтобы можно было, скажем, рассылать SMS-сообщения подписчикам, либо даже себе в случае каких-либо событий. Для этого, скажите Вы, тоже есть специальные сервисы, которые еще и номер отправителя подменять умеют. Но дело в том, что все эти сервисы платные, что вполне нормально, если я использую отправку SMS в бизнес-целях, но не подходит, если я на этом не зарабатываю денег.</p>
<p>И вот, наконец, задача решена! Наконец, появился сервис, который позволит автоматически бесплатно отправлять со своего сайта SMS-сообщения на любой номер.</p>
<p><span id="more-191"></span></p>
<p>Так вот, не далее, как пару дней назад, наткнулся я на программу <a href="http://altergeo.ru/radar/" title="Перейти к описанию программы Radar на официальном сайте разработчика">Radar</a>. Первое и главное назначение программы, по мнению ее разработчиков &#8212; позиционирование пользователя по IP-адресу и близлежащим WiFi-точкам доступа, но умеет программа и отправлять SMS-сообщения. SMS отправляются на номера любого оператора, без всяких CAPTCHA и, главное, совершенно бесплатно. Единственное ограничение &#8212; SMS можно отправлять не чаще, чем раз в 5 минут, но мы же не спамеры какие-нибудь, нам этого вполне достаточно.</p>
<p>Приложение отправляет SMS через Интернет, а значит, зная протокол взаимодействия, можно написать свое приложение, которое тоже будет отправлять сообщения через Интернет. Протокол на сайте программы не описан, но используя <a href="http://www.wireshark.org/" title="Перейти на официальный сайт программы Wireshark">Wireshark</a>, восстановить его не составляет труда.</p>
<p>Результатом моих изысканий стал класс на языке PHP. О простоте используемого протокола свидетельствует размер класса, вместе с комментариями на превышающий 300 строк кода. Если в кратце, то для отправки данных на сервер используются обыкновенные <a href="http://ru.wikipedia.org/wiki/HTTP" title="Перейти к статье Wikipedia о HTTP">HTTP</a>-запросы методом POST, а результат сервер возвращает в виде XML-документа. Для отправки SMS-сообщения достаточно выполнить всего два запроса: первый &#8212; для авторизации на сервера, а второй &#8212; собственно, отправка SMS.</p>
<p>Конечно, для того, чтобы отправлять SMS, надо для начала зарегистрироваться на сайте <a href="http://altergeo.ru/" title="Перейти на сайт проекта AlterGeo -- поставщика сервиса отправки сообщений">http://altergeo.ru/</a>, скачать программу &laquo;Yason&raquo; и через ее подтвердить номер своего мобильного телефона, который будет использован в качестве номера отправителя SMS-сообщений.</p>
<p>Итак, перейдем, наконец, к кодированию. Для работы с сетью я использовал функции <a href="http://ru.wikipedia.org/wiki/cURL" title="Перейти к статье Wikipedia о cURL">cURL</a>, как самое простое, но одновременно, функциональное средство.</p>
<p>Авторизация выглядит так:</p>
<pre name="code" class="php">
//инициализация библиотеки
$ch = curl_init();

//подготавливаем запрос на сервер
curl_setopt_array(
    $ch,
    array(

        //для авторизации нужно отправить запрос методом POST на этот URL
        CURLOPT_URL => 'http://altergeo.ru/apiauth/',
        CURLOPT_POST => true,

        //такие параметры нужно передать серверу
        CURLOPT_POSTFIELDS => 'version=2&#038;login='.$username.'&#038;'.
                              'pwd='.md5($pass),

        //это для того, чтобы получить ответ сервера в строку
        CURLOPT_RETURNTRANSFER => true
    )
);

//выполняем запрос
$answ = curl_exec($ch);
</pre>
<p>После выполнения этого кода, мы получим в переменной <em>$answ</em> ответ сервера. Это будет <a href="http://ru.wikipedia.org/wiki/XML" title="Перейти к статье Wikipedia о XML">XML</a>-документ типа такого:</p>
<pre name="code" class="xml">
<wi2geo>
    <error_code>0</error_code>
    <skey>9563214af874ac0a16eb6521bed8920e</skey>
<phone>79257521234</phone>
    <id>75213</id>
    <email>username@email.ru</email>
    <nick_name>Alexander Smith</nick_name>
    <first_name>Alexander</first_name>
    <last_name>Smith</last_name>
<dtb>1987-01-01</dtb>
    <sex>m</sex>
    <custom_status>Это строка статуса на сайте Altergeo</custom_status>
</wi2geo>
</pre>
<p>Главное в этом XML &#8212; содержимое тега <em>&lt;skey&gt;</em>.  Это идентификатор сессии, который понадобится нам, когда мы будем отправлять SMS. Чтобы получить это значение, используем SimpleXML:</p>
<pre name="code" class="php">
$xml = new SimpleXMLElement($answ);
</pre>
<p>Далее, приступаем, непосредственно, к отправке SMS-сообщения:</p>
<pre name="code" class="php">
curl_setopt_array(
    $ch,
    array(

        //URL для отправки сообщений уже другой
        CURLOPT_URL => 'http://altergeo.ru/apisms',
        CURLOPT_POST => true,

        //строка параметров POST для отправки SMS
        CURLOPT_POSTFIELDS => 'app_type=4&#038;os_type=4&#038;'.
                              'session_key='.$xml->skey.'&#038;'.
                              'receipient_number='.$number.'&#038;'.
                              'text='.$sms_message.'&#038;act=sendsms',

        CURLOPT_RETURNTRANSFER => true
    )
);
</pre>
<p>Далее продолжать не имеет смысла, так как все остальное очень просто. А ниже Вы можете скачать конечный результат:</p>
<ul>
<li>класс <strong>yasms</strong> на PHP <a href="http://pub.xinit.ru/solutions/net/yasms/yasms-2.1.zip" title="Скачать класс yasms.class.php" rel="nofollow">yasms-2.1.zip</a> (в архиве сам класс и пример использования).</li>
</ul>
<p>Пример использования класса <strong>yasms</strong>:</p>
<pre name="code" class="php">
    require_once 'yasms.class.php';

    $sms = new yasms('myemail@mail.ru', 'password_qwerty');
    $sms->lang = 'ru';
    $sms->send('+79207495002', 'Моя СМС-ка!');
    echo $sms->status;
</pre>
]]></content:encoded>
			<wfw:commentRss>http://xinit.ru/blog/%d0%be%d1%82%d0%bf%d1%80%d0%b0%d0%b2%d0%bb%d1%8f%d0%b5%d0%bc-sms-%d1%81-%d1%81%d0%b0%d0%b9%d1%82%d0%b0-%d0%bd%d0%b0-php/feed</wfw:commentRss>
		<slash:comments>30</slash:comments>
		</item>
		<item>
		<title>Обновились скрипты Vkontakte Scripts</title>
		<link>http://xinit.ru/blog/%d0%be%d0%b1%d0%bd%d0%be%d0%b2%d0%b8%d0%bb%d0%b8%d1%81%d1%8c-%d1%81%d0%ba%d1%80%d0%b8%d0%bf%d1%82%d1%8b-vkontakte-scripts</link>
		<comments>http://xinit.ru/blog/%d0%be%d0%b1%d0%bd%d0%be%d0%b2%d0%b8%d0%bb%d0%b8%d1%81%d1%8c-%d1%81%d0%ba%d1%80%d0%b8%d0%bf%d1%82%d1%8b-vkontakte-scripts#comments</comments>
		<pubDate>Sun, 20 Sep 2009 09:25:27 +0000</pubDate>
		<dc:creator>Kolonist</dc:creator>
				<category><![CDATA[Новости сайта]]></category>
		<category><![CDATA[Решения и продукты]]></category>
		<category><![CDATA[Greasemonkey]]></category>
		<category><![CDATA[solutions]]></category>
		<category><![CDATA[vkontakte_scripts]]></category>

		<guid isPermaLink="false">http://kolonist.ru/?p=186</guid>
		<description><![CDATA[В связи с очередным обновлением сервиса социальных сетей В контакте, обновились и скрипты для получения информации о пользователях Vkontakte Scripts. В новой версии скриптов исправлена ошибка, приводившая к невозможности скачать аудиофайлы в новой версии интерфейса &#171;В контакте&#187;. Также, добавлены некоторые ссылки для получения информации о пользователе к новой закрытой странице пользователя. К открытым страницам добавлены [...]]]></description>
			<content:encoded><![CDATA[<p>В связи с очередным обновлением сервиса социальных сетей <a href="http://vk.com/" title="Перейти к сервису &laquo;В контакте&raquo;" rel="nofollow">В контакте</a>, обновились и скрипты для получения информации о пользователях <a href="http://xinit.ru/solutions/vkontakte-scripts" title="Перейти к странице описания и загрузки скриптов &laquo;Vkontakte Scripts&raquo;">Vkontakte Scripts</a>.</p>
<p><span id="more-186"></span></p>
<p>В новой версии скриптов исправлена ошибка, приводившая к невозможности скачать аудиофайлы в новой версии интерфейса &laquo;В контакте&raquo;. Также, добавлены некоторые ссылки для получения информации о пользователе к новой закрытой странице пользователя. К открытым страницам добавлены ссылки для поиска имени пользователя в поисковых системах. К списку ссылок для получения информации добавлена ссылка для просмотра списка Flash-приложений &laquo;В контакте&raquo;, установленных пользователем.</p>
<p>Всем пользователям полной версии скрипта необходимо обратиться к разработчику одним из указанных в файле <strong>support.txt</strong> способов для получения новой версии.</p>
<p><a href="http://xinit.ru/solutions/vkontakte-scripts" title="Перейти к странице описания и скачивания скриптов &laquo;Vkontakte Scripts&raquo;">Перейти к странице Vkontakte Scripts</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://xinit.ru/blog/%d0%be%d0%b1%d0%bd%d0%be%d0%b2%d0%b8%d0%bb%d0%b8%d1%81%d1%8c-%d1%81%d0%ba%d1%80%d0%b8%d0%bf%d1%82%d1%8b-vkontakte-scripts/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Сервис, показывающий IP-адрес и заголовки HTTP-запроса</title>
		<link>http://xinit.ru/blog/%d1%81%d0%b5%d1%80%d0%b2%d0%b8%d1%81-%d0%bf%d0%be%d0%ba%d0%b0%d0%b7%d1%8b%d0%b2%d0%b0%d1%8e%d1%89%d0%b8%d0%b9-ip-%d0%b0%d0%b4%d1%80%d0%b5%d1%81-%d0%b8-%d0%b7%d0%b0%d0%b3%d0%be%d0%bb%d0%be%d0%b2%d0%ba</link>
		<comments>http://xinit.ru/blog/%d1%81%d0%b5%d1%80%d0%b2%d0%b8%d1%81-%d0%bf%d0%be%d0%ba%d0%b0%d0%b7%d1%8b%d0%b2%d0%b0%d1%8e%d1%89%d0%b8%d0%b9-ip-%d0%b0%d0%b4%d1%80%d0%b5%d1%81-%d0%b8-%d0%b7%d0%b0%d0%b3%d0%be%d0%bb%d0%be%d0%b2%d0%ba#comments</comments>
		<pubDate>Fri, 11 Sep 2009 20:35:54 +0000</pubDate>
		<dc:creator>Kolonist</dc:creator>
				<category><![CDATA[Новости сайта]]></category>
		<category><![CDATA[блог]]></category>

		<guid isPermaLink="false">http://kolonist.ru/?p=182</guid>
		<description><![CDATA[На сайте появился новый сервис, позволяющий узнать IP-адрес и другие данные о системе клиента. Сервис показывает IP-адрес, с которого вы выходите в сеть Интернет, заголовки HTTP-запроса, а также немного полученной при помощи JavaScript информации о вашей системе. Чем вам может быть полезен этот сервис? Ну, во-первых, у многих все еще вызывает затруднение проблема узнать собственный [...]]]></description>
			<content:encoded><![CDATA[<p>На сайте появился <a href="http://xinit.ru/anonym/" title="Перейти к сервису определения IP-адреса">новый сервис</a>, позволяющий узнать IP-адрес и другие данные о системе клиента.</p>
<p>Сервис показывает IP-адрес, с которого вы выходите в сеть Интернет, заголовки HTTP-запроса, а также немного полученной при помощи <a href="http://ru.wikipedia.org/wiki/JavaScript" title="перейти к статье Wikipedia о JavaScript">JavaScript</a> информации о вашей системе.</p>
<p><span id="more-182"></span></p>
<p>Чем вам может быть полезен этот сервис? Ну, во-первых, у многих все еще вызывает затруднение проблема узнать собственный IP-адрес. Во-вторых, данный сервис, в отличие от многих подобных, показывает Вам все заголовки HTTP-запроса, посылаемого вашим браузером.</p>
<p>Вы можете использовать сервис, например, для того, чтобы проверить анонимность прокси-сервера &#8212; например, посмотреть, не отсылает ли ваш <a href="http://ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%BE%D0%BA%D1%81%D0%B8" title="перейти к статье Wikipedia о Прокси-серверах">прокси</a> заголовки <strong>X-Real-IP</strong> или <strong>X-Forwarded-For</strong>.</p>
<p>Кстати, еще в процессе разработки и тестирования программы, я обнаружил, что <em>Firefox</em>, при использовании расширения <a href="https://addons.mozilla.org/ru/firefox/addon/967" title="Перейти к странице описания и установки расширения Modify Headers">Modify Headers</a> не дает надежной защиты заголовка <strong>User-Agent</strong>, а новая версия браузера <em>Opera</em> в режиме <em>Turbo</em>, передает ваш реальный IP-адрес в заголовке <strong>X-Forwarded-For</strong>.</p>
]]></content:encoded>
			<wfw:commentRss>http://xinit.ru/blog/%d1%81%d0%b5%d1%80%d0%b2%d0%b8%d1%81-%d0%bf%d0%be%d0%ba%d0%b0%d0%b7%d1%8b%d0%b2%d0%b0%d1%8e%d1%89%d0%b8%d0%b9-ip-%d0%b0%d0%b4%d1%80%d0%b5%d1%81-%d0%b8-%d0%b7%d0%b0%d0%b3%d0%be%d0%bb%d0%be%d0%b2%d0%ba/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
