<?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://gregor.ru/blog</link>
	<description>вся неправда о Хитрожёлтом индейце</description>
	<lastBuildDate>Thu, 22 Oct 2009 15:26:52 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</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/sitnin" /><feedburner:info uri="sitnin" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Яндекс о российском музыкальном рынке</title>
		<link>http://feedproxy.google.com/~r/sitnin/~3/_iZIWNvcSvQ/</link>
		<comments>http://gregor.ru/blog/2009/10/22/1203/#comments</comments>
		<pubDate>Thu, 22 Oct 2009 15:26:15 +0000</pubDate>
		<dc:creator>Григорий Ситнин</dc:creator>
				<category><![CDATA[Другое]]></category>
		<category><![CDATA[бизнес]]></category>
		<category><![CDATA[интернет]]></category>
		<category><![CDATA[музыка]]></category>

		<guid isPermaLink="false">http://gregor.ru/blog/?p=1203</guid>
		<description><![CDATA[Единственный способ кардинально изменить рынок – это отдать все каталоги в удовлетворительном качестве для бесплатного скачивания и прослушивания и продавать продукт премиального класса для меломанов, а не для тех, кто хочет недельку-другую послушать в плеере новые хиты. Массовый потребитель всегда найдет бесплатную альтернативу. И бороться с этим бессмысленно.
Источник

Не так давно, Яндекс запустил возможность прослушивания аудио-трэков [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p>Единственный способ кардинально изменить рынок – это отдать все каталоги в удовлетворительном качестве для бесплатного скачивания и прослушивания и продавать продукт премиального класса для меломанов, а не для тех, кто хочет недельку-другую послушать в плеере новые хиты. Массовый потребитель всегда найдет бесплатную альтернативу. И бороться с этим бессмысленно.</p>
<div><a href="http://www.billboard-magazine.ru/news/business/1174">Источник</a></div>
</blockquote>
<p>Не так давно, Яндекс запустил возможность прослушивания аудио-трэков в поиске. Из статьи ясно, что это только начало и те мысли, которые высказывает Дмитрий Иванов мне очень нравятся.</p>
<p>Я действительно с большим бы удовольствием гонял в плеере бесплатные альбомы в каком-нибудь 196kbit-е, а потом понравившиеся албомы или трэки покупал в loseless или хотя бы в 320kbit.</p>
<img src="http://feeds.feedburner.com/~r/sitnin/~4/_iZIWNvcSvQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://gregor.ru/blog/2009/10/22/1203/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://gregor.ru/blog/2009/10/22/1203/</feedburner:origLink></item>
		<item>
		<title>Git и Svn — братья навек</title>
		<link>http://feedproxy.google.com/~r/sitnin/~3/KCcEDqBJrUc/</link>
		<comments>http://gregor.ru/blog/2009/10/16/1196/#comments</comments>
		<pubDate>Fri, 16 Oct 2009 07:07:52 +0000</pubDate>
		<dc:creator>Григорий Ситнин</dc:creator>
				<category><![CDATA[Администрирование]]></category>
		<category><![CDATA[Программирование]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[subversion]]></category>
		<category><![CDATA[эксперименты]]></category>

		<guid isPermaLink="false">http://gregor.ru/blog/?p=1196</guid>
		<description><![CDATA[Я тут носился с простым вопросом: как именно происходят коммиты, когда git забирает реп из subversion. Дошли руки и поставил дерзкий нечеловеческий эксперимент.
Допустим, есть у меня репозиторий SVN (http://domain.tld/svn/repo/), работать с которым я хочу исключительно из-под гита.
Достаём его гитом: &#171;git svn clone http://domain.tld/svn/repo/ foldername&#187; и теперь у меня в папке foldername лежит нужный клон, с [...]]]></description>
			<content:encoded><![CDATA[<p>Я тут носился с простым вопросом: как именно происходят коммиты, когда git забирает реп из subversion. Дошли руки и поставил дерзкий нечеловеческий эксперимент.</p>
<p>Допустим, есть у меня репозиторий SVN (http://domain.tld/svn/repo/), работать с которым я хочу исключительно из-под гита.</p>
<p>Достаём его гитом: &laquo;git svn clone http://domain.tld/svn/repo/ foldername&raquo; и теперь у меня в папке foldername лежит нужный клон, с которым работать по уже знакомой схеме: делаем изменение, фиксируем его коммитом.</p>
<p>Как только мы готовы отправить изменение в subversion, запускаем команду git svn dcommit, которая аккуратно сформирует из всех локальных коммитов столько же коммитов в svn-репозиторий, забабахает туда ваши лог-сообщения и отправит на сервер.</p>
<p>Собственно, это мне и было интересно: когда происходит коммит в subversion-репозиторий и сколько будет changeset-ов (один или несколько). Итого: когда скажу, несколько.</p>
<p>Почему-то нигде в сети я этого простого знания не нашёл, поэтому делюсь с вами здесь. Вероятно, это всё слишком просто, но мне стоило минут 5-и, потраченных на эксперимент )</p>
<p>UPD: Кстати, гит высосет при клонировании все changeset-ы, будьте терпеливы, внимательны и осторожны! )</p>
<p>UPD2: Нашёл <a href="http://www.altlinux.org/Git-svn">интересную ссылку</a>. Там советуют делать не так, как сделал я, экспериментируя. И это, в общем-то, правильно.</p>
<img src="http://feeds.feedburner.com/~r/sitnin/~4/KCcEDqBJrUc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://gregor.ru/blog/2009/10/16/1196/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://gregor.ru/blog/2009/10/16/1196/</feedburner:origLink></item>
		<item>
		<title>А через пять лет здесь будет город-сад…</title>
		<link>http://feedproxy.google.com/~r/sitnin/~3/mGdujhkmKhg/</link>
		<comments>http://gregor.ru/blog/2009/06/11/1194/#comments</comments>
		<pubDate>Thu, 11 Jun 2009 08:39:54 +0000</pubDate>
		<dc:creator>Григорий Ситнин</dc:creator>
				<category><![CDATA[Другое]]></category>

		<guid isPermaLink="false">http://gregor.ru/blog/?p=1194</guid>
		<description><![CDATA[Как уже говорилось, OpenID &#8212; хорош. Теперь он есть и у меня в блоге! )
]]></description>
			<content:encoded><![CDATA[<p>Как уже говорилось, <a href="/blog/2009/04/13/1149/">OpenID</a> &#8212; хорош. Теперь он есть и у меня в блоге! )</p>
<img src="http://feeds.feedburner.com/~r/sitnin/~4/mGdujhkmKhg" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://gregor.ru/blog/2009/06/11/1194/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://gregor.ru/blog/2009/06/11/1194/</feedburner:origLink></item>
		<item>
		<title>Как я делаю конфигурации компьютеров</title>
		<link>http://feedproxy.google.com/~r/sitnin/~3/ZsjfNOxJy5g/</link>
		<comments>http://gregor.ru/blog/2009/06/04/1189/#comments</comments>
		<pubDate>Thu, 04 Jun 2009 02:35:29 +0000</pubDate>
		<dc:creator>Григорий Ситнин</dc:creator>
				<category><![CDATA[Конфигурации компьютеров]]></category>
		<category><![CDATA[процесс]]></category>

		<guid isPermaLink="false">http://gregor.ru/blog/?p=1189</guid>
		<description><![CDATA[Недавно я написал о том, каким вижу базовый компьютер. То есть компьютер такой конфигурации, которая может быть хорошей основой уже для &#171;заточенных&#187; моделей.
Сейчас хочу поведать о том, как я придумываю эти конфигурации.
Наверное довольно очевидно, что собрать всё то, о чём я пишу довольно трудно и дорого. Хотя бы потому, что тогда придётся собирать минимум 2-3 [...]]]></description>
			<content:encoded><![CDATA[<p>Недавно я написал о том, каким вижу <a href="http://gregor.ru/blog/2009/05/30/1180/">базовый компьютер</a>. То есть компьютер такой конфигурации, которая может быть хорошей основой уже для &laquo;заточенных&raquo; моделей.</p>
<p>Сейчас хочу поведать о том, как я придумываю эти конфигурации.</p>
<p>Наверное довольно очевидно, что собрать всё то, о чём я пишу довольно трудно и дорого. Хотя бы потому, что тогда придётся собирать минимум 2-3 новых компьютера в месяц. Поэтому часто мне приходится полагаться на мнение других людей, обзоры, тесты и другую информацию, которую удаётся найти.</p>
<p>Каждый компьютер состоит приблизительно из 10-15 различных комплектующих, для каждой из которых на сегодняшнем рынке существует огромное количество конкретных моделей.</p>
<p>Первым фильтром, конечно, является личный опыт. Так, например, я всегда рекомендую &laquo;коробочные&raquo; процессоры, так как в комплекте присутствует кулер (вентилятор охлаждения) на габариты и спецификацию которого обязательно расчитывают производители корпусов и системных (материнских) плат. К сожалению, у меня был неприятный опыт, когда приходилось подгибать радиаторы и даже отрезать &laquo;ненужные&raquo; детали.</p>
<p>Вторым фильтром являются обзоры и тесты, опубликованные уважаемыми мной журналами и сайтами. Я более-менее стараюсь следить за новостями и читать то, до чего могу дотянуться. Причём, поскольку я часто не имею возможности экспериментировать с настоящим &laquo;железом&raquo;, то издание может перестать быть авторитетным для меня ровно за одно некорректное или ангажированное высказывание. Так, например, недавно стало с сайтом ixbt.com, информация на котором перестала казаться мне объективной.</p>
<p>Третьим фильтром является мнение моих друзей и знакомых, с которыми я, порой, обсуждаю придуманные мной конфигурации, в том числе и неопубликованные. Стоит заметить, что публикую я где-то одну из трёх-пяти конфигураций. Остальные не проходят выбраковку.</p>
<p>Четвёртым фильтром является цена комплектующей на рынке и её наличие в свободной продаже. Мне кажется, что всё, о чём я рассказываю, должно быть доступно хотя бы на момент написания поста, причём без лишней головной боли. Если что-то отсутствует в наиболее значимых магазинах, то я, либо заменяю это на что-то аналогичное и не худшее, либо откладываю публикацию до момента появления комплектующей.</p>
<p>Кстати, сейчас, родившаяся из обсуждений <a href="http://gregor.ru/blog/2009/05/30/1180/">прошлой конфигурации</a>, у меня готовится новая, которую я собираюсь опубликовать уже в следующем посте. Это опять будет конфигурация базового компьютера, довольно сильно изменённая.</p>
<img src="http://feeds.feedburner.com/~r/sitnin/~4/ZsjfNOxJy5g" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://gregor.ru/blog/2009/06/04/1189/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://gregor.ru/blog/2009/06/04/1189/</feedburner:origLink></item>
		<item>
		<title>Что такое TED и TEDx</title>
		<link>http://feedproxy.google.com/~r/sitnin/~3/DFSt92noOp8/</link>
		<comments>http://gregor.ru/blog/2009/06/04/1186/#comments</comments>
		<pubDate>Wed, 03 Jun 2009 23:34:04 +0000</pubDate>
		<dc:creator>Григорий Ситнин</dc:creator>
				<category><![CDATA[Другое]]></category>
		<category><![CDATA[TED]]></category>
		<category><![CDATA[TEDx]]></category>
		<category><![CDATA[TEDxMoscow]]></category>
		<category><![CDATA[TEDxRussia]]></category>

		<guid isPermaLink="false">http://gregor.ru/blog/?p=1186</guid>
		<description><![CDATA[С 24 мая, когда мы сделали TEDxRussia прошло уже приличное время, много раз мы обсуждали, что получилось, а что &#8212; нет. Однако рассказать я хочу не об этом.
Дело в том, что, кажется, я только сейчас нашёл ответ на вопрос &#171;что такое TED&#187;.
Кажется, что ответ очень прост: &#171;это такая американская конференция, где всякие именитые дядьки и [...]]]></description>
			<content:encoded><![CDATA[<p>С 24 мая, когда мы сделали TEDxRussia прошло уже приличное время, много раз мы обсуждали, что получилось, а что &#8212; нет. Однако рассказать я хочу не об этом.</p>
<p>Дело в том, что, кажется, я только сейчас нашёл ответ на вопрос &laquo;что такое TED&raquo;.</p>
<p>Кажется, что ответ очень прост: &laquo;это такая американская конференция, где всякие именитые дядьки и тётьки рассказывают про то, что делают&raquo;. Но это не так.</p>
<p>Да, одним из проевлений TED-а является конференция. Вернее целая пачка конференций. Есть ежегодный TED, есть TEDGlobal, есть куча локальных TEDx-ов. Помимо этого есть <a href="http://ted.com/">ted.com</a> &#8212; сайт, посвящённый этому явлению. Ещё есть специальный проект с <a href="http://dotsub.com/view/user/tedtalks">dotsub</a>-ом, который сейчас активно интегрируетсяс основным сайтом и предназначен для перевода TEDTalk-ов, то есть записей отдельных выступлений, на кучу языков.</p>
<p>И это всё только вершина айсберга.</p>
<p>Самое главное, всё же, это люди &#8212; сообщество тех, кто придумывает, ищет и распространяет идеи, призванные изменить жизнь всех остальных к лучшему. Сообщество, в котором варятся проекты борьбы с малярией (да, от неё до сих пор умирает огромное количество людей). Сообщество тех, кому не наплевать на тех, кто рядом.</p>
<p>Что важно, удивительно и определённо восхитительно, так это то, что среди этих людей очень много тех, кого в нашем обществе обычно считают ущербными, инвалидами.</p>
<p>Одна женщина не только сумела пережит инсульт, но и зафиксировать своё состояние, понять изменения, происходившие с ней. Потом она рассказала сотням людей на конференции и тысячам, посмотревшим её TEDTalk о том, кто мы такие, как работают оба полушария нашего мозга.</p>
<p>Но другая женщина восхитила меня ещё больше. Она потеряла обе ноги. Как обычно поступают в этом случае люди? Мне кажется, что они начинают жалеть себя, оплакивать несбывшееся и несбыточное, а так же требовать заботы и помощи от окружающего мира. Знаете, что сделала эта женщина? Она решила, что теперь её ноги будут искусством! Теперь она заказывает себе протезы, которые не только позволяют ей вести полноценную жизнь, но и которые снимают для обложек глянцевых журналов. Каждый её протез &#8212; действительно уникальное произведение искусства. Я найду ссылку и обязательно дам в одном из ближайших постов. Хотите верьте, хотите &#8212; нет, но пока она сама не сказала об этом, я не понимал, что она ходит на протезах и почему позади неё стоитещё несколько пар. И с первой же секунды я просто восхищался тем, какие у неё были ноги.</p>
<p>Несколько лет назад два дня подряд мне пришлось работать на одном мероприятии для детей-инвалидов (они как-то политкорректно назывались, но я забыл, как). Ехал я туда с одной просто мыслью: &laquo;это каторга и для всех этих людей нужно создать отдельные города, где всё удобно, всё для них и они не мешают жить &laquo;нормальным&raquo; людям&raquo;. Как же я ошибался! К концу дня я вышел из здания в полном смятении. Большинство тех, с кем мне пришлось общаться были прекрасные, добрые, образованные и очень умные люди. Да, общаться с ними было непривычно, порой просто неприятно (с эстетической точки зрения) и очень сложно. Но если я закрывал глаза, то общение это становилось просто сказочно хорошим. На следующее утро &#8212; я практически не мог спать в ту ночь &#8212; я уже не был уверен, что мы (&raquo;нормальные&raquo; люди) поступаем правильно, зачастую игнорируя тех, кому по тем или иным причинам повезло быть чуть менее &laquo;нормальными&raquo;. Под конец второго дня я уже был уверен, что тротуар или лифт без пандуса для коляски &#8212; издевательство, а совершенно не приспособленные магазины и учреждения &#8212; свинство. Я проникся уважением к каждому, кто организовал то мероприятие и кто пришёл на него.</p>
<p>Так вот. TED это сообщество тех, кто не верит в поговорку &laquo;один в поле не воин&raquo;, кто точно уверен, что молчать больше нельзя и нужно действовать. TED &#8212; сообщество тех, кто &laquo;не жмёт&raquo; идеи, способные сделать мир лучше, а наоборот всячески старается сделать их общедоступными. И в то же время TED это сообщество тех, кто не только говорит и думает эти самые идеи, но и тех, кто воплощает их.</p>
<p>И это прекрасно, что TED дошёл и до России. Мы ведь ничуть не хуже Штатов, Европы или Индии. У нас тоже есть идеи и мы точно так же можем реализовывать их. И будем. Порой, возможно, даже вопреки всему.</p>
<p>У нас было всего шесть недель для того, чтобы сделать TEDxMoscow. Почти никто из тех, с кем мы разговаривали в начале этого марафона не верил, что конференция вообще случится. Но верили мы и она случилась. И это только первый шаг на большом длинном пути. Любая длинная дорога начинается с первого шага и мы его сделали. Теперь пора сказать: &laquo;места на этой дороге хватит всем &#8212; присоединяйтесь!&raquo;</p>
<img src="http://feeds.feedburner.com/~r/sitnin/~4/DFSt92noOp8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://gregor.ru/blog/2009/06/04/1186/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://gregor.ru/blog/2009/06/04/1186/</feedburner:origLink></item>
		<item>
		<title>Универсальный компьютер (base01)</title>
		<link>http://feedproxy.google.com/~r/sitnin/~3/tT6oWuggdRY/</link>
		<comments>http://gregor.ru/blog/2009/05/30/1180/#comments</comments>
		<pubDate>Sat, 30 May 2009 04:05:59 +0000</pubDate>
		<dc:creator>Григорий Ситнин</dc:creator>
				<category><![CDATA[Администрирование]]></category>
		<category><![CDATA[Конфигурации компьютеров]]></category>
		<category><![CDATA[amd]]></category>
		<category><![CDATA[asus]]></category>
		<category><![CDATA[benq]]></category>
		<category><![CDATA[lite-on]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[radeon]]></category>
		<category><![CDATA[seagate]]></category>
		<category><![CDATA[универсальный компьютер]]></category>

		<guid isPermaLink="false">http://gregor.ru/blog/?p=1180</guid>
		<description><![CDATA[
table {
margin-bottom: 1em;
}
th, td {
padding: 4px;
}
th {
background-color: #e0e0e0;
}

Вспомнил одну из старых идей &#8212; подбирать конфигурации компьютеров и публиковать их, помогая тем, кто мучается вопросом &#171;какой компьютер купить?&#187;
Сегодня расскажу об универсальной конфигурации, которую я не только советую друзьям, но и собираюсь купить себе.


Вид
Название


Корпус
ASCOT 6XR8/500


Систеная плата
ASUS M3A78-T


Процессор
AMD Phenom X4 9750


Память
Corsair Dominator TWIN2X4096-8500C5D (4Gb Kit)


Видеоадаптер
ATI Radeon HD3300 128Мб [...]]]></description>
			<content:encoded><![CDATA[<style>
table {
margin-bottom: 1em;
}
th, td {
padding: 4px;
}
th {
background-color: #e0e0e0;
}
</style>
<p>Вспомнил одну из старых идей &#8212; подбирать конфигурации компьютеров и публиковать их, помогая тем, кто мучается вопросом &laquo;какой компьютер купить?&raquo;</p>
<p>Сегодня расскажу об универсальной конфигурации, которую я не только советую друзьям, но и собираюсь купить себе.</p>
<table>
<tr>
<th>Вид</th>
<th>Название</th>
</tr>
<tr>
<td>Корпус</td>
<td>ASCOT 6XR8/500</td>
</tr>
<tr>
<td>Систеная плата</td>
<td>ASUS M3A78-T</td>
</tr>
<tr>
<td>Процессор</td>
<td>AMD Phenom X4 9750</td>
</tr>
<tr>
<td>Память</td>
<td>Corsair Dominator TWIN2X4096-8500C5D (4Gb Kit)</td>
</tr>
<tr>
<td>Видеоадаптер</td>
<td>ATI Radeon HD3300 128Мб (встроенный в системную плату)</td>
</tr>
<tr>
<td>Жёсткий диск</td>
<td>Seagate 7200.11 31000340AS (1Тб)</td>
</tr>
<tr>
<td>Оптический дисковод</td>
<td>LITE-ON iHES106-29 (Blue-Ray читает, DVD пишет)</td>
</tr>
<tr>
<td>Карт-ридер</td>
<td>HighPaq CR-Q004-Black</td>
</tr>
<tr>
<td>Клавиатура, мышь</td>
<td>Microsoft Wireless Optical Desktop 700</td>
</tr>
<tr>
<td>Монитор</td>
<td>BenQ G2411HD (24&#8243;, 1920&#215;1080)</td>
</tr>
</table>
<p>Такой компьютер будет не только украшать стол (все запчасти к нему чёрного цвета с серебристыми вставками, что безумно красиво смотрится), но и очень быстро молотить цифры. На нём комфортно просматривать FullHD-видео, чему способствуют быстрые процессор и мощная встроенная видеокарта, ёмкие и быстрые жёсткие диски, а так же широкоформатный монитор высокого разрешения.</p>
<p>Встроенная восьмиканальная звуковая карта, хоть и является &laquo;набортной&raquo;, выдаёт вполне приемлимый по качеству звук, не особенно нагружая процессор.</p>
<p>Беспроводной комплект Microsoft Wireless, состоящий из классической клавиатуры и оптической мыши позволит не запутаться в проводах, а встроенный на место трёх-дюймового дисковода многоформатный карт-ридер &#8212; быстро скопировать все ваши новые фотографии.</p>
<p>При всех своих достоинствах стоит такой компьютер (без монитора, клавиатуры и мыши) всего около 760 долларов (примерно 25 тысяч рублей при курсе 33 рубля за доллар), а полная цена составит примерно 1110 долларов (чуть менее 37 тысяч рублей).</p>
<p>Надо сказать, что технология &laquo;Hybrid Graphics&raquo;, используемая в этой конфигурации крайне интересна и полезна. Дело в том, что при добавлении в компьютер видеокарты Radeon (а их можно добавить аж три штуки) встроенный видеоадаптер не отключится, а ещё больше усилит их, отдавая свой видео-процессор в помощь &laquo;большой&raquo; карте.</p>
<p>Один мой приятель как-то отозвался об этой технологии следующим образом: &laquo;купил видеокарту X, поставил в систему и получил очень неплохое количество кадров в секунду (хотя оно было хорошим и со встроенным видео). решил поэкспериментировать и купил другую видеокарту, примерно на 150 долларов дороже. вставил новую, выключил полностью встроенную и разочаровался &#8212; кадров стало даже меньше, чем когда встроенная работала с более дешёвой картой в паре&raquo;.</p>
<p>Ну и какой же современный компьютер может быть без поддержки Blue-Ray и HDMI? Всё это присутствует в конфигурации, а оптический дисковод не только читает, но и прекрасно пишет DVD и CD-диски.</p>
<p>На этом описание конфигурации универсального компьютера я закончу. Буду рад обсудить какие-нибудь её аспекты.</p>
<p>Кстати, если вы хотите собрать компьютер с какими-либо заданными характеристиками (&raquo;цена не более чем&raquo; или, скажем, &laquo;самый передовой&raquo;) &#8212; пишите на <a href="mailto:gregor@gregor.ru">gregor@gregor.ru</a>, смогу вам помочь.</p>
<img src="http://feeds.feedburner.com/~r/sitnin/~4/tT6oWuggdRY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://gregor.ru/blog/2009/05/30/1180/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		<feedburner:origLink>http://gregor.ru/blog/2009/05/30/1180/</feedburner:origLink></item>
		<item>
		<title>Smarty в управляемой представлениями модели</title>
		<link>http://feedproxy.google.com/~r/sitnin/~3/bosDJADwW6o/</link>
		<comments>http://gregor.ru/blog/2009/05/27/1169/#comments</comments>
		<pubDate>Wed, 27 May 2009 05:21:03 +0000</pubDate>
		<dc:creator>Григорий Ситнин</dc:creator>
				<category><![CDATA[Программирование]]></category>
		<category><![CDATA[Сайтостроение]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[smarty]]></category>

		<guid isPermaLink="false">http://gregor.ru/blog/?p=1169</guid>
		<description><![CDATA[Обычно шаблонизатор Smarty применяется так: вы пишете код, который создаёт набор данных для шаблона, отдаёте вместе с названием шаблона смарти и тот &#171;соединяет бренды&#187;, выводя в браузер результат.
Это так называемая модель с ведущими контроллерами. То есть контроллер полностью отвечает за то, что получил шаблонизатор и вообще командует всем.
Ещё есть модель с ведущими представлениями. В ней [...]]]></description>
			<content:encoded><![CDATA[<p>Обычно шаблонизатор Smarty применяется так: вы пишете код, который создаёт набор данных для шаблона, отдаёте вместе с названием шаблона смарти и тот &laquo;соединяет бренды&raquo;, выводя в браузер результат.</p>
<p>Это так называемая модель с ведущими контроллерами. То есть контроллер полностью отвечает за то, что получил шаблонизатор и вообще командует всем.</p>
<p>Ещё есть модель с ведущими представлениями. В ней представление говорит контроллеру &laquo;а дай-ка мне, дорогой друг, список последних постов&raquo;, после чего контроллер дёргает модель, добывает этот список, обрабатывает и отдаёт представлению (в нашем случае &#8212; шаблонизатору).</p>
<p>Никакая из этих моделей не является лучшей, в разных случаях удобно использовать то одно, то другое. Тем не менее, смарти-из-коробки умеет работать только по первой схеме. Обучить его работать ещё и по второй оказалось совсем несложно.</p>
<blockquote><p><code><font face="Courier New" color="black">
<ol>
<li>&#60;?php</li>
<li><font color="#008000">/**</font></li>
<li><font color="#008000"> * index.php</font></li>
<li><font color="#008000"> *</font></li>
<li><font color="#008000"> * View-driven smarty usage sample</font></li>
<li><font color="#008000"> *</font></li>
<li><font color="#008000"> * Use {data id="SOMEID" var="TPLVAR"} construction in template</font></li>
<li><font color="#008000"> * to fetch data for template. Return of the DataFetcher object</font></li>
<li><font color="#008000"> * will be assigned to the variable with TPLVAR name.</font></li>
<li><font color="#008000"> *</font></li>
<li><font color="#008000"> * DataFetcher object must have function called fetch() with only</font></li>
<li><font color="#008000"> * parameter which value will be SOMEID.</font></li>
<li><font color="#008000"> *</font></li>
<li><font color="#008000"> * Smarty included in this archieve only for your convenience.</font></li>
<li><font color="#008000"> *</font></li>
<li><font color="#008000"> * Remember: it's just a sample</font></li>
<li><font color="#008000"> *</font></li>
<li><font color="#008000"> * @copyright (c) Gregory Sitnin, 2009. All rights reserved.</font></li>
<li><font color="#008000"> * @author Gregory Sitnin &#60;gregor@gregor.ru&#62;</font></li>
<li><font color="#008000"> *</font></li>
<li><font color="#008000"> */</font></li>
<li>&nbsp;</li>
<li>$config[<font color="#A31515">'base'</font>] = dirname(__FILE__);</li>
<li>$config[<font color="#A31515">'tmp'</font>] = $config[<font color="#A31515">'base'</font>].<font color="#A31515">'/tmp'</font>;</li>
<li>&nbsp;</li>
<li>final <font color="#0000ff">class</font> DataFetcher extends ConfiguratedObject {</li>
<li>&nbsp;&nbsp;<font color="#0000ff">function</font> fetch($name) {</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">return</font> <font color="#A31515">'Hello, World!'</font>;</li>
<li>&nbsp;&nbsp;}</li>
<li>} </li>
<li>&nbsp;</li>
<li>final <font color="#0000ff">class</font> SmartyRender extends ConfiguratedObject {</li>
<li>&nbsp;&nbsp;<font color="#0000ff">private</font> $smarty;</li>
<li>&nbsp;&nbsp;</li>
<li>&nbsp;&nbsp;<font color="#0000ff">function</font> __construct($config) {</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;parent::__construct($config);</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;require_once $<font color="#0000ff">this</font>-&#62;config[<font color="#A31515">'base'</font>].<font color="#A31515">'/smarty/Smarty.class.php'</font>;</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;$<font color="#0000ff">this</font>-&#62;smarty = <font color="#0000ff">new</font> Smarty();</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;$<font color="#0000ff">this</font>-&#62;smarty-&#62;template_dir = $<font color="#0000ff">this</font>-&#62;config[<font color="#A31515">'base'</font>];</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;$<font color="#0000ff">this</font>-&#62;smarty-&#62;compile_dir = $<font color="#0000ff">this</font>-&#62;config[<font color="#A31515">'tmp'</font>];</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;$<font color="#0000ff">this</font>-&#62;smarty-&#62;register_function(<font color="#A31515">'data'</font>, array ($<font color="#0000ff">this</font>, <font color="#A31515">'getDataProxy'</font>));</li>
<li>&nbsp;&nbsp;}</li>
<li>&nbsp;&nbsp;</li>
<li>&nbsp;&nbsp;<font color="#0000ff">public</font> <font color="#0000ff">function</font> getDataProxy($<font color="#0000ff">params</font>, &#38;$smarty) {</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">if</font> (!isset($<font color="#0000ff">params</font>[<font color="#A31515">'id'</font>])) {</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$smarty-&#62;trigger_error(<font color="#A31515">"data: id parameter must be set."</font>);</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;} elseif (!isset($<font color="#0000ff">params</font>[<font color="#A31515">'var'</font>])) {</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$smarty-&#62;trigger_error(<font color="#A31515">"data: var parameter must be set."</font>);</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;} <font color="#0000ff">else</font> {</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">try</font> {</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$fetcher = <font color="#0000ff">new</font> DataFetcher($<font color="#0000ff">this</font>-&#62;config);</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$smarty-&#62;assign($<font color="#0000ff">params</font>[<font color="#A31515">'var'</font>], $fetcher-&#62;fetch($<font color="#0000ff">params</font>[<font color="#A31515">'id'</font>]));</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} <font color="#0000ff">catch</font> (Exception $e) {</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$smarty-&#62;trigger_error(<font color="#A31515">'data: ('</font>.$e-&#62;getCode().<font color="#A31515">')'</font>.$e-&#62;getMessage());</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;}</li>
<li>&nbsp;&nbsp;}</li>
<li>&nbsp;&nbsp;</li>
<li>&nbsp;&nbsp;<font color="#0000ff">function</font> render($template, array $vars = <font color="#0000ff">null</font>) {</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;$<font color="#0000ff">this</font>-&#62;smarty-&#62;assign($vars);</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">return</font> $<font color="#0000ff">this</font>-&#62;smarty-&#62;fetch($template);</li>
<li>&nbsp;&nbsp;}</li>
<li>}</li>
<li>&nbsp;</li>
<li>final <font color="#0000ff">class</font> App extends ConfiguratedObject {</li>
<li>&nbsp;&nbsp;<font color="#0000ff">function</font> run() {</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;$render = <font color="#0000ff">new</font> SmartyRender($<font color="#0000ff">this</font>-&#62;config);</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;echo $render-&#62;render(<font color="#A31515">'index.tpl'</font>);</li>
<li>&nbsp;&nbsp;}</li>
<li>}</li>
<li>&nbsp;</li>
<li><font color="#0000ff">abstract</font> <font color="#0000ff">class</font> ConfiguratedObject {</li>
<li>&nbsp;&nbsp;<font color="#0000ff">protected</font> $config;</li>
<li>&nbsp;&nbsp;</li>
<li>&nbsp;&nbsp;<font color="#0000ff">function</font> __construct($config) {</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;$<font color="#0000ff">this</font>-&#62;config = $config;</li>
<li>&nbsp;&nbsp;}</li>
<li>}</li>
<li>&nbsp;</li>
<li>$app = <font color="#0000ff">new</font> App($config);</li>
<li>$app-&#62;run();</li>
<li>&nbsp;</li>
<li>?&#62;</li>
</ol>
<p></font><font size="1" color="gray">* This source code was highlighted with <a href="http://virtser.net/blog/post/source-code-highlighter.aspx"><font size="1" color="gray">Source Code Highlighter</font></a>.</font></code></p></blockquote>
<p>Интересное происходит на строках 41-57. Воспользовавшись методом $smarty->register_function() я объявил новую функцию шаблона &laquo;data&raquo;. Когда эта конструкция встречается в шаблоне, происходит вызов метода $this->getDataProxy() объекта SmartyRender.</p>
<p>На вход метода попадает ссылка на массив параметров, заданных в шаблоне и ссылка на объект smarty, который оперирует шаблоном, вызвавшим смарти-функцию.</p>
<p>Как здесь, так и далее нет никакой магии. Мы проверяем параметры и, если с ними всё в порядке, то создаём экземпляр класса DataFetcher. Результат вызова метода fetch() объекта DataFetcher станет переменной шаблона, которую далее можно использовать как угодно.</p>
<p>Сам шаблон в моём случае выглядит вот так:</p>
<blockquote><p><code><font face="Courier New" color="black">
<ol>
<li><font color="#0000ff">&#60;</font><font color="#800000">html</font><font color="#0000ff">&#62;</font></li>
<li><font color="#0000ff">&#60;</font><font color="#800000">head</font><font color="#0000ff">&#62;</font></li>
<li>&nbsp;&nbsp;<font color="#0000ff">&#60;</font><font color="#800000">title</font><font color="#0000ff">&#62;</font>View-driven Smarty test<font color="#0000ff">&#60;/</font><font color="#800000">title</font><font color="#0000ff">&#62;</font></li>
<li><font color="#0000ff">&#60;/</font><font color="#800000">head</font><font color="#0000ff">&#62;</font></li>
<li><font color="#0000ff">&#60;</font><font color="#800000">body</font><font color="#0000ff">&#62;</font></li>
<li>&nbsp;&nbsp;{data id="test" var="test"}</li>
<li>&nbsp;&nbsp;Fetched: {$test}</li>
<li><font color="#0000ff">&#60;/</font><font color="#800000">body</font><font color="#0000ff">&#62;</font></li>
<li><font color="#0000ff">&#60;/</font><font color="#800000">html</font><font color="#0000ff">&#62;</font></li>
</ol>
<p></font><font size="1" color="gray">* This source code was highlighted with <a href="http://virtser.net/blog/post/source-code-highlighter.aspx"><font size="1" color="gray">Source Code Highlighter</font></a>.</font></code></p></blockquote>
<p>Работающий код этого примера (включает Smarty): <a href="http://gregor.ru/files/blog/vdsmarty.zip">http://gregor.ru/files/blog/vdsmarty.zip</a></p>
<img src="http://feeds.feedburner.com/~r/sitnin/~4/bosDJADwW6o" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://gregor.ru/blog/2009/05/27/1169/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://gregor.ru/blog/2009/05/27/1169/</feedburner:origLink></item>
		<item>
		<title>Сет Годин о нарезанном хлебе</title>
		<link>http://feedproxy.google.com/~r/sitnin/~3/CGfxEK-bUzs/</link>
		<comments>http://gregor.ru/blog/2009/04/23/1163/#comments</comments>
		<pubDate>Thu, 23 Apr 2009 02:37:05 +0000</pubDate>
		<dc:creator>Григорий Ситнин</dc:creator>
				<category><![CDATA[Другое]]></category>
		<category><![CDATA[TED]]></category>
		<category><![CDATA[TEDx]]></category>
		<category><![CDATA[Сет Годин]]></category>
		<category><![CDATA[ссылки]]></category>

		<guid isPermaLink="false">http://gregor.ru/blog/?p=1163</guid>
		<description><![CDATA[Только что закончил переводить субтитры выступления, которое Сет Годин сделал на TED. Делюсь.
Переводы, кстати, делаются в рамках проекта TEDx Russia &#8212; нашей российской версии конференции, которая первый раз пройдёт через месяц.


Кстати, завтра (уже сегодня) еду на #ok2009, он же Киб-о-Риф.
]]></description>
			<content:encoded><![CDATA[<p>Только что закончил переводить <a href="http://dotsub.com/view/641b49c0-2967-4075-83ad-6a4893d3d9be">субтитры выступления</a>, которое Сет Годин сделал на <a href="http://ted.com/">TED</a>. Делюсь.</p>
<p>Переводы, кстати, делаются в рамках проекта <a href="http://tedx.ru/about/">TEDx Russia</a> &#8212; нашей российской версии конференции, которая первый раз пройдёт через месяц.</p>
<div align="center"><iframe src="http://dotsub.com/media/641b49c0-2967-4075-83ad-6a4893d3d9be/e/m" frameborder="0" width="420" height="347"></iframe></div>
<p></p>
<p>Кстати, завтра (уже сегодня) еду на #ok2009, он же Киб-о-Риф.</p>
<img src="http://feeds.feedburner.com/~r/sitnin/~4/CGfxEK-bUzs" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://gregor.ru/blog/2009/04/23/1163/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://gregor.ru/blog/2009/04/23/1163/</feedburner:origLink></item>
		<item>
		<title>Ещё одна причина, почему OpenID хорош</title>
		<link>http://feedproxy.google.com/~r/sitnin/~3/VvwGXSskIJs/</link>
		<comments>http://gregor.ru/blog/2009/04/13/1149/#comments</comments>
		<pubDate>Mon, 13 Apr 2009 14:20:29 +0000</pubDate>
		<dc:creator>Григорий Ситнин</dc:creator>
				<category><![CDATA[Размышления]]></category>
		<category><![CDATA[Сайтостроение]]></category>
		<category><![CDATA[openid]]></category>

		<guid isPermaLink="false">http://gregor.ru/blog/?p=1149</guid>
		<description><![CDATA[Настраивал сейчас SSL для того, чтобы поиграть с HTTPS и, постоянно напарываясь на предупреждения браузера типа &#171;сертификат сайта &#8212; полная туфта&#187;, подумал вот о чём.
Большие хорошие сервисы, предоставляющие OpenID уже давным давно авторизуют пользователей по HTTPS, купив у того же Verisign-а нормальные дорогие сертификаты. То есть, если мы используем для авторизации такие сервисы, то мы [...]]]></description>
			<content:encoded><![CDATA[<p>Настраивал сейчас SSL для того, чтобы поиграть с HTTPS и, постоянно напарываясь на предупреждения браузера типа &laquo;сертификат сайта &#8212; полная туфта&raquo;, подумал вот о чём.</p>
<p>Большие хорошие сервисы, предоставляющие OpenID уже давным давно авторизуют пользователей по HTTPS, купив у того же Verisign-а нормальные дорогие сертификаты. То есть, если мы используем для авторизации такие сервисы, то мы способствуем тому, что пользователь меньше рискует: ему не нужно входить в систему по небезопасному HTTP-протоколу, передавая логины-пароли в открытом виде.</p>
<p>Ну и раз пошла такая пьянка, то не могу не высказаться в поддержку разных умных людей, который утверждают, что не нужно грузить пользователей подробностями и вообще светить OpenID. Им, действительно стоит показать форму входа типа вот этой:</p>
<div align="center"><a href="http://xekc.com/auth-openid-xekc.png" title="Открыть в настоящем размере"><img src="http://xekc.com/auth-openid-xekc.png" alt="Правильный OpenID" width="250" height="174"/></a></div>
<img src="http://feeds.feedburner.com/~r/sitnin/~4/VvwGXSskIJs" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://gregor.ru/blog/2009/04/13/1149/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://gregor.ru/blog/2009/04/13/1149/</feedburner:origLink></item>
		<item>
		<title>Mysql Documentor</title>
		<link>http://feedproxy.google.com/~r/sitnin/~3/mD5iGPuiSd8/</link>
		<comments>http://gregor.ru/blog/2009/04/10/1143/#comments</comments>
		<pubDate>Thu, 09 Apr 2009 22:47:17 +0000</pubDate>
		<dc:creator>Григорий Ситнин</dc:creator>
				<category><![CDATA[Другое]]></category>

		<guid isPermaLink="false">http://gregor.ru/blog/?p=1143</guid>
		<description><![CDATA[Мы только что зарелизили  симпатичную и бесплатную утилиту для документирования баз данных Mysql 5+. Называется Mysql Documentor. GPL, Php/Mysqli.
Кстати, мы ещё и сайт Softuniq-а переделали.
]]></description>
			<content:encoded><![CDATA[<p>Мы только что зарелизили  симпатичную и бесплатную утилиту для документирования баз данных Mysql 5+. Называется <a href="http://habrahabr.ru/blogs/i_am_advertising/56883/">Mysql Documentor</a>. GPL, Php/Mysqli.</p>
<p>Кстати, мы ещё и <a href="http://softuniq.com/">сайт Softuniq</a>-а переделали.</p>
<img src="http://feeds.feedburner.com/~r/sitnin/~4/mD5iGPuiSd8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://gregor.ru/blog/2009/04/10/1143/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://gregor.ru/blog/2009/04/10/1143/</feedburner:origLink></item>
	</channel>
</rss>
