Serialization with boost

Boost имеет множество полезных библиотек. И хотя многие возражают против использования его в серъезных коммерческих проектах, но тяжело переоценить удобство использования библиотек boost.

В процессе работы возникла задача сериализации данных некой структуры с последующим сохранением их в файл. ИМХО, для таких задач просто отлично подходит boost::serialization.

Continue reading

Узел камикадзе ( Kamikaze knot )

узел камикадзе

Этот узел  называют узлом камикадзе. Почему? Объясняю: если вам надо спуститься с горы или еще от куда нибуть, а есть только одна вервка и ее надо сохранить. Если привязать любым узлом веревку допустим к дереву – вы спуститесь но веревка сама не отвяжется и вам придется оставить ее. По этому делают узел камикадзе (рекомендуется делать в крайнем случае) на картинке  показано – какую веревку разрезать. Концы узла подрезаются человек спускается, допустим, с горы. При этом узле он должен держать веревку в натяжении (Это очень ВАЖНО!) когда он спуститься то веревку нужно ослабить и подергать, после чего узел расподется и веревка окажется у вас. Преимущество очевидно – вы остались с веревкой, но очень большая опасность в том что если при спуске вы ослабите веревку то узел может развязаться именно по этому его называют узлом камикадзе.

Видео, как его завязывать Continue reading

Clamp variable to interval


#include <iostream>
using namespace std;

float Clamp( float a )
{
 float v = (a<0) ? 0 : (a<1) ? a : 1;
 return v;
}

int main ()
{
 cout<< -3 << "\t" << Clamp(-3) <<endl;
 cout<< 0.5f << "\t" << Clamp(0.5f) <<endl;
 cout<< 3 << "\t" << Clamp(3) <<endl;
}

Output

 -3      0
0.5     0.5
3       1

You can modify function to take interval , or use it as preprocessor directive.

Anonymous Structures

Found on MSDN

A Microsoft C extension allows you to declare a structure variable within another structure without giving it a name. These nested structures are called anonymous structures. C++ does not allow anonymous structures.You can access the members of an anonymous structure as if they were members in the containing structure.

 


// anonymous_structures.c
#include

struct phone
{
int  areacode;
long number;
};

struct person
{
char   name[30];
char   gender;
int    age;
int    weight;
struct phone;    // Anonymous structure; no name needed
} Jim;

int main()
{
Jim.number = 1234567;
printf_s("%d\n", Jim.number);
}