Play рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ habr рдкрд░ рд▓рд┐рдЦрд╛ рд╣реИ:
рдЙрддреНрдХреГрд╖реНрдЯ рдЬрд╛рд╡рд╛ MVC рдлреНрд░реЗрдорд╡рд░реНрдХ рдФрд░
'рд╣реИрд▓реЛ рд╡рд░реНрд▓реНрдб' рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ ред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ,
рдЬрд╝реАрд░рдЯрд░реНрдирд░реНрди рдХреЗ рдереЙрдорд╕ рд░реЛрдорд░ рдкреНрд▓реЗ рдкрд░ рдЕрдкрдиреЗ рдкрд╕рдВрджреАрджрд╛ рдЯреБрдХрдбрд╝реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВ! рдврд╛рдВрдЪрд╛ред
рдкрд┐рдЫрд▓реЗ рдПрдХ рд╕рд╛рд▓ рдореЗрдВ, рдореИрдВ рдкреНрд▓реЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рджреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╡рд┐рдХрд╕рд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВ! рдлреНрд░реЗрдорд╡рд░реНрдХред рдпрд╣
JRebel рдФрд░
LiveRebel рд▓рд╛рдЗрд╕реЗрдВрд╕ рд╕рд░реНрд╡рд░ рд╣реИ ред рдореИрдВрдиреЗ рдЗрди рджреЛрдиреЛрдВ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рд░реВрдкрд░реЗрдЦрд╛рдПрдБ рдЖрдЬрд╝рдорд╛рдИрдВ, рдФрд░ рдЕрдВрдд рдореЗрдВ рдореЗрд░реА рдкрд╕рдВрдж рджреЛ рдЙрдореНрдореАрджрд╡рд╛рд░реЛрдВ рддрдХ рдкрд╣реБрдБрдЪ рдЧрдИ:
рд╕реНрдЯреНрд░рдЯреНрд╕ рдПрдВрдб
рдкреНрд▓реЗ! рдлреНрд░реЗрдорд╡рд░реНрдХ ред рдЦреЗрд▓рдиреЗ рдХреЗ рд▓рд┐рдП! рдпрд╣ рдЕрдзрд┐рдХ
рдЬреЛрдЦрд┐рдо рднрд░рд╛, рдордЬрд╝реЗрджрд╛рд░, рд╡рд┐рджреНрд░реЛрд╣реА рд▓рдЧ рд░рд╣рд╛ рдерд╛, рдЬрдмрдХрд┐ рд╕реНрдЯреНрд░рдЯреНрд╕ рдХреЛ рдкреБрд░рд╛рдиреЗ рд╡рд░реНрдХрд╣реЙрд░реНрд╕ рдХрд╛ рдПрдХ рд╕рд╛ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рдерд╛ рдЬреЛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЧрд╛рд░рдВрдЯреА рд╣реИред рдЯреАрдо рдореЗрдВ рдХреБрдЫ рдмрд╣рд╕ рдХреЗ рдмрд╛рдж, рд╣рдордиреЗ рдПрдХ рдореМрдХрд╛ рд▓реЗрдиреЗ рдФрд░ рдкреНрд▓реЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛! .. рддрдм рд╕реЗ, рдореБрдЭреЗ рдкреНрд▓реЗ рдХреЗ рдХреБрдЫ рдлреАрдЪрд░реНрд╕ рдкрд╕рдВрдж рдЖрдП рд╣реИрдВ! рджреВрд╕рд░реЛрдВ рд╕реЗ рдЕрдзрд┐рдХ рдФрд░ рдореЗрд░реЗ рдкреНрдпрд╛рд░ рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред
рдкреНрд▓реЗ рдкрд░ рдореЗрд░реЗ 5 рдкрд╕рдВрджреАрджрд╛ рдЪрд┐рдкреНрд╕! рдврд╛рдВрдЪрд╛
- рдХрд╛рд░реНрдп (рдиреМрдХрд░рд┐рдпрд╛рдВ) - рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░реЗрдВ
- рдЯреЗрдореНрдкреНрд▓реЗрдЯреНрд╕ - рд╕рд╣рдЬ рдФрд░ рдЙрддреНрдкрд╛рджрдХ
- URL рдореИрдкрд┐рдВрдЧ рдФрд░ рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ - рд╣реЙрд░рд░ рдРрдЬрд╝ рдИрдЬрд╝реА
- рдкрд░реАрдХреНрд╖рдг - рдЖрдкрдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдФрд░ рдЖрдзрд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛
- рддреНрд╡рд░рд┐рдд рдкрд░рд┐рд╡рд░реНрддрди - рдЦреБрд╢ рдФрд░ рдЙрддреНрдкрд╛рджрдХ рдбреЗрд╡рд▓рдкрд░реНрд╕
- рдирд┐рд╖реНрдХрд░реНрд╖
рдХрд╛рд░реНрдп (рдиреМрдХрд░рд┐рдпрд╛рдВ)
рдкреНрд▓реЗ рдкрд░ рдХрд╛рд░реНрдп! рдлреНрд░реЗрдорд╡рд░реНрдХ рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд▓реЙрдЬрд┐рдХ рдЪрд▓рд╛рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдЦреЗрд▓рдиреЗ рдХреЗ рд▓рд┐рдП! рдЙрдирдХреЗ рдЬреАрд╡рди рдЪрдХреНрд░ рдХрд╛ рдиреЗрддреГрддреНрд╡ рдХрд░реЗрдВрдЧреЗ рдФрд░ рд╕рдордп рдХрд╛ рдиреЗрддреГрддреНрд╡ рдХрд░реЗрдВрдЧреЗред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдЖрдк рд╣рд░ рдкрд╛рдВрдЪ рдорд┐рдирдЯ рдореЗрдВ рдХреБрдЫ рдЪрд▓рд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдмрд╕
@Every(тАЬ5minтАЭ)
рдПрдиреЛрдЯреЗрд╢рди
@Every(тАЬ5minтАЭ)
рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдХрд╛рд░реНрдп рд╣рд░ 5 рдорд┐рдирдЯ рдореЗрдВ рдЪрд▓реЗрдЧрд╛ред рдореИрдВ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╡рд░реНрдЧ
MemoryUsageLogger
, рдЬреЛ рдЙрдкрдпреЛрдЧ рдХреА рдЧрдИ рдореЗрдореЛрд░реА рдХреА рдорд╛рддреНрд░рд╛ рдХреЛ рд▓реЙрдЧ рдХрд░рддрд╛ рд╣реИред рдорд╛рд░рдирд╛ рдХрд┐рддрдирд╛ рдЖрд╕рд╛рди рд╣реИ!
@OnApplicationStart @Every("5min") public class MemoryUsageLogger extends Job { private volatile boolean maxPrinted = false; @Override public void doJob() throws Exception { Runtime r = Runtime.getRuntime(); long total = r.totalMemory(); long free = r.freeMemory(); long used = total - free; if (!maxPrinted) { Logger.debug("Used: %dM Free: %dM Total: %dM Max: %dM", m(used), m(free), m(total), m(r.maxMemory())); maxPrinted = true; } else { Logger.debug("Used: %dM Free: %dM Total: %dM", m(used), m(free), m(total)); } } private static long m(long bytes) { return bytes / 1024 / 1024; } }
рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕
рдЕрдм рддрдХ рдореИрдВрдиреЗ PHP рдореЗрдВ JSP (рдкреБрд░рд╛рдиреЗ XML- рдЬреИрд╕рд╛ рд╕рд┐рдВрдЯреИрдХреНрд╕), Jelly (рд╣рдбрд╕рди рдкреНрд▓рдЧ рдЗрди рдореЗрдВ), XTemplate рдФрд░ рд╕реНрдорд╛рд░реНрдЯреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИред рдореИрдВрдиреЗ рдХрднреА рдЙрдирдХреЗ рд╕рд╛рде рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЙрддреНрдкрд╛рджрдХ рдорд╣рд╕реВрд╕ рдирд╣реАрдВ рдХрд┐рдпрд╛ред рдЬреИрд╕реЗ рд╣реА рдЖрдк рдХрдВрдЯреЗрдирд░ рдмрджрд▓рддреЗ рд╣реИрдВ, рдЕрдиреБрдХреВрд▓рд┐рдд рдПрдХреНрд╕рдПрдордПрд▓ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд▓рдбрд╝рддреЗ рд╣реБрдП, рдпрд╛ рдпрд╣рд╛рдБ рддрдХ рдХрд┐ рдЯреЗрдореНрдкреНрд▓реЗрдЯреНрд╕ рдХреЗ рд▓рд┐рдП рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреА рдЧрдВрджреА рднрд╛рд╖рд╛ рд╕реАрдЦрддреЗ рд╣реБрдП, рдЯреИрдЯрд╛рд░рд╕ рдореЗрдВ рдЙрдбрд╝рдиреЗ рд╡рд╛рд▓реЗ рдЕрдиреБрдХреВрд▓рд┐рдд рдЯреИрдЧ рд▓рд┐рдЦрдирд╛ - рдпрд╣ рд╕рдм рдордЬрд╝реЗрджрд╛рд░ рдирд╣реАрдВ рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдЦреЗрд▓реЗрдВ! рдЧреНрд░реВрд╡реА рдХреЛ рдПрдХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рднрд╛рд╖рд╛ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдкреБрди: рдкреНрд░рдпреЛрдЬреНрдп рдШрдЯрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдирдХреЗ рдЯреИрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдЧреНрд░реВрд╡реА рдПрдХ рд╕рд╛рдл, рд╕рд╣рдЬ, рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рд░рд▓ рднрд╛рд╖рд╛ рд╣реИ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЬрд╛рд╡рд╛ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдЖрд╕рд╛рди рд╣реИред рдореБрдЭреЗ рдпрд╣ рднреА рдкрд╕рдВрдж рд╣реИ рдХрд┐ рдЧреНрд░реВрд╡реА рдХреБрдЫ рд╕реНрд╡рддрдВрддреНрд░ рд╣реИ, рдПрдХ рдЕрд▓рдЧ рдЕрд╡рд╛рдВрдЫрд┐рдд рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╣реИ, рдФрд░ рдХреБрдЫ рд╡рд┐рд╢реЗрд╖ рдирд╣реАрдВ рд╣реИ, рдХреЗрд╡рд▓ рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдХреЗ рд▓рд┐рдП рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред
#{list items:resources,as:'res'} #{if res.directory} <tr class="directory collapsed" rel="${res.id}" parent="${res.parent?.id}"> <td><a href="#">${res.name}</a></td> <td></td> <td class="right">${res.lastModified == null ? '(unknown)' : res.lastModified.format("yyyy-MM-dd HH:mm")}</td> </tr> #{/if} #{/list}
рд╡реИрд╕реЗ, рдпрд╣ рд╕рдм рдмрдбрд╝реА рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢реЛрдВ рдХреЗ рд╕рд╛рде рдЖрддрд╛ рд╣реИ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдХреЗ рд▓рд┐рдП рднреАред рдЖрдк рдЬрд▓реНрджреА рд╕реЗ рд╕рдордЭ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдиреЗ рдХрд╣рд╛рдВ рдЧрд▓рддреА рдХреАред рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЯреЗрдореНрдкрд▓реЗрдЯ рднрд╛рд╖рд╛ рдХреЛ рд╕реНрд╡рдд: рдкреВрд░реНрдг рдФрд░ рд╡рд╛рдХреНрдп рд░рдЪрдирд╛ рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд┐рдВрдЧ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЧреНрд░рд╣рдг рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

