рдЖрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╡реЗрддрди рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд╛ рд╕реНрд╡рдЪрд╛рд▓рди

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


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



рдЖрдк рдпрд╣рд╛рдВ рд▓рд╛рдЗрд╡ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ (рдФрд░ рдмрдЯрди рднреА рджрдмрд╛ рд╕рдХрддреЗ рд╣реИрдВ)ред


рдЗрд╕ рдЕрдиреБрдЪреНрдЫреЗрдж рдореЗрдВ, рдореИрдВ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реВрдВрдЧрд╛ рдХрд┐ рдореИрдВрдиреЗ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдЖрд╡реЗрджрди рдХреЛ рдХреИрд╕реЗ рд▓рд┐рдЦрд╛, рдФрд░ рд░рд╛рд╕реНрддреЗ рдореЗрдВ рдореБрдЭреЗ рдХреНрдпрд╛ рдиреБрдХрд╕рд╛рди рд╣реБрдЖред


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


рд╕реЗрдВрдЯ рдкреАрдЯрд░реНрд╕рдмрд░реНрдЧ рдореЗрдВ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрджреЛрдВ (рдмреИрдХ-рдПрдВрдб / рдлреНрд░рдВрдЯ-рдПрдВрдб / рдлреБрд▓-рд╕реНрдЯреИрдХ рдбреЗрд╡рд▓рдкрд░, DevOps, QA, рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореИрдиреЗрдЬрд░, рд╕рд┐рд╕реНрдЯрдо рдПрдирд╛рд▓рд┐рд╕реНрдЯ, рдЖрджрд┐) рдХреЗ рд▓рд┐рдП hh.ru рдиреМрдХрд░реА рдбреЗрдЯрд╛ рдПрдХрддреНрд░ рдХрд░рдирд╛ рдФрд░ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдФрд░ рдЗрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдкреЗрд╢реЗ рдХреЗ рд▓рд┐рдП рдЬреВрдирд┐рдпрд░, рдордзреНрдп рдФрд░ рд╡рд░рд┐рд╖реНрда рд╕реНрддрд░ рдХреЗ рд╡рд┐рд╢реЗрд╖рдЬреНрдЮреЛрдВ рдХреЗ рд▓рд┐рдП рд╡реЗрддрди рдЕрдкреЗрдХреНрд╖рд╛рдУрдВ рдХрд╛ рдиреНрдпреВрдирддрдо, рдФрд╕рдд рдФрд░ рдЕрдзрд┐рдХрддрдо рдореВрд▓реНрдп рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред


рдпрд╣ рд▓рдЧрднрдЧ рд╣рд░ рдЫрд╣ рдорд╣реАрдиреЗ рдореЗрдВ рдбреЗрдЯрд╛ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдерд╛, рд▓реЗрдХрд┐рди рдорд╣реАрдиреЗ рдореЗрдВ рдПрдХ рдмрд╛рд░ рд╕реЗ рдЬреНрдпрд╛рджрд╛ рдирд╣реАрдВред


рдкрд╣рд▓рд╛ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк


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



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


рд╕реНрд╡-рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдкреНрд░рд╢реНрди: рдЗрд╕ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдореЗрдВ рдХреНрдпрд╛ рдЧрд▓рдд рд╣реИ?

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


