<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.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/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Записки маленького юниксоида</title>
	
	<link>http://wiz.su</link>
	<description>Вобщемто не блог, а сборник полезных статей</description>
	<lastBuildDate>Wed, 31 Mar 2010 09:38:49 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9</generator>
	<language>en</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/feedwiz" /><feedburner:info uri="feedwiz" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Пользуемся Dropbox</title>
		<link>http://feedproxy.google.com/~r/feedwiz/~3/oDcvdi5szCg/</link>
		<comments>http://wiz.su/2010/03/31/polzuemsya-dropbox/#comments</comments>
		<pubDate>Wed, 31 Mar 2010 09:38:49 +0000</pubDate>
		<dc:creator>wizard</dc:creator>
				<category><![CDATA[Запись]]></category>
		<category><![CDATA[Dropbox]]></category>
		<category><![CDATA[полезное]]></category>
		<category><![CDATA[сервисы]]></category>
		<category><![CDATA[советы]]></category>

		<guid isPermaLink="false">http://wiz.su/?p=937</guid>
		<description><![CDATA[ Думаю, что многие читатели этого блога знают замечательный сервисDropbox.com, который предлагается своим пользователям несколько гигабайт дискового пространства бесплатно для хранения файлов. Прелесть этого предложения, однако, далеко не в довольно банальном дисковом пространстве — в конце концов, сервисов хранения файлов масса, да и организовать такой личный сервис на собственном аккаунте на платном хостинге тоже несложно. [...]]]></description>
			<content:encoded><![CDATA[<p><noindex><a rel="nofollow" title="https://www.dropbox.com/referrals/NTI4ODk3MTY5" href="http://wiz.su/go/aHR0cHM6Ly93d3cuZHJvcGJveC5jb20vcmVmZXJyYWxzL05USTRPRGszTVRZNQ==" target="_blank"><img style="margin: 5px;" src="https://www.dropbox.com/static/10463/images/logo.png" alt="logo.png" width="231" height="60" align="left" /></a></noindex> Думаю, что многие читатели этого блога знают замечательный сервис<noindex><a rel="nofollow" title="https://www.dropbox.com/referrals/NTI4ODk3MTY5" href="http://wiz.su/go/aHR0cHM6Ly93d3cuZHJvcGJveC5jb20vcmVmZXJyYWxzL05USTRPRGszTVRZNQ==" target="_blank">Dropbox.com</a></noindex>, который предлагается своим пользователям несколько гигабайт дискового пространства бесплатно для хранения файлов. Прелесть этого предложения, однако, далеко не в довольно банальном дисковом пространстве — в конце концов, сервисов хранения файлов масса, да и организовать такой личный сервис на собственном аккаунте на платном хостинге тоже несложно. Нет, ключевая особенность сервиса Dropbox — тесная интеграция с компьютерами пользователя. После регистрации на сервисе пользователю предлагается установить небольшую утилиту, которая создает на компьютере пользователя выделенную папку, размером соответствующую аккаунту на сервисе, и после этого эта папка начинает постоянно синхронизировать свое содержимое. Синхронизация абсолютно незаметная и не требующая к себе внимания — все, что надо сделать пользователю, это скопировать файл в эту папку и через несколько секунд утилита начнет загрузку файла на сервис.</p>
<p><span id="more-937"></span></p>
<p>Замечательно также то, что буквально через несколько секунд после того, как другой ваш компьютер, подключенный к этому же аккаунту, окажется в онлайне, утилита, установленная на нем, проверит состояние синхронизации и скачает то, чего не хватает.</p>
<p>Я сначала пользовался этим сервисом очень примитивно — мы загружаем туда свои дорожки, записанные во время Радио-Т, поскольку сервис не только удобный, но и очень быстрый. Потом очередная версия другой прекрасной программы — 1Password, — которая организовывает хранение и заведение паролей в MacOS, вышла с инструкцией по хранению своей базы на Dropbox и это оказалось очень удобно — через пару минут максимум после регистрации на очередном сервисе и добавления этой информации в базу программы я могу логиниться в этот сервис с любого своего компьютера.</p>
<p>А потом вдруг стало понятно, что есть более простой способ. Вчера я готовил презентацию и стал ее сохранять не в папку «Документы», как обычно, а в папку «Dropbox/Private/Presentations» — и через пару секунд после ее сохранения на рабочем компьютере я могу продолжить ее редактирование на ноутбуке. Текст о своем рабочем месте для Lifehacker.ru я писал несколько дней, когда было свободное время, и файл с текстом хранился на Dropbox — и я его писал с того компьютера, пользоваться которым было удобно в конкретный момент времени.</p>
<p>Важно — файлы действительно находятся локально у вас на компьютерах. То есть положив презентацию в папку, вы не просто кладете ее куда то, откуда всегда сможете ее достать при наличии доступа в интернет — нет, она будет продолжать храниться локально на всех ваших компьютерах и ее не придется доставать.</p>
<p>А пишу я это все потому, что сервис, предлагая на старте 2 гигабайта места в бесплатном варианте (в платном его можно расширить до 50 или 100 гигабайт), дает возможность расширить это место за счет приглашения других пользователей. Каждый, кто зарегистрируется по <noindex><a rel="nofollow" title="https://www.dropbox.com/referrals/NTI4ODk3MTY5" href="http://wiz.su/go/aHR0cHM6Ly93d3cuZHJvcGJveC5jb20vcmVmZXJyYWxzL05USTRPRGszTVRZNQ==" target="_blank">моей ссылке</a></noindex>, не только получит все прекрасные возможности, но и увеличит доступное мне пространство на 250 мегабайт, пока не наберется 10 гигабайт (хотя я уже подумываю о покупке платного аккаунта, но при использовании 10% доступного сейчас места это просто бессмысленно). Так что вам приятно, а мне полезно:). А потом и вам будет полезно, когда привыкнете хранить необходимые файлы в специальной папке и не бегать с флешками. Кстати, последние версии утилиты поддерживают синхронизацию по локальной сети, что удобно при хранении больших файлов. А еще есть версия клиента для iPhone, так что файлы станут доступны даже тогда, когда никакого компьютера и нет. А еще любой файл вы можете сделать доступным другим — достаточно просто положить его в раздел Public и дать ссылку на него.</p>
<p>В общем, пользуйтесь <noindex><a rel="nofollow" title="https://www.dropbox.com/referrals/NTI4ODk3MTY5" href="http://wiz.su/go/aHR0cHM6Ly93d3cuZHJvcGJveC5jb20vcmVmZXJyYWxzL05USTRPRGszTVRZNQ==" target="_blank">прекрасным сервисом</a></noindex> и находите новые способы лучше организовать свою работу с его помощью.</p>

<p><a href="http://feedads.g.doubleclick.net/~a/2uijxm0mLv89m966APseRINdSD4/0/da"><img src="http://feedads.g.doubleclick.net/~a/2uijxm0mLv89m966APseRINdSD4/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/2uijxm0mLv89m966APseRINdSD4/1/da"><img src="http://feedads.g.doubleclick.net/~a/2uijxm0mLv89m966APseRINdSD4/1/di" border="0" ismap="true"></img></a></p>]]></content:encoded>
			<wfw:commentRss>http://wiz.su/2010/03/31/polzuemsya-dropbox/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://wiz.su/2010/03/31/polzuemsya-dropbox/</feedburner:origLink></item>
		<item>
		<title>Django multiple database support — теперь поддерживает множественные соединения с базами даны</title>
		<link>http://feedproxy.google.com/~r/feedwiz/~3/VPi9p4k1G_g/</link>
		<comments>http://wiz.su/2009/12/23/django-multiple-database-support-teper-podderzhivaet-mnozhestvennyie-soedineniya-s-bazami-danyi/#comments</comments>
		<pubDate>Wed, 23 Dec 2009 08:39:27 +0000</pubDate>
		<dc:creator>wizard</dc:creator>
				<category><![CDATA[Новости]]></category>
		<category><![CDATA[django]]></category>
		<category><![CDATA[multidb]]></category>

		<guid isPermaLink="false">http://wiz.su/?p=935</guid>
		<description><![CDATA[Весь твиттер буквально кипит от это новости – django теперь поддерживает множественные соединения с базами данных. Фича влита в транк и описана в документации.
В документации (по ссылке выше) описан процесс настройки и использования нескольких баз данных в джанго:

# in settings.py:
DATABASES = {
'default': {
'NAME': 'app_data',
'BACKEND': 'django.db.backends.postgres_psycopg2',
'USER': 'postgres_user',
'PASSWORD': 's3krit'
},
'users': {
'NAME': 'user_data'
'BACKEND': 'django.db.backends.mysql',
'USER': 'mysql_user',
'PASSWORD': 'priv4te'
}
}
# in model lookups:
Author.objects.using('default').all()
# using(&#8216;default&#8217;) — [...]]]></description>
			<content:encoded><![CDATA[<p>Весь твиттер буквально кипит от это новости – django теперь поддерживает множественные соединения с базами данных. Фича <noindex><a rel="nofollow" title="http://s3.amazonaws.com/bycoffe.baconfile.com/multidb.diff.txt" target="_blank" href="http://wiz.su/go/aHR0cDovL3MzLmFtYXpvbmF3cy5jb20vYnljb2ZmZS5iYWNvbmZpbGUuY29tL211bHRpZGIuZGlmZi50eHQ=">влита в транк</a></noindex> и <noindex><a rel="nofollow" title="http://docs.djangoproject.com/en/dev/topics/db/multi-db/#topics-db-multi-db" target="_blank" href="http://wiz.su/go/aHR0cDovL2RvY3MuZGphbmdvcHJvamVjdC5jb20vZW4vZGV2L3RvcGljcy9kYi9tdWx0aS1kYi8jdG9waWNzLWRiLW11bHRpLWRi">описана в документации</a></noindex>.</p>
<p>В документации (по ссылке выше) описан процесс настройки и использования нескольких баз данных в джанго:</p>
<p><a name="habracut"></a><span id="more-935"></span><br />
# in settings.py:</p>
<p><code>DATABASES = {</p>
<p>'default': {</p>
<p>'NAME': 'app_data',</p>
<p>'BACKEND': 'django.db.backends.postgres_psycopg2',</p>
<p>'USER': 'postgres_user',</p>
<p>'PASSWORD': 's3krit'</p>
<p>},</p>
<p>'users': {</p>
<p>'NAME': 'user_data'</p>
<p>'BACKEND': 'django.db.backends.mysql',</p>
<p>'USER': 'mysql_user',</p>
<p>'PASSWORD': 'priv4te'</p>
<p>}</p>
<p>}</code></p>
<p># in model lookups:</p>
<p><code>Author.objects.using('default').all()</code></p>
<p># using(&#8216;default&#8217;) — явное указание БД для запроса. Если не указывать будет браться default</p>
<p>Подробней смотрите в документации! Поздравляю всех с этой новой фичей, мы давно ждали такой функциональности. Ура!</p>

<p><a href="http://feedads.g.doubleclick.net/~a/TXutijevBLtVZ_UO95zsdVnlHpM/0/da"><img src="http://feedads.g.doubleclick.net/~a/TXutijevBLtVZ_UO95zsdVnlHpM/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/TXutijevBLtVZ_UO95zsdVnlHpM/1/da"><img src="http://feedads.g.doubleclick.net/~a/TXutijevBLtVZ_UO95zsdVnlHpM/1/di" border="0" ismap="true"></img></a></p>]]></content:encoded>
			<wfw:commentRss>http://wiz.su/2009/12/23/django-multiple-database-support-teper-podderzhivaet-mnozhestvennyie-soedineniya-s-bazami-danyi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://wiz.su/2009/12/23/django-multiple-database-support-teper-podderzhivaet-mnozhestvennyie-soedineniya-s-bazami-danyi/</feedburner:origLink></item>
		<item>
		<title>Безопасный способ передачи информации с одного домена на другой</title>
		<link>http://feedproxy.google.com/~r/feedwiz/~3/K_SPtzTpTcU/</link>
		<comments>http://wiz.su/2009/12/20/bezopasnyiy-sposob-peredachi-informatsii-s-odnogo-domena-na-drugoy/#comments</comments>
		<pubDate>Sat, 19 Dec 2009 20:52:34 +0000</pubDate>
		<dc:creator>wizard</dc:creator>
				<category><![CDATA[Новости]]></category>
		<category><![CDATA[crossdomain]]></category>
		<category><![CDATA[domain]]></category>
		<category><![CDATA[iframe]]></category>

		<guid isPermaLink="false">http://wiz.su/?p=931</guid>
		<description><![CDATA[Как известно, при работе с фреймами для обеспечения безопасности браузеры не позволяют Javascript-коду обращаться со страницы одного домена на страницу другого домена. В этой краткой статье мы рассмотрим аспекты кросс-доменной работы в Javascript, опишем один из «хороших» частных случаев, а в конце — я надеюсь в хабракомментах получить ответы на оставшиеся вопросы.

Пример запрещенной операции
Например, у [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft" title="turma.jpg" src="http://forum.dklab.ru/images/turma.jpg" alt="" width="300" height="225" />Как известно, при работе с фреймами для обеспечения безопасности браузеры не позволяют Javascript-коду обращаться со страницы одного домена на страницу другого домена. В этой краткой статье мы рассмотрим аспекты кросс-доменной работы в Javascript, опишем один из «хороших» частных случаев, а в конце — я надеюсь в хабракомментах получить ответы на оставшиеся вопросы.<br />
<a name="habracut"></a></p>
<h2>Пример запрещенной операции</h2>
<p>Например, у нас есть вот такая конструкция:</p>
<p><strong>Страница master.com/index.html:</strong></p>
<pre>...
&lt;iframe src="http://slave.com/frame.html"&gt;&lt;/iframe&gt;
какой угодно JS, который мы пишем сами
...</pre>
<p><span id="more-931"></span><br />
<strong>Страница slave.com/frame.html:</strong></p>
<pre>...
какой угодно код, полностью нам подвластный
...</pre>
<p>Не существует способа, который бы позволял JS-коду в slave.com/frame.html обратиться к данным (или запустить функцию) страницы master.com/index.html, а также наоборот.</p>
<p>Правда, из этого правила есть одно важное исключение: внутри slave.com/frame.html можно присваивать значение top.location и осуществлять, таким образом, редиректы окна верхнего уровня куда-то еще.</p>
<h2>И все-таки есть хак для прямых поддоменов</h2>
<p>Кросс-доменный обмен все же возможен, если одна страница находится на <em>прямом поддомене</em> другой. В этом случае необходимо провести следующие магические операции:</p>
<p><strong>Страница master.com/index.html:</strong></p>
<pre>...
&lt;iframe src="http://subdomain.master.com/frame.html" height="100"&gt;&lt;/iframe&gt;
&lt;script&gt;
document.domain = document.domain; // да-да, это обязательно нужно, иначе не заработает
// или можно напрямую написать: document.domain = "master.com", хотя это и не так весело
&lt;/script&gt;
...</pre>
<p><strong>Страница subdomain.master.com/frame.html:</strong></p>
<pre>...
&lt;script&gt;
document.domain = "master.com";
&lt;/script&gt;
...</pre>
<p>Т.е. мы должны в обеих страницах присвоить свойству document.domain одинаковое значение, равное «родительскому» домену. Тогда обращение внутрь (или наружу) IFRAME возможно. Еще раз подчеркиваю, что это работает только в случае, если один домен является <strong>прямым поддоменом</strong> другого (именно прямым, потому что даже abc.subdomain.master.com здесь уже не сработает).</p>
<h2>Вопрос к хабрасообществу</h2>
<p>Все-таки, очень хочется найти хоть какой-нибудь способ передачи информации изнутри IFRAME в родительскую страницу. Вот для чего это нужно:</p>
<p><strong>Страница master.com/index.html:</strong></p>
<pre>...
&lt;iframe src="http://slave.com/frame.html" height="100"&gt;&lt;/iframe&gt;
какой угодно JS, который мы пишем сами
...</pre>
<p><strong>Страница slave.com/frame.html:</strong></p>
<pre>...
какой угодно код, полностью нам подвластный
...</pre>
<p>Проблема: высота slave.com/frame.html может меняться, заведомо ее нельзя указать в height IFRAME. Требуется сделать так, чтобы на master.com/index.html крутился какой-то JS, который подгоняет высоту IFRAME под контент. Главная сложность — то, что контент находится на другом домене.</p>
<p><img src="http://forum.dklab.ru/images/e0e0e0.gif" alt="" align="right" />Есть ли какой-нибудь простой способ (без добавления серверных скриптов на master.com) передать данные из slave.com наружу, %username%? Чтобы Javascript в master.com/index.html (который, напомню, можем писать мы) имел возможность отресайзить высоту IFRAME.</p>

<p><a href="http://feedads.g.doubleclick.net/~a/nKtIZeyw6_Qg5Hc61dSvl-zcRC4/0/da"><img src="http://feedads.g.doubleclick.net/~a/nKtIZeyw6_Qg5Hc61dSvl-zcRC4/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/nKtIZeyw6_Qg5Hc61dSvl-zcRC4/1/da"><img src="http://feedads.g.doubleclick.net/~a/nKtIZeyw6_Qg5Hc61dSvl-zcRC4/1/di" border="0" ismap="true"></img></a></p>]]></content:encoded>
			<wfw:commentRss>http://wiz.su/2009/12/20/bezopasnyiy-sposob-peredachi-informatsii-s-odnogo-domena-na-drugoy/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://wiz.su/2009/12/20/bezopasnyiy-sposob-peredachi-informatsii-s-odnogo-domena-na-drugoy/</feedburner:origLink></item>
		<item>
		<title>Потоковое видео средствами ffserver &amp; ffmpeg</title>
		<link>http://feedproxy.google.com/~r/feedwiz/~3/Aw_4yaea70I/</link>
		<comments>http://wiz.su/2009/12/20/potokovoe-video-sredstvami-ffserver-ffmpeg/#comments</comments>
		<pubDate>Sat, 19 Dec 2009 20:34:48 +0000</pubDate>
		<dc:creator>wizard</dc:creator>
				<category><![CDATA[Новости]]></category>
		<category><![CDATA[ffmpeg]]></category>
		<category><![CDATA[ffserver]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[manual]]></category>
		<category><![CDATA[потоковое видео]]></category>
		<category><![CDATA[трансляция]]></category>

		<guid isPermaLink="false">http://wiz.su/?p=928</guid>
		<description><![CDATA[Для организации трансляции нам потребуется:

Linux
FFmpeg (включает в себя ffserver)

Теория
FFmpeg — это набор свободных библиотек с открытым исходным кодом, которые позволяют записывать, конвертировать и передавать цифровое аудио и видео в различных форматах. Он включает libavcodec, библиотеку кодирования и декодирования аудио и видео и libavformat, библиотеку мультиплексирования и демультиплексирования в медиаконтейнер. Название происходит от названия экспертной группы MPEG и «FF», означающего «fast forward».
© Wikipedia

ffserver идёт в комплекте с ffmpeg и выполняет роль медиа-сервера — получает видеопоток от ffmpeg, который может быть запущен на другой машине, и раздаёт его счастливым пользователям.
Каждый получаемый поток называется Feed’ом (далее будет просто фид). Таких потоков может быть [...]]]></description>
			<content:encoded><![CDATA[<h4>Для организации трансляции нам потребуется:</h4>
<ul>
<li>Linux</li>
<li>FFmpeg (включает в себя ffserver)</li>
</ul>
<h4>Теория</h4>
<blockquote><p>FFmpeg — это набор свободных библиотек с открытым исходным кодом, которые позволяют записывать, конвертировать и передавать цифровое аудио и видео в различных форматах. Он включает libavcodec, библиотеку кодирования и декодирования аудио и видео и libavformat, библиотеку мультиплексирования и демультиплексирования в медиаконтейнер. Название происходит от названия экспертной группы MPEG и «FF», означающего «fast forward».</p></blockquote>
<p><em>© Wikipedia</em><br />
<span id="more-928"></span><br />
ffserver идёт в комплекте с ffmpeg и выполняет роль медиа-сервера — получает видеопоток от ffmpeg, который может быть запущен на другой машине, и раздаёт его счастливым пользователям.<br />
Каждый получаемый поток называется Feed’ом (далее будет просто фид). Таких потоков может быть несколько, так же как и отдаваемых (выходных).<br />
FFmpeg у нас будет захватывать видео с веб-камеры или читать из файла.<br />
<a name="habracut"></a></p>
<h4>Практика</h4>
<p>Сначала настроим ffserver, чей конфиг лежит в /etc/ffserver.conf:</p>
<blockquote><p><code><span style="color: black;"></p>
<ol>
<li>Port <span style="color: #cc66cc;">8090</span></li>
<li>BindAddress 0.0.0.0</li>
<li>MaxClients <span style="color: #cc66cc;">100</span></li>
<li>MaxBandwidth <span style="color: #cc66cc;">20000</span></li>
<li>NoDaemon</li>
<li></li>
<li><span style="color: #adadad;"><em># Фид, надо запомнить feed.ffm, он нам потребуется при запуске ffmpeg</em></span></li>
<li>&lt;Feed feed.ffm&gt;</li>
<li>File /tmp/feed.ffm</li>
<li>FileMaxSize 3M</li>
<li>&lt;/Feed&gt;</li>
<li></li>
<li>&lt;Stream test.flv&gt;</li>
<li><span style="color: #adadad;"><em># Ранее объявленный фид</em></span></li>
<li>Feed feed.ffm</li>
<li>Format flv</li>
<li>VideoCodec flv</li>
<li>VideoFrameRate <span style="color: #cc66cc;">30</span></li>
<li>VideoBufferSize <span style="color: #cc66cc;">80000</span></li>
<li>VideoBitRate <span style="color: #cc66cc;">200</span></li>
<li><span style="color: #adadad;"><em># Качество видео от 1 до 31, 1 == отлично 31 == фи!</em></span></li>
<li>VideoQMin <span style="color: #cc66cc;">1</span></li>
<li>VideoQMax <span style="color: #cc66cc;">5</span></li>
<li><span style="color: #adadad;"><em># Разрешение, везде должно быть одинаково!</em></span></li>
<li>VideoSize 352x288</li>
<li>PreRoll <span style="color: #cc66cc;">1</span></li>
<li><span style="color: #adadad;"><em># Если у вас есть микрофон, или вы транслируете видео со звуком, закомментируйте эту строчку</em></span></li>
<li>Noaudio</li>
<li>&lt;/Stream&gt;</li>
<li></li>
<li><span style="color: #adadad;"><em># Флешка test.swf для просмотра трансляции</em></span></li>
<li>&lt;Stream test.swf&gt;</li>
<li>Feed feed.ffm</li>
<li><span style="color: #adadad;"><em># Будет запускаться в Adobe Flash Player</em></span></li>
<li>Format swf</li>
<li>VideoCodec flv</li>
<li>VideoFrameRate <span style="color: #cc66cc;">30</span></li>
<li>VideoBufferSize <span style="color: #cc66cc;">50000</span></li>
<li>VideoBitRate <span style="color: #cc66cc;">100</span></li>
<li>VideoQMin <span style="color: #cc66cc;">1</span></li>
<li>VideoQMax <span style="color: #cc66cc;">5</span></li>
<li><span style="color: #adadad;"><em># Разрешение, везде должно быть одинаково!</em></span></li>
<li>VideoSize 352x288</li>
<li>PreRoll</li>
<li><span style="color: #adadad;"><em># Если у вас есть микрофон, или вы транслируете видео со звуком, закомментируйте эту строчку</em></span></li>
<li>Noaudio</li>
<li>&lt;/Stream&gt;</li>
</ol>
<p></span></code></p></blockquote>
<p>Пускаем ffserver:<br />
<code><span style="color: black;">$ ffserver</span></code></p>
<p>Пускаем ffmpeg:<br />
<code><span style="color: black;">$ ffmpeg -s 352x288 -r 30 -f video4linux2 -i /dev/video0 http://localhost:8090/feed.ffm</span></code><br />
<em>-s разрешение, указанное в конфиге ffserver, -r количество кадров/секунду, -f формат, -i путь к камере (или к видео-файлу), http://localhost:PORT/FEED это адрес, где ffserver будет ждать наш поток</em></p>
<p>PS: если выдаст ошибку, то можно попробовать формат v4l (-f video4linux)</p>
<p>Открываем в браузере <noindex><a rel="nofollow" title="http://localhost:8090/test.swf" target="_blank" href="http://wiz.su/go/aHR0cDovL2xvY2FsaG9zdDo4MDkwL3Rlc3Quc3dm">http://localhost:8090/test.swf</a></noindex> и широко улыбаемся:)</p>
<p>Для отправки видео поменяем параметр -i на путь к файлу, уберём -f (ffmpeg сам определит формат файла):<br />
<code><span style="color: black;">$ ffmpeg -s 352x288 -r 30 -i ~/big_buck_bunny.ogg http://localhost:8090/feed.ffm</span></code></p>
<p>Ну а что бы вставить нашу флешку в html-страницу используем следующий код:<br />
<code><span style="color: #009900;">&lt;embed <span style="color: #000066;">src</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">"http://localhost:8090/test.swf"</span> <span style="color: #000066;">width</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">"550"</span> <span style="color: #000066;">height</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">"400"</span>&gt;&lt;<span style="color: #66cc66;">/</span>embed&gt;</span></code></p>

<p><a href="http://feedads.g.doubleclick.net/~a/PKicesK-U-ha5XHR25dKvVDUeYg/0/da"><img src="http://feedads.g.doubleclick.net/~a/PKicesK-U-ha5XHR25dKvVDUeYg/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/PKicesK-U-ha5XHR25dKvVDUeYg/1/da"><img src="http://feedads.g.doubleclick.net/~a/PKicesK-U-ha5XHR25dKvVDUeYg/1/di" border="0" ismap="true"></img></a></p>]]></content:encoded>
			<wfw:commentRss>http://wiz.su/2009/12/20/potokovoe-video-sredstvami-ffserver-ffmpeg/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://wiz.su/2009/12/20/potokovoe-video-sredstvami-ffserver-ffmpeg/</feedburner:origLink></item>
		<item>
		<title>Настраиваем Aptana Studio с нуля для работы над Django-проектами</title>
		<link>http://feedproxy.google.com/~r/feedwiz/~3/jAKQ8yqUnvM/</link>
		<comments>http://wiz.su/2009/12/20/nastraivaem-aptana-studio-s-nulya-dlya-rabotyi-nad-django-proektami/#comments</comments>
		<pubDate>Sat, 19 Dec 2009 20:32:28 +0000</pubDate>
		<dc:creator>wizard</dc:creator>
				<category><![CDATA[Новости]]></category>
		<category><![CDATA[aptana]]></category>
		<category><![CDATA[django]]></category>
		<category><![CDATA[pydev]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://wiz.su/?p=925</guid>
		<description><![CDATA[Зачем оно вообще?
Тут должен быть текст в духе «раньше я качал Eclipse Classic, который весит 160 с лишним метров, чтобы поставить на него PyDev и только тогда… Но потом я попробовал Aptana&#8230;».
Собственно, Aptana Studio представляет собой среду для веб-разработки, построенную на основе Eclipse. Причем это значит именно то, что значит — почти все плагины Eclipse [...]]]></description>
			<content:encoded><![CDATA[<h4><img class="alignleft" title="aptana" src="http://www.twistermc.com/blog/wp-content/uploads/2009/04/aptana.png" alt="" width="140" height="141" />Зачем оно вообще?</h4>
<p><em>Тут должен быть текст в духе «раньше я качал Eclipse Classic, который весит 160 с лишним метров, чтобы поставить на него PyDev и только тогда… Но потом я попробовал Aptana&#8230;».</em></p>
<p>Собственно, <strong><noindex><a rel="nofollow" title="http://aptana.org/" target="_blank" href="http://wiz.su/go/aHR0cDovL2FwdGFuYS5vcmcv">Aptana Studio</a></noindex></strong> представляет собой среду для веб-разработки, построенную на основе <strong><noindex><a rel="nofollow" title="http://eclipse.org/" target="_blank" href="http://wiz.su/go/aHR0cDovL2VjbGlwc2Uub3JnLw==">Eclipse</a></noindex></strong>. Причем это значит именно то, что значит — почти все плагины <strong>Eclipse</strong> совместимы и с <strong>Aptana</strong>, только при этом в ней нету по умолчанию всей этой универсальности и Java-наворотов своего прародителя. И да, старый добрый <noindex><a rel="nofollow" title="http://pydev.org/" target="_blank" href="http://wiz.su/go/aHR0cDovL3B5ZGV2Lm9yZy8="><strong>PyDev</strong></a></noindex> здесь тоже есть, а на мой взгляд это — лучшая IDE-надстройка для питона. Естественно, для написания мелких проектов куда быстрее и проще использовать <noindex><a rel="nofollow" title="http://www.geany.org/" target="_blank" href="http://wiz.su/go/aHR0cDovL3d3dy5nZWFueS5vcmcv">Geany</a></noindex>, но сейчас не о нем <img src='http://wiz.su/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><span id="more-925"></span></p>
<h4>Первый взгляд</h4>
<p><noindex><a rel="nofollow" title="http://aptana.org/studio/download" target="_blank" href="http://wiz.su/go/aHR0cDovL2FwdGFuYS5vcmcvc3R1ZGlvL2Rvd25sb2Fk">Качаем</a></noindex> дистрибутив <strong>Aptana</strong> для своей системы. Что характерно, как и в случае с <strong>Eclipse</strong>, для линукса качается уже полная рабочая сборка со всеми бинарниками, ничего компилить не надо (Java дает о себе знать). Распаковываем, запускаем, при запуске выбираем папку-воркспэйс для хранения ваших будущих проектов. Не забудьте, что для запуска должна быть установлена <strong>Java Runtime</strong>, чем новее — тем лучше.</p>
<p><img src="http://i067.radikal.ru/0912/6d/73c15127975a.jpg" alt="image" /><br />
Ух ты, какая красота! Но черт побери, как же это все дико тормозит и глючит! Не переживайте, сейчас со всем справимся.<br />
Для начала советую в этом самом гламурном окне настройки выбрать внизу плагины, которые вы собираетесь использовать в разработке. В моем случае это, несомненно, <strong>PyDev</strong>, плагины поддержки <strong>jQuery</strong> и <strong>Prototype</strong>, а также плагины для поддержки систем контроля версий <strong>Git</strong> и <strong>Subversion</strong>. Где-то также существует плагин для <strong>Mercurial</strong>, но в списке его почему-то нет. Желающие также могут поставить <strong>Embedded Firefox Browser</strong>, который делает понятно что. Удобно. Кстати, в процессе установки выявляется еще одна зловредная особенность нашего гламурного окошка — нельзя просто поставить галочки и установить все плагины одновременно. Прикол в том, что после установки каждого плагина <strong>Aptana</strong> требует перезапуска. Можно согласиться, можно попробовать сразу применить изменения. В первом случае все, скорее всего, будет тип-топ, во втором — никогда не известно заранее. Поэтому проще перезапустить, благо что <strong>Aptana</strong>, в отличие от своего тяжелого предка, грузится гораздо быстрее.<br />
Все установили? Отлично. Полюбуйтесь еще раз на эту красоту, больше вы ни ее, ни ее тормозов не увидите. Для этого идем в <em>Window -&gt; Preferences</em>, набираем в строке поиска сверху «plugin» — и нам сразу показывают менюшку, где можно настроить плагины, подгружаемые при запуске. Снимите галочку у <strong>Aptana Intro</strong> и жмите Apply.<br />
Кстати, тут можно выявить еще один баг, который имеет место при запуске Аптаны в последних версиях Gnome и, в частности, в Ubuntu 9.10. Нажатия некоторых кнопок в окнах меню визуализируются, но не производят никакого эффекта, приходится нажимать каждый раз Enter. Исправим это досадное недоразумение и заодно облегчим себе жизнь — создадим скриптик где-нибудь в <em>/usr/bin</em>, назовем его <strong>aptana</strong>, дабы все прекрасно и удобно запускалось по Alt+F2, а внутрь пропишем:</p>
<blockquote><p><em>#!/bin/sh<br />
export GDK_NATIVE_WINDOWS=1<br />
&#8216;/address/where/Aptana/is/installed&#8217;</em></p></blockquote>
<p>Теперь при запуске по Alt+F2 или с кнопки на панели все будет работать.<br />
Ну и, наконец, включим перспективу <strong>PyDev</strong> («перспективой» здесь называется набор пунктов меню, панелей, и их положение, которое можно настраивать вручную. Для разных языков удобно использовать разные перспективы). Жмем кнопку <img src="http://i030.radikal.ru/0912/0f/daf5e6d3cfda.jpg" alt="image" />, затем <em>Others</em> и в списке перспектив выберем <strong>PyDev</strong>:</p>
<p><img src="http://i054.radikal.ru/0912/82/eb14c7218199.png" alt="image" /></p>
<p>Вуаля!</p>
<h4>Наконец, о Django!</h4>
<p>Ну, начальную настройку мы сделали, теперь осталось совсем немного — разобраться, как привязать все это дело к <strong>django</strong>. Создадим стандартной командой в выбранной вами папке с проектами новый проект:</p>
<blockquote><p><em>django-admin.py startproject testproj</em></p></blockquote>
<p>Теперь нужно заимпортить его в <strong>Aptana</strong>. Для этого щелкаем правой кнопкой в панели Python Package Explorer, выбираем Import, в открывшемся окошке раскрываем список Other и в нем выбираем Existing Folder As New Project. Выбираем только что созданный нами проект, импортируем.<br />
Теперь надо для пущего удобства сделать автозапуск девелопмент-сервера. Для этого открываем файл <strong>manage.py</strong> из нашего джанго-проекта, в меню выбираем <em>Run -&gt; Run configurations&#8230;</em> Тут слева должен быть выбран <strong>Python Run</strong>, а в нем наш проект. Можете сменить название по дефолту на название вашего проекта (в примере — <strong>testproj</strong>). Теперь открываем вкладку Arguments и прописываем в Program Arguments стандартные аргументы запуска сервера:</p>
<blockquote><p><em>runserver &#8211;noreload</em></p></blockquote>
<p>Параметр <strong>&#8211;noreload</strong> нужен для нормальной работы вывода в аптановую консоль. Только тут можно столкнуться с известной проблемой — тестовый сервер Django пытается по умолчанию запуститься на 8000 порте, но этот порт любят и другие программы, например, часто при слушании потоковой музыки из сети его занимает totem. Поэтому я обычно перевешиваю сервер, например, на 7777 порт. Для этого надо всего лишь добавить к параметрам конфигурации айпи и порт локалхоста, т.е.:</p>
<blockquote><p>runserver &#8211;noreload 127.0.0.1:7777</p></blockquote>
<p>Вот и все! Теперь достаточно нажать Run (<img src="http://i013.radikal.ru/0912/7e/2e56b6dae542.png" alt="image" />) и сервер запустится, а вывод будет перенаправлен в консоль.</p>
<p><strong>It Worked!</strong></p>
<p>Удачи вам в кодинге!</p>

<p><a href="http://feedads.g.doubleclick.net/~a/p3Iaw0nHb4SamT1Qz5-O0AbJoZo/0/da"><img src="http://feedads.g.doubleclick.net/~a/p3Iaw0nHb4SamT1Qz5-O0AbJoZo/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/p3Iaw0nHb4SamT1Qz5-O0AbJoZo/1/da"><img src="http://feedads.g.doubleclick.net/~a/p3Iaw0nHb4SamT1Qz5-O0AbJoZo/1/di" border="0" ismap="true"></img></a></p>]]></content:encoded>
			<wfw:commentRss>http://wiz.su/2009/12/20/nastraivaem-aptana-studio-s-nulya-dlya-rabotyi-nad-django-proektami/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://wiz.su/2009/12/20/nastraivaem-aptana-studio-s-nulya-dlya-rabotyi-nad-django-proektami/</feedburner:origLink></item>
		<item>
		<title>Интервью с проституткой</title>
		<link>http://feedproxy.google.com/~r/feedwiz/~3/V0h44TLAbd4/</link>
		<comments>http://wiz.su/2008/08/30/intervyu-s-prostitutkoy/#comments</comments>
		<pubDate>Fri, 29 Aug 2008 22:17:52 +0000</pubDate>
		<dc:creator>wizard</dc:creator>
				<category><![CDATA[Новости]]></category>
		<category><![CDATA[проститутка]]></category>
		<category><![CDATA[фриланс]]></category>

		<guid isPermaLink="false">http://wiz.su/?p=914</guid>
		<description><![CDATA[Зaxoтeлocь мнe взять интepвью y дeвyшки лeгкoгo пoвeдeния. Нo нe y тex бeздoмныx гocтeй cтoлицы, чтo нa твepcкoй yлицe cдaютcя в apeндy пo $50, a y нacтoящeгo пpoфeccиoнaлa cвoeгo дeлa. Пoпpocил дpyгa нaйти мнe тaкyю. Он бoльшoй cпeц в этиx дeлax…
Обeщaл ycтpoить мнe интepвью элeктpoннoe, aнoнимнoe. Сижy, ждy cигнaлa пo acькe.


Учacтники paзгoвopa:
1) atos
2) Лepa
— Дoбpый [...]]]></description>
			<content:encoded><![CDATA[<p>Зaxoтeлocь мнe взять интepвью y дeвyшки лeгкoгo пoвeдeния. Нo нe y тex бeздoмныx гocтeй cтoлицы, чтo нa твepcкoй yлицe cдaютcя в apeндy пo $50, a y нacтoящeгo пpoфeccиoнaлa cвoeгo дeлa. Пoпpocил дpyгa нaйти мнe тaкyю. Он бoльшoй cпeц в этиx дeлax…<br />
Обeщaл ycтpoить мнe интepвью элeктpoннoe, aнoнимнoe. Сижy, ждy cигнaлa пo acькe.</p>
<p><img src="http://grumy.ru/pix/posts/460/328/pic1.jpg" alt="" width="400" height="572" /></p>
<p><span id="more-914"></span><br />
Учacтники paзгoвopa:<br />
1) atos<br />
2) Лepa</p>
<p>— Дoбpый вeчep!<br />
— Здpaвcтвyйтe, Рycлaн! Мeня зoвyт Лepa.<br />
— Очeнь пpиятнo. Нy, a мeня мoжнo нaзывaть пpocтo atos, тaк кopoчe<br />
— Хopoшo, atos.<br />
— Вы coглacны paccкaзaть мнe нeмнoгo o Вaшeй жизни и o cвoeй paбoтe, в чacтнocти?<br />
— Дa, кoнeчнo, зa этим и пpишлa.<br />
— Тoгдa нaчнeм, пoжaлyй, нo Вы дoлжны имeть в видy, чтo нaшa бeceдa бyдeт oпyбликoвaнa в Интepнeт. Вы гoтoвы к этoмy?<br />
— Дa. Никaкиx пpoблeм.<br />
— Лepa, cкoлькo Вaм лeт?<br />
— Интepecнoe нaчaлo. А кaкaя paзницa? Нy, 23.<br />
— Рaзницa ecть. С мoлoдыми дeвyшкaми вceгдa пpиятнee oбщaтьcя, этo я Вaм кaк мyжчинa гoвopю<br />
— Зaбaвнo. Я Вaм вepю.<br />
— Рaccкaжитe, кaк тaк пoлyчилocь, чтo Вы выбpaли тaкyю пpoфeccию.<br />
— Вce пpoизoшлo cлyчaйнo. У мeня был дpyг. Он мeня чeмy-тo и нayчил, a дaльшe я yжe caмa…<br />
— И кaк дaвнo Вы этим зaнимaeтecь?<br />
— Гoдa чeтыpe.<br />
— И Вы дoвoльны?<br />
— Дa, кoнeчнo, зaчeм дeлaть тo, чтo нe нpaвитcя…<br />
— Нy, нeкoтopыe зaнимaютcя этим тoлькo из-зa дeнeг.<br />
— Дeньги — дa, нo мeня eщe и caм пpoцecc yвлeкaeт.<br />
— Вaшa yвлeчeннocть, нaвepнoe, cильнo зaвиcит oт тoгo, c кeм Вы имeeтe дeлo?<br />
— В извecтнoй cтeпeни. Клиeнты paзныe бывaют.<br />
— А кaкиx Вы пpeдпoчитaeтe?<br />
— А paзвe этo нe oчeвиднo? Мoлoдыx, кpacивыx и бoгaтыx! Нo я oдинaкoвo oтвeтcтвeннo oтнoшycь кo вceм клиeнтaм. Мoжeт быть дaжe бoльшe люблю paбoтaть c жeнщинaми.<br />
— Дa? И чacтo пoпaдaютcя жeнщины cpeди клиeнтoв?<br />
— Дocтaтoчнo. С ними бывaeт пpoщe. Хoтя y мyжчин тoжe ecть cвoи пoлoжитeльныe кaчecтвa.<br />
— Кaкиe?<br />
— Мyжчинa плaтит лeгчe. Мeньшe coмнeвaeтcя в cвoиx жeлaнияx.<br />
— А oтpицaтeльныe чepты мyжчины?<br />
— Увлeчeннocть. Иx cильнo зaнocит, мнoгoгo xoтят, a пoтoм выяcняeтcя, чтo нe мoгyт oплaтить и пoлoвины зaкaзaннoгo.<br />
— Дa, вepoятнo Вы пpaвы А Вы paбoтaeтe тoлькo индивидyaльнo, или бывaют гpyппoвыe зaкaзы?<br />
— Рaзныe бывaют. Чeм бoльшe в кoмaндe мyжикoв — тeм тяжeлee. В кoмaндe из oдниx мyжикoв вooбщe, cтoлькo идeй пpeт, чтo чacтeнькo и yдoвлeтвopить-тo вcex нe мoгy. Пpиxoдитcя oбpaщaтьcя зa пoмoщью. А этoгo я нe люблю.<br />
— От чeгo жe?<br />
— Пoтoм выяcнять ктo чтo дeлaл, кoмy былo тpyднee, cooтвeтcтвeннo и гoнopap дeлить… Дa, нy… Хoтя, вpoдe гpyппoй вeceлee. А тo бывaeт, пoпaдeтcя бoтaн кaкoй-нибyдь. Дeнeг мaлo, cлюни пycкaeт, cкyчнo, зacнyть зa paбoтoй мoжнo.<br />
— Дa, paбoтa y Вac нe из лeгкиx…<br />
— Вce-тaки нe бpeвнa гpyзить.<br />
— А клиeнты дoвoльны Вaми?<br />
— Кoнeчнo. Я жe вce дeлaю пpoфeccиoнaльнo. Еcли нacтpoeниe xopoшee, тo мoгy и cвepx нopмы cдeлaть чтo-тo. Тaк, в видe жecтa дoбpoй вoли<br />
— Вы вceмy caми нayчилиcь?<br />
— Нy дa. В тaкoм дeлe глaвнoe oпыт. Книг, кoнeчнo, пoявилocь мнoгo. У кaждoгo мeтpo пpoдaютcя, нo бeз пpaктики вce paвнo никaк.<br />
— Этo дa. Тyт я Вac xopoшo пoнимaю. Вы paбoтaeтe дoмa, или y Вac для этoгo ecть cпeциaльнoe пoмeщeниe? Рaбoчee мecтo, тaк cкaзaть…<br />
— Люблю дoмa. Дoмa, кaк гoвopитcя, и cтeны пoмoгaют.<br />
— И cкoлькo Вы бepeтe c клиeнтa?<br />
— Нy, вce зaвиcит oт зaкaзa. Нo нe мeньшe тыcячи. Я дeвoчкa yжe нe мaлeнькaя, чeгo мнe кpoxи coбиpaть. Опыт ecть, клиeнтypa шиpoкaя. Мнoгo пocтoянныx клиeнтoв…<br />
— Тыcячy pyблeй?<br />
— Дoллapoв, yвaжaeмый atos, дoллapoв. Я жe нe дeшeвкa, кaкaя-нибyдь. Я мoгy выпoлнить дocтaтoчнo cлoжный, нe cтaндapтный зaкaз, пoтoмy и бepy нe дeшeвo.<br />
— А бывaeт, чтo клиeнты «кидaют»?<br />
— Бывaeт. Вooбщe я впepeд oплaтy бepy. Нo Вы жe знaeтe, кaк этo бывaeт. Снaчaлa xoтят oднo, плaтят, a пoтoм paзoйдyтcя — дaвaй eщe этo, этo и тo… зaплaтим пoтoм, и пpoчee. Я, тaк, вpoдe, мaтepый yжe фpилaнcep, знaю, чeм вce этo зaкaнчивaeтcя, нo вce paвнo пoпaдaю, кaк мaлeнькaя.<br />
— Кaк, пpocтитe, Вы cкaзaли? Фpилaнcep?!<br />
— Нy дa. Опытный фpилaнcep, гoвopю. А вce paвнo пoпaдaю инoгдa.<br />
— Чтo-тo я нe пoймy. Вы eщe и фpилaнcep?<br />
— Чтo знaчит eщe? Фpилaнcep и ecть. Этo я Вac чтo-тo нe пoймy. Димкa тyт тoжe pжeт. Вы чтo-тo зaдyмaли, paзыгpывaeтe мeня?<br />
— Мнe Дмитpий oбeщaл ycтpoить интepвью c пpoфeccиoнaльнoй пpocтитyткoй… вooбщe-тo…<br />
— ЧЕГО? Аx, oн %*#@&amp;^!!! Нy, я щa из нeгo caмoгo пeдикa cдeлaю!</p>
<p><strong>Дoпoлнeниe oт aвтopa:</strong><br />
Кaк пoтoм выяcнилocь, Димкa c кeм-тo пocпopил, чтo интepвью вce paвнo cocтoитcя. Т.к. мнe вocпитaниe нe пoзвoлит oбoзвaть Лepy пpocтитyткoй, a ocтaльныe paбoчиe тepмины нaeмнoгo пpoгpaммиcтa и coвpeмeннoй гeтepы cильнo coвпaдaют. В чeм, coбcтвeннo, и oкaзaлcя пpaв…</p>

<p><a href="http://feedads.g.doubleclick.net/~a/Yfm_yDdNJxYd0BVmyeYRURKt7gE/0/da"><img src="http://feedads.g.doubleclick.net/~a/Yfm_yDdNJxYd0BVmyeYRURKt7gE/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/Yfm_yDdNJxYd0BVmyeYRURKt7gE/1/da"><img src="http://feedads.g.doubleclick.net/~a/Yfm_yDdNJxYd0BVmyeYRURKt7gE/1/di" border="0" ismap="true"></img></a></p>]]></content:encoded>
			<wfw:commentRss>http://wiz.su/2008/08/30/intervyu-s-prostitutkoy/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://wiz.su/2008/08/30/intervyu-s-prostitutkoy/</feedburner:origLink></item>
		<item>
		<title>Google Protocol Buffers: альтернатива XML</title>
		<link>http://feedproxy.google.com/~r/feedwiz/~3/3lzo25izJ_s/</link>
		<comments>http://wiz.su/2008/07/12/google-protocol-buffers-alternativa-xml/#comments</comments>
		<pubDate>Sat, 12 Jul 2008 13:48:18 +0000</pubDate>
		<dc:creator>wizard</dc:creator>
				<category><![CDATA[Новости]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[XML]]></category>

		<guid isPermaLink="false">http://wiz.su/?p=278</guid>
		<description><![CDATA[Google создали свой формат с открытым кодом для обмена данными между серверами, дав ему название Protocol Buffers.
Protocol Buffers это компактный способ кодирования данных в двоичном формате, который позволяет определить простую структуру данных, а затем их компилировать и присвоить классы для представления этих структур в нужном языке ( Java, Python или C++ ).

XML уже давно подвергается [...]]]></description>
			<content:encoded><![CDATA[<p>Google создали <noindex><a rel="nofollow" title="http://google-opensource.blogspot.com/2008/07/protocol-buffers-googles-data.html" target="_blank" href="http://wiz.su/go/aHR0cDovL2dvb2dsZS1vcGVuc291cmNlLmJsb2dzcG90LmNvbS8yMDA4LzA3L3Byb3RvY29sLWJ1ZmZlcnMtZ29vZ2xlcy1kYXRhLmh0bWw=">свой формат</a></noindex> с открытым кодом для обмена данными между серверами, дав ему название Protocol Buffers.</p>
<p><noindex><a rel="nofollow" title="http://code.google.com/apis/protocolbuffers/" target="_blank" href="http://wiz.su/go/aHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9hcGlzL3Byb3RvY29sYnVmZmVycy8=">Protocol Buffers</a></noindex> это компактный способ кодирования данных в двоичном формате, который позволяет определить простую структуру данных, а затем их компилировать и присвоить классы для представления этих структур в нужном языке ( Java, Python или C++ ).<br />
<span id="more-278"></span><br />
XML уже давно подвергается критике за торможение в производительности, однако, учитывая, что в него уже вложены огромные инвестиции, наврядли Protocol Buffers сможет его вытеснить или полностью заменить.</p>
<p>Скорее всего, его будет использовать Google и другие монстры, кто обладает большим количеством различных типов серверов, а также экспериментаторы для создания веб-приложений, которым требуются эффективный способ представления запросов и ответов между клиентом и сервером.</p>

<p><a href="http://feedads.g.doubleclick.net/~a/ygyQ43iqNmVWUU58NohOMa-DAXI/0/da"><img src="http://feedads.g.doubleclick.net/~a/ygyQ43iqNmVWUU58NohOMa-DAXI/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/ygyQ43iqNmVWUU58NohOMa-DAXI/1/da"><img src="http://feedads.g.doubleclick.net/~a/ygyQ43iqNmVWUU58NohOMa-DAXI/1/di" border="0" ismap="true"></img></a></p>]]></content:encoded>
			<wfw:commentRss>http://wiz.su/2008/07/12/google-protocol-buffers-alternativa-xml/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://wiz.su/2008/07/12/google-protocol-buffers-alternativa-xml/</feedburner:origLink></item>
		<item>
		<title>SVN Tools для UNIX-like систем</title>
		<link>http://feedproxy.google.com/~r/feedwiz/~3/lVhAYK8inik/</link>
		<comments>http://wiz.su/2008/07/12/svn-tools-dlya-unix-like-sistem/#comments</comments>
		<pubDate>Sat, 12 Jul 2008 13:47:49 +0000</pubDate>
		<dc:creator>wizard</dc:creator>
				<category><![CDATA[Новости]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[Subversion]]></category>
		<category><![CDATA[svn]]></category>
		<category><![CDATA[unix]]></category>
		<category><![CDATA[разработка]]></category>

		<guid isPermaLink="false">http://wiz.su/?p=277</guid>
		<description><![CDATA[Многие, кто разрабатывает проекты и занимается выводом их в продакшен, сталкиевается с необходимость удалять или добавлять большое количество файлов/папок в пределах локального снэпшота. Естественно, можно воспользоваться svn st и удалять файлы по одному, но вполне разумным будет автоматизировать этот процесс:
alias svn-add-all-new-files	&#171;svn st &#124; grep &#8216;^?&#8217; &#124; sed &#8217;s/?//&#8217; &#124; xargs svn add \$1&#8243;
alias svn-rm-all-skip-files	&#171;svn st [...]]]></description>
			<content:encoded><![CDATA[<p>Многие, кто разрабатывает проекты и занимается выводом их в продакшен, сталкиевается с необходимость удалять или добавлять большое количество файлов/папок в пределах локального снэпшота. Естественно, можно воспользоваться svn st и удалять файлы по одному, но вполне разумным будет автоматизировать этот процесс:</p>
<p><span id="more-277"></span>alias svn-add-all-new-files	&laquo;svn st | grep &#8216;^?&#8217; | sed &#8217;s/?//&#8217; | xargs svn add \$1&#8243;</p>
<p>alias svn-rm-all-skip-files	&laquo;svn st | grep &#8216;^!&#8217; | sed &#8217;s/\!//&#8217; | xargs svn rm \$1&#8243;</p>
<p>поместить в ~/.cshrc (если у вас оболочка tcsh) или в .profile и после следующего логина можно использовать в полную силу.</p>
<p>Update #1: первую комманду можно заменить на:</p>
<p>svn add * &#8211;force</p>
<p>(спасибо посмотреть профиль brutaler)</p>
<p>Update #2: эксперименты с svn rm * &#8211;force привели меня к написанию новой комманды:</p>
<p>alias svn-revert-all-removed	&laquo;svn st | grep &#8216;^D&#8217; | sed &#8217;s/D//&#8217; | xargs svn revert \$1&#8243;</p>
<p>Комманды:</p>
<p>* svn-add-all-new-file — пометить добавленными все новые файлы/папки<br />
* svn-rm-all-skip-files — пометить удаленными все удаленные файлы/папки<br />
* svn-revert-all-removed — возвращает все помеченные удаленными файлы в нормальное состояние</p>
<p>Вышенаписанное применимо для всех unix-like систем (Linux/*BSD/Solaris/OS X), что вполне очевидно.</p>
<p>Удачных коммитов!</p>

<p><a href="http://feedads.g.doubleclick.net/~a/O2QxaaHAzONHurvffnNHnOUl-RE/0/da"><img src="http://feedads.g.doubleclick.net/~a/O2QxaaHAzONHurvffnNHnOUl-RE/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/O2QxaaHAzONHurvffnNHnOUl-RE/1/da"><img src="http://feedads.g.doubleclick.net/~a/O2QxaaHAzONHurvffnNHnOUl-RE/1/di" border="0" ismap="true"></img></a></p>]]></content:encoded>
			<wfw:commentRss>http://wiz.su/2008/07/12/svn-tools-dlya-unix-like-sistem/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://wiz.su/2008/07/12/svn-tools-dlya-unix-like-sistem/</feedburner:origLink></item>
		<item>
		<title>Установка Apache2+SQLite+Trac+Subversion</title>
		<link>http://feedproxy.google.com/~r/feedwiz/~3/uByLWWMJaEA/</link>
		<comments>http://wiz.su/2008/07/12/ustanovka-apache2sqlitetracsubversion/#comments</comments>
		<pubDate>Sat, 12 Jul 2008 13:43:49 +0000</pubDate>
		<dc:creator>wizard</dc:creator>
				<category><![CDATA[Новости]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[Apache2]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[SQLite]]></category>
		<category><![CDATA[Subversion]]></category>
		<category><![CDATA[svn]]></category>
		<category><![CDATA[trac]]></category>

		<guid isPermaLink="false">http://wiz.su/?p=276</guid>
		<description><![CDATA[Trac — инструмент управления проектами и отслеживания ошибок в программном обеспечении.
Не думаю что данное руководство пойдет только для версии 8.04. Trac мы будем ставить 0.11-ой версии
Нам потребуются некоторые библиотеки для установки. Открываем терминал (консоль в Kubuntu) и пишем:
   1. sudo apt-get install apache2 libapache2-mod-python libapache2-svn python-setuptools subversion python-subversion
   2. sudo easy_install [...]]]></description>
			<content:encoded><![CDATA[<p>Trac — инструмент управления проектами и отслеживания ошибок в программном обеспечении.</p>
<p>Не думаю что данное руководство пойдет только для версии 8.04. Trac мы будем ставить 0.11-ой версии</p>
<p>Нам потребуются некоторые библиотеки для установки. Открываем терминал (консоль в Kubuntu) и пишем:</p>
<p>   1. sudo apt-get install apache2 libapache2-mod-python libapache2-svn python-setuptools subversion python-subversion<br />
   2. sudo easy_install Trac<br />
<span id="more-276"></span><br />
Также можно поставить SQLite (на момент написания статьи последняя версия: 3.5.9), но этот шаг является необязательным. Есть 2 варианта: установка из репозитариев или же компилирование из исходников. Выбирайте какой для вас удобнее.</p>
<p>1 способ (репозитарии):</p>
<p>   1. sudo apt-get install sqlite</p>
<p>2 способ (исходники):</p>
<p>   1. sudo apt-get install g++<br />
   2. cd<br />
   3. mkdir ./distr<br />
   4. cd ./distr<br />
   5. wget http://www.sqlite.org/sqlite-3.5.9.tar.gz<br />
   6. tar xvfz ./sqlite-3.5.9.tar.gz<br />
   7. mv ./sqlite-3.5.9 ./sqlite # чтобы следовать букве README-руководства<br />
   8. mkdir ./bld # временный каталог для скомилированных файлов<br />
   9. cd ./bld<br />
  10. ../sqlite/configure<br />
  11. make<br />
  12. sudo make install<br />
  13. cd ..<br />
  14. rm -r ./bld</p>
<p>Создадим дирректорию для Trac и дадим Apache доступ к нему:</p>
<p>   1. sudo mkdir /var/lib/trac<br />
   2. sudo chown www-data:www-data /var/lib/trac</p>
<p>Настроим VirtualHost для Apache</p>
<p>   1. sudo vi /etc/apache2/sites-available/trac (можно использовать gedit (Ubuntu) или kate (Kubuntu) вместо редактора vi)</p>
<p>В открывшийся файл пишем:</p>
<p><VirtualHost *><br />
        ServerAdmin webmaster@localhost<br />
        ServerName trac.example.com<br />
        DocumentRoot /var/www<br />
        ErrorLog /var/log/apache2/error.trac.log<br />
        CustomLog /var/log/apache2/access.trac.log combined</p>
<p>        <Location /projects><br />
                SetHandler mod_python<br />
                PythonInterpreter main_interpreter<br />
                PythonHandler trac.web.modpython_frontend<br />
                PythonOption TracEnvParentDir /var/lib/trac<br />
                PythonOption TracUriRoot /projects<br />
        </Location></p>
<p>        # use the following for one authorization for all projects (names containing &laquo;-&raquo; are not detected):<br />
        <LocationMatch "/projects/[[:alnum:]]+/login"><br />
            AuthType Basic<br />
            AuthName &laquo;trac&raquo;<br />
            AuthUserFile /etc/apache2/dav_svn.passwd<br />
            Require valid-user<br />
        </LocationMatch></p>
<p></VirtualHost></p>
<p>Далее отключаем VirtualHost по умолчанию и активируем VirtualHost Trac, перезагружаем Apache:</p>
<p>   1. sudo a2dissite default<br />
   2. sudo a2ensite trac<br />
   3. sudo /etc/init.d/apache2 reload</p>
<p>Переходим в /var/lib, создаем папку для svn, и в ней новую папку для проекта:</p>
<p>   1. cd /var/lib<br />
   2. sudo mkdir svn #необходимы права администратора<br />
   3. sudo svnadmin create /var/lib/svn/ProjectName</p>
<p>Изменяем права доступа к папкам, перезапускаем Apache</p>
<p>   1. sudo chown -R www-data /var/lib/svn<br />
   2. sudo /etc/init.d/apache2 restart</p>
<p>Создаем дирректорию для trac и новый проект с именем ProjectName (Имя то же, что и для svn)</p>
<p>   1. sudo trac-admin /var/lib/trac/YourProjectNameHere initenv<br />
   2. sudo chown -R www-data /var/lib/trac</p>
<p>Во время создания проекта будут заданы вопросы:</p>
<p>   1. ProjectName &#8211; имя проекта<br />
   2. Путь до SQLite &#8211; по умолчанию<br />
   3. Репозиторий &#8211; svn<br />
   4. Путь до репозитория &#8211; /var/lib/svn/ProjectName</p>
<p>Теперь настроим SVN. Файл /etc/apache2/mods-available/dav_svn.conf необходимо раскомментировать, чтобы получилось:</p>
<p>   1. sudo vi /etc/apache2/mods-available/dav_svn.conf (вместо vi можно использовать: Ubuntu &#8211; gedit, Kubuntu &#8211; kate)</p>
<p><Location /svn><br />
    DAV svn<br />
    SVNParentPath /var/lib/svn<br />
    AuthType Basic<br />
    AuthName &laquo;Subversion Repository&raquo;<br />
    AuthUserFile /etc/apache2/dav_svn.passwd<br />
    AuthzSVNAccessFile /etc/apache2/dav_svn.authz<br />
    Require valid-user<br />
</Location></p>
<p>Создадим соответствующих пользователей (любое количество, вам необходимое) в файлах авторизации (username &#8211; любое имя. Первый пользователь всегда с -c):</p>
<p>   1. sudo htpasswd -c /etc/apache2/dav_svn.passwd username1<br />
   2. sudo htpasswd /etc/apache2/dav_svn.passwd username2</p>
<p>Создадим файл аутентификации и пишем в него (r &#8211; чтение, w &#8211; запись):</p>
<p>   1. sudo vi /etc/apache2/dav_svn.authz (вместо vi можно использовать: Ubuntu &#8211; gedit, Kubuntu &#8211; kate)</p>
<p>[/]<br />
username1=r<br />
username2=rw</p>
<p>[/ProjectName]<br />
username1=rw<br />
username2=r</p>
<p>Права на доступ Apache файлу /etc/apache2/dav_svn.passwd:</p>
<p>   1. sudo chown www-data /etc/apache2/dav_svn.passwd</p>
<p>Добавляем себя в админы Trac (ProjectName &#8211; имя проекта, username &#8211; имя пользователя)</p>
<p>   1. cd /var/lib/trac<br />
   2. sudo trac-admin ProjectName permission add username TRAC_ADMIN</p>
<p>Добавляем пару необходимых модулей:</p>
<p>   1. sudo mkdir /var/www/.python-eggs<br />
   2. sudo chown www-data /var/www/.python-eggs</p>
<p>   1. sudo apt-get install build-essential graphviz<br />
   2. sudo easy_install http://svn.edgewall.org/repos/genshi/trunk/ #установщик задаст вопрос, отвечаем t<br />
   3. sudo easy_install http://trac-hacks.org/svn/accountmanagerplugin/trunk<br />
   4. sudo easy_install http://trac-hacks.org/svn/customfieldadminplugin/0.11<br />
   5. sudo easy_install http://trac-hacks.org/svn/eclipsetracplugin/tracrpcext/0.10<br />
   6. sudo easy_install http://trac-hacks.org/svn/iniadminplugin/0.11<br />
   7. sudo easy_install http://trac-hacks.org/svn/masterticketsplugin/0.11<br />
   8. sudo easy_install http://trac-hacks.org/svn/pagetopdfplugin/0.10/<br />
   9. sudo easy_install http://trac-hacks.org/svn/progressmetermacro/0.11<br />
  10. sudo easy_install http://trac-hacks.org/svn/ticketdeleteplugin/0.11<br />
  11. sudo easy_install http://trac-hacks.org/svn/tracwysiwygplugin/0.11<br />
  12. sudo easy_install http://wikinotification.ufsoft.org/svn/trunk</p>
<p>Последний шаг &#8211; перезагружаем Apache:</p>
<p>   1. sudo /etc/init.d/apache2 restart</p>
<p>Теперь по адресу:<br />
http://localhost &#8211; видим &laquo;It works!&raquo;<br />
http://localhost/svn/ProjectName &#8211; наш svn репозитарий<br />
http://localhost/projects &#8211; список проектов trac</p>

<p><a href="http://feedads.g.doubleclick.net/~a/ThhCa3Coz_tCfqJES4ge46U_-iM/0/da"><img src="http://feedads.g.doubleclick.net/~a/ThhCa3Coz_tCfqJES4ge46U_-iM/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/ThhCa3Coz_tCfqJES4ge46U_-iM/1/da"><img src="http://feedads.g.doubleclick.net/~a/ThhCa3Coz_tCfqJES4ge46U_-iM/1/di" border="0" ismap="true"></img></a></p>]]></content:encoded>
			<wfw:commentRss>http://wiz.su/2008/07/12/ustanovka-apache2sqlitetracsubversion/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		<feedburner:origLink>http://wiz.su/2008/07/12/ustanovka-apache2sqlitetracsubversion/</feedburner:origLink></item>
		<item>
		<title>Куда движется DNS, и прав ли ICANN</title>
		<link>http://feedproxy.google.com/~r/feedwiz/~3/-p1-aNY0QE4/</link>
		<comments>http://wiz.su/2008/07/12/kuda-dvizhetsya-dns-i-prav-li-icann/#comments</comments>
		<pubDate>Sat, 12 Jul 2008 12:32:08 +0000</pubDate>
		<dc:creator>wizard</dc:creator>
				<category><![CDATA[Новости]]></category>
		<category><![CDATA[dns]]></category>
		<category><![CDATA[eu]]></category>
		<category><![CDATA[icann]]></category>

		<guid isPermaLink="false">http://wiz.su/?p=275</guid>
		<description><![CDATA[Рискуя оказаться в меньшинстве, хотел бы высказать своё мнение по поводу недавних решений ICANN в разрезе развития доменной системы в целом.
Проблема
Что мы имели уже долгие годы и имеем по сей день.
1. Строго ограниченный знаконабор для использования в доменных именах — грубо говоря, 26 латинских букв верхнего регистра, 10 арабских цифр и дефис. Латинская (аскишная) точка [...]]]></description>
			<content:encoded><![CDATA[<p>Рискуя оказаться в меньшинстве, хотел бы высказать своё мнение по поводу недавних решений ICANN в разрезе развития доменной системы в целом.</p>
<p>Проблема</p>
<p>Что мы имели уже долгие годы и имеем по сей день.</p>
<p>1. Строго ограниченный знаконабор для использования в доменных именах — грубо говоря, 26 латинских букв верхнего регистра, 10 арабских цифр и дефис. Латинская (аскишная) точка используется как разделитель узлов иерархии. Все остальные алфавиты мира не представлены, то есть дискримируются. Напомню, что стандарт Unicode опубликован шестнадцать лет назад.<br />
<span id="more-275"></span><br />
2. Строго ограниченный набор доменов верхнего уровня (ДВУ) — двухбуквенные географические плюс горстка исторических com-net-org, .mil исключительно для американской военщины, .nato для неё же в международном масштабе, .edu для (американских!) учебных заведений. Все прочие страны должны заводиться под своим географическим доменом, то есть дискриминируются. В начале века добавилась ещё горстка, вроде .info, .mobi, .travel и наподобие того, для якобы профильных сервисов. Все они, сто процентов, образованы из англоязычной транскрипции, а некоторые ещё и из искажённой, навроде .biz. Прочие языки не представлены ни разу, то есть дискриминируются.</p>
<p>3. Благодаря движущей силе прогресса, то есть баблу, был заведён чисто сквоттерский домен .eu, который поломал последнее подобие порядка в этой системе, то есть резервацию двухбуквенных доменов только для стран, и ни для чего иного. Двухбуквенные домены как-то отвечали стандарту ISO 3166, теперь и это утрачено. Если какая-то вновь возникшая страна получит код EU, она не сможет получить свой домен, поскольку он занят. Комментарии не нужны.</p>
<p>4. Благодаря искусственному ограничению на домены верхнего уровня, некорые домены некоторых стран стали значительно популярнее прочих, в силу совершенно произвольных и случайных причин, наподобии благозвучия ИСО-кода на нужном языке (cc, to, nu, cx, fm, tv, md и так далее), либо же бесплатности регистрации (tk). Я писал уже здесь об этом явлении, поищите «Токелау».</p>
<p>5. Из-за желания локализации компании вынуждены регистрировать новый домен в каждой стране, где они ведут бизнес (google.com, google.fr, google.it и ещё так 82 раза). Сплошь и рядом возникает конфилкт с уже зарегистрированными легитимными доменами в этих странах. Это ведёт к многолетним и утомительным тяжбам, и путанице для пользователей. Наживаются сквоттеры. На том же примере: gmail.de отсудить не удалось, gmail.pl был занят очень давно: Grupa Młodych Artystów i Literatów существовала задолго до почтовой службы Гугла.</p>
<p>6. Утвержение диких и абсурдных заявок на ДВУ (TLD), наподобие .cat и .bzh для пропаганды каталанского и бретонского языков соответственно. Слыхали о таких? Dieub ha par en o dellezegezh hag o gwirioù eo ganet an holl dud. Но дело-то прогрессивное (см. выше), поскольку заявки подкреплены шестизначными траншами. Кто из вас верит, что благозвучный домен .cat действительно используется для дела процветания культуры окрестностей славного города Барселоны?</p>
<p>7. Вынужденное исчезновение с лица сети доменов, TLD которых перестал существовать по независимым от них причинам. Имеются в виду почившие в бозе государства, и потянувшие за собой заведённые в зонах .cz, .su, .yu имена. Моя страна может перестать существовать, или так называться, или я могу переехать, и TLD начинает быть ложной сущностью, которую мне навязали, и может обрушить мою сущность.</p>
<p>8. Фактическая дилюция существующей двухуровневой системы в плоскую: ДВУ .com не означает в наше время практически ничего, он не сообщает ни отношения к коммерции, ни к США. Это хорошо иллюстрируется поведением многих браузеров, которые при вводе единичного слова в строку адреса по умолчанию пытаются пристроить сзади &laquo;.com&raquo;.</p>
<p>Решение</p>
<p>1. Разрешить употребление любых символов юникода в именах, со следующими ограничениями.</p>
<p># можно употреблять только алфавитно-цифровые символы (любого алфавита и любых цифр);<br />
# в пределах имени можно употреблять символы одного, и только одного алфавита, для исключения вариантов &laquo;Microsoft&raquo; с кириллической «о» или «с». Под алфавитом мы понимаем &laquo;script&raquo; в юникоде.<br />
# пунктуация запрещается, чтобы не было соблазна употребить нечто, похожее на точку, для введения в заблуждение.<br />
# придётся сохранить существующую систему приведения к одному регистру, в тех алфавитах, где регистр различается. Различать .гибдд и .ГИБДД вряд ли кому-либо покажется разумным.</p>
<p>2. Разрешить регистрацию любых доменов верхнего уровня. То, что сейчас сделал ИКАНН, является прогрессивным шагом (проверочное слово: бабло), в смысле потенциальных сверхприбылей регистраров и самой конторы, но тендеция, тем не менее, должна полагаться верной. Пройдёт несколько лет, и упомянутые шестизначные взносы за ДВУ (TLD) станут четырёх и трёхзначными, а со временем и однозначными, как .com, это неизбежный процесс. Соблазн зарегистрировать .mycompany и опередить всех возможных Mycompany Ltd, Mycompany GmbH, Mycompany OY, Mycompany s.z.o.o. в любых странах будет слишком велик.</p>
<p>Трудности</p>
<p>Технических никаких: небольшое расширение протокола DNS. Логистических тоже, поскольку эта система никак не отменяет предыдущую, а дополняет её. Что касается неудобства нелатинских (русских, китайских и пр.) доменов, есть одно простое соображение — рынок. Если это будет удобно, компании будут регистрировать. А если клиенты сочтут это неудобным, то не будут, только и всего. Никто ведь не заставляет переезжать с существующего .com или .ru. Единственная проблема, решения которой я не вижу, это вопрос правообладания по отношению к домену верхнего уровня. Может быть, уважаемые читатели поделятся своими соображениями по этому поводу.</p>
<p>UPD I: отдельное спасибо за обвал кармы после этой, да и после всех моих последних статей. Я знаю, что независимая позиция не в чести.</p>
<p>UPD II: Началась жаркая дискуссия на тему, хорошо ли иметь домены в юникоде или плохо. Напоминаю, что домены в юникоде (&laquo;международные&raquo;) разрешены во многих регистрарах уже много лет путём хака через аскишное приведение юникода (&laquo;пюникод&raquo;), и давно зарегистрированы тысячи китайских, русских, арабских, шведских и пр. доменов ВТОРОГО уровня.</p>
<p>Всё, что я предлагал, это проявить последовательность, и разрешить то же самое на ПЕРВОМ уровне, то есть TLD. Детали же реализации (оставить как есть, то есть пюникод, или привести всё к кодировке UTF-8) не столь важны.</p>
<p>UPD III: Добавлены пункты 7 и 8.</p>

<p><a href="http://feedads.g.doubleclick.net/~a/iTK9P_4O9OEcsE_OF5nCDqP_hwA/0/da"><img src="http://feedads.g.doubleclick.net/~a/iTK9P_4O9OEcsE_OF5nCDqP_hwA/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/iTK9P_4O9OEcsE_OF5nCDqP_hwA/1/da"><img src="http://feedads.g.doubleclick.net/~a/iTK9P_4O9OEcsE_OF5nCDqP_hwA/1/di" border="0" ismap="true"></img></a></p>]]></content:encoded>
			<wfw:commentRss>http://wiz.su/2008/07/12/kuda-dvizhetsya-dns-i-prav-li-icann/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://wiz.su/2008/07/12/kuda-dvizhetsya-dns-i-prav-li-icann/</feedburner:origLink></item>
	</channel>
</rss><!-- Dynamic page generated in 0.860 seconds. --><!-- Cached page generated by WP-Super-Cache on 2010-08-03 04:19:51 --><!-- Compression = gzip -->

