<?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>Ufasoft Blog</title>
	<atom:link href="http://ufasoft.com/ru/blog/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://ufasoft.com/ru/blog</link>
	<description>Русский блог посвященный программированию</description>
	<lastBuildDate>Mon, 23 Aug 2010 13:29:25 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Социальная сеть книголюбов</title>
		<link>http://ufasoft.com/ru/blog/?p=55</link>
		<comments>http://ufasoft.com/ru/blog/?p=55#comments</comments>
		<pubDate>Mon, 23 Aug 2010 13:29:25 +0000</pubDate>
		<dc:creator>support</dc:creator>
				<category><![CDATA[Books]]></category>

		<guid isPermaLink="false">http://ufasoft.com/ru/blog/?p=55</guid>
		<description><![CDATA[znaio.com
]]></description>
			<content:encoded><![CDATA[<p><a href="http://znaio.com">znaio.com</a></p>
]]></content:encoded>
			<wfw:commentRss>http://ufasoft.com/ru/blog/?feed=rss2&amp;p=55</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Александр Степанов (STL). Лекции в Яндексе</title>
		<link>http://ufasoft.com/ru/blog/?p=47</link>
		<comments>http://ufasoft.com/ru/blog/?p=47#comments</comments>
		<pubDate>Wed, 16 Jun 2010 13:34:12 +0000</pubDate>
		<dc:creator>support</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://ufasoft.com/ru/blog/?p=47</guid>
		<description><![CDATA[
А здесь сборник его статей и книга

Must read для каждого серьезного программера
]]></description>
			<content:encoded><![CDATA[<p><object width="450" height="360"><param name="video" value="http://static.video.yandex.ru/lite/ya-events/fep8fxq5c8.2601/"/><param name="allowFullScreen" value="true"/><param name="scale" value="noscale"/><embed src="http://static.video.yandex.ru/lite/ya-events/fep8fxq5c8.2601/" type="application/x-shockwave-flash" width="450" height="360" allowFullScreen="true" scale="noscale"></embed></object></p>
<p><a href="http://www.stepanovpapers.com/">А здесь сборник его статей и книга<br />
</a><br />
<strong>Must read</strong> для каждого серьезного программера</p>
]]></content:encoded>
			<wfw:commentRss>http://ufasoft.com/ru/blog/?feed=rss2&amp;p=47</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Advanced Format</title>
		<link>http://ufasoft.com/ru/blog/?p=45</link>
		<comments>http://ufasoft.com/ru/blog/?p=45#comments</comments>
		<pubDate>Fri, 29 Jan 2010 09:22:14 +0000</pubDate>
		<dc:creator>support</dc:creator>
				<category><![CDATA[Hardware]]></category>

		<guid isPermaLink="false">http://ufasoft.com/ru/blog/?p=45</guid>
		<description><![CDATA[Western Digital начала выпуск дисков с 4K секторами. Большой Шаг вперед после 512-byte наследия DOS.
Сейчас доступны модели WD10EARS, WD15EARS, WD20EARS 64MB Cache.
Почитать тожно здесь
]]></description>
			<content:encoded><![CDATA[<p>Western Digital начала выпуск дисков с 4K секторами. Большой Шаг вперед после 512-byte наследия DOS.<br />
Сейчас доступны модели WD10EARS, WD15EARS, WD20EARS 64MB Cache.<br />
Почитать тожно <a href="http://anandtech.com/storage/showdoc.aspx?i=3691">здесь</a></p>
]]></content:encoded>
			<wfw:commentRss>http://ufasoft.com/ru/blog/?feed=rss2&amp;p=45</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Future ORG technology</title>
		<link>http://ufasoft.com/ru/blog/?p=41</link>
		<comments>http://ufasoft.com/ru/blog/?p=41#comments</comments>
		<pubDate>Thu, 14 Jan 2010 22:30:22 +0000</pubDate>
		<dc:creator>support</dc:creator>
				<category><![CDATA[Humor]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://ufasoft.com/ru/blog/?p=41</guid>
		<description><![CDATA[Осенила мысль:
Если основные компонентные технологии Microsoft назывались:

COM
.NET

то логично предположить, что следующей станет .ORG.
Конечно есть еще варианты .EDU и .MIL (но последняя только в случае ядерной войны  
]]></description>
			<content:encoded><![CDATA[<p>Осенила мысль:</p>
<p>Если основные компонентные технологии Microsoft назывались:</p>
<ul>
<li>COM</li>
<li>.NET</li>
<ul>
<p>то логично предположить, что следующей станет <strong>.ORG</strong>.<br />
Конечно есть еще варианты <strong>.EDU</strong> и <strong>.MIL</strong> (но последняя только в случае ядерной войны <img src='http://ufasoft.com/ru/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://ufasoft.com/ru/blog/?feed=rss2&amp;p=41</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Как пилят в ВТБ</title>
		<link>http://ufasoft.com/ru/blog/?p=38</link>
		<comments>http://ufasoft.com/ru/blog/?p=38#comments</comments>
		<pubDate>Tue, 15 Dec 2009 20:42:47 +0000</pubDate>
		<dc:creator>support</dc:creator>
				<category><![CDATA[Кризис]]></category>

		<guid isPermaLink="false">http://ufasoft.com/ru/blog/?p=38</guid>
		<description><![CDATA[Как пилят в ВТБ

]]></description>
			<content:encoded><![CDATA[<p><a href="http://navalny.livejournal.com/413833.html">Как пилят в ВТБ</a><br />
<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/5R-Bfm288vc&#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/5R-Bfm288vc&#038;hl=ru_RU&#038;fs=1&#038;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://ufasoft.com/ru/blog/?feed=rss2&amp;p=38</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Появился VS 2010 Beta 2</title>
		<link>http://ufasoft.com/ru/blog/?p=31</link>
		<comments>http://ufasoft.com/ru/blog/?p=31#comments</comments>
		<pubDate>Wed, 28 Oct 2009 11:52:06 +0000</pubDate>
		<dc:creator>support</dc:creator>
				<category><![CDATA[C++]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://www.ufasoft.com/ru/blog/?p=31</guid>
		<description><![CDATA[В отличие от 1-й Beta, этой уже вполне можно пользоваться.
Главное из добавлений:

поддержка C++0x:  nullptr/nullptr_t,  lambda-functions
MSBuild 4.0 &#8211; теперь IDE не привязана к конкретным инструментам и поностью настраиваема под любые компиляторы с помощью XML

]]></description>
			<content:encoded><![CDATA[<p>В отличие от 1-й Beta, этой уже вполне можно пользоваться.<br />
Главное из добавлений:</p>
<ul>
<li>поддержка C++0x:  <strong>nullptr/nullptr_t</strong>,  <strong>lambda-functions</strong></li>
<li><strong>MSBuild 4.0</strong> &#8211; теперь IDE не привязана к конкретным инструментам и поностью настраиваема под любые компиляторы с помощью XML</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://ufasoft.com/ru/blog/?feed=rss2&amp;p=31</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Еще о темных делах Газпрома</title>
		<link>http://ufasoft.com/ru/blog/?p=30</link>
		<comments>http://ufasoft.com/ru/blog/?p=30#comments</comments>
		<pubDate>Sun, 18 Oct 2009 20:03:18 +0000</pubDate>
		<dc:creator>support</dc:creator>
				<category><![CDATA[Кризис]]></category>

		<guid isPermaLink="false">http://www.ufasoft.com/ru/blog/?p=30</guid>
		<description><![CDATA[Продолжение войны Навального с Газпромом
Как Газпром турбину покупал
]]></description>
			<content:encoded><![CDATA[<p>Продолжение войны Навального с Газпромом<br />
<a href="http://navalny.livejournal.com/400437.html">Как Газпром турбину покупал</a></p>
]]></content:encoded>
			<wfw:commentRss>http://ufasoft.com/ru/blog/?feed=rss2&amp;p=30</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Как отмазывают тех, кто пилит Газпром</title>
		<link>http://ufasoft.com/ru/blog/?p=29</link>
		<comments>http://ufasoft.com/ru/blog/?p=29#comments</comments>
		<pubDate>Fri, 07 Aug 2009 10:30:39 +0000</pubDate>
		<dc:creator>support</dc:creator>
				<category><![CDATA[Кризис]]></category>

		<guid isPermaLink="false">http://www.ufasoft.com/ru/blog/?p=29</guid>
		<description><![CDATA[Про расследование темной деятельности менеджеров Газпрома господином Навальным:
Как отмазывают тех, кто пилит Газпром
]]></description>
			<content:encoded><![CDATA[<p>Про расследование темной деятельности менеджеров Газпрома господином Навальным:<br />
<a href="http://navalny.livejournal.com/387047.html">Как отмазывают тех, кто пилит Газпром</a></p>
]]></content:encoded>
			<wfw:commentRss>http://ufasoft.com/ru/blog/?feed=rss2&amp;p=29</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Strongly typed enums in C++0x и их эмуляция в Visual C++</title>
		<link>http://ufasoft.com/ru/blog/?p=28</link>
		<comments>http://ufasoft.com/ru/blog/?p=28#comments</comments>
		<pubDate>Sun, 02 Aug 2009 11:48:29 +0000</pubDate>
		<dc:creator>support</dc:creator>
				<category><![CDATA[C++]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.ufasoft.com/ru/blog/?p=28</guid>
		<description><![CDATA[Новый стандарт С++ включает удобную фичу Strongly Typed Enums, также называемую Scoped Enums:
enum class En {
    A = 2
};
En var = En::A;  // вместо En var = A;

Для поддержки этого в текущем компиляторе VC++ можно использовать такие макросы:

#define DEF_ENUM(name) struct enum_##name { enum E
#define END_ENUM(name) ; }; typedef enum_##name::E name; 

DEF_ENUM(En) [...]]]></description>
			<content:encoded><![CDATA[<p>Новый стандарт С++ включает удобную фичу <a href="http://en.wikipedia.org/wiki/C%2B%2B0x#Strongly_typed_enumerations"><strong>Strongly Typed Enums</strong></a>, также называемую <strong>Scoped Enums</strong>:</p>
<pre>enum class En {
    A = 2
};
En var = En::A;  // вместо En var = A;
</pre>
<p>Для поддержки этого в текущем компиляторе VC++ можно использовать такие макросы:</p>
<pre>
#define DEF_ENUM(name) struct enum_##name { enum E
#define END_ENUM(name) ; }; typedef enum_##name::E name; 

DEF_ENUM(En) {
    A = 2
} END_ENUM(En)

En var = En::A;  // вместо En var = A;
</pre>
]]></content:encoded>
			<wfw:commentRss>http://ufasoft.com/ru/blog/?feed=rss2&amp;p=28</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RC4 C# implementation</title>
		<link>http://ufasoft.com/ru/blog/?p=27</link>
		<comments>http://ufasoft.com/ru/blog/?p=27#comments</comments>
		<pubDate>Wed, 08 Apr 2009 07:45:31 +0000</pubDate>
		<dc:creator>support</dc:creator>
				<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.ufasoft.com/ru/blog/?p=27</guid>
		<description><![CDATA[Реализация криптоалгоритма RC4 для .NET:

using System;
using System.Security.Cryptography;

using Utils;

namespace Crypto {

internal class RC4Cryptor : ICryptoTransform {
	internal byte[] S;

	public bool CanReuseTransform { get { throw new NotImplementedException(); } }
	public bool CanTransformMultipleBlocks { get { throw new NotImplementedException(); } }
	public int InputBlockSize { get { throw new NotImplementedException(); } }
	public int OutputBlockSize { get { throw new NotImplementedException(); [...]]]></description>
			<content:encoded><![CDATA[<p>Реализация криптоалгоритма RC4 для .NET:</p>
<pre>
using System;
using System.Security.Cryptography;

using Utils;

namespace Crypto {

internal class RC4Cryptor : ICryptoTransform {
	internal byte[] S;

	public bool CanReuseTransform { get { throw new NotImplementedException(); } }
	public bool CanTransformMultipleBlocks { get { throw new NotImplementedException(); } }
	public int InputBlockSize { get { throw new NotImplementedException(); } }
	public int OutputBlockSize { get { throw new NotImplementedException(); } }
	public int TransformBlock(byte[] inputBuffer, int inputOffset, int inputCount, byte[] outputBuffer, int outputOffset) {
		throw new NotImplementedException();
	}

	public void Dispose() {
	}

	public byte[] TransformFinalBlock(byte[] inputBuffer, int inputOffset, int inputCount) {
		byte[] r = new byte[inputCount];
		for (int i = 0, j = 0; i < inputCount; ) {
			j += S[++i % 256];
			Ut.Swap(ref S[i % 256], ref S[j % 256]);
			int t = S[i % 256] + S[j % 256];
			r[i-1] = inputBuffer[inputOffset + i - 1] ^ S[t % 256];
		}
		return r;
	}
}

public class RC4 : SymmetricAlgorithm {

	byte[] S = new byte[256];
	byte[] K = new byte[256];

	public override ICryptoTransform CreateDecryptor(byte[] rgbKey, byte[] rgbIV) {
		throw new NotImplementedException();
	}

	public override ICryptoTransform CreateEncryptor(byte[] rgbKey, byte[] rgbIV) {
		throw new NotImplementedException();
	}

	public override void GenerateIV() {
		throw new NotImplementedException();
	}

	public override void GenerateKey() {
		var rnd = new Random();
		var key = new byte[16];
		rnd.NextBytes(key);
		Key = key;
	}

	public override ICryptoTransform CreateEncryptor() {
		return new RC4Cryptor() { S = (byte[])S.Clone() };
	}

	public override ICryptoTransform CreateDecryptor() {
		return new RC4Cryptor() { S = (byte[])S.Clone() };
	}

	public override byte[] Key {
		set {
			base.Key = value;

			for (int i = 0; i < S.Length; ++i) {
				S[i] = (byte)i;
				K[i] = Key[i % Key.Length];
			}

			for (int i=0, j=0; i < S.Length; ++i)
				Ut.Swap(ref S[i], ref S[j = (j + S[i] + K[i]) % 256]);
		}
	}
}

}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://ufasoft.com/ru/blog/?feed=rss2&amp;p=27</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
