<?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>Bappoy's blog</title>
	
	<link>http://bappoy.pp.ru</link>
	<description>Линуксоид на велосипеде с моторчиком</description>
	<lastBuildDate>Sat, 30 Jan 2010 18:02:00 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</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/bappoy" /><feedburner:info uri="bappoy" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Линус Торвальдс о Eee PC</title>
		<link>http://feedproxy.google.com/~r/bappoy/~3/SHyAEFgGcsc/linus-about-eeepc.html</link>
		<comments>http://bappoy.pp.ru/2010/01/29/linus-about-eeepc.html#comments</comments>
		<pubDate>Fri, 29 Jan 2010 11:49:40 +0000</pubDate>
		<dc:creator>bappoy</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[asus eee pc]]></category>
		<category><![CDATA[hardware]]></category>
		<category><![CDATA[linus]]></category>

		<guid isPermaLink="false">http://bappoy.pp.ru/?p=915</guid>
		<description>&lt;div class="tweetmeme_button" style="float: right; margin-left: 10px;"&gt;&lt;a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fbappoy.pp.ru%2F2010%2F01%2F29%2Flinus-about-eeepc.html"&gt;&lt;img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fbappoy.pp.ru%2F2010%2F01%2F29%2Flinus-about-eeepc.html" height="61" width="51" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;В предыдущем посте — &lt;a href="http://bappoy.pp.ru/2010/01/29/linus-about-embroidery.html"&gt;небольшая история&lt;/a&gt; о том, как в Linux была улучшена поддержка устройств экстра-маленького размера благодаря покупки Линусом Торвальдсом вышивальной машинки :) В &lt;a href="http://article.gmane.org/gmane.linux.utilities.util-linux-ng/2888"&gt;письме Линуса&lt;/a&gt; в рассылку util-linux-ng@kernel.org было упомянуто, что для управления этой машинкой он использует Eee PC с Fedora 12 на борту. Как &lt;a href="http://bappoy.pp.ru/2008/05/06/eee-first-impressions.html"&gt;пользователь Eee PC 701g&lt;/a&gt; с почти двухлетним стажем, я заинтересовался и написал Линусу письмо с несколькими вопросами о его опыте использования этих компьютеров. Получилось мини-интервью, которое и предлагается вашему вниманию.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Q: Какие модели Eee PC Вы используете?&lt;/strong&gt;&lt;br /&gt;
A: У меня их две штуки: 701 и 901.&lt;/p&gt;
&lt;p&gt;Q: Это основной компьютер или один из дополнительных?&lt;br /&gt;
A: Нет, конечно же, это не основной компьютер. Atom тормозной как грех. Я считаю, что процессоры с прямым выполнением команд (in-order execution) — преступление против человечности, и я уверен в том, что если Intel не предпримет значительных шагов (т.е. сделает Atom &lt;a href="http://en.wikipedia.org/wiki/Out-of-order_execution"&gt;out-of-order&lt;/a&gt;), ARM Cortex A9 захватит рынок low-end машин.&lt;/p&gt;
&lt;p&gt;У меня есть пара нетбуков, потому что я люблю маленькие компьютеры и использую их в поездках. Но они никогда не могли бы служить основными машинами для разработки или чем-то вроде этого.&lt;/p&gt;
&lt;p&gt;701 слишком мелкий для того, чтобы быть полезным. Экран крошечный и у него непозволительно маленькое разрешение. Клавиатуру едва можно использовать. 901 намного лучше и мог бы быть неплохим помощником в поездках, но разрешение тоже слишком маленькое (9 дюймов нормально, но 1024&amp;#215;600 юзабельно только для смартфонов, а для лэптопов подошло бы как минимум 1366&amp;#215;768, как мне кажется)&lt;/p&gt;
&lt;p&gt;Поэтому я не использую ни один из них ни для чего, кроме тестирования. 901 используется моей женой для её вышивальной машинки, и для такого, обычного использования он подходит очень хорошо.&lt;/p&gt;
&lt;p&gt;ВНИМАНИЕ! Наверно, следует заметить, что мои требования могут быть завышенными по сравнению с требованиями многих других людей. Моя основная машина — Nehalem 3.2 GHz c 6 GB RAM и двумя быстрыми SSD-дисками от Intel. Поэтому мои представления о том, какая производительность может считаться &amp;#8220;приемлемой&amp;#8221;, могут не совпадать с представлениями других.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Q: какие задачи Eee PC помогает Вам выполнять?&lt;/strong&gt;&lt;br /&gt;
A: Сейчас 701 работает тестовым стендом для совершенно различных вещей — я держу его поблизости в основном как  32-битный x86-стенд (все мои основные машины — x86-64, поэтому, если мне нужно проверить, что 32 бита еще работают, я использую 701).&lt;/p&gt;
&lt;p&gt;901 я иногда использовал в поездках как лэптоп, и в основном он меня удовлетворял, но, откровенно говоря, существуют нормальные ноутбуки, которые намного-намного-намного лучше.&lt;/p&gt;
&lt;p&gt;Например, я немного поигрался с машинами, основанными на CULV Core 2 Duo (вместо Atom) с экраном 1366&amp;#215;768 и внезапно обнаружил, что может быть намного более мощная &lt;em&gt;(чем eeepc — прим.пер.)&lt;/em&gt; сборка. Она больше по размерам (10 дюймов), потребляет больше энергии, но оно того стоит.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Q: приобрели ли Вы эти нетбуки самостоятельно или они были подарены?&lt;/strong&gt;&lt;br /&gt;
A: Оба Eee PC были подарены. 10&amp;#8243; CULV Core2 было самым достойным приобретением, на которое я потратил свои деньги.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Q: сколько времени Вы проводите перед этим нетбуком? Достаточен ли его размер для Вас?&lt;/strong&gt;&lt;br /&gt;
A: См. выше. 701 и близко не стоял. 901 вполне пригоден к использованию, и если бы у него не было такое маленькое разрешение, он мог бы быть неплохим помощником в путешествиях.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Q: производились ли какие-нибудь аппаратные модификации?&lt;/strong&gt;&lt;br /&gt;
A: в оба добавил памяти, вроде сейчас в обоих по 2 Гб (возможно, 701 был с 512 мегабайтами, и я проапгрейдил до гигабайта, слишком лениво проверять). И еще в оба добавил ПЗУ: в 701 — быструю SD-карточку (понятие &amp;#8220;быстрая&amp;#8221; тут весьма относительно, но для SD-карточки неплохой результат), в 901 — Mini-PCI SSD.&lt;/p&gt;
&lt;p&gt;Мне нравятся high-end SSD (например, &lt;a href="http://torvalds-family.blogspot.com/2008/10/so-i-got-one-of-new-intel-ssds.html"&gt;интеловские замены жестким дискам&lt;/a&gt;), но те, что используются в low-end нетбуках, страдают от ужасающе отвратительной скорости записи. Поэтому SSD в этих нетбуках, как правило, медленнее, чем реальные диски.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Q: и еще один, более общий вопрос. Как Ваше рабочее время распределено между кодированием и административной/политической/социальной деятельностью?&lt;/strong&gt;&lt;br /&gt;
A: Сейчас кодирую очень мало. Практически всё время занято обсуждениями с другими разработчиками и внесением их изменений в ядро.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/bappoy/~4/SHyAEFgGcsc" height="1" width="1"/&gt;</description>
		<wfw:commentRss>http://bappoy.pp.ru/2010/01/29/linus-about-eeepc.html/feed</wfw:commentRss>
		<slash:comments>19</slash:comments>
		<feedburner:origLink>http://bappoy.pp.ru/2010/01/29/linus-about-eeepc.html</feedburner:origLink></item>
		<item>
		<title>Линус Торвальдс о машинках для вышивания</title>
		<link>http://feedproxy.google.com/~r/bappoy/~3/ZlYbs9aSysI/linus-about-embroidery.html</link>
		<comments>http://bappoy.pp.ru/2010/01/29/linus-about-embroidery.html#comments</comments>
		<pubDate>Fri, 29 Jan 2010 06:11:48 +0000</pubDate>
		<dc:creator>bappoy</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[linus]]></category>

		<guid isPermaLink="false">http://bappoy.pp.ru/?p=908</guid>
		<description>&lt;div class="tweetmeme_button" style="float: right; margin-left: 10px;"&gt;&lt;a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fbappoy.pp.ru%2F2010%2F01%2F29%2Flinus-about-embroidery.html"&gt;&lt;img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fbappoy.pp.ru%2F2010%2F01%2F29%2Flinus-about-embroidery.html" height="61" width="51" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;b&gt;Часть первая.&lt;/b&gt;&lt;br /&gt;
На Рождество Санта Клаус подарил Туве Торвальдс  машинку для вышивания. Среди прочих достоинств эта машинка имеет USB-интерфейс, по которому можно закачивать заранее приобретённые шаблоны вышивки в специальном закрытом формате. При подключении к компьютеру это чудо техники через минуту определяется как USB mass storage с файловой системой FAT12,  при этом закачивание небольших файлов происходит очень долго и зачастую не приводит ни к каким результатам: о возникающих ошибках пользователю ничего не сообщается. Таково всё проприетарное ПО, — &lt;a href="http://torvalds-family.blogspot.com/2010/01/embroidery-gaah.html"&gt;сетует&lt;/a&gt; Линус, — закрытые форматы, кривые прошивки, невнятные ошибки&amp;#8230; Проблема предпросмотра шаблонов вышивок в формате PES на компьютере оказалась самой простой и теперь на git.kernel.org имеется специальная программа &lt;a href="http://git.kernel.org/?p=linux/kernel/git/torvalds/pesconvert.git;a=summary"&gt;pesconvert&lt;/a&gt; для обслуживания вышивальных машинок.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Часть вторая.&lt;/b&gt;&lt;br /&gt;
Линус пишет &lt;a href="http://thread.gmane.org/gmane.linux.utilities.util-linux-ng/2888"&gt;письмо&lt;/a&gt; в рассылку util-linux-ng@vger.kernel.org с детальным описанием длительного процесса определения типов разделов и ФС на маленьком, медленном и подглючивающем блочном устройстве. После активного обсуждения (которое, несмотря на явную гиковость, можно читать как захватывающий детектив) было найдено несколько узких мест в  утилите blkid, пытающейся определить более чем 50 типов файловых систем по их сигнатурам, что приводит к неоднократному чтению 69 килобайт с устройства, и в сумме объём прочитанных данных, с учётом упреждающего чтения, составляет около половины объёма всего устройства. Учитывая тот факт, что скорость обмена данными у этой штуки составляет 16  килобайт в секунду, простое определение единственного fat-раздела занимает около 30 секунд (всё это нужно для того, чтобы udev смог корректно примонтировать это устройство).&lt;/p&gt;
&lt;p&gt;Совместными усилиями задержка была сведена к рекордному минимуму в полсекунды. Для этого Karel Zak (главный мейнтейнер util-linux-ng) добавил в blkid несколько опций, ограничивающих количество возможных ФС и объём читаемых данных для очень маленьких устройств (зачем пытаться определить raid на диске размером с полдискеты?), Линус немного оптимизировал кое-какие системные вызовы и теперь в ближайшем выпуске util-linux-ng будет заявлена поддержка очень маленьких дисков, а в ядре Linux, чем черт не шутит — частичная поддержка неких вышивальных машинок.&lt;/p&gt;
&lt;p&gt;Часть третья последует, не пропустите.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/bappoy/~4/ZlYbs9aSysI" height="1" width="1"/&gt;</description>
		<wfw:commentRss>http://bappoy.pp.ru/2010/01/29/linus-about-embroidery.html/feed</wfw:commentRss>
		<slash:comments>11</slash:comments>
		<feedburner:origLink>http://bappoy.pp.ru/2010/01/29/linus-about-embroidery.html</feedburner:origLink></item>
		<item>
		<title>Несколько ссылок по истории computer science</title>
		<link>http://feedproxy.google.com/~r/bappoy/~3/t4PNfvk-PVo/computer-sciense-history.html</link>
		<comments>http://bappoy.pp.ru/2010/01/25/computer-sciense-history.html#comments</comments>
		<pubDate>Mon, 25 Jan 2010 12:06:44 +0000</pubDate>
		<dc:creator>bappoy</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[history]]></category>
		<category><![CDATA[unix]]></category>

		<guid isPermaLink="false">http://bappoy.pp.ru/?p=847</guid>
		<description>&lt;div class="tweetmeme_button" style="float: right; margin-left: 10px;"&gt;&lt;a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fbappoy.pp.ru%2F2010%2F01%2F25%2Fcomputer-sciense-history.html"&gt;&lt;img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fbappoy.pp.ru%2F2010%2F01%2F25%2Fcomputer-sciense-history.html" height="61" width="51" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;Несколько месяцев назад заинтересовался причинами появления управляющих кодов ASCII в их нынешнем виде. Раскопки привели меня к первым терминалам в Multics, терминалы — к телетайпам, телетайпы — к телеграфным аппаратам. Тема чрезвычайно интересная, но полноценного поста у меня так и не вышло по разным причинам. Просто накидаю сюда ссылок для интересующихся (в основном на английском).&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Unix и его предшественники&lt;/b&gt;&lt;br /&gt;
