рдЕрдореЗрдЬрд╝рди SQS рдкрд░реАрдХреНрд╖рдг

рдиреЗрдЯрд╡рд░реНрдХ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрдореЗрдЬрд╝реЕрди рдХреЗ рдЗрд╕ рд╕рдорд╛рдзрд╛рди рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреА рдХрдИ рд╕рдореАрдХреНрд╖рд╛рдПрдВ рд╣реИрдВ, рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рдХреНрд╖реНрдп рдХрд╛ рдкреАрдЫрд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛, рдореБрдЭреЗ рдХреБрдЫ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдореЗрдВ рджрд┐рд▓рдЪрд╕реНрдкреА рдереА рдЬрд┐рдиреНрд╣реЗрдВ рдЕрдиреНрдп рд╕реНрд░реЛрддреЛрдВ рдореЗрдВ рдирд╣реАрдВ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддреН:
  1. рдкреНрд░рд▓реЗрдЦрди рдХрд╛ рдХрд╣рдирд╛ рд╣реИ рдХрд┐ рдЕрдореЗрдЬрд╝реЕрди рд╕рдВрджреЗрд╢ рдЖрджреЗрд╢ рдХреЛ рд░рдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдпрд╣ рдХрд┐рддрдиреА рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИ?
  2. рд▓реЙрдиреНрдЧ рдкреЛрд▓рд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рд╕рдВрджреЗрд╢ рдХрд┐рддрдиреА рддреЗрдЬреА рд╕реЗ рдкреНрд░рд╛рдкреНрдд рд╣реЛ рд░рд╣рд╛ рд╣реИ?
  3. рдмреИрдЪ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рд╕реНрдкреАрдб рдХрд┐рддрдиреА рдмрдврд╝ рдЬрд╛рддреА рд╣реИ?




рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдмрдпрд╛рди


рдПрд░рд╛рдВрдЧ рдкрд░ рдПрдбрдмреНрд▓реНрдпреВрдПрд╕ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рд╕рдорд░реНрдерд┐рдд рдкреБрд╕реНрддрдХрд╛рд▓рдп рдПрд░реНрдХреНрд▓рд╛рдЙрдб рд╣реИ [1], рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдмрд╕ рд╕реНрдЯрд╛рд░реНрдЯ рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВ рдФрд░ рддрд░реАрдХреЛрдВ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ, рдЬреИрд╕рд╛ рдХрд┐ рдЧрд┐рддреБрдм рдкрд░ рд╕рдВрдХреЗрдд рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдореЗрд░реЗ рд╕рдВрджреЗрд╢реЛрдВ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдлрд╝рдВрдХреНрд╢рди рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрдиреНрди рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╡рд░реНрдг рд╕реЗрдЯ рд╣реЛрдЧрд╛:

random_string(0) -> []; random_string(Length) -> [random_char() | random_string(Length-1)]. random_char() -> random:uniform(95) + 31 . 


рдЧрддрд┐ рдорд╛рдк рдХреЗ рд▓рд┐рдП, рд╣рдо рдЬрд╛рдиреЗ-рдорд╛рдиреЗ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ рдЬреЛ рдЯрд╛рдЗрдорд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ: tc, рд▓реЗрдХрд┐рди рдХреБрдЫ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рд╕рд╛рде:

 test_avg(M, F, A, R, N) when N > 0 -> {Ret, L} = test_loop(M, F, A, R, N, []), Length = length(L), Min = lists:min(L), Max = lists:max(L), Med = lists:nth(round((Length / 2)), lists:sort(L)), Avg = round(lists:foldl(fun(X, Sum) -> X + Sum end, 0, L) / Length), io:format("Range: ~b - ~b mics~n" "Median: ~b mics~n" "Average: ~b mics~n", [Min, Max, Med, Avg]), Ret. test_loop(_M, _F, _A, R, 0, List) -> {R, List}; test_loop(M, F, A, R, N, List) -> {T, Result} = timer:tc(M, F, [R|A]), test_loop(M, F, A, Result, N - 1, [T|List]). 


рдкрд░рд┐рд╡рд░реНрддрди рдкрд░реАрдХреНрд╖рдг рдХреЗ рддрд╣рдд рдлрд╝рдВрдХреНрд╢рди рдХреА рдХреЙрд▓ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВ, рдЗрд╕ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдореИрдВрдиреЗ рдЖрд░ рддрд░реНрдХ рдХреЛ рдЬреЛрдбрд╝рд╛, рдЬреЛ рд╣рдореЗрдВ рдкрд┐рдЫрд▓реА рд╢реБрд░реБрдЖрдд рдореЗрдВ рд▓реМрдЯрд╛рдП рдЧрдП рдореВрд▓реНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдиреЗ рдкрд░ рд╕рдВрджреЗрд╢ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЛ рдорд┐рд▓рд╛рдиреЗ рдФрд░ рдорд┐рд╢реНрд░рдг рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рдЬрд╛рдирдХрд╛рд░реА рдПрдХрддреНрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдПрдХ рдирдВрдмрд░ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдХрд╛ рдХрд╛рд░реНрдп рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛:

 send_random(N, Queue) -> erlcloud_sqs:send_message(Queue, [N + 1 | random_string(6000 + random:uniform(6000))]), N + 1 . 


