рдпрд╣ рд╕рдм рддрдм рд╢реБрд░реВ рд╣реБрдЖ рдЬрдм рдореИрдВ рд╕рдВрд╕реНрдерд╛рди рдореЗрдВ рдерд╛ рдФрд░ рд╕реНрдирд╛рддрдХ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдореИрдВрдиреЗ C ++ рдореЗрдВ рдХреЛрдб рд▓рд┐рдЦрд╛ рдФрд░ рдкрд░реЗрд╢рд╛рдирд┐рдпреЛрдВ рдХреЛ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рдерд╛ред рд▓реЗрдХрд┐рди рдлрд┐рд░ рдПрдХ рджрд┐рди рдореБрдЭреЗ C # рдореЗрдВ .NET рдХреЗ рд▓рд┐рдП рдХреЛрдб рд▓рд┐рдЦрдирд╛ рдкрдбрд╝рд╛ред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╡рд╣ рдереЛрдбрд╝рд╛ рдереВрдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рдХреБрдЫ рднреА рдирд╣реАрдВ - рд╡рд╣ рд╢рд╛рдорд┐рд▓ рд╣реЛ рдЧрдпрд╛ред рдореИрдВрдиреЗ рд╕реА ++ рд╕реЗ рд▓рд╛рднрдХрд╛рд░реА рдЕрдВрддрд░ рджреЗрдЦрд╛: рд╕реБрд░рдХреНрд╖рд╛, рдХрдареЛрд░рддрд╛, рдЖрджрд┐ред рдореИрдВ рднреА рд╕рдВрдЧреНрд░рд╣ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп LINQ рдХреЛ рдирдЬрд░рдЕрдВрджрд╛рдЬ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ ...
рдореБрджреНрджреЗ рдХрд╛ рдкрд░рд┐рдЪрдп
рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рд▓рд┐рдирдХреНрдпреВ рдХреЗ рд╕рднреА рдЖрдХрд░реНрд╖рдг рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХреА рдЬрдм рдпрд╣ рд╕реА ++ рдкрд░ рд▓реМрдЯрдиреЗ рдХрд╛ рд╕рдордп рдерд╛ред рдЫрд╣ рдорд╣реАрдиреЗ рдХреЗ рдмреНрд░реЗрдХ рдХреЗ рдмрд╛рдж рд╕реА ++ рдореЗрдВ рд▓рд┐рдЦрдирд╛ рдереЛрдбрд╝рд╛ рдЕрд╕рд╛рдорд╛рдиреНрдп рдерд╛ред рдмреАрдорд╛рд░ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реБрдЖ, рдЬрдм рдЕрдЪрд╛рдирдХ рдореБрдЭреЗ рд╡реЗрдХреНрдЯрд░ рдореЗрдВ рддрддреНрд╡реЛрдВ рдХреА рд░рд╛рд╢рд┐ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреА рдкрдбрд╝реА, рддреЛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╡реЗрдХреНрдЯрд░ рдХреЗ рддрддреНрд╡реЛрдВ рдХреЗ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХрд╛ рдпреЛрдЧред C # рдореЗрдВ, рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛:
int sum = candles.Sum(c => c.ClosePrice);
рд▓реЗрдХрд┐рди C ++ рдореЗрдВ рдпрд╣ рд╕рд╛рдордиреЗ рдЖрдпрд╛:
int sum = 0; for(int i = 0; i < candles.size(); i++) sum += candles[i].ClosePrice;
рдФрд░ рдпрджрд┐ рдЖрдк рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрддреЗ рд╣реИрдВ:
int sum = 0; for(auto it = candles.begin(); it != candles.end(); ++it) sum += it->ClosePrice;
Qt рдЪреАрдЬреЛрдВ рдХреЛ рдереЛрдбрд╝рд╛ рдЖрд╕рд╛рди рдмрдирд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдмрд╣реБрдд рдЕрдзрд┐рдХ рдирд╣реАрдВ:
int sum = 0; foreach(Candle candle, candles) sum += candle.ClosePrice;
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдирдпрд╛ C ++ 11 рднрд╛рд╖рд╛ рдорд╛рдирдХ рд╣рдореЗрдВ рд╕рд░рд▓реАрдХрд░рдг рдХрд╛ рд╡рд╛рджрд╛ рдХрд░рддрд╛ рд╣реИ,
рд▓реЗрдХрд┐рди рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2010
рдЕрд▓рд╛рд╕ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ , рд▓реЗрдХрд┐рди
рдХреИрд╕реЗ ... (рдзрдиреНрдпрд╡рд╛рдж
рдбрдорд╛рд╕реНрдХрд╕ ):
int sum = 0; for (Candle candle : vector) sum += candle.ClosePrice;
рдЖрдк рдЬрд▓реНрджреА рд╕реЗ рдЕрдЪреНрдЫреЗ рдХреА рдЖрджрдд рдбрд╛рд▓ рд▓реЗрдВред рдпрд╣ рдкреВрд░реА рдЧрдбрд╝рдмрдбрд╝ рдереАред рдпреЗ рд╕рднреА рд╡рд┐рдХрд▓реНрдк рдореБрдЭреЗ рдкрд╕рдВрдж рдирд╣реАрдВ рдЖрдПред рд╣рдореЗрдВ рдПрдХ-рд▓рд╛рдЗрди рд╕рдорд╛рдзрд╛рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред рдлрд┐рд░ рдореИрдВрдиреЗ рдЧреВрдЧрд▓ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдФрд░ рдкрд╣рд▓реЗ рд▓рд┐рдВрдХ рдкрд░ рдкрд╛рдпрд╛:
http://stackoverflow.com/questions/3221812/sum-of-elements-in-a-stdvectorрдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╕рдорд╛рдзрд╛рдиреЛрдВ рдореЗрдВ рд╕рдмрд╕реЗ рдЫреЛрдЯрд╛:
int sum = std::accumulate(vector.begin(), vector.end(), 0);
рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рдХрд░реЗрдВ рдпрджрд┐ рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рдПрдХ рдХреНрд╖реЗрддреНрд░ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЖрдк рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рдЪрд╛рд▓рд╛рдХ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдХрд┐ рдЬрдм рд╡рд┐рдзрд┐рд╡рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЦреЗрддреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ рд▓реМрдЯрд╛рддрд╛ рд╣реИ ... рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдм рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рд╕рд░рд▓ рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рдХрдард┐рди рдХреЛрдбрд┐рдВрдЧ рдХреА рддрд░рд╣ рдЦреБрд╢рдмреВ рдЖ рд░рд╣реА рд╣реИред
рдХреНрдпрд╛ рдХрд░реЗрдВ?
рдЕрдЧрд▓реЗ 20-30 рдорд┐рдирдЯ рдХреЗ рдЧреЛрдЧреНрд▓рд┐рдВрдЧ рд╕реЗ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐
рдмреВрд╕реНрдЯ рд░реЗрдВрдЬ рдФрд░ рдХреБрдЫ рдЕрдиреНрдп рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡реЗ рд╕рднреА рдРрд╕реЗ рджрд┐рдЦрддреЗ рд╣реИрдВ рдЬреЛ LINQ рдХреА рддрд░рд╣ рджрд┐рдЦрддреЗ рд╣реИрдВред рдЙрд╕реА рдХреНрд╖рдг, рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ рддрд╛рдХрдд рдорд╣рд╕реВрд╕ рдХреА - рдЕрдкрдиреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рд▓рд┐рдЦрдиреЗ рдФрд░ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд╕рд╛рде рдЗрд╕реЗ рдХрд╡рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред
рдореЗрд░реЗ рд▓рд┐рдП рдореБрдЦреНрдп рдХрд╛рд░реНрдп рдереЗ:
- LINQ рдХреЛ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдЬрд┐рддрдирд╛ рд╣реЛ рд╕рдХреЗ рдЙрддрдирд╛ рдЕрдЪреНрдЫрд╛ рдмрдирд╛рдПрдВ
- рд╕рднреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ "рд╕реНрдердЧрд┐рдд" (рдЖрд▓рд╕реА) рдХрд░реЗрдВ
рдпрд╣ рдХреИрд╕реЗ
рдмреВрд▓рд┐рдВрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛
рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрдпрд╛ (рдирд╛рдо
рдмреВрд▓ рдФрд░
рд▓рд┐рдирдХ рд╢рдмреНрдж рдХреЛ рдЬреЛрдбрд╝рддрд╛ рд╣реИ)ред рдЗрд╕реЗ Google рдХреЛрдб рдкрд░ рдкреЛрд╕реНрдЯ рдХрд░реЗрдВ:
http://code.google.com/p/boolinq/ рдФрд░ рдпрд╣рд╛рдБ рд╣реИ рдЬреЛ рдореБрдЭреЗ рдорд┐рд▓рд╛:
int sum = boolinq::from(cnadles).sum([](Candle c){return c.ClosePrice;});
рдмреЗрд╢рдХ, рдпрд╣ LINQ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реИред рд▓реЗрдХрд┐рди, рдпрд╣ рдХреЗрд╡рд▓ C ++ рдореЗрдВ рд▓реИрдореНрдмреНрдбрд╛ рдПрдХреНрд╕рдкреНрд░реЗрд╢рдВрд╕ рдХреЗ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рдХрд╛рд░рдг рд╣реИред рдХреЛрдб рдХреА рдмрд╣реБрдд рд╕рдВрд░рдЪрдирд╛ рд╕рдорд╛рди рд░рд╣рддреА рд╣реИред рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рд░реНрдп рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдП рдЧрдП рд╣реИрдВ:
рдЕрдиреБрдХреНрд░рдо рд░реВрдкрд╛рдВрддрд░рдг:
- рд▓реЗрдирд╛ (int)
- рдЫреЛрдбрд╝реЗрдВ (int)
- рд╕рдорддрд▓ (рд╕реАрдорд╛)
- рдЬрд╣рд╛рдВ (рд▓рдВрдмреЛрджрд░)
- рдЪрдпрди рдХрд░реЗрдВ (рд▓рдВрдмреЛрджрд░)
- рдЙрд▓реНрдЯрд╛ ()
- рдСрд░реНрдбрд░рдмреА ()
- рдСрд░реНрдбрд░рдмреА (рд▓рдВрдмреЛрджрд░)
- рдЧреНрд░реБрдкрдмреА (рд▓реИрдореНрдмреНрдбрд╛)
- рдЕрд▓рдЧ ()
- рдЕрд▓рдЧ (рд▓рдВрдмреЛрджрд░)
- for_each (рд▓реИрдореНрдмреНрдбрд╛)
рдЕрдиреБрдХреНрд░рдо рдПрдЧреНрд░реАрдЧреЗрдЯрд░реНрд╕:
- рд╕рднреА ()
- рд╕рднреА (рд▓рдВрдмреЛрджрд░)
- рдХреЛрдИ рднреА ()
- рдХреЛрдИ рднреА (рд▓рдВрдмреЛрджрд░)
- рдпреЛрдЧ ()
- рдпреЛрдЧ (рд▓рдВрдмреЛрджрд░)
- рдЕрд╡рдЧ ()
- рдПрд╡реАрдЬреА (рд▓рдВрдмрд╛)
- рдорд┐рдирдЯ ()
- рдорд┐рдирдЯ (рд▓рдВрдмреЛрджрд░)
- рдЕрдзрд┐рдХрддрдо ()
- рдЕрдзрд┐рдХрддрдо (рд▓рдВрдмреЛрджрд░)
- рдЧрд┐рдирддреА ()
- рдЧрд┐рдирддреА (рд▓рдВрдмреЛрджрд░)
- рд╕рдореНтАНрдорд┐рд▓рд┐рдд (рдорд╛рди)
- рдПрд▓рд┐рдореЗрдВрдЯ (рдЗрдВрдЯ)
рдирд┐рд░реНрдпрд╛рдд рдЕрдиреБрдХреНрд░рдо:
- рд╕реЗрдЯ ()
- рд╕реВрдЪреА ()
- .Deque ()
- .рд╡реЗрдХреНрдЯрд░ ()
- toContainer <T> ()
рдФрд░ рдХреБрдЫ рдЕрд╕рд╛рдорд╛рдиреНрдп рднреА:
- рдмрд╛рдЗрдЯреНрд╕ ()
- рдмрд╛рдЗрдЯреНрд╕ <рдмрд╛рдЗрдЯрдСрд░реНрдбрд░> ()
- рдЕрдирдмрд╛рдЗрдЯреНрд╕ <T> ()
- рдЕрдирдмрд╛рдЗрдЯреНрд╕ <рдЯреА, рдмрд╛рдЗрдЯрдСрд░реНрдбрд░> ()
- рдмрд┐рдЯреНрд╕ ()
- рдмрд┐рдЯреНрд╕ <BitOrder> ()
- рдмрд┐рдЯреНрд╕ <рдмрд┐рдЯрдСрд░реНрдбрд░, рдмрд╛рдЗрдЯрдСрд░реНрдбрд░> ()
- рдЕрдирдмрд┐рдЯреНрд╕ ()
- рдХрдбрд╝рд┐рдпрд╛рдБ <BitOrder> ()
- <t> ()
- <рдЯреА, рдмрд┐рдЯрдСрд░реНрдбрд░> ()
- рдмрд┐рдЯреНрд╕ <, рдмрд┐рдЯрдСрд░реНрдбрд░, рдмрд╛рдЗрдЯрдСрд░реНрдбрд░> ()
рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ
рдпрд╣рд╛рдБ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╣реИ:
int src[] = {1,2,3,4,5,6,7,8}; auto dst = from(src).where( [](int a){return a%2 == 1;})
рдХрдИ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдореВрд▓ рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рдХрджрдо рд╕реЗ рдХрджрдо рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
1. рдХреЗрд╡рд▓ рд╡рд┐рд╖рдо рдорд╛рди рд╡рд╛рд▓реЗ рддрддреНрд╡реЛрдВ рдХреЛ рдЫреЛрдбрд╝ рджреЗрдВред
2. рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ рдХрд╛ рдорд╛рди 2 рд╕реЗ рдЧреБрдгрд╛ рдХрд░реЗрдВред
3. рд░реЗрдВрдЬ (2,12) рдореЗрдВ рдХреЗрд╡рд▓ рдорд╛рди рд╡рд╛рд▓реЗ рдЖрдЗрдЯрдо рдЫреЛрдбрд╝реЗрдВред
4. рдкрд░рд┐рдгрд╛рдо рдХреЛ
std::vector
рдореЗрдВ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИред
рдпрд╛ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐:
struct Man { std::string name; int age; }; Man src[] = { {"Kevin",14}, {"Anton",18}, {"Agata",17}, {"Terra",20}, {"Layer",15}, }; auto dst = from(src).where( [](const Man & man){return man.age < 18;}) .orderBy([](const Man & man){return man.age;}) .select( [](const Man & man){return man.name;}) .toVector();
dst
рд╡реЗрд░рд┐рдПрдмрд▓ рдХрд╛ рдкреНрд░рдХрд╛рд░
std::vector<std::string>
ред рдкрд░рд┐рдгрд╛рдореА рд╡реЗрдХреНрдЯрд░ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдореВрд▓реНрдп рд╣реЛрдВрдЧреЗ: "рдХреЗрд╡рд┐рди", "рдкрд░рдд", "рдЕрдЧрддрд╛"ред рд╕реНрд░реЛрдд рд╕рд░рдгреА рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдХрд╛рд░реНрдп:
1. рдХреЗрд╡рд▓ 18 рд╡рд░реНрд╖ рд╕реЗ рдХрдо рдЖрдпреБ рдХреЗ рд▓реЛрдЧреЛрдВ рдХреЛ рд╕рд░рдгреА рдореЗрдВ рдЫреЛрдбрд╝ рджреЗрдВред
2. рдмрдврд╝рддреА рдЙрдореНрд░ рдореЗрдВ рд╕рд░рдгреА рдореЗрдВ рддрддреНрд╡реЛрдВ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░реЗрдВред
3. рд╕рд░рдгреА рд╕реЗ рдХреЗрд╡рд▓ рдирд╛рдо рдЪреБрдиреЗрдВред
4. рдкрд░рд┐рдгрд╛рдо рдХреЛ
std::vector
рдореЗрдВ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИред
рдирд┐рд╖реНрдХрд░реНрд╖
рдкрд░рд┐рдгрд╛рдо arrays, рд╡реИрдХреНрдЯрд░ рдФрд░ рдЕрдиреНрдп рдбреЗрдЯрд╛ рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЗ рд▓рд┐рдП рдЖрд╕реНрдердЧрд┐рдд рдкреНрд░рд╢реНрдиреЛрдВ рдХрд╛ рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИред рдлрдВрдХреНрд╢рдВрд╕ рдХреА рдЧрддрд┐ рд▓реВрдкреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓рд┐рдЦреЗ рдЧрдП рд╕рдорд╛рди рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреА рдЧрддрд┐ рд╕реЗ рдиреАрдЪ рдирд╣реАрдВ рд╣реИред рд╡рд╛рдХреНрдп рд░рдЪрдирд╛ LINQ рдХреЗ рдЬрд┐рддрдирд╛ рдХрд░реАрдм рд╣реЛ рд╕рдХреЗред рдореБрдЭреЗ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдбрд┐рдЬрд╛рдЗрди рдХрд░рдиреЗ рдФрд░ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдордп рдмрд┐рддрд╛рдирд╛ рдЕрдЪреНрдЫрд╛ рд▓рдЧрд╛ред рдХреЛрдб рдХреЛ рдкрд░реАрдХреНрд╖рдгреЛрдВ рджреНрд╡рд╛рд░рд╛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╡рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ (рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдХрд┐рддрдиреЗ рдкреНрд░рддрд┐рд╢рдд рд╣реИрдВ, рдЕрдЧрд░ рдХреЛрдИ рдореБрдЭреЗ рдмрддрд╛рддрд╛ рд╣реИ, рддреЛ рдореБрдЭреЗ рдЦреБрд╢реА рд╣реЛрдЧреА)ред рдРрд╕реЗ рдХрд╛рд░реНрдп рд╣реИрдВ рдЬрд┐рдирдХрд╛ LINQ рдореЗрдВ рдХреЛрдИ рдПрдирд╛рд▓реЙрдЧ рдирд╣реАрдВ рд╣реИред
рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдПрдХ рд╣реА рд╣реЗрдбрд░ рдлрд╛рдЗрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд┐рддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдореБрдЭреЗ рдЦреБрд╢реА рд╣реЛрдЧреА рдЕрдЧрд░ рдХрд┐рд╕реА рдХреЛ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЙрдкрдпреЛрдЧреА рд▓рдЧреЗред рдпрджрд┐ рд╕реБрдзрд╛рд░ рдХреЗ рд▓рд┐рдП рд╕реБрдЭрд╛рд╡ рд╣реИрдВ, рддреЛ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдЬреЛрдбрд╝рдирд╛ - рдХреГрдкрдпрд╛ рдмреЛрд▓реЗрдВред рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдШреВрдордиреЗ-рдлрд┐рд░рдиреЗ рдХрд╛ рд╕рдордп рдФрд░ рдЗрдЪреНрдЫрд╛ рд╣реИ - рдЬреБрдбрд╝реЗрдВред рд╣рд░ рдХреЛрдИ Google рдХреЛрдб рдкрд░ рдХреЛрдб рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдЫреЛрдбрд╝ рд╕рдХрддрд╛ рд╣реИред Google рд╕рдореВрд╣реЛрдВ рдкрд░ рдПрдХ рдЪрд░реНрдЪрд╛ рд╕рдореВрд╣ рднреА рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ:
https://groups.google.com/forum/?fromgroups#-forum/boolgq!