&lt;a href="http://www.multicians.org/"&gt;Multicians.org&lt;/a&gt; — один из основных сайтов по предыстории Unix. В основном описывает различные аспекты ОС Multics (включая &lt;a href="http://archive.computerhistory.org/resources/text/Honeywell/Honeywell.MulticsSystem.1975.102646162.pdf"&gt;рекламную брошюру&lt;/a&gt; (4 Мб)), но содержит также массу сведений и о ранних вариантах &lt;a href="http://www.multicians.org/unix.html"&gt;Unix&lt;/a&gt;, и о &lt;a href="http://www.multicians.org/thvv/7094.html"&gt;CTSS&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.levenez.com/unix/"&gt;Unix history&lt;/a&gt; — основной сайт по истории Unix.&lt;/p&gt;
&lt;p&gt;Концепция иерархической файловой системы &lt;a href="http://www.multicians.org/features.html#tag1.1"&gt;впервые&lt;/a&gt; была &lt;a href="http://www.multicians.org/fjcc4.html"&gt;описана&lt;/a&gt; в 1965 году и сильно отличалась от ныне используемой. В частности, в качестве разделителя каталогово предлагалось использовать двоеточие, а на уровень выше можно было  ссылаться как на &lt;code&gt;*&lt;/code&gt;; у каждого файла присутствовал специальный атрибут TRAP, в котором можно было указать свою процедуру проверки прав доступа к этому файлу. Но уже в Multics реализация файловой системы значительно отличалась от данного проекта иной, а в Unix и вовсе приняла привычный нам вид.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://cm.bell-labs.com/cm/cs/who/dmr/hist.html"&gt;The Evolution of the Unix Time-sharing System&lt;/a&gt; (Dennis M. Ritchie, 1979) — краткая история Unix, рассказанная одним из её создателей.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.usenix.org/events/usenix09/tech/full_papers/toomey/toomey.pdf"&gt;The Restoration of Early UNIX Artifacts&lt;/a&gt; — опыт восстановления файлов с древней ленты, содержащей один из самых первых релизов Unix. В конце документа несколько интересных ссылок.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.bitsavers.org/pdf/bellLabs/unix/PreliminaryUnixImplementationDocument_Jun72.pdf"&gt;Исходный код Unix&lt;/a&gt; — отсканированная распечатка тщательно прокомментированных ассемблерных кодов  Unix. Датируется 1972 годом. 11 мегабайт.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://74.125.77.132/search?q=cache:l4ZThOZLuR0J:searchenterpriselinux.techtarget.com/tip/0,289483,sid39_gci1098161,00.html+http://searchenterpriselinux.techtarget.com/tip/0,289483,sid39_gci1098161,00.html&amp;#038;cd=1&amp;#038;hl=en&amp;#038;ct=clnk"&gt;Excavating ancient abbreviations in Linux&lt;/a&gt; ­— история происхождения некоторых аббревиатур, используемых в UNIX/Linux (для чтения &lt;a href="http://searchenterpriselinux.techtarget.com/tip/0,289483,sid39_gci1098161,00.html"&gt;оригинала&lt;/a&gt; требуется&lt;br /&gt;
регистрация, поэтому ссылка на кэш гугла).&lt;/p&gt;
&lt;p&gt;Буду благодарен за PDF/DJVU версию книги &amp;#8220;A quarter century of Unix&amp;#8221; by Peter Salus :)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Терминалы&lt;/b&gt;&lt;br /&gt;
&lt;a href="http://www.cs.utk.edu/~shuford/terminal/"&gt;Коллекция информации о текстовых терминалах&lt;/a&gt;, отправная точка исследований.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.multicians.org/terminals.html"&gt;Рассказ одного из создателей Multics о первых терминалах&lt;/a&gt; и опыте удалённой домашней работы (70-е годы, суперкрутые модемы на 1200 бод) (en)&lt;/p&gt;
&lt;p&gt;&lt;a href="http://vt100.net/vt_history"&gt;Краткая история терминалов DEC (в т.ч. VT100)&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://foldoc.org/smart+terminal"&gt;Что такое &amp;#8220;smart terminal&amp;#8221;&lt;/a&gt; и чем он отличается от &amp;#8220;dumb terminal&amp;#8221;. В&lt;br /&gt;
основном тем, что умеет проверять пользовательский ввод уже на стороне терминала, а не передаёт его серверу.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Телеграф&lt;/b&gt;&lt;br /&gt;
&lt;a href="http://www.qrz.ru/articles/article243.html"&gt;К вопросу о возникновении телеграфа&lt;/a&gt; множество интересных сведений из истории телеграфной связи&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.3dnews.ru/editorial/razgovor_tekstom/"&gt;История телеграфа в России&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.amyat.narod.ru/theory/goloveshkin_murashkin_telegrafnoe_delo/index.htm"&gt;Телеграфное дело. Пособие для сержантов и старших специалистов войск связи&lt;/a&gt; — раритет :) Книжка 1946 года выпуска, доступно и понятно описывает теорию электротехники и электроники по состоянию на момент окончания Великой Отечественной войны, а также знакомит читателя с основными понятиями телеграфной связи.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/bappoy/~4/t4PNfvk-PVo" height="1" width="1"/&gt;</description>
		<wfw:commentRss>http://bappoy.pp.ru/2010/01/25/computer-sciense-history.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://bappoy.pp.ru/2010/01/25/computer-sciense-history.html</feedburner:origLink></item>
		<item>
		<title>Шпаргалка по созданию chroot-окружения в Debian средствами debootstrap</title>
		<link>http://feedproxy.google.com/~r/bappoy/~3/Ha1C_CVR2uE/debian-chroot.html</link>
		<comments>http://bappoy.pp.ru/2010/01/20/debian-chroot.html#comments</comments>
		<pubDate>Wed, 20 Jan 2010 10:49:45 +0000</pubDate>
		<dc:creator>bappoy</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[chroot]]></category>
		<category><![CDATA[debian]]></category>

		<guid isPermaLink="false">http://bappoy.pp.ru/?p=845</guid>
		<description>&lt;div class="tweetmeme_button" style="float: right; margin-left: 10px;"&gt;&lt;a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fbappoy.pp.ru%2F2010%2F01%2F20%2Fdebian-chroot.html"&gt;&lt;img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fbappoy.pp.ru%2F2010%2F01%2F20%2Fdebian-chroot.html" height="61" width="51" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;Для тестирования различных версий нашего продукта (внутри — БД под управлением mysql и интерфейс к ней на PHP под Apache2)  требуется быстро создавать многочисленные chroot-окружения на выделенном сервере и управляться с ними. &lt;/p&gt;