рд╣рд░ рдЪреАрдЬ рдХреЗ рд▓рд┐рдП рдПрдХ "рдЕрдкрдбреЗрдЯ" рдмрдЯрди рдХреНрдпреЛрдВ рдирд╣реАрдВ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛? рддрдереНрдп рдпрд╣ рд╣реИ - рдФрд░ рдпрд╣ рджреВрд╕рд░реА рд╕рдорд╕реНрдпрд╛ рд╣реИ - рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП ("рдкреНрд░рдмрдВрдзрдХреЛрдВ рдкрд░ рдЕрдкрдбреЗрдЯ рдФрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдбреЗрдЯрд╛", "рдХреНрдпреВрдП рдкрд░ рдЕрдкрдбреЗрдЯ рдФрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдбреЗрдЯрд╛", рдЖрджрд┐) рдЗрд╕рдореЗрдВ 5-10 рдорд┐рдирдЯ рд▓рдЧреЗ , рдЬреЛ рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ рд╕реНрд╡реАрдХрд╛рд░реНрдп рдирд╣реАрдВ рд╣реИред рд▓рдВрдмреЗ рд╕рдордп рддрдХред рд╕рднреА рдбреЗрдЯрд╛ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдПрдХрд▓ рдЕрдиреБрд░реЛрдз 5 рдорд┐рдирдЯ 45 рдореЗрдВ рдмрджрд▓ рдЬрд╛рдПрдЧрд╛, рдпрд╛ рд╕рднреА 60 рднреАред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрддрдирд╛ рдЗрдВрддрдЬрд╛рд░ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред


рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдХрдИ withProgress() рдлрд╝рдВрдХреНрд╢рди рдЬреЛ рдбреЗрдЯрд╛ рд╕рдВрдЧреНрд░рд╣ рдФрд░ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рд▓рдкреЗрдЯрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХреЛ рдЕрдзрд┐рдХ рд╕рд╛рд░реНрдердХ рдмрдирд╛рддреЗ рд╣реИрдВ, рдЗрд╕рд╕реЗ рд╕реНрдерд┐рддрд┐ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдирд╣реАрдВ withProgress() рд╣реИред


рдЗрд╕ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХреЗ рд╕рд╛рде рддреАрд╕рд░реА рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдпрджрд┐ рд╣рдо рдПрдХ рджрд░реНрдЬрди рд╕реЗ рдЕрдзрд┐рдХ рдкреНрд░реЛрдлреЗрд╢рди (рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ, рддреЛ рдХреНрдпрд╛) рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рдЗрд╕ рддрдереНрдп рд╕реЗ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рд╣реЗрдбрд░ рдореЗрдВ рдЬрдЧрд╣ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рддреА рд╣реИ ред


рдпреЗ рддреАрди рдХрд╛рд░рдг рдореЗрд░реЗ рд▓рд┐рдП рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдФрд░ рдпреВрдПрдХреНрд╕ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдкрд░ рдкреБрдирд░реНрд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдереЗред рдЕрдЧрд░ рдЖрдкрдХреЛ рдХреБрдЫ рдФрд░ рд▓рдЧреЗ - рддреЛ рдмреЗрдЭрд┐рдЭрдХ рдЯрд┐рдкреНрдкрдгреА рдХрд░реЗрдВред


рдЗрд╕ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдореЗрдВ рднреА рддрд╛рдХрдд рдереА, рдЕрд░реНрдерд╛рддреН:


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

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ рдореБрдЦреНрдп рдкреГрд╖реНрда рдкрд░ рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛ "рдЯрд╛рдЗрд▓" рдХреИрд╕реЗ рджрд┐рдЦрддрд╛ рд╣реИ:


рдХреЛрдб
 tile <- function(title, midsal = NA, midsalres = NA, total.res = NA, total.vac = NA, updated = NA) { return( column(width = 4, h2(title), strong("  (middle):"), midsal, br(), strong("  (middle):"), midsalres, br(), strong(" :"), total.res, br(), strong(" : "), total.vac, br(), strong(" : "), updated, br(), br(), actionButton(inputId = paste0(tolower(prof), "Btn"), label = "Update", class = "btn-primary") ) ) } 

  • рдХреЛрдб рдореЗрдВ рдЗрдирдкреБрдЯрд░реНрд╕ (рдЗрдирдкреБрдЯрдЖрдИрдбреА) рдХреЗ рд▓рд┐рдП рдпреВрдЖрдИ рдХреЗ рдбрд╛рдпрдиреЗрдорд┐рдХ рдЧрдарди , inputId = paste0(, "Btn") , рдКрдкрд░ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВред рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЕрддреНрдпрдВрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╕рд╛рдмрд┐рдд рд╣реБрдЖ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрдХ рджрд░реНрдЬрди рдирд┐рдпрдВрддреНрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдерд╛, рд╡реНрдпрд╡рд╕рд╛рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╕реЗ рдЧреБрдгрд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ред
  • рдпрд╣ рдХрд╛рдо рдХрд┐рдпрд╛ :)

