рдЕрд╕рд▓реА рджреБрдирд┐рдпрд╛ рдореЗрдВ рд╣рд╛рд╕реНрдХреЗрд▓

рдпрд╣ рдмреНрд▓реЙрдЧ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╣рд╛рд╕реНрдХреЗрд▓ рднрд╛рд╖рд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рдХреБрдЫ рд▓рд┐рдЦ рдЪреБрдХрд╛ рд╣реИ, рдФрд░ рдЗрд╕рдХреЗ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХрдИ рд▓реЗрдЦ рд╣реИрдВред рдЕрдм рдореИрдВ рдЙрддреНрдкрд╛рджрди рдореЗрдВ рднрд╛рд╖рд╛ рдХреЗ рдПрдХ рдФрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкреНрд░реЗрд░рдгрд╛рджрд╛рдпрдХ рдмрд╛рдд рдХрд░реВрдВрдЧрд╛ред

рдбреЗрдЯрд╛ рд╡рд┐рд╡рд░рдг


рдореИрдВ рдЯреЗрд▓реАрдХреЙрдо рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реВрдВ: рдлрд┐рдХреНрд╕реНрдб рдЯреЗрд▓реАрдлреЛрди, рдЗрдВрдЯрд░рдиреЗрдЯ, рдЖрдИрдкреА-рдЯреЗрд▓реАрдлреЛрдиреАред рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рдкреАрдмреАрдПрдХреНрд╕ рд╕реЗ рдЖрдИрдкреА-рдЯреЗрд▓реАрдлреЛрдиреА рд╕рд░реНрд╡рд░реЛрдВ рд╕реЗ рдЯреНрд░реИрдлрд╝рд┐рдХ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдирд╛, рд╡рд░реНрддрдорд╛рди рдмрд┐рд▓рд┐рдВрдЧ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛, рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рд▓рд┐рдЦрдирд╛ рдФрд░ рдиреЗрдЯрд╡рд░реНрдХ, рдбреЛрдореЗрди (рд╣рд╛рдБ, "рд╕рднреА рдЯреНрд░реЗрдбреЛрдВ рдХрд╛ рдЬреИрдХ") рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рд╣рд╛рд▓ рд╣реА рдореЗрдВ, рдореЗрд░реЗ рд╕рдВрдЧрдарди рдореЗрдВ рдирдП рдЙрдкрдХрд░рдг рд▓рдЧрд╛рдП рдЧрдП рдЬреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдкрд░ рдХрд╛рдо рдХрд░рддреЗ рдереЗ, рдФрд░ рдпрд╛рддрд╛рдпрд╛рдд, рддрджрдиреБрд╕рд╛рд░, рднреА рдмрджрд▓ рдЧрдпрд╛ред рдЕрдм рдпрд╣ рджреЛ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рдЖрддрд╛ рд╣реИ: рдкреБрд░рд╛рдиреЗ рд╕реНрдЯреЗрд╢рдиреЛрдВ рд╕реЗ рдФрд░ рдирдП рд╕реЗред рдирдП рдЯреНрд░реИрдлрд╝рд┐рдХ рдХреЛ рджреНрд╡рд┐рдЖрдзрд╛рд░реА рдФрд░ рдкрд╛рда рдкреНрд░рд╛рд░реВрдкреЛрдВ рдореЗрдВ рджреЛрд╣рд░рд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдмрд╛рдпрдиреЗрд░рд┐рдЬрд╝ рд╣рдореЗрдВ рдмрд┐рд▓реНрдХреБрд▓ рднреА рд╢реЛрднрд╛ рдирд╣реАрдВ рджреЗрддрд╛ (рд╣рд╛рд▓рд╛рдБрдХрд┐ рдХреБрдЫ рдЕрдирдЬрд╛рдиреЗ рдореЗрдВ рдХрд╣рд╛ рдЧрдпрд╛: "рд╡рд╣рд╛рдБ рдХреНрдпреЛрдВ? рдЖрдк рдЙрдиреНрд╣реЗрдВ рд▓реЗ рдЬрд╛рдЗрдП, рдФрд░ рд╡реЗ рдЦреБрдж рдмрд┐рд▓рд┐рдВрдЧ рдореЗрдВ рд▓рдЧ рдЬрд╛рддреЗ рд╣реИрдВ!"), рдкрд╛рда рдПрдХ рдЬрдЧрд╣ рдЕрдзрд┐рдХ рдкрд░рд┐рдорд╛рдг рдХрд╛ рдХреНрд░рдо рд▓реЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рд╕рд╛рде рдХреБрдЫ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИред рдкреБрд░рд╛рдиреЗ рдЙрдкрдХрд░рдгреЛрдВ рд╕реЗ рдпрд╛рддрд╛рдпрд╛рдд рдЕрднреА рднреА рдЪрд▓ рд░рд╣рд╛ рд╣реИ, рдФрд░ рд╣рдо рдЗрд╕реЗ рд╕реНрдерд╛рдиреАрдп DBMS рдХреА рд╕реЗрд╡рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдпреЛрдЬрдирд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рд╕рд╛рдереА рдХреЗ рд╕рд╛рде рдлреЗрдВрдХ рд░рд╣реЗ рд╣реИрдВред рдирдП рд╕реНрдЯреЗрд╢рдиреЛрдВ рд╕реЗ рдпрд╛рддрд╛рдпрд╛рдд рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдХрдИ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреА рдЦреЛрдЬ рдХреА рдЧрдИ рдереАред рдирдП рд╕реНрдЯреЗрд╢рдиреЛрдВ рдкрд░ рдЯреНрд░реИрдлрд╝рд┐рдХ рд╣рд░ 15 рдорд┐рдирдЯ рдореЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ; рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░, рдкреНрд░рддрд┐ рдорд╛рд╣ рд▓рдЧрднрдЧ 3,000 рдРрд╕реА рдлрд╛рдЗрд▓реЗрдВ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддреА рд╣реИрдВ (рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ - 31 рджрд┐рдиреЛрдВ рдХреЗ рд▓рд┐рдП 2976 рдФрд░ 30 рджрд┐рдиреЛрдВ рдХреЗ рд▓рд┐рдП 2880)ред рдкрд╛рдЧрд▓рдкрди рдХреЗ рд▓рд┐рдП рдЖрдк рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЕрд▓рдЧ рд╕реЗ рдЖрдпрд╛рдд рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗред рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЙрдиреНрд╣реЗрдВ рдПрдХ рдореЗрдВ рдорд┐рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рд╕рднреА рдкрд╛рда рд╣реИрдВ, рдФрд░ рдХреЙрд▓ рд░рд┐рдХреЙрд░реНрдб рд▓рд╛рдЗрди рджреНрд╡рд╛рд░рд╛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдореИрдиреБрдЕрд▓ рдорд░реНрдЬрд┐рдВрдЧ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ: рдЖрдк рдкрд┐рдЫрд▓реЗ рдорд╣реАрдиреЗ рд╣реА рдлрд╛рдЗрд▓реЛрдВ рдХрд╛ рдЪрдпрди рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдкрд░ рд╕рдмрд╕реЗ рд╕рд░рд▓ рдорд░реНрдЬ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рдкреНрд░рд╛рд░реВрдк рддрдп рд╣реЛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП, рд╡рд┐рд▓рдп рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдХреЗрд╡рд▓ рдЖрдкрдХреЛ рд╡рд░реНрд╖ рдФрд░ рдорд╣реАрдиреЗ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рд▓рд┐рдирдХреНрд╕ рд╕рд╕реНрддреЗ рдФрд░ рдЦреБрд╢рдорд┐рдЬрд╛рдЬ рдХрд┐рд╕реНрдо рдХреЗ рдмреИрд╢ , рдкрд░реНрд▓ рдпрд╛ рдкрд╛рдЗрдерди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ , рд▓реЗрдХрд┐рди рдЖрдкрдиреЗ рдЙрдиреНрд╣реЗрдВ рдПрдХ рдСрдкрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП рд╡рд┐рдВрдбреЛрдЬ рдорд╢реАрди рдкрд░ рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рд╡рд╣реА рдкрд╛рд╡рд░рд╢реЗрд▓ рдХреЗ рд▓рд┐рдП рдЬрд╛рддрд╛ рд╣реИред рдФрд░ cmd рдПрдХ рд╡рд┐рдХреГрддрд┐ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣рдо рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЬрд╛рдирддреЗ рд╣реИрдВред ;) рдЕрдВрдд рдореЗрдВ, рдЯреНрд░реИрдлрд╝рд┐рдХ рдореЗрдВ рднреА рдЖрд╢реНрдЪрд░реНрдп рдХрд╛ рдкрддрд╛ рдЪрд▓рд╛, рдЬрд┐рд╕рдХреА рд╡рдЬрд╣ рд╕реЗ DBMS рдЯреВрд▓реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд┐рд▓рдп рдФрд░ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рднреА, рдмрд╣реБрдд рд╕рд╛рд░реЗ SQL рдХрд╛рд░реНрдп рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдХреБрдЫ рдХрд╛рд░рдХ рд╣рд╕реНрдХреЗрд▓ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╛рд░реНрдп рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рд╡рд┐рдХрд╕рд┐рдд рд╣реБрдП, рдЬрд┐рд╕рдХрд╛ рдореИрдВрдиреЗ рдЙрд╕ рд╕рдордп (рдЕрдкреНрд░реИрд▓-рдордИ 2011) рдЕрдзреНрдпрдпрди рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ред