&lt;p&gt;В базовой системе (lenny) оставляем только функционал, необходимый для управления всем хозяйством, лично мне необходимы mc, openssh, vim, bash_completion и иногда svn. Также неплохо поиметь где-нибудь (да хоть на этой же машине) кэширующий прокси для репозиториев debian, типа &lt;a href="http://apt-proxy.sourceforge.net/"&gt;apt-proxy&lt;/a&gt; или &lt;a href="http://www.nick-andrew.net/projects/apt-cacher/"&gt;apt-cacher&lt;/a&gt;, чтобы не создавать излишнюю нагрузку на региональные зеркала. У нас используется apt-cacher, работающий по адресу http://apt:3142.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://wiki.debian.org/Debootstrap"&gt;Debootstrap&lt;/a&gt; ­— основная рабочая лошадка:&lt;/p&gt;
&lt;pre&gt;apt-get install debootstrap&lt;/pre&gt;
&lt;pre&gt;debootstrap --include=mc,ssh,vim lenny /systems/lenny http://apt:3142/ftp.debian.org/debian/&lt;/pre&gt;
&lt;p&gt;Первый аргумент — название релиза, второй — путь, куда устанавливается система, третий — адрес репозитория. В опции &amp;#8211;include через запятую указываются пакеты, которые необходимы, но не входят в минимальную базовую систему. Debootstrap выкачивает из репозитория и устанавливает минимальный набор пакетов, теоретически сразу после этого можно делать chroot /systems/lenny и переходить к работе, но осталась еще несколько немаловажных доделок:&lt;/p&gt;
&lt;p&gt;Добавляем идентификатор системы, который будет отображаться в скобках в приглашении шелла (читай — bash), выполняемом в chroot-окружении:&lt;/p&gt;
&lt;pre&gt;echo lenny &gt; /systems/lenny/etc/debian_chroot&lt;/pre&gt;
&lt;p&gt;Но работа в основном ведется от имени root, а в squeeze и sid у root&amp;#8217;а в .bashrc переменная окружения PS1 переопределяется и этот идентификатор пропадает. Поэтому если делаем виртуалку squeeze, то строчку с PS1 в /root/.bashrc лучше закомментировать:&lt;/p&gt;
&lt;pre&gt;sed -i 's/^\(export PS1.*\)$/#\1/g' /systems/&lt;b&gt;&lt;font color="red"&gt;squeeze&lt;/font&gt;&lt;/b&gt;/root/.bashrc&lt;/pre&gt;
&lt;p&gt;Монтируем /dev/pts — виртуальную файловую систему, которая динамически создаёт файлы терминалов /dev/pts/X для каждого нового подключения; это необходимо для нормального функционирования многих программ, работающих с терминалом, в т.ч. скриптов postinst и config пакета mysql-server:&lt;/p&gt;
&lt;pre&gt;mount -t devpts devpts /systems/lenny/dev/pts&lt;/pre&gt;
&lt;p&gt;Монтируем /proc (реально proc в новом месте будет содержать ту же информацию, что и общесистемный /proc):&lt;/p&gt;
&lt;pre&gt;mount -t proc proc /systems/lenny/proc&lt;/pre&gt;
&lt;p&gt;Чтобы apt-get не ругался на неподписанные пакеты при установке, необходимо обновить файл Release.gpg, т.к. по умолчанию debootstrap его не устанавливает. Это проще всего сделать обновлением индексных файлов репозитория:&lt;/p&gt;
&lt;pre&gt;chroot /systems/lenny apt-get update&lt;/pre&gt;
&lt;p&gt;После этого уже можно делать &lt;code&gt;chroot /systems/lenny&lt;/code&gt;, устанавливать и настраивать пакеты, запускать/останавливать сервисы и т.д. Главная проблема при этом ­— следить за тем, чтобы сервисы в разных chroot&amp;#8217;ах не конфликтовали, пытаясь занять порт на одном IP-адресе. Обычно добавляются виртуальные сетевые интерфейсы и им назначаются виртуальные же IP-адреса, которые и указываются в настройках сервисов.&lt;/p&gt;
&lt;p&gt;Disclaimer: данная заметка описывает мой персональный опыт и не претендует на полноту. Комментарии и дополнения приветствуются.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/bappoy/~4/Ha1C_CVR2uE" height="1" width="1"/&gt;</description>
		<wfw:commentRss>http://bappoy.pp.ru/2010/01/20/debian-chroot.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://bappoy.pp.ru/2010/01/20/debian-chroot.html</feedburner:origLink></item>
		<item>
		<title>Как не пропустить момент установки нового ядра с помощью команды watch</title>
		<link>http://feedproxy.google.com/~r/bappoy/~3/87dxgzt8JRc/watch.html</link>
		<comments>http://bappoy.pp.ru/2010/01/13/watch.html#comments</comments>
		<pubDate>Wed, 13 Jan 2010 16:52:33 +0000</pubDate>
		<dc:creator>bappoy</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[humor]]></category>

		<guid isPermaLink="false">http://bappoy.pp.ru/?p=886</guid>
		<description>&lt;div class="tweetmeme_button" style="float: right; margin-left: 10px;"&gt;&lt;a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fbappoy.pp.ru%2F2010%2F01%2F13%2Fwatch.html"&gt;&lt;img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fbappoy.pp.ru%2F2010%2F01%2F13%2Fwatch.html" height="61" width="51" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;Выдержка из &lt;code&gt;man 1 watch&lt;/code&gt; (входит в комплект утилит procps в Debian Lenny):&lt;/p&gt;
&lt;pre&gt;You can watch for your administrator to install the latest kernel with

        watch uname -r

(Note that &lt;u&gt;-p&lt;/u&gt; isn’t guaranteed to work across reboots, especially
in the face of &lt;b&gt;ntpdate&lt;/b&gt; or other bootup time-changing mechanisms)&lt;/pre&gt;&lt;img src="http://feeds.feedburner.com/~r/bappoy/~4/87dxgzt8JRc" height="1" width="1"/&gt;</description>
		<wfw:commentRss>http://bappoy.pp.ru/2010/01/13/watch.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://bappoy.pp.ru/2010/01/13/watch.html</feedburner:origLink></item>
		<item>
		<title>Разделение аргументов в shebang</title>
		<link>http://feedproxy.google.com/~r/bappoy/~3/ZbR7IW_xU0k/shebang-args.html</link>
		<comments>http://bappoy.pp.ru/2009/12/28/shebang-args.html#comments</comments>
		<pubDate>Sun, 27 Dec 2009 20:29:25 +0000</pubDate>
		<dc:creator>bappoy</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[kernel]]></category>
		<category><![CDATA[shebang]]></category>

		<guid isPermaLink="false">http://bappoy.pp.ru/?p=870</guid>
		<description>&lt;div class="tweetmeme_button" style="float: right; margin-left: 10px;"&gt;&lt;a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fbappoy.pp.ru%2F2009%2F12%2F28%2Fshebang-args.html"&gt;&lt;img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fbappoy.pp.ru%2F2009%2F12%2F28%2Fshebang-args.html" height="61" width="51" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;В &lt;a href="http://bappoy.pp.ru/2008/12/29/bash-pitfalls-part05.html#comment-8577"&gt;комментариях&lt;/a&gt; к прошлогоднему &lt;a href="http://bappoy.pp.ru/tag/bash-pitfalls"&gt;переводу Bash Pitfalls&lt;/a&gt; внимательный &lt;b&gt;flavi&lt;/b&gt; задался вопросом, почему при попытке выполнить скрипт, в начале которого написано &lt;/p&gt;