рдПрдХрддреНрд░ рдХрд┐рдП рдЧрдП рдбреЗрдЯрд╛ рдХреЛ рд╡рд┐рднрд┐рдиреНрди рд╡реНрдпрд╡рд╕рд╛рдпреЛрдВ ( append = TRUE ) рдХреЗ рд▓рд┐рдП .csv рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рдлрд┐рд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдиреНрдЪ рд╣реЛрдиреЗ рдкрд░ рд╡рд╣рд╛рдВ рд╕реЗ рдкрдврд╝рд╛ рдЧрдпрд╛ред рдЬрдм рдирдпрд╛ рдбреЗрдЯрд╛ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛, рддреЛ рдЙрдиреНрд╣реЗрдВ рд╕рдВрдмрдВрдзрд┐рдд рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛, рдФрд░ рдФрд╕рдд рдорд╛рдиреЛрдВ рдХреЛ рдкреБрдирд░реНрдЧрдгрдирд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ред


рд╡рд┐рднрд╛рдЬрдХреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рд╢рдмреНрдж


рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рд░реАрдХрд┐рдпреЛрдВ: рд╕реАрдПрд╕рд╡реА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдорд╛рдирдХ рд╡рд┐рднрд╛рдЬрдХ - рдПрдХ рдЕрд▓реНрдкрд╡рд┐рд░рд╛рдо рдпрд╛ рдЕрд░реНрдзрд╡рд┐рд░рд╛рдо - рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЙрдкрдпреБрдХреНрдд рдирд╣реАрдВ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдЖрдк рдЕрдХреНрд╕рд░ "рд╢реНрд╡реЗрдд, рд░реАрдкрд░, igrets (рдбреНрдпреВрдбрд╛; html / рд╕реАрдПрд╕рдПрд╕)" рдЬреИрд╕реЗ рд╢реАрд░реНрд╖рдХреЛрдВ рдХреЗ рд╕рд╛рде рд░рд┐рдХреНрддрд┐рдпреЛрдВ рдФрд░ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рдореИрдВрдиреЗ рддреБрд░рдВрдд рдХреБрдЫ рдЕрдзрд┐рдХ рд╡рд┐рджреЗрд╢реА рдЪреБрдирдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рдФрд░ рдореЗрд░реА рдкрд╕рдВрдж рдкрд░ рдЧрд┐рд░ рдЧрдпрд╛ |


рдЕрдЧрд▓реА рдмрд╛рд░ рд╢реБрд░реВ рд╣реЛрдиреЗ рддрдХ рд╕рдм рдХреБрдЫ рдареАрдХ рд░рд╣рд╛, рдореБрдЭреЗ рдореБрджреНрд░рд╛ рдХреЗ рд╕рд╛рде рдХреЙрд▓рдо рдореЗрдВ рддрд╛рд░реАрдЦ рдирд╣реАрдВ рдорд┐рд▓реА, рдФрд░ рдлрд┐рд░ рдХреЙрд▓рдо рдиреАрдЪреЗ рдЪрд▓реЗ рдЧрдП рдФрд░, рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд▓реЙрдХ-рдЕрдк рдЪрд╛рд░реНрдЯред рдореИрдВ рд╕рдордЭрдиреЗ рд▓рдЧрд╛ред рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдирд┐рдХрд▓рд╛, рдореЗрд░рд╛ рд╕рд┐рд╕реНрдЯрдо рдПрдХ рдЦреВрдмрд╕реВрд░рдд рд▓рдбрд╝рдХреА рджреНрд╡рд╛рд░рд╛ рддреЛрдбрд╝ рджрд┐рдпрд╛ рдЧрдпрд╛ - "рдбреЗрдЯрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ | рд╡реНрдпрд╛рдкрд╛рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ"ред рддрдм рд╕реЗ рдореИрдВ рд╕реАрдорд╛рдВрдХрдХ, ESC рдЪрд░рд┐рддреНрд░ рдХреЗ рд░реВрдк рдореЗрдВ \x1B рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдлрд┐рд░ рднреА рдиреАрдЪреЗ рдирд╣реАрдВ рдЬрд╛рдиреЗ рджрд┐рдпрд╛ред


