<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>https://wiki.shelek.ru/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=RXL</id>
		<title>Весельчак У - Вклад участника [ru]</title>
		<link rel="self" type="application/atom+xml" href="https://wiki.shelek.ru/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=RXL"/>
		<link rel="alternate" type="text/html" href="https://wiki.shelek.ru/index.php/%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%92%D0%BA%D0%BB%D0%B0%D0%B4/RXL"/>
		<updated>2026-05-26T18:04:15Z</updated>
		<subtitle>Вклад участника</subtitle>
		<generator>MediaWiki 1.25.1</generator>

	<entry>
		<id>https://wiki.shelek.ru/index.php?title=FAQ:STL:C%2B%2B_%D1%81%D0%B5%D1%80%D0%B8%D0%B0%D0%BB%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85&amp;diff=1531</id>
		<title>FAQ:STL:C++ сериализация данных</title>
		<link rel="alternate" type="text/html" href="https://wiki.shelek.ru/index.php?title=FAQ:STL:C%2B%2B_%D1%81%D0%B5%D1%80%D0%B8%D0%B0%D0%BB%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85&amp;diff=1531"/>
				<updated>2015-08-03T22:41:35Z</updated>
		
		<summary type="html">&lt;p&gt;RXL: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Иногда нужно сохранить состояние класса в файл, передать состояние класса по сети. Подобные задачи обычно решает сериализация. &lt;br /&gt;