&lt;pre&gt;#!/bin/bash --posix --verbose&lt;/pre&gt;
&lt;p&gt;выдаётся ошибка &lt;/p&gt;
&lt;pre&gt;/bin/bash: --posix --verbose: invalid option&lt;/pre&gt;
&lt;p&gt;в то время как в интерактивном режиме bash нормально запускается с такой комбинацией опций; более того, если в shebang&amp;#8217;е оставить только одну из этих опций, то скрипт также запускается без ошибок.&lt;/p&gt;
&lt;p&gt;Поначалу я предположил, что &lt;code&gt;--posix&lt;/code&gt; запрещает    опции, не определённые &lt;a href="http://www.opengroup.org/onlinepubs/009695399/utilities/sh.html"&gt;стандартом POSIX на sh&lt;/a&gt;. Но тогда попытка выполнить &lt;code&gt;bash --posix --norc&lt;/code&gt; также приводила бы к ошибке, и конструкция &lt;code&gt;#!/bin/bash --verbose --norc&lt;/code&gt; работала бы нормально, а это не так.&lt;/p&gt;
&lt;p&gt;Пришлось разбираться более плотно. В &lt;code&gt;bash (1)&lt;/code&gt; я вычитал следующее (выделение — моё):&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;If the program is a file beginning with #!, the remainder of the first line specifies an interpreter for the  program.  The shell executes the specified interpreter on operating systems that do not handle this  executable format themselves.  The arguments to the interpreter consist of a  &lt;b&gt;single&lt;/b&gt;&lt;b&gt;  optional  argument  following  the  interpreter  name on the first line of the program, followed by the name of the program, followed by the command arguments, if any.&lt;/b&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Т.е. в shebang можно задавать только один аргумент; кроме того, bash самостоятельно анализирует shebang и вызывает указанный интерпретатор только в случае, если система сама не может выполнить этот скрипт.&lt;/p&gt;
&lt;p&gt;Сам файл передаётся на выполнение с помощью системного вызова &lt;code&gt;execve (2)&lt;/code&gt; (это я вычитал в файле &lt;code&gt;execute_cmd.c&lt;/code&gt; в исходном коде bash), в man-странице которого и разъясняется политика партии по поводу разбиения аргументов интерпретатора:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;On Linux, the entire string following the interpreter name is passed as a single argument  to  the  interpreter, and this string can include white space.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Таким образом, в самом первом примере у bash в argv оказывается  не два аргумента &lt;code&gt;--verbose&lt;/code&gt; и &lt;code&gt;--norc&lt;/code&gt;, а  один &lt;code&gt;--verbose --norc&lt;/code&gt;, что и приводит к ошибке, и вина bash лишь в том, что он не разбивает свои аргументы на части, как это делает, например, Perl.&lt;/p&gt;
&lt;p&gt;Причина такого странного поведения операционной системы (казалось бы, что сложного в том, чтобы просто разбить строку на части по пробелам или символам табуляции) описана, например, &lt;a href="http://lkml.indiana.edu/hypermail/linux/kernel/0812.0/02503.html"&gt;в этой дискуссии LKML&lt;/a&gt; или, более подробно, в &lt;a href="http://unix.derkeiler.com/Mailing-Lists/FreeBSD/arch/2005-02/0039.html"&gt;письме Garance A Drosihn&lt;/a&gt; в рассылку freebsd-arch. Вкратце, если бы механизм механизм обработки shebang (в Linux — &lt;a href="http://lxr.linux.no/#linux+v2.6.32/fs/binfmt_script.c"&gt;linux/fs/binfmt_script.c&lt;/a&gt;) передавал все аргументы интерпретатору, то для некоторых из них было бы затруднительно отделить аругменты интерпретатора от собственно аргументов  вызываемого скрипта. По крайней мере, так было еще на заре развития Unix и с тех пор &lt;a href="http://www.in-ulm.de/~mascheck/various/shebang/#results"&gt;большая часть Unix-систем&lt;/a&gt; передаёт все аргументы как единую строку.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/bappoy/~4/ZbR7IW_xU0k" height="1" width="1"/&gt;</description>
		<wfw:commentRss>http://bappoy.pp.ru/2009/12/28/shebang-args.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://bappoy.pp.ru/2009/12/28/shebang-args.html</feedburner:origLink></item>
		<item>
		<title>Басни про git</title>
		<link>http://feedproxy.google.com/~r/bappoy/~3/33MDKOL_DVk/git.html</link>
		<comments>http://bappoy.pp.ru/2009/12/27/git.html#comments</comments>
		<pubDate>Sat, 26 Dec 2009 22:19:50 +0000</pubDate>
		<dc:creator>bappoy</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[git]]></category>

		<guid isPermaLink="false">http://bappoy.pp.ru/2009/12/27/%d0%b1%d0%b0%d1%81%d0%bd%d1%8f-%d0%bf%d1%80%d0%be-git.html</guid>
		<description>&lt;div class="tweetmeme_button" style="float: right; margin-left: 10px;"&gt;&lt;a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fbappoy.pp.ru%2F2009%2F12%2F27%2Fgit.html"&gt;&lt;img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fbappoy.pp.ru%2F2009%2F12%2F27%2Fgit.html" height="61" width="51" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;Пытающимся отвыкнуть от идеологии CVS и SVN —  &lt;a href="http://hades.name/blog/2009/05/23/the-git-parable-ru/"&gt;рассказ о концепциях распределённых систем контроля версий&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://los-t.livejournal.com/tag/git+guts"&gt;Более подробное введение&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size=small&gt;ага, для ссылок есть твиттер и del.icio.us, но ЭТУ ссылку я уже однажды потерял. Так что пусть тут побудет, в назидание.&lt;/font&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/bappoy/~4/33MDKOL_DVk" height="1" width="1"/&gt;</description>
		<wfw:commentRss>http://bappoy.pp.ru/2009/12/27/git.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://bappoy.pp.ru/2009/12/27/git.html</feedburner:origLink></item>
		<item>
		<title>Очередные мелочи Firefox</title>
		<link>http://feedproxy.google.com/~r/bappoy/~3/MnFaV2Xk8gI/firefox.html</link>
		<comments>http://bappoy.pp.ru/2009/12/23/firefox.html#comments</comments>
		<pubDate>Wed, 23 Dec 2009 06:15:12 +0000</pubDate>
		<dc:creator>bappoy</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[firefox]]></category>

		<guid isPermaLink="false">http://bappoy.pp.ru/?p=855</guid>
		<description>&lt;div class="tweetmeme_button" style="float: right; margin-left: 10px;"&gt;&lt;a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fbappoy.pp.ru%2F2009%2F12%2F23%2Ffirefox.html"&gt;&lt;img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fbappoy.pp.ru%2F2009%2F12%2F23%2Ffirefox.html" height="61" width="51" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;Функция &amp;#8220;detach tab&amp;#8221;, актуальная при наличии двух мониторов, в Firefox 3.0 (он же Iceweasel в Debian) в явном виде отсутствует, но хотя на пустое место вкладку перетащить нельзя (как, например, в gnome-terminal), работает простое перетаскивание вкладок между окнами. Таким образом, чтобы отделить вкладку в отдельное окно, нужно сначала создать это окно (Ctrl+N), сделать его видимым одновременно с основным и перетащить туда эту вкладку. В Firefox 3.5 для выделения вкладки в новое окно есть пункт &amp;#8220;Open in a new window&amp;#8221; в контекстном меню вкладки.&lt;/p&gt;
&lt;p&gt;Чтобы в режиме fullscreen строка статуса всегда оставалась видимой, нужно создать файл настроек интерфейса &lt;strong&gt;%profiledir%/chrome/userChrome.css&lt;/strong&gt; (или скопировать его из &lt;strong&gt;userChrome-example.css&lt;/strong&gt; из той же папке) со следующим содержанием:&lt;/p&gt;
&lt;pre&gt;@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");
#status-bar
{
	visibility: visible;
}&lt;/pre&gt;
&lt;p&gt;Ещё несколько &lt;a href="http://www.mozilla.org/unix/customizing.html"&gt;примеров&lt;/a&gt; того, как можно настроить Firefox под себя без использования расширений.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/bappoy/~4/MnFaV2Xk8gI" height="1" width="1"/&gt;</description>
		<wfw:commentRss>http://bappoy.pp.ru/2009/12/23/firefox.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://bappoy.pp.ru/2009/12/23/firefox.html</feedburner:origLink></item>
		<item>
		<title>Ищем веб-разработчика в Нижнем Новгороде</title>
		<link>http://feedproxy.google.com/~r/bappoy/~3/bQkINT5EIwA/nnov-job-webdev.html</link>
		<comments>http://bappoy.pp.ru/2009/12/01/nnov-job-webdev.html#comments</comments>
		<pubDate>Tue, 01 Dec 2009 16:07:11 +0000</pubDate>
		<dc:creator>bappoy</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[есть работа]]></category>
		<category><![CDATA[нижний новгород]]></category>

		<guid isPermaLink="false">http://bappoy.pp.ru/?p=851</guid>
		<description>&lt;div class="tweetmeme_button" style="float: right; margin-left: 10px;"&gt;&lt;a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fbappoy.pp.ru%2F2009%2F12%2F01%2Fnnov-job-webdev.html"&gt;&lt;img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fbappoy.pp.ru%2F2009%2F12%2F01%2Fnnov-job-webdev.html" height="61" width="51" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;Требования: PHP или Python, SQL, JS, Flex (последнее не обязательно, но очень приветствуется).&lt;/p&gt;
&lt;p&gt;Необходимо понимать и уметь применять на практике парадигму ООП, знать основные паттерны проектирования веб-приложений, желательно иметь опыт работы с веб-фреймворками.&lt;/p&gt;
&lt;p&gt;Дополнительные требования: Linux, shell-скрипты; понимание принципов работы voip-технологий также будет несомненным плюсом.&lt;/p&gt;
&lt;p&gt;Приветствуется опыт администрирования Linux, Apache, СУБД MySQL, Postgresql, Oracle.&lt;/p&gt;
&lt;p&gt;Чуть подробнее &lt;a href="http://www.mfisoft.ru/vacancies/"&gt;тут&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Работа в офисе.&lt;/p&gt;
&lt;p&gt;Зарплата по результатам собеседования (от 20 т.р.)&lt;/p&gt;
&lt;p&gt;Резюме присылайте мне (адрес на &lt;a href="http://bappoy.pp.ru/about"&gt;специальной страничке&lt;/a&gt;) или прямо в отдел кадров с пометкой, откуда взяли :)&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/bappoy/~4/bQkINT5EIwA" height="1" width="1"/&gt;</description>
		<wfw:commentRss>http://bappoy.pp.ru/2009/12/01/nnov-job-webdev.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://bappoy.pp.ru/2009/12/01/nnov-job-webdev.html</feedburner:origLink></item>
		<item>
		<title>Секретные операторы Perl</title>
		<link>http://feedproxy.google.com/~r/bappoy/~3/OB_3qXokzD8/catonmat.html</link>
		<comments>http://bappoy.pp.ru/2009/11/30/catonmat.html#comments</comments>
		<pubDate>Mon, 30 Nov 2009 15:56:30 +0000</pubDate>
		<dc:creator>bappoy</dc:creator>
				<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://bappoy.pp.ru/?p=849</guid>
		<description>&lt;div class="tweetmeme_button" style="float: right; margin-left: 10px;"&gt;&lt;a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fbappoy.pp.ru%2F2009%2F11%2F30%2Fcatonmat.html"&gt;&lt;img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fbappoy.pp.ru%2F2009%2F11%2F30%2Fcatonmat.html" height="61" width="51" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;Эскимосский превед &lt;code&gt;}{&lt;/code&gt;, &lt;s&gt;&lt;a href="http://ru.wikipedia.org/wiki/Goatse.cx"&gt;goatse&lt;/a&gt;&lt;/s&gt; НЛО &lt;code&gt;=()=&lt;/code&gt;, &lt;a href="http://www.npopm.ru/?cid=geoca&amp;#038;caid=35"&gt;телекоммуникационный спутник&lt;/a&gt; &lt;code&gt;-+-&lt;/code&gt; и &lt;a href="http://www.catonmat.net/blog/secret-perl-operators/"&gt;другие не менее осмысленные конструкции&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;И вообще,  блог &lt;a href="http://www.catonmat.net"&gt;good coders code, great reuse&lt;/a&gt; (англ.) более чем заслуживает того, чтобы на него подписаться.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/bappoy/~4/OB_3qXokzD8" height="1" width="1"/&gt;</description>
		<wfw:commentRss>http://bappoy.pp.ru/2009/11/30/catonmat.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://bappoy.pp.ru/2009/11/30/catonmat.html</feedburner:origLink></item>
		<item>
		<title>Занимательная математика с MySQL</title>
		<link>http://feedproxy.google.com/~r/bappoy/~3/EVlVj-Dj2B4/mysql-maths.html</link>
		<comments>http://bappoy.pp.ru/2009/11/06/mysql-maths.html#comments</comments>
		<pubDate>Fri, 06 Nov 2009 09:35:07 +0000</pubDate>
		<dc:creator>bappoy</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[mysql]]></category>

		<guid isPermaLink="false">http://bappoy.pp.ru/?p=828</guid>
		<description>&lt;div class="tweetmeme_button" style="float: right; margin-left: 10px;"&gt;&lt;a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fbappoy.pp.ru%2F2009%2F11%2F06%2Fmysql-maths.html"&gt;&lt;img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fbappoy.pp.ru%2F2009%2F11%2F06%2Fmysql-maths.html" height="61" width="51" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;Коллега &lt;a href="http://aristov-a.ya.ru/"&gt;Алексей Аристов&lt;/a&gt; поделился парадоксом:&lt;/p&gt;
