
рддрд╛рдХрд┐ рдХреЛрдИ рдЕрд╕реНрдкрд╖реНрдЯрддрд╛ рди рд╣реЛ, рдореИрдВ рд╕рд╛рд░ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░реВрдВрдЧрд╛ред рдПрдХ рдирдИ рдиреМрдХрд░реА рдХреЗ рд▓рд┐рдП рдЖрд╡реЗрджрди рдХрд░рддреЗ рд╕рдордп, рдЙрдиреНрд╣реЛрдВрдиреЗ рдореБрдЭреЗ рдПрдХ рдкрд░реАрдХреНрд╖рдг рдХрд╛рд░реНрдп рджрд┐рдпрд╛, рдЬрд┐рд╕реЗ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: "рдХрд╕реНрдЯрдо рд╕реНрдЯреЛрд░ рдСрдирд▓рд╛рдЗрди рд╕реНрдЯреЛрд░ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреА рдШрдЯрдирд╛рдУрдВ рдХреЛ рднреВ-рдЖрдХрд╛рд░ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП
рдЧреНрд▓реЛ рдХрд╛ рдПрдХ рдПрдирд╛рд▓реЙрдЧ рд▓рд┐рдЦреЗрдВред" рд╕реАрдзреЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдХреБрдЫ рдШрдЯрдирд╛рдУрдВ рдХреА рдШрдЯрдирд╛ рдХреЗ рд▓рд┐рдП рд╕рд┐рд╕реНрдЯрдо рд▓реЙрдЧ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдФрд░, рдЗрди рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдкреНрд░рджрд░реНрд╢рди (рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ) рдорд╛рдирдЪрд┐рддреНрд░ рдкрд░ рдПрдХ рдмрд┐рдВрджреБ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдЖрдИрдкреА рдкрддреЗ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп: рдкреНрд░рд╕реНрддреБрддрд┐ рдХреЗ рдкреНрд░рдпреЛрдЬрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реБрдЦрдж-рджрд┐рдЦрдиреЗ рд╡рд╛рд▓рд╛ "рдЦрд┐рд▓реМрдирд╛" рдмрдирд╛рдирд╛, рдЬреЛ рд╕рджреНрднрд╛рд╡ рдФрд░ рд╕реМрдВрджрд░реНрдп рд╕реБрдЦ рдХреЗ рдирд┐рд░реНрд╡рд╛рдг рдореЗрдВ рдзрд╛рд░рдХ рдХреЛ рд╡рд┐рд╕рд░реНрдЬрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИред рдореБрдЦреНрдп рд╕реНрдерд┐рддрд┐ рд╡рд┐рдХрд╛рд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдЬрд╛рд╡рд╛ рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХрд┐рдпреЛрдВ рдХреЗ рдвреЗрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдереА, рдЬрд┐рд╕рдХреЗ рдХрд╛рд░рдг рдХрдИ рдирд┐рд░реНрдгрдп рдЕрдкрдирд╛рдП рдЧрдПред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрд╕реЗ рдПрдХ-рдкреГрд╖реНрда рд╕рд╛рдЗрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЧрдпрд╛ред рдФрд░ рдЬрдм рд╕реЗ рдореИрдВ рдЬрд╛рд╡рд╛ рдФрд░ рд╡реЗрдм рд╕реЗ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдкрд░рд┐рдЪрд┐рдд рдерд╛ (рдореИрдВрдиреЗ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ C / C ++ рдореЗрдВ рд▓рд┐рдЦрд╛ рдерд╛), рдореБрдЭреЗ рдмрд╣реБрдд рдХреБрдЫ рд╕реАрдЦрдирд╛ рдерд╛ред рдареАрдХ рд╣реИ, рд╣рдо рдЗрд╕реЗ рдПрдХ рд╕рд╛рде рд╕рдордЭ рд▓реЗрдВрдЧреЗред
рдпрд╣ рд▓реЗрдЦ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд╣реИ рдЬреЛ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ рдФрд░ рд╢реБрд░реБрдЖрддреА рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕рд░рд▓ рдЪреАрдЬреЛрдВ рдХреЛ "рдЪрдмрд╛рдирд╛" рдирд╣реАрдВ рд╣реИ рдЬреЛ рдкреНрд░рд▓реЗрдЦрди рдпрд╛ рд╡рд┐рд╢реЗрд╖ рд▓реЗрдЦреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рд╕рдВрд╕рд╛рдзрди, рд╕реНрд░реЛрдд рдХрд╛ рд▓рд┐рдВрдХ ( рдмреАрдПрд╕рдбреА рд▓рд╛рдЗрд╕реЗрдВрд╕ рдХреЗ рддрд╣рдд рд╡рд┐рддрд░рд┐рдд) рдФрд░ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдХ рд▓реЗрдЦ рдХреЗ рдЕрдВрдд рдореЗрдВ рджрд┐рдП рдЧрдП рд╣реИрдВред
рдФрд░ рд╡реИрд╕реЗ рднреА, рдЙрдкрд░реЛрдХреНрдд рдЪрдордХ рдХреЗ рд╕реНрд░реЛрддреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ? рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╡реЗ рдЙрди рдЖрдВрдХрдбрд╝реЛрдВ рдХреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рдлреА рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдореЛрдЬрд╝рд┐рд▓рд╛ рдиреЗ рд╕рдВрдЪрд╛рд▓рд┐рдд рдХрд┐рдпрд╛ рдерд╛ - рд▓реЙрдиреНрдЪ рдХреЗ рджрд┐рди рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдпрд╛рдж рд░рдЦреЗрдВ, рд╕рд╛рде рд╣реА рдЗрд╕ рддрдереНрдп рдХреЛ рднреА рд╕реНрд╡реАрдХрд╛рд░ рдХрд░реЗрдВ рдХрд┐ рдЙрдирдХрд╛ рд▓реЙрдЧрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рд╡рд┐рдХреЗрдВрджреНрд░реАрдХреГрдд рд╣реИред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб рд▓рдЧрднрдЧ 100 рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпрд╛рдВ рд╢рд┐рдЦрд░ рдкрд░ рдПрдХ рдПрдХрд▓ рд▓реЙрдЧ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд▓рд┐рдЦреА рдЬрд╛рддреА рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдХреЗрд╡рд▓ рдПрдХ рд╣рд┐рд╕реНрд╕реЗ рдХреА рдХрд▓реНрдкрдирд╛ рдХреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдПред рджреВрд╕рд░реЗ, рдЧреНрд▓реЛ рдореЗрдВ рдирдХреНрд╢рд╛ рджреЗрдЦрдиреЗ рдореЗрдВ рд╕рдмрд╕реЗ рд╕реБрдЦрдж рдирд╣реАрдВ рд╣реИред рдФрд░ рддреАрд╕рд░рд╛, рдпрд╣ рдПрдХ рдкрд░реАрдХреНрд╖рдг рдХрд╛рд░реНрдп рд╣реИ :)
рдЬрд▓реНрджреА рджреЗрдЦреЛ
рд╣рдорд╛рд░реЗ рдорд┐рдиреА-рд╕рд┐рд╕реНрдЯрдо рдХреА рдХреНрдпрд╛ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ?
- рд▓реЙрдЧ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЕрджреНрдпрддрди рдХрд╛ рдЯреНрд░реИрдХ рд░рдЦреЗрдВ (рдЬреИрд╕реЗ рдХрд┐
tail -f
)ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рджрд┐рди рдореЗрдВ рдПрдХ рдмрд╛рд░ рд▓реЙрдЧ рдлрд╝рд╛рдЗрд▓ рдмрдВрдж рд╣реЛ рдЬрд╛рддреА рд╣реИ рдФрд░ рд╕рд╛рд╡рдзрд╛рдиреА рд╕реЗ рд╕рдВрдЧреНрд░рд╣реАрдд рдХреА рдЬрд╛рддреА рд╣реИ, рдФрд░ рдПрдХ рдирдИ рдлрд╝рд╛рдЗрд▓ рдЕрдкрдиреА рдЬрдЧрд╣ рд▓реЗ рд▓реЗрддреА рд╣реИ, рдЕрд░реНрдерд╛рдд, рдЖрдкрдХреЛ рдЗрди рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░рдиреЗ рдФрд░ рд╡рд░реНрддрдорд╛рди рд▓реЙрдЧ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред - рд▓реЙрдЧ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдирдИ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдХреЗ рдЕрдиреБрд░реВрдк рдШрдЯрдирд╛ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░реЗрдВ, рдФрд░ рдпрджрд┐ рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдорд╛рдирдЪрд┐рддреНрд░ рдкрд░ рдПрдХ рдмрд┐рдВрджреБ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдП, рддреЛ рд░рд┐рдХреЙрд░реНрдб рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдЖрдИрдкреА рдкрддреЗ рджреНрд╡рд╛рд░рд╛ рдмрд┐рдВрджреБ рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ (рдЕрдиреБрдорддрд┐) рдХрд╛ рд╕рдордиреНрд╡рдп рдХрд░реЗрдВред
- рдИрд╡реЗрдВрдЯ рдбреЗрдЯрд╛ рдХреЛ рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рдореЗрдВ рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП (рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ)ред
- рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЙрд╕ рдкрд░ рдЕрдВрдХ рдХреЗ рд╕рд╛рде рдПрдХ рд╕реНрд╡рдЪреНрдЫ рдорд╛рдирдЪрд┐рддреНрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рд╕реЗ рдирд┐рдкрдЯрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬреЛ рдХрд┐ рд╕рдВрдмрдВрдзрд┐рдд рдШрдЯрдирд╛ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд░рдВрдЧреАрди рд╣реЛрддреЗ рд╣реИрдВред
рдкреНрд░рддреНрдпреЗрдХ рдЖрдЗрдЯрдо рдкрд░ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдЕрдзреНрдпрдпрди рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдПрдХ рдЫреЛрдЯрд╛ рдЬрд╛рд╡рд╛ рдбреЗрдореЙрди (рдпрд╣ рдЕрдЬреАрдм рд▓рдЧрддрд╛ рд╣реИ, рдореБрдЭреЗ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ, рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ, рдХреБрдЫ рднреА рдирд╣реАрдВ) рд▓реЙрдЧ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░реЗрдЧрд╛, рд░рд┐рдХреЙрд░реНрдб рдХреЛ рдкрд╛рд░ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдЖрдИрдкреА рдХреЛ рд╣рд▓ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдЬреЛ HTTP POST рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рд░реНрд╡рд░ рдХреЛ рдбреЗрдЯрд╛ рднреЗрдЬ рджреЗрдЧрд╛ред рдпрд╣ рдмрд╛рдж рдореЗрдВ рд╕рд┐рд░рджрд░реНрдж рдХреЗ рдмрд┐рдирд╛ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╣рд┐рд╕реНрд╕реЛрдВ рдХреЛ рдмрджрд▓рдирд╛ рдЖрд╕рд╛рди рдмрдирд╛ рджреЗрдЧрд╛ред рд╕рд░реНрд╡рд░ рд╕рд░реНрд╡рд▓реЗрдЯ рдХрдВрдЯреЗрдирд░ рдХрд╛ рднреА рд╣рд┐рд╕реНрд╕рд╛ рд╣реЛрдЧрд╛, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рд╣рдо рд╕рдВрдмрдВрдзрд┐рдд рд╕рд░реНрд╡рд▓реЗрдЯ рд▓рд┐рдЦреЗрдВрдЧреЗред рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рд╛рдЗрдб рдХрд┐рд╕реА рддрд░рд╣ рдХрд╛ рдореИрдк рд╡рд┐рдЬреЗрдЯ (рдореИрдк рд░реЗрдВрдбрд░) рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬреЛ рд╕рд░реНрд╡рд░ рдХреЗ рд╕рд╛рде рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рд░реВрдк рд╕реЗ рд╕рдВрд╡рд╛рдж рдХрд░реЗрдЧрд╛ред рдХрдИ рдореВрд▓ рддрд░реАрдХреЗ рд╣реИрдВ (рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП, рд▓реЗрдЦ рджреЗрдЦреЗрдВ
[1] рдФрд░ рд╕рдореАрдХреНрд╖рд╛
[2] ):
- рдзреВрдордХреЗрддреБред рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рд░реНрд╡рд░ рд╕реЗ рдХрдиреЗрдХреНрдЯ рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рд╕рд░реНрд╡рд░ рдХрдиреЗрдХреНрд╢рди рдХреЛ рддреЛрдбрд╝рддрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдЦреБрд▓рд╛ рд░рдЦрддрд╛ рд╣реИ, рдЬреЛ рдирдП рдбреЗрдЯрд╛ рдХреЛ рдХреНрд▓рд╛рдЗрдВрдЯ (рдкреБрд╢) рдХреЛ рддреБрд░рдВрдд рднреЗрдЬрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдПрдХ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд░реВрдк рдореЗрдВ, WebSocket рддрдХрдиреАрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
- рдмрд╛рд░-рдмрд╛рд░ рдЪреБрдирд╛рд╡ред рджрд┐рдП рдЧрдП рдлрд╝реНрд░реАрдХреНрд╡реЗрдВрд╕реА рдкрд░ рдПрдХ рдХреНрд▓рд╛рдЗрдВрдЯ рдирдП рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП рд╕рд░реНрд╡рд░ рдХреЛ рдкреЛрд▓ рдХрд░рддрд╛ рд╣реИред
- "рд▓реЙрдиреНрдЧ" рдкреЛрд▓ (рд▓рдВрдмрд╛ рдорддрджрд╛рди)ред рдкрд┐рдЫрд▓реЗ рджреЛ рддрд░реАрдХреЛрдВ рдХреЗ рдмреАрдЪ рдХреБрдЫред рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рд░реНрд╡рд░ рд╕реЗ рдирдП рдбреЗрдЯрд╛ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдпрджрд┐ рдпрд╣ рдбреЗрдЯрд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рд░реНрд╡рд░ рдкрд░ рдирд╣реАрдВ рд╣реИ, рддреЛ рд╕рд░реНрд╡рд░ рдХрдиреЗрдХреНрд╢рди рдмрдВрдж рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЬрдм рдбреЗрдЯрд╛ рдЖрддрд╛ рд╣реИ, рддреЛ рд╡реЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рднреЗрдЬреЗ рдЬрд╛рддреЗ рд╣реИрдВ, рдФрд░ рд╡рд╣, рдмрджрд▓реЗ рдореЗрдВ, рдирдП рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП рдлрд┐рд░ рд╕реЗ рдПрдХ рдЕрдиреБрд░реЛрдз рднреЗрдЬрддрд╛ рд╣реИред
рдЪреБрдирд╛рд╡ рд▓рдВрдмреЗ рдорддрджрд╛рди рдкрд░ рдЧрд┐рд░ рдЧрдпрд╛, рдХреНрдпреЛрдВрдХрд┐ WebSocket
рд╕рднреА рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд
рдирд╣реАрдВ рд╣реИ , рдФрд░ рдмрд╛рд░-рдмрд╛рд░ рдЪреБрдирд╛рд╡ рд╕рд░реНрд╡рд░ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рд╢реЛрд╖рдг рдХрд░рддреЗ рд╣реБрдП, рдХреБрдЫ рднреА рдирд╣реАрдВ рдХреЗ рд▓рд┐рдП рдпрд╛рддрд╛рдпрд╛рдд рдХреЛ рджреВрд░ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЬреЗрдЯреНрдЯреА рд╡реЗрдм рд╕рд░реНрд╡рд░ (рдЕрдВрд╢рдХрд╛рд▓рд┐рдХ рд╕рд░реНрд╡рд▓реЗрдЯ рдХрдВрдЯреЗрдирд░) рд▓рдВрдмреЗ рдорддрджрд╛рди рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
рдирд┐рд░рдВрддрд░рддрд╛ рддрдХрдиреАрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдВрднрд╡ рдмрдирд╛рддрд╛ рд╣реИ (рджреЗрдЦреЗрдВ
[1] )ред рд▓реЗрдХрд┐рди рдореИрдВ рдЖрдкрдХреЛ рдмрддрд╛ рджреВрдБ, рдпрд╣рд╛рдБ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рдХрд╣рд╛рдБ рд╣реИ? рд╣рдо рд╣рд╡рд╛рдИ рдЬрд╣рд╛рдЬ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдкреНрд░рдгрд╛рд▓реА рдирд╣реАрдВ рд▓рд┐рдЦ рд░рд╣реЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдПрдХ рд╕рд╛рдл-рд╕реБрдерд░рд╛ рдкреНрд░рд╕реНрддреБрддрд┐ рдирдХреНрд╢рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЗ рдмреАрдЪ рджреЗрд░реА рдФрд░ 1-2 рд╕реЗрдХрдВрдб рдореЗрдВ рдкрд░реНрдпрд╡реЗрдХреНрд╖рдХ рдХреЗ рдирдХреНрд╢реЗ рдкрд░ рдПрдХ рдмрд┐рдВрджреБ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ рдЗрддрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИ, рдХреНрдпрд╛ рд╡реЗ рд╣реИрдВ?
рдорд╛рдирдЪрд┐рддреНрд░ рдЗрдВрдЬрдиреЛрдВ рдореЗрдВ рд╕реЗ,
рдХреИрдЯрд▓реЙрдЧ рдХреЛ рд╕рдмрд╕реЗ рд╕реБрдЦрдж рджрд┐рдЦрдиреЗ рд╡рд╛рд▓реЗ рдФрд░ рдПрдХ рд╕рд░рд▓, рдореИрддреНрд░реАрдкреВрд░реНрдг рдПрдкреАрдЖрдИ рдХреЗ рд░реВрдк рдореЗрдВ рдЪреБрдирд╛ рдЧрдпрд╛ рдерд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, USC рдХреЗ рдЕрдЪреНрдЫреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕рдорд░реНрдерди рдкрд░ рдзреНрдпрд╛рди рджреЗрдВред
рдареАрдХ рд╣реИ, рдЪрд▓реЛ рд╢реБрд░реВ рдХрд░реЗрдВ, рдФрд░ рд╣рдо рдкреНрд░рд╡реЗрд╢ рдХреЗ рд╕реНрдерд╛рди рдкрд░ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░реЗрдВрдЧреЗред
рд▓реЙрдЧ рд╕реЗ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ
рд▓реЙрдЧ рдЕрдкрдбреЗрдЯ рдХреЛ рдХреИрд╕реЗ рдореЙрдирд┐рдЯрд░ рдХрд┐рдпрд╛ рдЬрд╛рдП, рдЗрд╕рдХреА рдЖрд╡рдзрд┐рдХ рд╕рдВрдЧреНрд░рд╣-рд░рдЪрдирд╛ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП? рдЖрдк рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкреНрд░рд╕рд┐рджреНрдз
рдЕрдкрд╛рдЪреЗ рдХреЙрдордиреНрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕реЗ
Tailer
рдХреНрд▓рд╛рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╣рдо рдЕрдкрдиреЗ рддрд░реАрдХреЗ рд╕реЗ, рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рдЙрд╕реА рддрд░рд╣ рд╕реЗ рдЬрд╛рдПрдВрдЧреЗред рд╣рдорд╛рд░реЗ
TailReader
рд╡рд░реНрдЧ
TailReader
рдЙрд╕ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рджреНрд╡рд╛рд░рд╛ рдЖрд░рдВрднреАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд▓реЙрдЧ рд╕реНрдерд┐рдд рд╣реИ, рд▓реЙрдЧ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдирд╛рдо (рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИ) рдФрд░ рдЕрджреНрдпрддрди рдЕрд╡рдзрд┐ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рд╡рд╛рд▓реА рдПрдХ
рдирд┐рдпрдорд┐рдд TailReader
- рд╡рд╣ рд╕рдордп рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рд╣рдо рд╕рдордп-рд╕рдордп рдкрд░ рд▓реЙрдЧ рдореЗрдВ рдирдИ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпреЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВрдЧреЗред рдХреНрд▓рд╛рд╕ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдорд╛рдирдХ рдЗрдирдкреБрдЯ / рдЖрдЙрдЯрдкреБрдЯ рд╕реНрдЯреНрд░реАрдо рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣ рдирд┐рд╖реНрдкрд╛рджрди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рддрдм
nextRecord()
рдЬрдм
nextRecord()
рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЕрдЧрд░ рд▓реЙрдЧ рдореЗрдВ рдХреЛрдИ рдирдИ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпрд╛рдБ рдирд╣реАрдВ
nextRecord()
ред рдирдИ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпреЛрдВ (рд▓реЙрдХрд┐рдВрдЧ рдХреЗ рдмрд┐рдирд╛) рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк
hasNext()
рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЪреВрдВрдХрд┐ рд▓реЙрдЧ рдХреЛ рдПрдХ рдЕрд▓рдЧ рдереНрд░реЗрдб рдореЗрдВ рдореЙрдирд┐рдЯрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (I / O, рдереНрд░реЗрдб рдХреЗ рд╕рд╛рде рднреНрд░рдорд┐рдд рдирд╣реАрдВ рд╣реЛрдирд╛), рдкреНрд░рд╡рд╛рд╣ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
start()
рдФрд░
stop()
рддрд░реАрдХреЗ рд╣реИрдВред рдпрджрд┐ рдлрд╝рд╛рдЗрд▓ рд╕реНрдЯреНрд░реАрдо рдмрдВрдж рд╣реЛ рдЧрдИ рд╣реИ (рд▓реЙрдЧ рдХреЛ рд╕рдВрдЧреНрд░рд╣ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреЗрдЬрд╛ рдЧрдпрд╛ рдерд╛), рддреЛ рдкрдврд╝рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢реЛрдВ рдХреА рдПрдХ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдмрд╛рдж, рдХреНрд▓рд╛рд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рддрдп рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдирдпрд╛ рд▓реЙрдЧ рдЦреЛрд▓рдиреЗ рдХрд╛ рд╕рдордп рд╣реИред рд▓реЙрдЧ
getLogFile()
рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд┐рдпрдореЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЦреЛрдЬрд╛ рдЧрдпрд╛ рд╣реИ:
private File getLogFile() { File logCatalog = new File(logFileCatalog); File[] files = logCatalog.listFiles(new FileFilter() { @Override public boolean accept(File pathname) { return pathname.canRead() && pathname.isFile() && pathname.getName().matches(logFileNamePattern); } }); if (0 == files.length) return null; if (files.length > 1) Arrays.sort(files, new Comparator<File>() { @Override public int compare(File o1, File o2) { return (int) (o1.lastModified() - o2.lastModified()); } }); return files[files.length - 1]; }
рдЬрдм рд╣рдордиреЗ рд▓реЙрдЧ рдЕрдкрдбреЗрдЯ рдХреЛ рдореЙрдирд┐рдЯрд░ рдХрд░рдирд╛ рд╕реАрдЦ рд▓рд┐рдпрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдЗрди рдЕрдкрдбреЗрдЯ рдХреЗ рд╕рд╛рде рдХреБрдЫ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ рдЗрд╕ рдШрдЯрдирд╛ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рдпрджрд┐ рдЗрд╕реЗ рдорд╛рдирдЪрд┐рддреНрд░ рдкрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдХреНрд▓рд╛рдЗрдВрдЯ рдЖрдИрдкреА рдХреЛ рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓реЗрдВ рдФрд░ рдЗрд╕реЗ рдЬрд┐рдпреЛрдХреЙрд░реНрдбрд┐рдиреЗрдЯ рдкрд░ рд╣рд▓ рдХрд░реЗрдВред
RecordParser
рд╡рд░реНрдЧ, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓реЙрдЧ рдлрд╝рд╛рдЗрд▓ рдХреА рд▓рд╛рдЗрдиреЛрдВ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рддрд╛ рд╣реИред
LogEvent parse(String record)
рд╡рд┐рдзрд┐ рдИрд╡реЗрдВрдЯ рдЯрд╛рдЗрдк рдФрд░ IP рдПрдбреНрд░реЗрд╕ рдХреЛ
LogEvent parse(String record)
рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдСрдмреНрдЬреЗрдХреНрдЯ рд▓реМрдЯрд╛рддреА рд╣реИ, рдпрд╛
null
рдЕрдЧрд░ рдпрд╣ рд▓реЙрдЧ рдПрдВрдЯреНрд░реА рд╣рдореЗрдВ рдЗрдВрдЯрд░реЗрд╕реНрдЯ рдирд╣реАрдВ рдХрд░рддреА рд╣реИ (рд╡реИрд╕реЗ, рдпрд╣ рдЬрд╛рд╡рд╛ рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рдХреА рджреБрдирд┐рдпрд╛ рдореЗрдВ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреЗ рдЕрднреНрдпрд╛рд╕ рд╕реЗ рджреВрд░ рд╣реИ -
Null рдкреИрдЯрд░реНрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИ)
рд╡рд╕реНрддреБ )ред рдЙрд╕реА рд╕рдордп, рд░рд┐рдХреЙрд░реНрдб рднреА рдЦреЛрдЬ рд░реЛрдмреЛрдЯреЛрдВ рдХреЗ рдЕрдиреБрд░реЛрдзреЛрдВ рд╕реЗ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ (рд╡реЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рд╕рд╣реА?)ред
рдЕрдВрдд рдореЗрдВ,
IpToLocationConverter
рд╡рд░реНрдЧ
рдореИрдХреНрд╕рд┐рдорд╛рдЗрдВрдб рд╕реЗрд╡рд╛рдУрдВ (
рдЗрд╕рдХреЗ рд▓рд┐рдП рдЬрд╛рд╡рд╛ рдПрдкреАрдЖрдИ ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдЕрдкрдиреЗ рд╕рдВрдмрдВрдзрд┐рдд
рднреВ-рдЖрдХреГрддрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЖрдИрдкреА рдкрддреЗ рдХреЛ
IpToLocationConverter
рдФрд░
рдЗрдкрдЧрд┐рдпреЛрдмреЗрд╕ (
рдПрдХреНрд╕рдПрдордПрд▓ рдПрдкреАрдЖрдИ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рддрд░реНрдХ рдкреИрдХреЗрдЬ
com.ecwid.geowid.daemon.resolvers
)ред рдореИрдХреНрд╕рдорд╛рдЗрдВрдб рдХрд╛рдлреА рдШрдЯрд┐рдпрд╛ рд░реВрд╕реА рдкрддреЛрдВ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ IpGeoBase'om рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рдореИрдХреНрд╕рдорд╛рдЗрдВрдб рдПрдкреАрдЖрдИ рддреБрдЪреНрдЫ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рд╕рдорд╛рдзрд╛рди рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рд╕реНрдерд┐рдд рдбреЗрдЯрд╛рдмреЗрд╕ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕реНрдкрд╖реНрдЯ рдХрд╛рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдХреИрд╢рд┐рдВрдЧ рд╕рд░реНрд╡рд┐рд╕ рдХреЙрд▓ рдХреЛ IpGeoBase рдХреЗ рд▓рд┐рдП рдПрдХ рд░рд┐рдЬрд╝реЙрд▓реНрд╡рд░ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛ред
рд╕рд░реНрд╡рд░ рдХреЛ рд▓реЛрдб рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЗрд╕реЗ рдХрдИ рдЯреБрдХрдбрд╝реЛрдВ рдХреЗ рдкреИрдХ рдореЗрдВ рднреЗрдЬреЗрдВрдЧреЗ рддрд╛рдХрд┐ рдПрдХ рдкреИрдХ рдореЗрдВ рд░рд┐рдХреЙрд░реНрдб рд╕рдордп рдореЗрдВ рдереЛрдбрд╝рд╛ рдЕрд▓рдЧ рди рд╣реЛред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдорд╛рдирдЪрд┐рддреНрд░ рдкрд░ рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдХреЗ рд▓рд┐рдП рд╕рдВрдЪрд┐рдд рдкреЙрдЗрдВрдЯ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ (
Point
рдХреНрд▓рд╛рд╕) рдПрдХ рдмрдлрд░ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ -
PointsBuffer
рдХреНрд▓рд╛рд╕ рдХрд╛ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдФрд░ рдЗрд╕реЗ "рддреНрдпрд╛рдЧ" рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рдЗрд╕реЗ JSON рдлреЙрд░реНрдореЗрдЯ рдореЗрдВ рд╕рд░реНрд╡рд░ рд╕реЗ рднрд░рд╛ рдЬрд╛рддрд╛ рд╣реИ (рд╣рдо
Gson рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЛ
рд╕реАрд░рд┐рдпрд▓ рдХрд░рддреЗ рд╣реИрдВ )ред
рд╕рднреА рджрд╛рдирд╡ рддрд░реНрдХ
GeowidDaemon
рд╡рд░реНрдЧ рдореЗрдВ рд╣реИред рдбреЗрдореЙрди рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рдПрдХреНрд╕рдПрдордПрд▓ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдореЗрд░реЗ рд╣рд┐рд╕реНрд╕реЗ рдореЗрдВ рдЕрд╢реНрд▓реАрд▓рддрд╛, рд╡реНрдпрдХреНрддрд┐ рдХреЛ рдкреНрд░реЙрдкрд░ рдлрд╛рдЗрд▓реЛрдВ
рдХреЗ рд╕рд╛рде рдорд┐рд▓ рд╕рдХрддрд╛ рд╣реИ рдпрд╛
рдпрдо рдПрд▓рдПрд▓ рд▓реЗ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ
рдПрдХреНрд╕рдПрдордПрд▓ рдЯреВ рдСрдмреНрдЬреЗрдХреНрдЯ рдореИрдкрд┐рдВрдЧ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛)ред рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ
<events> <event> <type>def</type> <pattern>\b((?:\d{1,3}\.){3}\d{1,3})\b\s+script\.js</pattern> </event> <event> <type>mob</type> <pattern>\b((?:\d{1,3}\.){3}\d{1,3})\b\s+mobile:</pattern> </event> <event> <type>api</type> <pattern>\b((?:\d{1,3}\.){3}\d{1,3})\b\s+api:</pattern> </event> </events>
рдИрд╡реЗрдВрдЯ рдХреЗ рдкреНрд░рдХрд╛рд░:
def
- рдПрдХ "рдирд┐рдпрдорд┐рдд" рдХрд╕реНрдЯрдореЛрдорд░ рдЦреЛрд▓рдирд╛,
mob
- рдПрдХ рдореЛрдмрд╛рдЗрд▓ рдХрд╕реНрдЯрдорд░ рдЦреЛрд▓рдирд╛,
api
- рдПрдХ рдПрдкреАрдЖрдИ рд╕реЗрд╡рд╛ рдХреЙрд▓ рдХрд░рдирд╛ред рдкреНрд░рдХрд╛рд░ рдЙрд╕ рд╕реНрдерд╛рди рдХреЗ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рд╕рдмрд╕реНрдЯреЗрд╢рди рдХреЗ рд▓реЙрдЧ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдореЗрдВ рд╡рд┐рд╢реЗрд╖ рдирд┐рдпрдорд┐рдд рдХреЗ рд▓рд┐рдП рд╣реЛрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЖрдИрдкреА рд╕рдореВрд╣ рдХреЛ рдЖрд╡рдВрдЯрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдиреЗрдЯрд╡рд░реНрдХ рдХреА рд╡рд┐рд╢рд╛рд▓рддрд╛ рдореЗрдВ рдбреЗрдорди рдХреЛ рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрджреНрднреБрдд
рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдорд┐рд▓реАред
рд╣рдо рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЗ рд╕рд╛рде рдбреЗрдЯрд╛ рд╕рд╛рдЭрд╛ рдХрд░рддреЗ рд╣реИрдВ
рдЖрдЗрдП рд░реЙрдХ рдХрд░рддреЗ рд╣реИрдВ, рдЬреЗрдЯреНрдЯреА рдПрдкреАрдЖрдИ (рд╣рдо рд╕рд░реНрд╡рд░ рдХреЗ 7 рд╡реЗрдВ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╣рдордд рд╣реЛрдВрдЧреЗ) рдореЗрдВ рдХреНрдпрд╛ рдЬрд╛рд░реА рд╣реИ? рдпрд╣ рдХреЛрдб рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рд╕рд╣рд┐рдд рдкреНрд░рд▓реЗрдЦрди
[3] рдореЗрдВ рдЙрддреНрдХреГрд╖реНрдЯ рд░реВрдк рд╕реЗ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИред рд╣рдо рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рд╣рдорд╛рд░рд╛
GeowidServlet
рд╕рд░реНрд╡рд▓реЗрдЯ рдиреНрдпреВрдирддрдо рд╣реИ: рдпрд╣ рдбреЗрдореЙрди рд╕реЗ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЛ рджреЗ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рд╕рдВрдмрдВрдз рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ:
@Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { synchronized (continuations) { for (Continuation continuation : continuations.values()) { continuation.setAttribute(resultAttribute, req.getParameter(requestKey)); try { continuation.resume(); } catch (IllegalStateException e) {
рдпрд╣рд╛рдВ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ?
рдЬрдм рдХреЛрдИ рдЧреНрд░рд╛рд╣рдХ рдирдП рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП рдЖрддрд╛ рд╣реИ, рддреЛ рд╣рдо GET рдЕрдиреБрд░реЛрдз рдХреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдореЗрдВ рдПрдХ рдЕрджреНрд╡рд┐рддреАрдп рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВ (рдЬреЛ рдХрд┐, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЫрджреНрдо-рдЕрджреНрд╡рд┐рддреАрдп рд╣реИ, рдЧреНрд░рд╛рд╣рдХ рднрд╛рдЧ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рджреЗрдЦреЗрдВ,
getPseudoGUID()
рдлрд╝рдВрдХреНрд╢рди
рдпрд╣рд╛рдВ ), рдЕрдЧрд░ рдХреЛрдИ рдЖрдИрдбреА рдирд╣реАрдВ рд╣реИ, рддреЛ рд╣рдо рдЧреНрд░рд╛рд╣рдХ рдХреЛ "рднреЗрдЬ" рджреЗрддреЗ рд╣реИрдВред рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реЗ рдЬреБрдбрд╝реА рдирд┐рд░рдВрддрд░рддрд╛ рдХреА рд╕рд╣реА рдкрд╣рдЪрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдЕрдЧрд▓рд╛, рд╣рдо рдЬрд╛рдВрдЪрддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕ рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдбреЗрдЯрд╛ рд╡рд╛рд▓реА рд╡рд┐рд╢реЗрд╖рддрд╛ рд╕реЗрдЯ рд╣реИ рдпрд╛ рдирд╣реАрдВред рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ, рдпрджрд┐ рдЧреНрд░рд╛рд╣рдХ рдкрд╣рд▓реА рдмрд╛рд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЖрдпрд╛, рддреЛ рдХрд┐рд╕реА рднреА рдбреЗрдЯрд╛ рдХреА рдХреЛрдИ рдмрд╛рдд рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреА рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╣рдо рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕рдордп-рд╕реАрдорд╛ рдХреЗ рд╕рд╛рде рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдирд┐рд░рдВрддрд░рддрд╛ рдмрдирд╛рддреЗ рд╣реИрдВ, рдЗрд╕реЗ рдирд┐рд▓рдВрдмрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рднрдВрдбрд╛рд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реИрд╢ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдбрд╛рд▓рддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдРрд╕реА рд╕реНрдерд┐рддрд┐рдпрд╛рдВ рд╣реИрдВ рдЬрдм рдирд┐рд░рдВрддрд░рддрд╛ рдХрд╛ рд╕рдордп рд╕рдорд╛рдкреНрдд рд╣реЛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЛрдИ рдбреЗрдЯрд╛ рднреА рдирд╣реАрдВ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЬрд╛рдБрдЪ рдХрд░рдирд╛
if (continuation.isExpired())
рд╕реНрдерд┐рддрд┐ рд╣рдореЗрдВ рдорджрдж рдХрд░рддреА рд╣реИ, рдЬрдм рдЧреБрдЬрд░рддреА рд╣реИ, рддреЛ рд╕рд░реНрд╡рд▓реЗрдЯ рдЬреЗрдиреНрд╕рди рдореЗрдВ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдПрдХ рдЦрд╛рд▓реА рд╕рд░рдгреА рджреЗрддрд╛ рд╣реИ, рдЯреЗрдмрд▓ рд╕реЗ рджрд┐рдП рдЧрдП рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рдЕрдиреБрд░реВрдк рдирд┐рд░рдВрддрд░рддрд╛ рдХреЛ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд░реВрдк рд╕реЗ рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реИред
рдпрджрд┐ рдбреЗрдЯрд╛ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╕реЗрдЯ рд╣реИ, рддреЛ рд╣рдо рдЗрд╕ рдбреЗрдЯрд╛ рдХреЛ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░ рджреЗрддреЗ рд╣реИрдВред рдпрд╣ рдбреЗрдЯрд╛ рдХрд╣рд╛рдВ рд╕реЗ рдЖрддрд╛ рд╣реИ? рдкреЛрд╕реНрдЯ рд░рд┐рдХреНрд╡реЗрд╕реНрдЯ рд╣реИрдВрдбрд▓рд░ рдореЗрдВ, рдмрд┐рд▓реНрдХреБрд▓ред рдЬреИрд╕реЗ рд╣реА рдбреЗрдорди рдиреЗ рдбреЗрдЯрд╛ рднреЗрдЬрд╛, рд╕рд░реНрд╡рд▓реЗрдЯ "рдирд┐рд▓рдВрдмрд┐рдд" рдирд┐рд░рдВрддрд░рддрд╛ рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЪрд▓рддрд╛ рд╣реИ, рдкреНрд░рддреНрдпреЗрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ (рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ) рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рддрд╛рд▓рд┐рдХрд╛ рдХреЛ рд╕рд╛рдлрд╝ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдЗрд╕ рд╕рдордп рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдирд┐рд░рдВрддрд░рддрд╛ рдХреЗ рд▓рд┐рдП
doGet()
рд╡рд┐рдзрд┐ рдХреЛ рдлрд┐рд░ рд╕реЗ рджрд░реНрдЬ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рд▓реЛрдб рдХреЗ рддрд╣рдд рдПрдХ рдкреНрд░реЛрдлрд╛рдЗрд▓рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрди рдмрд╣реБрдд рдирд┐рд░рдВрддрд░рддрд╛рдУрдВ рдХреА рд░рд╣рд╕реНрдпрдордп рд╢рдХреНрддрд┐ рдХреЛ рдорд╛рдк рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рд▓рд┐рдП рд▓реЗрдЦрдХ рдиреЗ VisualVM рдФрд░ рдШреЗрд░рд╛рдмрдВрджреА рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ред рд▓реЗрдЦрдХ рд╕реЗ, рдкрд░реАрдХреНрд╖рдХ рдФрд╕рдд рджрд░реНрдЬреЗ рдХрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рдмреЗрд╣рдж рдХреГрддреНрд░рд┐рдо рд▓рдЧ рд░рд╣рд╛ рдерд╛ред JVM рдиреЗ рд▓рдЧрднрдЧ рдПрдХ рдШрдВрдЯреЗ рддрдХ "рд╡рд╛рд░реНрдо рдЕрдк" рдХрд┐рдпрд╛, рдЬреЛ 15Mb рд╣реАрдк рд╕реНрдкреЗрд╕ рдкрд░ рдмрд╕ рдЧрдпрд╛ред рдЙрд╕рдХреЗ рдмрд╛рдж, рдШреЗрд░рд╛рдмрдВрджреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рд╣рдо рд╕рд░реНрд╡рд░ рдХреЛ 5 рдорд┐рдирдЯ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рдирд╛рдВрддрд░ 3000 рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд╕рд╛рде рд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВ (рдореИрдВ рдЦреБрд▓реА рдлрд╛рдЗрд▓реЛрдВ, рдЖрджрд┐ рдкрд░ рд╕реАрдорд╛рдПрдВ рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдЪрд╛рд░реЛрдВ рдУрд░ рдкреНрд░рд╣рд╛рд░ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛)ред JVM рдиреЗ ~ 250Mb рд╣реАрдк рд╕реНрдкреЗрд╕ рдЦрд╛рдпрд╛, рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛрд░ рдХреЛ ~ 10-15% рддрдХ рд▓реЛрдб рдХрд┐рдпрд╛ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╢реБрд░реБрдЖрддреА рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫрд╛ рдкрд░рд┐рдгрд╛рдо рд╣реИред
рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рд╕рд░
рдореИрдВ рддреБрд░рдВрдд рдПрдХ рдЖрд░рдХреНрд╖рдг рдХрд░ рджреВрдВрдЧрд╛: рд╢рд╛рдпрдж рдореЗрд░рд╛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб рдЖрдкрдХреЛ рдПрдХ рдкреЗрд╢реЗрд╡рд░ рдлреНрд░рдВрдЯрдПрдВрдб рдбреЗрд╡рд▓рдкрд░ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ "рдЕрд╕рдВрдЧрдд" рд▓рдЧреЗрдЧрд╛ред рдЙрди рд▓реЛрдЧреЛрдВ рдХрд╛ рдиреНрдпрд╛рдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЛ рдореЗрд░реЗ рдХреЛрдб рдХреЛ рд╕рдордЭреЗрдВрдЧреЗ :)
рдЗрд╕рд▓рд┐рдП, рд╣рдо USC рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рд╣рдо рдорд╛рдирдЪрд┐рддреНрд░ рдкрд░ рдЕрдВрдХ рдХреИрд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдВрдЧреЗ? рдорд╛рдирдХ рдорд╛рд░реНрдХрд░ рдЕрдиреБрдкрдпреБрдХреНрдд рджрд┐рдЦрддреЗ рд╣реИрдВред Png рдпрд╛, W3C, gif рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк рдмрд┐рдВрджреБрдУрдВ рдХреЗ рдПрдиреАрдореЗрд╢рди рдХреЗ рд╕рд╛рде рдПрдХ рдЕрдЪреНрдЫреА рддрд╕реНрд╡реАрд░ рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред рдЗрд╕рдХреЗ рджреЛ рддрд░реАрдХреЗ рд╣реИрдВ:
- рдПрд╕рд╡реАрдЬреА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдиреАрдореЗрд╢рдиред рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдПрдХ рдЙрддреНрдХреГрд╖реНрдЯ рд▓реЗрдЦ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдПрдХ рд╣рдм рдкрд░ рдлрд┐рд╕рд▓ рдЧрдпрд╛ рдкреЗрд╢реЗрд╡рд░реЛрдВ: рдХреИрдЯрд▓реЙрдЧ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдЙрддреНрдХреГрд╖реНрдЯ рдкреНрд▓рдЧрдЗрди рд╣реИ (рдкреГрд╖реНрда рдХреЗ рдирд┐рдЪрд▓реЗ рднрд╛рдЧ рдореЗрдВ рдбреЗрдореЛ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ) рдЙрддреНрдХреГрд╖реНрдЯ рд░рд╛рдлреЗрд▓ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдФрд░ рдпрд╣ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЖрдкрдХреЛ IE6 (рдЕрдзрд┐рдХ рд╕рдЯреАрдХ, рд╡реАрдПрдордПрд▓) рдкрд░ рднреА рдПрд╕рд╡реАрдЬреА рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд╡рд┐рдкрдХреНрд╖: рдПрд╕рд╡реАрдЬреА рдХреА рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рдХреЗ рдХрд╛рд░рдг, рдЗрд╕ рдкрд░ рдПрдиреАрдореЗрд╢рди рдХрд╛рдлреА рд╕рдВрд╕рд╛рдзрди-рдЧрд╣рди рд╕рдВрдЪрд╛рд▓рди рд╣реИ (рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рд╕реНрдерд╛рди рдкрд░ рдЦреБрдж рдХреЛ рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ: рдЖрдкрдХреЛ рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕рдордп XML рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдЗрд╕рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛)ред
- рдПрдЪрдЯреАрдПрдордПрд▓ 5 рдХрд╛
. , , , ( www.html5canvastutorials.com KineticJS). : , . : .