рдФрд░ рд╕рд╛рдВрдЦреНрдпрд┐рдХреА рд╕рдВрдЧреНрд░рд╣ рдХреЗ рд╕рд╛рде рдЙрд╕рдХреА рдкреБрдХрд╛рд░:

 test_avg(?MODULE, send_random, [QueueName], 31, 20) 


рдпрд╣рд╛рдБ 31 рдкрд╣рд▓реЗ рд╕рдВрджреЗрд╢ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╣реИ, рдЗрд╕ рд╕рдВрдЦреНрдпрд╛ рдХреЛ рд╕рдВрдпреЛрдЧ рд╕реЗ рдирд╣реАрдВ рдЪреБрдирд╛ рдЧрдпрд╛ рд╣реИ, рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ erlang рд╕рдВрдЦреНрдпрд╛рдУрдВ рдФрд░ рддрд╛рд░реЛрдВ рдХреЗ рдЕрдиреБрдХреНрд░рдореЛрдВ рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╕рдВрджреЗрд╢ рдореЗрдВ рдпрд╣ рд╡рд░реНрдг рд╕рдВрдЦреНрдпрд╛ 31 рд╣реЛрдЧреА, рдХрдо рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЛ SQS рдореЗрдВ рдкреНрд░реЗрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдирд┐рд░рдВрддрд░ рд░реЗрдВрдЬ рдкреНрд░рд╛рдкреНрдд рдХреА рдЬрд╛рддреА рд╣реИрдВ рдЫреЛрдЯрд╛ (# x9 | #xA | #xD | [# x20 to # xD7FF] | [# xE000 to #xFFFD] | [# x10000 to # x10FFFF], рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА [2] рдФрд░ рд╡реИрдз рд╕реАрдорд╛ рд╕реЗ рдмрд╛рд╣рд░ рдЬрд╛рдиреЗ рдкрд░ рдЖрдкрдХреЛ рдПрдХ рдЕрдкрд╡рд╛рдж рдорд┐рд▓реЗрдЧрд╛ред рдЗрд╕ рдкреНрд░рдХрд╛рд░, send_random рдлрд╝рдВрдХреНрд╢рди рдЬрдирд░реЗрдЯ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдХрддрд╛рд░ рдХреЗ рдирд╛рдо рдХреЗ рд╕рд╛рде рдХрддрд╛рд░ рдореЗрдВ рдПрдХ рд╕рдВрджреЗрд╢ рднреЗрдЬрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдПрдХ рд╕рдВрдЦреНрдпрд╛ рд╣реЛрддреА рд╣реИ рдЬреЛ рдЗрд╕рдХреА рд╕рдВрдЦреНрдпрд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреА рд╣реИ, рдлрд╝рдВрдХреНрд╢рди рдЕрдЧрд▓реЗ рдирдВрдмрд░ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдЕрдЧрд▓реЗ рдлрд╝рдВрдХреНрд╢рди рдлрд╝рдВрдХреНрд╢рди рджреНрд╡рд╛рд░рд╛ рдЖрдЧреЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред Test_avg рдлрд╝рдВрдХреНрд╢рди рдХреНрд╡реЗрдиреЗрдо рд▓реЗрддрд╛ рд╣реИ, рдЬреЛ send_random рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рджреВрд╕рд░рд╛ рддрд░реНрдХ рдмрди рдЬрд╛рддрд╛ рд╣реИ, рдкрд╣рд▓рд╛ рддрд░реНрдХ рд╕рдВрдЦреНрдпрд╛ рдФрд░ рджреЛрд╣рд░рд╛рд╡ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╣реИред

рдлрд╝рдВрдХреНрд╢рди рдЬреЛ рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдЧрд╛ рдФрд░ рдЙрдирдХреЗ рдЖрджреЗрд╢ рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдЧрд╛ рд╡рд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛:

 checkorder(N, []) -> N; checkorder(N, [H | T]) -> [{body, [M | _]}|_] = H, K = if M > N -> M; true -> io:format("Wrong ~b less than ~b~n", [M, N]), N end, checkorder(K, T). receive_checkorder(LastN, Queue) -> [{messages, List} | _] = erlcloud_sqs:receive_message(Queue), remove_list(Queue, List), checkorder(LastN, List). 


рд╕рдВрджреЗрд╢ рд╣рдЯрд╛рдПрдВ:

 remove_msg(_, []) -> wrong; remove_msg(Q, [{receipt_handle, Handle} | _]) -> erlcloud_sqs:delete_message(Q, Handle); remove_msg(Q, [_ | T]) -> remove_msg(Q, T). remove_list(_, []) -> ok; remove_list(Q, [H | T]) -> remove_msg(Q, H), remove_list(Q, T). 


рд╡рд┐рд▓реЛрдкрди рдХреЗ рд▓рд┐рдП рднреЗрдЬреА рдЧрдИ рд╕реВрдЪреА рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реА рдЕрддрд┐рд░рд┐рдХреНрдд рдЬрд╛рдирдХрд╛рд░реА (рд╕рдВрджреЗрд╢ рдирд┐рдХрд╛рдп рдЗрддреНрдпрд╛рджрд┐) рд╣реИрдВ, рд╣рдЯрд╛рдиреЗ рдХрд╛ рдХрд╛рд░реНрдп рд░рд╕реАрдж_рд╣реИрдВрдбрд▓ рдвреВрдВрдврддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдпрд╛ рдпрджрд┐ рд░рд╕реАрдж рдирд╣реАрдВ рдорд┐рд▓реА рддреЛ рдЧрд▓рдд рд░рд┐рдЯрд░реНрди рджреЗрддрд╛ рд╣реИред

рд╕рдВрджреЗрд╢ рдорд┐рд▓рд╛рдирд╛


рдЖрдЧреЗ рджреЗрдЦрддреЗ рд╣реБрдП, рдореИрдВ рдХрд╣ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдмрд╣реБрдд рдХрдо рд╕рдВрджреЗрд╢реЛрдВ рдХреЗ рд╕рд╛рде рднреА рдорд┐рд╢реНрд░рдг рдХрд╛рдлреА рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реЛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рдорд╕реНрдпрд╛ рдЙрддреНрдкрдиреНрди рд╣реЛ рдЧрдИ рд╣реИ: рдорд┐рд╢реНрд░рдг рдХреА рдбрд┐рдЧреНрд░реА рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдХреЛрдИ рдЕрдЪреНрдЫрд╛ рдорд╛рдирджрдВрдб рдирд╣реАрдВ рдорд┐рд▓рд╛, рдФрд░ рд╕рд╣реА рд╕реНрдерд┐рддрд┐ рдХреЗ рд╕рд╛рде рдЕрдзрд┐рдХрддрдо рдФрд░ рдФрд╕рдд рд╡рд┐рд╕рдВрдЧрддрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЧрдпрд╛ред рдРрд╕реА рдЦрд┐рдбрд╝рдХреА рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рдЬрд╛рдирдирд╛, рд░рд╕реАрдж рдкрд░ рд╕рдВрджреЗрд╢реЛрдВ рдХреЗ рдХреНрд░рдо рдХреЛ рдмрд╣рд╛рд▓ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ, рдЬрдмрдХрд┐, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреА рдЧрддрд┐ рдмрд┐рдЧрдбрд╝рддреА рд╣реИред

рдЗрд╕ рдЕрдВрддрд░ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдХреЗрд╡рд▓ рд╕рдВрджреЗрд╢ рдХреНрд░рдо рдЪреЗрдХрд┐рдВрдЧ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ:

 checkorder(N, []) -> N; checkorder({N, Cnt, Sum, Max}, [H | T]) -> [{body, [M | _]}|_] = H, {N1, Cnt1, Sum1, Max1} = if M < N -> {N, Cnt + 1, Sum + N - M, if Max < N - M -> N - M; true -> Max end }; true -> {M, Cnt, Sum, Max} end, checkorder({N1, Cnt1, Sum1, Max1}, T). 


рд╢реНрд░реГрдВрдЦрд▓рд╛ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдорд╛рд░реЛрд╣ рдХреЗ рд▓рд┐рдП рдХреЙрд▓ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:

 {_, Cnt, Sum, Max} = test_avg(?MODULE, receive_checkorder, [QueueName], {0, 0, 0, 0}, Size) 


рдореБрдЭреЗ рдЙрди рддрддреНрд╡реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдорд┐рд▓рддреА рд╣реИ рдЬреЛ рдмрд╛рдж рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╕реЗ рдЕрдзрд┐рдХ рд╣реЛ рдЧрдП, рдкреНрд░рд╛рдкреНрдд рддрддреНрд╡реЛрдВ рдореЗрдВ рд╕реЗ рд╕рдмрд╕реЗ рдмрдбрд╝реА рдФрд░ рдЕрдзрд┐рдХрддрдо рдСрдлрд╕реЗрдЯ рд╕реЗ рдЙрдирдХреА рджреВрд░реА рдХрд╛ рдпреЛрдЧред рдпрд╣рд╛рдВ рдореЗрд░реЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рдмрд╛рдд рдЕрдзрд┐рдХрддрдо рдкреВрд░реНрд╡рд╛рдЧреНрд░рд╣ рд╣реИ, рдЕрдиреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рд╡рд┐рд╡рд╛рджрд╛рд╕реНрдкрдж рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЧрдгрдирд╛ рдирд╣реАрдВ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдПрдХ рддрддреНрд╡ рдХреЛ рдкрд╣рд▓реЗ рдкрдврд╝рд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рддрддреНрд╡реЛрдВ рдХреЛ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдкреБрдирд░реНрд╡реНрдпрд╡рд╕реНрдерд┐рдд рдорд╛рдирд╛ рдЬрд╛рдПрдЧрд╛)ред рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рд▓рд┐рдП:

рдЖрдХрд╛рд░ (рдкреАрд╕реА)20501001502002503004005006007008009001000
рдЕрдзрд┐рдХрддрдо рдСрдлрд╕реЗрдЯ (рдкреАрд╕реА)1132669365139184155251241218249359227
рдФрд╕рдд рд╡рд┐рд╕реНрдерд╛рдкрди (рдкреАрд╕реА)5.310.523.94325.645.948.465.674,274,278.372.3110.882.8


рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ рдХрддрд╛рд░ рдореЗрдВ рд╕рдВрджреЗрд╢реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╣реИ, рджреВрд╕рд░реА рдЕрдзрд┐рдХрддрдо рдСрдлрд╕реЗрдЯ рд╣реИ, рддреАрд╕рд░реА рдФрд╕рдд рдСрдлрд╝рд╕реЗрдЯ рд╣реИред

рдкрд░рд┐рдгрд╛рдореЛрдВ рдиреЗ рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдпрдЪрдХрд┐рдд рдХрд┐рдпрд╛, рд╕рдВрджреЗрд╢ рдХреЗрд╡рд▓ рдорд┐рд╢реНрд░рдг рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рдореЗрдВ рдмрд╕ рдХреЛрдИ рд╕реАрдорд╛ рдирд╣реАрдВ рд╣реИ, рдЕрд░реНрдерд╛рдд, рд╕рдВрджреЗрд╢реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╡реГрджреНрдзрд┐ рдХреЗ рд╕рд╛рде, рдЖрдкрдХреЛ рджреЗрдЦреА рдЧрдИ рд╡рд┐рдВрдбреЛ рдХрд╛ рдЖрдХрд╛рд░ рдмрдврд╝рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЧреНрд░рд╛рдл рд░реВрдк рдореЗрдВ рднреА рдпрд╣реА:



рд▓рдВрдмрд╛ рдорддрджрд╛рди


рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА рд▓рд┐рдЦрд╛ рд╣реИ, рдЕрдореЗрдЬрд╝реЕрди рдПрд╕рдХреНрдпреВрдПрд╕ рд╕рджрд╕реНрдпрддрд╛ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рд▓рд┐рдП рдЕрдореЗрдЬрд╝реЕрди рдПрд╕рдПрдирдПрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрджрд┐ рдХрдИ рд╣реИрдВрдбрд▓рд░ рдХреЗ рд╕рд╛рде рддреЗрдЬрд╝ рдХрддрд╛рд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рддреЛ рдпрд╣ рдЙрдкрдпреБрдХреНрдд рдирд╣реАрдВ рд╣реИ, рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рд╡рд┐рдзрд┐ рдХреЛ рдЦреАрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рд╣реИ рдЕрдореЗрдЬрди рдиреЗ рд▓рд╛рдВрдЧ рдкреЛрд▓рд┐рдВрдЧ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рд╣реИ, рдЬреЛ рдЖрдкрдХреЛ рд╕рдВрджреЗрд╢ рдХреЗ рдЗрдВрддрдЬрд╛рд░ рдореЗрдВ рдШреВрдордиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдмреАрд╕ рд╕реЗрдХрдВрдб рддрдХ, рдФрд░ рдЪреВрдВрдХрд┐ SQS рдХреЛ рддрдерд╛рдХрдерд┐рдд рддрд░реАрдХреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рджреНрд╡рд╛рд░рд╛ рдЪрд╛рд░реНрдЬ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд╕реЗ рдХрддрд╛рд░ рдХреА рд▓рд╛рдЧрдд рдореЗрдВ рдХрд╛рдлреА рдХрдореА рдЖрдиреА рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдпрд╣рд╛рдБ рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ: рд╕рдВрджреЗрд╢реЛрдВ рдХреА рдПрдХ рдЫреЛрдЯреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд▓рд┐рдП (рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬ рдХреЗ рдЕрдиреБрд╕рд╛рд░), рдХрддрд╛рд░ рд╡рд╛рдкрд╕ рдирд╣реАрдВ рдЖ рд╕рдХрддреА рд╣реИ рдХреБрдЫ рднреА рдирд╣реАрдВред рдпрд╣ рд╡реНрдпрд╡рд╣рд╛рд░ рдЙрди рдХрддрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рдЬрд┐рдирдореЗрдВ рдЖрдкрдХреЛ рдХрд┐рд╕реА рдШрдЯрдирд╛ рдкрд░ рддреБрд░рдВрдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдФрд░ рдЖрдо рддреМрд░ рдкрд░ рдмреЛрд▓рддреЗ рд╣реБрдП, рдпрджрд┐ рдпрд╣ рдЕрдХреНрд╕рд░ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рд▓реЛрдВрдЧ рдкреЛрд▓рд┐рдВрдЧ рдХреЛ рдЗрд╕рд╕реЗ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрд╕рдХреНрдпреВрдПрд╕ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕рдордп рдХреЗ рд╕рд╛рде рдЖрд╡рдзрд┐рдХ рдЪреБрдирд╛рд╡ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред

рд╕рддреНрдпрд╛рдкрди рдХреЗ рд▓рд┐рдП, рд╣рдо рджреЛ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдПрдБ рдмрдирд╛рдПрдВрдЧреЗ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдордп рдкрд░ рд╕рдВрджреЗрд╢ рднреЗрдЬреЗрдЧрд╛, рдФрд░ рджреВрд╕рд░рд╛ рд╣рдореЗрд╢рд╛ рд▓рдВрдмреЗ рдорддрджрд╛рди рдореЗрдВ рд╣реЛрдЧрд╛, рдЬрдмрдХрд┐ рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдФрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдХреНрд╖рдг рдмрд╛рдж рдХреА рддреБрд▓рдирд╛ рдХреЗ рд▓рд┐рдП рд╕рд╣реЗрдЬреЗ рдЬрд╛рдПрдВрдЧреЗред рдЗрд╕ рдореЛрдб рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдХрддрд╛рд░ рдкреИрд░рд╛рдореАрдЯрд░ рдореЗрдВ рд╕рдВрджреЗрд╢ рдкреНрд░рддреАрдХреНрд╖рд╛ рд╕рдордп = 20 рд╕реЗрдХрдВрдб рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред

 send_sleep(L, Queue) -> timer:sleep(random:uniform(10000)), Call = erlang:now(), erlcloud_sqs:send_message(Queue, random_string(6000 + random:uniform(6000))), [Call | L]. 


рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдорд┐рд▓реАрд╕реЗрдХрдВрдб рдХреА рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд▓рд┐рдП рд╕реЛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рдпрд╣ рдкрд▓ рдХреЛ рдпрд╛рдж рдХрд░рддрд╛ рд╣реИ рдФрд░ рдПрдХ рд╕рдВрджреЗрд╢ рднреЗрдЬрддрд╛ рд╣реИ

 remember_moment(L, []) -> L; remember_moment(L, [_ | _]) -> [erlang:now() | L]. receive_polling(L, Queue) -> [{messages, List} | _] = erlcloud_sqs:receive_message(Queue), remove_list(Queue, List), remember_moment(L, List). 


рдпреЗ рджреЛ рдХрд╛рд░реНрдп рдЖрдкрдХреЛ рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдФрд░ рдЙрди рдХреНрд╖рдгреЛрдВ рдХреЛ рдпрд╛рдж рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ рдЬрд┐рди рдкрд░ рдпрд╣ рд╣реБрдЖ рдерд╛ред рдПрдХ рд╕рд╛рде рдЗрди рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╕реНрдкреЙрди рдХреЗ рд╕рд╛рде рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореБрдЭреЗ рджреЛ рд╕реВрдЪрд┐рдпрд╛рдВ рдорд┐рд▓рддреА рд╣реИрдВ, рдЬрд┐рд╕рдХреЗ рдмреАрдЪ рдХрд╛ рдЕрдВрддрд░ рд╕рдВрджреЗрд╢ рдХреЛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕рдордп рджрд┐рдЦрд╛рддрд╛ рд╣реИред рдпрд╣ рдЗрд╕ рддрдереНрдп рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рдирд╣реАрдВ рд░рдЦрддрд╛ рд╣реИ рдХрд┐ рд╕рдВрджреЗрд╢ рдорд┐рд╢реНрд░рд┐рдд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдпрд╣ рдмрд╕ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕рдордп рдХреЛ рдЕрддрд┐рд░рд┐рдХреНрдд рд░реВрдк рд╕реЗ рдмрдврд╝рд╛рдПрдЧрд╛ред

рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХреНрдпрд╛ рд╣реБрдЖ:

рдиреАрдВрдж рдХрд╛ рдЕрдВрддрд░рд╛рд▓10000750050002500
рдиреНрдпреВрдирддрдо рд╕рдордп (рд╕реЗрдХрдВрдб)0.270.280.270.66
рдЕрдзрд┐рдХрддрдо рд╕рдордп (рд╕реЗрдХрдВрдб)10.257.85.365.53
рдФрд╕рдд рд╕рдордп (рд╕реЗрдХрдВрдб)1.871.871.841.88


рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ рднреЗрдЬрдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреА рдЕрдзрд┐рдХрддрдо рджреЗрд░реА рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдореВрд▓реНрдп рд╣реИред рд╡рд╣ рд╣реИ: 10 рд╕реЗрдХрдВрдб, 7.5 рд╕реЗрдХрдВрдб ... рдмрд╛рдХреА рд▓рд╛рдЗрдиреЗрдВ рдПрдХ рд╕рдВрджреЗрд╢ рдХреЗ рд▓рд┐рдП рдиреНрдпреВрдирддрдо, рдЕрдзрд┐рдХрддрдо рдФрд░ рдФрд╕рдд рдкреНрд░рддреАрдХреНрд╖рд╛ рд╕рдордп рд╣реИрдВред

рдЧреНрд░рд╛рдл рд░реВрдк рдореЗрдВ рднреА рдпрд╣реА:



рд╕рднреА рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдФрд╕рдд рд╕рдордп рдПрдХ рд╣реА рдирд┐рдХрд▓рд╛, рдпрд╣ рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХрд▓ рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдХреЗ рдмреАрдЪ рдФрд╕рдд рджреЛ рд╕реЗрдХрдВрдб рдмреАрдд рдЧрдПред рдХрд╛рдлреА рджреЗрд░ рддрдХред рдЗрд╕ рдкрд░реАрдХреНрд╖рдг рдореЗрдВ, рдирдореВрдирд╛ рдХрд╛рдлреА рдЫреЛрдЯрд╛ рдерд╛, 20 рд╕рдВрджреЗрд╢ рдереЗ, рдЗрд╕рд▓рд┐рдП рдиреНрдпреВрдирддрдо-рдЕрдзрд┐рдХрддрдо рдореВрд▓реНрдп рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреА рдирд┐рд░реНрднрд░рддрд╛ рд╕реЗ рдЕрдзрд┐рдХ рднрд╛рдЧреНрдп рдХрд╛ рд╡рд┐рд╖рдп рд╣реИрдВред

рдмреИрдЪ рднреЗрдЬ рд░рд╣рд╛ рд╣реИ


рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рд╕рдВрджреЗрд╢ рднреЗрдЬрддреЗ рд╕рдордп рдХрддрд╛рд░ рдХреЛ "рд╡рд╛рд░реНрдо рдЕрдк" рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рднрд╛рд╡ рдХрд┐рддрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ:

рд░рд┐рдХреЙрд░реНрдб рдХреА рд╕рдВрдЦреНрдпрд╛20501001502002503004005006007008009001000
рдиреНрдпреВрдирддрдо рд╕рдордп (рд╕реЗрдХрдВрдб)0.10.10.10.090.090.090.090.10.090.10.10.090.090.09
рдЕрдзрд┐рдХрддрдо рд╕рдордп (рд╕реЗрдХрдВрдб)0.190.370.410.410.370.380.370.430.390.660.740.480.530.77
рдФрд╕рдд рд╕рдордп (рд╕реЗрдХрдВрдб)0.120.120.120.120.120.120.120.120.120.120.120.120.120.12


рдПрдХ рдЧреНрд░рд╛рдл рдХреЗ рд░реВрдк рдореЗрдВ рд╣реА:



рд╣рдо рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреЛрдИ рд╡рд╛рд░реНрдо-рдЕрдк рдирд╣реАрдВ рджреЗрдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рдд, рдЗрди рдЖрдВрдХрдбрд╝реЛрдВ рдХреА рдорд╛рддреНрд░рд╛ рдкрд░ рдХрддрд╛рд░ рд▓рдЧрднрдЧ рд╕рдорд╛рди рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддреА рд╣реИ, рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рдЕрдзрд┐рдХрддрдо рд╡реГрджреНрдзрд┐ рд╣реЛрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдФрд╕рдд рдФрд░ рдиреНрдпреВрдирддрдо рдЕрдкрдиреЗ рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рдмрдиреЗ рд░рд╣рддреЗ рд╣реИрдВред
рд╡рд┐рд▓реЛрдкрди рдХреЗ рд╕рд╛рде рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдпрд╣реА