&lt;pre&gt;Server version: 5.0.51a-24+lenny1 (Debian)

mysql&gt; select '0'=0;
+-------+
| '0'=0 |
+-------+
|     1 |
+-------+
1 row in set (0.00 sec)

mysql&gt; select ''=0;
+------+
| 0='' |
+------+
|    1 |
+------+
1 row in set (0.00 sec)

mysql&gt; select ''='0';
+--------+
| ''='0' |
+--------+
|      0 |
+--------+
1 row in set (0.00 sec)&lt;/pre&gt;
&lt;p&gt;Если два значения равны третьему, они не равны между собой, что немного противоречит здравому смыслу. Однако такое поведение легко можно объяснить&lt;!--more--&gt;, если вчитаться в документацию, а именно в пункт &lt;a href="http://dev.mysql.com/doc/refman/5.0/en/type-conversion.html"&gt;Type Conversion in Expression Evaluation&lt;/a&gt;, где чёрным по белому написано, что если оба аргумента одновременно не являются ни строками, ни числами и при этом ни один из них не NULL, не TIMESTAMP и не DATETIME, то при сравнении эти аргументы преобразуются в числа с плавающей точкой. Пустая строка &lt;code&gt;''&lt;/code&gt; и строковой нуль &lt;code&gt;'0'&lt;/code&gt; при сравнении с числом 0 одинаково преобразуются в &lt;code&gt;0&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;mysql&gt; select cast(0 as signed), cast('' as signed);
+-------------------+--------------------+
| cast(0 as signed) | cast('' as signed) |
+-------------------+--------------------+
|                 0 |                  0 |
+-------------------+--------------------+&lt;/pre&gt;
&lt;p&gt;Поэтому в первых двух случаях сравнение возвращает true. А в последнем сравнении преобразования строк в числа не происходит (т.к. сравниваются две строки), поэтому false.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/bappoy/~4/EVlVj-Dj2B4" height="1" width="1"/&gt;</description>
		<wfw:commentRss>http://bappoy.pp.ru/2009/11/06/mysql-maths.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://bappoy.pp.ru/2009/11/06/mysql-maths.html</feedburner:origLink></item>
		<item>
		<title>Лицензия Windows 7 с точки зрения линуксоида</title>
		<link>http://feedproxy.google.com/~r/bappoy/~3/Lt--3JleKnE/windows7.html</link>
		<comments>http://bappoy.pp.ru/2009/10/29/windows7.html#comments</comments>
		<pubDate>Thu, 29 Oct 2009 10:22:50 +0000</pubDate>
		<dc:creator>bappoy</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[windows 7]]></category>

		<guid isPermaLink="false">http://bappoy.pp.ru/?p=796</guid>
		<description>&lt;div class="tweetmeme_button" style="float: right; margin-left: 10px;"&gt;&lt;a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fbappoy.pp.ru%2F2009%2F10%2F29%2Fwindows7.html"&gt;&lt;img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fbappoy.pp.ru%2F2009%2F10%2F29%2Fwindows7.html" height="61" width="51" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;Миллионы пользователей Windows, больше года ожидавшие выхода новой, теперь уже правильной (по сравнению с Vista) ОС от Microsoft, наконец счастливы: 22 октября начались продажи Windows 7. Из этих счастливцев самые радостные — добровольные бета-тестеры предварительных релизов, которым наравне со всеми рано или поздно придется приобрести один из вариантов семерки.&lt;/p&gt;