рдЕрд╕рд╛рдЗрди рдХрд░реЗрдВ рдпрд╛ рдЕрд╕рд╛рдЗрди рди рдХрд░реЗрдВ?


рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд░ рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп, рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдлрд╝рдВрдХреНрд╢рди рдореЗрд░реЗ рд▓рд┐рдП рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЦреЛрдЬ рдмрди рдЧрдпрд╛: рдЖрдк рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдЪрд░ рдФрд░ рдЕрдиреНрдп рддрд┐рдерд┐ рдлрд╝реНрд░реЗрдореЛрдВ рдХреЗ рдирд╛рдо рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд╢рд╛рдВрдд!


рдмреЗрд╢рдХ, рдореИрдВ рд╕реНрд░реЛрдд рдбреЗрдЯрд╛ рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд░рд┐рдХреНрддрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рдбреЗрдЯрд╛ рдлрд╝реНрд░реЗрдо рдореЗрдВ рд░рдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдФрд░ рдореИрдВ "designer.vac = data.frame (...), anal.vac = data.frame (...) рд▓рд┐рдЦрдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рддрд╛ред рдЗрд╕рд▓рд┐рдП, рдЬрдм рдореИрдВрдиреЗ рдЖрд╡реЗрджрди рд╢реБрд░реВ рдХрд┐рдпрд╛ рддреЛ рдЗрди рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдЖрд░рдореНрдн рдХрд░рдиреЗ рдХрд╛ рдХреЛрдб рдЗрд╕ рддрд░рд╣ рджреЗрдЦрд╛:


рдЕрд╕рд╛рдЗрди
 profs <- c("analyst", "designer", "developer", "devops", "manager", "qa") for (name in profs) { if (!exists(paste0(name, ".vac"))) assign(x = paste0(name, ".vac"), value = data.frame( URL = character() #    , id = numeric() # id  , Name = character() #   , City = character() , Published = character() , Currency = character() , From = numeric() # .    , To = numeric() # .  , Level = character() # jun/mid/sen , Salary = numeric() , stringsAsFactors = FALSE )) } 

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


рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдПрдХ рдЕрд▓рдЧ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдкрдбрд╝рд╛, рдЬреЛ рдХрд┐ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реЛ рдЧрдпрд╛: рд╕реВрдЪрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ред


рдбреЗрдЯрд╛ рдлрд╝реНрд░реЗрдо рдХрд╛ рдПрдХ рдкреИрдХреЗрдЯ рдкреНрд░рд╛рд░рдВрдн рдХрд░реЗрдВ? рдЖрд░рд╛рдо рд╕реЗ!
 profs <- list( devops = "devops" , analyst = c("systems+analyst", "business+analyst") , dev.full = "full+stack+developer" , dev.back = "back+end+developer" , dev.front = "front+end+developer" , designer = "ux+ui+designer" , qa = "QA+tester" , manager = "project+manager" , content = c("mathematics+teacher", "physics+teacher") ) for (name in names(profs)) { proflist[[name]] <- data.frame( URL = character() #    , id = numeric() # id  , Name = character() #   , City = character() , Published = character() , Currency = character() , From = numeric() # .    , To = numeric() # .  , Level = character() # jun/mid/sen , Salary = numeric() , stringsAsFactors = FALSE ) } 

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


рдЗрди рдбреЗрдЯрд╛ рдлрд╝реНрд░реЗрдореЛрдВ рдореЗрдВ рд╕реЗ N рдЯреЗрдмрд▓ рдФрд░ N рдЧреНрд░рд╛рдлрд╝ рдПрдХ рдореЗрдВ рдЧрд┐рд░ рдЧрдП? рд╣рдореНрдо ...

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИред рдпрд╣рд╛рдБ server.R рдХреЗ рд▓рд┐рдП рд╡реИрдХреНрдпреВрдо рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдПрдХ рдЧреЛрд▓рд╛рдХрд╛рд░ рд╣реИ:


 lapply(seq_along(my.list.of.data.frames), function(x) { output[[paste0(names(my.list.of.data.frames)[x], ".dt")]] <- renderDataTable({ datatable(data = my.list.of.data.frames[[names(my.list.of.data.frames)[x]]]() , style = 'bootstrap', selection = 'none' , escape = FALSE) }) output[[paste0(names(my.list.of.data.frames)[x], ".plot")]] <- renderPlot( ggplot(na.omit(my.list.of.data.frames[[names(my.list.of.data.frames)[x]]]()), aes(...)) ) }) 

рдЗрд╕рд▓рд┐рдП рдирд┐рд╖реНрдХрд░реНрд╖: рд╕реВрдЪрд┐рдпрд╛рдВ рдПрдХ рдЕрддреНрдпрдВрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдЪреАрдЬ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдХреЛрдб рдХреА рдорд╛рддреНрд░рд╛ рдФрд░ рдЗрд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд▓рдЧрдиреЗ рд╡рд╛рд▓реЗ рд╕рдордп рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред (рдЗрд╕рд▓рд┐рдП, рдЕрд╕рд╛рдЗрди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ред)


рдФрд░ рдЙрд╕ рдХреНрд╖рдг рдЬрдм рдореИрдВ рдбреИрд╢рдмреЛрд░реНрдб рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬреЛ рдЪреЗрдВрдЧ рдХреА рдмрд╛рдд рдкрд░ рдзреНрдпрд╛рди рджреЗрдиреЗ рд╕реЗ рд╡рд┐рдЪрд▓рд┐рдд рдерд╛, рдпрд╣ рдЖрдпрд╛ ...


рдкреБрдирд░реНрд╡рд┐рдЪрд╛рд░


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


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


рдпрд╣ рдПрдХ рд╣реА рдмрд╛рд░ рдореЗрдВ рджреЛ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ: рдПрдХ рд▓рдВрдмрд╛ рдЗрдВрддрдЬрд╛рд░ (рдпрджрд┐ рдЖрдк рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рддреЗ рд╣реИрдВ, рддреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЗрд╕рдХреЗ рдХрд╛рдо рдкрд░ рдзреНрдпрд╛рди рдирд╣реАрдВ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рд╣рдореЗрд╢рд╛ рддрд╛рдЬрд╛ рдбреЗрдЯрд╛ рджреЗрдЦреЗрдВ) рдФрд░ рдбреЗрдЯрд╛ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реЗ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдпрд╣ рдиреМ рдХреНрд▓рд┐рдХ (рдкреНрд░рддреНрдпреЗрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ) рд▓реЗрддрд╛ рдерд╛, рдЕрдм рдЗрд╕реЗ рд╢реВрдиреНрдп рд▓рдЧрддрд╛ рд╣реИред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рджрдХреНрд╖рддрд╛ рдореЗрдВ рд▓рд╛рдн рддрдХ рдкрд╣реБрдБрдЪ рдЧрдП рд╣реИрдВ, рдЕрдирдВрдд рдХреЗ рд▓рд┐рдП рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реБрдП!


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


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


рдЬреЛ рдорд░ рдЪреБрдХрд╛ рд╣реИ, рд╡рд╣ рдорд░ рдирд╣реАрдВ рд╕рдХрддрд╛


- рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рдФрд░ рд╕реНрдХреНрд░реИрдЪ рд╕реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрд╛, рдФрд░ рдЗрд╕ рдмрд╛рд░


  • рд░рд┐рдХреНрддрд┐рдпреЛрдВ рдФрд░ рд░рд┐рдЬреНрдпреВрдореЗ (рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдкреВрд░реА рдИрдЯреАрдПрд▓ рдкреНрд░рдХреНрд░рд┐рдпрд╛) рдкрд░ рдПрдХ рдЕрд▓рдЧ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдбреЗрдЯрд╛ рдПрдХрддреНрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреВрд░рд╛ рдХреЛрдб рд╡рд┐рддрд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛, рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдердХрд╛рдК рдЗрдВрддрдЬрд╛рд░ рд╕реЗ рдмрдЪрд╛рддреЗ рд╣реБрдП, рдПрдХ рдЪрдордХрджрд╛рд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдЪрд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ;
  • csv рдлрд╝рд╛рдЗрд▓реЛрдВ рд╕реЗ рдкреВрд░реНрд╡-рд╕рдВрдЧреНрд░рд╣рд┐рдд рдбреЗрдЯрд╛ рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП reactiveFileReader () рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛, рдореЗрд░реЗ рдЖрд╡реЗрджрди рдореЗрдВ рд╕реНрд░реЛрдд рдбреЗрдЯрд╛ рдХреА рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХрддрд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреБрдирд░рд╛рд░рдВрдн рдХрд░рдиреЗ рдФрд░ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд┐рдирд╛;
  • рд╕реВрдЪрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдФрд░ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдП рдЧрдП lapply () рд╕реЗ рдкрд╣рд▓реЗ рдЬрд╣рд╛рдВ рд▓реВрдк рдереЗ рд╡рд╣рд╛рдВ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдорд┐рд▓ рдЧрдпрд╛ ();
  • рдПрдХ рдмреЛрдирд╕ рдХреЗ рд░реВрдк рдореЗрдВ shinydashboard рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ UI рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рдкреБрди: рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ - рд╕реНрдХреНрд░реАрди рдкрд░ рдЬрдЧрд╣ рдХреА рдХрдореА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд╛ рдХрд░рдиреЗ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ;
  • рдХрдИ рдмрд╛рд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреА рдХреБрд▓ рдорд╛рддреНрд░рд╛ (рдХреЛрдб рдХреЗ ~ 1800 рд╕реЗ 360 рд▓рд╛рдЗрдиреЛрдВ рддрдХ) рдХреЛ рдХрдо рдХрд░ рджрд┐рдпрд╛ред

рдЕрдм рд╕рдорд╛рдзрд╛рди рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред


  1. ETL рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдорд╣реАрдиреЗ рдореЗрдВ рдПрдХ рдмрд╛рд░ рдЪрд▓рд╛рдИ рдЬрд╛рддреА рд╣реИ (рдпрд╣рд╛рдБ рдпрд╣ рдХреИрд╕реЗ рдХрд░рдирд╛ рд╣реИ рдЗрд╕ рдкрд░ рдирд┐рд░реНрджреЗрд╢ рд╣реИ ) рдФрд░ рдХрд░реНрддрд╡реНрдпрдирд┐рд╖реНрдард╛ рд╕рднреА рд╡реНрдпрд╡рд╕рд╛рдпреЛрдВ рд╕реЗ рдЧреБрдЬрд░рддреА рд╣реИ, рд░рд┐рдХреНрддрд┐рдпреЛрдВ рдкрд░ рдХрдЪреНрдЪрд╛ рдбреЗрдЯрд╛ рдПрдХрддреНрд░ рдХрд░рддреА рд╣реИ рдФрд░ hh рд╕реЗ рд░рд┐рдЬреНрдпреВрдореЗ рдмрдирд╛рддреА рд╣реИред
    рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд░рд┐рдХреНрддрд┐рдпреЛрдВ рдкрд░ рдбреЗрдЯрд╛ рд╕рд╛рдЗрдЯ рдХреЗ рдПрдкреАрдЖрдИ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓рд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдореИрдВ рдкрд┐рдЫрд▓реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реЗ рдХреЛрдб рдХрд╛ рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛), рд▓реЗрдХрд┐рди рдкреНрд░рддреНрдпреЗрдХ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ рд╡реЗрдм рдкреЗрдЬреЛрдВ рдХреЛ рдкрд╛рд░реНрд╕ рдкреИрдХреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд╛рд░реНрд╕ рдХрд░рдирд╛ рдкрдбрд╝рд╛, рдХреНрдпреЛрдВрдХрд┐ рд╕рдВрдмрдВрдзрд┐рдд рдПрдкреАрдЖрдИ рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдм рднреБрдЧрддрд╛рди рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рдЖрдк рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕рдиреЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рдЧрддрд┐ рдХреЛ рдХреИрд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд┐рдпрд╛ред
  2. рдПрдХрддреНрд░ рдХрд┐рдП рдЧрдП рдбреЗрдЯрд╛ рдХреЛ рдХрдВрдШреА рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдпрд╣рд╛рдВ рдХреЛрдб рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд╕рд╛рдеред рд╕рдВрд╕рд╛рдзрд┐рдд рдбреЗрдЯрд╛ рдХреЛ рд╣рд┐рд╕реНрдЯ / рдкреНрд░реЛрдлреЗрд╢рди- hist-vac.csv рдФрд░ hist / profession-hist-res.csv рдХреЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рдбрд┐рд╕реНрдХ рдореЗрдВ рд╕реЗрд╡ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╡реИрд╕реЗ, рдЗрд╕ рддрд░рд╣ рд╕реЗ рдбреЗрдЯрд╛ рдореЗрдВ рдЖрдЙрдЯрд▓реЗрдпрд░ рд╕реЗ рдЕрдЬреАрдм рдЪреАрдЬреЗрдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ, рд╕рд╛рд╡рдзрд╛рди рд░рд╣реЗрдВ :)
    рдкреНрд░рддреНрдпреЗрдХ рдкреЗрд╢реЗ рдХреЗ рд▓рд┐рдП, рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдРрддрд┐рд╣рд╛рд╕рд┐рдХ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдВрд╡рд░реНрдзрд┐рдд рдлрд╝рд╛рдЗрд▓ рд▓реЗрддреА рд╣реИ, рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдХрд╛ рдЪрдпрди рдХрд░рддреА рд╣реИ - рдЬреЛ рдЕрдВрддрд┐рдо рдЕрджреНрдпрддрди рдХреА рддрд╛рд░реАрдЦ рд╕реЗ рдПрдХ рдорд╣реАрдиреЗ рд╕реЗ рдЕрдзрд┐рдХ рдкреБрд░рд╛рдиреА рдирд╣реАрдВ рд╣реИрдВ - рдФрд░ рдкреНрд░рдкрддреНрд░ data.res / рдкреЗрд╢рд╛-res- рд╣рд╛рд▓ рд╣реА рдореЗрдВ .csv рдФрд░ data.vac / рдкреЗрд╢реЗ рдХреА рдирдИ рд╕реАрдПрд╕рд╡реА рдлрд╛рдЗрд▓реЗрдВ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИред -vac-recent.csvред рдЕрдВрддрд┐рдо рдЖрд╡реЗрджрди рднреА рдЗрд╕ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ ...
  3. ... рдЬреЛ, рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдФрд░ рдиреМрдХрд░реА рдлрд╝реЛрд▓реНрдбрд░ рдХреА рд╕рд╛рдордЧреНрд░реА рдкрдврд╝рддрд╛ рд╣реИ (data.res рдФрд░ data.vac, рдХреНрд░рдорд╢рдГ), рдФрд░ рдлрд┐рд░ рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХреЗ рд▓рд┐рдП рд╣рд░ рдШрдВрдЯреЗ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реИред ReactiveFileReader () рдХреЗ рд╕рд╛рде рдРрд╕рд╛ рдХрд░рдирд╛ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдХреБрд╢рд▓ рд╣реИ рдФрд░ рдЕрдорд╛рдиреНрдп рдЧрддрд┐ () рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрди рдХреА рдЧрддрд┐ред рдпрджрд┐ рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдереЗ, рддреЛ рд╕реНрд░реЛрдд рдбреЗрдЯрд╛ рд╡рд╛рд▓реА рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдФрд╕рдд рдорд╛рди рдФрд░ рдЧреНрд░рд╛рдлрд╝ рдкреБрдирд░реНрдЧрдгрд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓рд╡реИрд▓реНрдпреВрдЬрд╝ () рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рдд, рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЕрддрд┐рд░рд┐рдХреНрдд рдХреЛрдб рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
  4. рдореБрдЦреНрдп рдкреГрд╖реНрда рдкрд░ рдЕрдм рдПрдХ рдореЗрдЬ рд╣реИ рдЬреЛ рд╡реЗрддрди рдХреА рдЙрдореНрдореАрджреЛрдВ рдХреЗ рдорд┐рдирд┐рдпрди, рдордВрдЭрд▓реЗ рдФрд░ рдЕрдзрд┐рдХрддрдо рдореВрд▓реНрдпреЛрдВ рдХреЛ рджрд┐рдЦрд╛рддреА рд╣реИ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рд╕реНрддрд░ рдХреЗ рд▓рд┐рдП рдкреНрд░рддреНрдпреЗрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд▓рд┐рдП рдСрдлрд╝рд░ рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИ (рд╕рднреА рдЯреАрдХреЗ рдХреЗ рд▓рд┐рдП)ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдк рдЪрд╛рд░реНрдЯ рдХреЛ рд╡рд┐рд╕реНрддреГрдд рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд╕рд╛рде рдЯреИрдм рдкрд░ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдбреЗрдЯрд╛ рдХреЛ .xlsx рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдЕрдкрд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдЖрдкрдХреЛ рдХрднреА рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдПрдЪрдЖрд░ рдХреЗ рд▓рд┐рдП рдЗрди рдирдВрдмрд░реЛрдВ рдХреА рдХреНрдпрд╛ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ)ред

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


рдПрдХ рдЙрдкрд╕рдВрд╣рд╛рд░ рдХреЗ рдмрдЬрд╛рдп


рдЖрдЬ, рдЖрд╡реЗрджрди рдХреЗрд╡рд▓ рд╕реЗрдВрдЯ рдкреАрдЯрд░реНрд╕рдмрд░реНрдЧ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рдПрдХрддреНрд░ рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рддрд╛ рд╣реИред рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рдореБрдЦреНрдп рд╣рд┐рддрдзрд╛рд░рдХ рд╕рдВрддреБрд╖реНрдЯ рдерд╛, рдФрд░ рд╕рдмрд╕реЗ рд▓рдЧрд╛рддрд╛рд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ "рдорд╣рд╛рди рдереА, рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рдпрд╣ рдорд╛рд╕реНрдХреЛ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ?", рдореИрдВ рдЗрд╕ рдкреНрд░рдпреЛрдЧ рдХреЛ рд╕рдлрд▓ рдорд╛рдирддрд╛ рд╣реВрдВред


рдЖрдк рдЗрд╕ рд▓рд┐рдВрдХ рдкрд░ рдЖрд╡реЗрджрди рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ , рдФрд░ рд╕рднреА рд╕реНрд░реЛрдд рдХреЛрдб (рд╕рдорд╛рдкреНрдд рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд╕рд╛рде) рдпрд╣рд╛рдВ рдЙрдкрд▓рдмреНрдз рд╣реИрдВ ред


рд╡реИрд╕реЗ, рдЖрд╡реЗрджрди рдХреЛ рд╡реЗрддрди рдореЙрдирд┐рдЯрд░, рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╕реИрд▓реНрдорди - "рд╕реИрд▓реНрдорди" рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред


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


All Articles