&lt;br /&gt;
Говоря о сериализации, я подразумеваю механизмы перевода некоторого класса, структуры или набора переменных в определённый формат (бинарный, текстовый, XML, HTML и т.д.), а также сам процесс перевода. Десериализация - процессы и механизмы, обратные сериализации (восстановление состояния из внешнего источника). &lt;br /&gt;
&lt;br /&gt;
Самый простой способ, к которому чаще всего прибегают молодые программисты, - это простое копирование памяти в файл или еще куда-то. Т.е. берём указатель на класс/структуру/переменную и копируем N байт в файл. Пример: &amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
.......&lt;br /&gt;
MyClass m;&lt;br /&gt;
..............&lt;br /&gt;
std::ofstream f(&amp;quot;dump.bin&amp;quot;, std::binary);&lt;br /&gt;
f.write(&amp;amp;m, sizeof(m));&lt;br /&gt;
f.close();&lt;br /&gt;
........................&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Но этот метод сериализации имеет ряд ограничений и недостатков: &lt;br /&gt;
&lt;br /&gt;
*Допустимо использовать только для POD-структур (POD - Plain Old Data) и встроенных типов. Почему, будет понятно из следующих пунктов. &lt;br /&gt;
*Если программистом описан конструктор, то компилятор вправе в класс добавить какие-то свои вспомогательные переменные, что превращает класс в не POD-структуру, на самом деле это не так страшно, но формально это так. &lt;br /&gt;
*При сохранении указателей членов класса будут скопированы только адреса, хранимые указателями и, естественно, класс с указателями это не POD-тип &lt;br /&gt;
*Если в классе объявленные виртуальные функции (или он унаследован от класса содержащего виртуальные функции), это приводит к тому, что класс будет дополнен указателем на таблицу виртуальных функций, и с этим указателем та же проблема, что и со всеми другими. Опять же не POD-тип. &lt;br /&gt;
*Если ваш класс содержит внутри себя не POD типы или унаследован от не POD-типа, то ваш класс тоже не под тип, т.е. нет никакой гарантии, что копирование куска памяти позволит постановить состояние класса. &lt;br /&gt;
*Различное выравнивание данных внутри класса может сделать невозможным перенос сохранённого класса на другую платформу или даже в программу, скомпилированную с другими параметрами компиляции. &lt;br /&gt;
*Различный порядок байт не позволит переносить данные между такими платформами, как: x86 и PowerPC &lt;br /&gt;
*И такая сериализация не даёт сохранить в удобочитаемой форме XML, текст или CSV&lt;br /&gt;
&lt;br /&gt;
Есть много ситуаций, когда создание дампа памяти - вполне допустимый метод сериализации, но также есть другое множество ситуаций, когда такой подход недопустим. &lt;br /&gt;
&lt;br /&gt;
Как только программист задумывается о сериализации данных, ему сразу же хочется выполнять сериализацию всего парой строк кода: легко и изящно, например, так: &amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
// вывести состояние класса и всех его членов.&lt;br /&gt;
std::cout &amp;lt;&amp;lt; myClass;&lt;br /&gt;
&lt;br /&gt;
// загрузить состояние класса из XML&lt;br /&gt;
myXML &amp;gt;&amp;gt; myClass; &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
И, естественно, самый простой способ быстро добиться результата - это использовать &amp;quot;велосипед&amp;quot;, написанный другими. &amp;quot;Велосипед&amp;quot; возьмём хороший, многофункциональный. Он умеет выполнять сериализацию и десериализацию стандартных контейнеров, классов, указателей, ссылок и еще чего-то. Также он умеет сохранять, работать с различными форматами выходных данных: бинарный, текст, XML. Если очень хочется, то он может сохранить не только в поток, но и куда угодно, например, в вектор или в сокет или выкинуть в пропасть. &lt;br /&gt;
&lt;br /&gt;
Полное описание &amp;quot;велосипеда&amp;quot;: http://www.boost.org/doc/libs/1_36_0/libs/serialization/doc/index.html &lt;br /&gt;
&lt;br /&gt;
Вот пример использования (взято из описания): &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
/////////////////////////////////////////////////////////////&lt;br /&gt;
// gps координаты&lt;br /&gt;
//&lt;br /&gt;
// illustrates serialization for a simple type&lt;br /&gt;
//&lt;br /&gt;
class gps_position&lt;br /&gt;
{&lt;br /&gt;
private:&lt;br /&gt;
    friend class boost::serialization::access;&lt;br /&gt;
    // When the class Archive corresponds to an output archive, the&lt;br /&gt;
    // &amp;amp; operator is defined similar to &amp;lt;&amp;lt;.  Likewise, when the class Archive&lt;br /&gt;
    // is a type of input archive the &amp;amp; operator is defined similar to &amp;gt;&amp;gt;.&lt;br /&gt;
    template&amp;lt;class Archive&amp;gt;&lt;br /&gt;
    void serialize(Archive &amp;amp; ar, const unsigned int version)&lt;br /&gt;
    {&lt;br /&gt;
        ar &amp;amp; degrees;&lt;br /&gt;
        ar &amp;amp; minutes;&lt;br /&gt;
        ar &amp;amp; seconds;&lt;br /&gt;
    }&lt;br /&gt;
    int degrees;&lt;br /&gt;
    int minutes;&lt;br /&gt;
    float seconds;&lt;br /&gt;
public:&lt;br /&gt;
    gps_position(){};&lt;br /&gt;
    gps_position(int d, int m, float s) :&lt;br /&gt;
        degrees(d), minutes(m), seconds(s)&lt;br /&gt;
    {}&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
int main() {&lt;br /&gt;
    // create and open a character archive for output&lt;br /&gt;
    std::ofstream ofs(&amp;quot;filename&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    // create class instance&lt;br /&gt;
    const gps_position g(35, 59, 24.567f);&lt;br /&gt;
&lt;br /&gt;
    // save data to archive&lt;br /&gt;
    {&lt;br /&gt;
        boost::archive::text_oarchive oa(ofs);&lt;br /&gt;
        // write class instance to archive&lt;br /&gt;
        oa &amp;lt;&amp;lt; g;&lt;br /&gt;
    	// archive and stream closed when destructors are called&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // ... some time later restore the class instance to its orginal state&lt;br /&gt;
    gps_position newg;&lt;br /&gt;
    {&lt;br /&gt;
        // create and open an archive for input&lt;br /&gt;
        std::ifstream ifs(&amp;quot;filename&amp;quot;);&lt;br /&gt;
        boost::archive::text_iarchive ia(ifs);&lt;br /&gt;
        // read class state from archive&lt;br /&gt;
        ia &amp;gt;&amp;gt; newg;&lt;br /&gt;
        // archive and stream closed when destructors are called&lt;br /&gt;
    }&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Теперь по пунктам, как это работает: &lt;br /&gt;
&lt;br /&gt;
#Создаём внутри нашего класса метод serialize, получаем ссылку на архив и номер версии(можно по-разному сериализовать в зависимости от версии), если метод приватный, то добавляем в друзья class boost::serialization::access. Метод serialize будет вызываться при сериализации и десериализации. &lt;br /&gt;
#Открываем файл и создаём архив (text_oarchive текстовый выходной архив), в нашем случае текстовый, архив - это тот самый класс, который выполняет основную работу. &lt;br /&gt;
#Вызываем всеми любимый оператор &amp;amp;lt;&amp;amp;lt; - этот оператор вызывает метод serialize для классов или же внешние функции(они идут в комплекте) для встроенных типов и стандартных контейнеров. &lt;br /&gt;
#text_oarchive::operator&amp;amp;lt;&amp;amp;lt; вызвал наш метод serialize и передал вовнутрь себя, тут возникает вопрос: почему внутри serialize используется оператор &amp;amp;amp;, а не &amp;amp;lt;&amp;amp;lt;? Ответ: потому что у выходного архива операторы &amp;amp;amp; и &amp;amp;lt;&amp;amp;lt; по сути это одно и тоже, у входного операторы &amp;amp;amp; и &amp;amp;gt;&amp;amp;gt; - одно и тоже. Т.е. ничто не мешает в коде поменять &amp;quot;ia &amp;amp;gt;&amp;amp;gt; newg;&amp;quot; на &amp;quot;ia &amp;amp;amp; newg;&amp;quot;. &lt;br /&gt;
#Если нужно изменить метод сериализации, достаточно поменять тип архива (для XML архива придётся сделать еще некоторою работу в методе serialize).&lt;br /&gt;
&lt;br /&gt;
На этом, в общем-то, работа по поддержке сериализации закончена. &lt;br /&gt;
&lt;br /&gt;
При желании, можно разделить методы для сериализации и десериализации. Кстати, boost::seralization гарантирует, что порядок байт при сериализации будет изменён, если потребуется, так что можно спокойно передать long с x86 на PowerPC. &lt;br /&gt;
&lt;br /&gt;
Немного поправленный пример использования и результаты работы: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;quot;stdafx.h&amp;quot;&lt;br /&gt;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
#include &amp;lt;fstream&amp;gt;&lt;br /&gt;
#include &amp;lt;string&amp;gt;&lt;br /&gt;
#include &amp;lt;fstream&amp;gt;&lt;br /&gt;
#include &amp;lt;vector&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// include headers that implement a archive in simple text format&lt;br /&gt;
#include &amp;lt;boost/archive/text_oarchive.hpp&amp;gt;&lt;br /&gt;
#include &amp;lt;boost/archive/text_iarchive.hpp&amp;gt;&lt;br /&gt;
#include &amp;lt;boost/archive/binary_iarchive.hpp&amp;gt;&lt;br /&gt;
#include &amp;lt;boost/archive/binary_oarchive.hpp&amp;gt;&lt;br /&gt;
#include &amp;lt;boost/archive/xml_iarchive.hpp&amp;gt;&lt;br /&gt;
#include &amp;lt;boost/archive/xml_oarchive.hpp&amp;gt;&lt;br /&gt;
// включаем, чтобы сериализация работала с векторами&lt;br /&gt;
#include &amp;lt;boost/serialization/vector.hpp&amp;gt;&lt;br /&gt;
// включаем, чтобы нормально проходила сериализация XML&lt;br /&gt;
#include &amp;lt;boost/serialization/nvp.hpp&amp;gt;&lt;br /&gt;
&lt;br /&gt;
class gps_position&lt;br /&gt;
{&lt;br /&gt;
private:&lt;br /&gt;
	friend class boost::serialization::access;&lt;br /&gt;
&lt;br /&gt;
	template&amp;lt;class Archive&amp;gt;&lt;br /&gt;
	void serialize(Archive &amp;amp; ar, const unsigned int version)&lt;br /&gt;
	{&lt;br /&gt;
		// то же, что и make_nvp, только имя параметра выводится в макросе&lt;br /&gt;
		ar &amp;amp; BOOST_SERIALIZATION_NVP(degrees);&lt;br /&gt;
		ar &amp;amp; BOOST_SERIALIZATION_NVP(minutes);&lt;br /&gt;
		ar &amp;amp; BOOST_SERIALIZATION_NVP(seconds);&lt;br /&gt;
	}&lt;br /&gt;
	int degrees;&lt;br /&gt;
	int minutes;&lt;br /&gt;
	float seconds;&lt;br /&gt;
public:&lt;br /&gt;
	gps_position(){};&lt;br /&gt;
	gps_position(int d, int m, float s) :&lt;br /&gt;
	degrees(d), minutes(m), seconds(s)&lt;br /&gt;
	{}&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
template&amp;lt;typename TIArch, typename TOArch, typename TClass&amp;gt;&lt;br /&gt;
void TestArch(const std::string &amp;amp; file, int flags, const TClass &amp;amp; cont)&lt;br /&gt;
{&lt;br /&gt;
	&lt;br /&gt;
	{ // Сериализуем&lt;br /&gt;
		std::ofstream ofs(file.c_str(), std::ios::out|flags);&lt;br /&gt;
		TOArch oa(ofs);&lt;br /&gt;
		// make_nvp создаёт пару имя-значение, которая отразится в XML&lt;br /&gt;
		// если не используем XML архив, то можно пару не создавать&lt;br /&gt;
		oa &amp;lt;&amp;lt; boost::serialization::make_nvp(&amp;quot;Test_Object&amp;quot;, cont); &lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	TClass newg;&lt;br /&gt;
	{ // Десериализуем&lt;br /&gt;
		std::ifstream ifs(file.c_str(), std::ios::in|flags);&lt;br /&gt;
		TIArch ia(ifs);&lt;br /&gt;
		ia &amp;gt;&amp;gt; boost::serialization::make_nvp(&amp;quot;Test_Object&amp;quot;,newg);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	{ // Еще раз сериализуем, чтобы потом сравнить результаты двух сериализаций&lt;br /&gt;
		// и убедиться, что десериализациия прошла корректно&lt;br /&gt;
		std::ofstream ofs((file+&amp;quot;.tmp&amp;quot;).c_str(), std::ios::out|flags);&lt;br /&gt;
		TOArch oa(ofs);&lt;br /&gt;
		oa &amp;lt;&amp;lt; boost::serialization::make_nvp(&amp;quot;Test_Object&amp;quot;, cont);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int _tmain(int argc, _TCHAR* argv[])&lt;br /&gt;
{&lt;br /&gt;
	std::ofstream ofs(&amp;quot;filename&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
	std::vector&amp;lt;gps_position&amp;gt; v;&lt;br /&gt;
	v.push_back(gps_position(35, 59, 24.567f));&lt;br /&gt;
	v.push_back(gps_position(36, 60, 25.567f));&lt;br /&gt;
	v.push_back(gps_position(37, 61, 26.567f));&lt;br /&gt;
&lt;br /&gt;
	using namespace boost::archive;&lt;br /&gt;
	TestArch&amp;lt;text_iarchive, text_oarchive&amp;gt;(&amp;quot;text_arch.dump&amp;quot;, 0, v);&lt;br /&gt;
	TestArch&amp;lt;binary_iarchive, binary_oarchive&amp;gt;(&amp;quot;binary_arch.dump&amp;quot;, std::ios::binary, v);&lt;br /&gt;
	TestArch&amp;lt;xml_iarchive, xml_oarchive&amp;gt;(&amp;quot;xml_arch.dump&amp;quot;, 0, v);&lt;br /&gt;
&lt;br /&gt;
	return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Файл text_arch.dump: &amp;lt;pre&amp;gt;22 serialization::archive 3 0 0 3 0 0 35 59 24.566999 36 60 25.566999 37 61 26.566999&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Как видите, использование NVP никак не отразилось на внешнем виде архива. &lt;br /&gt;
&lt;br /&gt;
Файл xml_arch.dump: &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;yes&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE boost_serialization&amp;gt;&lt;br /&gt;
&amp;lt;boost_serialization signature=&amp;quot;serialization::archive&amp;quot; version=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Test_Object class_id=&amp;quot;0&amp;quot; tracking_level=&amp;quot;0&amp;quot; version=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;count&amp;gt;3&amp;lt;/count&amp;gt;&lt;br /&gt;
	&amp;lt;item class_id=&amp;quot;1&amp;quot; tracking_level=&amp;quot;0&amp;quot; version=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;degrees&amp;gt;35&amp;lt;/degrees&amp;gt;&lt;br /&gt;
		&amp;lt;minutes&amp;gt;59&amp;lt;/minutes&amp;gt;&lt;br /&gt;
		&amp;lt;seconds&amp;gt;24.566999&amp;lt;/seconds&amp;gt;&lt;br /&gt;
	&amp;lt;/item&amp;gt;&lt;br /&gt;
	&amp;lt;item&amp;gt;&lt;br /&gt;
		&amp;lt;degrees&amp;gt;36&amp;lt;/degrees&amp;gt;&lt;br /&gt;
		&amp;lt;minutes&amp;gt;60&amp;lt;/minutes&amp;gt;&lt;br /&gt;
		&amp;lt;seconds&amp;gt;25.566999&amp;lt;/seconds&amp;gt;&lt;br /&gt;
	&amp;lt;/item&amp;gt;&lt;br /&gt;
	&amp;lt;item&amp;gt;&lt;br /&gt;
		&amp;lt;degrees&amp;gt;37&amp;lt;/degrees&amp;gt;&lt;br /&gt;
		&amp;lt;minutes&amp;gt;61&amp;lt;/minutes&amp;gt;&lt;br /&gt;
		&amp;lt;seconds&amp;gt;26.566999&amp;lt;/seconds&amp;gt;&lt;br /&gt;
	&amp;lt;/item&amp;gt;&lt;br /&gt;
&amp;lt;/Test_Object&amp;gt;&lt;br /&gt;
&amp;lt;/boost_serialization&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Бинарный архив приводить не стану&amp;amp;nbsp;:) не очень красочно, но занимает он 79 байт, из которых 39 - заголовок и 40 - полезная информация. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
За универсальность boost::serialization придётся заплатить: &lt;br /&gt;
&lt;br /&gt;
*Во время компиляции шаблоны могут разворачиваться довольно долго. &lt;br /&gt;
*Скорость: стек вызовов для сериализации какой-нибудь не слишком больной структурки, может быть просто ужасающим - вызовов 20-30.&lt;br /&gt;
&lt;br /&gt;
Но если вы не пишете систему массового обслуживания, то это то, что вам нужно, с помощью этой библиотеки можно даже реализовать маршалинг или RPC. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; Надеюсь, в общих чертах понятно, как примерно работает сериализация и десериализация, и если понадобится, можно реализовать свою сериализацию. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; Вот пример своей реализации архива, который я использую вместо boost:binary_iarchive (была ОЧЕНЬ важна скорость, а универсальность не очень, но для маршалинга хватает), делал так, чтобы можно было использовать один вместо другого без переделки кода: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
class binary_iarchive&lt;br /&gt;
{&lt;br /&gt;
public:&lt;br /&gt;
	typedef serialization::container container;&lt;br /&gt;
	typedef container::iterator iterator;&lt;br /&gt;
&lt;br /&gt;
	container &amp;amp;cont_;&lt;br /&gt;
	size_t currentPos_;&lt;br /&gt;
	typedef boost::mpl::bool_&amp;lt;false&amp;gt; is_saving;&lt;br /&gt;
	binary_iarchive(container &amp;amp; cont, long = 0)&lt;br /&gt;
			: cont_(cont)&lt;br /&gt;
			, currentPos_(0)&lt;br /&gt;
	{&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	template&amp;lt;typename T&amp;gt;&lt;br /&gt;
	binary_iarchive &amp;amp; operator&amp;gt;&amp;gt;(T &amp;amp; val)&lt;br /&gt;
	{&lt;br /&gt;
		deserialize_impl(val);&lt;br /&gt;
		return *this;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	void reset()&lt;br /&gt;
	{&lt;br /&gt;
		resetPos();&lt;br /&gt;
		cont_.clear();&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	template&amp;lt;typename T&amp;gt;&lt;br /&gt;
	inline void raw_read(T beginPos, size_t len)&lt;br /&gt;
	{&lt;br /&gt;
		if (static_cast&amp;lt;size_t&amp;gt;(cont_.size() - currentPos_) &amp;lt; len)&lt;br /&gt;
			throw std::runtime_error(&amp;quot;No more data&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
		iterator pos = cont_.begin() + currentPos_;&lt;br /&gt;
		iterator endPos = pos + len;&lt;br /&gt;
		std::copy(pos, endPos, beginPos);&lt;br /&gt;
		currentPos_ = currentPos_ + len;&lt;br /&gt;
	}&lt;br /&gt;
private:&lt;br /&gt;
	// Fundamental&lt;br /&gt;
	template&amp;lt;typename T&amp;gt;&lt;br /&gt;
	inline void deserialize_impl(T &amp;amp; val, typename boost::enable_if&amp;lt;boost::is_fundamental&amp;lt;T&amp;gt; &amp;gt;::type* dummy = 0)&lt;br /&gt;
	{&lt;br /&gt;
		raw_read(reinterpret_cast&amp;lt;char*&amp;gt;(&amp;amp;val), sizeof(T));&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	//Classes&lt;br /&gt;
	template&amp;lt;typename T&amp;gt;&lt;br /&gt;
	inline void deserialize_impl(T &amp;amp; val, typename boost::enable_if&amp;lt;boost::is_class&amp;lt;T&amp;gt; &amp;gt;::type* dummy = 0)&lt;br /&gt;
	{&lt;br /&gt;
		deserialize_class(*this, val);&lt;br /&gt;
	}&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Кое-что порезал, чтобы не расслаблялись&amp;amp;nbsp;:) &lt;br /&gt;
&lt;br /&gt;
[[Category:FAQ]] [[Category:FAQ:ANSI_CPP]] [[Category:FAQ:STL]] [[Category:FAQ:STL_BOOST]]&lt;/div&gt;</summary>
		<author><name>RXL</name></author>	</entry>

	<entry>
		<id>https://wiki.shelek.ru/index.php?title=FAQ:STL:C%2B%2B_%D1%81%D0%B5%D1%80%D0%B8%D0%B0%D0%BB%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85&amp;diff=1530</id>
		<title>FAQ:STL:C++ сериализация данных</title>
		<link rel="alternate" type="text/html" href="https://wiki.shelek.ru/index.php?title=FAQ:STL:C%2B%2B_%D1%81%D0%B5%D1%80%D0%B8%D0%B0%D0%BB%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85&amp;diff=1530"/>
				<updated>2015-08-03T22:40:59Z</updated>
		
		<summary type="html">&lt;p&gt;RXL: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Иногда нужно сохранить состояние класса в файл, передать состояние класса по сети. Подобные задачи обычно решает сериализация. &lt;br /&gt;
&lt;br /&gt;
Говоря о сериализации, я подразумеваю механизмы перевода некоторого класса, структуры или набора переменных в определённый формат (бинарный, текстовый, XML, HTML и т.д.), а также сам процесс перевода. Десериализация - процессы и механизмы, обратные сериализации (восстановление состояния из внешнего источника). &lt;br /&gt;
&lt;br /&gt;
Самый простой способ, к которому чаще всего прибегают молодые программисты, - это простое копирование памяти в файл или еще куда-то. Т.е. берём указатель на класс/структуру/переменную и копируем N байт в файл. Пример: &amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
.......&lt;br /&gt;
MyClass m;&lt;br /&gt;
..............&lt;br /&gt;
std::ofstream f(&amp;quot;dump.bin&amp;quot;, std::binary);&lt;br /&gt;
f.write(&amp;amp;m, sizeof(m));&lt;br /&gt;
f.close();&lt;br /&gt;
........................&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Но этот метод сериализации имеет ряд ограничений и недостатков: &lt;br /&gt;
&lt;br /&gt;
*Допустимо использовать только для POD-структур (POD - Plain Old Data) и встроенных типов. Почему, будет понятно из следующих пунктов. &lt;br /&gt;
*Если программистом описан конструктор, то компилятор вправе в класс добавить какие-то свои вспомогательные переменные, что превращает класс в не POD-структуру, на самом деле это не так страшно, но формально это так. &lt;br /&gt;
*При сохранении указателей членов класса будут скопированы только адреса, хранимые указателями и, естественно, класс с указателями это не POD-тип &lt;br /&gt;
*Если в классе объявленные виртуальные функции (или он унаследован от класса содержащего виртуальные функции), это приводит к тому, что класс будет дополнен указателем на таблицу виртуальных функций, и с этим указателем та же проблема, что и со всеми другими. Опять же не POD-тип. &lt;br /&gt;
*Если ваш класс содержит внутри себя не POD типы или унаследован от не POD-типа, то ваш класс тоже не под тип, т.е. нет никакой гарантии, что копирование куска памяти позволит постановить состояние класса. &lt;br /&gt;
*Различное выравнивание данных внутри класса может сделать невозможным перенос сохранённого класса на другую платформу или даже в программу, скомпилированную с другими параметрами компиляции. &lt;br /&gt;
*Различный порядок байт не позволит переносить данные между такими платформами, как: x86 и PowerPC &lt;br /&gt;
*И такая сериализация не даёт сохранить в удобочитаемой форме XML, текст или CSV&lt;br /&gt;
&lt;br /&gt;
Есть много ситуаций, когда создание дампа памяти - вполне допустимый метод сериализации, но также есть другое множество ситуаций, когда такой подход недопустим. &lt;br /&gt;
&lt;br /&gt;
Как только программист задумывается о сериализации данных, ему сразу же хочется выполнять сериализацию всего парой строк кода: легко и изящно, например, так: &amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
// вывести состояние класса и всех его членов.&lt;br /&gt;
std::cout &amp;lt;&amp;lt; myClass;&lt;br /&gt;
&lt;br /&gt;
// загрузить состояние класса из XML&lt;br /&gt;
myXML &amp;gt;&amp;gt; myClass; &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
И, естественно, самый простой способ быстро добиться результата - это использовать &amp;quot;велосипед&amp;quot;, написанный другими. &amp;quot;Велосипед&amp;quot; возьмём хороший, многофункциональный. Он умеет выполнять сериализацию и десериализацию стандартных контейнеров, классов, указателей, ссылок и еще чего-то. Также он умеет сохранять, работать с различными форматами выходных данных: бинарный, текст, XML. Если очень хочется, то он может сохранить не только в поток, но и куда угодно, например, в вектор или в сокет или выкинуть в пропасть. &lt;br /&gt;
&lt;br /&gt;
Полное описание &amp;quot;велосипеда&amp;quot;: http://www.boost.org/doc/libs/1_36_0/libs/serialization/doc/index.html &lt;br /&gt;
&lt;br /&gt;
Вот пример использования (взято из описания): &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
/////////////////////////////////////////////////////////////&lt;br /&gt;
// gps координаты&lt;br /&gt;
//&lt;br /&gt;
// illustrates serialization for a simple type&lt;br /&gt;
//&lt;br /&gt;
class gps_position&lt;br /&gt;
{&lt;br /&gt;
private:&lt;br /&gt;
    friend class boost::serialization::access;&lt;br /&gt;
    // When the class Archive corresponds to an output archive, the&lt;br /&gt;
    // &amp;amp; operator is defined similar to &amp;lt;&amp;lt;.  Likewise, when the class Archive&lt;br /&gt;
    // is a type of input archive the &amp;amp; operator is defined similar to &amp;gt;&amp;gt;.&lt;br /&gt;
    template&amp;lt;class Archive&amp;gt;&lt;br /&gt;
    void serialize(Archive &amp;amp; ar, const unsigned int version)&lt;br /&gt;
    {&lt;br /&gt;
        ar &amp;amp; degrees;&lt;br /&gt;
        ar &amp;amp; minutes;&lt;br /&gt;
        ar &amp;amp; seconds;&lt;br /&gt;
    }&lt;br /&gt;
    int degrees;&lt;br /&gt;
    int minutes;&lt;br /&gt;
    float seconds;&lt;br /&gt;
public:&lt;br /&gt;
    gps_position(){};&lt;br /&gt;
    gps_position(int d, int m, float s) :&lt;br /&gt;
        degrees(d), minutes(m), seconds(s)&lt;br /&gt;
    {}&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
int main() {&lt;br /&gt;
    // create and open a character archive for output&lt;br /&gt;
    std::ofstream ofs(&amp;quot;filename&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    // create class instance&lt;br /&gt;
    const gps_position g(35, 59, 24.567f);&lt;br /&gt;
&lt;br /&gt;
    // save data to archive&lt;br /&gt;
    {&lt;br /&gt;
        boost::archive::text_oarchive oa(ofs);&lt;br /&gt;
        // write class instance to archive&lt;br /&gt;
        oa &amp;lt;&amp;lt; g;&lt;br /&gt;
    	// archive and stream closed when destructors are called&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // ... some time later restore the class instance to its orginal state&lt;br /&gt;
    gps_position newg;&lt;br /&gt;
    {&lt;br /&gt;
        // create and open an archive for input&lt;br /&gt;
        std::ifstream ifs(&amp;quot;filename&amp;quot;);&lt;br /&gt;
        boost::archive::text_iarchive ia(ifs);&lt;br /&gt;
        // read class state from archive&lt;br /&gt;
        ia &amp;gt;&amp;gt; newg;&lt;br /&gt;
        // archive and stream closed when destructors are called&lt;br /&gt;
    }&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Теперь по пунктам, как это работает: &lt;br /&gt;
&lt;br /&gt;
#Создаём внутри нашего класса метод serialize, получаем ссылку на архив и номер версии(можно по-разному сериализовать в зависимости от версии), если метод приватный, то добавляем в друзья class boost::serialization::access. Метод serialize будет вызываться при сериализации и десериализации. &lt;br /&gt;
#Открываем файл и создаём архив (text_oarchive текстовый выходной архив), в нашем случае текстовый, архив - это тот самый класс, который выполняет основную работу. &lt;br /&gt;
#Вызываем всеми любимый оператор &amp;amp;lt;&amp;amp;lt; - этот оператор вызывает метод serialize для классов или же внешние функции(они идут в комплекте) для встроенных типов и стандартных контейнеров. &lt;br /&gt;
#text_oarchive::operator&amp;amp;lt;&amp;amp;lt; вызвал наш метод serialize и передал вовнутрь себя, тут возникает вопрос: почему внутри serialize используется оператор &amp;amp;amp;, а не &amp;amp;lt;&amp;amp;lt;? Ответ: потому что у выходного архива операторы &amp;amp;amp; и &amp;amp;lt;&amp;amp;lt; по сути это одно и тоже, у входного операторы &amp;amp;amp; и &amp;amp;gt;&amp;amp;gt; - одно и тоже. Т.е. ничто не мешает в коде поменять &amp;quot;ia &amp;amp;gt;&amp;amp;gt; newg;&amp;quot; на &amp;quot;ia &amp;amp;amp; newg;&amp;quot;. &lt;br /&gt;
#Если нужно изменить метод сериализации, достаточно поменять тип архива (для XML архива придётся сделать еще некоторою работу в методе serialize).&lt;br /&gt;
&lt;br /&gt;
На этом, в общем-то, работа по поддержке сериализации закончена. &lt;br /&gt;
&lt;br /&gt;
При желании, можно разделить методы для сериализации и десериализации. Кстати, boost::seralization гарантирует, что порядок байт при сериализации будет изменён, если потребуется, так что можно спокойно передать long с x86 на PowerPC. &lt;br /&gt;
&lt;br /&gt;
Немного поправленный пример использования и результаты работы: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;quot;stdafx.h&amp;quot;&lt;br /&gt;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
#include &amp;lt;fstream&amp;gt;&lt;br /&gt;
#include &amp;lt;string&amp;gt;&lt;br /&gt;
#include &amp;lt;fstream&amp;gt;&lt;br /&gt;
#include &amp;lt;vector&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// include headers that implement a archive in simple text format&lt;br /&gt;
#include &amp;lt;boost/archive/text_oarchive.hpp&amp;gt;&lt;br /&gt;
#include &amp;lt;boost/archive/text_iarchive.hpp&amp;gt;&lt;br /&gt;
#include &amp;lt;boost/archive/binary_iarchive.hpp&amp;gt;&lt;br /&gt;
#include &amp;lt;boost/archive/binary_oarchive.hpp&amp;gt;&lt;br /&gt;
#include &amp;lt;boost/archive/xml_iarchive.hpp&amp;gt;&lt;br /&gt;
#include &amp;lt;boost/archive/xml_oarchive.hpp&amp;gt;&lt;br /&gt;
// включаем, чтобы сериализация работала с векторами&lt;br /&gt;
#include &amp;lt;boost/serialization/vector.hpp&amp;gt;&lt;br /&gt;
// включаем, чтобы нормально проходила сериализация XML&lt;br /&gt;
#include &amp;lt;boost/serialization/nvp.hpp&amp;gt;&lt;br /&gt;
&lt;br /&gt;
class gps_position&lt;br /&gt;
{&lt;br /&gt;
private:&lt;br /&gt;
	friend class boost::serialization::access;&lt;br /&gt;
&lt;br /&gt;
	template&amp;lt;class Archive&amp;gt;&lt;br /&gt;
	void serialize(Archive &amp;amp; ar, const unsigned int version)&lt;br /&gt;
	{&lt;br /&gt;
		// то же, что и make_nvp, только имя параметра выводится в макросе&lt;br /&gt;
		ar &amp;amp; BOOST_SERIALIZATION_NVP(degrees);&lt;br /&gt;
		ar &amp;amp; BOOST_SERIALIZATION_NVP(minutes);&lt;br /&gt;
		ar &amp;amp; BOOST_SERIALIZATION_NVP(seconds);&lt;br /&gt;
	}&lt;br /&gt;
	int degrees;&lt;br /&gt;
	int minutes;&lt;br /&gt;
	float seconds;&lt;br /&gt;
public:&lt;br /&gt;
	gps_position(){};&lt;br /&gt;
	gps_position(int d, int m, float s) :&lt;br /&gt;
	degrees(d), minutes(m), seconds(s)&lt;br /&gt;
	{}&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
template&amp;lt;typename TIArch, typename TOArch, typename TClass&amp;gt;&lt;br /&gt;
void TestArch(const std::string &amp;amp; file, int flags, const TClass &amp;amp; cont)&lt;br /&gt;
{&lt;br /&gt;
	&lt;br /&gt;
	{ // Сериализуем&lt;br /&gt;
		std::ofstream ofs(file.c_str(), std::ios::out|flags);&lt;br /&gt;
		TOArch oa(ofs);&lt;br /&gt;
		// make_nvp создаёт пару имя-значение, которая отразится в XML&lt;br /&gt;
		// если не используем XML архив, то можно пару не создавать&lt;br /&gt;
		oa &amp;lt;&amp;lt; boost::serialization::make_nvp(&amp;quot;Test_Object&amp;quot;, cont); &lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	TClass newg;&lt;br /&gt;
	{ // Десериализуем&lt;br /&gt;
		std::ifstream ifs(file.c_str(), std::ios::in|flags);&lt;br /&gt;
		TIArch ia(ifs);&lt;br /&gt;
		ia &amp;gt;&amp;gt; boost::serialization::make_nvp(&amp;quot;Test_Object&amp;quot;,newg);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	{ // Еще раз сериализуем, чтобы потом сравнить результаты двух сериализаций&lt;br /&gt;
		// и убедиться, что десериализациия прошла корректно&lt;br /&gt;
		std::ofstream ofs((file+&amp;quot;.tmp&amp;quot;).c_str(), std::ios::out|flags);&lt;br /&gt;
		TOArch oa(ofs);&lt;br /&gt;
		oa &amp;lt;&amp;lt; boost::serialization::make_nvp(&amp;quot;Test_Object&amp;quot;, cont);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int _tmain(int argc, _TCHAR* argv[])&lt;br /&gt;
{&lt;br /&gt;
	std::ofstream ofs(&amp;quot;filename&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
	std::vector&amp;lt;gps_position&amp;gt; v;&lt;br /&gt;
	v.push_back(gps_position(35, 59, 24.567f));&lt;br /&gt;
	v.push_back(gps_position(36, 60, 25.567f));&lt;br /&gt;
	v.push_back(gps_position(37, 61, 26.567f));&lt;br /&gt;
&lt;br /&gt;
	using namespace boost::archive;&lt;br /&gt;
	TestArch&amp;lt;text_iarchive, text_oarchive&amp;gt;(&amp;quot;text_arch.dump&amp;quot;, 0, v);&lt;br /&gt;
	TestArch&amp;lt;binary_iarchive, binary_oarchive&amp;gt;(&amp;quot;binary_arch.dump&amp;quot;, std::ios::binary, v);&lt;br /&gt;
	TestArch&amp;lt;xml_iarchive, xml_oarchive&amp;gt;(&amp;quot;xml_arch.dump&amp;quot;, 0, v);&lt;br /&gt;
&lt;br /&gt;
	return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Файл text_arch.dump: &amp;lt;pre&amp;gt;&lt;br /&gt;
22 serialization::archive 3 0 0 3 0 0 35 59 24.566999 36 60 25.566999 37 61 26.566999&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Как видите, использование NVP никак не отразилось на внешнем виде архива. &lt;br /&gt;
&lt;br /&gt;
Файл xml_arch.dump: &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;yes&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE boost_serialization&amp;gt;&lt;br /&gt;
&amp;lt;boost_serialization signature=&amp;quot;serialization::archive&amp;quot; version=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Test_Object class_id=&amp;quot;0&amp;quot; tracking_level=&amp;quot;0&amp;quot; version=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;count&amp;gt;3&amp;lt;/count&amp;gt;&lt;br /&gt;
	&amp;lt;item class_id=&amp;quot;1&amp;quot; tracking_level=&amp;quot;0&amp;quot; version=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;degrees&amp;gt;35&amp;lt;/degrees&amp;gt;&lt;br /&gt;
		&amp;lt;minutes&amp;gt;59&amp;lt;/minutes&amp;gt;&lt;br /&gt;
		&amp;lt;seconds&amp;gt;24.566999&amp;lt;/seconds&amp;gt;&lt;br /&gt;
	&amp;lt;/item&amp;gt;&lt;br /&gt;
	&amp;lt;item&amp;gt;&lt;br /&gt;
		&amp;lt;degrees&amp;gt;36&amp;lt;/degrees&amp;gt;&lt;br /&gt;
		&amp;lt;minutes&amp;gt;60&amp;lt;/minutes&amp;gt;&lt;br /&gt;
		&amp;lt;seconds&amp;gt;25.566999&amp;lt;/seconds&amp;gt;&lt;br /&gt;
	&amp;lt;/item&amp;gt;&lt;br /&gt;
	&amp;lt;item&amp;gt;&lt;br /&gt;
		&amp;lt;degrees&amp;gt;37&amp;lt;/degrees&amp;gt;&lt;br /&gt;
		&amp;lt;minutes&amp;gt;61&amp;lt;/minutes&amp;gt;&lt;br /&gt;
		&amp;lt;seconds&amp;gt;26.566999&amp;lt;/seconds&amp;gt;&lt;br /&gt;
	&amp;lt;/item&amp;gt;&lt;br /&gt;
&amp;lt;/Test_Object&amp;gt;&lt;br /&gt;
&amp;lt;/boost_serialization&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Бинарный архив приводить не стану&amp;amp;nbsp;:) не очень красочно, но занимает он 79 байт, из которых 39 - заголовок и 40 - полезная информация. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
За универсальность boost::serialization придётся заплатить: &lt;br /&gt;
&lt;br /&gt;
*Во время компиляции шаблоны могут разворачиваться довольно долго. &lt;br /&gt;
*Скорость: стек вызовов для сериализации какой-нибудь не слишком больной структурки, может быть просто ужасающим - вызовов 20-30.&lt;br /&gt;
&lt;br /&gt;
Но если вы не пишете систему массового обслуживания, то это то, что вам нужно, с помощью этой библиотеки можно даже реализовать маршалинг или RPC. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; Надеюсь, в общих чертах понятно, как примерно работает сериализация и десериализация, и если понадобится, можно реализовать свою сериализацию. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; Вот пример своей реализации архива, который я использую вместо boost:binary_iarchive (была ОЧЕНЬ важна скорость, а универсальность не очень, но для маршалинга хватает), делал так, чтобы можно было использовать один вместо другого без переделки кода: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
class binary_iarchive&lt;br /&gt;
{&lt;br /&gt;
public:&lt;br /&gt;
	typedef serialization::container container;&lt;br /&gt;
	typedef container::iterator iterator;&lt;br /&gt;
&lt;br /&gt;
	container &amp;amp;cont_;&lt;br /&gt;
	size_t currentPos_;&lt;br /&gt;
	typedef boost::mpl::bool_&amp;lt;false&amp;gt; is_saving;&lt;br /&gt;
	binary_iarchive(container &amp;amp; cont, long = 0)&lt;br /&gt;
			: cont_(cont)&lt;br /&gt;
			, currentPos_(0)&lt;br /&gt;
	{&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	template&amp;lt;typename T&amp;gt;&lt;br /&gt;
	binary_iarchive &amp;amp; operator&amp;gt;&amp;gt;(T &amp;amp; val)&lt;br /&gt;
	{&lt;br /&gt;
		deserialize_impl(val);&lt;br /&gt;
		return *this;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	void reset()&lt;br /&gt;
	{&lt;br /&gt;
		resetPos();&lt;br /&gt;
		cont_.clear();&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	template&amp;lt;typename T&amp;gt;&lt;br /&gt;
	inline void raw_read(T beginPos, size_t len)&lt;br /&gt;
	{&lt;br /&gt;
		if (static_cast&amp;lt;size_t&amp;gt;(cont_.size() - currentPos_) &amp;lt; len)&lt;br /&gt;
			throw std::runtime_error(&amp;quot;No more data&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
		iterator pos = cont_.begin() + currentPos_;&lt;br /&gt;
		iterator endPos = pos + len;&lt;br /&gt;
		std::copy(pos, endPos, beginPos);&lt;br /&gt;
		currentPos_ = currentPos_ + len;&lt;br /&gt;
	}&lt;br /&gt;
private:&lt;br /&gt;
	// Fundamental&lt;br /&gt;
	template&amp;lt;typename T&amp;gt;&lt;br /&gt;
	inline void deserialize_impl(T &amp;amp; val, typename boost::enable_if&amp;lt;boost::is_fundamental&amp;lt;T&amp;gt; &amp;gt;::type* dummy = 0)&lt;br /&gt;
	{&lt;br /&gt;
		raw_read(reinterpret_cast&amp;lt;char*&amp;gt;(&amp;amp;val), sizeof(T));&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	//Classes&lt;br /&gt;
	template&amp;lt;typename T&amp;gt;&lt;br /&gt;
	inline void deserialize_impl(T &amp;amp; val, typename boost::enable_if&amp;lt;boost::is_class&amp;lt;T&amp;gt; &amp;gt;::type* dummy = 0)&lt;br /&gt;
	{&lt;br /&gt;
		deserialize_class(*this, val);&lt;br /&gt;
	}&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Кое-что порезал, чтобы не расслаблялись&amp;amp;nbsp;:) &lt;br /&gt;
&lt;br /&gt;
[[Category:FAQ]] [[Category:FAQ:ANSI_CPP]] [[Category:FAQ:STL]] [[Category:FAQ:STL_BOOST]]&lt;/div&gt;</summary>
		<author><name>RXL</name></author>	</entry>

	<entry>
		<id>https://wiki.shelek.ru/index.php?title=%D0%9F%D0%BE%D1%80%D1%82%D0%B0%D0%BB_Shelek&amp;diff=1529</id>
		<title>Портал Shelek</title>
		<link rel="alternate" type="text/html" href="https://wiki.shelek.ru/index.php?title=%D0%9F%D0%BE%D1%80%D1%82%D0%B0%D0%BB_Shelek&amp;diff=1529"/>
				<updated>2015-08-01T15:37:37Z</updated>
		
		<summary type="html">&lt;p&gt;RXL: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&lt;br /&gt;
# &amp;lt;h3&amp;gt;[http://shelek.ru/ Портал программистов Shelek]&amp;lt;/h3&amp;gt;&lt;br /&gt;
## &amp;lt;h4&amp;gt;[http://club.shelek.ru/ Клуб программистов &amp;quot;Весельчак У&amp;quot;.]&amp;lt;/h4&amp;gt; На этом сайте мы размещаем статьи наших авторов, новости Клуба, полезные файлы (например, у нас хорошая коллекция [http://club.shelek.ru/viewfiles.php?id=2 Windows DDK] и [http://club.shelek.ru/viewfiles.php?id=3 патчи для Borland C++ Builder]), [http://club.shelek.ru/viewfiles.php?id=7 книги по программированию], каталог полезных ссылок и [http://club.shelek.ru/viewblog.php лента новостей] о программировании и смежным областям.&lt;br /&gt;
## &amp;lt;h4&amp;gt;[http://forum.shelek.ru/ Форум Клуба программистов.]&amp;lt;/h4&amp;gt; Здесь находится наш форум. У нас 116 разделов (большинству пользователей доступны более 100) с тематикой программирование, администрирование, начинающим, общение, самоуправление и многое другое. Каждый может себе найти тематику по вкусу.&lt;br /&gt;
## &amp;lt;h4&amp;gt;[http://wiki.shelek.ru/ Википедия Клуба программистов.]&amp;lt;/h4&amp;gt; Вы как раз находитесь на этом сайте. Движок MediaWiki оказался удобным и гибким для создания множества небольших статей по принципу [[FAQ:Содержание|FAQ]]. Вы можете дополнить его, [[Служебная:Userlogin|зарегистрировавшись]] на нашем сайте (редакторский доступ выдается лично администраторами).&lt;br /&gt;
## &amp;lt;h4&amp;gt;[http://forum.shelek.ru/gallery/ Фотогалерея Клуба программистов.]&amp;lt;/h4&amp;gt; Здесь находятся фотографии членов нашего Клуба, фотоотчеты наших встреч и личные альбомы.&lt;br /&gt;
## &amp;lt;h4&amp;gt;[http://svn.shelek.su/ Сервер SVN.]&amp;lt;/h4&amp;gt; Система контроля версий Subversion. Здесь располагаются открытые и закрытые проекты членов клуба.&lt;br /&gt;
## &amp;lt;h4&amp;gt;[http://projects.shelek.su/ Сервер проектов.]&amp;lt;/h4&amp;gt; Баг-трекер на движке Redmine. Здесь расположены проекты членов клуба.&lt;br /&gt;
# &amp;lt;h3&amp;gt;Сайты программ и проектов&amp;lt;/h3&amp;gt;&lt;br /&gt;
## &amp;lt;h4&amp;gt;[http://dib.shelek.ru/ Сайт Delphi &amp;amp; Interbase.]&amp;lt;/h4&amp;gt; Сайт о программировании на Delphi под СУБД Interbase.&lt;br /&gt;
## &amp;lt;h4&amp;gt;[http://faq.shelek.ru/ Сайт программы FAQ-Builder.]&amp;lt;/h4&amp;gt; К сожалению, автор забросил разработку программы. Может вам было бы интересно продолжить проект?&lt;br /&gt;
## &amp;lt;h4&amp;gt;[http://dupsystem.shelek.ru/ Сайт проекта DUpSystem.]&amp;lt;/h4&amp;gt; Пока сайт в разработке.&lt;br /&gt;
&lt;br /&gt;
[[Category:Портал]]&lt;/div&gt;</summary>
		<author><name>RXL</name></author>	</entry>

	<entry>
		<id>https://wiki.shelek.ru/index.php?title=%D0%9F%D0%BE%D1%80%D1%82%D0%B0%D0%BB_Shelek&amp;diff=1528</id>
		<title>Портал Shelek</title>
		<link rel="alternate" type="text/html" href="https://wiki.shelek.ru/index.php?title=%D0%9F%D0%BE%D1%80%D1%82%D0%B0%D0%BB_Shelek&amp;diff=1528"/>
				<updated>2015-08-01T15:37:14Z</updated>
		
		<summary type="html">&lt;p&gt;RXL: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&lt;br /&gt;
# &amp;lt;h3&amp;gt;[http://shelek.ru/ Портал программистов Shelek]&amp;lt;/h3&amp;gt;&lt;br /&gt;
## &amp;lt;h4&amp;gt;[http://club.shelek.ru/ Клуб программистов &amp;quot;Весельчак У&amp;quot;.]&amp;lt;/h4&amp;gt; На этом сайте мы размещаем статьи наших авторов, новости Клуба, полезные файлы (например, у нас хорошая коллекция [http://club.shelek.ru/viewfiles.php?id=2 Windows DDK] и [http://club.shelek.ru/viewfiles.php?id=3 патчи для Borland C++ Builder]), [http://club.shelek.ru/viewfiles.php?id=7 книги по программированию], каталог полезных ссылок и [http://club.shelek.ru/viewblog.php лента новостей] о программировании и смежным областям.&lt;br /&gt;
## &amp;lt;h4&amp;gt;[http://forum.shelek.ru/ Форум Клуба программистов.]&amp;lt;/h4&amp;gt; Здесь находится наш форум. У нас 116 разделов (большинству пользователей доступны более 100) с тематикой программирование, администрирование, начинающим, общение, самоуправление и многое другое. Каждый может себе найти тематику по вкусу.&lt;br /&gt;
## &amp;lt;h4&amp;gt;[http://wiki.shelek.ru/ Википедия Клуба программистов.]&amp;lt;/h4&amp;gt; Вы как раз находитесь на этом сайте. Движок MediaWiki оказался удобным и гибким для создания множества небольших статей по принципу [[FAQ:Содержание|FAQ]]. Вы можете дополнить его, [[Служебная:Userlogin|зарегистрировавшись]] на нашем сайте (редакторский доступ выдается лично администраторами).&lt;br /&gt;
## &amp;lt;h4&amp;gt;[http://forum.shelek.ru/gallery/ Фотогалерея Клуба программистов.]&amp;lt;/h4&amp;gt; Здесь находятся фотографии членов нашего Клуба, фотоотчеты наших встреч и личные альбомы.&lt;br /&gt;
## &amp;lt;h4&amp;gt;[http://svn.shelek.su/ Сервер SVN.]&amp;lt;/h4&amp;gt; Система контроля версий Subversion. Здесь располагаются открытые и закрытые проекты членов клуба.&lt;br /&gt;
## &amp;lt;h4&amp;gt;[http://project.shelek.su/ Сервер проектов.]&amp;lt;/h4&amp;gt; Баг-трекер на движке Redmine. Здесь расположены проекты членов клуба.&lt;br /&gt;
# &amp;lt;h3&amp;gt;Сайты программ и проектов&amp;lt;/h3&amp;gt;&lt;br /&gt;
## &amp;lt;h4&amp;gt;[http://dib.shelek.ru/ Сайт Delphi &amp;amp; Interbase.]&amp;lt;/h4&amp;gt; Сайт о программировании на Delphi под СУБД Interbase.&lt;br /&gt;
## &amp;lt;h4&amp;gt;[http://faq.shelek.ru/ Сайт программы FAQ-Builder.]&amp;lt;/h4&amp;gt; К сожалению, автор забросил разработку программы. Может вам было бы интересно продолжить проект?&lt;br /&gt;
## &amp;lt;h4&amp;gt;[http://dupsystem.shelek.ru/ Сайт проекта DUpSystem.]&amp;lt;/h4&amp;gt; Пока сайт в разработке.&lt;br /&gt;
&lt;br /&gt;
[[Category:Портал]]&lt;/div&gt;</summary>
		<author><name>RXL</name></author>	</entry>

	<entry>
		<id>https://wiki.shelek.ru/index.php?title=RC_Heli:NE_Solo_Pro:%D0%9E%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D0%B5&amp;diff=1527</id>
		<title>RC Heli:NE Solo Pro:Описание</title>
		<link rel="alternate" type="text/html" href="https://wiki.shelek.ru/index.php?title=RC_Heli:NE_Solo_Pro:%D0%9E%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D0%B5&amp;diff=1527"/>
				<updated>2015-08-01T11:33:55Z</updated>
		
		<summary type="html">&lt;p&gt;RXL: /* Оригинальные запчасти */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC-right}}&lt;br /&gt;
&lt;br /&gt;
=Микровертолет Nine Eagles Solo Pro=&lt;br /&gt;
&lt;br /&gt;
[[:Category:RC_Heli:Nine_Eagles_Solo_Pro#авторы|Авторы статей]] в данной категории.&lt;br /&gt;
&lt;br /&gt;
Сайт производителя: [http://nineeagle.com/product_view.asp?pid=46 NE R/C 260A]&lt;br /&gt;
&lt;br /&gt;
Четырехканальный электрический микровертолет классической схемы с фиксированным шагом ОР и фиксированным ХР. Автомат перекоса [http://ru.wikipedia.org/wiki/%D0%90%D0%B2%D1%82%D0%BE%D0%BC%D0%B0%D1%82_%D0%BF%D0%B5%D1%80%D0%B5%D0%BA%D0%BE%D1%81%D0%B0#.D0.A3.D1.81.D1.82.D1.80.D0.BE.D0.B9.D1.81.D1.82.D0.B2.D0.BE конструкции Сикорского] с микшером [http://forum.rcdesign.ru/f19/thread70404.html#post542312 Белла-Хиллера].&lt;br /&gt;
&lt;br /&gt;
Основные параметры:&lt;br /&gt;
* Основной ротор: 190 мм&lt;br /&gt;
* Хвостовой ротор: 37 мм&lt;br /&gt;
* Взлетная масса: 27 грамм&lt;br /&gt;
&lt;br /&gt;
Двигатели коллекторные. Штатный аккумулятор 120 мАч, но есть сторонние аккумуляторы (например, безымянные на 150 мАч 4.2 грамма) и колхозные подключения аккумуляторов с другими разъемами. В настроенном состоянии в висении и полете очень устойчив. Внешне похож на [[:Category:RC_Heli:E-flite_Blade_mSR|X-flite Blade mSR]], но отличается от него конструктивно. Предназначен для полетов в помещении и на открытом воздухе при скорости ветра не более 2-4 м/с.&lt;br /&gt;
&lt;br /&gt;
Аппаратура управления использует радиочастотный диапазон 2.4 ГГц и не совместима с другими производителями, но совместима с другими вертолетами Nine Eagles. Подключения к компьютеру не предусмотрено (и PPM сигнал в пульте не найден). Радиус действия — 20-30 м от пульта (с ранними версиями плат управления радиус был 100-150 м).&lt;br /&gt;
&lt;br /&gt;
==Варианты названия==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p style=&amp;quot;clear: both;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;gallery style=&amp;quot;float: right;&amp;quot; perrow=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
  Image:NineEagleSoloPro_red.jpg|Nine Eagles Solo Pro&lt;br /&gt;
  Image:NineEagleSoloPro_yellow.jpg|Nine Eagles Solo Pro II&lt;br /&gt;
  Image:MerlinTracer90_black.jpg|Merlin Tracer 90&lt;br /&gt;
  Image:NineEagleSOAR_blue.jpg|Nine Eagles SOAR (синий)&lt;br /&gt;
  Image:NineEagleSOAR_yellow.jpg|Nine Eagles SOAR (желтый)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Nine Eagles Solo Pro&lt;br /&gt;
* Nine Eagles SOAR&lt;br /&gt;
* Merlin Tracer 90&lt;br /&gt;
&lt;br /&gt;
Фактически, название ни на что не влияет. Разные образцы вертолетов, вне зависимости от названия, могут различаться:&lt;br /&gt;
*Шасси: разъемом под аккумулятор (старый и новый вариант) — различаются предохранительными шлицами на разъеме (их можно срезать ножом).&lt;br /&gt;
*Платой управления: разные версии платы и прошивки.&lt;br /&gt;
*Цветом.&lt;br /&gt;
*Массой: измерения показывают, что белые детали немного тяжелее черных.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p style=&amp;quot;clear: both;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Товарные представления==&lt;br /&gt;
&amp;lt;gallery style=&amp;quot;float: right;&amp;quot;&amp;gt;&lt;br /&gt;
Image:NineEagleSoloPro_RTF_in_box.jpg|RTF Deluxe Edition&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
# RTF Deluxe Edition (вертолет в сборе, пульт, 2 аккумулятора, 4 батарейки AA, инструкция, чемоданчик для переноски (Aluminum Protection Case), зарядное устройство для двух аккумуляторов, запасные лопасти ОР, часовая крестовая отвертка).&lt;br /&gt;
# RTF (вертолет в сборе, пульт, аккумулятор, 4 батарейки AA, инструкция).&lt;br /&gt;
# BNF (только вертолет в сборе, без аккумулятора и пульта).&lt;br /&gt;
# Запчасти.&lt;br /&gt;
&lt;br /&gt;
Вариант BNF стоит дешевле, чем полный комплект запчастей.&lt;br /&gt;
&lt;br /&gt;
Зарядное устройство в вариантах без чемодана не прилагается. Исключение — есть комплект BNF с зарядкой на miracle-mart.com. Другой способ зарядки — через пульт.&lt;br /&gt;
&lt;br /&gt;
Для тех, кто не знает: цена заказа складывается из стоимости запчастей и доставки. Стоимость доставки зависит от веса и способа доставки. Габаритные покупки надо пересылать посылкой (parcel), мелочь можно пересылать бандеролями (обычная почта).&lt;br /&gt;
&lt;br /&gt;
==Где купить==&lt;br /&gt;
На данный момент (2011 год) на территории СНГ цены на вертолет и запчасти в 1.5-3 раза выше, чем в онлайн магазинах или на онлайн аукционах типа eBay.com. Конечно, к стоимости покупки за рубежом надо добавить стоимость почтовой пересылки, которая сильно варьируется, в зависимости от массы, габаритов и формата и выбранной услуги пересылки, от единиц до десятков долларов США (службы скоростной доставки типа Fedex и DHL берут за свои услуги раз в десять больше, чем почта — десятки-сотни долларов). Но даже с доставкой (обычной почтой) зачастую стоимость изделий оказывается существенно ниже.&lt;br /&gt;
&lt;br /&gt;
'''Список онлайн магазинов:'''&lt;br /&gt;
*[http://hobbyking.com/ Hobby King] (Китай, Гонконг)&lt;br /&gt;
*[http://miracle-mart.com/ Miracle Mart] (Китай, Гонконг)&lt;br /&gt;
*[http://avionix.ru/ AVIONIX] (Китай, Шеньчжень. Выставочный зал — Россия, Москва)&lt;br /&gt;
&lt;br /&gt;
Также можно купить б/у на онлайн барахолках.&lt;br /&gt;
&lt;br /&gt;
=Составные части=&lt;br /&gt;
Материалы, масса (без упаковки), живучесть и ремонтопригодность.&lt;br /&gt;
&lt;br /&gt;
==Оригинальные запчасти==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery perrow=&amp;quot;2&amp;quot; style=&amp;quot;float: right;&amp;quot;&amp;gt;&lt;br /&gt;
Image:NE4210007.jpg|Автомат перекоса.&amp;lt;br&amp;gt;NE4210007&lt;br /&gt;
Image:NE4918001.jpg|Аккумулятор.&amp;lt;br&amp;gt;NE4918001 (старый разъем), NE4950001 (новый разъем)&lt;br /&gt;
Image:NE4260003.jpg|Балансирный вал.&amp;lt;br&amp;gt;NE4260003&lt;br /&gt;
Image:NE4260012.jpg|Ось балансирного вала.&amp;lt;br&amp;gt;NE4260012&lt;br /&gt;
Image:NE4260011.jpg|Вал ОР: сам вал, головка и стопорное кольцо.&amp;lt;br&amp;gt;NE4260011&lt;br /&gt;
Image:NE4902002.jpg|Двигатель ОР.&amp;lt;br&amp;gt;NE4902002&lt;br /&gt;
Image:NE4260014.jpg|Капот.&amp;lt;br&amp;gt;NE4260014 (желтый), NE4260001 (красный)&lt;br /&gt;
Image:NE4260010.jpg|Крепежные саморезы.&amp;lt;br&amp;gt;NE4260010&lt;br /&gt;
Image:NE4260015.jpg|Лопасти ОР.&amp;lt;br&amp;gt;NE4260015 (белые), NE4260002 (черные)&lt;br /&gt;
Image:NE4603003.jpg|Плата управления.&amp;lt;br&amp;gt;NE4603003, NE4620001, NE4616001, NE4613001&lt;br /&gt;
Image:NE4260009.jpg|Подшипники.&amp;lt;br&amp;gt;NE4260009&lt;br /&gt;
Image:NE4260005.jpg|Рама.&amp;lt;br&amp;gt;NE4260005&lt;br /&gt;
Image:NE4260006.jpg|Тяги и рычаги.&amp;lt;br&amp;gt;NE4260006&lt;br /&gt;
Image:NE4260016.jpg|Хвостовая балка в сборе.&amp;lt;br&amp;gt;NE4260016 (желтая), NE4260007 (красная)&lt;br /&gt;
Image:NE10126004007.jpg|Хвостовой ротор.&amp;lt;br&amp;gt;NE10126004007 (белый), NE10126001027 (черный)&lt;br /&gt;
Image:NE4260008.jpg|Шасси.&amp;lt;br&amp;gt;NE4260041 (белое)&amp;lt;br&amp;gt;NE4260017 (белое)&amp;lt;br&amp;gt;NE4260008 (черное)&amp;lt;br&amp;gt;NE4260039 (черное)&lt;br /&gt;
Image:NE10126004006.jpg|Шестерня ОР. NE10126004006&lt;br /&gt;
Image:NE4260020.jpg|Резинки крепления кабины.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Основной материал — АБС-пластик (полиакрилонитрилбутадиенстирол). Если не указано иное, то под пластиком будет подразумеваться АБС. В скобках будут указаны английские названия и каталожные номера деталей.&lt;br /&gt;
*'''Автомат перекоса''' (swashplate set, NE4210007). Материал — пластик, внутри — стальной шарикоподшипник. Имеет две пары рычагов с шариками подключения к микшеру — короткие и длинные. Сломать сам АП сложно, но при не аккуратном снятии тяги, можно отломить шарик на рычаге, варианты исправления, замена или ремонт. Пластик на АП отлично клеится и отломившейся Шарик (на первое время, пока ждете посылку из Китая) можно приклеить цианакриловым клеем (&amp;quot;суперклей&amp;quot;), при аккуратной склейки получается очень крепкое соединение.&lt;br /&gt;
*'''Аккумулятор''' (battery pack, NE4950001). Штатный: LiPo 120 мАч 1S 10С. Ресурс ограничен, зависит от качества и условий эксплуатации — обязательно нужно иметь запас.&lt;br /&gt;
*'''Балансирный вал или флайбар''' (flybar set, NE4260003) и его '''ось''' (fixed pin balance bar, NE4260012). Флайбар из капрона, грузики — сталь. По одним данным внутри плеч есть тонкая упругая проволока типа струны, по другим — ее нет. Материал оси — сталь. Флайбар легко гнется при сильных ударах, но частично выправляется руками. Ломается редко. Ремонт — заменой. Ось продается отдельно по 6 штук в пакете. При резких ускорениях и торможениях флайбар грузиками достает до капота и хвостовой балки.&lt;br /&gt;
*'''Вал ОР, стопорное кольцо и головка ОР''' (main shaft set, NE4260011). Вал — углепластиковая труба. Кольцо и головка — пластик, крепятся к валу стальными саморезами. При сильных ударах некоторые элементы головки иногда ломаются — поддается колхозному ремонту. Вал сломать сложно, но если сломается, то ремонт только заменой. Стопорное кольцо часто лопается в месте вкручивания самореза и ползает по валу, что приводит к нестабильности вертолета — лечится склейкой.&lt;br /&gt;
*'''Двигатель ОР''' (main-motor, NE4902002). Коллекторный. Диаметр 9 мм. Остальные параметры неизвестны. Ресурс ограничен — стоит запастись. Идет в комплекте с ведущей шестерней-пиньеном (латунь).&lt;br /&gt;
*'''Капот''' (canopy, NE4260043). Материал — очень тонкий пластик, фиксаторы в отверстиях резиновые. Передняя часть Капота при сильных ударах может смяться или треснуть, от ударов флайбаром иногда могут образовываться вмятины, также пластик Капота может протираться изнутри, в местах прилегания к Плате Управления. Не большие вмятины на Капоте выправляются, трещины можно устранить подклейкой изнутри обычного тонкого скотча, но слишком много скотча может утяжелить конструкцию. Так что при значительных повреждениях, рекомендуется замена поврежденного Капота на новый. Летать без капота опасно для других частей вертолета, но если вы опытный пилот, и уверены в своих навыках пилотирования, то снятием капота, можно обеспечить лишнюю минуту полета. Также при снятом Капоте центр тяжести немного сместится назад, что особенно актуально при использовании более емкого и длинного Аккумулятора (150 мАч).&lt;br /&gt;
*'''Крепежные саморезы''' (screw set, NE4260010). Стальные, черные. Два используются для крепления платы к раме, остальные — для ОР.&lt;br /&gt;
*'''Лопасти ОР''' (main rotor blade set, NE4260015). Мягкий пластик. Практически не ломаются, но от ударов образуются вмятины и зарубки. Ремонт не безопасен — только замена.&lt;br /&gt;
*'''Плата управления''' (receiver set, NE4616001). Модуль 5-in-1 — самый дорогой компонент вертолета. На плате маркировка &amp;quot;NE260A&amp;quot;, в документации обозначен как MTX-474. Сервоприводы размещены на плате и частично (зависит от версии платы) могут быть демонтированы для ремонта. Список неисправностей длинный и зависит от версии и качества сборки. Обычно неисправность платы лечится заменой. Иногда могут выпадать разъемы к двигателям или быть некачественная пайтка проводов (брак сборки).&lt;br /&gt;
*'''Подшипники''' (bearing set, NE4260009). Два стальных шарикоподшипника для ОР. Вставляются в раму. Вал ОР входит со скользящей посадкой. Ресурс неизвестен.&lt;br /&gt;
*'''Рама''' (main frame, NE4260005). Материал — пластик. Сломать сложно. Лечится склейкой или заменой.&lt;br /&gt;
*'''Тяги и рычаги''' (ball linkage rod set, NE4260006). Тяги от сервоприводов на плате управления — стальные с пластиковыми наконечниками под шарики, посаженными на мелкую резьбу (регулируемая длина). Рычаги из пластика: пара рычагов от АП к качалкам, пара качалок (микшеры, крепятся на лопасти ОР), пара рычагов от флайбара к качалкам. Живучесть высокая, но при сильных авариях возможна поломка качалок и рычагов, реже — деформация тяг. Лечатся заменой, в некоторых случаях возможна склейка.&lt;br /&gt;
*'''Хвостовая балка в сборе''' (tail set, NE4260016). Состоит из квадратной углепластиковой трубы со стороной 1.7 мм, длинной 113 мм и внутренним отверстием диаметром 1 мм, с пропущенными внутри проводами к двигателю ХР, вертикального пластикового стабилизатора, пластикового держателя двигателя и миниатюрного коллекторного двигателя. Балку можно сломать (расщепить вдоль) — вероятно, при перехлесте с флайбаром (грузиками бьет) или при падениях, но и после этого она годна для полетов. Балка редко может выпадать из рамы — достаточно вставить назад. Стабилизатор практически не ломается, но при падениях могут возникать вмятины и зазубрины по краям, может сползать вперед по балке. Двигатель весьма недолговечен. Продается только балка в сборе.&lt;br /&gt;
*'''Хвостовой ротор''' (tail blade, NE10126004007). Материал — пластик. Винт прочный и на оси двигателя сидит надежно, но при поломке подлежит замене. Винт из запчастей может проскальзывать на оси двигателя — лечится приклеиванием.&lt;br /&gt;
*'''Шасси''' (landing skid &amp;amp; battery frame w/connector, NE4260041). Материал — полиэтилен. Имеет слабые места по которым часто ломается при падениях. Ремонт склейкой и усилением, либо заменой.&lt;br /&gt;
*'''Шестерня ОР''' (main gear, NE10126004006). Капрон. Ресурс большой, убить сложно.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Масса запчастей в граммах. Приведены данные запчастей в сборе и отдельных элементов.&lt;br /&gt;
Информация получена от пользователей rcdesing.ru и с сайтов онлайн магазинов. Два столбца &amp;quot;масса&amp;quot;: в первом указаны данные производителя, во втором — измеренные данные.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;2&amp;quot; style=&amp;quot;border: 1px solid black; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|- align=&amp;quot;center&amp;quot;&lt;br /&gt;
!Наименование&lt;br /&gt;
!Данные производителя&lt;br /&gt;
!Измеренные значения *&lt;br /&gt;
|-&lt;br /&gt;
|Автомат перекоса || align=&amp;quot;center&amp;quot; | || align=&amp;quot;center&amp;quot; |0.96-1.00&lt;br /&gt;
|-&lt;br /&gt;
|Вал ОР|| align=&amp;quot;center&amp;quot; | || align=&amp;quot;center&amp;quot; |0.34&lt;br /&gt;
|-&lt;br /&gt;
|Двигатель ОР|| align=&amp;quot;center&amp;quot; | || align=&amp;quot;center&amp;quot; |5.10-5.27 **&lt;br /&gt;
|-&lt;br /&gt;
|Двигатель ХР|| align=&amp;quot;center&amp;quot; | || align=&amp;quot;center&amp;quot; |1.83 **&lt;br /&gt;
|-&lt;br /&gt;
|Капот|| align=&amp;quot;center&amp;quot; | || align=&amp;quot;center&amp;quot; |1.88&lt;br /&gt;
|-&lt;br /&gt;
|Лопасти ОР (белые)|| align=&amp;quot;center&amp;quot; | || align=&amp;quot;center&amp;quot; |2.74&lt;br /&gt;
|-&lt;br /&gt;
|Лопасти ОР (черные)|| align=&amp;quot;center&amp;quot; | || align=&amp;quot;center&amp;quot; |2.51-2.60&lt;br /&gt;
|-&lt;br /&gt;
|Плата управления (2010-1-20)|| align=&amp;quot;center&amp;quot; | || align=&amp;quot;center&amp;quot; |4.29&lt;br /&gt;
|-&lt;br /&gt;
|Подшипники вала ОР (пара)|| align=&amp;quot;center&amp;quot; | || align=&amp;quot;center&amp;quot; |0.42&lt;br /&gt;
|-&lt;br /&gt;
|Рама|| align=&amp;quot;center&amp;quot; | || align=&amp;quot;center&amp;quot; |1.25-1.36&lt;br /&gt;
|-&lt;br /&gt;
|Тяги и рычаги || align=&amp;quot;center&amp;quot; | || align=&amp;quot;center&amp;quot; |0.45-0.48&lt;br /&gt;
|-&lt;br /&gt;
|Флайбар || align=&amp;quot;center&amp;quot; | || align=&amp;quot;center&amp;quot; |1.75-1.77&lt;br /&gt;
|-&lt;br /&gt;
|Хвостовая балка в сборе || align=&amp;quot;center&amp;quot; | || align=&amp;quot;center&amp;quot; |2.78-2.81&lt;br /&gt;
|-&lt;br /&gt;
|Хвостовой ротор (белый)|| align=&amp;quot;center&amp;quot; | || align=&amp;quot;center&amp;quot; |0.17&lt;br /&gt;
|-&lt;br /&gt;
|Хвостовой ротор (черный)|| align=&amp;quot;center&amp;quot; | || align=&amp;quot;center&amp;quot; |0.15&lt;br /&gt;
|-&lt;br /&gt;
|Хвостовой стабилизатор|| align=&amp;quot;center&amp;quot; | || align=&amp;quot;center&amp;quot; |0.27&lt;br /&gt;
|-&lt;br /&gt;
|Шасси|| align=&amp;quot;center&amp;quot; | || align=&amp;quot;center&amp;quot; |1.54&lt;br /&gt;
|-&lt;br /&gt;
|Шестерня ОР || align=&amp;quot;center&amp;quot; | || align=&amp;quot;center&amp;quot; |0.50-0.51&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
''* Измеренные значения зависят от точности использованных приборов. Возможная погрешность — не более 0.05 грамм.''&lt;br /&gt;
&lt;br /&gt;
''** Взвешивание двигателей затруднено из-за их намагниченности. Возможны погрешности.''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p style=&amp;quot;clear: both;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Аккумуляторы==&lt;br /&gt;
&lt;br /&gt;
Емкости штатных аккумуляторов вполне достаточно для новой модели и пока сами аккумуляторы новые, но из-за колхозного ремонта и различных апгрейдов вес вертолета увеличивается, а аккумуляторы со временем деградируют и их максимальная токоотдача уменьшается. А порой просто хочется «больше дури». В таких случаях стоит попробовать аккумуляторы большей емкости и с большей токоотдачей.&lt;br /&gt;
&lt;br /&gt;
Помимо штатного 120 мАч (NE-B918), в тот же разъем входит аккумулятор того же производителя емкостью 150 мАч (NE-BA925). Для подключения других аккумуляторов придется придумывать крепление и подключение.&lt;br /&gt;
&lt;br /&gt;
Ниже в таблице даны данные стоковых и некоторых сторонних аккумуляторов.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;2&amp;quot; style=&amp;quot;border: 1px solid black; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|- align=&amp;quot;center&amp;quot;&lt;br /&gt;
!Наименование&lt;br /&gt;
!Масса - по данным производителя/измеренная (гр)&lt;br /&gt;
!Емкость (мАч)&lt;br /&gt;
!Максимальная токоотдача (С)&lt;br /&gt;
!Разъем&lt;br /&gt;
|-&lt;br /&gt;
|Аккумулятор NE-B918|| align=&amp;quot;center&amp;quot; |3.70 / 3.70-3.77|| align=&amp;quot;center&amp;quot; |120|| align=&amp;quot;center&amp;quot; |10|| align=&amp;quot;center&amp;quot; |NE&lt;br /&gt;
|-&lt;br /&gt;
|Аккумулятор NE-BA925|| align=&amp;quot;center&amp;quot; |4.20 / 4.50-4.58|| align=&amp;quot;center&amp;quot; |150|| align=&amp;quot;center&amp;quot; |10|| align=&amp;quot;center&amp;quot; |NE&lt;br /&gt;
|-&lt;br /&gt;
|Аккумулятор ZIPPY|| align=&amp;quot;center&amp;quot; |5.90 / 5.20|| align=&amp;quot;center&amp;quot; |240|| align=&amp;quot;center&amp;quot; |20|| align=&amp;quot;center&amp;quot; |?&lt;br /&gt;
|-&lt;br /&gt;
|Аккумулятор Turnigy|| align=&amp;quot;center&amp;quot; |4.30 / ?|| align=&amp;quot;center&amp;quot; |160|| align=&amp;quot;center&amp;quot; |30|| align=&amp;quot;center&amp;quot; |E-Flite&lt;br /&gt;
|-&lt;br /&gt;
|Аккумулятор Turnigy nano-tech|| align=&amp;quot;center&amp;quot; |? / 4.21|| align=&amp;quot;center&amp;quot; |160|| align=&amp;quot;center&amp;quot; |25-40|| align=&amp;quot;center&amp;quot; |E-Flite&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Для аккумуляторов с разъемом E-Flite продаются провода с разъемами. Примерный вес 0.62 грамма, а если отрезать один разъем, будет еще меньше.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p style=&amp;quot;clear: both;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Апгрейд==&lt;br /&gt;
&lt;br /&gt;
Как и к большим вертолетам, к Solo Pro сторонними производителями предлагаются запчасти с улучшенными качествами. Обычно — более прочными. Но, как и у всего, у таких запчастей есть обратная сторона: больший вес и большая стоимость.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===AiRY===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery perrow=&amp;quot;2&amp;quot; style=&amp;quot;float: right;&amp;quot;&amp;gt;&lt;br /&gt;
Image:Airy-Acc-LP-0046.jpg|Набор Airy-Acc-LP-0046&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Данной фирмой для Solo Pro выпущен только один апгрейд - набор для замены вала ОР, головки ОР, автомата перекоса и направляющей для автомата перекоса. Основной материал - алюминиевый сплав. Винты стальные. В автомате перекоса присутствуют элементы из латуни (или бронзы - не установлено).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Масса запчастей в граммах:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;2&amp;quot; style=&amp;quot;border: 1px solid black; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|- align=&amp;quot;center&amp;quot;&lt;br /&gt;
!Наименование&lt;br /&gt;
!Данные производителя&lt;br /&gt;
!Измеренные значения&lt;br /&gt;
|-&lt;br /&gt;
|Вал ОР || align=&amp;quot;center&amp;quot; | || align=&amp;quot;center&amp;quot; | 0.83&lt;br /&gt;
|-&lt;br /&gt;
|Направляющая АП ** || align=&amp;quot;center&amp;quot; | || align=&amp;quot;center&amp;quot; | 0.43&lt;br /&gt;
|-&lt;br /&gt;
|Головка ОР и ось лопастей *** || align=&amp;quot;center&amp;quot; | || align=&amp;quot;center&amp;quot; | 1.54&lt;br /&gt;
|-&lt;br /&gt;
|Автомат перекоса || align=&amp;quot;center&amp;quot; | || align=&amp;quot;center&amp;quot; | 2.02&lt;br /&gt;
|-&lt;br /&gt;
|Фиксирующее кольцо **** || align=&amp;quot;center&amp;quot; | || align=&amp;quot;center&amp;quot; | 0.10&lt;br /&gt;
|-&lt;br /&gt;
|Крепежные винты || align=&amp;quot;center&amp;quot; | || align=&amp;quot;center&amp;quot; | 0.34 *&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
''* 8 штук.''&lt;br /&gt;
&lt;br /&gt;
''** Для установки требуется 3 винта.''&lt;br /&gt;
&lt;br /&gt;
''*** Для установки требуется 1 винт.''&lt;br /&gt;
&lt;br /&gt;
''**** Для установки требуется 1 винт.''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p style=&amp;quot;clear: both;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Xtreme===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery perrow=&amp;quot;2&amp;quot; style=&amp;quot;float: right;&amp;quot;&amp;gt;&lt;br /&gt;
Image:XNE001.jpg|Головка ОР. XNE001&lt;br /&gt;
Image:XNE005.jpg|Головка ОР. XNE005&lt;br /&gt;
Image:XNE002.jpg|Автомат перекоса. XNE002&lt;br /&gt;
Image:XNE003.jpg|Направляющая для АП. XNE003&lt;br /&gt;
Image:XNE004.jpg|Фиксирующее кольцо ОР. XNE004&lt;br /&gt;
Image:XNE006.jpg|Балансирный вал. XNE006&lt;br /&gt;
Image:XNE007.jpg|Шасси. XNE007&lt;br /&gt;
Image:XNE010.jpg|Шестерня. XNE010&lt;br /&gt;
Image:XNE011.jpg|Микшер ОР. XNE011&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Под маркой «Xtreme» выпускаются разнообразные запчасти. Причем, ассортимент со временем увеличивается. Большая часть апгрейдов рассчитаны на увеличение прочности, в сравнении со стоковыми запчастями, некоторые — для возможности настраивать характеристики полета, а апгрейды типа лопастей рассчитаны только на изменение внешнего вида.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*'''Головка ОР''' (XNE001). Материал головки — алюминий. Ось лопастей — сталь. На ось надеваются резиновые тороидальные кольца, служащие опорой оси в отверстии головки. Также прилагаются шайбы - назначение пока не выяснено. Прилагаются пластиковые рычаги подключения к АП иной конструкции, чем оригинальные рычаги. Также продается комплект без головки ОР (XNE001-P). Несколько позже выпущена улучшенная версия головки ОР «v2» (XNE005) — немного облегченная, а также не требующая специальных рычагов.&lt;br /&gt;
*'''Автомат перекоса''' (XNE002). Нижняя тарелка — алюминий. В нее вложен стальной шарикоподшипник. Внутрь подшипника вставлена верхняя тарелка с шаровым подшипником в центре (под вал) и рычагами для тяг. Материал (предположительно) — латунь или бронза и пластик.&lt;br /&gt;
*'''Направляющая для АП''' (XNE003). Материал — алюминий.&lt;br /&gt;
*'''Фиксирующее кольцо ОР''' (XNE004). Материал — алюминий.&lt;br /&gt;
*'''Балансирный вал''' (Флайбар) (XNE006). Средняя часть - АБС пластик, плечи - улепластиковый пруток 1.6 мм, грузики - алюминий. Грузики съемные, фиксируются винтом с внутренним шестигранным шлицом (ключ прилагается). В комплекте две пары грузиков - легкие и тяжелые, 6 стальных винтов и одна ось, аналогичная штатной. Данный апгрейд крепится на головке ОР аналогично оригинальному балансирному валу. Отдельно продается балансирный вал без остальных комплектующих (XNE006-A). Отдельно продается комплект грузиков среднего веса (XNE006-B) с четыремя фиксирующими винтами и шестигранным ключом.&lt;br /&gt;
*'''Шасси''' (XNE007). Материал - пластик. Заметно толще и тяжелее оригинальных.&lt;br /&gt;
*'''Лопасти ОР''' (XNE009-x, где «x» - B1, B2, W1 или W2). Лопасти четырех расцветок. Довольно бесполезный апгрейд, учитывая прочность родных лопастей.&lt;br /&gt;
*'''Шестерня''' (XNE010). Ценность данного апгрейда пока не выяснена.&lt;br /&gt;
*'''Микшер''' (XNE011). Металлический микшер ОР. Ценность сомнительна, т.к. стоковый практически не ломается и весит меньше.&lt;br /&gt;
&lt;br /&gt;
''Быстрее всего используется не чистый алюминий, а некий сплав.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Масса запчастей в граммах:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;2&amp;quot; style=&amp;quot;border: 1px solid black; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|- align=&amp;quot;center&amp;quot;&lt;br /&gt;
!Наименование&lt;br /&gt;
!Данные производителя&lt;br /&gt;
!Измеренные значения&lt;br /&gt;
|-&lt;br /&gt;
|Головка ОР XNE001 || align=&amp;quot;center&amp;quot; | || align=&amp;quot;center&amp;quot; | 1.62 (1.52 *)&lt;br /&gt;
|-&lt;br /&gt;
|Головка ОР XNE005 || align=&amp;quot;center&amp;quot; | || align=&amp;quot;center&amp;quot; | 1.30&lt;br /&gt;
|-&lt;br /&gt;
|Автомат перекоса XNE002 || align=&amp;quot;center&amp;quot; | || align=&amp;quot;center&amp;quot; | 2.04&lt;br /&gt;
|-&lt;br /&gt;
|Направляющая для АП XNE003 || align=&amp;quot;center&amp;quot; | || align=&amp;quot;center&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
|Фиксирующее кольцо ОР XNE004 || align=&amp;quot;center&amp;quot; | || align=&amp;quot;center&amp;quot; | 0.20&lt;br /&gt;
|-&lt;br /&gt;
|Балансирный вал XNE006 без грузиков / XNE006-A|| align=&amp;quot;center&amp;quot; | || align=&amp;quot;center&amp;quot; | 0.41&lt;br /&gt;
|-&lt;br /&gt;
|Грузики для балансирного вала (большие) || align=&amp;quot;center&amp;quot; | || align=&amp;quot;center&amp;quot; | 1.27 **&lt;br /&gt;
|-&lt;br /&gt;
|Грузики для балансирного вала (средние) || align=&amp;quot;center&amp;quot; | || align=&amp;quot;center&amp;quot; | 0.89 **&lt;br /&gt;
|-&lt;br /&gt;
|Грузики для балансирного вала (меньшие) || align=&amp;quot;center&amp;quot; | || align=&amp;quot;center&amp;quot; | 0.57 **&lt;br /&gt;
|-&lt;br /&gt;
|Винты фиксации грузиков для балансирного вала || align=&amp;quot;center&amp;quot; | || align=&amp;quot;center&amp;quot; | 0.05 **&lt;br /&gt;
|-&lt;br /&gt;
|Шасси XNE007 || align=&amp;quot;center&amp;quot; | || align=&amp;quot;center&amp;quot; | 2.12&lt;br /&gt;
|-&lt;br /&gt;
| Лопасти ОР XNE009-x || align=&amp;quot;center&amp;quot; | || align=&amp;quot;center&amp;quot; | &lt;br /&gt;
|-&lt;br /&gt;
| Шестерня XNE010 || align=&amp;quot;center&amp;quot; | || align=&amp;quot;center&amp;quot; | &lt;br /&gt;
|-&lt;br /&gt;
| Микшер ОР XNE011 || align=&amp;quot;center&amp;quot; | || align=&amp;quot;center&amp;quot; | &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
''* Без рычагов. Дано для сравнения с XNE005.''&lt;br /&gt;
&lt;br /&gt;
''** Пара.''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p style=&amp;quot;clear: both;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Взаимодействие пульта и вертолета=&lt;br /&gt;
&lt;br /&gt;
Основная статья: [[RC Heli:NE Solo Pro:Взаимодействие пульта и вертолета|Взаимодействие пульта и вертолета]]&lt;br /&gt;
&lt;br /&gt;
Связь между пультом и платой вертолета происходит по эфиру в цифровом формате в одном направлении - от пульта к вертолету (это означает, что пульт ничего не знает о вертолете). Вертолет запоминает последний пульт, к которому он был привязан. При включении вертолет ищет в эфире сигнал от &amp;quot;своего&amp;quot; пульта, и если не находит, то ищет сигнал привязки от любого пульта. Различные источники сообщают, что одновременно в одном месте может работать до 80-и пультов.&lt;br /&gt;
&lt;br /&gt;
''Есть факты, указывающие на возможность двухсторонней связи. Пока экспериментально установлено, что обратная связь используется при привязке вертолета к пульту.''&lt;br /&gt;
&lt;br /&gt;
==Восстановление сбившихся настроек платы==&lt;br /&gt;
&lt;br /&gt;
Основная статья: [[RC_Heli:NE_Solo_Pro:Восстановление сбившихся настроек платы|Восстановление сбившихся настроек платы]]&lt;br /&gt;
&lt;br /&gt;
Плата управления вертолета хранит свои настройки в энергонезависимой памяти (EEPROM) микроконтроллера. Редко, при включении питания (условия не установлены — вероятно дребезг контактов линий питания), может произойти сбой программы микроконтроллера и перезапись EEPROM. Возможны различные проявления этих сбоев. Например, после включения вертолета и установления связи с пультом, любой сервопривод может сместиться в крайнее положение и не реагировать на движение ручками пульта. Или сильные, но управляемые с пульта вращения.&lt;br /&gt;
&lt;br /&gt;
=Рекомендации=&lt;br /&gt;
&lt;br /&gt;
Основная статья: [[RC Heli:NE Solo Pro:Рекомендации|Рекомендации по эксплуатации и полетам.]]&lt;br /&gt;
&lt;br /&gt;
В статье даны рекомендации по запуску, посадке и пилотажу вертолета.&lt;br /&gt;
&lt;br /&gt;
=Индекс вопросов=&lt;br /&gt;
&lt;br /&gt;
Основная статья: [[RC Heli:NE Solo Pro:Индекс практических вопросов|Индекс практических вопросов]]&lt;br /&gt;
&lt;br /&gt;
Составлено по теме &amp;quot;[http://forum.rcdesign.ru/f59/thread163578.html Китайский ответ MSr - Nine Eagles SOLO PRO]&amp;quot; форума rcdesign.ru. Некоторые ссылки указывают на статьи в блоге rcdesign.ru и на форум rcgroups.com.&lt;br /&gt;
&lt;br /&gt;
=Ссылки на другие материалы=&lt;br /&gt;
&lt;br /&gt;
* [http://blog.rc-fever.com/tag/nine-eagles-solo-pro/ RC Fever] (en): различные модификации.&lt;br /&gt;
* [http://www.rcgroups.com/forums/showthread.php?t=1337008 Nine Eagles Solo Pro/Bravo SX FAQ] (en)&lt;br /&gt;
* [http://forum.rcdesign.ru/blogs/34364/blog10382.html о питании орлов в неволе]: колхоз с аккумулятором Turnigy 160mAh 1S 30C. Замеры потребления тока.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:RC_Heli:Nine_Eagles_Solo_Pro]]&lt;/div&gt;</summary>
		<author><name>RXL</name></author>	</entry>

	<entry>
		<id>https://wiki.shelek.ru/index.php?title=FAQ:STL:C%2B%2B_%D1%81%D0%B5%D1%80%D0%B8%D0%B0%D0%BB%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85&amp;diff=1526</id>
		<title>FAQ:STL:C++ сериализация данных</title>
		<link rel="alternate" type="text/html" href="https://wiki.shelek.ru/index.php?title=FAQ:STL:C%2B%2B_%D1%81%D0%B5%D1%80%D0%B8%D0%B0%D0%BB%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85&amp;diff=1526"/>
				<updated>2015-07-31T19:44:51Z</updated>
		
		<summary type="html">&lt;p&gt;RXL: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Иногда нужно сохранить состояние класса в файл, передать состояние класса по сети. Подобные задачи обычно решает сериализация. &lt;br /&gt;
&lt;br /&gt;
Говоря о сериализации, я подразумеваю механизмы перевода некоторого класса, структуры или набора переменных в определённый формат (бинарный, текстовый, XML, HTML и т.д.), а также сам процесс перевода. Десериализация - процессы и механизмы, обратные сериализации (восстановление состояния из внешнего источника). &lt;br /&gt;
&lt;br /&gt;
Самый простой способ, к которому чаще всего прибегают молодые программисты, - это простое копирование памяти в файл или еще куда-то. Т.е. берём указатель на класс/структуру/переменную и копируем N байт в файл. Пример: &amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
.......&lt;br /&gt;
MyClass m;&lt;br /&gt;
..............&lt;br /&gt;
std::ofstream f(&amp;quot;dump.bin&amp;quot;, std::binary);&lt;br /&gt;
f.write(&amp;amp;m, sizeof(m));&lt;br /&gt;
f.close();&lt;br /&gt;
........................&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Но этот метод сериализации имеет ряд ограничений и недостатков: &lt;br /&gt;
&lt;br /&gt;
*Допустимо использовать только для POD-структур (POD - Plain Old Data) и встроенных типов. Почему, будет понятно из следующих пунктов. &lt;br /&gt;
*Если программистом описан конструктор, то компилятор вправе в класс добавить какие-то свои вспомогательные переменные, что превращает класс в не POD-структуру, на самом деле это не так страшно, но формально это так. &lt;br /&gt;
*При сохранении указателей членов класса будут скопированы только адреса, хранимые указателями и, естественно, класс с указателями это не POD-тип &lt;br /&gt;
*Если в классе объявленные виртуальные функции (или он унаследован от класса содержащего виртуальные функции), это приводит к тому, что класс будет дополнен указателем на таблицу виртуальных функций, и с этим указателем та же проблема, что и со всеми другими. Опять же не POD-тип. &lt;br /&gt;
*Если ваш класс содержит внутри себя не POD типы или унаследован от не POD-типа, то ваш класс тоже не под тип, т.е. нет никакой гарантии, что копирование куска памяти позволит постановить состояние класса. &lt;br /&gt;
*Различное выравнивание данных внутри класса может сделать невозможным перенос сохранённого класса на другую платформу или даже в программу, скомпилированную с другими параметрами компиляции. &lt;br /&gt;
*Различный порядок байт не позволит переносить данные между такими платформами, как: x86 и PowerPC &lt;br /&gt;
*И такая сериализация не даёт сохранить в удобочитаемой форме XML, текст или CSV&lt;br /&gt;
&lt;br /&gt;
Есть много ситуаций, когда создание дампа памяти - вполне допустимый метод сериализации, но также есть другое множество ситуаций, когда такой подход недопустим. &lt;br /&gt;
&lt;br /&gt;
Как только программист задумывается о сериализации данных, ему сразу же хочется выполнять сериализацию всего парой строк кода: легко и изящно, например, так: &amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
// вывести состояние класса и всех его членов.&lt;br /&gt;
std::cout &amp;lt;&amp;lt; myClass;&lt;br /&gt;
&lt;br /&gt;
// загрузить состояние класса из XML&lt;br /&gt;
myXML &amp;gt;&amp;gt; myClass; &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
И, естественно, самый простой способ быстро добиться результата - это использовать &amp;quot;велосипед&amp;quot;, написанный другими. &amp;quot;Велосипед&amp;quot; возьмём хороший, многофункциональный. Он умеет выполнять сериализацию и десериализацию стандартных контейнеров, классов, указателей, ссылок и еще чего-то. Также он умеет сохранять, работать с различными форматами выходных данных: бинарный, текст, XML. Если очень хочется, то он может сохранить не только в поток, но и куда угодно, например, в вектор или в сокет или выкинуть в пропасть. &lt;br /&gt;
&lt;br /&gt;
Полное описание &amp;quot;велосипеда&amp;quot;: http://www.boost.org/doc/libs/1_36_0/libs/serialization/doc/index.html &lt;br /&gt;
&lt;br /&gt;
Вот пример использования (взято из описания): &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
/////////////////////////////////////////////////////////////&lt;br /&gt;
// gps координаты&lt;br /&gt;
//&lt;br /&gt;
// illustrates serialization for a simple type&lt;br /&gt;
//&lt;br /&gt;
class gps_position&lt;br /&gt;
{&lt;br /&gt;
private:&lt;br /&gt;
    friend class boost::serialization::access;&lt;br /&gt;
    // When the class Archive corresponds to an output archive, the&lt;br /&gt;
    // &amp;amp; operator is defined similar to &amp;lt;&amp;lt;.  Likewise, when the class Archive&lt;br /&gt;
    // is a type of input archive the &amp;amp; operator is defined similar to &amp;gt;&amp;gt;.&lt;br /&gt;
    template&amp;lt;class Archive&amp;gt;&lt;br /&gt;
    void serialize(Archive &amp;amp; ar, const unsigned int version)&lt;br /&gt;
    {&lt;br /&gt;
        ar &amp;amp; degrees;&lt;br /&gt;
        ar &amp;amp; minutes;&lt;br /&gt;
        ar &amp;amp; seconds;&lt;br /&gt;
    }&lt;br /&gt;
    int degrees;&lt;br /&gt;
    int minutes;&lt;br /&gt;
    float seconds;&lt;br /&gt;
public:&lt;br /&gt;
    gps_position(){};&lt;br /&gt;
    gps_position(int d, int m, float s) :&lt;br /&gt;
        degrees(d), minutes(m), seconds(s)&lt;br /&gt;
    {}&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
int main() {&lt;br /&gt;
    // create and open a character archive for output&lt;br /&gt;
    std::ofstream ofs(&amp;quot;filename&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    // create class instance&lt;br /&gt;
    const gps_position g(35, 59, 24.567f);&lt;br /&gt;
&lt;br /&gt;
    // save data to archive&lt;br /&gt;
    {&lt;br /&gt;
        boost::archive::text_oarchive oa(ofs);&lt;br /&gt;
        // write class instance to archive&lt;br /&gt;
        oa &amp;lt;&amp;lt; g;&lt;br /&gt;
    	// archive and stream closed when destructors are called&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // ... some time later restore the class instance to its orginal state&lt;br /&gt;
    gps_position newg;&lt;br /&gt;
    {&lt;br /&gt;
        // create and open an archive for input&lt;br /&gt;
        std::ifstream ifs(&amp;quot;filename&amp;quot;);&lt;br /&gt;
        boost::archive::text_iarchive ia(ifs);&lt;br /&gt;
        // read class state from archive&lt;br /&gt;
        ia &amp;gt;&amp;gt; newg;&lt;br /&gt;
        // archive and stream closed when destructors are called&lt;br /&gt;
    }&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Теперь по пунктам, как это работает: &lt;br /&gt;
&lt;br /&gt;
#Создаём внутри нашего класса метод serialize, получаем ссылку на архив и номер версии(можно по-разному сериализовать в зависимости от версии), если метод приватный, то добавляем в друзья class boost::serialization::access. Метод serialize будет вызываться при сериализации и десериализации. &lt;br /&gt;
#Открываем файл и создаём архив (text_oarchive текстовый выходной архив), в нашем случае текстовый, архив - это тот самый класс, который выполняет основную работу. &lt;br /&gt;
#Вызываем всеми любимый оператор &amp;amp;lt;&amp;amp;lt; - этот оператор вызывает метод serialize для классов или же внешние функции(они идут в комплекте) для встроенных типов и стандартных контейнеров. &lt;br /&gt;
#text_oarchive::operator&amp;amp;lt;&amp;amp;lt; вызвал наш метод serialize и передал вовнутрь себя, тут возникает вопрос: почему внутри serialize используется оператор &amp;amp;amp;, а не &amp;amp;lt;&amp;amp;lt;? Ответ: потому что у выходного архива операторы &amp;amp;amp; и &amp;amp;lt;&amp;amp;lt; по сути это одно и тоже, у входного операторы &amp;amp;amp; и &amp;amp;gt;&amp;amp;gt; - одно и тоже. Т.е. ничто не мешает в коде поменять &amp;quot;ia &amp;amp;gt;&amp;amp;gt; newg;&amp;quot; на &amp;quot;ia &amp;amp;amp; newg;&amp;quot;. &lt;br /&gt;
#Если нужно изменить метод сериализации, достаточно поменять тип архива (для XML архива придётся сделать еще некоторою работу в методе serialize).&lt;br /&gt;
&lt;br /&gt;
На этом, в общем-то, работа по поддержке сериализации закончена. &lt;br /&gt;
&lt;br /&gt;
При желании, можно разделить методы для сериализации и десериализации. Кстати, boost::seralization гарантирует, что порядок байт при сериализации будет изменён, если потребуется, так что можно спокойно передать long с x86 на PowerPC. &lt;br /&gt;
&lt;br /&gt;
Немного поправленный пример использования и результаты работы: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;quot;stdafx.h&amp;quot;&lt;br /&gt;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
#include &amp;lt;fstream&amp;gt;&lt;br /&gt;
#include &amp;lt;string&amp;gt;&lt;br /&gt;
#include &amp;lt;fstream&amp;gt;&lt;br /&gt;
#include &amp;lt;vector&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// include headers that implement a archive in simple text format&lt;br /&gt;
#include &amp;lt;boost/archive/text_oarchive.hpp&amp;gt;&lt;br /&gt;
#include &amp;lt;boost/archive/text_iarchive.hpp&amp;gt;&lt;br /&gt;
#include &amp;lt;boost/archive/binary_iarchive.hpp&amp;gt;&lt;br /&gt;
#include &amp;lt;boost/archive/binary_oarchive.hpp&amp;gt;&lt;br /&gt;
#include &amp;lt;boost/archive/xml_iarchive.hpp&amp;gt;&lt;br /&gt;
#include &amp;lt;boost/archive/xml_oarchive.hpp&amp;gt;&lt;br /&gt;
// включаем, чтобы сериализация работала с векторами&lt;br /&gt;
#include &amp;lt;boost/serialization/vector.hpp&amp;gt;&lt;br /&gt;
// включаем, чтобы нормально проходила сериализация XML&lt;br /&gt;
#include &amp;lt;boost/serialization/nvp.hpp&amp;gt;&lt;br /&gt;
&lt;br /&gt;
class gps_position&lt;br /&gt;
{&lt;br /&gt;
private:&lt;br /&gt;
	friend class boost::serialization::access;&lt;br /&gt;
&lt;br /&gt;
	template&amp;lt;class Archive&amp;gt;&lt;br /&gt;
	void serialize(Archive &amp;amp; ar, const unsigned int version)&lt;br /&gt;
	{&lt;br /&gt;
		// то же, что и make_nvp, только имя параметра выводится в макросе&lt;br /&gt;
		ar &amp;amp; BOOST_SERIALIZATION_NVP(degrees);&lt;br /&gt;
		ar &amp;amp; BOOST_SERIALIZATION_NVP(minutes);&lt;br /&gt;
		ar &amp;amp; BOOST_SERIALIZATION_NVP(seconds);&lt;br /&gt;
	}&lt;br /&gt;
	int degrees;&lt;br /&gt;
	int minutes;&lt;br /&gt;
	float seconds;&lt;br /&gt;
public:&lt;br /&gt;
	gps_position(){};&lt;br /&gt;
	gps_position(int d, int m, float s) :&lt;br /&gt;
	degrees(d), minutes(m), seconds(s)&lt;br /&gt;
	{}&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
template&amp;lt;typename TIArch, typename TOArch, typename TClass&amp;gt;&lt;br /&gt;
void TestArch(const std::string &amp;amp; file, int flags, const TClass &amp;amp; cont)&lt;br /&gt;
{&lt;br /&gt;
	&lt;br /&gt;
	{ // Сериализуем&lt;br /&gt;
		std::ofstream ofs(file.c_str(), std::ios::out|flags);&lt;br /&gt;
		TOArch oa(ofs);&lt;br /&gt;
		// make_nvp создаёт пару имя-значение, которая отразится в XML&lt;br /&gt;
		// если не используем XML архив, то можно пару не создавать&lt;br /&gt;
		oa &amp;lt;&amp;lt; boost::serialization::make_nvp(&amp;quot;Test_Object&amp;quot;, cont); &lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	TClass newg;&lt;br /&gt;
	{ // Десериализуем&lt;br /&gt;
		std::ifstream ifs(file.c_str(), std::ios::in|flags);&lt;br /&gt;
		TIArch ia(ifs);&lt;br /&gt;
		ia &amp;gt;&amp;gt; boost::serialization::make_nvp(&amp;quot;Test_Object&amp;quot;,newg);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	{ // Еще раз сериализуем, чтобы потом сравнить результаты двух сериализаций&lt;br /&gt;
		// и убедиться, что десериализациия прошла корректно&lt;br /&gt;
		std::ofstream ofs((file+&amp;quot;.tmp&amp;quot;).c_str(), std::ios::out|flags);&lt;br /&gt;
		TOArch oa(ofs);&lt;br /&gt;
		oa &amp;lt;&amp;lt; boost::serialization::make_nvp(&amp;quot;Test_Object&amp;quot;, cont);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int _tmain(int argc, _TCHAR* argv[])&lt;br /&gt;
{&lt;br /&gt;
	std::ofstream ofs(&amp;quot;filename&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
	std::vector&amp;lt;gps_position&amp;gt; v;&lt;br /&gt;
	v.push_back(gps_position(35, 59, 24.567f));&lt;br /&gt;
	v.push_back(gps_position(36, 60, 25.567f));&lt;br /&gt;
	v.push_back(gps_position(37, 61, 26.567f));&lt;br /&gt;
&lt;br /&gt;
	using namespace boost::archive;&lt;br /&gt;
	TestArch&amp;lt;text_iarchive, text_oarchive&amp;gt;(&amp;quot;text_arch.dump&amp;quot;, 0, v);&lt;br /&gt;
	TestArch&amp;lt;binary_iarchive, binary_oarchive&amp;gt;(&amp;quot;binary_arch.dump&amp;quot;, std::ios::binary, v);&lt;br /&gt;
	TestArch&amp;lt;xml_iarchive, xml_oarchive&amp;gt;(&amp;quot;xml_arch.dump&amp;quot;, 0, v);&lt;br /&gt;
&lt;br /&gt;
	return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Файл text_arch.dump: &amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
22 serialization::archive 3 0 0 3 0 0 35 59 24.566999 36 60 25.566999 37 61 26.566999&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Как видите, использование NVP никак не отразилось на внешнем виде архива. &lt;br /&gt;
&lt;br /&gt;
Файл xml_arch.dump: &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;yes&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE boost_serialization&amp;gt;&lt;br /&gt;
&amp;lt;boost_serialization signature=&amp;quot;serialization::archive&amp;quot; version=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Test_Object class_id=&amp;quot;0&amp;quot; tracking_level=&amp;quot;0&amp;quot; version=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;count&amp;gt;3&amp;lt;/count&amp;gt;&lt;br /&gt;
	&amp;lt;item class_id=&amp;quot;1&amp;quot; tracking_level=&amp;quot;0&amp;quot; version=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;degrees&amp;gt;35&amp;lt;/degrees&amp;gt;&lt;br /&gt;
		&amp;lt;minutes&amp;gt;59&amp;lt;/minutes&amp;gt;&lt;br /&gt;
		&amp;lt;seconds&amp;gt;24.566999&amp;lt;/seconds&amp;gt;&lt;br /&gt;
	&amp;lt;/item&amp;gt;&lt;br /&gt;
	&amp;lt;item&amp;gt;&lt;br /&gt;
		&amp;lt;degrees&amp;gt;36&amp;lt;/degrees&amp;gt;&lt;br /&gt;
		&amp;lt;minutes&amp;gt;60&amp;lt;/minutes&amp;gt;&lt;br /&gt;
		&amp;lt;seconds&amp;gt;25.566999&amp;lt;/seconds&amp;gt;&lt;br /&gt;
	&amp;lt;/item&amp;gt;&lt;br /&gt;
	&amp;lt;item&amp;gt;&lt;br /&gt;
		&amp;lt;degrees&amp;gt;37&amp;lt;/degrees&amp;gt;&lt;br /&gt;
		&amp;lt;minutes&amp;gt;61&amp;lt;/minutes&amp;gt;&lt;br /&gt;
		&amp;lt;seconds&amp;gt;26.566999&amp;lt;/seconds&amp;gt;&lt;br /&gt;
	&amp;lt;/item&amp;gt;&lt;br /&gt;
&amp;lt;/Test_Object&amp;gt;&lt;br /&gt;
&amp;lt;/boost_serialization&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Бинарный архив приводить не стану&amp;amp;nbsp;:) не очень красочно, но занимает он 79 байт, из которых 39 - заголовок и 40 - полезная информация. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
За универсальность boost::serialization придётся заплатить: &lt;br /&gt;
&lt;br /&gt;
*Во время компиляции шаблоны могут разворачиваться довольно долго. &lt;br /&gt;
*Скорость: стек вызовов для сериализации какой-нибудь не слишком больной структурки, может быть просто ужасающим - вызовов 20-30.&lt;br /&gt;
&lt;br /&gt;
Но если вы не пишете систему массового обслуживания, то это то, что вам нужно, с помощью этой библиотеки можно даже реализовать маршалинг или RPC. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; Надеюсь, в общих чертах понятно, как примерно работает сериализация и десериализация, и если понадобится, можно реализовать свою сериализацию. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; Вот пример своей реализации архива, который я использую вместо boost:binary_iarchive (была ОЧЕНЬ важна скорость, а универсальность не очень, но для маршалинга хватает), делал так, чтобы можно было использовать один вместо другого без переделки кода: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
class binary_iarchive&lt;br /&gt;
{&lt;br /&gt;
public:&lt;br /&gt;
	typedef serialization::container container;&lt;br /&gt;
	typedef container::iterator iterator;&lt;br /&gt;
&lt;br /&gt;
	container &amp;amp;cont_;&lt;br /&gt;
	size_t currentPos_;&lt;br /&gt;
	typedef boost::mpl::bool_&amp;lt;false&amp;gt; is_saving;&lt;br /&gt;
	binary_iarchive(container &amp;amp; cont, long = 0)&lt;br /&gt;
			: cont_(cont)&lt;br /&gt;
			, currentPos_(0)&lt;br /&gt;
	{&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	template&amp;lt;typename T&amp;gt;&lt;br /&gt;
	binary_iarchive &amp;amp; operator&amp;gt;&amp;gt;(T &amp;amp; val)&lt;br /&gt;
	{&lt;br /&gt;
		deserialize_impl(val);&lt;br /&gt;
		return *this;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	void reset()&lt;br /&gt;
	{&lt;br /&gt;
		resetPos();&lt;br /&gt;
		cont_.clear();&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	template&amp;lt;typename T&amp;gt;&lt;br /&gt;
	inline void raw_read(T beginPos, size_t len)&lt;br /&gt;
	{&lt;br /&gt;
		if (static_cast&amp;lt;size_t&amp;gt;(cont_.size() - currentPos_) &amp;lt; len)&lt;br /&gt;
			throw std::runtime_error(&amp;quot;No more data&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
		iterator pos = cont_.begin() + currentPos_;&lt;br /&gt;
		iterator endPos = pos + len;&lt;br /&gt;
		std::copy(pos, endPos, beginPos);&lt;br /&gt;
		currentPos_ = currentPos_ + len;&lt;br /&gt;
	}&lt;br /&gt;
private:&lt;br /&gt;
	// Fundamental&lt;br /&gt;
	template&amp;lt;typename T&amp;gt;&lt;br /&gt;
	inline void deserialize_impl(T &amp;amp; val, typename boost::enable_if&amp;lt;boost::is_fundamental&amp;lt;T&amp;gt; &amp;gt;::type* dummy = 0)&lt;br /&gt;
	{&lt;br /&gt;
		raw_read(reinterpret_cast&amp;lt;char*&amp;gt;(&amp;amp;val), sizeof(T));&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	//Classes&lt;br /&gt;
	template&amp;lt;typename T&amp;gt;&lt;br /&gt;
	inline void deserialize_impl(T &amp;amp; val, typename boost::enable_if&amp;lt;boost::is_class&amp;lt;T&amp;gt; &amp;gt;::type* dummy = 0)&lt;br /&gt;
	{&lt;br /&gt;
		deserialize_class(*this, val);&lt;br /&gt;
	}&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Кое-что порезал, чтобы не расслаблялись&amp;amp;nbsp;:) &lt;br /&gt;
&lt;br /&gt;
[[Category:FAQ]] [[Category:FAQ:ANSI_CPP]] [[Category:FAQ:STL]] [[Category:FAQ:STL_BOOST]]&lt;/div&gt;</summary>
		<author><name>RXL</name></author>	</entry>

	<entry>
		<id>https://wiki.shelek.ru/index.php?title=%D0%9A%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D1%8F:%D0%A2%D0%BE%D0%BB%D0%BA%D0%BE%D0%B2%D1%8B%D0%B9_%D1%81%D0%BB%D0%BE%D0%B2%D0%B0%D1%80%D1%8C&amp;diff=1525</id>
		<title>Категория:Толковый словарь</title>
		<link rel="alternate" type="text/html" href="https://wiki.shelek.ru/index.php?title=%D0%9A%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D1%8F:%D0%A2%D0%BE%D0%BB%D0%BA%D0%BE%D0%B2%D1%8B%D0%B9_%D1%81%D0%BB%D0%BE%D0%B2%D0%B0%D1%80%D1%8C&amp;diff=1525"/>
				<updated>2013-02-08T14:06:53Z</updated>
		
		<summary type="html">&lt;p&gt;RXL: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Толковый словарь компьютерного слэнга=&lt;br /&gt;
&lt;br /&gt;
[[Толковый словарь|Старый список терминов]]&lt;/div&gt;</summary>
		<author><name>RXL</name></author>	</entry>

	<entry>
		<id>https://wiki.shelek.ru/index.php?title=%D0%A6%D0%B5%D0%BB%D0%B5%D0%B2%D0%B0%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0_%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B8&amp;diff=1524</id>
		<title>Целевая система разработки</title>
		<link rel="alternate" type="text/html" href="https://wiki.shelek.ru/index.php?title=%D0%A6%D0%B5%D0%BB%D0%B5%D0%B2%D0%B0%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0_%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B8&amp;diff=1524"/>
				<updated>2013-02-08T14:05:52Z</updated>
		
		<summary type="html">&lt;p&gt;RXL: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Система, для выполнения на которой предназначается разрабатываемая программа.&lt;br /&gt;
&lt;br /&gt;
См. также: [[Инструментальная система разработки]].&lt;br /&gt;
&lt;br /&gt;
[[Category:Толковый словарь]]&lt;/div&gt;</summary>
		<author><name>RXL</name></author>	</entry>

	<entry>
		<id>https://wiki.shelek.ru/index.php?title=%D0%A4%D0%BE%D0%BD-%D0%BD%D0%B5%D0%B9%D0%BC%D0%B0%D0%BD%D0%BE%D0%B2%D1%81%D0%BA%D0%B0%D1%8F_%D0%B0%D1%80%D1%85%D0%B8%D1%82%D0%B5%D0%BA%D1%82%D1%83%D1%80%D0%B0&amp;diff=1523</id>
		<title>Фон-неймановская архитектура</title>
		<link rel="alternate" type="text/html" href="https://wiki.shelek.ru/index.php?title=%D0%A4%D0%BE%D0%BD-%D0%BD%D0%B5%D0%B9%D0%BC%D0%B0%D0%BD%D0%BE%D0%B2%D1%81%D0%BA%D0%B0%D1%8F_%D0%B0%D1%80%D1%85%D0%B8%D1%82%D0%B5%D0%BA%D1%82%D1%83%D1%80%D0%B0&amp;diff=1523"/>
				<updated>2013-02-08T14:05:46Z</updated>
		
		<summary type="html">&lt;p&gt;RXL: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Архитектура вычислительной машины, в которой адресные пространства программ и данных объединены в единое адресное пространство.&lt;br /&gt;
&lt;br /&gt;
При использовании '''Ф.-н. а.''' содержимое любой ячейки может быть интерпретировано в зависимости от контекста либо как команда процессора, либо как элемент данных, либо как то и другое одновременно (например, JIT-компилятор сначала преобразует промежуточный код в исполняемый машинный код, записывая его в ячейки памяти как данные, а затем выполняет этот код как команды).&lt;br /&gt;
&lt;br /&gt;
Архитектура получила свое название в честь одного из разработчиков [http://ru.wikipedia.org/wiki/%D0%9D%D0%B5%D0%B9%D0%BC%D0%B0%D0%BD,_%D0%94%D0%B6%D0%BE%D0%BD_%D1%84%D0%BE%D0%BD Джона фон Неймана].&lt;br /&gt;
&lt;br /&gt;
'''Ф.-н. а.''' известна также как [[Принстонская архитектура]] но названию университета, в котором она была разработана.&lt;br /&gt;
&lt;br /&gt;
См.также: [[Гарвардская архитектура]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Толковый словарь]]&lt;/div&gt;</summary>
		<author><name>RXL</name></author>	</entry>

	<entry>
		<id>https://wiki.shelek.ru/index.php?title=%D0%A2%D1%80%D0%B8_%D1%82%D0%BE%D0%B2%D0%B0%D1%80%D0%B8%D1%89%D0%B0&amp;diff=1522</id>
		<title>Три товарища</title>
		<link rel="alternate" type="text/html" href="https://wiki.shelek.ru/index.php?title=%D0%A2%D1%80%D0%B8_%D1%82%D0%BE%D0%B2%D0%B0%D1%80%D0%B8%D1%89%D0%B0&amp;diff=1522"/>
				<updated>2013-02-08T14:05:35Z</updated>
		
		<summary type="html">&lt;p&gt;RXL: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Под этим шутливым прозвищем известны три корифея информатики - Грейди (Гради) Буч (Grady Booch), Ивар (Айвар) Джейкобсон (Якобсон) (Ivar Jacobson) и Джеймс Рамбо (Румбах) (James Rumbaugh). (Имена и фамилии приведены в нескольких вариантах, поскольку все они встречаются в русских  переводах).&lt;br /&gt;
&lt;br /&gt;
Основные достижения '''Т. т.''' - разработка универсального языка моделирования [[UML]], который вобрал в себя элементы наиболее передовых на время своего создания методик [[Объектно-ориентированный анализ|объектно-ориентированного анализа]] (OMT, OOSE, Booch) и [[Унифицированный процесс|Унифицированного процесса]], который стал основой для целого семейства технологий разработки программных продуктов.&lt;br /&gt;
&lt;br /&gt;
Свое прозвище троица получила от американской музыкальной комедии &amp;quot;[http://en.wikipedia.org/wiki/Three_Amigos Three Amigos]&amp;quot;, снятой в 1986 году (а вовсе не по произведению Ремарка, как иногда думают).&lt;br /&gt;
&lt;br /&gt;
[[Category:Толковый словарь]]&lt;/div&gt;</summary>
		<author><name>RXL</name></author>	</entry>

	<entry>
		<id>https://wiki.shelek.ru/index.php?title=%D0%A2%D0%B5%D1%81%D1%82%D0%BE%D0%B2%D1%8B%D0%B9_%D0%B4%D0%B2%D0%BE%D0%B9%D0%BD%D0%B8%D0%BA&amp;diff=1521</id>
		<title>Тестовый двойник</title>
		<link rel="alternate" type="text/html" href="https://wiki.shelek.ru/index.php?title=%D0%A2%D0%B5%D1%81%D1%82%D0%BE%D0%B2%D1%8B%D0%B9_%D0%B4%D0%B2%D0%BE%D0%B9%D0%BD%D0%B8%D0%BA&amp;diff=1521"/>
				<updated>2013-02-08T14:05:31Z</updated>
		
		<summary type="html">&lt;p&gt;RXL: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Программный модуль, предназначенный для замены реального модуля при тестировании.&lt;br /&gt;
&lt;br /&gt;
Можно выделить несколько вариантов '''Т.д.''':&lt;br /&gt;
&lt;br /&gt;
* [[Тестовая заглушка]];&lt;br /&gt;
* [[Процедурная тестовая заглушка]];&lt;br /&gt;
* [[Тестовый агент]];&lt;br /&gt;
* [[Подставной объект]];&lt;br /&gt;
* [[Поддельный объект]];&lt;br /&gt;
* [[Объект-заглушка]].&lt;br /&gt;
&lt;br /&gt;
В зависимости от возможностей настройки '''Т.д.''' можно также подразделить на следующие варианты:&lt;br /&gt;
&lt;br /&gt;
* [[Ненастраиваемый тестовый двойник]];&lt;br /&gt;
* [[Фиксированный тестовый двойник]];&lt;br /&gt;
* [[Настраиваемый тестовый двойник]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Литература:&lt;br /&gt;
&lt;br /&gt;
Джерард Месарош. Шаблоны тестирования xUnit. Рефакторинг кода тестов. Вильямс, 2009. ISBN 978-5-8459-1448-4, ISBN 978-0-13-149505-0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Толковый словарь]]&lt;/div&gt;</summary>
		<author><name>RXL</name></author>	</entry>

	<entry>
		<id>https://wiki.shelek.ru/index.php?title=%D0%A2%D0%B5%D1%81%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5&amp;diff=1520</id>
		<title>Тестирование</title>
		<link rel="alternate" type="text/html" href="https://wiki.shelek.ru/index.php?title=%D0%A2%D0%B5%D1%81%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5&amp;diff=1520"/>
				<updated>2013-02-08T14:05:23Z</updated>
		
		<summary type="html">&lt;p&gt;RXL: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Тестирование''' ([[Testing]]) - деятельность, направленная на обнаружение расхождений между реальными свойствами предмета тестирования и предъявляемыми к нему требованиями. Учитывая тематическую направленность данного ресурса, в дальнейшем мы будем рассматривать лишь две разновидности предметов тестирования:&lt;br /&gt;
# программное обеспечение (ПО);&lt;br /&gt;
# системы со встроенными микропроцессорами (микроконтроллерами).&lt;br /&gt;
&lt;br /&gt;
Системы со встроенными микропроцессорами (микроконтроллерами) включают в себя как аппаратную часть, так и встроенное ПО, поэтому их '''Т.''' представляет собой более обий случай по сравнению с '''Т.''' ПО.&lt;br /&gt;
&lt;br /&gt;
Вопреки широко распространенному ошибочному мнению, целью '''Т.''' вовсе не является демонстрация работоспособности предмета тестирования. Напротив, задача '''T.''' - выявить как можно больше ошибок в предмете тестирования.&lt;br /&gt;
&lt;br /&gt;
Не следует путать '''Т.''' с [[Отладка|отладкой]].&lt;br /&gt;
&lt;br /&gt;
[[Category:Толковый словарь]]&lt;/div&gt;</summary>
		<author><name>RXL</name></author>	</entry>

	<entry>
		<id>https://wiki.shelek.ru/index.php?title=%D0%A0%D0%B5%D1%84%D0%B0%D0%BA%D1%82%D0%BE%D1%80%D0%B8%D0%BD%D0%B3&amp;diff=1519</id>
		<title>Рефакторинг</title>
		<link rel="alternate" type="text/html" href="https://wiki.shelek.ru/index.php?title=%D0%A0%D0%B5%D1%84%D0%B0%D0%BA%D1%82%D0%BE%D1%80%D0%B8%D0%BD%D0%B3&amp;diff=1519"/>
				<updated>2013-02-08T14:05:15Z</updated>
		
		<summary type="html">&lt;p&gt;RXL: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Процесс изменения программной системы, при котором не меняется внешнее поведение кода, но улучшается его внутренняя структура.&lt;br /&gt;
&lt;br /&gt;
'''Р.''' облегчает понимание программного обеспечения, помогает найти в нем ошибки и, как следствие, способствует ускорению разработки кода.&lt;br /&gt;
&lt;br /&gt;
Прямым указанием на то, что необходимо провести '''Р.''' кода, является наличие так называемого [[Запах кода|запаха кода]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Литература:&lt;br /&gt;
&lt;br /&gt;
Мартин Фаулер. Рефакторинг: улучшение существующего кода. - Пер. с англ. - СПб: Символ-Плюс, 2005. ISBN 5-93286-045-6&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Толковый словарь]]&lt;/div&gt;</summary>
		<author><name>RXL</name></author>	</entry>

	<entry>
		<id>https://wiki.shelek.ru/index.php?title=%D0%A0%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0,_%D1%83%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D1%8F%D0%B5%D0%BC%D0%B0%D1%8F_%D1%82%D0%B5%D1%81%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%D0%BC&amp;diff=1518</id>
		<title>Разработка, управляемая тестированием</title>
		<link rel="alternate" type="text/html" href="https://wiki.shelek.ru/index.php?title=%D0%A0%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0,_%D1%83%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D1%8F%D0%B5%D0%BC%D0%B0%D1%8F_%D1%82%D0%B5%D1%81%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%D0%BC&amp;diff=1518"/>
				<updated>2013-02-08T14:05:10Z</updated>
		
		<summary type="html">&lt;p&gt;RXL: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Методика разработки, при которой для каждого разрабатываемого модуля сначала пишутся тесты, а затем - программный код, который должен удовлетворять этим тестам. При таком подходе тесты рассматриваются как спецификация модуля, причем код пишется лишь в том случае, если есть хотя бы один тест, выдающий ошибку. &lt;br /&gt;
&lt;br /&gt;
Широко применяется в &amp;quot;экстремальном программировании&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[http://club.shelek.ru/viewart.php?id=351 Статья &amp;quot;Разработка на языке C, управляемая тестированием&amp;quot;.]&lt;br /&gt;
&lt;br /&gt;
[[Category:Толковый словарь]]&lt;/div&gt;</summary>
		<author><name>RXL</name></author>	</entry>

	<entry>
		<id>https://wiki.shelek.ru/index.php?title=%D0%9F%D1%80%D0%BE%D1%82%D0%BE%D0%BF%D0%BE%D1%82%D0%BE%D0%BA&amp;diff=1517</id>
		<title>Протопоток</title>
		<link rel="alternate" type="text/html" href="https://wiki.shelek.ru/index.php?title=%D0%9F%D1%80%D0%BE%D1%82%D0%BE%D0%BF%D0%BE%D1%82%D0%BE%D0%BA&amp;diff=1517"/>
				<updated>2013-02-08T14:05:03Z</updated>
		
		<summary type="html">&lt;p&gt;RXL: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''П.''' - это реализация простейших [[Поток|потоков]] с [[Кооперативная многозадачность|кооперативной многозадачностью]].&lt;br /&gt;
&lt;br /&gt;
Использование '''П.''' позволяет перейти от автоматной модели реализации алгоритмов к модели взаимодействующих потоков инструкций. При этом программа, реализованная с использованием '''П.''', выглядит структурированной гораздо лучше, чем эта же программа, реализованная в автоматном стиле.&lt;br /&gt;
&lt;br /&gt;
В частности, '''П.''' нашли широкое применение при реализации коммуникационных протоколов, например, стека TCP/IP или протокола для обмена данными с беспроводными датчиками.&lt;br /&gt;
&lt;br /&gt;
Известная реализация '''П.''' на языке C использует [[Машина Даффа (устройство Даффа)|машину Даффа]] для управления внутренними состояниями. Машина Даффа реализована в виде набора макросов C и не видна в коде программы, поэтому код получается простым и компактным.&lt;br /&gt;
&lt;br /&gt;
К недостаткам '''П.''' можно отнести запрет на использование стека для размещения в нем локальных переменных функции, реализующей поток. Однако из этого недостатка вытекает также их достоинство: поскольку стек не используется, оперативная память расходуется очень экономно, при этом не требуется выделять пространство под стек отдельно для каждого потока. Это достоинство может стать решающим при использовании микроконтроллеров с объемом ОЗУ, исчисляемым несколькими десятками или сотнями байт.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Литература:&lt;br /&gt;
&lt;br /&gt;
[http://www.sics.se/~adam/dunkels05using.pdf Adam Dunkels, Oliver Schmidt, Thiemo Voigt. Using Protothreads for Sensor Node Programming.]&lt;br /&gt;
&lt;br /&gt;
[http://www.sics.se/~adam/dunkels06protothreads.pdf Adam Dunkels, Oliver Schmidt, Thiemo Voigt, and Muneeb Ali. Protothreads: Simplifying Event-Driven Programming of Memory-Constrained Embedded Systems.]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Толковый словарь]]&lt;/div&gt;</summary>
		<author><name>RXL</name></author>	</entry>

	<entry>
		<id>https://wiki.shelek.ru/index.php?title=%D0%9F%D1%80%D0%B8%D0%BD%D1%81%D1%82%D0%BE%D0%BD%D1%81%D0%BA%D0%B0%D1%8F_%D0%B0%D1%80%D1%85%D0%B8%D1%82%D0%B5%D0%BA%D1%82%D1%83%D1%80%D0%B0&amp;diff=1516</id>
		<title>Принстонская архитектура</title>
		<link rel="alternate" type="text/html" href="https://wiki.shelek.ru/index.php?title=%D0%9F%D1%80%D0%B8%D0%BD%D1%81%D1%82%D0%BE%D0%BD%D1%81%D0%BA%D0%B0%D1%8F_%D0%B0%D1%80%D1%85%D0%B8%D1%82%D0%B5%D0%BA%D1%82%D1%83%D1%80%D0%B0&amp;diff=1516"/>
				<updated>2013-02-08T14:04:56Z</updated>
		
		<summary type="html">&lt;p&gt;RXL: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;См. [[Фон-неймановская архитектура]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Толковый словарь]]&lt;/div&gt;</summary>
		<author><name>RXL</name></author>	</entry>

	<entry>
		<id>https://wiki.shelek.ru/index.php?title=%D0%9F%D0%BE%D0%B4%D1%81%D1%82%D0%B0%D0%B2%D0%BD%D0%BE%D0%B9_%D0%BE%D0%B1%D1%8A%D0%B5%D0%BA%D1%82&amp;diff=1515</id>
		<title>Подставной объект</title>
		<link rel="alternate" type="text/html" href="https://wiki.shelek.ru/index.php?title=%D0%9F%D0%BE%D0%B4%D1%81%D1%82%D0%B0%D0%B2%D0%BD%D0%BE%D0%B9_%D0%BE%D0%B1%D1%8A%D0%B5%D0%BA%D1%82&amp;diff=1515"/>
				<updated>2013-02-08T14:04:47Z</updated>
		
		<summary type="html">&lt;p&gt;RXL: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''П.о.''' - объект, которым заменяется ''реальный'' объект [[SUT]] в процессе ''тестирования поведения''.&lt;br /&gt;
&lt;br /&gt;
[[Category:Толковый словарь]]&lt;/div&gt;</summary>
		<author><name>RXL</name></author>	</entry>

	<entry>
		<id>https://wiki.shelek.ru/index.php?title=%D0%9E%D1%82%D0%BB%D0%B0%D0%B4%D1%87%D0%B8%D0%BA&amp;diff=1514</id>
		<title>Отладчик</title>
		<link rel="alternate" type="text/html" href="https://wiki.shelek.ru/index.php?title=%D0%9E%D1%82%D0%BB%D0%B0%D0%B4%D1%87%D0%B8%D0%BA&amp;diff=1514"/>
				<updated>2013-02-08T14:04:26Z</updated>
		
		<summary type="html">&lt;p&gt;RXL: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Отладчик''' ([[Debugger]]) - программное или аппаратно-программное средство, предназначенное для ускорения и облегчения процесса [[Отладка|отладки]].&lt;br /&gt;
&lt;br /&gt;
Программных '''О.''' существует великое множество; одни из них работают через командную строку, другие снабжены развитым графическим интерфейсом; одни входят в состав [[IDE]], другие являются самостоятельными изделиями; они могут предоставлять разные уровни сервиса и комфорта; но в основе большинства из них лежат сходные принципы.&lt;br /&gt;
&lt;br /&gt;
Минимальный сервис, предоставляемый '''О.''', обычно включает в себя задание точек останова, пошаговое выполнение программы, просмотр/модификацию ячеек памяти и подобные примитивные операции. Более развитые '''О.''' предоставляют дополнительный сервис, например, трассировка/отладка в терминах языка высокого уровня, на котором написана программа (при условии, разумеется, что при компиляции были сгенерированы дополнительные данные для отладки), слежение за значениями переменных, точки останова по заданному условию и т.д.&lt;br /&gt;
&lt;br /&gt;
Аппаратные '''О.''' требуют наличия специального отладочного оборудования (например, [[Внутрисхемный эмулятор|внутрисхемного эмулятора]]). Это оборудование позволяет заглянуть в &amp;quot;недра&amp;quot; отлаживаемой системы, недоступные другими способами извне (например, просмотреть содержимое регистров общего назначения или задать точку останова программы).&lt;br /&gt;
&lt;br /&gt;
Впрочем успехи микроэлектроники привели к тому, что зачастую серийные микропроцессоры (микроконтроллеры) оснащаются довольно развитыми средствами внутрисхемной эмуляции, причем это даже не отражается на их стоимости. Поэтому многие аппаратно-программные '''О.''' либо вовсе не требуют дополнительных аппаратных средств отладки, довольствуясь встроенными, либо эти дополнительные средства просты и универсальны (например, если отлаживаемая система снабжена интерфейсом [[JTAG]].&lt;br /&gt;
&lt;br /&gt;
См. также: [[Отладка]].&lt;br /&gt;
&lt;br /&gt;
[[Category:Толковый словарь]]&lt;/div&gt;</summary>
		<author><name>RXL</name></author>	</entry>

	<entry>
		<id>https://wiki.shelek.ru/index.php?title=%D0%9E%D1%82%D0%BB%D0%B0%D0%B4%D0%BA%D0%B0&amp;diff=1513</id>
		<title>Отладка</title>
		<link rel="alternate" type="text/html" href="https://wiki.shelek.ru/index.php?title=%D0%9E%D1%82%D0%BB%D0%B0%D0%B4%D0%BA%D0%B0&amp;diff=1513"/>
				<updated>2013-02-08T14:04:21Z</updated>
		
		<summary type="html">&lt;p&gt;RXL: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Отладка ([[Debugging|debugging]]) - процесс поиска ошибок в программном и/или аппаратном обеспечении вычислительно-управляющих систем.&lt;br /&gt;
&lt;br /&gt;
Как правило, для проведения '''О.''' используются [[Отладчик|отладчики]], хотя существуют способы, позволяющие в принципе обходиться и без них (например, при поиске ошибок в программах можно вводить в контрольные точки в коде операторы выдачи диагностики на печать или терминал). Путем анализа диагностического вывода можно обнаружить точку, где реальное поведение программы отличается от предполагаемого.&lt;br /&gt;
&lt;br /&gt;
До недавнего прошлого '''О.''' занимала весьма важное место в процессе разработки ПО. Однако грамотное использование [[Тестирование|тестирования]] резко уменьшает потребность в '''О.''', а зачастую и вовсе сводит ее к нулю.&lt;br /&gt;
&lt;br /&gt;
См. также: [[Отладчик]].&lt;br /&gt;
&lt;br /&gt;
[[Category:Толковый словарь]]&lt;/div&gt;</summary>
		<author><name>RXL</name></author>	</entry>

	<entry>
		<id>https://wiki.shelek.ru/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D1%82%D0%B5%D1%81%D1%82&amp;diff=1512</id>
		<title>Модульный тест</title>
		<link rel="alternate" type="text/html" href="https://wiki.shelek.ru/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D1%82%D0%B5%D1%81%D1%82&amp;diff=1512"/>
				<updated>2013-02-08T14:04:09Z</updated>
		
		<summary type="html">&lt;p&gt;RXL: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Тест, основная задача которого - проверка определенного аспекта поведения одного метода тестируемого модуля. Как правило, разработчики стараются делать '''М. т.''' как можно меньше и проще, поэтому на каждый метод приходится не один '''М. т.''', а целый набор.&lt;br /&gt;
&lt;br /&gt;
Типичный '''М. т.''' содержит в себе четыре фазы:&lt;br /&gt;
&lt;br /&gt;
*подготовка;&lt;br /&gt;
*выполнение;&lt;br /&gt;
*оценка;&lt;br /&gt;
*очистка.&lt;br /&gt;
&lt;br /&gt;
Во время фазы '''подготовки''' настраивается рабочая среда, непосредственно в которой будет производиться тестирование модуля.&lt;br /&gt;
&lt;br /&gt;
В фазе '''выполнения''' М. т. вызывает тестируемый метод.&lt;br /&gt;
&lt;br /&gt;
В Фазе '''оценки''' производится сравнение фактического результата фазы выполнения с ожидаемым и в случае их несовпадения выдается соответствующа диагностика, позволяющая обнаружить нарушение функциональности метода и его причину.&lt;br /&gt;
&lt;br /&gt;
Фаза '''очистки''' предназначена для очистки среды выполнения '''М. т.''' и освобождения занятых на предыдущих фазах ресурсов. Многие тесты не используют ресурсы, нуждающиеся в явном освобождении, поэтому на практике эта фаза часто отсутствует.&lt;br /&gt;
&lt;br /&gt;
См. также: [[Модульное тестирование]].&lt;br /&gt;
&lt;br /&gt;
[[Category:Толковый словарь]]&lt;/div&gt;</summary>
		<author><name>RXL</name></author>	</entry>

	<entry>
		<id>https://wiki.shelek.ru/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C%D0%BD%D0%BE%D0%B5_%D1%82%D0%B5%D1%81%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5&amp;diff=1511</id>
		<title>Модульное тестирование</title>
		<link rel="alternate" type="text/html" href="https://wiki.shelek.ru/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C%D0%BD%D0%BE%D0%B5_%D1%82%D0%B5%D1%81%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5&amp;diff=1511"/>
				<updated>2013-02-08T14:04:05Z</updated>
		
		<summary type="html">&lt;p&gt;RXL: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Англ. [[Unit Testing]]&lt;br /&gt;
&lt;br /&gt;
Разновидность тестирования, цель которой - обнаружение ошибок в отдельно взятом программном модуле без учета его взаимодействия с другими модулями, входящими в состав системы.&lt;br /&gt;
&lt;br /&gt;
На практике, как правило, используется автоматизированное '''М. т.'''. Высокая степень автоматизации позволяет проводить '''М. т.''' достаточно быстро (типичные затраты времени составляют порядка нескольких минут), что снижает затраты на тестирование и позволяет часто повторять '''М. т.''' не только кода, над которым в данный момент производится работа, но и всей системы в целом (см. [[Регрессионное тестирование]]).&lt;br /&gt;
&lt;br /&gt;
Автоматизация '''М. т.''' достигается за счет использования специальных инструментальных средств - сред '''М. т.'''. Наиболее известным семейством таких сред является [[xUnit]], в состав которого входят инструменты '''М. т.''' практически для всех популярных языков программирования.&lt;br /&gt;
&lt;br /&gt;
Среда '''М. т.''', как правило, позволяет управлять выполнением [[Модульный тест|модульных тестов]]. При этом можно разрешить или запретить выполнение отдельных модульных тестов, определяя набор тестов, который будет выполнен во время очередного сеанса тестирования.&lt;br /&gt;
&lt;br /&gt;
[[Category:Толковый словарь]]&lt;/div&gt;</summary>
		<author><name>RXL</name></author>	</entry>

	<entry>
		<id>https://wiki.shelek.ru/index.php?title=%D0%9C%D0%B0%D1%88%D0%B8%D0%BD%D0%B0_%D0%94%D0%B0%D1%84%D1%84%D0%B0_(%D1%83%D1%81%D1%82%D1%80%D0%BE%D0%B9%D1%81%D1%82%D0%B2%D0%BE_%D0%94%D0%B0%D1%84%D1%84%D0%B0)&amp;diff=1510</id>
		<title>Машина Даффа (устройство Даффа)</title>
		<link rel="alternate" type="text/html" href="https://wiki.shelek.ru/index.php?title=%D0%9C%D0%B0%D1%88%D0%B8%D0%BD%D0%B0_%D0%94%D0%B0%D1%84%D1%84%D0%B0_(%D1%83%D1%81%D1%82%D1%80%D0%BE%D0%B9%D1%81%D1%82%D0%B2%D0%BE_%D0%94%D0%B0%D1%84%D1%84%D0%B0)&amp;diff=1510"/>
				<updated>2013-02-08T14:04:00Z</updated>
		
		<summary type="html">&lt;p&gt;RXL: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;На самом деле это не физическое устройство, а идиома программирования на языке ANSI C.&lt;br /&gt;
&lt;br /&gt;
'''М.Д.''' была придумана компьютерным инженером канадского происхождения Томом Даффом (см. [http://en.wikipedia.org/wiki/Tom_Duff Tom Duff]). Оригинальность и непривычность подхода Даффа поражают при первом знакомстве: одни считают это гениальным трюком, другие - грязным хаком (см. [http://forum.shelek.ru/index.php/topic,25760.msg246759.html#msg246759 обсуждение] статьи [http://club.shelek.ru/viewart.php?id=338 &amp;quot;Сопрограммы в языке программирования C&amp;quot;]), но равнодушным не остается практически никто.&lt;br /&gt;
&lt;br /&gt;
Классическая '''М.Д.''' выглядит [http://en.wikipedia.org/wiki/Duff%27s_device#Original_version так]. Операторы '''switch''' и '''do while''' переплетены в ней настолько причудливо, что первый вопрос, который почти у всех возникает при виде '''М.Д.''': &amp;quot;А это в самом деле можно скомпилировать без ошибок???&amp;quot;. Но на самом деле '''М.Д.''' не противоречит ни синтаксису ANSI C, ни здравому смыслу; более того, умелое ее использование позволяет красиво решать самые различные задачи, например, &amp;quot;раскручивание циклов&amp;quot;, построение конечных автоматов, реализация [[Кооперативная многозадачность|кооперативной многозадачности]] через механизм [[Протопоток|протопотоков]] и т.п.&lt;br /&gt;
&lt;br /&gt;
[[Category:Толковый словарь]]&lt;/div&gt;</summary>
		<author><name>RXL</name></author>	</entry>

	<entry>
		<id>https://wiki.shelek.ru/index.php?title=%D0%9A%D1%80%D0%BE%D1%81%D1%81-%D1%81%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B2%D0%B0_%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B8&amp;diff=1509</id>
		<title>Кросс-средства разработки</title>
		<link rel="alternate" type="text/html" href="https://wiki.shelek.ru/index.php?title=%D0%9A%D1%80%D0%BE%D1%81%D1%81-%D1%81%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B2%D0%B0_%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B8&amp;diff=1509"/>
				<updated>2013-02-08T14:03:51Z</updated>
		
		<summary type="html">&lt;p&gt;RXL: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Средства, позволяющие разрабатывать программное обеспечение для некоторой вычислительной системы с использованием [[Инструментальная система|инструментальной системы]] с другой архитектурой.&lt;br /&gt;
&lt;br /&gt;
Широкое применение '''К.-с. р.''' находят при разработке встроенных систем на основе микроконтроллеров, построение [[Инструментальная система|инструментальной системы]] на которых затруднено в связи с особенностями их архитектуры. При этом '''К.-с. р.''' работают на инструментальном персональном компьютере, а результирующий код загружается в [[Целевая система|целевую систему]] при помощи ''программатора''.&lt;br /&gt;
&lt;br /&gt;
В качестве примера '''К.-с. р.''' можно привести широко распространенную [[Интегрированная среда разработки|интегрированную среду разработки]] [http://www.atmel.com/dyn/products/tools_card.asp?tool_id=17212&amp;amp;category_id=163&amp;amp;family_id=607&amp;amp;subfamily_id=760 Atmel AVR Studio 5.0] фирмы [http://www2.atmel.com/ Atmel]. Это средство предназначено для работы на IBM PC-совместимых компьютерах в среде операционной системы MS Windows и позволяет разрабатывать и отлаживать программы для всех микроконтроллеров семейства [http://www.atmel.com/products/avr/default.asp?category_id=163&amp;amp;family_id=607&amp;amp;source=left_nav AVR] на ассемблере и языке программирования C.&lt;br /&gt;
&lt;br /&gt;
[[Category:Толковый словарь]]&lt;/div&gt;</summary>
		<author><name>RXL</name></author>	</entry>

	<entry>
		<id>https://wiki.shelek.ru/index.php?title=%D0%98%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0_%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B8&amp;diff=1508</id>
		<title>Инструментальная система разработки</title>
		<link rel="alternate" type="text/html" href="https://wiki.shelek.ru/index.php?title=%D0%98%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0_%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B8&amp;diff=1508"/>
				<updated>2013-02-08T14:03:47Z</updated>
		
		<summary type="html">&lt;p&gt;RXL: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Система, на которой производится процесс разработки программного обеспечения: набор и редактирование исходных текстов программы, ее компиляция, компоновка и т.д.&lt;br /&gt;
&lt;br /&gt;
В зависимости от ситуации '''И. с. р.''' может совпадать либо не совпадать с [[Целевая система разработки|целевой системой разработки]]. Если '''И. с. р.''' отлична от [[Целевая система разработки|целевой системы разработки]], такую '''И. с. р.''' называют [[Кросс-средства разработки|кросс-системой разработки]].&lt;br /&gt;
&lt;br /&gt;
См. также: [[Целевая система разработки]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Толковый словарь]]&lt;/div&gt;</summary>
		<author><name>RXL</name></author>	</entry>

	<entry>
		<id>https://wiki.shelek.ru/index.php?title=%D0%93%D0%B0%D1%80%D0%B2%D0%B0%D1%80%D0%B4%D1%81%D0%BA%D0%B0%D1%8F_%D0%B0%D1%80%D1%85%D0%B8%D1%82%D0%B5%D0%BA%D1%82%D1%83%D1%80%D0%B0&amp;diff=1507</id>
		<title>Гарвардская архитектура</title>
		<link rel="alternate" type="text/html" href="https://wiki.shelek.ru/index.php?title=%D0%93%D0%B0%D1%80%D0%B2%D0%B0%D1%80%D0%B4%D1%81%D0%BA%D0%B0%D1%8F_%D0%B0%D1%80%D1%85%D0%B8%D1%82%D0%B5%D0%BA%D1%82%D1%83%D1%80%D0%B0&amp;diff=1507"/>
				<updated>2013-02-08T14:03:41Z</updated>
		
		<summary type="html">&lt;p&gt;RXL: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Архитектура вычислительной машины, в которой адресные пространства программ и данных изолированы друг от друга. &lt;br /&gt;
&lt;br /&gt;
'''Г. а.''' получила широкое использование в однокристальных микроконтроллерах, поскольку память программ в этих устройствах реализуется в виде какой-либо разновидности [[ПЗУ]] и конструктивно отличается от памяти данных.&lt;br /&gt;
&lt;br /&gt;
Архитектура получила свое название по имени университета, в котором она была разработана.&lt;br /&gt;
&lt;br /&gt;
См. также: [[Фон-неймановская архитектура]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Толковый словарь]]&lt;/div&gt;</summary>
		<author><name>RXL</name></author>	</entry>

	<entry>
		<id>https://wiki.shelek.ru/index.php?title=Unity&amp;diff=1506</id>
		<title>Unity</title>
		<link rel="alternate" type="text/html" href="https://wiki.shelek.ru/index.php?title=Unity&amp;diff=1506"/>
				<updated>2013-02-08T14:03:26Z</updated>
		
		<summary type="html">&lt;p&gt;RXL: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Среда модульного тестирования программ, написанных на языке ANSI C.&lt;br /&gt;
&lt;br /&gt;
Авторы: Mike Karlesky, Mark VanderVoord, Greg Williams.&lt;br /&gt;
&lt;br /&gt;
[http://throwtheswitch.org/white-papers/unity-intro.html Домашняя страница проекта].&lt;br /&gt;
&lt;br /&gt;
'''U'''. разрабатывалась в первую очередь для тестирования программного обеспечения встроенных систем, хотя в принципе она может быть применена и для программ общего назначения. Среда весьма компактна, что позволяет использовать ее на процессорах с ограниченными ресурсами. В то же время благодаря гибкости и функциональности она является совершенно полноценным средством модульного тестирования.&lt;br /&gt;
&lt;br /&gt;
[http://club.shelek.ru/viewart.php?id=348 Статья &amp;quot;Модульное тестирование ПО встроенных систем в среде Unity&amp;quot;, часть 1]&lt;br /&gt;
&lt;br /&gt;
[http://club.shelek.ru/viewart.php?id=349 Статья &amp;quot;Модульное тестирование ПО встроенных систем в среде Unity&amp;quot;, часть 2]&lt;br /&gt;
&lt;br /&gt;
[http://club.shelek.ru/viewart.php?id=350 Статья &amp;quot;Модульное тестирование ПО встроенных систем в среде Unity&amp;quot;, часть 3]&lt;br /&gt;
&lt;br /&gt;
[[Category:Толковый словарь]]&lt;/div&gt;</summary>
		<author><name>RXL</name></author>	</entry>

	<entry>
		<id>https://wiki.shelek.ru/index.php?title=TDD&amp;diff=1505</id>
		<title>TDD</title>
		<link rel="alternate" type="text/html" href="https://wiki.shelek.ru/index.php?title=TDD&amp;diff=1505"/>
				<updated>2013-02-08T14:03:17Z</updated>
		
		<summary type="html">&lt;p&gt;RXL: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''TDD''' - аббревиатура для Test-Driven Development (вариант: Test-Driven Design).&lt;br /&gt;
&lt;br /&gt;
См. [[Разработка, управляемая тестированием]].&lt;br /&gt;
&lt;br /&gt;
[[Category:Толковый словарь]]&lt;/div&gt;</summary>
		<author><name>RXL</name></author>	</entry>

	<entry>
		<id>https://wiki.shelek.ru/index.php?title=TDD&amp;diff=1504</id>
		<title>TDD</title>
		<link rel="alternate" type="text/html" href="https://wiki.shelek.ru/index.php?title=TDD&amp;diff=1504"/>
				<updated>2013-02-08T14:03:03Z</updated>
		
		<summary type="html">&lt;p&gt;RXL: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''TDD''' - аббревиатура для Test-Driven Development (вариант: Test-Driven Design).&lt;br /&gt;
&lt;br /&gt;
См. [[Разработка, управляемая тестированием]].&lt;br /&gt;
&lt;br /&gt;
[[Category:Русские термины]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Толковый словарь]]&lt;/div&gt;</summary>
		<author><name>RXL</name></author>	</entry>

	<entry>
		<id>https://wiki.shelek.ru/index.php?title=MCH&amp;diff=1503</id>
		<title>MCH</title>
		<link rel="alternate" type="text/html" href="https://wiki.shelek.ru/index.php?title=MCH&amp;diff=1503"/>
				<updated>2013-02-08T14:02:53Z</updated>
		
		<summary type="html">&lt;p&gt;RXL: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''MCH''' (аббревиатура для &amp;quot;Model Conductor Hardware&amp;quot;, т.е. &amp;quot;Модель-Проводник-Оборудование) - это паттерн проектирования, разработанный сотрудниками Atomic Object: Michael Karlesky&lt;br /&gt;
(mailto:karlesky@atomicobject.com), Greg Williams (mailto:williams@atomicobject.com), William Bereza (mailto:bereza@atomicobject.com), Matt Fletcher (mailto:fletcher@atomicobject.com).&lt;br /&gt;
&lt;br /&gt;
Паттерн был разработан по аналогии с известными паттернами проектирования &amp;quot;настольных&amp;quot; приложений MVC и MVP. Его назначение - усовершенствование архитектуры приложений для встроенных систем за счет максимально возможного отделения бизнес-логики приложения от оборудования.&lt;br /&gt;
&lt;br /&gt;
Кроме улучшения архитектуры, применение паттерна позволяет увеличить покрытие кода тестами за счет широкого применения [[Подставной объект|подставных объектов]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Литература:&lt;br /&gt;
&lt;br /&gt;
[http://forum.shelek.ru/index.php/topic,26526.msg263486.html#msg263486 Michael Karlesky, Greg Williams, William Bereza, Matt Fletcher. Mocking the Embedded World: Test-Driven Development, Continuous Integration, and Design Patterns.]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Толковый словарь]]&lt;/div&gt;</summary>
		<author><name>RXL</name></author>	</entry>

	<entry>
		<id>https://wiki.shelek.ru/index.php?title=HAL&amp;diff=1502</id>
		<title>HAL</title>
		<link rel="alternate" type="text/html" href="https://wiki.shelek.ru/index.php?title=HAL&amp;diff=1502"/>
				<updated>2013-02-08T14:02:46Z</updated>
		
		<summary type="html">&lt;p&gt;RXL: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Аббревиатура для ''Hardware Abstract Layer'' - дословно &amp;quot;прослойка для абстрагирования от оборудования&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
'''HAL''' представляет собой часть кода (&amp;quot;прослойку&amp;quot;), в которой сконцентрирована вся работа с физическим оборудованием. Остальной код взаимодействует с оборудованием не напрямую, а с использованием интерфейса '''HAL'''. Такое разделение позволяет сделать большую часть кода независимым от конкретного оборудования, что повышает мобильность программного обеспечения: при портировании на другую платформу достаточно лишь переписать '''HAL''', который обычно составляет лишь небольшую часть кода, к тому же он достаточно прост и хорошо локализован.&lt;br /&gt;
&lt;br /&gt;
[[Category:Толковый словарь]]&lt;/div&gt;</summary>
		<author><name>RXL</name></author>	</entry>

	<entry>
		<id>https://wiki.shelek.ru/index.php?title=%D0%97%D0%B0%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D0%B0%D1%8F_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0&amp;diff=1501</id>
		<title>Заглавная страница</title>
		<link rel="alternate" type="text/html" href="https://wiki.shelek.ru/index.php?title=%D0%97%D0%B0%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D0%B0%D1%8F_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0&amp;diff=1501"/>
				<updated>2013-02-08T14:02:12Z</updated>
		
		<summary type="html">&lt;p&gt;RXL: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
=Википедия Клуба программистов &amp;quot;Весельчак У&amp;quot;=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Разделы==&lt;br /&gt;
&lt;br /&gt;
===Основной материал.===&lt;br /&gt;
* [[FAQ:Содержание|Ответы на часто задаваемые вопросы о программировании]]. Составлено по темам [[Форум программистов|нашего форума]].&lt;br /&gt;
* [[FAQ:Oracle|Ответы на часто задаваемые вопросы по администрированию Oracle]].&lt;br /&gt;
* [[Русские_термины|Перевод на русский язык различных англоязычных терминов по программированию и из смежных областей]].&lt;br /&gt;
* [[:Category:Толковый_словарь|Толковый словарь компьютерного слэнга]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[Дополнительный материал.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''!''' Чтобы быстрее найти необходимый материал, воспользуйтесь строкой поиска в левой колонке страницы.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Вы можете принять участие в подготовке материалов для сайта на нашем форуме в [http://forum.shelek.ru/index.php/board,114.0.html разделе ЧАВО].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Портал]]&lt;/div&gt;</summary>
		<author><name>RXL</name></author>	</entry>

	<entry>
		<id>https://wiki.shelek.ru/index.php?title=%D0%97%D0%B0%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D0%B0%D1%8F_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0&amp;diff=1500</id>
		<title>Заглавная страница</title>
		<link rel="alternate" type="text/html" href="https://wiki.shelek.ru/index.php?title=%D0%97%D0%B0%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D0%B0%D1%8F_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0&amp;diff=1500"/>
				<updated>2013-02-08T14:01:32Z</updated>
		
		<summary type="html">&lt;p&gt;RXL: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
=Википедия Клуба программистов &amp;quot;Весельчак У&amp;quot;=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Разделы==&lt;br /&gt;
&lt;br /&gt;
===Основной материал.===&lt;br /&gt;
* [[FAQ:Содержание|Ответы на часто задаваемые вопросы о программировании]]. Составлено по темам [[Форум программистов|нашего форума]].&lt;br /&gt;
* [[FAQ:Oracle|Ответы на часто задаваемые вопросы по администрированию Oracle]].&lt;br /&gt;
* [[Русские_термины|Перевод на русский язык различных англоязычных терминов по программированию и из смежных областей]].&lt;br /&gt;
* [[Толковый_словарь|Толковый словарь компьютерного слэнга]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[Дополнительный материал.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''!''' Чтобы быстрее найти необходимый материал, воспользуйтесь строкой поиска в левой колонке страницы.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Вы можете принять участие в подготовке материалов для сайта на нашем форуме в [http://forum.shelek.ru/index.php/board,114.0.html разделе ЧАВО].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Портал]]&lt;/div&gt;</summary>
		<author><name>RXL</name></author>	</entry>

	<entry>
		<id>https://wiki.shelek.ru/index.php?title=%D0%97%D0%B0%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D0%B0%D1%8F_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0&amp;diff=1499</id>
		<title>Заглавная страница</title>
		<link rel="alternate" type="text/html" href="https://wiki.shelek.ru/index.php?title=%D0%97%D0%B0%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D0%B0%D1%8F_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0&amp;diff=1499"/>
				<updated>2013-02-08T14:01:01Z</updated>
		
		<summary type="html">&lt;p&gt;RXL: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
=Википедия Клуба программистов &amp;quot;Весельчак У&amp;quot;=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Разделы==&lt;br /&gt;
&lt;br /&gt;
===Основной материал.===&lt;br /&gt;
* [[FAQ:Содержание|Ответы на часто задаваемые вопросы о программировании]]. Составлено по темам [[Форум программистов|нашего форума]].&lt;br /&gt;
* [[FAQ:Oracle|Ответы на часто задаваемые вопросы по администрированию Oracle]].&lt;br /&gt;
* [[Русские_термины|Перевод на русский язык различных англоязычных терминов по программированию и из смежных областей]].&lt;br /&gt;
* [[Category:Толковый_словарь|Толковый словарь компьютерного слэнга]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[Дополнительный материал.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''!''' Чтобы быстрее найти необходимый материал, воспользуйтесь строкой поиска в левой колонке страницы.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Вы можете принять участие в подготовке материалов для сайта на нашем форуме в [http://forum.shelek.ru/index.php/board,114.0.html разделе ЧАВО].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Портал]]&lt;/div&gt;</summary>
		<author><name>RXL</name></author>	</entry>

	<entry>
		<id>https://wiki.shelek.ru/index.php?title=%D0%97%D0%B0%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D0%B0%D1%8F_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0&amp;diff=1498</id>
		<title>Заглавная страница</title>
		<link rel="alternate" type="text/html" href="https://wiki.shelek.ru/index.php?title=%D0%97%D0%B0%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D0%B0%D1%8F_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0&amp;diff=1498"/>
				<updated>2013-02-08T14:00:34Z</updated>
		
		<summary type="html">&lt;p&gt;RXL: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
=Википедия Клуба программистов &amp;quot;Весельчак У&amp;quot;=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Разделы==&lt;br /&gt;
&lt;br /&gt;
===Основной материал.===&lt;br /&gt;
* [[FAQ:Содержание|Ответы на часто задаваемые вопросы о программировании]]. Составлено по темам [[Форум программистов|нашего форума]].&lt;br /&gt;
* [[FAQ:Oracle|Ответы на часто задаваемые вопросы по администрированию Oracle]].&lt;br /&gt;
* [[Русские_термины|Перевод на русский язык различных англоязычных терминов по программированию и из смежных областей]].&lt;br /&gt;
* [[Категория:Толковый словарь|Толковый словарь компьютерного слэнга]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[Дополнительный материал.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''!''' Чтобы быстрее найти необходимый материал, воспользуйтесь строкой поиска в левой колонке страницы.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Вы можете принять участие в подготовке материалов для сайта на нашем форуме в [http://forum.shelek.ru/index.php/board,114.0.html разделе ЧАВО].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Портал]]&lt;/div&gt;</summary>
		<author><name>RXL</name></author>	</entry>

	<entry>
		<id>https://wiki.shelek.ru/index.php?title=%D0%97%D0%B0%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D0%B0%D1%8F_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0&amp;diff=1497</id>
		<title>Заглавная страница</title>
		<link rel="alternate" type="text/html" href="https://wiki.shelek.ru/index.php?title=%D0%97%D0%B0%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D0%B0%D1%8F_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0&amp;diff=1497"/>
				<updated>2013-02-08T14:00:15Z</updated>
		
		<summary type="html">&lt;p&gt;RXL: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
=Википедия Клуба программистов &amp;quot;Весельчак У&amp;quot;=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Разделы==&lt;br /&gt;
&lt;br /&gt;
===Основной материал.===&lt;br /&gt;
* [[FAQ:Содержание|Ответы на часто задаваемые вопросы о программировании]]. Составлено по темам [[Форум программистов|нашего форума]].&lt;br /&gt;
* [[FAQ:Oracle|Ответы на часто задаваемые вопросы по администрированию Oracle]].&lt;br /&gt;
* [[Русские_термины|Перевод на русский язык различных англоязычных терминов по программированию и из смежных областей]].&lt;br /&gt;
* [[Категория:Толковый_словарь|Толковый словарь компьютерного слэнга]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[Дополнительный материал.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''!''' Чтобы быстрее найти необходимый материал, воспользуйтесь строкой поиска в левой колонке страницы.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Вы можете принять участие в подготовке материалов для сайта на нашем форуме в [http://forum.shelek.ru/index.php/board,114.0.html разделе ЧАВО].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Портал]]&lt;/div&gt;</summary>
		<author><name>RXL</name></author>	</entry>

	<entry>
		<id>https://wiki.shelek.ru/index.php?title=%D0%9A%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D1%8F:%D0%A2%D0%BE%D0%BB%D0%BA%D0%BE%D0%B2%D1%8B%D0%B9_%D1%81%D0%BB%D0%BE%D0%B2%D0%B0%D1%80%D1%8C&amp;diff=1496</id>
		<title>Категория:Толковый словарь</title>
		<link rel="alternate" type="text/html" href="https://wiki.shelek.ru/index.php?title=%D0%9A%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D1%8F:%D0%A2%D0%BE%D0%BB%D0%BA%D0%BE%D0%B2%D1%8B%D0%B9_%D1%81%D0%BB%D0%BE%D0%B2%D0%B0%D1%80%D1%8C&amp;diff=1496"/>
				<updated>2013-02-08T13:59:51Z</updated>
		
		<summary type="html">&lt;p&gt;RXL: Новая страница: «=Толковый словарь компьютерного слэнга=»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Толковый словарь компьютерного слэнга=&lt;/div&gt;</summary>
		<author><name>RXL</name></author>	</entry>

	<entry>
		<id>https://wiki.shelek.ru/index.php?title=CException&amp;diff=1495</id>
		<title>CException</title>
		<link rel="alternate" type="text/html" href="https://wiki.shelek.ru/index.php?title=CException&amp;diff=1495"/>
				<updated>2013-02-08T13:59:31Z</updated>
		
		<summary type="html">&lt;p&gt;RXL: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Чрезвычайно компактное средство для обработки исключений в программах, написанных на языке ANSI C.&lt;br /&gt;
&lt;br /&gt;
Автор: Mark VanderVoord.&lt;br /&gt;
&lt;br /&gt;
[http://throwtheswitch.org/white-papers/cexception-intro.html Домашняя страница проекта.]&lt;br /&gt;
&lt;br /&gt;
C. основывается на стандартных библиотечных функциях языка C setjmp и longjmp. Это простое средство с малыми накладными расходами, что делает его пригодным для применения во встроенных системах.&lt;br /&gt;
&lt;br /&gt;
[http://club.shelek.ru/viewart.php?id=343 Статья &amp;quot;Обработка исключений на языке C&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
[[Category:Толковый словарь]]&lt;/div&gt;</summary>
		<author><name>RXL</name></author>	</entry>

	<entry>
		<id>https://wiki.shelek.ru/index.php?title=%D0%9A%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D1%8F:Redmine&amp;diff=1494</id>
		<title>Категория:Redmine</title>
		<link rel="alternate" type="text/html" href="https://wiki.shelek.ru/index.php?title=%D0%9A%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D1%8F:Redmine&amp;diff=1494"/>
				<updated>2012-01-29T13:40:56Z</updated>
		
		<summary type="html">&lt;p&gt;RXL: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Игра Redmine=&lt;br /&gt;
&lt;br /&gt;
*[http://www.minecraft.net/ Официальный сайт]&lt;br /&gt;
*[http://ru.minecraftwiki.net/%D0%97%D0%B0%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D0%B0%D1%8F_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0 Русский мануал]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Redmine]]&lt;/div&gt;</summary>
		<author><name>RXL</name></author>	</entry>

	<entry>
		<id>https://wiki.shelek.ru/index.php?title=%D0%97%D0%B0%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D0%B0%D1%8F_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0&amp;diff=1493</id>
		<title>Заглавная страница</title>
		<link rel="alternate" type="text/html" href="https://wiki.shelek.ru/index.php?title=%D0%97%D0%B0%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D0%B0%D1%8F_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0&amp;diff=1493"/>
				<updated>2012-01-29T13:38:58Z</updated>
		
		<summary type="html">&lt;p&gt;RXL: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
=Википедия Клуба программистов &amp;quot;Весельчак У&amp;quot;=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Разделы==&lt;br /&gt;
&lt;br /&gt;
===Основной материал.===&lt;br /&gt;
* [[FAQ:Содержание|Ответы на часто задаваемые вопросы о программировании]]. Составлено по темам [[Форум программистов|нашего форума]].&lt;br /&gt;
* [[FAQ:Oracle|Ответы на часто задаваемые вопросы по администрированию Oracle]].&lt;br /&gt;
* [[Русские_термины|Перевод на русский язык различных англоязычных терминов по программированию и из смежных областей]].&lt;br /&gt;
* [[Толковый_словарь|Толковый словарь компьютерного слэнга]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[Дополнительный материал.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''!''' Чтобы быстрее найти необходимый материал, воспользуйтесь строкой поиска в левой колонке страницы.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Вы можете принять участие в подготовке материалов для сайта на нашем форуме в [http://forum.shelek.ru/index.php/board,114.0.html разделе ЧАВО].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Портал]]&lt;/div&gt;</summary>
		<author><name>RXL</name></author>	</entry>

	<entry>
		<id>https://wiki.shelek.ru/index.php?title=%D0%94%D0%BE%D0%BF%D0%BE%D0%BB%D0%BD%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D0%BC%D0%B0%D1%82%D0%B5%D1%80%D0%B8%D0%B0%D0%BB.&amp;diff=1492</id>
		<title>Дополнительный материал.</title>
		<link rel="alternate" type="text/html" href="https://wiki.shelek.ru/index.php?title=%D0%94%D0%BE%D0%BF%D0%BE%D0%BB%D0%BD%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D0%BC%D0%B0%D1%82%D0%B5%D1%80%D0%B8%D0%B0%D0%BB.&amp;diff=1492"/>
				<updated>2012-01-29T13:38:52Z</updated>
		
		<summary type="html">&lt;p&gt;RXL: Новая страница: «=Дополнительный материал=  * Правила английского языка. * [[Глобальная ав...»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Дополнительный материал=&lt;br /&gt;
&lt;br /&gt;
* [[Английский язык|Правила английского языка]].&lt;br /&gt;
* [[Глобальная авантюра|Глобальная авантюра]]. Материалы о мировом экономическом кризисе.&lt;br /&gt;
* [[:Category:RC_Heli|Микровертолеты]]. Подборка материала для новичков и не только.&lt;br /&gt;
* [[:Category:Redmine|Игра Redmine]]. Подборка рецептов.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Портал]]&lt;/div&gt;</summary>
		<author><name>RXL</name></author>	</entry>

	<entry>
		<id>https://wiki.shelek.ru/index.php?title=Redmine:%D0%A1%D1%82%D0%B0%D0%BD%D1%86%D0%B8%D1%8F_%D0%B6%D0%B5%D0%BB%D0%B5%D0%B7%D0%BD%D0%BE%D0%B9_%D0%B4%D0%BE%D1%80%D0%BE%D0%B3%D0%B8&amp;diff=1491</id>
		<title>Redmine:Станция железной дороги</title>
		<link rel="alternate" type="text/html" href="https://wiki.shelek.ru/index.php?title=Redmine:%D0%A1%D1%82%D0%B0%D0%BD%D1%86%D0%B8%D1%8F_%D0%B6%D0%B5%D0%BB%D0%B5%D0%B7%D0%BD%D0%BE%D0%B9_%D0%B4%D0%BE%D1%80%D0%BE%D0%B3%D0%B8&amp;diff=1491"/>
				<updated>2012-01-29T13:36:27Z</updated>
		
		<summary type="html">&lt;p&gt;RXL: /* Схема сборки для вида на север или на запад */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC-right}}&lt;br /&gt;
&lt;br /&gt;
=Станция железной дороги (игра Redmine)=&lt;br /&gt;
&lt;br /&gt;
==Станция электрической дороги с движением в обе стороны==&lt;br /&gt;
&lt;br /&gt;
Чтобы вагонетка гарантировано трогалась с места в нужную сторону, она должна останавливаться и стартовать на блоке наклонных электрических рельс. При этом при старте вагонетка движется всегда в одну сторону — под уклон. Чтобы обеспечить движение в нужную сторону, требуется ручное или автоматическое управление стрелками.&lt;br /&gt;
&lt;br /&gt;
===Схема с автоматическими стрелками===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p style=&amp;quot;clear: both;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;gallery style=&amp;quot;float: right;&amp;quot; perrow=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
  Image:Redmine-Station-screen-control.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
Логическая схема состоит из трех частей:&lt;br /&gt;
#Формирование стартового импульса по нажатию любой кнопки.&lt;br /&gt;
#Переключение стрелки и возврат в исходное положение через две секунды. Производится по нажатию левой кнопки (если смотреть из вагонетки, то правой).&lt;br /&gt;
#Переключение стрелки при проходе вагонетки по нажимным рельсам.&lt;br /&gt;
&lt;br /&gt;
При прохождении стрелок и подъемов вагонетка быстро тормозится. По этому использовано несколько разгонных участков. Со станции вагонетка уходит с максимальной скоростью. Схема подходит не только для пассажирских, но и для пустых вагонеток, и для вагонеток с сундуками.&lt;br /&gt;
&lt;br /&gt;
Направление движения выбирается нажатием на одну из двух кнопок. При этом вагонетка сразу начинает движение.&lt;br /&gt;
&amp;lt;p style=&amp;quot;clear: both;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;gallery style=&amp;quot;float: right;&amp;quot; perrow=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
  Image:Redmine-Station-legend.png|Легенда&lt;br /&gt;
  Image:Redmine-Station-1.png|Уровень 1&lt;br /&gt;
  Image:Redmine-Station-2.png|Уровень 2&lt;br /&gt;
  Image:Redmine-Station-3.png|Уровень 3&lt;br /&gt;
  Image:Redmine-Station-4.png|Уровень 4&lt;br /&gt;
  Image:Redmine-Station-5.png|Уровень 5&lt;br /&gt;
  Image:Redmine-Station-6.png|Уровень 6&lt;br /&gt;
  Image:Redmine-Station-7.png|Уровень 7&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
====Схема сборки для вида на север или на запад====&lt;br /&gt;
&lt;br /&gt;
Список необходимых ресурсов:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;2&amp;quot; style=&amp;quot;border: 1px solid black; border-collapse: collapse;&amp;quot;&lt;br /&gt;
!Тип блока&lt;br /&gt;
!Количество&lt;br /&gt;
|-&lt;br /&gt;
|[http://ru.minecraftwiki.net/%D0%9A%D0%BD%D0%BE%D0%BF%D0%BA%D0%B0 Кнопка]&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |2&lt;br /&gt;
|-&lt;br /&gt;
|[http://ru.minecraftwiki.net/%D0%9A%D1%80%D0%B0%D1%81%D0%BD%D0%B0%D1%8F_%D0%BF%D1%8B%D0%BB%D1%8C Красная пыль]&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |45&lt;br /&gt;
|-&lt;br /&gt;
|[http://ru.minecraftwiki.net/%D0%9A%D1%80%D0%B0%D1%81%D0%BD%D1%8B%D0%B9_%D0%BA%D0%B0%D0%BC%D0%B5%D0%BD%D1%8C_(%D1%84%D0%B0%D0%BA%D0%B5%D0%BB) Красный факел]&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |16&lt;br /&gt;
|-&lt;br /&gt;
|[http://ru.minecraftwiki.net/%D0%9B%D0%B5%D1%81%D1%82%D0%BD%D0%B8%D1%86%D0%B0 Лестница]&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |3&lt;br /&gt;
|-&lt;br /&gt;
|[http://ru.minecraftwiki.net/%D0%9B%D1%8E%D0%BA Люк]&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |1&lt;br /&gt;
|-&lt;br /&gt;
|[http://ru.minecraftwiki.net/%D0%9D%D0%B0%D0%B6%D0%B8%D0%BC%D0%BD%D1%8B%D0%B5_%D1%80%D0%B5%D0%BB%D1%8C%D1%81%D1%8B Нажимные рельсы]&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |1&lt;br /&gt;
|-&lt;br /&gt;
|[http://ru.minecraftwiki.net/%D0%9F%D0%BE%D0%B2%D1%82%D0%BE%D1%80%D0%B8%D1%82%D0%B5%D0%BB%D1%8C Повторитель (репитер)]&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |5&lt;br /&gt;
|-&lt;br /&gt;
|[http://ru.minecraftwiki.net/%D0%A0%D0%B5%D0%BB%D1%8C%D1%81%D1%8B Рельсы]&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |22&lt;br /&gt;
|-&lt;br /&gt;
|Твердый блок (например, [http://ru.minecraftwiki.net/%D0%91%D1%83%D0%BB%D1%8B%D0%B6%D0%BD%D0%B8%D0%BA булыжник])&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |1193&lt;br /&gt;
|-&lt;br /&gt;
|Твердый блок другого цвета (например, [http://ru.minecraftwiki.net/%D0%A8%D0%B5%D1%80%D1%81%D1%82%D1%8C шерсть])&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |3&lt;br /&gt;
|-&lt;br /&gt;
|[http://ru.minecraftwiki.net/%D0%AD%D0%BB%D0%B5%D0%BA%D1%82%D1%80%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B5_%D1%80%D0%B5%D0%BB%D1%8C%D1%81%D1%8B Электрические рельсы]&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |6&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Лестницу и люк можно не делать, но так удобнее налаживать, ремонтировать и изменять схему. Также надо поставить факелы по своему усмотрению. Между кнопками рекомендуется установить табличку с указанием направлений и названий станций.&lt;br /&gt;
&amp;lt;p style=&amp;quot;clear: both;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;gallery style=&amp;quot;float: right;&amp;quot; perrow=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
  Image:Redmine-Station-2a.png|Уровень 2&lt;br /&gt;
  Image:Redmine-Station-3a.png|Уровень 3&lt;br /&gt;
  Image:Redmine-Station-5a.png|Уровень 5&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Схема сборки для вида на юг или на восток====&lt;br /&gt;
&lt;br /&gt;
Данный вариант отличается уровнями 2, 3 и 5. Изменения помечены штриховкой. Железнодорожные пути сделаны зеркально относительно оси ветки железной дороги. Различия связаны с особенностями работы железной дороги в Redmine и в частности, с особенностью управления стрелками.&lt;br /&gt;
&amp;lt;p style=&amp;quot;clear: both;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;gallery style=&amp;quot;float: right;&amp;quot; perrow=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
  Image:Redmine-Station-screen-rails-1.png&lt;br /&gt;
  Image:Redmine-Station-screen-rails-2.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
Рельсы укладываются вот так (показан вариант север/запад):&lt;br /&gt;
&amp;lt;p style=&amp;quot;clear: both;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Redmine]]&lt;/div&gt;</summary>
		<author><name>RXL</name></author>	</entry>

	<entry>
		<id>https://wiki.shelek.ru/index.php?title=Redmine:%D0%A1%D1%82%D0%B0%D0%BD%D1%86%D0%B8%D1%8F_%D0%B6%D0%B5%D0%BB%D0%B5%D0%B7%D0%BD%D0%BE%D0%B9_%D0%B4%D0%BE%D1%80%D0%BE%D0%B3%D0%B8&amp;diff=1490</id>
		<title>Redmine:Станция железной дороги</title>
		<link rel="alternate" type="text/html" href="https://wiki.shelek.ru/index.php?title=Redmine:%D0%A1%D1%82%D0%B0%D0%BD%D1%86%D0%B8%D1%8F_%D0%B6%D0%B5%D0%BB%D0%B5%D0%B7%D0%BD%D0%BE%D0%B9_%D0%B4%D0%BE%D1%80%D0%BE%D0%B3%D0%B8&amp;diff=1490"/>
				<updated>2012-01-29T12:24:00Z</updated>
		
		<summary type="html">&lt;p&gt;RXL: /* Схема с автоматическими стрелками */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC-right}}&lt;br /&gt;
&lt;br /&gt;
=Станция железной дороги (игра Redmine)=&lt;br /&gt;
&lt;br /&gt;
==Станция электрической дороги с движением в обе стороны==&lt;br /&gt;
&lt;br /&gt;
Чтобы вагонетка гарантировано трогалась с места в нужную сторону, она должна останавливаться и стартовать на блоке наклонных электрических рельс. При этом при старте вагонетка движется всегда в одну сторону — под уклон. Чтобы обеспечить движение в нужную сторону, требуется ручное или автоматическое управление стрелками.&lt;br /&gt;
&lt;br /&gt;
===Схема с автоматическими стрелками===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p style=&amp;quot;clear: both;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;gallery style=&amp;quot;float: right;&amp;quot; perrow=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
  Image:Redmine-Station-screen-control.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
Логическая схема состоит из трех частей:&lt;br /&gt;
#Формирование стартового импульса по нажатию любой кнопки.&lt;br /&gt;
#Переключение стрелки и возврат в исходное положение через две секунды. Производится по нажатию левой кнопки (если смотреть из вагонетки, то правой).&lt;br /&gt;
#Переключение стрелки при проходе вагонетки по нажимным рельсам.&lt;br /&gt;
&lt;br /&gt;
При прохождении стрелок и подъемов вагонетка быстро тормозится. По этому использовано несколько разгонных участков. Со станции вагонетка уходит с максимальной скоростью. Схема подходит не только для пассажирских, но и для пустых вагонеток, и для вагонеток с сундуками.&lt;br /&gt;
&lt;br /&gt;
Направление движения выбирается нажатием на одну из двух кнопок. При этом вагонетка сразу начинает движение.&lt;br /&gt;
&amp;lt;p style=&amp;quot;clear: both;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;gallery style=&amp;quot;float: right;&amp;quot; perrow=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
  Image:Redmine-Station-legend.png|Легенда&lt;br /&gt;
  Image:Redmine-Station-1.png|Уровень 1&lt;br /&gt;
  Image:Redmine-Station-2.png|Уровень 2&lt;br /&gt;
  Image:Redmine-Station-3.png|Уровень 3&lt;br /&gt;
  Image:Redmine-Station-4.png|Уровень 4&lt;br /&gt;
  Image:Redmine-Station-5.png|Уровень 5&lt;br /&gt;
  Image:Redmine-Station-6.png|Уровень 6&lt;br /&gt;
  Image:Redmine-Station-7.png|Уровень 7&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
====Схема сборки для вида на север или на запад====&lt;br /&gt;
&lt;br /&gt;
Список необходимых ресурсов:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;2&amp;quot; style=&amp;quot;border: 1px solid black; border-collapse: collapse;&amp;quot;&lt;br /&gt;
!Тип блока&lt;br /&gt;
!Количество&lt;br /&gt;
|-&lt;br /&gt;
|Кнопка || align=&amp;quot;center&amp;quot; |2&lt;br /&gt;
|-&lt;br /&gt;
|Красная пыль || align=&amp;quot;center&amp;quot; |45&lt;br /&gt;
|-&lt;br /&gt;
|Красный факел || align=&amp;quot;center&amp;quot; |16&lt;br /&gt;
|-&lt;br /&gt;
|Лестница || align=&amp;quot;center&amp;quot; |3&lt;br /&gt;
|-&lt;br /&gt;
|Люк || align=&amp;quot;center&amp;quot; |1&lt;br /&gt;
|-&lt;br /&gt;
|Нажимные рельсы || align=&amp;quot;center&amp;quot; |1&lt;br /&gt;
|-&lt;br /&gt;
|Повторитель (репитер) || align=&amp;quot;center&amp;quot; |5&lt;br /&gt;
|-&lt;br /&gt;
|Рельсы || align=&amp;quot;center&amp;quot; |22&lt;br /&gt;
|-&lt;br /&gt;
|Твердый блок || align=&amp;quot;center&amp;quot; |1193&lt;br /&gt;
|-&lt;br /&gt;
|Твердый блок другого цвета || align=&amp;quot;center&amp;quot; |3&lt;br /&gt;
|-&lt;br /&gt;
|Электрические рельсы || align=&amp;quot;center&amp;quot; |6&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Лестницу и люк можно не делать, но так удобнее налаживать, ремонтировать и изменять схему. Также надо поставить факелы по своему усмотрению. Между кнопками рекомендуется установить табличку с указанием направлений и названий станций.&lt;br /&gt;
&amp;lt;p style=&amp;quot;clear: both;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;gallery style=&amp;quot;float: right;&amp;quot; perrow=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
  Image:Redmine-Station-2a.png|Уровень 2&lt;br /&gt;
  Image:Redmine-Station-3a.png|Уровень 3&lt;br /&gt;
  Image:Redmine-Station-5a.png|Уровень 5&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
====Схема сборки для вида на юг или на восток====&lt;br /&gt;
&lt;br /&gt;
Данный вариант отличается уровнями 2, 3 и 5. Изменения помечены штриховкой. Железнодорожные пути сделаны зеркально относительно оси ветки железной дороги. Различия связаны с особенностями работы железной дороги в Redmine и в частности, с особенностью управления стрелками.&lt;br /&gt;
&amp;lt;p style=&amp;quot;clear: both;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;gallery style=&amp;quot;float: right;&amp;quot; perrow=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
  Image:Redmine-Station-screen-rails-1.png&lt;br /&gt;
  Image:Redmine-Station-screen-rails-2.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
Рельсы укладываются вот так (показан вариант север/запад):&lt;br /&gt;
&amp;lt;p style=&amp;quot;clear: both;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Redmine]]&lt;/div&gt;</summary>
		<author><name>RXL</name></author>	</entry>

	<entry>
		<id>https://wiki.shelek.ru/index.php?title=Redmine:%D0%A1%D1%82%D0%B0%D0%BD%D1%86%D0%B8%D1%8F_%D0%B6%D0%B5%D0%BB%D0%B5%D0%B7%D0%BD%D0%BE%D0%B9_%D0%B4%D0%BE%D1%80%D0%BE%D0%B3%D0%B8&amp;diff=1489</id>
		<title>Redmine:Станция железной дороги</title>
		<link rel="alternate" type="text/html" href="https://wiki.shelek.ru/index.php?title=Redmine:%D0%A1%D1%82%D0%B0%D0%BD%D1%86%D0%B8%D1%8F_%D0%B6%D0%B5%D0%BB%D0%B5%D0%B7%D0%BD%D0%BE%D0%B9_%D0%B4%D0%BE%D1%80%D0%BE%D0%B3%D0%B8&amp;diff=1489"/>
				<updated>2012-01-29T11:53:25Z</updated>
		
		<summary type="html">&lt;p&gt;RXL: /* Схема с автоматическими стрелками */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC-right}}&lt;br /&gt;
&lt;br /&gt;
=Станция железной дороги (игра Redmine)=&lt;br /&gt;
&lt;br /&gt;
==Станция электрической дороги с движением в обе стороны==&lt;br /&gt;
&lt;br /&gt;
Чтобы вагонетка гарантировано трогалась с места в нужную сторону, она должна останавливаться и стартовать на блоке наклонных электрических рельс. При этом при старте вагонетка движется всегда в одну сторону — под уклон. Чтобы обеспечить движение в нужную сторону, требуется ручное или автоматическое управление стрелками.&lt;br /&gt;
&lt;br /&gt;
===Схема с автоматическими стрелками===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p style=&amp;quot;clear: both;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;gallery style=&amp;quot;float: right;&amp;quot; perrow=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
  Image:Redmine-Station-screen-control.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
Направление движения выбирается нажатием на одну из двух кнопок. При этом вагонетка сразу начинает движение.&lt;br /&gt;
&amp;lt;p style=&amp;quot;clear: both;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;gallery style=&amp;quot;float: right;&amp;quot; perrow=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
  Image:Redmine-Station-legend.png|Легенда&lt;br /&gt;
  Image:Redmine-Station-1.png|Уровень 1&lt;br /&gt;
  Image:Redmine-Station-2.png|Уровень 2&lt;br /&gt;
  Image:Redmine-Station-3.png|Уровень 3&lt;br /&gt;
  Image:Redmine-Station-4.png|Уровень 4&lt;br /&gt;
  Image:Redmine-Station-5.png|Уровень 5&lt;br /&gt;
  Image:Redmine-Station-6.png|Уровень 6&lt;br /&gt;
  Image:Redmine-Station-7.png|Уровень 7&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
Схема сборки для вида на север или на запад:&lt;br /&gt;
&amp;lt;p style=&amp;quot;clear: both;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;gallery style=&amp;quot;float: right;&amp;quot; perrow=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
  Image:Redmine-Station-2a.png|Уровень 2&lt;br /&gt;
  Image:Redmine-Station-3a.png|Уровень 3&lt;br /&gt;
  Image:Redmine-Station-5a.png|Уровень 5&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
Схема сборки для вида на юг или на восток (отличается уровнями 2, 3 и 5):&lt;br /&gt;
&lt;br /&gt;
Изменения помечены штриховкой. Железнодорожные пути положены зеркально относительно оси ветки железной дороги. Различия связаны с особенностями работы железной дороги в Redmine и в частности, с особенностью управления стрелками.&lt;br /&gt;
&amp;lt;p style=&amp;quot;clear: both;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;gallery style=&amp;quot;float: right;&amp;quot; perrow=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
  Image:Redmine-Station-screen-rails-1.png&lt;br /&gt;
  Image:Redmine-Station-screen-rails-2.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
Рельсы укладываются вот так (показан вариант север/запад):&lt;br /&gt;
&amp;lt;p style=&amp;quot;clear: both;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Логическая схема состоит из трех частей:&lt;br /&gt;
#Формирование стартового импульса по нажатию любой кнопки.&lt;br /&gt;
#Переключение стрелки и возврат в исходное положение через две секунды. Производится по нажатию левой кнопки (если смотреть из вагонетки, то правой).&lt;br /&gt;
#Переключение стрелки при проходе вагонетки по нажимным рельсам.&lt;br /&gt;
&lt;br /&gt;
При прохождении стрелок и подъемов вагонетка быстро тормозится. По этому использовано несколько разгонных участков. Со станции вагонетка уходит с максимальной скоростью. Схема подходит не только для пассажирских, но и для пустых вагонеток, и для вагонеток с сундуками.&lt;br /&gt;
&lt;br /&gt;
[[Category:Redmine]]&lt;/div&gt;</summary>
		<author><name>RXL</name></author>	</entry>

	<entry>
		<id>https://wiki.shelek.ru/index.php?title=Redmine:%D0%A1%D1%82%D0%B0%D0%BD%D1%86%D0%B8%D1%8F_%D0%B6%D0%B5%D0%BB%D0%B5%D0%B7%D0%BD%D0%BE%D0%B9_%D0%B4%D0%BE%D1%80%D0%BE%D0%B3%D0%B8&amp;diff=1488</id>
		<title>Redmine:Станция железной дороги</title>
		<link rel="alternate" type="text/html" href="https://wiki.shelek.ru/index.php?title=Redmine:%D0%A1%D1%82%D0%B0%D0%BD%D1%86%D0%B8%D1%8F_%D0%B6%D0%B5%D0%BB%D0%B5%D0%B7%D0%BD%D0%BE%D0%B9_%D0%B4%D0%BE%D1%80%D0%BE%D0%B3%D0%B8&amp;diff=1488"/>
				<updated>2012-01-29T11:47:04Z</updated>
		
		<summary type="html">&lt;p&gt;RXL: /* Схема с автоматическими стрелками */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC-right}}&lt;br /&gt;
&lt;br /&gt;
=Станция железной дороги (игра Redmine)=&lt;br /&gt;
&lt;br /&gt;
==Станция электрической дороги с движением в обе стороны==&lt;br /&gt;
&lt;br /&gt;
Чтобы вагонетка гарантировано трогалась с места в нужную сторону, она должна останавливаться и стартовать на блоке наклонных электрических рельс. При этом при старте вагонетка движется всегда в одну сторону — под уклон. Чтобы обеспечить движение в нужную сторону, требуется ручное или автоматическое управление стрелками.&lt;br /&gt;
&lt;br /&gt;
===Схема с автоматическими стрелками===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p style=&amp;quot;clear: both;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;gallery style=&amp;quot;float: right;&amp;quot; perrow=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
  Image:Redmine-Station-screen-control.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
Направление движения выбирается нажатием на одну из двух кнопок. При этом вагонетка сразу начинает движение.&lt;br /&gt;
&amp;lt;p style=&amp;quot;clear: both;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;gallery style=&amp;quot;float: right;&amp;quot; perrow=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
  Image:Redmine-Station-legend.png|Легенда&lt;br /&gt;
  Image:Redmine-Station-1.png|Уровень 1&lt;br /&gt;
  Image:Redmine-Station-2.png|Уровень 2&lt;br /&gt;
  Image:Redmine-Station-3.png|Уровень 3&lt;br /&gt;
  Image:Redmine-Station-4.png|Уровень 4&lt;br /&gt;
  Image:Redmine-Station-5.png|Уровень 5&lt;br /&gt;
  Image:Redmine-Station-6.png|Уровень 6&lt;br /&gt;
  Image:Redmine-Station-7.png|Уровень 7&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
Схема сборки для вида на север или на запад:&lt;br /&gt;
&amp;lt;p style=&amp;quot;clear: both;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;gallery style=&amp;quot;float: right;&amp;quot; perrow=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
  Image:Redmine-Station-2a.png|Уровень 2&lt;br /&gt;
  Image:Redmine-Station-3a.png|Уровень 3&lt;br /&gt;
  Image:Redmine-Station-5a.png|Уровень 5&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
Схема сборки для вида на юг или на восток (отличается уровнями 2, 3 и 5):&lt;br /&gt;
&lt;br /&gt;
Изменения помечены штриховкой. Железнодорожные пути положены зеркально относительно оси ветки железной дороги. Различия связаны с особенностями работы железной дороги в Redmine и в частности, с особенностью управления стрелками.&lt;br /&gt;
&amp;lt;p style=&amp;quot;clear: both;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;gallery style=&amp;quot;float: right;&amp;quot; perrow=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
  Image:Redmine-Station-screen-rails-1.png&lt;br /&gt;
  Image:Redmine-Station-screen-rails-2.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
Рельсы укладываются вот так (показан вариант север/восток):&lt;br /&gt;
&amp;lt;p style=&amp;quot;clear: both;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Логическая схема состоит из трех частей:&lt;br /&gt;
#Формирование стартового импульса по нажатию любой кнопки.&lt;br /&gt;
#Переключение стрелки и возврат в исходное положение через две секунды. Производится по нажатию левой кнопки (если смотреть из вагонетки, то правой).&lt;br /&gt;
#Переключение стрелки при проходе вагонетки по нажимным рельсам.&lt;br /&gt;
&lt;br /&gt;
При прохождении стрелок и подъемов вагонетка быстро тормозится. По этому использовано несколько разгонных участков. Со станции вагонетка уходит с максимальной скоростью. Схема подходит не только для пассажирских, но и для пустых вагонеток, и для вагонеток с сундуками.&lt;br /&gt;
&lt;br /&gt;
[[Category:Redmine]]&lt;/div&gt;</summary>
		<author><name>RXL</name></author>	</entry>

	<entry>
		<id>https://wiki.shelek.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Redmine-Station-7.png&amp;diff=1487</id>
		<title>Файл:Redmine-Station-7.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.shelek.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Redmine-Station-7.png&amp;diff=1487"/>
				<updated>2012-01-29T11:42:12Z</updated>
		
		<summary type="html">&lt;p&gt;RXL: загружена новая версия «Файл:Redmine-Station-7.png»: Исправлены ошибки.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Redmine. Станция электрической железной дороги.&lt;/div&gt;</summary>
		<author><name>RXL</name></author>	</entry>

	<entry>
		<id>https://wiki.shelek.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Redmine-Station-6.png&amp;diff=1486</id>
		<title>Файл:Redmine-Station-6.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.shelek.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Redmine-Station-6.png&amp;diff=1486"/>
				<updated>2012-01-29T11:42:02Z</updated>
		
		<summary type="html">&lt;p&gt;RXL: загружена новая версия «Файл:Redmine-Station-6.png»: Исправлены ошибки.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Redmine. Станция электрической железной дороги.&lt;/div&gt;</summary>
		<author><name>RXL</name></author>	</entry>

	<entry>
		<id>https://wiki.shelek.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Redmine-Station-5.png&amp;diff=1485</id>
		<title>Файл:Redmine-Station-5.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.shelek.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Redmine-Station-5.png&amp;diff=1485"/>
				<updated>2012-01-29T11:41:47Z</updated>
		
		<summary type="html">&lt;p&gt;RXL: загружена новая версия «Файл:Redmine-Station-5.png»: Исправлены ошибки.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Redmine. Станция электрической железной дороги.&lt;/div&gt;</summary>
		<author><name>RXL</name></author>	</entry>

	<entry>
		<id>https://wiki.shelek.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Redmine-Station-4.png&amp;diff=1484</id>
		<title>Файл:Redmine-Station-4.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.shelek.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Redmine-Station-4.png&amp;diff=1484"/>
				<updated>2012-01-29T11:41:34Z</updated>
		
		<summary type="html">&lt;p&gt;RXL: загружена новая версия «Файл:Redmine-Station-4.png»: Исправлены ошибки.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Redmine. Станция электрической железной дороги.&lt;/div&gt;</summary>
		<author><name>RXL</name></author>	</entry>

	<entry>
		<id>https://wiki.shelek.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Redmine-Station-3.png&amp;diff=1483</id>
		<title>Файл:Redmine-Station-3.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.shelek.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Redmine-Station-3.png&amp;diff=1483"/>
				<updated>2012-01-29T11:40:20Z</updated>
		
		<summary type="html">&lt;p&gt;RXL: загружена новая версия «Файл:Redmine-Station-3.png»: Исправлены ошибки.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Redmine. Станция электрической железной дороги.&lt;/div&gt;</summary>
		<author><name>RXL</name></author>	</entry>

	<entry>
		<id>https://wiki.shelek.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Redmine-Station-5a.png&amp;diff=1482</id>
		<title>Файл:Redmine-Station-5a.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.shelek.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Redmine-Station-5a.png&amp;diff=1482"/>
				<updated>2012-01-29T11:39:52Z</updated>
		
		<summary type="html">&lt;p&gt;RXL: Redmine. Станция электрической железной дороги. Вариант для направления схемы юг и восток.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Redmine. Станция электрической железной дороги. Вариант для направления схемы юг и восток.&lt;/div&gt;</summary>
		<author><name>RXL</name></author>	</entry>

	</feed>