&lt;p&gt;Последней версией windows, которой я активно пользовался, была XP, и я не видел ни Windows Vista, ни тем более Windows 7 (что за идиотское обозначение релиза: «7», его можно употреблять только в сочетании со словом windows. Похоже, концентрация «windows» в этом посте превысит все мыслимые пределы. Windows windows windows windows окна окна &lt;s&gt;пластиковые&lt;/s&gt; окна, и закончу на этом). Но я слышал множество лестных отзывов о новой системе даже от бывалых линуксоидов. Более того, сам Линус Торвальдс в шутку &lt;a href="http://picasaweb.google.com/cschlaeger/JapanLinuxSymposium#5395358413061926434"&gt;сфотографировался&lt;/a&gt; на фоне точки продаж семерки. Что же это такое, надо, пожалуй, взглянуть, неужели и правда Microsoft сделала такой шаг вперед навстречу прогрессивному человечеству?&lt;/p&gt;
&lt;p&gt;Но нельзя поставить систему на компьютер, не согласившись с  лицензионным соглашением. Посмотрим, что же нам предлагает (точнее, запрещает) &lt;a href="http://download.microsoft.com/Documents/UseTerms/Windows%207_Ultimate_Russian_424746d6-b6f9-49aa-aa48-f87045bae582.pdf"&gt;лицензионное соглашение&lt;/a&gt; для версии с максимальными возможностями (по-русски она так и называется — «максимальная», что, конечно же, не передаёт всех смысловых оттенков слова «Ultimate»). А в разделе &lt;a href="http://www.microsoft.com/rus/licensing/General/Examples/Default.aspx"&gt;«Примеры лицензионных соглашений»&lt;/a&gt; можно найти примерную OEM лицензию, которая, за исключением нескольких моментов, соответствует своей коробочной версии.&lt;br /&gt;
&lt;!--more--&gt;&lt;br /&gt;
Орфография и пунктуация оригинала сохранены. Приведены лишь некоторые положения лицензионного соглашения.&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;b&gt;Принцип лицензирования программного обеспечения&lt;/b&gt; — одна копия на один компьютер. Компьютер это аппаратная система, оснащенная запоминающим устройством, на которой может быть запущено программное обеспечение. Каждый аппаратный раздел или стоечный модуль считается отдельным компьютером.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Во-первых, забыли длинное тире во втором предложении после слова «компьютер». Во-вторых, данное определение компьютера допускает различные толкования и может быть расширено в разные стороны. &lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;Одна копия на компьютер. Лицензия на использование программного обеспечения навсегда присваивается компьютеру, с которым предоставлено программное обеспечение. Такой компьютер называется «лицензированным компьютером».&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;(этот абзац относится к OEM) Очевидный вопрос: а что, если этот комп сломается? Могу ли я при невозможности использовать уже установленную версию заново установить ее на другую машину, или мне придется покупать еще одну лицензию? А если поочередно заменить сначала процессор, потом память, потом видеокарту, сетевой адаптер, и под конец сдублировать жесткий диск методом dd if=/dev/sda of=/dev/sdb, в какой момент старый компьютер станет новым?&lt;/p&gt;
&lt;p&gt;Зато коробочная лицензия не так категорична, там по этому поводу написано, что пользователь может перенести ОС на другой компьютер, полностью стерев её на первом. Таким образом Microsoft искусственно приравнивает цифровой продукт к материальному кирпичу, который, попав в нового владельца, обязан исчезнуть у старого. &lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;С программным обеспечением могут одновременно работать не более двух процессоров на лицензированном компьютере.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Искренне надеюсь, что речь идёт действительно о многопроцессорных системах, а не о многоядерных. Но, во-первых, понятие процессора в данном соглашении не раскрывается, поэтому эта фраза пополняет собой коллекцию неоднозначных утверждений лицензионного соглашения Microsoft. Во-вторых, что делать windows-гикам, ранее купившим для своих целей именно многопроцессорные системы — ставить серверные версии за килобаксы? (хотя такая ситуация возможна только в случае, если ранее на этой системе стояла &lt;a href="http://xkcd.com/619/"&gt;свободная ОС&lt;/a&gt; и наивный гик, поддавшись рекламе, решил поставить новую ОС для домашнего пользования. Но мы его разубедим :) )&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;Если условиями этой лицензии не предусмотрено иное, несколько пользователей не могут одновременно работать с данным программным обеспечением на лицензированном компьютере.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Тем самым исключается использование компьютера как сервера терминалов. Нельзя подключить дополнительные мышь, клавиатуру и монитор и организовать два рабочих места (программы типа &lt;a href="http://www.wmprogram.ru/"&gt;wmprogram&lt;/a&gt; для реализации одновременной работы нескольких пользователей за одним компьютером оказываются вне закона). Если утрировать, нельзя даже поставить ssh и, подключаясь к нему, запускать командные скрипты, пока за компьютером кто-то работает. Очередное и далеко не последнее ограничение широких возможностей, предоставляемых современными компьютерами.&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;Если изготовитель или установщик предлагает несколько языковых версий, единовременно вы можете использовать только одну версию.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;(OEM only) Допустим, я решил сэкономить немного денег и приобрести вместе с компом не максимальную версию, а профессиональную, без поддержки переключения языка. Но я предпочитаю интерфейс на английском языке, а жена — на русском, а компьютер один, и что же нам делать?&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;Вместо использования программного обеспечения на лицензированном компьютере вы можете установить и использовать его в одной виртуальной аппаратной системе (или системе, эмулированной иным способом) на лицензированном компьютере&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;В настоящий момент у меня на отдельном компьютере имеется зоопарк из нескольких вариантов Debian Etch, Lenny и Squeeze, часть из них в VirtualBox, другая часть просто в своих chroot-ах для разных отладочных нужд, и никто мне слова не скажет. Конечно, это все в производственных целях, и, возникни необходимость в тестировании под несвободными ОС, моя компания обеспечила бы меня необходимой лицензионной поддержкой (для этого и существует корпоративное лицензирование). А домашнему пользователю что делать? Видимо, когда захочется поэкспериментировать в выделенном окружении (да хоть по интернету походить интернет эксплорером и не скомпроментировать систему случайным трояном), извольте приобрести необходимую лицензию и творите что хотите (в рамках дозволенного, см. ниже).&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;К установленному на лицензированном компьютере программному обеспечению могут иметь доступ до 20 других устройств исключительно в целях использования файловых служб, служб печати, служб IIS, телефонных служб и для обеспечения общего доступа к подключению к Интернету&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Если есть ограничение, в один прекрасный момент оно обязательно будет достигнуто. Поднапрягшись, можно придумать схему одновременного использования 21 устройства дома (например, я фрилансер и ко мне пришли гости поработать со своими ноутбуками). К тому же не совсем понятно, не означает ли этот пункт, что нельзя создавать более 20 входящих соединений? Тогда прощайте, торренты :)   &lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;Единственный основной пользователь лицензированного компьютера может осуществлять доступ к сеансу (удаленного рабочего стола) с любого другого устройства с помощью удаленного рабочего стола или аналогичных технологий. Под «сеансом» понимается прямое или косвенное взаимодействие с программным обеспечением с помощью любой комбинации периферийных устройств ввода, вывода и отображения. Другие пользователи могут обращаться к сеансу с любого устройства с помощью этих технологий, если для удаленного устройства приобретена отдельная лицензия на использование этого программного обеспечения.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Видимо, последняя фраза еще раз подтверждает, что нельзя использовать эту ОС (еще раз замечу, что обсуждается версия Ultimate, по-русски «Максимальная») как терминальный сервер.&lt;/p&gt;
&lt;p&gt;Раздел про то, что Microsoft имеет право регулярно инспектировать продукт на предмет законности и неизменности, а в случае нарушения исправлять его, а также  «удалять, помещать в карантин или отключать все несанкционированные изменения, которые могут влиять на надлежащее использование программного обеспечения, включая обход функций активации или проверки подлинности программного обеспечения» я, пожалуй, пропущу из-за обилия букв. Смысл в том, что вы постоянно под подозрением, в интернет постоянно передаются сведения об устанавливаемых продуктах и в зависимости от погоды в Редмонде вас могут попросить активировать систему заново, на неопределенное время лишив вас возможности работы за вашим же компьютером. &lt;/p&gt;
&lt;p&gt;Кроме того, есть такой &amp;#8220;Защитник Windows&amp;#8221;, он делает буквально следующее:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;Если включен Защитник Windows, он ищет на компьютере программы-шпионы, программы для показа рекламы и другие потенциально нежелательные программы&lt;br /&gt;
&amp;#8230;&lt;br /&gt;
Используя это программное обеспечение, вы можете удалить или отключить программное обеспечение, не являющееся gотенциально нежелательным.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Опять же, доведя данное утверждение до абсурда, можно предположить возможность автоматического удаления любой программы, неугодной Microsoft. (!!!) &lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;Microsoft может использовать сведения о компьютере, сведения об ускорителе, &lt;b&gt;данные о предложениях поиска&lt;/b&gt;, отчеты об ошибках и вредоносных программах для улучшения своего программного обеспечения и служб. Microsoft может также &lt;strong&gt;передать эти сведения третьим лицам&lt;/strong&gt;, например поставщикам оборудования и программного обеспечения. Они могут использовать эти сведения для улучшения работы своих продуктов с программным обеспечением Microsoft.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Мне кажется, или они уже залезают не в свою епархию? Какое им дело до того, что гугл мне нашел? Вообще, данный пункт допускает максимально широкую трактовку и вызывает множетсво очевидных вопросов, поэтому не буду здесь на нем зацикливаться, а просто поставлю еще один крестик и обведу его жирным кружочком.&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;Программное обеспечение не продается, а предоставляется в пользование по лицензии. Это соглашение дает вам только некоторые права на использование функций, имеющихся в данном выпуске программного обеспечения, лицензию на который вы получили. Все остальные права остаются у производителя, установщика и Microsoft.  За исключением случаев, когда, несмотря на данное ограничение, применимое законодательство предоставляет вам больше прав, вы можете использовать программное обеспечение только теми способами, которые явно указаны в условиях настоящего соглашения.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Квинтэссенция данного документа: купленная вами система вам не принадлежит, и не все доступные в ней функции вы можете использовать. Конечно, вопрос использования  интеллектуальной собственности очень многогранный и относится к разряду философских, но, знаете, как-то обидно. Кстати, нигде в документе не декларируется то, какими именно способами можно использовать ПО, поэтому можно утверждать, что данная лицензия сама себе противоречит.&lt;/p&gt;
&lt;p&gt; А вот чего нельзя делать:&lt;/p&gt;
&lt;blockquote&gt;&lt;ul&gt;
&lt;li&gt;пытаться обойти технические ограничения в программном обеспечении;&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p&gt;Логично, иначе не будет повода продавать несколько разных версий с искусственно созданными ограничениями.&lt;/p&gt;
&lt;blockquote&gt;&lt;ul&gt;
&lt;li&gt;изучать технологию, декомпилировать или дизассемблировать программное обеспечение,&lt;br /&gt;
если это прямо не разрешено применимым законодательством, несмотря на данное ограничение;&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p&gt;Насколько я понимаю, разрешение на reverse engineering законодательством даётся только для служб госбезопасности. А обычным пользователям, конечно, технологии изучать ни к чему :)&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;использовать компоненты программного обеспечения для работы с приложениями, не&lt;br /&gt;
предназначенными для работы с этим программным обеспечением&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Нельзя даже и думать о том, чтобы запустить бинарники linux под управлением данного ПО. Хорошо, что код большинства &amp;#8220;приложений, не предназначенных для работы с этим программным обеспечением&amp;#8221;, открыт и при большом желании их можно просто портировать.&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;создавать больше копий программного обеспечения, чем указано в этом соглашении или разрешено действующим законодательством, несмотря на данное ограничение;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Нельзя сделать снапшот системы и поизгаляться над ним в виртуальной машине.&lt;/p&gt;
&lt;blockquote&gt;&lt;ul&gt;
&lt;li&gt;публиковать программное обеспечение, предоставляя другим лицам возможность его копировать&lt;/li&gt;
&lt;li&gt;предоставлять программное обеспечение в прокат, в аренду или во временное пользование&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p&gt;Логично, ведь операционные системы от Microsoft и так уже достаточно популярны для того, чтобы выжить на рынке без передачи &amp;#8220;из рук в руки&amp;#8221;&lt;/p&gt;
&lt;blockquote&gt;&lt;ul&gt;
&lt;li&gt;использовать это программное обеспечение для предоставления сетевых услуг на коммерческой основе.&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p&gt;Нельзя взимать плату за «дай поработать на компе». Для игровых и интернет клубов свои лицензии.&lt;/p&gt;
&lt;p&gt;В отдельный раздел вынесен следующий абзац:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;Программное обеспечение включает один или несколько компонентов .NET Framework (далее — «компоненты .NET»). Вы можете провести внутреннее измерение производительности этих компонентов. Вы можете публиковать результаты любого тестирования производительности этих компонентов, если при этом выполняются условия, указанные на веб-сайте go.microsoft.com/fwlink/?LinkID=66406. Независимо от других ваших соглашений с Microsoft, в случае раскрытия вами результатов такого тестирования производительности Microsoft имеет право раскрыть результаты проведенного ею тестирования производительности ваших продуктов, конкурирующих с Компонентами .NET, но при этом также должны соблюдаться&lt;br /&gt;
условия, указанные на веб-сайте go.microsoft.com/fwlink/?LinkID=66406.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;По адресу &lt;a href="http://go.microsoft.com/fwlink/?LinkID=66406"&gt;go.microsoft.com/fwlink/?LinkID=66406&lt;/a&gt; действительно находятся несколько правил, суть которых сводится к предоставлению полного описания программных и аппаратных компонентов, используемых в тестировании производительности, а также методики тестирования и, внимание, исходного кода тестовых программ.&lt;br /&gt;
Также можно предположить, что данное правило не относится к тестированию системы вообще, поэтому, видимо, можно проводить любые тесты на любых условиях.&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;Вы можете сделать одну резервную копию программного обеспечения. Эту копию можно использовать только для повторной установки программного обеспечения на лицензированном компьютере.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Если мой опыт говорит мне, что одной резервной копии недостаточно для надежного хранения данных, то придется как-то успокаивать свою паранойю. И непонятно, идет ли речь только о дистрибутиве, или о бэкапе установленной системы.&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;Чтобы использовать программное обеспечение для обновления, необходимо сначала иметь лицензию на программное обеспечение, для которого это обновление предназначено. После обновления это соглашение заменяет соглашение по использованию программного обеспечения, которое было обновлено. После обновления вы не имеете права использовать предыдущую версию программного обеспечения.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Ситуация:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;покупаем и ставим продукт, скрепя зубы, соглашаемся с лицензией&lt;/li&gt;
&lt;li&gt;обновляем его, вместе с обновлением приползает новая лицензия, с который по каким-то причинам мы не можем согласиться&lt;/li&gt;
&lt;li&gt;если новую лицензию прочитали уже после обновления, то старую версию использовать уже нельзя&lt;/li&gt;
&lt;li&gt;обновляться нельзя, старую версию использовать нельзя (допустим, в ней есть уязвимость или не хватает функционала, который есть в новой версии).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Зато! &lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;Вместо программного обеспечения вы можете использовать одну из следующих более ранних версий:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Windows Vista Ultimate,&lt;/li&gt;
&lt;li&gt;Microsoft Windows XP Professional,&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;li&gt;Microsoft Windows Professional x64 Edition или&lt;/li&gt;
&lt;li&gt;Microsoft Windows XP Tablet PC Edition.&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p&gt;При этом:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;Это соглашение распространяется на использование более ранних версий.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Интересно, если я поставлю XP Professional или XP Tablet PC вместо семерки, смогу ли я увеличить количество &amp;#8220;устройств, имеющих доступ к программному обеспецению в целях использования файловых служб, служб печати&amp;#8221; и т.д. до заявленных 20?&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;Подлинная наклейка подтверждения лицензии. Если вы приобрели программное обеспечение на компьютере, диске или другом носителе, то подлинная наклейка «Certificate of Authenticity» (сертификат подлинности) вместе с подлинной копией программного обеспечения доказывают наличие у вас лицензионной копии программного обеспечения. Чтобы быть действительной, эта наклейка должна быть прикреплена к компьютеру или находиться на его упаковке, предоставленной производителем или установщиком. Наклейка, полученная отдельно, недействительна. Наклейку необходимо сохранить на компьютере или упаковке в качестве доказательства того, что у вас есть лицензия на использование программного обеспечения. Если к компьютеру прилагается несколько подлинных наклеек «Certificate of Authenticity», вы можете использовать каждую версию программного обеспечения, указанную на этих наклейках.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Предположим, что я эстет и не выношу никаких наклеек на дизайнерском корпусе моего (уж системный блок-то точно мне принадлежит, в отличие от операционной системы) компьютера. Плюс я не желаю хранить упаковку компьютера или у меня ее давно нет. Но без наклейки на моем компьютере счастье маркетологов Microsoft будет неполным, поэтому они внесли этот пункт в лицензионное соглашение. Следует заметить, что согласно этому пункту наличие наклейки не является необходимым условием для подлинности ПО. Но является достаточным.&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;ОГРАНИЧЕНИЕ И ИСКЛЮЧЕНИЕ ОТВЕТСТВЕННОСТИ ЗА УБЫТКИ И УЩЕРБ. Кроме денежного возмещения, которое может предоставить изготовитель или установщик, вы не можете взыскать никакие другие убытки, в том числе косвенные, специальные, опосредованные или случайные убытки, а также убытки в связи с упущенной выгодой.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Стандартная фраза, присутствующая почти во всех лицензионных соглашениях, на любое ПО: открытое или коммерческое. Декларирует, что каждый сам кузнец своего счастья. Но интересны пояснения к этому пункту:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;Это ограничение действует даже в случае, если:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;исправление, замена программного обеспечения или денежное возмещение не компенсируют все убытки и ущерб;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Microsoft было или должно было быть известно о возможности таких убытков и ущерба.&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Законодательство некоторых штатов не допускает исключения или ограничения ответственности за случайные или косвенные убытки и ущерб. В этом случае вышеуказанные ограничения и исключения могут к вам не относиться. Они также могут не относиться к вам, если законодательство вашей страны не допускает исключения или ограничения ответственности за случайные, косвенные или другие убытки и ущерб.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Выделенный пункт дает MS возможность безнаказанно испортить мою систему и сказать «так получилось». Интересно было бы узнать у юристов, допускает ли российское законодательство ответственности за косвенные убытки. Конечно, это палка о двух концах: если операционная система критична для моей деятельности (например, я фрилансер и мне к определенному сроку нужно успеть выполнить работу, а ОС ломается в самый неподходящий момент по вине Microsoft, выпустившей кривое обновление и большой заказ из-за этого уплывает к конкуренту, падает карма на фрилансерской бирже, портится репутация), то кто-то должен за это ответить. С другой стороны, приняв на себя ответственность за сбои в своем продукте, MS непременно подвергнется атаке троллей, доказывающих, что они потеряли кучу денег из-за сбоя в ОС.&lt;/p&gt;
&lt;p&gt;В конце файлика оптимистичное «!!!!EULAID!!!!».&lt;/p&gt;
&lt;p&gt;Итак:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;на компьютер устанавливается ОС, которая мне не принадлежит;&lt;/li&gt;
&lt;li&gt;которую я не могу исследовать и модифицировать под свои нужды;&lt;/li&gt;
&lt;li&gt;при этом я постоянно нахожусь под подозрением в неправомерности использования этой ОС и некоторых компонентов, с риском в неподходящий момент оказаться один на один с заблокированной из-за этих подозрений системой;&lt;/li&gt;
&lt;li&gt;ни производитель, ни продавец системы не несут передо мной никакой ответственности за непреднамеренные (и преднамеренные) убытки, вызванные поломкой системы, кроме гарантийных обязательств, да и то в рамках стоимости системы; &lt;/li&gt;
&lt;li&gt;я не могу сделать более одной копии дистрибутива,&lt;/li&gt;
&lt;li&gt;поставить отдельную копию в виртуальную машину,&lt;/li&gt;
&lt;li&gt;и не смогу поделиться дистрибутивом с товарищем&lt;/li&gt;
&lt;li&gt;мне всегда придется читать лицензионные соглашения ко всем продуктам, на которых большими буквами не написано GPL&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Данное соглашение — полная противоположность привычной философии мира открытого ПО, которая наоборот поощряет распространение программ и операционных систем и требует их максимальной открытости. Microsoft загоняет пользователя в рамки «девяносто пяти процентам пользователей это достаточно» и лишает его свободы действий. Эта лицензия как бы говорит нам: не делай с системой того, для чего она не предназначена.&lt;/p&gt;
&lt;p&gt;По этим причинам я продолжаю использовать Linux. &lt;/p&gt;
&lt;p&gt;Ссылки по теме:&lt;br /&gt;
&lt;a href="http://news.softodrom.ru/ap/b1371.shtml"&gt;Разъяснения&lt;/a&gt; по поводу изменений в типовом лицензионном соглашении Vista по сравнению с XP (там как раз про 95%)&lt;br /&gt;
&lt;a href="http://lipetsk.lug.ru/articles/badvista.html"&gt;Что не так с Windows Vista?&lt;/a&gt; — перевод &lt;a href="http://badvista.fsf.org/what-s-wrong-with-microsoft-windows-vista"&gt;статьи&lt;/a&gt; с сайта фонда СПО на эту же тему&lt;br /&gt;
&lt;a href="http://aceler.ru/node/741"&gt;Лицензионное соглашение на чтение лицензионного соглашения&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/bappoy/~4/Lt--3JleKnE" height="1" width="1"/&gt;</description>
		<wfw:commentRss>http://bappoy.pp.ru/2009/10/29/windows7.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://bappoy.pp.ru/2009/10/29/windows7.html</feedburner:origLink></item>
		<item>
		<title>Заметки на память</title>
		<link>http://feedproxy.google.com/~r/bappoy/~3/egpShl34Opw/782.html</link>
		<comments>http://bappoy.pp.ru/2009/09/07/782.html#comments</comments>
		<pubDate>Mon, 07 Sep 2009 10:34:37 +0000</pubDate>
		<dc:creator>bappoy</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[gnome]]></category>
		<category><![CDATA[keyboard]]></category>
		<category><![CDATA[mount]]></category>
		<category><![CDATA[samba]]></category>
		<category><![CDATA[su]]></category>
		<category><![CDATA[sudo]]></category>
		<category><![CDATA[syslog]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://bappoy.pp.ru/?p=782</guid>
		<description>&lt;div class="tweetmeme_button" style="float: right; margin-left: 10px;"&gt;&lt;a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fbappoy.pp.ru%2F2009%2F09%2F07%2F782.html"&gt;&lt;img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fbappoy.pp.ru%2F2009%2F09%2F07%2F782.html" height="61" width="51" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;Если после перезагрузки не сохраняются параметры клавиатуры в Gnome-окружении Debian или Ubuntu, поможет добавление &lt;strong&gt;setxkbmap&lt;/strong&gt; в приложения, запускаемые автоматически при входе в систему (&amp;#8220;Система — Параметры — Запускаемые приложения&amp;#8221; или &amp;#8220;System — Parameters — Sessions&amp;#8221;)&lt;/p&gt;
&lt;p&gt;Если при монтировании расшаренного через Samba каталога через mount.cifs симлинки отображаются как локальные ссылки, нужно на обеих машинах в &lt;strong&gt;smb.conf&lt;/strong&gt; отключить unix extensions, которые и отвечают за такое поведение символических ссылок:&lt;/p&gt;
&lt;pre&gt;unix extensions = no&lt;/pre&gt;
&lt;p&gt;Если в Ubuntu одновременно перестали работать su, sudo, входы в систему с консоли и через ssh (основной симптом: зависает после ввода пароля), то для постановки окончательного дифференциального диагноза можно попробовать выполнить команду &amp;#8220;logger test&amp;#8221;. Если и это зависает, то налицо проблема с демоном syslogd. В моем случае решение вылилось в отключении опции &amp;#8220;&lt;strong&gt;-r&lt;/strong&gt;&amp;#8221; в&lt;strong&gt;/etc/default/syslogd&lt;/strong&gt; (принимать сообщения по сети), которая однажды была добавлена мной для удаленной отладки одного voip-телефона. На самом деле это явная бага, которая, судя по &lt;a href="https://bugs.launchpad.net/ubuntu/+source/sysklogd/+bug/26986"&gt;Ubuntu Bug 26986&lt;/a&gt;, тянется аж с 2005 года.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/bappoy/~4/egpShl34Opw" height="1" width="1"/&gt;</description>
		<wfw:commentRss>http://bappoy.pp.ru/2009/09/07/782.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://bappoy.pp.ru/2009/09/07/782.html</feedburner:origLink></item>
		<item>
		<title>Ссылка на определенное место в man’е</title>
		<link>http://feedproxy.google.com/~r/bappoy/~3/dy85sad6XCk/reference-to-fragment-in-less.html</link>
		<comments>http://bappoy.pp.ru/2009/08/24/reference-to-fragment-in-less.html#comments</comments>
		<pubDate>Mon, 24 Aug 2009 10:04:53 +0000</pubDate>
		<dc:creator>bappoy</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[less]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://bappoy.pp.ru/?p=773</guid>
		<description>&lt;div class="tweetmeme_button" style="float: right; margin-left: 10px;"&gt;&lt;a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fbappoy.pp.ru%2F2009%2F08%2F24%2Freference-to-fragment-in-less.html"&gt;&lt;img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fbappoy.pp.ru%2F2009%2F08%2F24%2Freference-to-fragment-in-less.html" height="61" width="51" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;В блоге &lt;a href="http://linsovet.com/"&gt;&amp;#8220;Полезные советы по Linux&amp;#8221;&lt;/a&gt; &lt;a href="http://linsovet.com/zsh-vcs-info-in-prompt"&gt;наткнулся&lt;/a&gt; на способ ссылаться на определенное место в документации:&lt;/p&gt;
&lt;pre&gt;sh -c 'PAGER="less" LESS="-p search_string" man man_page'&lt;/pre&gt;
&lt;p&gt;Явно вызываем sh, задаем просмотрщик less и указываем ему строку, которую нужно найти. Команда man запустит less и прокрутит экран до первого совпадения.&lt;/p&gt;
&lt;p&gt;Конечно же, необходимо убедиться, что заданный шаблон присутствует в документе хотя бы один раз, и первый раз встречается именно в том месте, на которое вы хотите сослаться. Если ни одного совпадения не найдено, будет выведена ошибка и man будет показан с его начала, да и то только после нажатия Enter. Также стоит учитывать, что у адресата вашего сообщения может быть другой shell, другая версия документации и вообще другая операционная система.&lt;/p&gt;
&lt;p&gt;Несколько примеров (предполагаем, что в качестве шелла используется sh-compatible shell типа bash или zsh, а переменная PAGER установлена в less).&lt;/p&gt;
&lt;p&gt;Абзац в bash (1) про фичу &lt;b&gt;complete-into-braces&lt;/b&gt; из одной из предыдущих заметок:&lt;/p&gt;
&lt;pre&gt;LESS="-p complete-into-braces" man bash&lt;/pre&gt;
&lt;p&gt;Раздел про подстановку из истории в bash (1). Поскольку строка HISTORY EXPANSION в документе встречается неоднократно, то требуется привязка к началу строки:&lt;/p&gt;
&lt;pre&gt;LESS='-p ^s*HISTORY EXPANSION' man bash&lt;/pre&gt;
&lt;p&gt;Подсветка важной фразы целиком:&lt;/p&gt;
&lt;pre&gt;LESS='-p Please note.*log the command[^.]*.' man sudo&lt;/pre&gt;
&lt;p&gt;Этот фокус можно задействовать в других утилитах, использующих less, например, в perldoc:&lt;/p&gt;
&lt;pre&gt;LESS='-p ^s*Range Operators' perldoc perlop&lt;/pre&gt;
&lt;p&gt;О том, как эта конструкция работает:&lt;/p&gt;
&lt;pre&gt;LESS='-p MANPAGER, PAGER' man man
LESS='-p -ppattern.*' man less
LESS='-p Options which.*' man less&lt;/pre&gt;&lt;img src="http://feeds.feedburner.com/~r/bappoy/~4/dy85sad6XCk" height="1" width="1"/&gt;</description>
		<wfw:commentRss>http://bappoy.pp.ru/2009/08/24/reference-to-fragment-in-less.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://bappoy.pp.ru/2009/08/24/reference-to-fragment-in-less.html</feedburner:origLink></item>
		<item>
		<title>Построение регулярного выражения по списку строк</title>
		<link>http://feedproxy.google.com/~r/bappoy/~3/D0CEbOsVNyY/building-list-based-regexp.html</link>
		<comments>http://bappoy.pp.ru/2009/08/18/building-list-based-regexp.html#comments</comments>
		<pubDate>Tue, 18 Aug 2009 11:40:34 +0000</pubDate>
		<dc:creator>bappoy</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[perl]]></category>
		<category><![CDATA[regexp]]></category>

		<guid isPermaLink="false">http://bappoy.pp.ru/?p=747</guid>
		<description>&lt;div class="tweetmeme_button" style="float: right; margin-left: 10px;"&gt;&lt;a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fbappoy.pp.ru%2F2009%2F08%2F18%2Fbuilding-list-based-regexp.html"&gt;&lt;img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fbappoy.pp.ru%2F2009%2F08%2F18%2Fbuilding-list-based-regexp.html" height="61" width="51" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;Имеется неколько десятков однотипных файлов вида &lt;code&gt;FILE20090801011253.txt&lt;/code&gt;, &lt;code&gt;FILE20090801023619.txt&lt;/code&gt; и т.д. Требуется составить регулярное выражение, которому удовлетворяют только названия файлов из списка.&lt;/p&gt;
&lt;p&gt;Вручную это можно сделать примерно так:&lt;/p&gt;
&lt;pre&gt;FILE200908010(11253|23619)\.txt&lt;/pre&gt;
&lt;p&gt;Если файлов много, то никаких нервов не хватит высчитывать, проверять и перепроверять.&lt;/p&gt;
&lt;p&gt;То же самое можно сделать полуавтоматически, с помощью механизма &lt;b&gt;complete-into-braces&lt;/b&gt; оболочки bash. Сочетание клавиш &lt;b&gt;Esc-{&lt;/b&gt; преобразовывает список подстановки в более-менее оптимальный формат brace-completion, пригодный для дальнейшей обработки:&lt;/p&gt;
&lt;pre&gt;$ echo /path/to/dir/(&lt;b&gt;Esc-{&lt;/b&gt;)FILE200908010{11253.txt,23619.txt}&lt;/pre&gt;
&lt;p&gt;Чтобы из получившейся строки сделать нормальный регэксп, нужно фигурные скобки заменить на круглые, а запятые — на вертикальную черту:&lt;/p&gt;
&lt;pre&gt;echo "FILE200908010{11253.txt,23619.txt} "|sed -e 's/{/(/g' -e 's/}/)/g' -e 's/,/|/g'&lt;/pre&gt;
&lt;p&gt;Приходится делать много лишних слабоавтоматизируемых действий, после чего копировать, вставлять, заменять и исправлять, что не очень удобно.&lt;/p&gt;
&lt;p&gt;После непродолжительных поисков был найден Perl&amp;#8217;овый модуль &lt;a href="http://search.cpan.org/~dankogai/Regexp-Optimizer-0.15/lib/Regexp/List.pm"&gt;Regexp::List&lt;/a&gt;, функцию list2re (преобразование списка в регулярное выражение) из которого можно приспособить под любые подобные задачи. Вот, например, сокращенная версия скрипта для моего случая:&lt;/p&gt;
&lt;pre&gt;use Regexp::List;
my $l=Regexp::List-&gt;new;
$l-&gt;set(lookahead=&gt;0);

opendir(D,"/path/to/dir") or die "Could not open $dir: $!";
my @list=grep {$_!~/^\.\.?$/ } readdir(D);          # get directory entries except "." and ".."
closedir(D);

my $re = $l-&gt;list2re(@list);                        # create regexp from @list
$re=~s/^\(\?-[xism]+:(.*?)\)$/^$1\$/g;              # strip "(?:-xism" and ")"
print "$re\n";&lt;/pre&gt;
&lt;p&gt;Для следующих десяти файлов:&lt;/p&gt;
&lt;pre&gt;FILE20090802120343.txt
FILE20090802165139.txt
FILE20090802181550.txt
FILE20090804014529.txt
FILE20090804140848.txt
FILE20090805103525.txt
FILE20090805104025.txt
FILE20090810083211.txt
FILE20090810120349.txt
FILE20090810121250.txt&lt;/pre&gt;
&lt;p&gt;Скрипт выдает такой результат:&lt;/p&gt;
&lt;pre&gt;^FILE200908(?:0(?:510(?:40|35)25\.txt|21(?:81550|20343|65139)\.txt|4(?:140848|014529)\.txt)|10(?:12(?:1250|0349)\.txt|083211\.txt))$&lt;/pre&gt;
&lt;p&gt;Что и требовалось.&lt;/p&gt;
&lt;div style="font-size:85%;padding-top:2em;"&gt;&lt;em&gt;Пользуясь случаем, хочу порекламировать PDF-версию третьего издания книги &lt;a href="http://www.books.ru/shop/books/626982?partner=532333"&gt;&amp;#8220;Регулярные выражения&amp;#8221;&lt;/a&gt; Джеффри Фридла&lt;/em&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/bappoy/~4/D0CEbOsVNyY" height="1" width="1"/&gt;</description>
		<wfw:commentRss>http://bappoy.pp.ru/2009/08/18/building-list-based-regexp.html/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		<feedburner:origLink>http://bappoy.pp.ru/2009/08/18/building-list-based-regexp.html</feedburner:origLink></item>
	</channel>
</rss>