URL рдореИрдкрд┐рдВрдЧ рдФрд░ рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ
рдкреНрд▓реЗ рдкрд░ рдЕрдкрдиреЗ рдирд┐рдпрдВрддреНрд░рдХреЛрдВ! рд╕реНрдереИрддрд┐рдХ рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдПрдХ рд╕рдореВрд╣ рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдЖрдкрдХреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЗ URL рд╕реЗ рдмрдВрдзреЗ рд╣реЛрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдЖрдкрдХреЛ
/contacts/list
рд▓рд┐рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреБрдЫ рджрд┐рдЦрд╛рдирд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ
contacts
рдирд┐рдпрдВрддреНрд░рдХ рдореЗрдВ
list
рд╡рд┐рдзрд┐ рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ (рдпрд╣ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдирд╛рдордХрд░рдг рд╕рдореНрдореЗрд▓рди рд╣реИ, рдЬрд┐рд╕реЗ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрдиреЗ рдкрд░ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ)ред рдпрд╛ рдпрджрд┐ рдЖрдкрдХреЛ рд╕рдВрдкрд░реНрдХ рдЬрд╛рдирдХрд╛рд░реА рджрд┐рдЦрд╛рдиреЗ рд╡рд╛рд▓реЗ рдкреГрд╖реНрда рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЖрдк рдПрдХ
showContact
рд╡рд┐рдзрд┐ рдмрдирд╛рдПрдВ рдФрд░ рдЗрд╕реЗ
/contacts/showcontact
ред
рдпрджрд┐ рдЖрдк рд╕реВрдЪреА рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рд╕рдВрдкрд░реНрдХ рд╣реИ, рддреЛ рдХреНрдпрд╛ рдЖрдк рд╕рдВрдкрд░реНрдХ рд╕реВрдЪреА рдкреГрд╖реНрда рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛
/contacts/showcontact
рдкреЗрдЬ рдкрд░ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ?
list
рд╡рд┐рдзрд┐ рдореЗрдВ рдЕрдкрдиреЗ рдЬрд╛рд╡рд╛ рдХреЛрдб рдореЗрдВ, рдмрд╕
showContact
рд╡рд┐рдзрд┐, рдФрд░ рдкреНрд▓реЗ рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВ! рдЗрд╕реЗ рдмрд╛рд╣рд░реА рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рди (http рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд) рдХреЗ рд░реВрдк рдореЗрдВ рдХрд░реЗрдВрдЧреЗред рдЗрддрдирд╛ рдЖрд╕рд╛рди рдФрд░ рдкрдардиреАрдп рдХрд┐ рдпрд╣ рдбрд░рд╛рд╡рдирд╛ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред
рдкрд░реАрдХреНрд╖рдг
рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдкрд░реАрдХреНрд╖рдг рдПрдХ рдХрдард┐рди рдкреНрд░рд╢реНрди рд╣реИред рдХрдИ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реИрдВ, рдФрд░ рдЖрдорддреМрд░ рдкрд░ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдЪреБрдирдиреЗ рдФрд░ рдПрдХреНрд╕ рдкрд░ рд▓рд┐рдЦреЗ рдЧрдП рдЖрдкрдХреЗ рдЖрд╡реЗрджрди рдкрд░ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХреЛрдИ рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдПрдХ рдЕрд▓рдЧ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд▓реЗрддрд╛ рд╣реИ: рдпрд╣ рдЖрдкрдХреЗ рдЖрд╡реЗрджрди рдкрд░ рдЪрд▓ рд░рд╣реА рдЗрдХрд╛рдИ, рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдФрд░ рд╕реЗрд▓реЗрдирд┐рдпрдо рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд╕рд╛рде рдмрдВрдбрд▓ рдореЗрдВ рдЖрддрд╛ рд╣реИред рдЪреВрдВрдХрд┐ рдкрд░реАрдХреНрд╖рдг рдПрдХ рдРрд╕реА рдЪреАрдЬ рд╣реИ рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреВрд▓рдирд╛ рдЖрд╕рд╛рди рд╣реИ, рдпрд╣ рд╣рдореЗрд╢рд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдпрд╣ "рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ" рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред рдкрд░реАрдХреНрд╖рдг рд╕реНрд╡рдЪрд╛рд▓рди рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдк рд╡рд┐рдХрд╛рд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рджреМрд░рд╛рди рд╕рдорд╛рди рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдЖрдорддреМрд░ рдкрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдЖрдИрдбреАрдИ рдпрд╛ рдЪреАрдВрдЯреА / рдорд╛рд╡реЗрди / рд╢реЗрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд▓реЙрдиреНрдЪ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛)ред