рддреЛ, рдкреНрд░рддрд┐ рдорд╛рд╣ ~ 3,000 15 рдорд┐рдирдЯ рдХреА рдлрд╛рдЗрд▓реЗрдВред рдЙрдкрдХрд░рдг рдкрд░, рдЖрдк рдЕрдВрддрд░рд╛рд▓ рдХреЛ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ 15 рдорд┐рдирдЯ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдХрд┐рд╕реА рдЕрдиреНрдп рдореВрд▓реНрдп рдкрд░ рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: 5, 10, 30, 45 ... рдХреНрд░рдорд╢рдГ рдлрд╝рд╛рдЗрд▓реЛрдВ рдФрд░ рдЙрдирдХреЗ рдЖрдХрд╛рд░реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛, рдмрджрд▓ рдЬрд╛рдПрдЧреАред рдЙрджрд╛рд╣рд░рдг рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдирд╛рдо (05/09/2011 09:30:00):

  999992011050909300081.txt
 99999 - рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдЙрдкрдХрд░рдг рдореЗрдВ рд╕рд┐рд▓рдирд╛ (рд╕реНрдкрд╖реНрдЯ рдХрд╛рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдЗрд╕реЗ рдиреМ рдХреЗ рд╕рд╛рде рдмрджрд▓ рджрд┐рдпрд╛)
      2011 - рд╡рд░реНрд╖
          05 - рдорд╣реАрдирд╛
            09 - рджрд┐рди
              09 - рдШрдВрдЯреЗ
                30 рдорд┐рдирдЯ
                  00 - рд╕реЗрдХрдВрдб
                    81 - рдХреБрдЫ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЦреНрдпрд╛, рд╢рд╛рдпрдж рдПрдХ рд╕реЗрдХрдВрдб рдХреЗ рджрд╕рд╡реЗрдВред 


рдЕрдзрд┐рдХ рдЧреНрд░рд╛рд╣рдХ рд╣реИрдВ, рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рд╛рдЗрд▓ рдЖрдХрд╛рд░ рдореЗрдВ рд▓рдЧрд╛рддрд╛рд░ рдмрдврд╝ рд░рд╣реА рд╣реИред рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкреНрд░рддрд┐ рдлрд╝рд╛рдЗрд▓ рдФрд╕рддрди реирекреж рд▓рд╛рдЗрдиреЗрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдПрдХ рдореМрд╕рдореА рдЧрд░реНрдореА рдХреА рд╕реНрдерд┐рддрд┐ рдереА, рд▓реЛрдЧ рдЫреБрдЯреНрдЯреА рдкрд░ рдЧрдП рдФрд░ рдХрдо рдмреБрд▓рд╛рдпрд╛ред рд╕рд┐рддрдВрдмрд░ рдХреЗ рд▓рд┐рдП, рд╣рдо рдбреЗрдврд╝ рд╕реЗ рджреЛ рдмрд╛рд░ рдЧрддрд┐рд╡рд┐рдзрд┐ рдореЗрдВ рд╡реГрджреНрдзрд┐ рдХреА рдЙрдореНрдореАрдж рдХрд░рддреЗ рд╣реИрдВред

рдХреЙрд▓ рд░рд┐рдХреЙрд░реНрдб рд╡рд┐рд╡рд┐рдз рд╣реИрдВред рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреНрд░рдХрд╛рд░ рдХреЗ рд░рд┐рдХреЙрд░реНрдб рд╣реИрдВ рдЬрд┐рдирдореЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдлрд╝реАрд▓реНрдб рд╣реИрдВред R210 рдЬреИрд╕реА рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпрд╛рдВ рдмрд╣реБрдд рджреБрд░реНрд▓рдн рд╣реИрдВ, рдФрд░ рд╣рдореЗрдВ рдпрд╣ рдкрддрд╛ рдирд╣реАрдВ рдЪрд▓рд╛ рдХрд┐ рдЙрдирдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИ (рдЗрд╕рдХреЗ рдмрд╛рдж, рдЯреНрд░реИрдлрд╝рд┐рдХ рдбреЗрдЯрд╛ рдХреЛ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдбреЗрдЯрд╛ рджреНрд╡рд╛рд░рд╛ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ):

  | R210 | 2011-06-24 21: 43: 53 | 2011-06-24 01: 43: 52 | 1 | 


рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдХреЗрд╡рд▓ 4 рдлрд╝реАрд▓реНрдб рд╣реИрдВ: рд░рд┐рдХреЙрд░реНрдб рдкреНрд░рдХрд╛рд░ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛, рдкреНрд░рд╛рд░рдВрдн рджрд┐рдирд╛рдВрдХ, рдЕрдВрддрд┐рдо рддрд┐рдерд┐ (рдЖрдИрдПрд╕рдУ 8601 / рдПрд╕рдХреНрдпреВрдПрд▓ рдкреНрд░рд╛рд░реВрдк) рдФрд░, рдХрд┐рд╕реА рдХрд╛рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХред рдЦреЗрддреЛрдВ рдХреЛ рдПрдХ рдКрд░реНрдзреНрд╡рд╛рдзрд░ рдмрд╛рд░ рджреНрд╡рд╛рд░рд╛ рдЕрд▓рдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рд░рд┐рдХреЙрд░реНрдб рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдФрд░ рдЕрдВрдд рдореЗрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рддрд╛рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ 1 рдФрд░ рдХреНрд╖реЗрддреНрд░ рд╣реЛрдВ, рдЕрд░реНрдерд╛рддреН, 5. рдпрд╣ рдорд╛рди рд▓реЗрдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ рдХрд┐ рд╕реВрдЪрдХрд╛рдВрдХ 0 рд╡рд╛рд▓рд╛ рдХреНрд╖реЗрддреНрд░ рдЦрд╛рд▓реА рд╣реИ, рдкрд╣рд▓реЗ рдКрд░реНрдзреНрд╡рд╛рдзрд░ рдкрдЯреНрдЯреА рд╕реЗ рдкрд╣рд▓реЗ рд╕реНрдерд┐рдд рд╣реИред рдлрд┐рд░ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреА рдЙрд▓рдЯреА рдЧрд┐рдирддреА 1 рд╕реЗ рдЬрд╛рдПрдЧреАред

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

  | R200 | 99999 | 111111 | CR, CS, AM | 1 | 3022 | 2222 | 333333 ||| 2011-06-23 11: 33: 58 | C | 2011-06-23 11: 34: 22 | S | реж | резрем | рез |||||| рез || рез || резремреи || рез 1рем | рез | | рез | резреи | резрек | реирек |||||||| резрем | реж ||| || 192.168.1.172 || 192.168.1.12 |||||| 8 | 8 | 20 | 20 | 64 | 64 | 20 | 0 | 0 | OS | 7777 | 8888 | 555555 | 666666 | 0 | 8 | 9 | ||| OS || рез реп ||| рейреж | резреж | рекреи | рекрей ||||||||||| рез || рез || реи | рей || реиреиреиреиреи |||| || реи | рез || рейрейрейрейрейрей |||||||||| 