рд░рд┐рдХреЙрд░реНрдб рдХреА рд╕рдВрдЦреНрдпрд╛20501001502002503004005006007008009001000
рдиреНрдпреВрдирддрдо рд╕рдордп (рд╕реЗрдХрдВрдб)0.0010.1400.13500.13500000000
рдЕрдзрд┐рдХрддрдо рд╕рдордп (рд╕реЗрдХрдВрдб)0.720.470.650.650.690.510.750.750.760.730.820.790.740.91
рдФрд╕рдд рд╕рдордп (рд╕реЗрдХрдВрдб)0.230.210.210.210.210.210.210.210.210.20.20.20.20.21




рдХреЛрдИ рд╕рдВрддреГрдкреНрддрд┐ рднреА рдирд╣реАрдВ рд╣реИ, рдФрд╕рдд рд▓рдЧрднрдЧ 200ms рд╣реИред рдХрднреА-рдХрднреА рд░реАрдбрд┐рдВрдЧ рддреБрд░рдиреНрдд рд╣реБрдИ (1 рдПрдордПрд╕ рд╕реЗ рдЕрдзрд┐рдХ рддреЗрдЬ), рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рд╣реБрдЖ рдерд╛, рдкреНрд░рд▓реЗрдЦрди рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдПрд╕рдХреНрдпреВрдПрд╕ рд╕рд░реНрд╡рд░ рдРрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЖрдкрдХреЛ рдмрд╕ рдлрд┐рд░ рд╕реЗ рд╕рдВрджреЗрд╢ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдЪрд▓реЛ рд╕реАрдзреЗ рдмреНрд▓реЙрдХ рдФрд░ рдмрд╣реБ-рдереНрд░реЗрдбреЗрдб рдкрд░реАрдХреНрд╖рдг рдкрд░ рдЬрд╛рдПрдВред

рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, erlcloud рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рд╡рд╛рд▓реЗ рдмреИрдЪ рдХреЗ рд▓рд┐рдП рдлрд╝рдВрдХреНрд╢рдВрд╕ рдирд╣реАрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореМрдЬреВрджрд╛ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдРрд╕реЗ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИ; рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рд╡рд╛рд▓реЗ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ, рдЖрдкрдХреЛ рдЕрдиреБрд░реЛрдз рдХреЛ рдирд┐рдореНрди рдореЗрдВ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

 Doc = sqs_xml_request(Config, QueueName, "SendMessageBatch", encode_message_list(Messages, 1)), 


рдФрд░ рдЕрдиреБрд░реЛрдз рдмрдирд╛рдиреЗ рдХрд╛ рдХрд╛рд░реНрдп рдЬреЛрдбрд╝реЗрдВ:

 encode_message_list([], _) -> []; encode_message_list([H | T], N) -> MesssageId = string:concat("SendMessageBatchRequestEntry.", integer_to_list(N)), [{string:concat(MesssageId, ".Id"), integer_to_list(N)}, {string:concat(MesssageId, ".MessageBody"), H} | encode_message_list(T, N + 1)]. 


рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдПрдкреАрдЖрдИ рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рднреА рдареАрдХ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, 2011-10-01 рдкрд░, рдЕрдиреНрдпрдерд╛ рдЕрдореЗрдЬрд╝реЕрди рдЖрдкрдХреЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рдЬрд╡рд╛рдм рдореЗрдВ рдПрдХ рдмреБрд░рд╛ рдЕрдиреБрд░реЛрдз рд╡рд╛рдкрд╕ рдХрд░ рджреЗрдЧрд╛ред

рдкрд░реАрдХреНрд╖рдг рдХрд╛рд░реНрдп рдЕрдиреНрдп рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╕рдорд╛рди рд╣реИрдВ:

 gen_messages(0) -> []; gen_messages(N) -> [random_string(5000 + random:uniform(1000)) | gen_messages(N - 1)]. send_batch(N, Queue) -> erlang:display(erlcloud_sqs:send_message_batch(Queue, gen_messages(10))), N + 1 . 


рдпрд╣рд╛рдВ рд╣рдореЗрдВ рдХреЗрд╡рд▓ рд╕рдВрджреЗрд╢реЛрдВ рдХреА рд▓рдВрдмрд╛рдИ рдмрджрд▓рдиреА рдереА рддрд╛рдХрд┐ рдкреВрд░рд╛ рдкреИрдХреЗрдЬ 64kb рдореЗрдВ рдлрд┐рдЯ рд╣реЛ рдЬрд╛рдП, рдЕрдиреНрдпрдерд╛ рдПрдХ рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдирд┐рдореНрди рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛:

рдзрд╛рдЧреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛01245102050100
рдЕрдзрд┐рдХрддрдо рд╡рд┐рд▓рдВрдм (рд╕реЗрдХрдВрдб)0.45207610.8581.4641.6983.145.27211,79320,215
рдФрд╕рдд рджреЗрд░реА (рд╕реЗрдХрдВрдб)0.1180.480.4360.6520.7841.5243.1789.119,889
рд╕рдВрджреЗрд╢ рд╕рдордп (рд╕реЗрдХрдВрдб)0.1180.0480.0220.0170.0160.0160.0170.0190.02