рддреНрд╡рд░рд┐рдд рдкрд▓рдЯрд╡рд╛рд░
рд╣рдо
ZeroTurnaround (рд╢рд╛рдмреНрджрд┐рдХ рд░реВрдк рд╕реЗ "рд╢реВрдиреНрдп рдЯрд░реНрдирдУрд╡рд░" рдпрд╛ "рддрддреНрдХрд╛рд▓ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛") рдбреЗрд╡рд▓рдкрд░ рдЙрддреНрдкрд╛рджрдХрддрд╛ рдХреЗ рд╕рд╛рде рдЧреНрд░рд╕реНрдд рд╣реИрдВред рд╣рдорд╛рд░реЗ рдкреНрд░рдореБрдЦ рдЙрддреНрдкрд╛рдж
JRebel рдЖрдкрдХреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛрдб рдХреЛ рдмрджрд▓рдиреЗ рдФрд░ рд╕реНрдХреНрд░реАрди рдкрд░ рдЖрдкрдХреЗ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рддреБрд░рдВрдд рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рддрд╛рдЬрд╝рд╛ рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдлреНрд░реЗрдорд╡рд░реНрдХ рдЦреЗрд▓реЗрдВ! рд╕рдорд╛рди рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдкреНрд▓реЗ рдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореЗрд░реЗ рдкрд╛рд╕ рдкрд░реНрдпрд╛рдкреНрдд рд╕рдордп рдирд╣реАрдВ рд╣реИ! рд▓реЗрдХрд┐рди рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХрдИ рдЫреЛрдЯреЗ рдкреНрд░рддрд┐рдмрдВрдзреЛрдВ рдХреЗ рдХрд╛рд░рдг (bytecode рдореЗрдВ рдХреБрдЫ рдореЗрдЯрд╛-рдЬрд╛рдирдХрд╛рд░реА, tmp / bytecode / DEV, рдПрдХ рд╕реНрдЯреЗрдЯрд▓реЗрд╕ рдореЙрдбрд▓ рдФрд░ рдПрдХ рдЕрдиреБрдХреВрд▓рд┐рдд
play run
) рдЖрдкрдХреЛ рдордХреНрдЦреА рдкрд░ рдХреЛрдб рдмрджрд▓рдиреЗ рдХреА рдПрдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдХреБрдЫ рдмрд┐рдВрджреБ рдкрд░ "рдордХреНрдЦреА рдкрд░" рдХреЛрдб рдмрджрд▓рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ, рддреЛ рдпрд╣ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЖрдкрдХреЗ рдЖрд╡реЗрджрди рдХреЛ рдЪреБрдкрдЪрд╛рдк рдкреБрдирдГ рдЖрд░рдВрдн рдХрд░реЗрдЧрд╛ред рдпрд╣ рдЕрдиреНрдп рдЪреМрдЦрдЯреЗ рдкрд░ рдПрдХ рдЬрдмрд░рджрд╕реНрдд рдлрд╛рдпрджрд╛ рд╣реИред
рдирд┐рд╖реНрдХрд░реНрд╖
рдлреНрд░реЗрдорд╡рд░реНрдХ рдЦреЗрд▓реЗрдВ! рд╢рд╛рдВрдд рдЪрд┐рдкреНрд╕ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдпреЗ рдореЗрд░реЗ рдкрд╕рдВрджреАрджрд╛ рдореЗрдВ рд╕реЗ рдХреЗрд╡рд▓ 5 рд╣реИрдВред рдмреЗрд╢рдХ рдЦреЗрд▓реЛ! - рдпрд╣ рдПрдХ рдЪрд╛рдВрджреА рдХреА рдЧреЛрд▓реА рдирд╣реАрдВ рд╣реИ, рдФрд░ рдЗрд╕рдХреА рдЕрдкрдиреА рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдЕрд▓рдЧ рд▓реЗрдЦ рдХрд╛ рд╡рд┐рд╖рдп рд╣реИред рдЙрд╕ рд╕рдордп рдХреЗ рджреМрд░рд╛рди рдЬрдм рдореИрдВ рдкреНрд▓реЗ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рдерд╛!, рдпрд╣ рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрддреНрдкрд╛рджрдХ рдФрд░ рд╕рд╣рдЬ рд╡рд╛рддрд╛рд╡рд░рдг рд╕рд╛рдмрд┐рдд рд╣реБрдЖ рд╣реИред рдФрд░ рдкреНрд▓реЗ рдкрд░ рдЖрдкрдХреЗ рдкрд╕рдВрджреАрджрд╛ рдЯреБрдХрдбрд╝реЗ рдХреНрдпрд╛ рд╣реИрдВ?!