рд╣рдо рд╕реВрдЪрдХрд╛рдВрдХ [7, 8, 9, 12, 14, 36, 112, 122] рдХреЗ рд╕рд╛рде рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ, рдФрд░ рдЕрдВрдд рдореЗрдВ рд╣рдо рдЙрди рд╕рднреА рдЪреАрдЬреЛрдВ рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗ рдЬреЛ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд╣реИрдВ рддрд╛рдХрд┐ рд╣рдо DBMS рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЖрдпрд╛рдд рди рдХрд░реЗрдВред рдХреЗрд╡рд▓ рдХрдЪреНрдЪреЗ рдбреЗрдЯрд╛ рд╕реЗ рдХреНрдпрд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдпрд╣ рдЪреБрдирдирд╛, рд╣рдореЗрдВ рд▓рд╛рдЗрди рдорд┐рд▓рддреА рд╣реИ:

  рд░рд┐рдХреЙрд░реНрдб: 3022 | 222222 | 333333 | 2011-06-23 11: 33: 58 | 2011-06-23 11: 34: 22 | 24 | 222222 | 333333 |
 рд╕реВрдЪрдХрд╛рдВрдХ: 7 | 8 | 9 | 12 | 14 | 36 | 112 | 122 |

 рд╕рдВрдХреЗрдд |  рд╡реНрдпрд╛рдЦреНрдпрд╛
 ---------------------------
 7 |  рдЪрд┐рддрд╛ рдХрд╛ рдХреНрд╖реЗрддреНрд░ рдХреЛрдб
 8, 112 |  рдЖрдЙрдЯрдЧреЛрдЗрдВрдЧ рдирдВрдмрд░
 9, 122 |  рдЖрдиреЗ рд╡рд╛рд▓реА рд╕рдВрдЦреНрдпрд╛
 12 |  рдмрд╛рддрдЪреАрдд рдХреА рд╢реБрд░реБрдЖрдд рдХреА рддрд╛рд░реАрдЦ рдФрд░ рд╕рдордп
 14 |  рд╕рдорд╛рдкреНрддрд┐ рддрд┐рдерд┐ рдФрд░ рд╕рдордп
 36 |  рд╕реЗрдХрдВрдб рдореЗрдВ рдмрд╛рдд рдХреА рдЕрд╡рдзрд┐ 


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

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

  | 7 | 8 | 9 | 12 | 14 | 36 |
 | 3022 | 222222 | 333333 | 2011-05-23 13: 07: 54 | 2011-05-23 13: 37: 54 | 1800 |
 | 3022 | 222222 | 333333 | 2011-05-23 13: 07: 54 | 2011-05-23 13: 59: 40: 3106 |

 | 3022 | 444444 | 555555 | 2011-05-23 14: 53: 52 | 2011-05-23 15: 23: 52 | 1800 |
 | 3022 | 444444 | 555555 | 2011-05-23 14: 53: 52 | 2011-05-23 15: 53: 52: 3600 |
 | 3022 | 444444 | 555555 | 2011-05-23 14: 53: 52 | 2011-05-23 16: 00: 50: - 4018

 | 3022 | 666666 | 777777 | 2011-05-23 19: 15: 55 | 2011-05-23 19, 45: 54: 1800 |
 | 3022 | 666666 | 777777 | 2011-05-23 19: 15: 55 | 2011-05-23 20: 15: 15: 54 | 3600 |
 | 3022 | 666666 | 777777 | 2011-05-23 19: 15: 55 | 2011-05-23 20: 45: 54 | 5400 |
 | 3022 | 666666 | 777777 | 2011-05-23 19: 15: 55 | 2011-05-23 20: 47: 17 | 5483 | 


рдЕрдм рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдирдордХ рдХреНрдпрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдЕрддрд┐рд░рд┐рдХреНрдд рдХреНрд╖реЗрддреНрд░реЛрдВ, рдЕрдХреНрд╖рд░реЛрдВ рдФрд░ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рдПрдХ рд╕рдореВрд╣ рдХреЗ рдмреАрдЪ, рд╣рдЬрд╛рд░реЛрдВ рд╕рдорд╛рди рд▓реЛрдЧреЛрдВ рдХреЗ рдмреАрдЪ рдЗрди рд░рд┐рдХреЙрд░реНрдбреЛрдВ рдХреЛ рдЦреЛрдЬрдирд╛ рдореЗрд░реЗ рд▓рд┐рдП рдЖрд╕рд╛рди рдирд╣реАрдВ рдерд╛ред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдпрд╣ рдпрд╛ рддреЛ рднрд╛рдЧреНрдп, рдпрд╛ рдЕрдВрддрд░реНрдЬреНрдЮрд╛рди, рдпрд╛ рдЬрд╛рджреВ рдерд╛ред :) рдФрд░ рдЙрддреНрддрд░ рд╕рд░рд▓ рд╣реИ: рд╣рд░ рдЖрдзреЗ рдШрдВрдЯреЗ (1800 рд╕реЗрдХрдВрдб) рдкрд░ рдЙрдкрдХрд░рдг рдХреБрдЫ рдРрд╕рд╛ рд╣реЛрдиреЗ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ "рдмрд╛рддрдЪреАрдд рдореЗрдВ рдореАрд▓ рдХрд╛ рдкрддреНрдерд░" рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рддрд╛ рд╣реИред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрдЧрд░ рдмрд╛рддрдЪреАрдд рдХреЗ рдЖрдЦрд┐рд░реА 29 рдорд┐рдирдЯ рдХрд┐рд╕реА рддрд░рд╣ рдЦреЛ рдЧрдП рдереЗ, рддреЛ рдкреВрд░реЗ рдкрд┐рдЫрд▓реЗ рддреАрди рдШрдВрдЯреЗ рдХреЗ рдкреНрд░рд╡рдЪрди рдХреЛ рдХрдИ рдмрд╛рд░ рджрд░реНрдЬ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ - рдЕрдзрд┐рдХ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдпрддрд╛ рдХреЗ рд▓рд┐рдПред рдкрд┐рдЫрд▓реЗ рд░рд┐рдХреЙрд░реНрдб рдореЗрдВ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдбреЗрдЯрд╛ рд╣реЛрдЧрд╛ред рд╢рд╛рдпрдж, рдЙрдкрдХрд░рдг рдкрд░, рдореАрд▓ рдХреЗ рдкрддреНрдерд░ рдХреА рдЕрд╡рдзрд┐ рдХреЛ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдм рддрдХ рдЙрдирдХреА рд╕рдВрдЦреНрдпрд╛ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддреА рд╣реИ: [1800, 3600, 5400, 7200, 9000, 9000 рд╕реЗ рдЕрдзрд┐рдХ ..] рдпрд╣ рднреА рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рд╣реИ рдХрд┐ рдореАрд▓ рдХрд╛ рдкрддреНрдерд░ рдХрдИ "рдорд╣рддреНрд╡рд╣реАрди" рд▓реЛрдЧреЛрдВ рдореЗрдВ рднрд┐рдиреНрди рд╣реЛрддрд╛ рд╣реИ рдкрд░рд┐рдгрд╛рдо рд░рд┐рдХреЙрд░реНрдб рд╕реЗ рдлрд╝реАрд▓реНрдбред рд╢рд╛рдпрдж рдпрд╣ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЗрд╕ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд╛рдпрдХ рд╣реИ рддрд╛рдХрд┐ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдХреЛ рдмреЗрд╣рддрд░ рддрд░реАрдХреЗ рд╕реЗ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗ, рд▓реЗрдХрд┐рди рдЕрдм рдореИрдВрдиреЗ рдЗрд╕ рд╢реНрд░реГрдВрдЦрд▓рд╛ рд╕реЗ рдЕрд╡рдзрд┐ рдХреЗ рд╕рд╛рде рд╕рднреА рд░рд┐рдХреЙрд░реНрдбреЛрдВ рдХреЛ рдЫреЛрдбрд╝рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рд╣реИред рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рд░реВрдк рд╕реЗ, рдпрд╣рд╛рдВ рд╕рд╛рдорд╛рдиреНрдп рдХреЙрд▓ рдХреЗ рдХреБрдЫ рдЫреЛрдЯреЗ рдкреНрд░рддрд┐рд╢рдд рдЦреЛ рдЬрд╛рдПрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рд▓рд┐рдП рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рдХреЛрдИ рд╡реНрдпрдХреНрддрд┐ рдЖрдзреЗ рдШрдВрдЯреЗ рдХреЗ рд▓рд┐рдП рджреВрд╕рд░реА рдмрд╛рдд рдХрд░реЗред рдЗрд╕ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдмрд╣реБрдд, рдмрд╣реБрдд рдЫреЛрдЯреА рд╣реИ, рдФрд░ рд╣рдорд╛рд░реЗ рд╡реЙрд▓реНрдпреВрдо рдЗрддрдиреЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИрдВ рдХрд┐ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдХрд╛ рдХрд╛рдиреВрди рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдирдореВрдиреЗ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИред рд╣рдордиреЗ рдЗрд╕ рдШрдЯрдирд╛ рдХреЛ рд░рдЪрдирд╛рддреНрдордХ рд░реВрдк рд╕реЗ рдмреБрд▓рд╛рдпрд╛: "1800 рд╕реЗрдХрдВрдб рдХреА рд╕рдорд╕реНрдпрд╛ред"

рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ


рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░, рдореИрдВрдиреЗ рдЪрд╛рд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдмрдирд╛рдП рдЬреЛ рдЖрд╡рд╢реНрдпрдХ рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдорд░реНрдЬ рдХрд░ рдЙрдкрдпреЛрдЧреА рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рддрд╛ рд╣реИред рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ, рд╡реЗ рдкрд╛рд░реНрд╕рд░ рдФрд░ рд╡рд┐рд▓рдп рдереЗ - рджреЛ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЛ рдЕрд▓рдЧ рд╕реЗ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдФрд░ рдПрдХ рддреАрд╕рд░реЗ рдореЗрдВ рдорд┐рд▓рд╛рдпрд╛ рдЧрдпрд╛, рдЬрд┐рд╕реЗ рд╡рд┐рд▓рдп рднреА рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрди рд╕рднреА рдиреЗ рдмрд╣реБрдд рдзреАрд░реЗ-рдзреАрд░реЗ рдХрд╛рдо рдХрд┐рдпрд╛ рдФрд░ рдмрд╣реБрдд рд╕рд╛рд░реА рдореЗрдореЛрд░реА рдХрд╛ рдЙрдкрднреЛрдЧ рдХрд┐рдпрд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╡реЗ рдХрд╛рд░реНрдпреЛрдВ рд╕реЗ рдореБрдХрд╛рдмрд▓рд╛ рдХрд░рддреЗ рдереЗред рд╡реЗ 500 рдПрдордмреА рдореЗрдореЛрд░реА (рдпрд╛ рдЗрд╕рд╕реЗ рднреА рдЕрдзрд┐рдХ, рдХреНрдпреЛрдВрдХрд┐ рд╕реНрд╡реИрдк рдХрд╛рдо рдХрд┐рдпрд╛ рд╣реИ) рдХреЗ рд╕рд╛рде рдХрдо рд╕реЗ рдХрдо 10 рдорд┐рдирдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╣реАрдиреЗ рдХреЗ рдбреЗрдЯрд╛ (240 рд▓рд╛рдЗрдиреЛрдВ = 720000 рд▓рд╛рдЗрдиреЛрдВ рдХреА 3000 рдлрд╛рдЗрд▓реЗрдВ) рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдмрд╣реБрдд, рдмрд╣реБрдд рдбрд░рд╛рд╡рдирд╛ рдкрд░рд┐рдгрд╛рдоред рдФрд░ рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдХрд╛рдо рдорд╣реАрдиреЗ рдореЗрдВ рдПрдХ рдмрд╛рд░ рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдореЗрд░реЗ рд╕рд╛рдереА рдиреЗ рд╣рд╛рд╕реНрдХреЗрд▓ рдкрд░ рдЪрд┐рд▓реНрд▓рд╛рдпрд╛ ред рд╕рдЪ рд╣реИ, рд╣рд╛рд╕реНрдХреЗрд▓ рдХрд╛ рдЗрд╕рд╕реЗ рдХреЛрдИ рд▓реЗрдирд╛-рджреЗрдирд╛ рдирд╣реАрдВ рд╣реИ; рдореИрдВрдиреЗ рдЗрд╕реЗ рдПрдХ рдиреМрд╕рд┐рдЦрд┐рдпрд╛ рдлрдВрдХреНрд╢рдирд▓рд┐рд╕реНрдЯ рдХреА рдХрдИ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЧрд▓рддрд┐рдпреЛрдВ рдХреЗ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдореЗрдВ рдмрдирд╛рдпрд╛, рдЬрд┐рд╕рдХреА рд╡рдЬрд╣ рд╕реЗ рдХреБрдЯрд┐рд▓ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдиреЗ рдмрд╣реБрдд рдмреБрд░рд╛ рдХрд╛рдо рдХрд┐рдпрд╛ред рд▓реЗрдХрд┐рди рдЙрдиреНрд╣реЛрдВрдиреЗ рдХрд╛рдо рдХрд┐рдпрд╛! рдЗрд╕рд╕реЗ рднреА рдЕрдзрд┐рдХ: рдкреНрд░реЛрдЧреНрд░рд╛рдо (рдФрд░ рдЙрдирдореЗрдВ рд╕реЗ рд╕рдмрд╕реЗ рдмрдбрд╝реА рдХреЗрд╡рд▓ 150 рдЙрдкрдпреЛрдЧреА рд▓рд╛рдЗрдиреЗрдВ рд▓реЗрддрд╛ рд╣реИ) рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣рд╛рдВ рд╡реЗ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╣реИрдВ рдЬреЛ рдЙрдкрд▓рдмреНрдз рдереАрдВ:

1. рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдмрд┐рдирд╛ рдореЛрдб рдореЗрдВ рдХрд╛рдо рдХрд░реЗрдВред рдлрд╝реАрд▓реНрдб рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд▓реА рдЬрд╛рддреА рд╣реИрдВ, рдкрд┐рдЫрд▓реЗ рдорд╣реАрдиреЗ рдХреА рдлрд╛рдЗрд▓реЗрдВ рд▓реА рдЬрд╛рддреА рд╣реИрдВред
2. рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдореЛрдб рдореЗрдВ рдХрд╛рдо рдХрд░реЗрдВ:
- рдлрд╝реАрд▓реНрдбреНрд╕ [рдХреНрд╖реЗрддреНрд░ рд╕реВрдЪрдХрд╛рдВрдХреЛрдВ рдХреА рд╕реВрдЪреА>] - рдЬреЛ рдХреНрд╖реЗрддреНрд░ рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП (рдкрд╛рд░реНрд╕рд░ рдлреАрд▓реНрдбреНрд╕ [1, 24, 55]);
- (yyyy, mm) - рдХрд┐рд╕ рдорд╣реАрдиреЗ рд╕реЗ рдкреНрд░рдХреНрд░рд┐рдпрд╛ (рд╡рд┐рд▓рдп (2011, 5));
-W - рдмрд╛рд╣рд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдХрдВрд╕реЛрд▓ рд╡рд┐рдВрдбреЛ рдХреЛ рдмрдВрдж рди рдХрд░реЗрдВ ("рдкреНрд░рддреАрдХреНрд╖рд╛" рд╢рдмреНрдж рд╕реЗ)ред
3. рдкрд░рд┐рдгрд╛рдо рддреАрди рдлрд╛рдЗрд▓реЗрдВ рдереАрдВ:
- yyyy.mm.txt - рдЗрд╕ рдорд╣реАрдиреЗ рдХреЗ рд▓рд┐рдП рдХрдЪреНрдЪреЗ рдЯреНрд░реИрдлрд╝рд┐рдХ рд╡рд╛рд▓реА рд╕рднреА рдлрд╛рдЗрд▓реЗрдВ рдЗрд╕рдореЗрдВ рд╡рд┐рд▓реАрди рд╣реЛ рдЧрдИрдВ;
- рд╕рдВрд╕рд╛рдзрд┐рддред txt - рдХреЗрд╡рд▓ рдЗрд╕ рдорд╣реАрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдлрд╝реАрд▓реНрдб рдХреЗ рд╕рд╛рде рдлрд╝рд╛рдЗрд▓ рдХрд░реЗрдВ;
- yyyy.mm.txt.log - рдПрдХ рд▓реЙрдЧ рдлрд╝рд╛рдЗрд▓ рдЬрд╣рд╛рдВ рдХрдЪреНрдЪреА рдХрдЪреНрдЪреА рдлрд╛рдЗрд▓реЗрдВ рд╕реВрдЪреАрдмрджреНрдз рд╣реИрдВ рдФрд░ рд╕рд╛рд░рд╛рдВрд╢ рдЬрд╛рдирдХрд╛рд░реА рд▓рд┐рдЦреА рдЧрдИ рд╣реИ (рд▓рд╛рдЗрдиреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛, рдлрд╛рдЗрд▓реЗрдВ, рддрд┐рдерд┐ рд╕реАрдорд╛)ред
4. рдХрд╛рд░реНрдпрдХреНрд░рдо рд╕рдВрд╕рд╛рдзрд┐рдд рдЯреНрд░реИрдлрд╝рд┐рдХ рдХреЗ рдЖрдВрдХрдбрд╝реЗ рдФрд░ рдЙрджрд╛рд╣рд░рдг рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВред

рдПрдХ рджреЛ рдмрд╛рд░ рд╣рдордиреЗ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдлрд┐рд░, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдореИрдВрдиреЗ рдЦрд░реЛрдВрдЪ рд╕реЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрд╛ред рдкреБрд░рд╛рдиреЗ рдХреЛрдб рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдХреБрдЯрд┐рд▓ рдХреЛрдб, рдЕрдирд╛рд╡рд╢реНрдпрдХ рд╕рд╛рдЗрдХрд┐рд▓реЗрдВ, рдмреЗрд╡рдХреВрдл рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдФрд░ рдЕрдЬреАрдм рд╕рдорд╛рдзрд╛рди рдереЗред рдирддреАрдЬрддрди, рдЪреМрдерд╛ рдХрд╛рд░реНрдпрдХреНрд░рдо, NgnParser, рд╕рдорд╛рди рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдФрд░ рд╕рдорд╛рди рдбреЗрдЯрд╛ рд╕реЗрдЯ рдХреЗ рд╕рд╛рде, 10 рдорд┐рдирдЯ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди 10 рд╕реЗрдХрдВрдб, рдХреЗрд╡рд▓ 10 рдПрдордмреА рдореЗрдореЛрд░реА рдХрд╛ рдЙрдкрднреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдЧрддрд┐ рдореЗрдВ, рдЕрдВрддрд░ рдкрд░рд┐рдорд╛рдг рдХреЗ рд▓рдЧрднрдЧ рджреЛ рдХреНрд░рдо рд╣реИрдВ, рдФрд░ рд╕реНрдореГрддрд┐ рдореЗрдВ рдХрдо рд╕реЗ рдХрдо рдПрдХ! рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рдзреАрдорд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рддрд░рд╣ рдХреА рдЧрдбрд╝рдмрдбрд╝реА рдХреНрдпрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ? рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдРрд╕реЗ рд▓реЛрдЧ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдореИрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рд╣реА рд░реЗрдХ рдкрд░ рдХрджрдо рд░рдЦрд╛ рд╣реИ, рдЬреЛ рдЕрдкрдиреЗ рдХреБрдЯрд┐рд▓ рд╣рд╛рдереЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рднрд╛рд╖рд╛ рдХреА рдордВрджрддрд╛ рдореЗрдВ рдЕрдзрд┐рдХ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ - рдмрд┐рдирд╛ рдХрд╛рд░рдг рдХреЗ рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдмрд╣реБрдд рд╕рд╛рд░реА рдЪреАрдЦреЗрдВ рд╣реИрдВ рдФрд░ рдмрд┐рдирд╛ рдХрд╛рд░рдг ... рд╣рд╛рд╕реНрдХреЗрд▓ рдПрдХ рдЕрджреНрднреБрдд рднрд╛рд╖рд╛ рд╣реИред рдЗрди рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЛ рд▓рд┐рдЦрдирд╛ рдореЗрд░реЗ рд▓рд┐рдП рдЖрд╕рд╛рди рдерд╛ред рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рджреЛ рдХрд╛рд░реНрдп рджрд┐рд╡рд╕реЛрдВ рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рдмрд┐рддрд╛рдПред рдФрд░ рд╣рд░ рдмрд╛рд░ рдореБрдЭреЗ рдмрд╣реБрдд рд╕реБрдЦ рдорд┐рд▓рд╛ред рдореИрдВ рд╕реЛрдЪ рднреА рдирд╣реАрдВ рд╕рдХрддрд╛ рдХрд┐ рдЕрдЧрд░ рдореИрдВ рд╕реА рдореЗрдВ рднреА рдРрд╕рд╛ рд╣реА рдХрд░рддрд╛ рддреЛ рдХрд┐рддрдиреА рдкреАрдбрд╝рд╛ рд╣реЛрддреА ред