рдпрд╣рд╛рдБ 0 рдХрд╛ рдорддрд▓рдм 1 рд╕реНрдЯреНрд░реАрдо рдореЗрдВ рдПрдХ-рдПрдХ рдХрд░рдХреЗ рдкрдврд╝рдирд╛ рд╣реИ, рдлрд┐рд░ 1 рдХреЛ 10 рд╕реЗ 1 рд╕реНрдЯреНрд░реАрдо рдореЗрдВ рдкрдврд╝рдирд╛, 10 рдХреЛ 2 рд╕реНрдЯреНрд░реАрдо рдореЗрдВ, 10 рдХреЛ 4 рд╕реНрдЯреНрд░реАрдо рдФрд░ рдЗрддрдиреЗ рдкрд░

рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП:

рдзрд╛рдЧреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛01245102050100
рдЕрдзрд┐рдХрддрдо рд╡рд┐рд▓рдВрдм (рд╕реЗрдХрдВрдб)0.7622.9982.5112.42.6062.7514.94411,65318,517
рдФрд╕рдд рджреЗрд░реА (рд╕реЗрдХрдВрдб)0.2051,2561.5281.5661.5321.873.377782317,786
рд╕рдВрджреЗрд╢ рд╕рдордп (рд╕реЗрдХрдВрдб)0.2050.1260.0770.040.0310.020.0190.0170.019


рдЧреНрд░рд╛рдл рдкрдврд╝рдиреЗ рдФрд░ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдмреИрдВрдбрд╡рд┐рдбреНрде рджрд┐рдЦрд╛ рд░рд╣рд╛ рд╣реИ (рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб рд╕рдВрджреЗрд╢):



рдиреАрд▓рд╛ рд▓рд┐рдЦ тАЛтАЛрд░рд╣рд╛ рд╣реИ, рд▓рд╛рд▓ рдкрдврд╝ рд░рд╣рд╛ рд╣реИред

рдЗрд╕ рдбреЗрдЯрд╛ рд╕реЗ рд╣рдо рдпрд╣ рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдХрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЕрдзрд┐рдХрддрдо рдкреНрд░рд╡рд╛рд╣ 10 рдзрд╛рд░рд╛рдУрдВ рдХреЗ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП - рд▓рдЧрднрдЧ 50, рдзрд╛рд░рд╛рдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдФрд░ рд╡реГрджреНрдзрд┐ рдХреЗ рд╕рд╛рде, рдкреНрд░рддрд┐ рдпреВрдирд┐рдЯ рд╕рдордп рднреЗрдЬреЗ рдЧрдП рд╕рдВрджреЗрд╢реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╡реГрджреНрдзрд┐ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред

рдирд┐рд╖реНрдХрд░реНрд╖


рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдЕрдореЗрдЬрд╝реЕрди рдПрд╕рдХреНрдпреВрдПрд╕ рд╕рдВрджреЗрд╢реЛрдВ рдХреЗ рдХреНрд░рдо рдореЗрдВ рдХрд╛рдлреА рдмрджрд▓рд╛рд╡ рдХрд░рддрд╛ рд╣реИ, рдмрд╣реБрдд рдЕрдЪреНрдЫреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕рдордп рдФрд░ рдереНрд░реВрдкреБрдЯ рдирд╣реАрдВ рд╣реИ, рдЖрдк рдХреЗрд╡рд▓ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдпрддрд╛ рдФрд░ рдПрдХ рдЫреЛрдЯреА (рд╕рдВрджреЗрд╢реЛрдВ рдХреА рдПрдХ рдЫреЛрдЯреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ) рд╢реБрд▓реНрдХ рдХреЗ рд╕рд╛рде рдЗрд╕рдХрд╛ рдореБрдХрд╛рдмрд▓рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣реА рд╣реИ, рдпрджрд┐ рдЧрддрд┐ рдЖрдкрдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИ, рддреЛ рдЗрд╕рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рдХрд┐ рд╕рдВрджреЗрд╢ рдорд┐рд╢реНрд░рд┐рдд рд╣реИрдВ рдФрд░ рдЖрдк рдХрддрд╛рд░ рд╕рд░реНрд╡рд░ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдпрд╛ рдХрд┐рд░рд╛рдП рдкрд░ рдирд╣реАрдВ рд▓реЗрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ - рдпрд╣ рдЖрдкрдХреА рдкрд╕рдВрдж рд╣реИред

рд╕рдВрджрд░реНрдн


  1. рдПрдЯрд▓рдХреНрд▓рд╛рдЙрдб рдСрди рдЬреАрдердм github.com/gleber/erlcloud
  2. www.w3.org/TR/REC-xml/#charsets

Source: https://habr.com/ru/post/In207326/


All Articles