рдЯреЛрдорд╛рд╕ рд░реЛрдорд░, ZeroTurnaround рдХреЗ рд╕рд╣-рд╕рдВрд╕реНрдерд╛рдкрдХ рдФрд░ рдЙрддреНрдкрд╛рдж рдХрд╛ рдиреЗрддреГрддреНрд╡ рд╣реИ, рд╡рд╣реА рдХрдВрдкрдиреА рдЬреЛ
рдЬреЗрдмреНрд░реЗрд▓ рдиреЗ рдХрд┐рдпрд╛ рдерд╛ред рдереЙрдорд╕ рдЬреБрдЧ, рдУрдПрд╕рдПрд╕ рд╕рдореБрджрд╛рдпреЛрдВ рдФрд░ рдмреАрдпрд░ рдХрд╛ рдПрдХ рдмрдбрд╝рд╛ рдкреНрд░рд╢рдВрд╕рдХ рд╣реИред рд╡рд╣
dow.ngra.de рдкрд░ рдмреНрд▓реЙрдЧ рд▓рд┐рдЦрддреЗ рд╣реИрдВ,
@toomasr рдХреЗ рд░реВрдк рдореЗрдВ рдЯреНрд╡реАрдЯ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдЧреИрд░-рд▓рд╛рднрдХрд╛рд░реА рд╡реЗрдмрд╕рд╛рдЗрдЯ
chesspastebin.com рдХреЛ рднреА рдмрдирд╛рдП
рд░рдЦрддреЗ рд╣реИрдВ ред рдЕрдкрдиреЗ рдЦрд╛рд▓реА рд╕рдордп рдореЗрдВ, рд╡рд╣ рдбреНрд░рд╛рдЗрд╡ рдЯреЗрд╕реНрдЯ рдореЗрдВ рд▓реЗрдХреНрд╕рд╕ рдХреЛ рдХреНрд░реИрд╢ рдХрд░ рджреЗрддрд╛ рд╣реИ, рд╢рддрд░рдВрдЬ, рдЧреЛ рдФрд░ рд╕реНрдЯрд╛рд░рдХреНрд░рд╛рдлреНрдЯ рдЦреЗрд▓рддрд╛ рд╣реИред рдЙрд╕рдХрд╛ рд░реВрдк рдзреЛрдЦрд╛ рд╣реИ; рд╡рд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЖрдкрдХреЛ рд╕реНрдХреНрд╡рд╛рд╢ рдХрд░реЗрдЧрд╛ред рдпрджрд┐ рдХреБрдЫ рд╣реИ, рддреЛ рдЙрд╕рдХрд╛ рдФрд░
рд▓рд┐рдВрдХреНрдбрдЗрди рдХрд╛ рдЦрд╛рддрд╛ рд╣реИред