<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Журнал системного программиста &#187; linux</title>
	<atom:link href="http://sadko.xskernel.org/archives/tag/linux/feed" rel="self" type="application/rss+xml" />
	<link>http://sadko.xskernel.org</link>
	<description>блог обо всём и ни о чём</description>
	<lastBuildDate>Wed, 14 Dec 2011 20:21:22 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Справедливость восторжествовала!</title>
		<link>http://sadko.xskernel.org/archives/1781</link>
		<comments>http://sadko.xskernel.org/archives/1781#comments</comments>
		<pubDate>Mon, 07 Jun 2010 20:13:42 +0000</pubDate>
		<dc:creator>SadKo</dc:creator>
				<category><![CDATA[Доска позора]]></category>
		<category><![CDATA[Интернеты]]></category>
		<category><![CDATA[Хумор]]></category>
		<category><![CDATA[bolgenos]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[oss]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://sadko.xskernel.org/?p=1781</guid>
		<description><![CDATA[Tweet Опровержение от телеканала, пустившего новость о BolgenOS по интернетам. Что сказать, молодцы, признали свою ошибку. Надеюсь, впредь будут осторожнее с подготовкой материала. Теперь имя Дениса Попова стало нарицательным. Что же, пожелаем ему успешно найти работу, отдалённую от IT UPD А вот ещё один журнализдский ляп: Честно, лежал под столом. И вот такую туфту впаривают [...]]]></description>
			<content:encoded><![CDATA[<div style="float: right; margin: 0 0 5px 10px; " class="vk-button">
<!-- vkontakte share button -->
<script type="text/javascript">
<!--
document.write(VK.Share.button(
{
  url: 'http://sadko.xskernel.org/archives/1781',
  title: 'Справедливость восторжествовала!',
  description: 'Опровержение от телеканала, пустившего новость о BolgenOS по интернетам.\n\nЧто сказать, молодцы, признали свою ошибку. Надеюсь, впредь будут осторожнее с подготовкой материала.\nТеперь имя Дениса ...',
  noparse: true 
}, 
{
  type: 'button',
  text: 'Скопировать'
}));
-->
</script>
<!-- / vkontakte share button -->
</div><div style="height:21px; padding-top:2px;" class="really_simple_share"><div style="float:left; " class="really_simple_share_linkedin"> 
				<script type="text/javascript" src="http://platform.linkedin.com/in.js"></script>
				<script type="in/share" data-counter="right" data-url="http://sadko.xskernel.org/archives/1781"></script>
			</div><div style="float:left; padding-left:10px;" class="really_simple_share_twitter"> 
				<a href="http://twitter.com/share" class="twitter-share-button" data-count="horizontal" 
					data-text="&ETH;&iexcl;&ETH;&iquest;&Ntilde;&ETH;&deg;&ETH;&sup2;&ETH;&micro;&ETH;&acute;&ETH;&raquo;&ETH;&cedil;&ETH;&sup2;&ETH;&frac34;&Ntilde;&Ntilde;&Ntilde; &ETH;&sup2;&ETH;&frac34;&Ntilde;&Ntilde;&ETH;&frac34;&Ntilde;&ETH;&para;&ETH;&micro;&Ntilde;&Ntilde;&ETH;&sup2;&ETH;&frac34;&ETH;&sup2;&ETH;&deg;&ETH;&raquo;&ETH;&deg;!" data-url="http://sadko.xskernel.org/archives/1781">Tweet</a> 
				<script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script> 
			</div></div>
	<br style="clear:both;" /><p>Опровержение от телеканала, пустившего новость о <a href="http://lurkmore.ru/Bolgenos">BolgenOS</a> по интернетам.<br />
<object width="480" height="385"><param name="movie" value="http://www.youtube.com/v/b6QT_tCjDao&#038;hl=ru_RU&#038;fs=1&#038;"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/b6QT_tCjDao&#038;hl=ru_RU&#038;fs=1&#038;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"></embed></object><br />
Что сказать, молодцы, признали свою ошибку. Надеюсь, впредь будут осторожнее с подготовкой материала.<br />
Теперь имя Дениса Попова стало нарицательным.<br />
Что же, пожелаем ему успешно найти работу, отдалённую от IT</p>
<p><b>UPD</b><br />
А вот ещё один журнализдский ляп:<br />
<object width="480" height="385"><param name="movie" value="http://www.youtube.com/v/RirqnBUQTEU&#038;hl=ru_RU&#038;fs=1&#038;"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/RirqnBUQTEU&#038;hl=ru_RU&#038;fs=1&#038;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"></embed></object><br />
Честно, лежал под столом. И вот такую туфту впаривают людям. Судя по видео, на печать отправили документ в кодировке cp866.</p>
]]></content:encoded>
			<wfw:commentRss>http://sadko.xskernel.org/archives/1781/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>五十音：片仮名、平仮名、ローマ字</title>
		<link>http://sadko.xskernel.org/archives/1750</link>
		<comments>http://sadko.xskernel.org/archives/1750#comments</comments>
		<pubDate>Tue, 30 Mar 2010 09:21:22 +0000</pubDate>
		<dc:creator>SadKo</dc:creator>
				<category><![CDATA[Интернеты]]></category>
		<category><![CDATA[Кодинг]]></category>
		<category><![CDATA[Свободное ПО]]></category>
		<category><![CDATA[games]]></category>
		<category><![CDATA[japan]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[oss]]></category>

		<guid isPermaLink="false">http://sadko.xskernel.org/?p=1750</guid>
		<description><![CDATA[Tweet Написал небольшую игрушку для интерактивного выучивания таблицы годзю:он (五十音) на JavaScript. Сама по себе она напоминает игрушку на память: собирать пары совпадающих ячеек до тех пор, пока все пары не будут собраны. Идея состоит в том, что в качестве пары выступают слоги из разных слоговых азбук. Вернее, в разном представлении. Доступны следующие ассоциации пар: [...]]]></description>
			<content:encoded><![CDATA[<div style="float: right; margin: 0 0 5px 10px; " class="vk-button">
<!-- vkontakte share button -->
<script type="text/javascript">
<!--
document.write(VK.Share.button(
{
  url: 'http://sadko.xskernel.org/archives/1750',
  title: '五十音：片仮名、平仮名、ローマ字',
  description: 'Написал небольшую игрушку для интерактивного выучивания таблицы годзю:он (五十音) на JavaScript.\n\nСама по себе она напоминает игрушку на память: собирать пары совпадающих ячеек до тех пор, пока все ...',
  noparse: true 
}, 
{
  type: 'button',
  text: 'Скопировать'
}));
-->
</script>
<!-- / vkontakte share button -->
</div><div style="height:21px; padding-top:2px;" class="really_simple_share"><div style="float:left; " class="really_simple_share_linkedin"> 
				<script type="text/javascript" src="http://platform.linkedin.com/in.js"></script>
				<script type="in/share" data-counter="right" data-url="http://sadko.xskernel.org/archives/1750"></script>
			</div><div style="float:left; padding-left:10px;" class="really_simple_share_twitter"> 
				<a href="http://twitter.com/share" class="twitter-share-button" data-count="horizontal" 
					data-text="&auml;&ordm;&aring;&eacute;&sup3;&iuml;&frac14;&ccedil;&auml;&raquo;&reg;&aring;&atilde;&aring;&sup1;&sup3;&auml;&raquo;&reg;&aring;&atilde;&atilde;&shy;&atilde;&frac14;&atilde;&aring;&shy;" data-url="http://sadko.xskernel.org/archives/1750">Tweet</a> 
				<script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script> 
			</div></div>
	<br style="clear:both;" /><p>Написал небольшую игрушку для интерактивного выучивания таблицы годзю:он (五十音) на JavaScript.</p>
<p>Сама по себе она напоминает игрушку на память: собирать пары совпадающих ячеек до тех пор, пока все пары не будут собраны. Идея состоит в том, что в качестве пары выступают слоги из разных слоговых азбук. Вернее, в разном представлении. Доступны следующие ассоциации пар:</p>
<ul>
<li>катакана &#8212; хирагана (片仮名 &#8212; 平仮名);</li>
<li>катакана &#8212; ромадзи （片仮名 &#8212; ローマ字);</li>
<li>хирагана &#8212; ромадзи (平仮名 &#8212; ローマ字)</li>
<li>катакана &#8212; поливанов (片仮名 &#8212; キリル文字)</li>
<li>хирагана &#8212; поливанов (平仮名 &#8212; キリル文字)</li>
</ul>
<p>То есть, например, для пары &#171;катакана-хирагана&#187; слоги &#171;a, i, u, e, o&#187; будут иметь ассоциации &#171;ア <-> あ&#187;, &#171;イ &#8212; い&#187;, &#171;ウ &#8212; う&#187;, &#171;エ &#8212; え&#187;, &#171;オ &#8212; お&#187;.<br />
Играть можно как в простом режиме (easy), так и в сложном (hard). В первом случае все ячейки со слогами открыты. Во втором случае &#8212; скрыты, то есть если слоги в ячейках не будут совпадать, содержимое ячеек будет скрываться, а открытыми будут оставаться только уже найденные пары.<br />
Также можно выбирать перечень разучиваемых слогов (ставить галочки напротив определённого слогового ряда). Если много галочек ставить лень &#8212; можно воспользоваться предустановками, среди которых есть:</p>
<ul>
<li>выбор всех доступных слогов;</li>
<li>сброс всех доступных слогов;</li>
<li>выбор только слогов таблицы годзю:он;</li>
<li>выбор только слогов, которы были получены путём озвончения &#8212; нигори (濁り) &#8212; или оглушения &#8212; ханнигори (半に濁り ?).</li>
</ul>
<p>Ссылка на игрушку здесь (распространяется по лицензии GPLv2):<br />
<a href="http://kanji.xskernel.org/?target=gojuon">http://kanji.xskernel.org/?target=gojuon</a>.</p>
<p>Приятного времяпрепровождения! Если есть замечания, исправления, предложения или пожелания &#8212; пишите <img src='http://sadko.xskernel.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>
]]></content:encoded>
			<wfw:commentRss>http://sadko.xskernel.org/archives/1750/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ГОУ Лицей при СПбГУТ переходит на СПО!</title>
		<link>http://sadko.xskernel.org/archives/1745</link>
		<comments>http://sadko.xskernel.org/archives/1745#comments</comments>
		<pubDate>Sat, 27 Mar 2010 11:05:48 +0000</pubDate>
		<dc:creator>SadKo</dc:creator>
				<category><![CDATA[Свободное ПО]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[спо]]></category>

		<guid isPermaLink="false">http://sadko.xskernel.org/?p=1745</guid>
		<description><![CDATA[Tweet Все мы прекрасно знаем, что в конце 2010 года лицензии пакета &#171;Первая помощь&#187; завершают своё действие (становятся недействительными). В связи с этим у школ есть два варианта: либо находить финансовые средства и закупать проприетарное ПО для последующей установки на компьютеры, либо освоить новую нишу &#8212; свободное программное обеспечение. Лицей, в котором я учился, выбрал [...]]]></description>
			<content:encoded><![CDATA[<div style="float: right; margin: 0 0 5px 10px; " class="vk-button">
<!-- vkontakte share button -->
<script type="text/javascript">
<!--
document.write(VK.Share.button(
{
  url: 'http://sadko.xskernel.org/archives/1745',
  title: 'ГОУ Лицей при СПбГУТ переходит на СПО!',
  description: 'Все мы прекрасно знаем, что в конце 2010 года лицензии пакета &quot;Первая помощь&quot; завершают своё действие (становятся недействительными). В связи с этим у школ есть два варианта: либо находить финанс...',
  noparse: true 
}, 
{
  type: 'button',
  text: 'Скопировать'
}));
-->
</script>
<!-- / vkontakte share button -->
</div><div style="height:21px; padding-top:2px;" class="really_simple_share"><div style="float:left; " class="really_simple_share_linkedin"> 
				<script type="text/javascript" src="http://platform.linkedin.com/in.js"></script>
				<script type="in/share" data-counter="right" data-url="http://sadko.xskernel.org/archives/1745"></script>
			</div><div style="float:left; padding-left:10px;" class="really_simple_share_twitter"> 
				<a href="http://twitter.com/share" class="twitter-share-button" data-count="horizontal" 
					data-text="&ETH;&ETH;&ETH;&pound; &ETH;&ETH;&cedil;&Ntilde;&ETH;&micro;&ETH;&sup1; &ETH;&iquest;&Ntilde;&ETH;&cedil; &ETH;&iexcl;&ETH;&ETH;&plusmn;&ETH;&ETH;&pound;&ETH;&cent; &ETH;&iquest;&ETH;&micro;&Ntilde;&ETH;&micro;&Ntilde;&ETH;&frac34;&ETH;&acute;&ETH;&cedil;&Ntilde; &ETH;&frac12;&ETH;&deg; &ETH;&iexcl;&ETH;&ETH;!" data-url="http://sadko.xskernel.org/archives/1745">Tweet</a> 
				<script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script> 
			</div></div>
	<br style="clear:both;" /><p>Все мы прекрасно знаем, что в конце 2010 года лицензии пакета &#171;Первая помощь&#187; завершают своё действие (становятся недействительными). В связи с этим у школ есть два варианта: либо находить финансовые средства и закупать проприетарное ПО для последующей установки на компьютеры, либо освоить новую нишу &#8212; свободное программное обеспечение.</p>
<p>Лицей, в котором я учился, выбрал второй, верный путь. Недавно я был у них в гостях, и, надо сказать, отметил для себя, что с начала этого года (а именно тогда была дана команда всем переходить на СПО) они уже проделали порядочную работу: завели большинство оборудования под Linux (для этого порой приходилось даже связываться напрямую с производителями), ознакомились со свободными программными пакетами, позволяющими производить математические расчёты и симуляции электрических цепей. В общем, работа кипит, и потенциал достаточно высок.</p>
<p>Можно посмотреть их собственную презентацию, представленную на Санкт-Петербургском конкурсе инновационных продуктов:<br />
<OBJECT width="470" height="353"><PARAM name="movie" value="http://video.rutube.ru/d1e620b8ad06889d68e4a6b05f847daf"></PARAM><PARAM name="wmode" value="window"></PARAM><PARAM name="allowFullScreen" value="true"></PARAM><EMBED src="http://video.rutube.ru/d1e620b8ad06889d68e4a6b05f847daf" type="application/x-shockwave-flash" wmode="window" width="470" height="353" allowFullScreen="true" ></EMBED></OBJECT></p>
<p>В общем, молодцы, так держать.<br />
Если вы хотите поддержать их &#8212; можете оставить свой голос <a href="http://petersburg-edu.ru/voting/voting/obshchestvennaya-ekspertiza-materialov-predstavlennykh-na-konkurs-innovatsionnykh-produktov--0">здесь</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://sadko.xskernel.org/archives/1745/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Драма с возвратом денез за OEM</title>
		<link>http://sadko.xskernel.org/archives/1733</link>
		<comments>http://sadko.xskernel.org/archives/1733#comments</comments>
		<pubDate>Mon, 15 Mar 2010 08:25:49 +0000</pubDate>
		<dc:creator>SadKo</dc:creator>
				<category><![CDATA[Интернеты]]></category>
		<category><![CDATA[Свободное ПО]]></category>
		<category><![CDATA[hp]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[oem]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://sadko.xskernel.org/?p=1733</guid>
		<description><![CDATA[Tweet Товарищ zawullon изложил драму о пяти частях о том, как пытался вернуть деньги за OEM-нутую венду: Борьба с навязыванием Windows #1 Борьба с навязыванием Windows #2 Борьба с навязыванием Windows #3 Борьба с навязыванием Windows #4 Борьба с навязыванием Windows #5 Пока исход дела достаточно драматичный. Мировой судья &#171;поспрашивала у знакомых компьютерщиков&#187; о том, [...]]]></description>
			<content:encoded><![CDATA[<div style="float: right; margin: 0 0 5px 10px; " class="vk-button">
<!-- vkontakte share button -->
<script type="text/javascript">
<!--
document.write(VK.Share.button(
{
  url: 'http://sadko.xskernel.org/archives/1733',
  title: 'Драма с возвратом денез за OEM',
  description: 'Товарищ  изложил драму о пяти частях о том, как пытался вернуть деньги за OEM-нутую венду:\nБорьба с навязыванием Windows #1\nБорьба с навязыванием Windows #2\nБорьба с навязыванием Windows #3\nБорьба с навязыв...',
  noparse: true 
}, 
{
  type: 'button',
  text: 'Скопировать'
}));
-->
</script>
<!-- / vkontakte share button -->
</div><div style="height:21px; padding-top:2px;" class="really_simple_share"><div style="float:left; " class="really_simple_share_linkedin"> 
				<script type="text/javascript" src="http://platform.linkedin.com/in.js"></script>
				<script type="in/share" data-counter="right" data-url="http://sadko.xskernel.org/archives/1733"></script>
			</div><div style="float:left; padding-left:10px;" class="really_simple_share_twitter"> 
				<a href="http://twitter.com/share" class="twitter-share-button" data-count="horizontal" 
					data-text="&ETH;&Ntilde;&ETH;&deg;&ETH;&frac14;&ETH;&deg; &Ntilde; &ETH;&sup2;&ETH;&frac34;&ETH;&middot;&ETH;&sup2;&Ntilde;&ETH;&deg;&Ntilde;&ETH;&frac34;&ETH;&frac14; &ETH;&acute;&ETH;&micro;&ETH;&frac12;&ETH;&micro;&ETH;&middot; &ETH;&middot;&ETH;&deg; OEM" data-url="http://sadko.xskernel.org/archives/1733">Tweet</a> 
				<script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script> 
			</div></div>
	<br style="clear:both;" /><p>Товарищ <a href="http://users.livejournal.com/zawullon/profile/"><img src="http://stat.livejournal.com/img/userinfo.gif" style="border: 0pt none ; vertical-align: bottom;" height="17" width="17"></a><a href="http://users.livejournal.com/zawullon/"><b>zawullon</b></a> изложил драму о пяти частях о том, как пытался вернуть деньги за OEM-нутую венду:<br />
<a href="http://zawullon.livejournal.com/1327.html">Борьба с навязыванием Windows #1</a><br />
<a href="http://zawullon.livejournal.com/1710.html">Борьба с навязыванием Windows #2</a><br />
<a href="http://zawullon.livejournal.com/1917.html">Борьба с навязыванием Windows #3</a><br />
<a href="http://zawullon.livejournal.com/2554.html">Борьба с навязыванием Windows #4</a><br />
<a href="http://zawullon.livejournal.com/3016.html">Борьба с навязыванием Windows #5</a></p>
<p>Пока исход дела достаточно драматичный. Мировой судья &#171;поспрашивала у знакомых компьютерщиков&#187; о том, является ли венда частью компьютера, на основе чего и решила исход дела в пользу ответчика. При этом, ГК РФ и ЗоЗПП как бы идут лесом.<br />
Будем надеяться, что поданная апелляция повернёт исход дела в совсем другое русло, и законные деньги за OEM, моральный ущерб и судебные издержки возвернутся.</p>
]]></content:encoded>
			<wfw:commentRss>http://sadko.xskernel.org/archives/1733/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Особая магия?</title>
		<link>http://sadko.xskernel.org/archives/1726</link>
		<comments>http://sadko.xskernel.org/archives/1726#comments</comments>
		<pubDate>Sat, 27 Feb 2010 16:46:06 +0000</pubDate>
		<dc:creator>SadKo</dc:creator>
				<category><![CDATA[Разное]]></category>
		<category><![CDATA[dvd]]></category>
		<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://sadko.xskernel.org/?p=1726</guid>
		<description><![CDATA[Tweet Кто-нибудь подскажет, есть какая-то особая магия в Linux слить образ DVD-диска, записанного не с самого начала? Если в курсе, очень прошу поделиться инфой, а то у меня /dev/sr0 имеет размер 0 байт.]]></description>
			<content:encoded><![CDATA[<div style="float: right; margin: 0 0 5px 10px; " class="vk-button">
<!-- vkontakte share button -->
<script type="text/javascript">
<!--
document.write(VK.Share.button(
{
  url: 'http://sadko.xskernel.org/archives/1726',
  title: 'Особая магия?',
  description: 'Кто-нибудь подскажет, есть какая-то особая магия в Linux слить образ DVD-диска, записанного не с самого начала? Если в курсе, очень прошу поделиться инфой, а то у меня /dev/sr0 имеет размер 0 байт.',
  noparse: true 
}, 
{
  type: 'button',
  text: 'Скопировать'
}));
-->
</script>
<!-- / vkontakte share button -->
</div><div style="height:21px; padding-top:2px;" class="really_simple_share"><div style="float:left; " class="really_simple_share_linkedin"> 
				<script type="text/javascript" src="http://platform.linkedin.com/in.js"></script>
				<script type="in/share" data-counter="right" data-url="http://sadko.xskernel.org/archives/1726"></script>
			</div><div style="float:left; padding-left:10px;" class="really_simple_share_twitter"> 
				<a href="http://twitter.com/share" class="twitter-share-button" data-count="horizontal" 
					data-text="&ETH;&Ntilde;&ETH;&frac34;&ETH;&plusmn;&ETH;&deg;&Ntilde; &ETH;&frac14;&ETH;&deg;&ETH;&sup3;&ETH;&cedil;&Ntilde;?" data-url="http://sadko.xskernel.org/archives/1726">Tweet</a> 
				<script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script> 
			</div></div>
	<br style="clear:both;" /><p>Кто-нибудь подскажет, есть какая-то особая магия в Linux слить образ DVD-диска, записанного не с самого начала? Если в курсе, очень прошу поделиться инфой, а то у меня /dev/sr0 имеет размер 0 байт.</p>
]]></content:encoded>
			<wfw:commentRss>http://sadko.xskernel.org/archives/1726/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>VSFTPD &#8212; такой ли секьюрный?</title>
		<link>http://sadko.xskernel.org/archives/1704</link>
		<comments>http://sadko.xskernel.org/archives/1704#comments</comments>
		<pubDate>Tue, 26 Jan 2010 12:35:40 +0000</pubDate>
		<dc:creator>SadKo</dc:creator>
				<category><![CDATA[Кодинг]]></category>
		<category><![CDATA[Свободное ПО]]></category>
		<category><![CDATA[ftp]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[proftpd]]></category>
		<category><![CDATA[suse]]></category>
		<category><![CDATA[vsftpd]]></category>

		<guid isPermaLink="false">http://sadko.xskernel.org/?p=1704</guid>
		<description><![CDATA[Tweet Сегодня разочаровался в моём любимом Very Secure FTP Daemon. Произошло это, когда мне нужно было реализовать что-то вроде RandomAccessFile, работающего по FTP. И когда я дошёл до seek-операций, обнаружил, что vsftpd некорректно отрабатывает пару команд REST + STOR. А именно, открывает файл всегда в режиме O_APPEND, о чём с горестью сообщает manpage: O_APPEND The [...]]]></description>
			<content:encoded><![CDATA[<div style="float: right; margin: 0 0 5px 10px; " class="vk-button">
<!-- vkontakte share button -->
<script type="text/javascript">
<!--
document.write(VK.Share.button(
{
  url: 'http://sadko.xskernel.org/archives/1704',
  title: 'VSFTPD - такой ли секьюрный?',
  description: 'Сегодня разочаровался в моём любимом Very Secure FTP Daemon.\nПроизошло это, когда мне нужно было реализовать что-то вроде RandomAccessFile, работающего по FTP. И когда я дошёл до seek-операций, обнаружил, что vsftpd не...',
  noparse: true 
}, 
{
  type: 'button',
  text: 'Скопировать'
}));
-->
</script>
<!-- / vkontakte share button -->
</div><div style="height:21px; padding-top:2px;" class="really_simple_share"><div style="float:left; " class="really_simple_share_linkedin"> 
				<script type="text/javascript" src="http://platform.linkedin.com/in.js"></script>
				<script type="in/share" data-counter="right" data-url="http://sadko.xskernel.org/archives/1704"></script>
			</div><div style="float:left; padding-left:10px;" class="really_simple_share_twitter"> 
				<a href="http://twitter.com/share" class="twitter-share-button" data-count="horizontal" 
					data-text="VSFTPD &amp;#8212; &Ntilde;&ETH;&deg;&ETH;&ordm;&ETH;&frac34;&ETH;&sup1; &ETH;&raquo;&ETH;&cedil; &Ntilde;&ETH;&micro;&ETH;&ordm;&Ntilde;&Ntilde;&Ntilde;&ETH;&frac12;&Ntilde;&ETH;&sup1;?" data-url="http://sadko.xskernel.org/archives/1704">Tweet</a> 
				<script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script> 
			</div></div>
	<br style="clear:both;" /><p>Сегодня разочаровался в моём любимом <a href="http://vsftpd.beasts.org/"><b>Very Secure FTP Daemon</b></a>.<br />
Произошло это, когда мне нужно было реализовать что-то вроде RandomAccessFile, работающего по FTP. И когда я дошёл до seek-операций, обнаружил, что <b>vsftpd</b> некорректно отрабатывает пару команд REST + STOR. А именно, открывает файл всегда в режиме <b>O_APPEND</b>, о чём с горестью сообщает manpage:<br />
<span id="more-1704"></span></p>
<blockquote><p>
       O_APPEND<br />
              The  file is opened in append mode. Before each write(), the file offset is positioned at the end of the file, as if with<br />
              lseek().  O_APPEND may lead to corrupted files on NFS file systems if more than one process appends data  to  a  file  at<br />
              once.   This is because NFS does not support appending to a file, so the client kernel has to simulate it, which can&#8217;t be<br />
              done without a race condition.
</p></blockquote>
<p>Таким образом, получаем следующую ситуацию:</p>
<ul>
<li>Я создаю на удалённом сервере некий файл при помощи STOR.</li>
<li>Записываю в файл строку &#171;01234567890123456789&#8243;.</li>
<li>Закрываю файл (прекращаю передачу данных).</li>
<li>Делаю REST 3.</li>
<li>Снова открываю файл через STOR.</li>
<li>Записываю в файл строку &#171;xxx&#187;.</li>
<li>Закрываю файл.</li>
</ul>
<p>В результате таких нехитрых манипуляций, по идее, я должен получить файл с содержимым &#171;012xxx67890123456789&#8243;, вместо чего получаю файл с содержимым &#171;01234567890123456789xxx&#187;, то есть, &#171;xxx&#187; ушли в конец.<br />
При этом, <a href="http://proftpd.org/"><b>ProFTPD</b></a> замечательно разруливает эту ситуацию так, как надо.<br />
Что ж, думаю, может в новой версии <b>VSFTPD</b> это пофиксено. Качаю исходники, собираю, ставлю, но ситуация повторяется. Пришлось поковыряться в коде и выяснить, что там действительно делается <b>O_APPEND</b>, что вызвало массу негодования с моей стороны и было допилено.<br />
За сим выкладываю патч для <b>VSFTPD</b> и пропатченный архив для версии 2.2.2:</p>
<ul>
<li><a href="ftp://xskernel.org/pub/patches/vsftpd/vsftpd-2.2.2.patch.bz2">патч для версии 2.2.2</a>;</li>
<li><a href="ftp://xskernel.org/pub/patches/vsftpd/vsftpd-2.2.2-patched.tar.gz">пропатченная версия 2.2.2</a>.</li>
</ul>
<p><b>UPD:</b> Забыл добавить, что внёс ещё одну фичу: файл не будет транкейтиться, если предварительно сделать <b>REST 0</b>.</p>
]]></content:encoded>
			<wfw:commentRss>http://sadko.xskernel.org/archives/1704/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>openSUSE 11.2 Migration tips #3</title>
		<link>http://sadko.xskernel.org/archives/1666</link>
		<comments>http://sadko.xskernel.org/archives/1666#comments</comments>
		<pubDate>Sun, 13 Dec 2009 19:53:49 +0000</pubDate>
		<dc:creator>SadKo</dc:creator>
				<category><![CDATA[Одминское]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[gtk]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[suse]]></category>

		<guid isPermaLink="false">http://sadko.xskernel.org/?p=1666</guid>
		<description><![CDATA[Tweet Собственно, ещё один неприятный момент, возникший в связи с миграцией на openSUSE 11.2. Заключается этот момент в том, что в моей любимой Eclipse IDE кнопки ненормально реагируют на щелчки мышью. Вернее, так: некоторые кнопки, когда я пытаюсь кликать на них, просто не работают. Как выяснилось из бага 555807, связано это с новой версией GTK. [...]]]></description>
			<content:encoded><![CDATA[<div style="float: right; margin: 0 0 5px 10px; " class="vk-button">
<!-- vkontakte share button -->
<script type="text/javascript">
<!--
document.write(VK.Share.button(
{
  url: 'http://sadko.xskernel.org/archives/1666',
  title: 'openSUSE 11.2 Migration tips #3',
  description: 'Собственно, ещё один неприятный момент, возникший в связи с миграцией на openSUSE 11.2.\n\nЗаключается этот момент в том, что в моей любимой Eclipse IDE кнопки ненормально реагируют на щелчки мышью. Вернее...',
  noparse: true 
}, 
{
  type: 'button',
  text: 'Скопировать'
}));
-->
</script>
<!-- / vkontakte share button -->
</div><div style="height:21px; padding-top:2px;" class="really_simple_share"><div style="float:left; " class="really_simple_share_linkedin"> 
				<script type="text/javascript" src="http://platform.linkedin.com/in.js"></script>
				<script type="in/share" data-counter="right" data-url="http://sadko.xskernel.org/archives/1666"></script>
			</div><div style="float:left; padding-left:10px;" class="really_simple_share_twitter"> 
				<a href="http://twitter.com/share" class="twitter-share-button" data-count="horizontal" 
					data-text="openSUSE 11.2 Migration tips #3" data-url="http://sadko.xskernel.org/archives/1666">Tweet</a> 
				<script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script> 
			</div></div>
	<br style="clear:both;" /><p>Собственно, ещё один неприятный момент, возникший в связи с миграцией на openSUSE 11.2.</p>
<p>Заключается этот момент в том, что в моей любимой <b>Eclipse IDE</b> кнопки ненормально реагируют на щелчки мышью. Вернее, так: некоторые кнопки, когда я пытаюсь кликать на них, просто не работают. Как выяснилось из бага <a href="https://bugzilla.novell.com/show_bug.cgi?id=555807">555807</a>, связано это с новой версией GTK. В новой <b>Eclipse</b> это дело, вроде, уже исправили.<br />
Для тех же, кто пока не хочет менять версию, есть костыль (читать workaround): для нормальной работы Eclipse и других java-приложений, использующих GTK, нужно установить переменную среды окружения <b>GDK_NATIVE_WINDOWS</b> в <b>true</b>:</p>

<div class="wp_codebox"><table><tr id="p16663"><td class="code" id="p1666code3"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">export</span> <span style="color: #007800;">GDK_NATIVE_WINDOWS</span>=<span style="color: #c20cb9; font-weight: bold;">true</span></pre></td></tr></table></div>

<p>Например, эту строчку можно записать в <b>.bashrc</b>:</p>

<div class="wp_codebox"><table><tr id="p16664"><td class="code" id="p1666code4"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;export GDK_NATIVE_WINDOWS=true&quot;</span> <span style="color: #000000; font-weight: bold;">&gt;&gt;</span>~<span style="color: #000000; font-weight: bold;">/</span>.bashrc</pre></td></tr></table></div>

<p>Перелогиниваемся, запускаем <b>Eclipse</b>, радуемся.</p>
]]></content:encoded>
			<wfw:commentRss>http://sadko.xskernel.org/archives/1666/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>KDE 4</title>
		<link>http://sadko.xskernel.org/archives/1639</link>
		<comments>http://sadko.xskernel.org/archives/1639#comments</comments>
		<pubDate>Mon, 30 Nov 2009 21:41:47 +0000</pubDate>
		<dc:creator>SadKo</dc:creator>
				<category><![CDATA[Одминское]]></category>
		<category><![CDATA[Свободное ПО]]></category>
		<category><![CDATA[compiz]]></category>
		<category><![CDATA[kde]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[opensuse]]></category>

		<guid isPermaLink="false">http://sadko.xskernel.org/?p=1639</guid>
		<description><![CDATA[Tweet Сижу вот, вникаю в KDE 4. Уж слишком вычурно как-то пока. Да и работает ощутимо плавнее и медленнее, чем KDE3. KDE 3 я тоже поставил, но вот есть одна незадача &#8212; падает knotify по непонятным причинам. А пока &#8212; текущий скриншот нового рабочего стола. Будем ковыряться дальше.]]></description>
			<content:encoded><![CDATA[<div style="float: right; margin: 0 0 5px 10px; " class="vk-button">
<!-- vkontakte share button -->
<script type="text/javascript">
<!--
document.write(VK.Share.button(
{
  url: 'http://sadko.xskernel.org/archives/1639',
  title: 'KDE 4',
  description: 'Сижу вот, вникаю в KDE 4. Уж слишком вычурно как-то пока.\nДа и работает ощутимо плавнее и медленнее, чем KDE3.\nKDE 3 я тоже поставил, но вот есть одна незадача - падает knotify по непонятным причинам.\nА пок...',
  noparse: true 
}, 
{
  type: 'button',
  text: 'Скопировать'
}));
-->
</script>
<!-- / vkontakte share button -->
</div><div style="height:21px; padding-top:2px;" class="really_simple_share"><div style="float:left; " class="really_simple_share_linkedin"> 
				<script type="text/javascript" src="http://platform.linkedin.com/in.js"></script>
				<script type="in/share" data-counter="right" data-url="http://sadko.xskernel.org/archives/1639"></script>
			</div><div style="float:left; padding-left:10px;" class="really_simple_share_twitter"> 
				<a href="http://twitter.com/share" class="twitter-share-button" data-count="horizontal" 
					data-text="KDE 4" data-url="http://sadko.xskernel.org/archives/1639">Tweet</a> 
				<script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script> 
			</div></div>
	<br style="clear:both;" /><p>Сижу вот, вникаю в KDE 4. Уж слишком вычурно как-то пока.<br />
Да и работает ощутимо плавнее и медленнее, чем KDE3.<br />
KDE 3 я тоже поставил, но вот есть одна незадача &#8212; падает <b>knotify</b> по непонятным причинам.<br />
А пока &#8212; текущий скриншот нового рабочего стола.</p>
<p><a href="http://sadko.xskernel.org/wp-content/uploads/2009/12/kde4.png"><img src="http://sadko.xskernel.org/wp-content/uploads/2009/12/kde4-300x240.png" alt="Мой новый рабочий стол" title="kde4" width="300" height="240" class="size-medium wp-image-1638" /></a></p>
<p>Будем ковыряться дальше.</p>
]]></content:encoded>
			<wfw:commentRss>http://sadko.xskernel.org/archives/1639/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>openSUSE 11.2 Migration tips #1</title>
		<link>http://sadko.xskernel.org/archives/1617</link>
		<comments>http://sadko.xskernel.org/archives/1617#comments</comments>
		<pubDate>Sat, 28 Nov 2009 12:57:04 +0000</pubDate>
		<dc:creator>SadKo</dc:creator>
				<category><![CDATA[Одминское]]></category>
		<category><![CDATA[Туториалы]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[opensuse]]></category>

		<guid isPermaLink="false">http://sadko.xskernel.org/?p=1617</guid>
		<description><![CDATA[Tweet В связи с тем, что моя openSUSE 10.2 в последнее время стала себя плохо чувствовать, я решил-таки заняться постепенной миграцией на openSUSE 11.2. Я не буду расписывать пока впечатления о системе, так как ещё до конца её не настроил. Здесь же постараюсь выложить решение проблем, с которыми я столкнулся при миграции. Итак, первая проблема [...]]]></description>
			<content:encoded><![CDATA[<div style="float: right; margin: 0 0 5px 10px; " class="vk-button">
<!-- vkontakte share button -->
<script type="text/javascript">
<!--
document.write(VK.Share.button(
{
  url: 'http://sadko.xskernel.org/archives/1617',
  title: 'openSUSE 11.2 Migration tips #1',
  description: 'В связи с тем, что моя openSUSE 10.2 в последнее время стала себя плохо чувствовать, я решил-таки заняться постепенной миграцией на openSUSE 11.2.\n\nЯ не буду расписывать пока впечатления о системе, так как...',
  noparse: true 
}, 
{
  type: 'button',
  text: 'Скопировать'
}));
-->
</script>
<!-- / vkontakte share button -->
</div><div style="height:21px; padding-top:2px;" class="really_simple_share"><div style="float:left; " class="really_simple_share_linkedin"> 
				<script type="text/javascript" src="http://platform.linkedin.com/in.js"></script>
				<script type="in/share" data-counter="right" data-url="http://sadko.xskernel.org/archives/1617"></script>
			</div><div style="float:left; padding-left:10px;" class="really_simple_share_twitter"> 
				<a href="http://twitter.com/share" class="twitter-share-button" data-count="horizontal" 
					data-text="openSUSE 11.2 Migration tips #1" data-url="http://sadko.xskernel.org/archives/1617">Tweet</a> 
				<script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script> 
			</div></div>
	<br style="clear:both;" /><p>В связи с тем, что моя openSUSE 10.2 в последнее время стала себя плохо чувствовать, я решил-таки заняться постепенной миграцией на openSUSE 11.2.</p>
<p>Я не буду расписывать пока впечатления о системе, так как ещё до конца её не настроил. Здесь же постараюсь выложить решение проблем, с которыми я столкнулся при миграции.</p>
<p>Итак, первая проблема &#8212; это монтирование шифрованного раздела. При установке надо под любым предлогом отказаться от монтирования скрытого раздела, так как YaST Manager согласится с этим только при условии его полного форматирования.<br />
После установки монтируем старый корневой раздел (я ставил новую систему в другой, заведомо подготовленный раздел) и смотрим содержимое файла /etc/cryptotab:</p>

<div class="wp_codebox"><table><tr id="p161711"><td class="code" id="p1617code11"><pre class="text" style="font-family:monospace;">/dev/loop0  /dev/hda6 /home ext3 twofish256 acl,user_xattr</pre></td></tr></table></div>

<p>И, соответственно, переписываем это в /etc/fstab:</p>

<div class="wp_codebox"><table><tr id="p161712"><td class="code" id="p1617code12"><pre class="text" style="font-family:monospace;">/dev/sda6 /home ext3 acl,user_xattr,loop,encryption=twofish256 1 1</pre></td></tr></table></div>

<p>Отметим, что в <b>/etc/cryptotab</b> используется устройство <b>/dev/hda6</b>, а в <b>/etc/fstab</b> новой системы &#8212; <b>/dev/sda6</b>, так как в новых версиях ядра Linux используется немного другая система именования устройств.</p>
<p>После чего подгружаем необходимые модули:</p>

<div class="wp_codebox"><table><tr id="p161713"><td class="code" id="p1617code13"><pre class="bash" style="font-family:monospace;">modprobe cryptoloop
modprobe twofish
<span style="color: #c20cb9; font-weight: bold;">mount</span> <span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>sda6</pre></td></tr></table></div>

<p>Теперь раздел подмонтирован. Осталось закрепить результат, для этого идём в <b>/etc/sysconfig/kernel</b> и добавляем к параметру <b>MODULES_LOADED_ON_BOOT</b> значения:</p>

<div class="wp_codebox"><table><tr id="p161714"><td class="code" id="p1617code14"><pre class="text" style="font-family:monospace;">MODULES_LOADED_ON_BOOT=&quot;cryptoloop twofish&quot;</pre></td></tr></table></div>

<p><b>UPD</b>: Конечно, это не решает проблему до конца: при автоматическом монтировании раздела при загрузке системы.<br />
Чтобы не было проблем, включаем сервис <b>boot.crypto</b>:</p>

<div class="wp_codebox"><table><tr id="p161715"><td class="code" id="p1617code15"><pre class="bash" style="font-family:monospace;">chkconfig boot.crypto on</pre></td></tr></table></div>

<p>После этого создаём файл <b>/etc/cryptotab</b> и прописываем туда:</p>

<div class="wp_codebox"><table><tr id="p161716"><td class="code" id="p1617code16"><pre class="text" style="font-family:monospace;">/dev/loop0 /dev/sda6 /home ext3 twofish256 acl,user_xattr</pre></td></tr></table></div>

<p>И убираем заранее созданную запись из <b>/etc/fstab</b>.</p>
<p>На этом решение первой проблемы заканчивается <img src='http://sadko.xskernel.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>
]]></content:encoded>
			<wfw:commentRss>http://sadko.xskernel.org/archives/1617/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>For fun.</title>
		<link>http://sadko.xskernel.org/archives/1603</link>
		<comments>http://sadko.xskernel.org/archives/1603#comments</comments>
		<pubDate>Fri, 20 Nov 2009 19:01:40 +0000</pubDate>
		<dc:creator>SadKo</dc:creator>
				<category><![CDATA[Кодинг]]></category>
		<category><![CDATA[Свободное ПО]]></category>
		<category><![CDATA[bsd]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[opensuse]]></category>
		<category><![CDATA[perl]]></category>

		<guid isPermaLink="false">http://sadko.xskernel.org/?p=1603</guid>
		<description><![CDATA[Tweet Совсем недавно приходилось решать интересную задачу по Unix: Фактически нужно было разработать демон simple-telnetd на языке Perl, позволяющий удалённо запускать некоторое ограниченное подмножество команд и выводить пользователю результат их выполнения. simple-telnetd может запускать только разрешенные программы, которые перечислены в файле /etc/simple-telnetd.conf. Демон должен перечитывать этот файл и обновлять список разрешенных программ после поступления сигнала [...]]]></description>
			<content:encoded><![CDATA[<div style="float: right; margin: 0 0 5px 10px; " class="vk-button">
<!-- vkontakte share button -->
<script type="text/javascript">
<!--
document.write(VK.Share.button(
{
  url: 'http://sadko.xskernel.org/archives/1603',
  title: 'For fun.',
  description: 'Совсем недавно приходилось решать интересную задачу по Unix:\nФактически нужно было разработать демон simple-telnetd на языке Perl, позволяющий удалённо запускать некоторое ограниченное подмножество ...',
  noparse: true 
}, 
{
  type: 'button',
  text: 'Скопировать'
}));
-->
</script>
<!-- / vkontakte share button -->
</div><div style="height:21px; padding-top:2px;" class="really_simple_share"><div style="float:left; " class="really_simple_share_linkedin"> 
				<script type="text/javascript" src="http://platform.linkedin.com/in.js"></script>
				<script type="in/share" data-counter="right" data-url="http://sadko.xskernel.org/archives/1603"></script>
			</div><div style="float:left; padding-left:10px;" class="really_simple_share_twitter"> 
				<a href="http://twitter.com/share" class="twitter-share-button" data-count="horizontal" 
					data-text="For fun." data-url="http://sadko.xskernel.org/archives/1603">Tweet</a> 
				<script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script> 
			</div></div>
	<br style="clear:both;" /><p>Совсем недавно приходилось решать интересную задачу по Unix:<br />
Фактически нужно было разработать демон simple-telnetd на языке Perl, позволяющий удалённо запускать некоторое ограниченное подмножество команд и выводить пользователю результат их выполнения. </p>
<ul>
<li>simple-telnetd может запускать только разрешенные программы, которые перечислены в файле /etc/simple-telnetd.conf. Демон должен перечитывать этот файл и обновлять список разрешенных программ после поступления сигнала SIGHUP;</li>
<li>Запускаемые программы могут иметь параметры командной строки, но simple-telnetd не должен поддерживать интерактивного взаимодействия пользователя с запускаемыми программами;</li>
<li>Демон не обязан обрабатывать спец символы: ^C, ^D, и т.д.</li>
<li>В качестве параметра командной строки simple-telnetd может передаваться параметр timeout &#8212; максимальное время выполнения одной команды;</li>
<li>Желательно чтобы демон мог прослушивать не только tcp сокеты, но и локальные (например /tmp/simple-telnetd);</li>
</ul>
<p>В конце-концов, скрипт всё же не пригодился, поэтому, чтобы компенсировать потраченное на него время, выкладываю его тут &#8212; вдруг, кому пригодится. Забрать его можно по этой ссылке.<br />
<a href="http://download.xskernel.org/pub/perl/simple-telnetd.tar.gz">simple-telnetd.tar.gz</a><br />
Если кому-то помогло, пишите, не стесняйтесь, буду рад <img src='http://sadko.xskernel.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>
<p>Поскольку я писал этот демон с особым энтузиазмом, не обошлось без фич, которых нет в исходном задании: написал init.d-скрипт для службы, который успешно был протестирован в openSUSE Linux, оформил perldoc и manpages, сделал возможность интерактивной авторизации, ну и другая мелочёвка (уже даже и не помню какая) вдовесок.</p>
]]></content:encoded>
			<wfw:commentRss>http://sadko.xskernel.org/archives/1603/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