рдкрд╣рд▓рд╛ рдХрд╛рд░реНрдпрдХреНрд░рдо


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

рд░рд┐рдкреНрд▓реЗрд╕рдЪрд░реНрд╕ :: рдЪрд╛рд░ -> рдЪрд╛рд░ -> рдЪрд╛рд░ -> рдЪрд╛рд░
рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рд╕реАрдПрдЪрд╕реА рдХреЗ рд╕рд╛рде рд╕реА = рдЕрдЧрд░ рд╕реА == рдХреНрдпрд╛ рд╕реА рддреЛ рд╕реА рдХреЗ рд╕рд╛рде рд╕реА

interestFields :: [ рд╕реНрдЯреНрд░рд┐рдВрдЧ ] -> [ рдЗрдВрдЯ ] -> [ рд╕реНрдЯреНрд░рд┐рдВрдЧ ]
interestFields s takeWhat = рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд - рд╕реНрдЯрдм

isR200 :: [ рд╕реНрдЯреНрд░рд┐рдВрдЧ ] -> рдмреВрд▓
isR200 s = ( рд╣реЗрдб s ) == "R200"

processLine :: рд╕реНрдЯреНрд░рд┐рдВрдЧ -> рд╕реНрдЯреНрд░рд┐рдВрдЧ
processLine s = рдпрджрд┐ isR200 sInWords рддреЛ unwords ( interestFields sInWords [ 1 , 2 , 3 ] ) рдФрд░ [ ] - [1,2,3] - рдкрд░реАрдХреНрд╖рдг рдХреНрд╖реЗрддреНрд░
рдЬрд╣рд╛рдБ sInWords = рд╢рдмреНрдж ( рдорд╛рдирдЪрд┐рддреНрд░ ( рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди) | '' ' ) s )

processString :: рд╕реНрдЯреНрд░рд┐рдВрдЧ -> [ рд╕реНрдЯреНрд░рд┐рдВрдЧ ]
processString s = рдорд╛рдирдЪрд┐рддреНрд░ processLine ( рд▓рд╛рдЗрдиреЗрдВ $ s )

рдореБрдЦреНрдп :: IO ( )
рдореБрдЦреНрдп = рдХрд░рддреЗ рд╣реИрдВ
str <- readFile "merged.txt"
PutStrLn ( " \ r \ n " рдЗрдВрдЯрд░рд▓реЗрдХреНрдЯ рдХрд░реЗрдВ ( $ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░реЗрдВ ) )


рдЖрдк рддреБрд░рдВрдд рдкреНрд░рдХрд╛рд░ рдЪрд╛рд░ -> рдЪрд╛рд░ -> рдЪрд╛рд░ -> рдЪрд╛рд░ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рд╛рде рдЕрдЬреАрдм рдлрд╝рдВрдХреНрд╢рди рд░рд┐рдкреНрд▓реЗрд╕рдореЗрдВрдЯ рдиреЛрдЯрд┐рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╡рд┐рдЪрд╛рд░ рдпрд╣ рдерд╛: рдПрдХ рд▓рд╛рдЗрди-рд░рд┐рдХреЙрд░реНрдб рд▓реЗрдВ, рд╡рд░реНрдЯрд┐рдХрд▓ рдмрд╛рд░ рдХреА рдЬрдЧрд╣ рд▓реЗрдВ '|' рдЕрдВрддрд░рд┐рдХреНрд╖ рджреНрд╡рд╛рд░рд╛ рдФрд░ рд╢рдмреНрджреЛрдВ рдХреЛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╢рдмреНрдж рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:

sInWords = рд╢рдмреНрдж ( рдирдХреНрд╢рд╛ ( рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди) | '' ' ) s )


SInWords рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╣рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд░реВрдкрд╛рдВрддрд░рдг рдкреНрд░рд╛рдкреНрдд рд╣реЛрддреЗ рд╣реИрдВ:

"ред R200 | 99999 | 111111 | рд╕реАрдЖрд░, рд╕реАрдПрд╕, рдПрдПрдо | 1 | 3022 | 222222 | 333333.pg 2011-06-23 11: 33: 58 |" ->
"R200 99999 111111 CR, CS, AM 1 1 3022 222222 333333 2011-06-23 11:33:58" ->
[ "R200" , "99999" , "111111" , "CR, CS, AM" , "1" , "1" , "3022" , "222222" , "333333" , "2011-06-23" , " 11:33:58 " ]


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

рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди '' -> '*';
рдХреА рдЬрдЧрд╣ '|' -> '';
рд╢рдмреНрдж рд╕рдорд╛рд░реЛрд╣ рджреНрд╡рд╛рд░рд╛ рд╢рдмреНрдж рдХреЛ рддреЛрдбрд╝рдирд╛;
рдлрд╝реАрд▓реНрдб рдХреА рдПрдХ рд╕реВрдЪреА рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдирд╛, рдЗрдЪреНрдЫрд┐рдд рд╕реВрдЪрдХрд╛рдВрдХ рдХреЗ рд╕рд╛рде рдлрд╝реАрд▓реНрдб рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛;
Unwords рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде рдлрд╝реАрд▓реНрдб рдорд░реНрдЬ рдХрд░реЗрдВ;
рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди '' -> ''
рд░рд┐рдкреНрд▓реЗрд╕рдореЗрдВрдЯ '*' -> ''

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

- рддрд╛рдХрд┐ "" "рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдЦрд╛рд▓реА рдлрд╝реАрд▓реНрдб рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рд╣реЛ рдЬрд╛рдПрдВ, рдЙрдирдХреЗ рдмреАрдЪ рдПрдХ рд╕реНрдерд╛рди рдбрд╛рд▓рд╛ рдЬрд╛рддрд╛ рд╣реИред
refieldDoubles :: рд╕реНрдЯреНрд░рд┐рдВрдЧ -> рд╕реНрдЯреНрд░рд┐рдВрдЧ
refieldDoubles [ ] = [ ]
RefieldDoubles ( ' | ': [ ]] = "|
RefieldDoubles ( ' | ': ' | ': ss ) = "| | | ++ ( рд░рд┐рдлрд┐рд▓ рдбрдмрд▓реНрд╕ ( ' | ': ss ) )
refieldDoubles ( s: [ ]] = [ s ]
refieldDoubles ( s: ss ) = s: ( refieldDoubles ss )


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

рд╡рд┐рднрд╛рдЬрд┐рдд "|" "ред R200 | 99999 | 111111 | рд╕реАрдЖрд░, рд╕реАрдПрд╕, рдПрдПрдо | 1 | 3022 | 222222 | 333333.pg 2011-06-23 11: 33: 58 |" ->
[ "" , "R200" , "99999" , "111111" , "CR, CS, AM" , "1" , "1" , "3022" , "222222" , "333333" , "" , "" "2011-06-23 11:33:58" , "" ]

рдореИрдВ рдХреНрдпрд╛ рдХрд╣ рд╕рдХрддрд╛ рд╣реВрдВ ... рдлреЗрд╕рдкрд╛рд▓рдо рдХреЛрдИ рд╢рдмреНрдж рдирд╣реАрдВ, рдХреЗрд╡рд▓ рднрд╛рд╡рдирд╛рдПрдВред

рдХреНрдпрд╛ рд╕реБрдзрд╛рд░ рд╕рдВрднрд╡ рд╣реИрдВ


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

рд░рд┐рдкреНрд▓реЗрд╕рдореЗрдВрдЯреНрд╕ s = map ( рд░рд┐рдкреНрд▓реЗрд╕рдЪреЗрдпрд░ тАЩ | тАЩ тАЩтАЩ ) ( рдореИрдкреНрд╕ ( рд░рд┐рдкреНрд▓реЗрд╕рдХрд░ тАЩтАЩ тАЩ * тАЩ тАЩs )
- ->
рд░рд┐рдкреНрд▓реЗрд╕рдордмрд▓реНрд╕ = рдирдХреНрд╢рд╛ ( рд░рд┐рдкреНрд▓реЗрд╕рдЪреЗрдпрд░ тАЩ | тАЩ тАЩтАЩ ред рд░рд┐рдкреНрд▓реЗрд╕рдХрд░ тАЩтАЩ тАЩтАЩ тАЩтАЩ )


isR200 s = ( рд╣реЗрдб s ) == "R200"
- ->
isR200 ( "R200" : _ ) = рд╕рддреНрдп
isR200 _ = рдЧрд▓рдд


рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рд╕реАрдПрдЪрд╕реА рдХреЗ рд╕рд╛рде рд╕реА = рдЕрдЧрд░ рд╕реА == рдХреНрдпрд╛ рд╕реА рддреЛ рд╕реА рдХреЗ рд╕рд╛рде рд╕реА
- ->
рдмрджрд▓реЛ рд╡реНрд╣рд╛рдЯреНрд╕рдПрдк withC c | c == whatC = withC
| рдЕрдиреНрдпрдерд╛ = рд╕реА


processLine s = рдпрджрд┐ isR200 sInScript рддрдм unwords ( interestFields sInbooks [ 1 , 2 , 3 ] рдФрд░ ] [ ]
рдЬрд╣рд╛рдБ sInWords = рд╢рдмреНрдж ( рдорд╛рдирдЪрд┐рддреНрд░ ( рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди) | '' ' ) s )
- ->
processLine s | isR200 sInatalog = unwords ( interestFields sInWords [ 1 , 2 , 3 ] )
| рдЕрдиреНрдпрдерд╛ = [ ]
рдЬрд╣рд╛рдБ sInWords = рд╢рдмреНрдж ред рдирдХреНрд╢рд╛ ( рдмрджрд▓реЗрдВ ' | ' '' ' ) $ s


processString s = рдорд╛рдирдЪрд┐рддреНрд░ processLine ( рд▓рд╛рдЗрдиреЗрдВ $ s )
- ->
processString = map processLine ред рдкрдВрдХреНрддрд┐рдпрд╛рдВ


рдЗрдВрдЯрд░рдХрд▓реЗрдЯ рдлрд╝рдВрдХреНрд╢рди "\ r \ n" рдХреЛ рдЖрдо рддреМрд░ рдкрд░ рдЕрдирд▓рд╛рдЗрди рдХреЗ рд╕рд╛рде рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ ред рдпрд╣ рдЫреЛрдЯрд╛ рдФрд░ рд╕реНрдкрд╖реНрдЯ рд╣реЛрдЧрд╛, рдФрд░ рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рдЕрдирд▓рд┐рд╕реНрдЯреНрд╕ рдиреЗ рд╢рд╛рдирджрд╛рд░ рдкреНрд░рджрд░реНрд╢рди рджрд┐рдЦрд╛рдпрд╛ - рдХрдо рд╕реЗ рдХрдо 30%:

  ItemCnt testUnlines (ns) testIntercalate (ns) рдкреНрд░рддрд┐рд╢рдд
 10 23.84 34.05 29.9
 100 22.70 34.62 34.4
 1000 23.28 35.48 34.3
 10000 22.17 35.48 37.5
 50,000 22.13 33.26 33.4
 100000 21.06 35.47 40.6
 200000 22.70 34.05 33.3 


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

- рдкреБрд░рд╛рдирд╛ рдХреЛрдб:
- рддрд░реНрдХ 1 - рдХрдЪреНрдЪреЗ рднреЛрдЬрди рдХреА рд╕реВрдЪреА
- рддрд░реНрдХ 2 - рдЖрд╡рд╢реНрдпрдХ рдЕрдиреБрдХреНрд░рдорд┐рдд рд╕реВрдЪреА
рдЯреЗрдХрдЗрдВрдЯрд░реЗрд╕реНрдЯ :: [ рд╕реНрдЯреНрд░рд┐рдВрдЧ ] -> [ рдЗрдВрдЯ ] -> [ рд╕реНрдЯреНрд░рд┐рдВрдЧ ]
takeInterest _ [ ] = [ ]
takeInterest ss ( n: ns ) = [ ss !! n ] ++ takeInterest ss ns

- рдирдпрд╛ рдХреЛрдб:
- рддрд░реНрдХ 1 - рдмреИрдЯрд░реА
- рддрд░реНрдХ 2 - рдЖрд╡рд╢реНрдпрдХ рдЕрдиреБрдХреНрд░рдорд┐рдд рд╕реВрдЪреА
- рддрд░реНрдХ 3 - рдХрдЪреНрдЪреЗ рдЦреЗрддреЛрдВ рдХреА рд╕реВрдЪреА
collectFields :: Int -> [ Int ] -> [ String ] -> [ String ]
collectFields _ _ [ ] = [ ]
collectFields idx fis ( s: ss ) | idx ` elem` fis = s: collectFields ( idx + 1 ) fis ss
collectFields idx fis ( s: ss ) | рдЕрдиреНрдпрдерд╛ = collectFields ( idx + 1 ) fis ss


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

  ItemCnt takeInterest (ns) collectFields (ns) Percent
 10 17.33 36.84 52.9
 100 20.58 36.84 44.1
 1000 21.67 37.92 42.8
 10000 21.13 36.84 42.6
 50,000 21.67 37.92 42.8 


рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВ


рдЕрдЧрд▓рд╛ рдХрд╛рд░реНрдпрдХреНрд░рдо - рд╡рд┐рд▓рдп - рдкрд┐рдЫрд▓реЗ рдорд╣реАрдиреЗ рд╕реЗ рд╕рднреА рдкрд╛рда рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдПрдХ рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рдерд╛ред (рдореИрдВ рдЗрд╕реЗ рд╣рд░ рдмрд╛рд░ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛, рдФрд░ рдЖрд▓рд╕реНрдп, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ, рдкреНрд░рдЧрддрд┐ рдХрд╛ рдЗрдВрдЬрди рд╣реИред) рд╕рд╡рд╛рд▓ рдЙрдарддрд╛ рд╣реИ: рд╣рдо рдХреИрд╕реЗ рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкрд┐рдЫрд▓реЗ рдорд╣реАрдиреЗ рдХреНрдпрд╛ рд╣реЛрдЧрд╛? рд╣рд╛рдВ, рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдпрд╣ рд╕рд░рд▓ рд╣реИ: рд╣рдо рд╡рд░реНрддрдорд╛рди рддрд┐рдерд┐ рд▓реЗрддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рдорд╣реАрдиреЗ рдШрдЯрд╛рддреЗ рд╣реИрдВред рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдорд╣реАрдиреЗ рдХреЗ рд╢реБрд░реБрдЖрддреА рджрд┐рдиреЛрдВ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдЕрдкреЗрдХреНрд╖рд┐рдд рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рдереАред рд╡рд░реНрддрдорд╛рди рджрд┐рдирд╛рдВрдХ рдФрд░, рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ, рджрд┐рдирд╛рдВрдХ-рд╕рдордп рдХреЗ рд╕рд╛рде рд╕рдВрдЪрд╛рд▓рди рд╕рдордп рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рд╣реЛрддрд╛ рд╣реИред рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд╕рд╛рде рд╕рдВрдЪрд╛рд▓рди System.Directory рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИред рджреЛрдиреЛрдВ рдХрд╛рд░реНрдп рдореБрдЦреНрдп рд░реВрдк рд╕реЗ IO рдореЛрдиреИрдб рдореЗрдВ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдЙрд╕ рд╕рдордп рдореБрдЭреЗ рдЕрднреА рднреА рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирд╣реАрдВ рдкрддрд╛ рдерд╛ рдХрд┐ рдореЛрдирд╛рдб рдХреЛрдб рдХреЛ рдХреИрд╕реЗ рдХрдВрдШреА рдХрд░рдирд╛ рд╣реИ, рдЕрдВрдд рдореЗрдВ рдпрд╣ рдбрд░рд╛рд╡рдирд╛ рд▓рдЧрддрд╛ рд╣реИ (рд╡рд┐рд▓рдп, рд╕рдВрд╢реЛрдзрди 14):

рдореБрдЦреНрдп :: IO ( )
рдореБрдЦреНрдп = рдХрд░рддреЗ рд╣реИрдВ
args <- getArgs
curDir <- getCurrentDirectory
dirContents <- getDirectoryContents curDir
curTime <- рдЯреАред getClockTime
monthAgoTime <- $ T рд▓реМрдЯрд╛рдПрдВ ред addToClockTime ( T. TimeDiff 0 ( 1 ) 0 0 0 0 0 0 ) curTime
CalendarMonthAgoTime <- T. рдХреИрд▓реЗрдиреНрдбрд░рдЯрд╛рдЗрдо рдорд╛рд╣рдЕрдЧреЛ рдЯрд╛рдЗрдо
Let рд╢рд╛рдпрджDateRange = рдХреЗрд╕ рдЖрд░реНрдЧрдиреНрд╕
( a: b: _ ) -> readDateRange ( unwords [ a , b ] )
_ -> рдХреЗрд╡рд▓ $ defaultDateRange CalendarMonthAgoTime
рдорд╛рдорд▓рд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ
рдмрд╕ рдбреЙ -> рдХрд░рдирд╛
рдЖрдЬреНрдЮрд╛ рджреЗрдирд╛ fsToMerge = filesToMerge dirContents рдбреЙ
let fsToMergeCountStr = $ рд▓рдореНрдмрд╛рдИ fsToMerge рджрд┐рдЦрд╛рдПрдВ
рд▓реЗрдЯ рдорд░реНрдЬрд▓реЛрдЧ = ( newFileName dr ++ ".log" )
let dateRangeMsg = "DateRange:" ++ рд╢реЛ рдбреЙ
fsContents <- fsToMerge рдХреЛ рдорд░реНрдЬ рдХрд░реЗрдВ
рд░рд╛рдЗрдЯрдлрд╛рдЗрд▓ ( newFileName dr ) ( рдЕрдирд▓реЙрдЧреНрд╕ fsContents )
writeFile mergeLog ( unlines fsToMerge ++ printf " \n %s \n Total files: %s" dateRangeMsg fsToMergeCountStr )
putStrLn ( unlines fsContents )
putStrLn dateRangeMsg
--putStrLn ("Files to merge: " ++ unlines fsToMerge)
putStrLn ( printf "Count of files: %s. See %s for file list." fsToMergeCountStr mergeLog )
Nothing -> putStrLn ( "Invalid date range." )


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

рдорд░реНрдЬ :: [ рд╕реНрдЯреНрд░рд┐рдВрдЧ ] -> IO [ рд╕реНрдЯреНрд░рд┐рдВрдЧ ]
рдорд░реНрдЬ fsToMerge = mapM readFile fsToMerge


рдпрд╣ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рд╕реВрдЪреА рд▓реЗрддрд╛ рд╣реИ, рдЙрдиреНрд╣реЗрдВ рдкрдврд╝рддрд╛ рд╣реИ, рдФрд░ рдЙрдирдХреА рд╕рд╛рдордЧреНрд░реА рдХреА рд╕реВрдЪреА рд▓реМрдЯрд╛рддрд╛ рд╣реИред рдХреЛрдб рдореЗрдВ рджреЛ рд▓рд╛рдЗрдиреЗрдВ рд╣реИрдВ:

рдХрд░рдирд╛
...
fsContents <- рдорд░реНрдЬ fsToMerge
WriteFile ( newfilename рдбреЙ ) ( unlines fsContents )
...


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

рдХрд░рдирд╛
...
fsContents <- readFilesToMerge fsToMerge
рджреЗрдирд╛ mergedContents = unlines fsContents
WriteFile ( newfilename рдбреЙ ) mergedContents
рдЬрд╛рдиреЗ processedContentStr = unlines $ processData nedeedFields mergedContents
...


рдФрд░ рдпрд╣ рд╕рд┐рд░реНрдл рдлреЗрд╕рдкреНрд▓рдо рдЦрд░рд╛рдм рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдбреЗрдЯрд╛рдлреНрд▓реЛ рдХреЙрдиреНрд╕реЗрдкреНрдЯ рдХрд╛ рдШреЛрд░ рдЙрд▓реНрд▓рдВрдШрди рд╣реИред рдпрд╣ рдЗрд╕ рддрд░рд╣ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП:

 рд╕реНрдХреАрдо 1
       _____ _____ _____ 
       |  |  |  |  |  |
рдП 1 -> | рдПрдл (рдП 1) | -> рдмреА 1 -> | рдЬреА (рдмреА 1) | -> C1 -> | H (C1) | -> рдкрд░рд┐рдгрд╛рдо 1 -> рдмрдЪрд╛рдУ
      | _____ | | _____ | | _____ |

       _____ _____ _____
       |  |  |  |  |  |
рдП 2 -> | рдПрдл (рдП 2) | -> рдмреА 2 -> | рдЬреА (рдмреА 2) | -> C2 -> | H (C2) | -> рдкрд░рд┐рдгрд╛рдо 2 -> рдмрдЪрд╛рдУ
      | _____ | | _____ | | _____ |

       _____ _____ _____ 
       |  |  |  |  |  |
A3 -> | F (A3) | -> рдмреА 3 -> | рдЬреА (рдмреА 3) | -> C3 -> | H (C3) | -> рдкрд░рд┐рдгрд╛рдо 3 -> рдмрдЪрд╛рдУ
      | _____ | | _____ | | _____ |


...-> ... -> ... -> ... -> ... - ... -> рдкрд░рд┐рдгрд╛рдо n -> рдмрдЪрд╛рдУ 


рдФрд░ рдпрд╣ рдЗрд╕ рддрд░рд╣ рдирд┐рдХрд▓рд╛:

 рдпреЛрдЬрдирд╛ реи
    ____________________ ____________________ ____________________
    |  |  |  |  |  |
    |  |  |  |  |  |
    |  |  |  |  |  |
рдЙрежтАФ> | рдПрдл (рдП) | -> рдмреА-> | рдЬреА (рдмреА) | -> C-> | рдПрдЪ (рд╕реА) | -> рдкрд░рд┐рдгрд╛рдо-> рдмрдЪрд╛рдУ
    |  |  |  |  |  |
    |  |  |  |  |  |
   | ____________________ | | ____________________ | | ____________________ |


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

рдмрд╛рдж рдореЗрдВ, рдореИрдВрдиреЗ рдкреБрд░рд╛рдиреЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, - рд▓рдЧрднрдЧ рд╣рд░ рдЬрдЧрд╣ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рдмрд╛рдЗрдЯрд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдмрджрд▓ рджрд┐рдпрд╛ ред рд▓рд╛рдн, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдЫреЛрдЯрд╛ рдерд╛, рд▓реЗрдХрд┐рди - рдЖрдк рдХреЛрд╣рд░реЗ рдХреЗ рдкреНрд░рд╢рдВрд╕рдХ рдХреЛ рддрд┐рддрд░-рдмрд┐рддрд░ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред

рдХрд╣рдиреЗ рдХреА рдЬрд░реВрд░рдд рдирд╣реАрдВ рд╣реИ, рдореИрдВрдиреЗ рдирдпрд╛ рдХрд╛рд░реНрдпрдХреНрд░рдо, NgnTraffic, рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЬреНрдЮрд╛рди рдХреА рд╕рд╛рдорд╛рдиреНрдп рдЖрдкреВрд░реНрддрд┐ рдХрд░ рд░рд╣рд╛ рдерд╛? рдЗрд╕рдореЗрдВ рдмрд╣реБрдд рдХреБрдЫ рджреЗрдЦрд╛ рдЧрдпрд╛ рд╣реИред рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ: рдореБрдЦреНрдп , рдирд┐рд░рдВрддрд░ ,DataProcess , FileListProces , Options , Tools , Types ред рдмреЗрд╢рдХ , рд╕реНрдХреАрдо 1 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рдмрдЬрд╛рдп , рдмрд╛рдЗрдЯрд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреНрд░рдХрд╛рд░ (рд╕рдЦреНрдд рд╕рдВрд╕реНрдХрд░рдг) рдХреЛ рдореВрд▓ рд░реВрдк рд╕реЗ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ ред рдХреЛрдб рдЕрдзрд┐рдХ рдХрдВрдШреА рд╣реИ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд╣рд╛рде рдкрд░ рдПрдХ рдмрд┐рдЯрд▓реЗрд╕ рд╢реИрд▓реА рднреАред рдФрд░, рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд, рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд╛ рд╕рд┐рджреНрдзрд╛рдВрдд рдмрджрд▓ рдЧрдпрд╛ рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╕рдВрд╕рд╛рдзрд┐рдд рд╣реЛрдиреЗ рд╡рд╛рд▓реА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдПрдХрддреНрд░ рдХреА рдЬрд╛рддреА рд╣реИ - рдпрд╣ рд╣рд┐рд╕реНрд╕рд╛ рдкреБрд░рд╛рдиреЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╕реЗ рд╕рдорд╛рди рдХреЗ рд╕рдорд╛рди рд╣реИред рдлрд┐рд░, рд╣рд╛рд▓рд╛рдБрдХрд┐, рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдПрдХ рдмрд╛рд░ рдореЗрдВ рдПрдХ рдмрдбрд╝реЗ рдЪрд░ рдореЗрдВ рдкрдврд╝рд╛ рдирд╣реАрдВ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдкреНрд░рддреНрдпреЗрдХ рдХреЛ рдЕрд▓рдЧ рд╕реЗ рдкрдврд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рддреБрд░рдВрдд рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓рд╛рдЗрдиреЛрдВ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд░рд┐рдХреЙрд░реНрдб рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдЖрд╡рд╢реНрдпрдХ рдлрд╝реАрд▓реНрдб рдХреЛ рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓рд╛ рдЬрд╛рддрд╛ рд╣реИред рдкрд░рд┐рдгрд╛рдореА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкрд░рд┐рдгрд╛рдо рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред рдирддреАрдЬрддрди, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЪрдХреНрд░ рд╣реИ "рдбрд┐рд╕реНрдХ рд╕реЗ рдкрдврд╝реЗрдВ ( рдПрдл (рдПрди))) - рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг ( G (Bn) ) - рдбрд┐рд╕реНрдХ ( H (Cn) ) рдХреЛ рдкрд░рд┐рдгрд╛рдо рд▓рд┐рдЦ рд░рд╣рд╛ рд╣реИ - рдФрд░ рдХрдИ рдмрд╛рд░ рдлрд╛рдЗрд▓реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВред рд╕рд╛рде рд╣реА, рдмреЗрд╢рдХ, рдПрдХ рд╡рд░реНрдг рдХреЗ рджреВрд╕рд░реЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди Data.ByteString.Char8 рдореЙрдбреНрдпреВрд▓ рд╕реЗ рдПрдХ рд╕рд░рд▓ рд╡рд┐рднрд╛рдЬрди рдлрд╝рдВрдХреНрд╢рди рд╣реИ , рдЬреЛ рдПрдХ рдкрд╛рд╕ рдореЗрдВ рдлрд╝реАрд▓реНрдб рдореЗрдВ рд░рд┐рдХреЙрд░реНрдб рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ рдкреНрд░рджрд░реНрд╢рди рдХрд╛ рдПрдХ рд░рд╛рдХреНрд╖рд╕реА рд╣рд┐рд╕реНрд╕рд╛ рдЬреАрддрддрд╛ рд╣реИред рдпрд╣рд╛рдВ рдпреЛрдЬрдирд╛ 1 рдХреЛ рд╕рдВрддреБрд╖реНрдЯ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХрд╛рд░реНрдп рд╣реИрдВ:

process' :: ResFilePath -> FieldIndexes -> FilePath -> IO ( )
process' resFile fis targetFile = do
fileContents <- C . readFile targetFile
let processResult = processData fis predicates fileContents
C . appendFile resFile processResult

process :: ResFilePath -> [ FilePath ] -> FieldIndexes -> IO String
process _ [ ] _ = return "No files to process."
process resFile fs fieldIndexes = do
C . writeFile resFile C . empty
mapM_ ( process' resFile fieldIndexes ) fs
return "All ok."


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

рдбреЗрдЯрд╛ рд╡рд┐рдзреЗрдп = NotInList [ рд╕реА ред рдмрд╛рдЗрдЯрд╕реНрдЯреНрд░рд┐рдВрдЧ ]
|InList [ рд╕реА ред ByteString ]
рдЯрд╛рдЗрдк рдХрд░реЗрдВ PredicateMap = [ ( FieldIndex , Predicate ) ]


рдФрд░ рдпреЗ рджрд┐рдП рдЧрдП рдирд┐рд░рдВрддрд░ рд╡рд┐рдзреЗрдп рд╣реИрдВ:

predicates :: PredicateMap
predicates = [ ( 1 , InList [ C . pack "R200" ] ) ,
( 36 , NotInList ( map C . pack [ "1800" , "3600" , "5400" , "7200" , "9000" , "10800" , "12600" , "14400" , "16200" , "18000" , "19800" , "21600" , "23400" ] ) ) ]


рдпрд╣ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдирд╛ рдЖрд╕рд╛рди рд╣реИ рдХрд┐ рдХреЗрд╡рд▓ рд╡реЗ рдЕрднрд┐рд▓реЗрдЦ рдЬрд┐рдирдХреЗ рд▓рд┐рдП рдлрд╝реАрд▓реНрдб 1 "R200" рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ рдФрд░ рдлрд╝реАрд▓реНрдб 36 "рд╕рдорд╕реНрдпрд╛ 1800 рд╕реЗрдХрдВрдб" рдХреА рд╕реВрдЪреА рдореЗрдВ рдирд╣реАрдВ рд╣реИ, рд╡реЗ рд╡рд┐рдзреЗрдп рдХреЛ рд╕рдВрддреБрд╖реНрдЯ рдХрд░реЗрдВрдЧреЗред рд╕реНрдХреНрд░реАрдирд┐рдВрдЧ рдЪреЗрдХрдкреНрд░реЗрдбреЗрдЯ рдФрд░ рдЬрд╛рдВрдЪрдлрд┐рд▓реНрдб рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рд╣реЛрддреА рд╣реИ :

checkPredicate :: Predicate -> C . ByteString -> Bool
checkPredicate ( NotInList l ) str = ( not . elem str ) l
checkPredicate ( InList l ) str = elem str l

examineFields :: Int -> PredicateMap -> Fields -> Bool
examineFields _ _ [ ] = True
examineFields idx preds ( s:ss ) = case L . lookup idx preds of
Just pred -> ( checkPredicate pred s ) && ( examineFields ( idx + 1 ) preds ss )
Nothing -> examineFields ( idx + 1 ) preds ss


рдЕрдм рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рдорд╛рд░реЛрд╣ examineFields рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рдерд╛ foldr , рд▓реЗрдХрд┐рди рдпрд╣, рд╣реИ рд╡рд┐рд╕реНрддрд╛рд░ред

рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдореИрдВ рдХрд┐рдП рдЧрдП рдХрд╛рдо рд╕реЗ рдкреНрд░рд╕рдиреНрди рд╣реВрдВред рдпрд╣ рджреБрд░реНрд▓рдн рд╣реИ - рд▓реЗрдХрд┐рди рдореБрдЭреЗ NgnTraffic рдХреЛрдб рднреА рдкрд╕рдВрдж рд╣реИред рдФрд░ рдореБрдЭреЗ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдкреНрд░рдЧрддрд┐ рдкрд╕рдВрдж рд╣реИ рдЬреЛ рдПрдХ рд╣реА рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рдЙрджрд╛рд╣рд░рдг рдкрд░ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИ, рдЬреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рдордп рдкрд░ рдФрд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЬреНрдЮрд╛рди рдХреЗ рд╕рд╛рде рд▓рд┐рдЦреА рдЧрдИ рд╣реИред рдФрд░ "рдЗрд╕рд╕реЗ рднреА рдЕрдзрд┐рдХ рд╡рд┐рд╢реЗрд╖" рдореБрдЭреЗ рдпрд╣ рдкрд╕рдВрдж рд╣реИ рдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдЗрд╕реНрддреЗрдорд╛рд▓ рд╣рд╛рд╕реНрдХреЗрд▓ рдкрд░ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХрд╛рд░реНрдпрдХреНрд░рдо рд╣реИ ред

рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рдХрд┐ рд╡реЗ рдХреНрдпрд╛ рдХрд╣рддреЗ рд╣реИрдВ, рд╣рд╛рд╕реНрдХреЗрд▓ рдПрдХ рднрдпрд╛рдирдХ рднрд╛рд╖рд╛ рд╣реИ, рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдореИрдВрдиреЗ рдХрднреА рднреА рд╕рд╛рде рдХрд╛рдо рдХрд┐рдпрд╛ рд╣реИред

рд╕рдВрд╢реЛрдзрди рдХреЗ рд▓рд┐рдП рдкрд╛рд░реНрд╕рд░ рд╕реНрд░реЛрдд: [реи] , [рем] , [резреи]
рд╡рд┐рд▓рдп рдХреЗ рд╕реНрд░реЛрдд (рд╡рд┐рд▓рдп рдПрдХреАрдХреГрдд рдХрд╛рд░реНрдпрдХреНрд░рдо рд╕рд╣рд┐рдд): [резрей] , [резрек] , [резрем] , [реирей] [реирей]
NgnTraffic

PS рдХреЗ рд╕реНрд░реЛрдд рдЕрднреА рднреА рджреВрд╕рд░реЗ рдореЛрдирд╛рдж рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдХреЗ рдЕрдЧрд▓реЗ рднрд╛рдЧ рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдмрд╣реБрдд рдЬрд▓реНрдж рд╣реЛрдЧрд╛ред
рдкреАрдкреАрдПрд╕ рдиреЗ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЗ рд▓рд┐рдВрдХ рдХреЛ рд╕рд╣реА рдХрд┐рдпрд╛, рдЬреЛ рдХрд╛рдорд░реЗрдб рд╕реНрдЯреЗрдХ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж ред PPPS
рдиреЗ рдХрд╛рдорд░реЗрдб рдЧреЛрдбрд░ рдФрд░ рдЬреИрдХрд╣реИрдм рдХреА рдмрджреМрд▓рдд рдХреБрдЫ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдареАрдХ рдХрд┐рдпрд╛ ред

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


All Articles