{"id":20470,"date":"2023-05-01T01:15:29","date_gmt":"2023-04-30T21:45:29","guid":{"rendered":"https:\/\/nabfollower.com\/blog\/how-to-develop-an-online-code-compiler-using-java-and-docker-2oe8\/"},"modified":"2023-05-01T01:15:29","modified_gmt":"2023-04-30T21:45:29","slug":"how-to-develop-an-online-code-compiler-using-java-and-docker-2oe8","status":"publish","type":"post","link":"https:\/\/nabfollower.com\/blog\/how-to-develop-an-online-code-compiler-using-java-and-docker-2oe8\/","title":{"rendered":"\u0686\u06af\u0648\u0646\u0647 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u062c\u0627\u0648\u0627 \u0648 \u062f\u0627\u06a9\u0631 \u06cc\u06a9 \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644\u0631 \u06a9\u062f \u0622\u0646\u0644\u0627\u06cc\u0646 \u062a\u0648\u0633\u0639\u0647 \u062f\u0647\u06cc\u0645."},"content":{"rendered":"<div data-article-id=\"1453142\" id=\"article-body\">\n<p>\u0622\u06cc\u0627 \u062a\u0627 \u0628\u0647 \u062d\u0627\u0644 \u0641\u06a9\u0631 \u06a9\u0631\u062f\u0647 \u0627\u06cc\u062f \u06a9\u0647 \u067e\u0644\u062a\u0641\u0631\u0645 \u0647\u0627\u06cc\u06cc \u0645\u0627\u0646\u0646\u062f Codeforces \u0648 LeetCode \u0686\u06af\u0648\u0646\u0647 \u06a9\u0627\u0631 \u0645\u06cc \u06a9\u0646\u0646\u062f\u061f  \u0686\u06af\u0648\u0646\u0647 \u0622\u0646\u0647\u0627 \u06a9\u062f \u0686\u0646\u062f\u06cc\u0646 \u06a9\u0627\u0631\u0628\u0631 \u0631\u0627 \u062f\u0631 \u0628\u0631\u0627\u0628\u0631 \u0645\u0648\u0627\u0631\u062f \u0622\u0632\u0645\u0627\u06cc\u0634\u06cc \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u0648 \u0627\u062c\u0631\u0627 \u0645\u06cc \u06a9\u0646\u0646\u062f\u061f  \u0686\u06af\u0648\u0646\u0647 \u06a9\u0627\u0631\u0627\u06cc\u06cc \u0627\u0644\u06af\u0648\u0631\u06cc\u062a\u0645 \u0647\u0627 \u0631\u0627 \u062a\u0639\u06cc\u06cc\u0646 \u0645\u06cc \u06a9\u0646\u0646\u062f\u061f<br \/>\u062f\u0631 \u0627\u06cc\u0646 \u0645\u0642\u0627\u0644\u0647\u060c \u0628\u0647 \u0641\u0631\u0622\u06cc\u0646\u062f \u0633\u0627\u062e\u062a \u06cc\u06a9 \u067e\u0644\u062a\u0641\u0631\u0645 \u062d\u0644 \u0645\u0633\u0626\u0644\u0647 \u0628\u0633\u06cc\u0627\u0631 \u0645\u0648\u062b\u0631 \u062e\u0648\u0627\u0647\u06cc\u0645 \u067e\u0631\u062f\u0627\u062e\u062a.<\/p>\n<p>\u06a9\u062f \u0645\u0646\u0628\u0639 \u0627\u06cc\u0646 \u0645\u0642\u0627\u0644\u0647 \u0631\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646 \u062f\u0631 \u0645\u0646\u0628\u0639 \u0645\u0646\u0628\u0639 Github \u0645\u0646 \u06cc\u0627\u0641\u062a<\/p>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_85 counter-hierarchy ez-toc-counter-rtl ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">\u0641\u0647\u0631\u0633\u062a \u0645\u0637\u0627\u0644\u0628<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"\u062a\u063a\u06cc\u06cc\u0631 \u0648\u0636\u0639\u06cc\u062a \u0641\u0647\u0631\u0633\u062a \u0645\u0637\u0627\u0644\u0628\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/nabfollower.com\/blog\/how-to-develop-an-online-code-compiler-using-java-and-docker-2oe8\/#%D9%85%D8%B4%D8%AE%D8%B5%D8%A7%D8%AA\" >\u0645\u0634\u062e\u0635\u0627\u062a<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/nabfollower.com\/blog\/how-to-develop-an-online-code-compiler-using-java-and-docker-2oe8\/#%D8%B9%D9%85%D9%84%DA%A9%D8%B1%D8%AF%DB%8C\" >\u0639\u0645\u0644\u06a9\u0631\u062f\u06cc<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/nabfollower.com\/blog\/how-to-develop-an-online-code-compiler-using-java-and-docker-2oe8\/#%D8%BA%DB%8C%D8%B1_%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1%D8%AF%DB%8C\" >\u063a\u06cc\u0631 \u06a9\u0627\u0631\u0628\u0631\u062f\u06cc<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/nabfollower.com\/blog\/how-to-develop-an-online-code-compiler-using-java-and-docker-2oe8\/#%D8%B1%D8%A7%D8%A8%D8%B7\" >\u0631\u0627\u0628\u0637<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/nabfollower.com\/blog\/how-to-develop-an-online-code-compiler-using-java-and-docker-2oe8\/#%D9%BE%DB%8C%D8%A7%D8%AF%D9%87_%D8%B3%D8%A7%D8%B2%DB%8C\" >\u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/nabfollower.com\/blog\/how-to-develop-an-online-code-compiler-using-java-and-docker-2oe8\/#%D9%85%D8%AD%DB%8C%D8%B7_%D9%87%D8%A7%DB%8C_%D9%85%D8%AC%D8%B2%D8%A7_%D8%A7%D8%B2_%D8%A7%D8%B9%D8%AF%D8%A7%D9%85_%D9%87%D8%A7\" >\u0645\u062d\u06cc\u0637 \u0647\u0627\u06cc \u0645\u062c\u0632\u0627 \u0627\u0632 \u0627\u0639\u062f\u0627\u0645 \u0647\u0627<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/nabfollower.com\/blog\/how-to-develop-an-online-code-compiler-using-java-and-docker-2oe8\/#%D8%A8%D8%B1%D8%AE%DB%8C_%D8%A7%D8%B2_%D9%85%D8%B2%D8%A7%DB%8C%D8%A7%DB%8C_%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87_%D8%A7%D8%B2_%D8%B8%D8%B1%D9%88%D9%81\" >\u0628\u0631\u062e\u06cc \u0627\u0632 \u0645\u0632\u0627\u06cc\u0627\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0638\u0631\u0648\u0641<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/nabfollower.com\/blog\/how-to-develop-an-online-code-compiler-using-java-and-docker-2oe8\/#%D8%B8%D8%B1%D9%88%D9%81_%DA%A9%D8%A7%D9%85%D9%BE%D8%A7%DB%8C%D9%84%D8%A7%D8%AA%D9%88%D9%86\" >\u0638\u0631\u0648\u0641 \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644\u0627\u062a\u0648\u0646<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/nabfollower.com\/blog\/how-to-develop-an-online-code-compiler-using-java-and-docker-2oe8\/#%D8%B8%D8%B1%D9%88%D9%81_%D8%A7%D8%B9%D8%AF%D8%A7%D9%85\" >\u0638\u0631\u0648\u0641 \u0627\u0639\u062f\u0627\u0645<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/nabfollower.com\/blog\/how-to-develop-an-online-code-compiler-using-java-and-docker-2oe8\/#%D8%AE%D8%B7_%D9%85%D8%B4%DB%8C_%D8%A7%D9%85%D9%86%DB%8C%D8%AA%DB%8C\" >\u062e\u0637 \u0645\u0634\u06cc \u0627\u0645\u0646\u06cc\u062a\u06cc<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/nabfollower.com\/blog\/how-to-develop-an-online-code-compiler-using-java-and-docker-2oe8\/#%D8%AF%D8%B1%D8%AE%D9%88%D8%A7%D8%B3%D8%AA_%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1\" >\u062f\u0631\u062e\u0648\u0627\u0633\u062a \u06a9\u0627\u0631\u0628\u0631<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/nabfollower.com\/blog\/how-to-develop-an-online-code-compiler-using-java-and-docker-2oe8\/#%D8%A7%D8%B3%D8%AA%D8%B1%D8%A7%D8%AA%DA%98%DB%8C_%D8%AA%D8%AF%D9%88%DB%8C%D9%86\" >\u0627\u0633\u062a\u0631\u0627\u062a\u0698\u06cc \u062a\u062f\u0648\u06cc\u0646<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-13\" href=\"https:\/\/nabfollower.com\/blog\/how-to-develop-an-online-code-compiler-using-java-and-docker-2oe8\/#%D8%A7%D8%B3%D8%AA%D8%B1%D8%A7%D8%AA%DA%98%DB%8C_%D8%A7%D8%AC%D8%B1%D8%A7\" >\u0627\u0633\u062a\u0631\u0627\u062a\u0698\u06cc \u0627\u062c\u0631\u0627<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-14\" href=\"https:\/\/nabfollower.com\/blog\/how-to-develop-an-online-code-compiler-using-java-and-docker-2oe8\/#%DA%A9%D8%A7%D8%B1%D8%AE%D8%A7%D9%86%D9%87_%DA%86%DA%A9%DB%8C%D8%AF%D9%87\" >\u06a9\u0627\u0631\u062e\u0627\u0646\u0647 \u0686\u06a9\u06cc\u062f\u0647<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-15\" href=\"https:\/\/nabfollower.com\/blog\/how-to-develop-an-online-code-compiler-using-java-and-docker-2oe8\/#%D9%86%D8%AD%D9%88%D9%87_%D9%85%D8%AD%D8%A7%D8%B3%D8%A8%D9%87_%DA%A9%D8%A7%D9%85%D9%BE%D8%A7%DB%8C%D9%84_%D9%88_%D9%85%D8%AF%D8%AA_%D8%B2%D9%85%D8%A7%D9%86_%D8%A7%D8%AC%D8%B1%D8%A7\" >\u0646\u062d\u0648\u0647 \u0645\u062d\u0627\u0633\u0628\u0647 \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u0648 \u0645\u062f\u062a \u0632\u0645\u0627\u0646 \u0627\u062c\u0631\u0627<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-16\" href=\"https:\/\/nabfollower.com\/blog\/how-to-develop-an-online-code-compiler-using-java-and-docker-2oe8\/#Docker_Inspect\" >Docker Inspect<\/a><\/li><\/ul><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-17\" href=\"https:\/\/nabfollower.com\/blog\/how-to-develop-an-online-code-compiler-using-java-and-docker-2oe8\/#%D8%B3%D8%A7%DB%8C%D8%B1_%D9%85%D9%88%D8%A7%D8%B1%D8%AF_%D9%85%D9%88%D8%AC%D9%88%D8%AF_%D8%AF%D8%B1_%D9%BE%D8%A7%DB%8C%DA%AF%D8%A7%D9%87_%DA%A9%D8%AF\" >\u0633\u0627\u06cc\u0631 \u0645\u0648\u0627\u0631\u062f \u0645\u0648\u062c\u0648\u062f \u062f\u0631 \u067e\u0627\u06cc\u06af\u0627\u0647 \u06a9\u062f<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-18\" href=\"https:\/\/nabfollower.com\/blog\/how-to-develop-an-online-code-compiler-using-java-and-docker-2oe8\/#%D9%86%D8%AA%DB%8C%D8%AC%D9%87\" >\u0646\u062a\u06cc\u062c\u0647<\/a><\/li><\/ul><\/nav><\/div>\n<h2><span class=\"ez-toc-section\" id=\"%D9%85%D8%B4%D8%AE%D8%B5%D8%A7%D8%AA\"><\/span>\n<p>  \u0645\u0634\u062e\u0635\u0627\u062a<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3><span class=\"ez-toc-section\" id=\"%D8%B9%D9%85%D9%84%DA%A9%D8%B1%D8%AF%DB%8C\"><\/span>\n<p>  \u0639\u0645\u0644\u06a9\u0631\u062f\u06cc<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u067e\u0644\u062a \u0641\u0631\u0645 \u0645\u0627 \u0628\u0627\u06cc\u062f \u0627\u06cc\u0646 \u0628\u0627\u0634\u062f:<\/p>\n<ul>\n<li>\u0642\u0627\u062f\u0631 \u0628\u0647 \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0627\u0632 \u0686\u0646\u062f\u06cc\u0646 \u0632\u0628\u0627\u0646 \u0628\u0631\u0646\u0627\u0645\u0647 \u0646\u0648\u06cc\u0633\u06cc<\/li>\n<li>\u0642\u0627\u062f\u0631 \u0628\u0647 \u0627\u062c\u0631\u0627\u06cc \u06a9\u062f \u06a9\u0627\u0631\u0628\u0631 \u062f\u0631 \u0628\u0631\u0627\u0628\u0631 \u0686\u0646\u062f\u06cc\u0646 \u0645\u0648\u0631\u062f \u062a\u0633\u062a<\/li>\n<li>\u0627\u0645\u06a9\u0627\u0646 \u0628\u0627\u0632\u06af\u0634\u062a \u06cc\u06a9 \u062d\u06a9\u0645 \u0635\u062d\u06cc\u062d \u067e\u0633 \u0627\u0632 \u0627\u062c\u0631\u0627\u060c \u0644\u06cc\u0633\u062a \u0627\u062d\u06a9\u0627\u0645 (<strong>\u067e\u0630\u06cc\u0631\u0641\u062a\u0647 \u0634\u062f\u0647<\/strong>\u060c <strong>\u062c\u0648\u0627\u0628 \u0627\u0634\u062a\u0628\u0627\u0647<\/strong>\u060c <strong>\u0627\u0632 \u0645\u062d\u062f\u0648\u062f\u06cc\u062a \u0632\u0645\u0627\u0646\u06cc \u0641\u0631\u0627\u062a\u0631 \u0631\u0641\u062a<\/strong>\u060c <strong>\u0627\u0632 \u062d\u062f \u0645\u062c\u0627\u0632 \u062d\u0627\u0641\u0638\u0647 \u0641\u0631\u0627\u062a\u0631 \u0631\u0641\u062a<\/strong>\u060c <strong>\u062e\u0637\u0627\u06cc \u0632\u0645\u0627\u0646 \u0627\u062c\u0631\u0627<\/strong>\u060c <strong>\u062e\u0637\u0627\u06cc \u062a\u0627\u0644\u06cc\u0641<\/strong>).<\/li>\n<li>\u0627\u06af\u0631 \u062d\u06a9\u0645 \u06cc\u06a9\u06cc \u0627\u0632 \u0627\u06cc\u0646 \u0645\u0648\u0627\u0631\u062f \u0628\u0627\u0634\u062f\u060c \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u06cc\u06a9 \u062e\u0637\u0627\u06cc \u062f\u0642\u06cc\u0642 \u0631\u0627 \u0628\u0647 \u06a9\u0627\u0631\u0628\u0631 \u0628\u0627\u0632\u06af\u0631\u062f\u0627\u0646\u062f (<strong>\u0627\u0632 \u0645\u062d\u062f\u0648\u062f\u06cc\u062a \u0632\u0645\u0627\u0646\u06cc \u0641\u0631\u0627\u062a\u0631 \u0631\u0641\u062a<\/strong>\u060c <strong>\u062e\u0637\u0627\u06cc \u062a\u0627\u0644\u06cc\u0641<\/strong>\u060c <strong>\u062e\u0637\u0627\u06cc \u0632\u0645\u0627\u0646 \u0627\u062c\u0631\u0627<\/strong>\u060c <strong>\u0627\u0632 \u062d\u062f \u0645\u062c\u0627\u0632 \u062d\u0627\u0641\u0638\u0647 \u0641\u0631\u0627\u062a\u0631 \u0631\u0641\u062a<\/strong>).<\/li>\n<li>\u0642\u0627\u062f\u0631 \u0628\u0647 \u0628\u0631\u06af\u0631\u062f\u0627\u0646\u062f\u0646 \u0645\u062f\u062a \u0632\u0645\u0627\u0646 \u062a\u062f\u0648\u06cc\u0646.<\/li>\n<li>\u0642\u0627\u062f\u0631 \u0628\u0647 \u0628\u0631\u06af\u0631\u062f\u0627\u0646\u062f\u0646 \u0645\u062f\u062a \u0632\u0645\u0627\u0646 \u0627\u062c\u0631\u0627 \u0628\u0631\u0627\u06cc \u0647\u0631 \u0645\u0648\u0631\u062f \u0622\u0632\u0645\u0627\u06cc\u0634\u06cc \u0627\u0633\u062a.<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"%D8%BA%DB%8C%D8%B1_%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1%D8%AF%DB%8C\"><\/span>\n<p>  \u063a\u06cc\u0631 \u06a9\u0627\u0631\u0628\u0631\u062f\u06cc<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u067e\u0644\u062a \u0641\u0631\u0645 \u0645\u0627 \u0628\u0627\u06cc\u062f:<\/p>\n<ul>\n<li>\u0642\u0627\u062f\u0631 \u0628\u0647 \u0627\u062c\u0631\u0627\u06cc \u0686\u0646\u062f\u06cc\u0646 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0628\u0647 \u0637\u0648\u0631 \u0647\u0645\u0632\u0645\u0627\u0646<\/li>\n<li>\u0645\u062d\u06cc\u0637 \u0647\u0627\u06cc \u0627\u062c\u0631\u0627\u06cc\u06cc \u0645\u062c\u0632\u0627 (\u06a9\u062f \u06a9\u0627\u0631\u0628\u0631 \u0645\u062e\u0631\u0628 \u0646\u0628\u0627\u06cc\u062f \u0628\u0647 \u0645\u06cc\u0632\u0628\u0627\u0646 \u0645\u0627\u0634\u06cc\u0646 \u062f\u0633\u062a\u0631\u0633\u06cc \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f)<\/li>\n<li>\u062f\u0631 \u0635\u0648\u0631\u062a \u062a\u062c\u0627\u0648\u0632 \u0627\u0632 \u0645\u062d\u062f\u0648\u062f\u06cc\u062a \u0632\u0645\u0627\u0646\u06cc\u060c \u0646\u0628\u0627\u06cc\u062f \u0627\u062c\u0627\u0632\u0647 \u062f\u0627\u062f \u06a9\u062f \u0627\u062c\u0631\u0627 \u0634\u0648\u062f.<\/li>\n<li>\u0628\u0631\u0627\u06cc \u0647\u0631 \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u060c \u06a9\u062f \u06a9\u0627\u0631\u0628\u0631 \u0628\u0627\u06cc\u062f \u06cc\u06a9 \u0628\u0627\u0631 \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u0634\u0648\u062f \u0648 \u0686\u0646\u062f\u06cc\u0646 \u0628\u0627\u0631 \u062f\u0631 \u0628\u0631\u0627\u0628\u0631 \u0645\u0648\u0627\u0631\u062f \u0622\u0632\u0645\u0627\u06cc\u0634\u06cc \u0627\u062c\u0631\u0627 \u0634\u0648\u062f.<\/li>\n<li>\u06a9\u0627\u0631\u0628\u0631 \u0646\u0628\u0627\u06cc\u062f \u0628\u0647 \u0633\u06cc\u0633\u062a\u0645 \u0641\u0627\u06cc\u0644 \u0645\u06cc\u0632\u0628\u0627\u0646 \u062f\u0633\u062a\u0631\u0633\u06cc \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f.<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"%D8%B1%D8%A7%D8%A8%D8%B7\"><\/span>\n<p>  \u0631\u0627\u0628\u0637<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0646\u0645\u0648\u0646\u0647 \u0627\u06cc \u0627\u0632 \u0648\u0631\u0648\u062f\u06cc:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight json\"><code><span class=\"p\">{<\/span><span class=\"w\">\n    <\/span><span class=\"nl\">\"testCases\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"p\">{<\/span><span class=\"w\">\n      <\/span><span class=\"nl\">\"test1\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"p\">{<\/span><span class=\"w\">\n        <\/span><span class=\"nl\">\"input\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"&lt;YOUR_INPUT&gt;\"<\/span><span class=\"p\">,<\/span><span class=\"w\">\n        <\/span><span class=\"nl\">\"expectedOutput\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"&lt;YOUR_EXPECTED_OUTPUT&gt;\"<\/span><span class=\"w\">\n      <\/span><span class=\"p\">},<\/span><span class=\"w\">\n      <\/span><span class=\"nl\">\"test2\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"p\">{<\/span><span class=\"w\">\n        <\/span><span class=\"nl\">\"input\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"&lt;YOUR_INPUT&gt;\"<\/span><span class=\"p\">,<\/span><span class=\"w\">\n        <\/span><span class=\"nl\">\"expectedOutput\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"&lt;YOUR_EXPECTED_OUTPUT&gt;\"<\/span><span class=\"w\">\n      <\/span><span class=\"p\">},<\/span><span class=\"w\">\n      <\/span><span class=\"err\">...<\/span><span class=\"w\">\n    <\/span><span class=\"p\">},<\/span><span class=\"w\">\n    <\/span><span class=\"nl\">\"sourceCode\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"&lt;YOUR_SOURCE_CODE&gt;\"<\/span><span class=\"p\">,<\/span><span class=\"w\">\n    <\/span><span class=\"nl\">\"language\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"JAVA\"<\/span><span class=\"p\">,<\/span><span class=\"w\">\n    <\/span><span class=\"nl\">\"timeLimit\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"mi\">15<\/span><span class=\"p\">,<\/span><span class=\"w\">  \n    <\/span><span class=\"nl\">\"memoryLimit\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"mi\">500<\/span><span class=\"w\"> \n<\/span><span class=\"p\">}<\/span><span class=\"w\">\n<\/span><\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0646\u0645\u0648\u0646\u0647 \u0647\u0627\u06cc\u06cc \u0627\u0632 \u062e\u0631\u0648\u062c\u06cc \u0647\u0627:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight json\"><code><span class=\"p\">{<\/span><span class=\"w\">\n    <\/span><span class=\"nl\">\"verdict\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"Accepted\"<\/span><span class=\"p\">,<\/span><span class=\"w\">\n    <\/span><span class=\"nl\">\"statusCode\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"mi\">100<\/span><span class=\"p\">,<\/span><span class=\"w\">\n    <\/span><span class=\"nl\">\"error\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"\"<\/span><span class=\"p\">,<\/span><span class=\"w\">\n    <\/span><span class=\"nl\">\"testCasesResult\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"p\">{<\/span><span class=\"w\">\n      <\/span><span class=\"nl\">\"test1\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"p\">{<\/span><span class=\"w\">\n        <\/span><span class=\"nl\">\"verdict\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"Accepted\"<\/span><span class=\"p\">,<\/span><span class=\"w\">\n        <\/span><span class=\"nl\">\"verdictStatusCode\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"mi\">100<\/span><span class=\"p\">,<\/span><span class=\"w\">\n        <\/span><span class=\"nl\">\"output\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"0 1 2 3 4 5 6 7 8 9\"<\/span><span class=\"p\">,<\/span><span class=\"w\">\n        <\/span><span class=\"nl\">\"error\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"\"<\/span><span class=\"p\">,<\/span><span class=\"w\"> \n        <\/span><span class=\"nl\">\"expectedOutput\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"0 1 2 3 4 5 6 7 8 9\"<\/span><span class=\"p\">,<\/span><span class=\"w\">\n        <\/span><span class=\"nl\">\"executionDuration\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"mi\">175<\/span><span class=\"w\">\n      <\/span><span class=\"p\">},<\/span><span class=\"w\">\n      <\/span><span class=\"nl\">\"test2\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"p\">{<\/span><span class=\"w\">\n        <\/span><span class=\"nl\">\"verdict\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"Accepted\"<\/span><span class=\"p\">,<\/span><span class=\"w\">\n        <\/span><span class=\"nl\">\"verdictStatusCode\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"mi\">100<\/span><span class=\"p\">,<\/span><span class=\"w\">\n        <\/span><span class=\"nl\">\"output\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"9 8 7 1\"<\/span><span class=\"p\">,<\/span><span class=\"w\">\n        <\/span><span class=\"nl\">\"error\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"\"<\/span><span class=\"w\"> <\/span><span class=\"p\">,<\/span><span class=\"w\">\n        <\/span><span class=\"nl\">\"expectedOutput\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"9 8 7 1\"<\/span><span class=\"p\">,<\/span><span class=\"w\">\n        <\/span><span class=\"nl\">\"executionDuration\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"mi\">273<\/span><span class=\"w\">\n      <\/span><span class=\"p\">},<\/span><span class=\"w\">\n      <\/span><span class=\"err\">...<\/span><span class=\"w\">\n    <\/span><span class=\"p\">},<\/span><span class=\"w\">\n    <\/span><span class=\"nl\">\"compilationDuration\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"mi\">328<\/span><span class=\"p\">,<\/span><span class=\"w\">\n    <\/span><span class=\"nl\">\"averageExecutionDuration\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"mi\">183<\/span><span class=\"p\">,<\/span><span class=\"w\">\n    <\/span><span class=\"nl\">\"timeLimit\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"mi\">1500<\/span><span class=\"p\">,<\/span><span class=\"w\">\n    <\/span><span class=\"nl\">\"memoryLimit\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"mi\">500<\/span><span class=\"p\">,<\/span><span class=\"w\">\n    <\/span><span class=\"nl\">\"language\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"JAVA\"<\/span><span class=\"p\">,<\/span><span class=\"w\">\n    <\/span><span class=\"nl\">\"dateTime\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"2022-01-28T23:32:02.843465\"<\/span><span class=\"w\">\n<\/span><span class=\"p\">}<\/span><span class=\"w\">\n<\/span><\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight json\"><code><span class=\"p\">{<\/span><span class=\"w\">\n    <\/span><span class=\"nl\">\"verdict\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"Runtime Error\"<\/span><span class=\"p\">,<\/span><span class=\"w\">\n    <\/span><span class=\"nl\">\"statusCode\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"mi\">600<\/span><span class=\"p\">,<\/span><span class=\"w\">\n    <\/span><span class=\"nl\">\"error\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"panic: runtime error: integer divide by zero<\/span><span class=\"se\">\\n\\n<\/span><span class=\"s2\">goroutine 1 [running]:<\/span><span class=\"se\">\\n<\/span><span class=\"s2\">main.main()<\/span><span class=\"se\">\\n\\t<\/span><span class=\"s2\">\/app\/main.go:11 +0x9b<\/span><span class=\"se\">\\n<\/span><span class=\"s2\">\"<\/span><span class=\"p\">,<\/span><span class=\"w\">\n    <\/span><span class=\"nl\">\"testCasesResult\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"p\">{<\/span><span class=\"w\">\n      <\/span><span class=\"nl\">\"test1\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"p\">{<\/span><span class=\"w\">\n        <\/span><span class=\"nl\">\"verdict\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"Accepted\"<\/span><span class=\"p\">,<\/span><span class=\"w\">\n        <\/span><span class=\"nl\">\"verdictStatusCode\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"mi\">100<\/span><span class=\"p\">,<\/span><span class=\"w\">\n        <\/span><span class=\"nl\">\"output\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"0 1 2 3 4 5 6 7 8 9\"<\/span><span class=\"p\">,<\/span><span class=\"w\">\n        <\/span><span class=\"nl\">\"error\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"\"<\/span><span class=\"p\">,<\/span><span class=\"w\"> \n        <\/span><span class=\"nl\">\"expectedOutput\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"0 1 2 3 4 5 6 7 8 9\"<\/span><span class=\"p\">,<\/span><span class=\"w\">\n        <\/span><span class=\"nl\">\"executionDuration\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"mi\">175<\/span><span class=\"w\">\n      <\/span><span class=\"p\">},<\/span><span class=\"w\">\n      <\/span><span class=\"nl\">\"test2\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"p\">{<\/span><span class=\"w\">\n        <\/span><span class=\"nl\">\"verdict\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"Runtime Error\"<\/span><span class=\"p\">,<\/span><span class=\"w\">\n        <\/span><span class=\"nl\">\"verdictStatusCode\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"mi\">600<\/span><span class=\"p\">,<\/span><span class=\"w\">\n        <\/span><span class=\"nl\">\"output\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"\"<\/span><span class=\"p\">,<\/span><span class=\"w\">\n        <\/span><span class=\"nl\">\"error\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"panic: runtime error: integer divide by zero<\/span><span class=\"se\">\\n\\n<\/span><span class=\"s2\">goroutine 1 [running]:<\/span><span class=\"se\">\\n<\/span><span class=\"s2\">main.main()<\/span><span class=\"se\">\\n\\t<\/span><span class=\"s2\">\/app\/main.go:11 +0x9b<\/span><span class=\"se\">\\n<\/span><span class=\"s2\">\"<\/span><span class=\"w\"> <\/span><span class=\"p\">,<\/span><span class=\"w\">\n        <\/span><span class=\"nl\">\"expectedOutput\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"9 8 7 1\"<\/span><span class=\"p\">,<\/span><span class=\"w\">\n        <\/span><span class=\"nl\">\"executionDuration\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"w\">\n      <\/span><span class=\"p\">}<\/span><span class=\"w\">\n    <\/span><span class=\"p\">},<\/span><span class=\"w\">\n    <\/span><span class=\"nl\">\"compilationDuration\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"mi\">328<\/span><span class=\"p\">,<\/span><span class=\"w\">\n    <\/span><span class=\"nl\">\"averageExecutionDuration\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"mi\">175<\/span><span class=\"p\">,<\/span><span class=\"w\">\n    <\/span><span class=\"nl\">\"timeLimit\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"mi\">1500<\/span><span class=\"p\">,<\/span><span class=\"w\">\n    <\/span><span class=\"nl\">\"memoryLimit\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"mi\">500<\/span><span class=\"p\">,<\/span><span class=\"w\">\n    <\/span><span class=\"nl\">\"language\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"GO\"<\/span><span class=\"p\">,<\/span><span class=\"w\">\n    <\/span><span class=\"nl\">\"dateTime\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"2022-01-28T23:32:02.843465\"<\/span><span class=\"w\">\n<\/span><span class=\"p\">}<\/span><span class=\"w\">\n<\/span><\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<h2><span class=\"ez-toc-section\" id=\"%D9%BE%DB%8C%D8%A7%D8%AF%D9%87_%D8%B3%D8%A7%D8%B2%DB%8C\"><\/span>\n<p>  \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3><span class=\"ez-toc-section\" id=\"%D9%85%D8%AD%DB%8C%D8%B7_%D9%87%D8%A7%DB%8C_%D9%85%D8%AC%D8%B2%D8%A7_%D8%A7%D8%B2_%D8%A7%D8%B9%D8%AF%D8%A7%D9%85_%D9%87%D8%A7\"><\/span>\n<p>  \u0645\u062d\u06cc\u0637 \u0647\u0627\u06cc \u0645\u062c\u0632\u0627 \u0627\u0632 \u0627\u0639\u062f\u0627\u0645 \u0647\u0627<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0628\u0631\u0627\u06cc \u062c\u062f\u0627\u0633\u0627\u0632\u06cc \u0645\u062d\u06cc\u0637 \u0647\u0627 \u0628\u0631\u0627\u06cc \u0627\u062c\u0631\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u0627\u0632 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645.  \u0645\u0641\u0647\u0648\u0645 \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 \u06a9\u062f \u0645\u0646\u0628\u0639 \u0627\u0631\u0627\u0626\u0647 \u0634\u062f\u0647 \u062a\u0648\u0633\u0637 \u06a9\u0627\u0631\u0628\u0631 \u0631\u0627 \u0628\u06af\u06cc\u0631\u06cc\u062f \u0648 \u06cc\u06a9 \u062a\u0635\u0648\u06cc\u0631 Docker \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0634\u0627\u0645\u0644 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 \u0627\u062c\u0631\u0627 (\u0645\u062d\u062f\u0648\u062f\u06cc\u062a \u0632\u0645\u0627\u0646\u06cc\u060c \u0645\u062d\u062f\u0648\u062f\u06cc\u062a \u062d\u0627\u0641\u0638\u0647\u060c \u06a9\u062f \u0645\u0646\u0628\u0639\u060c \u0645\u0648\u0627\u0631\u062f \u0622\u0632\u0645\u0627\u06cc\u0634\u06cc \u0648 \u063a\u06cc\u0631\u0647) \u0648 \u0627\u062c\u0631\u0627\u06cc \u0627\u06cc\u0646 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u062f\u0631 \u0628\u0631\u0627\u0628\u0631 \u0686\u0646\u062f\u06cc\u0646 \u0645\u0648\u0631\u062f \u0622\u0632\u0645\u0627\u06cc\u0634\u06cc \u0627\u0633\u062a.  \u0628\u0633\u062a\u0647 \u0628\u0647 \u06a9\u062f \u062e\u0631\u0648\u062c\u06cc \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u060c \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u0646\u062a\u06cc\u062c\u0647 \u0627\u062c\u0631\u0627 \u0631\u0627 \u062a\u0639\u06cc\u06cc\u0646 \u06a9\u0646\u06cc\u0645 (<strong>\u067e\u0630\u06cc\u0631\u0641\u062a\u0647 \u0634\u062f\u0647<\/strong>\u060c <strong>\u062c\u0648\u0627\u0628 \u0627\u0634\u062a\u0628\u0627\u0647<\/strong>\u060c <strong>\u0627\u0632 \u0645\u062d\u062f\u0648\u062f\u06cc\u062a \u0632\u0645\u0627\u0646\u06cc \u0641\u0631\u0627\u062a\u0631 \u0631\u0641\u062a<\/strong>\u060c <strong>\u0627\u0632 \u062d\u062f \u0645\u062c\u0627\u0632 \u062d\u0627\u0641\u0638\u0647 \u0641\u0631\u0627\u062a\u0631 \u0631\u0641\u062a<\/strong>\u060c <strong>\u062e\u0637\u0627\u06cc \u0632\u0645\u0627\u0646 \u0627\u062c\u0631\u0627<\/strong>\u060c <strong>\u062e\u0637\u0627\u06cc \u062a\u0627\u0644\u06cc\u0641<\/strong>).<\/p>\n<h4><span class=\"ez-toc-section\" id=\"%D8%A8%D8%B1%D8%AE%DB%8C_%D8%A7%D8%B2_%D9%85%D8%B2%D8%A7%DB%8C%D8%A7%DB%8C_%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87_%D8%A7%D8%B2_%D8%B8%D8%B1%D9%88%D9%81\"><\/span>\n<p>  \u0628\u0631\u062e\u06cc \u0627\u0632 \u0645\u0632\u0627\u06cc\u0627\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0638\u0631\u0648\u0641<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<ul>\n<li>\n<p><strong>\u0627\u0646\u0632\u0648\u0627<\/strong>: \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627 \u0631\u0627\u0647\u06cc \u0628\u0631\u0627\u06cc \u062c\u062f\u0627\u0633\u0627\u0632\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627 \u0627\u0632 \u06cc\u06a9\u062f\u06cc\u06af\u0631 \u0648 \u0647\u0645\u0686\u0646\u06cc\u0646 \u0627\u0632 \u0633\u06cc\u0633\u062a\u0645 \u0645\u06cc\u0632\u0628\u0627\u0646 \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc \u062f\u0647\u0646\u062f.  \u0627\u06cc\u0646 \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0628\u0647 \u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u0627\u0632 \u062f\u0631\u06af\u06cc\u0631\u06cc \u0648 \u0628\u0647\u0628\u0648\u062f \u0627\u0645\u0646\u06cc\u062a \u06a9\u0645\u06a9 \u06a9\u0646\u062f.<\/p>\n<\/li>\n<li>\n<p>\u0642\u0627\u0628\u0644 \u062d\u0645\u0644 \u0628\u0648\u062f\u0646: \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627 \u0647\u0645\u0647 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u0647\u0627\u06cc \u0645\u0648\u0631\u062f \u0646\u06cc\u0627\u0632 \u0628\u0631\u0627\u06cc \u0627\u062c\u0631\u0627\u06cc \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0627 \u0628\u0633\u062a\u0647 \u0628\u0646\u062f\u06cc \u0645\u06cc \u06a9\u0646\u0646\u062f \u0648 \u062c\u0627\u0628\u062c\u0627\u06cc\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0627 \u0628\u06cc\u0646 \u0645\u062d\u06cc\u0637 \u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u0622\u0633\u0627\u0646 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<\/li>\n<li>\n<p><strong>\u062b\u0628\u0627\u062a<\/strong>: \u0627\u0632 \u0622\u0646\u062c\u0627\u06cc\u06cc \u06a9\u0647 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627 \u0647\u0645\u0647 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u0647\u0627\u06cc \u0645\u0648\u0631\u062f \u0646\u06cc\u0627\u0632 \u0628\u0631\u0627\u06cc \u0627\u062c\u0631\u0627\u06cc \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0627 \u0628\u0633\u062a\u0647 \u0628\u0646\u062f\u06cc \u0645\u06cc \u06a9\u0646\u0646\u062f\u060c \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0628\u0647 \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u0627\u0632 \u0627\u06cc\u0646\u06a9\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u0628\u0647 \u0637\u0648\u0631 \u0645\u062f\u0627\u0648\u0645 \u062f\u0631 \u0645\u062d\u06cc\u0637 \u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u0631\u0641\u062a\u0627\u0631 \u0645\u06cc \u06a9\u0646\u062f \u06a9\u0645\u06a9 \u06a9\u0646\u062f.<\/p>\n<\/li>\n<li>\n<p><strong>\u0645\u0642\u06cc\u0627\u0633 \u067e\u0630\u06cc\u0631\u06cc<\/strong>: \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627 \u0631\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646 \u0628\u0647 \u0631\u0627\u062d\u062a\u06cc \u0628\u0632\u0631\u06af \u06cc\u0627 \u06a9\u0648\u0686\u06a9 \u06a9\u0631\u062f \u062a\u0627 \u062a\u0642\u0627\u0636\u0627\u06cc \u062f\u0631 \u062d\u0627\u0644 \u062a\u063a\u06cc\u06cc\u0631 \u0631\u0627 \u0628\u0631\u0622\u0648\u0631\u062f\u0647 \u06a9\u0646\u062f\u060c \u06a9\u0647 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0645\u0646\u0627\u0628\u0639 \u0631\u0627 \u0622\u0633\u0627\u0646 \u0645\u06cc \u06a9\u0646\u062f \u0648 \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u062d\u0627\u0635\u0644 \u0645\u06cc \u06a9\u0646\u062f \u06a9\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627 \u0647\u0645\u06cc\u0634\u0647 \u0628\u0627 \u0639\u0645\u0644\u06a9\u0631\u062f \u0645\u0637\u0644\u0648\u0628 \u0627\u062c\u0631\u0627 \u0645\u06cc \u0634\u0648\u0646\u062f.<\/p>\n<\/li>\n<li>\n<p><strong>\u0645\u0642\u0631\u0648\u0646 \u0628\u0647 \u0635\u0631\u0641\u0647 \u0628\u0648\u062f\u0646<\/strong>: \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0628\u0647 \u06a9\u0627\u0647\u0634 \u0647\u0632\u06cc\u0646\u0647 \u0627\u062c\u0631\u0627 \u0648 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627 \u06a9\u0645\u06a9 \u06a9\u0646\u062f\u060c \u0632\u06cc\u0631\u0627 \u0622\u0646\u0647\u0627 \u0633\u0628\u06a9 \u0647\u0633\u062a\u0646\u062f \u0648 \u0628\u0647 \u0645\u0646\u0627\u0628\u0639 \u06a9\u0645\u062a\u0631\u06cc \u0646\u0633\u0628\u062a \u0628\u0647 \u0645\u0627\u0634\u06cc\u0646 \u0647\u0627\u06cc \u0645\u062c\u0627\u0632\u06cc \u0633\u0646\u062a\u06cc \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u0646\u062f.<\/p>\n<\/li>\n<li>\n<p><strong>\u0627\u0646\u0639\u0637\u0627\u0641 \u067e\u0630\u06cc\u0631\u06cc<\/strong>: \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627 \u0631\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646 \u062f\u0631 \u0645\u062d\u06cc\u0637 \u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641\u06cc \u0627\u0632 \u062c\u0645\u0644\u0647 \u062f\u0631 \u0645\u062d\u0644\u060c \u062f\u0631 \u0641\u0636\u0627\u06cc \u0627\u0628\u0631\u06cc \u06cc\u0627 \u062f\u0631 \u06cc\u06a9 \u0645\u062d\u06cc\u0637 \u062a\u0631\u06a9\u06cc\u0628\u06cc \u0645\u0633\u062a\u0642\u0631 \u06a9\u0631\u062f \u06a9\u0647 \u0622\u0646\u0647\u0627 \u0631\u0627 \u0628\u0633\u06cc\u0627\u0631 \u0627\u0646\u0639\u0637\u0627\u0641 \u067e\u0630\u06cc\u0631 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<\/li>\n<\/ul>\n<p><\/p>\n<p>\u0647\u0645\u0627\u0646\u0637\u0648\u0631 \u06a9\u0647 \u062f\u0631 \u062a\u0635\u0648\u06cc\u0631 \u0628\u0627\u0644\u0627 \u0630\u06a9\u0631 \u0634\u062f\u060c \u0645\u0627 \u0628\u0647 \u062f\u0648 \u0646\u0648\u0639 \u0638\u0631\u0641 \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u0645. <strong>\u0638\u0631\u0648\u0641 \u06af\u0631\u062f\u0622\u0648\u0631\u06cc<\/strong> \u0648 <strong>\u0638\u0631\u0648\u0641 \u0627\u0639\u062f\u0627\u0645<\/strong>.  \u0647\u0631 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u06cc\u06a9 \u062a\u0635\u0648\u06cc\u0631 \u0627\u0632 \u0627\u06cc\u0646 \u0646\u0648\u0639 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u062f\u060c \u0633\u067e\u0633 \u06cc\u06a9 \u0646\u0645\u0648\u0646\u0647 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u0627\u0632 \u062a\u0635\u0648\u06cc\u0631 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u0648 \u0686\u0646\u062f\u06cc\u0646 \u0646\u0645\u0648\u0646\u0647 (\u06cc\u06a9 \u0645\u0648\u0631\u062f \u0628\u0631\u0627\u06cc \u0647\u0631 \u0645\u0648\u0631\u062f \u0622\u0632\u0645\u0627\u06cc\u0634\u06cc) \u0627\u0632 \u062a\u0635\u0648\u06cc\u0631 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u0627\u062c\u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<h4><span class=\"ez-toc-section\" id=\"%D8%B8%D8%B1%D9%88%D9%81_%DA%A9%D8%A7%D9%85%D9%BE%D8%A7%DB%8C%D9%84%D8%A7%D8%AA%D9%88%D9%86\"><\/span>\n<p>  \u0638\u0631\u0648\u0641 \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644\u0627\u062a\u0648\u0646<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>\u0627\u06cc\u0646 \u0646\u0648\u0639 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627 \u0628\u0631\u0627\u06cc \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u06a9\u062f \u0645\u0646\u0628\u0639 \u0628\u0647 \u062f\u0648\u062f\u0648\u06cc\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u0634\u0648\u0646\u062f.  \u0627\u06cc\u0646 \u0638\u0631\u0648\u0641 \u0628\u0633\u06cc\u0627\u0631 \u062e\u0627\u0635 \u0647\u0633\u062a\u0646\u062f \u0632\u06cc\u0631\u0627 \u062d\u062c\u0645 \u0631\u0627 \u0628\u0627 \u0633\u0631\u0648\u06cc\u0633 \u0627\u0635\u0644\u06cc \u0628\u0647 \u0627\u0634\u062a\u0631\u0627\u06a9 \u0645\u06cc \u06af\u0630\u0627\u0631\u0646\u062f.<\/p>\n<p>\u0645\u062b\u0627\u0644:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight docker\"><code><span class=\"k\">FROM<\/span><span class=\"s\"> openjdk:11.0.6-jdk-slim<\/span>\n\n<span class=\"k\">WORKDIR<\/span><span class=\"s\"> \/app<\/span>\n\n<span class=\"k\">ENTRYPOINT<\/span><span class=\"s\"> [\"\/bin\/sh\", \"-c\", \"javac -d $EXECUTION_PATH $EXECUTION_PATH\/$SOURCE_CODE_FILE_NAME &amp;&amp; rm $EXECUTION_PATH\/$SOURCE_CODE_FILE_NAME\"]<\/span>\n\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<h4><span class=\"ez-toc-section\" id=\"%D8%B8%D8%B1%D9%88%D9%81_%D8%A7%D8%B9%D8%AF%D8%A7%D9%85\"><\/span>\n<p>  \u0638\u0631\u0648\u0641 \u0627\u0639\u062f\u0627\u0645<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>\u0627\u06cc\u0646 \u0646\u0648\u0639 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627 \u062d\u0627\u0648\u06cc \u062a\u0645\u0627\u0645 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 \u0627\u062c\u0631\u0627 \u0647\u0633\u062a\u0646\u062f \u0648 \u0627\u06cc\u0646 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u0628\u0631\u0627\u06cc \u0647\u0631 \u062a\u0633\u062a \u0627\u062c\u0631\u0627 \u0645\u06cc \u0634\u0648\u062f \u0648 \u0627\u06cc\u0632\u0648\u0644\u0647 \u0627\u0633\u062a (\u062d\u062c\u0645 \u0631\u0627 \u0628\u0627 \u0647\u06cc\u0686 \u0628\u0631\u0646\u0627\u0645\u0647 \u06cc\u0627 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u06cc \u0628\u0647 \u0627\u0634\u062a\u0631\u0627\u06a9 \u0646\u06af\u0630\u0627\u0631\u06cc\u062f).<\/p>\n<p>\u0645\u062b\u0627\u0644:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight docker\"><code><span class=\"k\">FROM<\/span><span class=\"s\"> openjdk:11.0.6-jre-slim<\/span>\n\n<span class=\"k\">WORKDIR<\/span><span class=\"s\"> \/app<\/span>\n\n<span class=\"k\">USER<\/span><span class=\"s\"> root<\/span>\n\n<span class=\"k\">RUN <\/span>groupadd <span class=\"nt\">-r<\/span> user <span class=\"nt\">-g<\/span> 111 <span class=\"o\">&amp;&amp;<\/span> <span class=\"se\">\\\n<\/span>    useradd <span class=\"nt\">-u<\/span> 111 <span class=\"nt\">-r<\/span> <span class=\"nt\">-g<\/span> user <span class=\"nt\">-s<\/span> \/sbin\/nologin <span class=\"nt\">-c<\/span> <span class=\"s2\">\"Docker image user\"<\/span> user\n\n<span class=\"k\">ADD<\/span><span class=\"s\"> . .<\/span>\n\n<span class=\"k\">RUN <\/span><span class=\"nb\">chmod <\/span>a+x .\/entrypoint-<span class=\"k\">*<\/span>.sh\n\n<span class=\"k\">USER<\/span><span class=\"s\"> user<\/span>\n\n<span class=\"k\">ENTRYPOINT<\/span><span class=\"s\"> [\"\/bin\/sh\", \"-c\", \".\/entrypoint-$TEST_CASE_ID.sh\"]<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0647\u0645\u0627\u0646\u0637\u0648\u0631 \u06a9\u0647 \u062f\u0631 Dockerfile \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u0630\u06a9\u0631 \u0634\u062f <strong>\u0646\u0642\u0637\u0647 \u0648\u0631\u0648\u062f<\/strong> \u0641\u0627\u06cc\u0644 \u0648 \u062f\u0627\u0631\u0627\u06cc \u067e\u06cc\u0634\u0648\u0646\u062f \u0627\u0633\u062a <strong>TEST_CASE_ID<\/strong>\u060c \u062a\u0648\u0633\u0637 \u0628\u0631\u0646\u0627\u0645\u0647 \u0628\u0631\u0627\u06cc \u0647\u0631 \u0645\u0648\u0631\u062f \u0622\u0632\u0645\u0627\u06cc\u0634\u06cc \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u06cc\u06a9 \u0627\u0644\u06af\u0648 \u062a\u0648\u0644\u06cc\u062f \u0645\u06cc \u0634\u0648\u062f.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code><span class=\"c\">#!\/usr\/bin\/env bash<\/span>\n\n<span class=\"nb\">ulimit<\/span> <span class=\"nt\">-s<\/span> <span class=\"o\">[(<\/span><span class=\"k\">${<\/span><span class=\"nv\">compiler<\/span><span class=\"p\">.memoryLimit<\/span><span class=\"k\">}<\/span><span class=\"o\">)]<\/span>\n<span class=\"nb\">timeout<\/span> <span class=\"nt\">-s<\/span> SIGTERM <span class=\"o\">[(<\/span><span class=\"k\">${<\/span><span class=\"nv\">compiler<\/span><span class=\"p\">.timeLimit<\/span><span class=\"k\">}<\/span><span class=\"o\">)]<\/span> <span class=\"o\">[(<\/span><span class=\"k\">${<\/span><span class=\"nv\">compiler<\/span><span class=\"p\">.executionCommand<\/span><span class=\"k\">}<\/span><span class=\"o\">)]<\/span>\n<span class=\"nb\">exit<\/span> <span class=\"nv\">$?<\/span>    \n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u06cc\u0646 \u0627\u0644\u06af\u0648 \u0634\u0627\u0645\u0644 \u0645\u062d\u062f\u0648\u062f\u06cc\u062a \u0632\u0645\u0627\u0646\u06cc \u0648 \u0645\u062d\u062f\u0648\u062f\u06cc\u062a \u062d\u0627\u0641\u0638\u0647 \u0645\u062c\u0627\u0632 \u0628\u0631\u0627\u06cc \u0647\u0631 \u0645\u0648\u0631\u062f \u0622\u0632\u0645\u0627\u06cc\u0634\u06cc \u0627\u0633\u062a.<\/p>\n<h4><span class=\"ez-toc-section\" id=\"%D8%AE%D8%B7_%D9%85%D8%B4%DB%8C_%D8%A7%D9%85%D9%86%DB%8C%D8%AA%DB%8C\"><\/span>\n<p>  \u062e\u0637 \u0645\u0634\u06cc \u0627\u0645\u0646\u06cc\u062a\u06cc<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>\u0628\u0647 \u062f\u0644\u0627\u06cc\u0644 \u0627\u0645\u0646\u06cc\u062a\u06cc \u0648 \u0628\u0631\u0627\u06cc \u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u0627\u0632 \u062f\u0633\u062a\u0631\u0633\u06cc \u06a9\u0627\u0631\u0628\u0631 \u0628\u0647 \u0633\u06cc\u0633\u062a\u0645 fil \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645 <strong>\u0633\u06cc\u0627\u0633\u062a \u0647\u0627\u06cc \u0627\u0645\u0646\u06cc\u062a\u06cc<\/strong>.<\/p>\n<p>\u0628\u0631\u0627\u06cc \u062c\u0627\u0648\u0627\u060c \u0645\u0627 \u0633\u06cc\u0627\u0633\u062a \u0647\u0627\u06cc \u0627\u0645\u0646\u06cc\u062a\u06cc \u062f\u0627\u0631\u06cc\u0645 \u06a9\u0647 \u0628\u0631\u0627\u06cc \u06a9\u0646\u062a\u0631\u0644 \u062f\u0633\u062a\u0631\u0633\u06cc \u0628\u0647 \u0645\u0646\u0627\u0628\u0639 \u0633\u06cc\u0633\u062a\u0645\u060c \u0645\u0627\u0646\u0646\u062f \u0641\u0627\u06cc\u0644 \u0647\u0627 \u0648 \u0627\u062a\u0635\u0627\u0644\u0627\u062a \u0634\u0628\u06a9\u0647\u060c \u0628\u0631\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc \u062c\u0627\u0648\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u0634\u0648\u062f.  \u0645\u062f\u06cc\u0631 \u0627\u0645\u0646\u06cc\u062a \u062c\u0627\u0648\u0627 \u0645\u0633\u0626\u0648\u0644 \u0627\u062c\u0631\u0627\u06cc \u0627\u06cc\u0646 \u0633\u06cc\u0627\u0633\u062a \u0647\u0627 \u0627\u0633\u062a.  \u0645\u062f\u06cc\u0631 \u0627\u0645\u0646\u06cc\u062a\u06cc \u0631\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646 \u0628\u0647 \u06af\u0648\u0646\u0647 \u0627\u06cc \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u06a9\u0631\u062f \u06a9\u0647 \u0628\u0631 \u0627\u0633\u0627\u0633 \u0645\u0628\u062f\u0623 \u06a9\u062f\u060c \u0645\u0627\u0646\u0646\u062f \u0645\u06a9\u0627\u0646 \u0622\u0646 \u062f\u0631 \u0633\u06cc\u0633\u062a\u0645 \u0641\u0627\u06cc\u0644 \u06cc\u0627 \u0627\u0645\u0636\u0627\u06cc \u062f\u06cc\u062c\u06cc\u062a\u0627\u0644\u060c \u0628\u0647 \u06a9\u062f \u062e\u0627\u0635\u06cc \u0645\u062c\u0648\u0632 \u062f\u0627\u062f\u0647 \u06cc\u0627 \u0631\u062f \u06a9\u0646\u062f.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code>grant <span class=\"o\">{<\/span>\n  permission java.io.FilePermission <span class=\"s2\">\"\/tmp\/test.txt\"<\/span>, <span class=\"s2\">\"read,write\"<\/span><span class=\"p\">;<\/span>\n  permission java.net.SocketPermission <span class=\"s2\">\"www.example.com:80\"<\/span>, <span class=\"s2\">\"connect\"<\/span><span class=\"p\">;<\/span>\n<span class=\"o\">}<\/span><span class=\"p\">;<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u062e\u0637 \u0645\u0634\u06cc \u0628\u0627\u0644\u0627 \u0631\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u06cc\u06a9 \u0622\u0631\u06af\u0648\u0645\u0627\u0646 \u062e\u0637 \u0641\u0631\u0645\u0627\u0646 \u062f\u0631 \u0647\u0646\u06af\u0627\u0645 \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc JVM \u062a\u0646\u0638\u06cc\u0645 \u06a9\u0631\u062f\u060c \u0645\u0627\u0646\u0646\u062f \u0627\u06cc\u0646:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code>java <span class=\"nt\">-Djava<\/span>.security.policy<span class=\"o\">=<\/span>mypolicy.policy MyApp\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<h3><span class=\"ez-toc-section\" id=\"%D8%AF%D8%B1%D8%AE%D9%88%D8%A7%D8%B3%D8%AA_%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1\"><\/span>\n<p>  \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u06a9\u0627\u0631\u0628\u0631<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0648\u0631\u0648\u062f\u06cc \u06a9\u0627\u0631\u0628\u0631 \u0628\u0647 \u0634\u06a9\u0644 \u0632\u06cc\u0631 \u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight java\"><code><span class=\"nd\">@Getter<\/span>\n<span class=\"nd\">@NoArgsConstructor<\/span>\n<span class=\"nd\">@EqualsAndHashCode<\/span>\n<span class=\"nd\">@AllArgsConstructor<\/span>\n<span class=\"kd\">public<\/span> <span class=\"kd\">class<\/span> <span class=\"nc\">Request<\/span> <span class=\"o\">{<\/span>\n\n    <span class=\"cm\">\/**\n     * The Source code.\n     *\/<\/span>\n    <span class=\"nd\">@ApiModelProperty<\/span><span class=\"o\">(<\/span><span class=\"n\">notes<\/span> <span class=\"o\">=<\/span> <span class=\"s\">\"The sourcecode\"<\/span><span class=\"o\">)<\/span>\n    <span class=\"nd\">@NonNull<\/span>\n    <span class=\"nd\">@JsonProperty<\/span><span class=\"o\">(<\/span><span class=\"s\">\"sourcecode\"<\/span><span class=\"o\">)<\/span>\n    <span class=\"kd\">protected<\/span> <span class=\"nc\">String<\/span> <span class=\"n\">sourcecode<\/span><span class=\"o\">;<\/span>\n\n    <span class=\"cm\">\/**\n     * The Language.\n     *\/<\/span>\n    <span class=\"nd\">@ApiModelProperty<\/span><span class=\"o\">(<\/span><span class=\"n\">notes<\/span> <span class=\"o\">=<\/span> <span class=\"s\">\"The programming language\"<\/span><span class=\"o\">)<\/span>\n    <span class=\"nd\">@NonNull<\/span>\n    <span class=\"nd\">@JsonProperty<\/span><span class=\"o\">(<\/span><span class=\"s\">\"language\"<\/span><span class=\"o\">)<\/span>\n    <span class=\"kd\">protected<\/span> <span class=\"nc\">Language<\/span> <span class=\"n\">language<\/span><span class=\"o\">;<\/span>\n\n    <span class=\"cm\">\/**\n     * The Time limit.\n     *\/<\/span>\n    <span class=\"nd\">@ApiModelProperty<\/span><span class=\"o\">(<\/span><span class=\"n\">notes<\/span> <span class=\"o\">=<\/span> <span class=\"s\">\"The time limit in sec\"<\/span><span class=\"o\">)<\/span>\n    <span class=\"nd\">@NonNull<\/span>\n    <span class=\"nd\">@JsonProperty<\/span><span class=\"o\">(<\/span><span class=\"s\">\"timeLimit\"<\/span><span class=\"o\">)<\/span>\n    <span class=\"kd\">protected<\/span> <span class=\"kt\">int<\/span> <span class=\"n\">timeLimit<\/span><span class=\"o\">;<\/span>\n\n    <span class=\"cm\">\/**\n     * The Memory limit.\n     *\/<\/span>\n    <span class=\"nd\">@ApiModelProperty<\/span><span class=\"o\">(<\/span><span class=\"n\">notes<\/span> <span class=\"o\">=<\/span> <span class=\"s\">\"The memory limit\"<\/span><span class=\"o\">)<\/span>\n    <span class=\"nd\">@NonNull<\/span>\n    <span class=\"nd\">@JsonProperty<\/span><span class=\"o\">(<\/span><span class=\"s\">\"memoryLimit\"<\/span><span class=\"o\">)<\/span>\n    <span class=\"kd\">protected<\/span> <span class=\"kt\">int<\/span> <span class=\"n\">memoryLimit<\/span><span class=\"o\">;<\/span>\n\n    <span class=\"cm\">\/**\n     * The Test cases.\n     *\/<\/span>\n    <span class=\"nd\">@ApiModelProperty<\/span><span class=\"o\">(<\/span><span class=\"n\">notes<\/span> <span class=\"o\">=<\/span> <span class=\"s\">\"The test cases\"<\/span><span class=\"o\">)<\/span>\n    <span class=\"nd\">@NonNull<\/span>\n    <span class=\"nd\">@JsonProperty<\/span><span class=\"o\">(<\/span><span class=\"s\">\"testCases\"<\/span><span class=\"o\">)<\/span>\n    <span class=\"kd\">protected<\/span> <span class=\"nc\">LinkedHashMap<\/span><span class=\"o\">&lt;<\/span><span class=\"nc\">String<\/span><span class=\"o\">,<\/span> <span class=\"nc\">TestCase<\/span><span class=\"o\">&gt;<\/span> <span class=\"n\">testCases<\/span><span class=\"o\">;<\/span> <span class=\"c1\">\/\/ Note: test cases should be given in order<\/span>\n<span class=\"o\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0628\u0631\u0627\u06cc \u0647\u0631 \u0645\u0648\u0631\u062f \u0622\u0632\u0645\u0627\u06cc\u0634\u06cc\u060c \u0648\u0631\u0648\u062f\u06cc \u0648 \u062e\u0631\u0648\u062c\u06cc \u0645\u0648\u0631\u062f \u0627\u0646\u062a\u0638\u0627\u0631 \u062e\u0648\u0627\u0647\u06cc\u0645 \u062f\u0627\u0634\u062a:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight java\"><code><span class=\"nd\">@Getter<\/span>\n<span class=\"nd\">@AllArgsConstructor<\/span>\n<span class=\"nd\">@EqualsAndHashCode<\/span>\n<span class=\"kd\">public<\/span> <span class=\"kd\">class<\/span> <span class=\"nc\">TestCase<\/span> <span class=\"o\">{<\/span>\n\n    <span class=\"nd\">@ApiModelProperty<\/span><span class=\"o\">(<\/span><span class=\"n\">notes<\/span> <span class=\"o\">=<\/span> <span class=\"s\">\"The input, can be null\"<\/span><span class=\"o\">)<\/span>\n    <span class=\"nd\">@JsonProperty<\/span><span class=\"o\">(<\/span><span class=\"s\">\"input\"<\/span><span class=\"o\">)<\/span>\n    <span class=\"kd\">private<\/span> <span class=\"nc\">String<\/span> <span class=\"n\">input<\/span><span class=\"o\">;<\/span>\n\n    <span class=\"nd\">@ApiModelProperty<\/span><span class=\"o\">(<\/span><span class=\"n\">notes<\/span> <span class=\"o\">=<\/span> <span class=\"s\">\"The expected output, can not be null\"<\/span><span class=\"o\">)<\/span>\n    <span class=\"nd\">@NonNull<\/span>\n    <span class=\"nd\">@JsonProperty<\/span><span class=\"o\">(<\/span><span class=\"s\">\"expectedOutput\"<\/span><span class=\"o\">)<\/span>\n    <span class=\"kd\">private<\/span> <span class=\"nc\">String<\/span> <span class=\"n\">expectedOutput<\/span><span class=\"o\">;<\/span>\n<span class=\"o\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<h3><span class=\"ez-toc-section\" id=\"%D8%A7%D8%B3%D8%AA%D8%B1%D8%A7%D8%AA%DA%98%DB%8C_%D8%AA%D8%AF%D9%88%DB%8C%D9%86\"><\/span>\n<p>  \u0627\u0633\u062a\u0631\u0627\u062a\u0698\u06cc \u062a\u062f\u0648\u06cc\u0646<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u06cc\u06a9 \u0642\u0637\u0639\u0647 \u06a9\u062f \u062f\u0631 \u0645\u0648\u0631\u062f \u0646\u062d\u0648\u0647 \u0627\u0646\u062c\u0627\u0645 \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u0628\u0631\u0627\u06cc \u0632\u0628\u0627\u0646 \u0647\u0627\u06cc \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u0634\u062f\u0647 \u0622\u0648\u0631\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a.  \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u0645 \u0627\u0632 \u0627\u0644\u06af\u0648\u06cc \u0627\u0633\u062a\u0631\u0627\u062a\u0698\u06cc \u0628\u0631\u0627\u06cc \u0627\u0646\u062a\u062e\u0627\u0628 \u0627\u0644\u06af\u0648\u0631\u06cc\u062a\u0645 \u0628\u0631\u0627\u06cc \u0632\u0628\u0627\u0646\u200c\u0647\u0627\u06cc \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u06cc\u0627 \u062a\u0641\u0633\u06cc\u0631 \u0634\u062f\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight java\"><code><span class=\"nd\">@Override<\/span>\n    <span class=\"kd\">public<\/span> <span class=\"nc\">CompilationResponse<\/span> <span class=\"nf\">compile<\/span><span class=\"o\">(<\/span><span class=\"nc\">Execution<\/span> <span class=\"n\">execution<\/span><span class=\"o\">)<\/span> <span class=\"o\">{<\/span>\n\n        <span class=\"c1\">\/\/ repository name must be lowercase<\/span>\n        <span class=\"nc\">String<\/span> <span class=\"n\">compilationImageName<\/span> <span class=\"o\">=<\/span> <span class=\"no\">IMAGE_PREFIX_NAME<\/span> <span class=\"o\">+<\/span> <span class=\"n\">execution<\/span><span class=\"o\">.<\/span><span class=\"na\">getLanguage<\/span><span class=\"o\">().<\/span><span class=\"na\">toString<\/span><span class=\"o\">().<\/span><span class=\"na\">toLowerCase<\/span><span class=\"o\">();<\/span>\n\n        <span class=\"c1\">\/\/ If the app is running inside a container, we should share the same volume with the compilation container.<\/span>\n        <span class=\"kd\">final<\/span> <span class=\"nc\">String<\/span> <span class=\"n\">volume<\/span> <span class=\"o\">=<\/span> <span class=\"n\">compilationContainerVolume<\/span><span class=\"o\">.<\/span><span class=\"na\">isEmpty<\/span><span class=\"o\">()<\/span>\n                                    <span class=\"o\">?<\/span> <span class=\"nc\">System<\/span><span class=\"o\">.<\/span><span class=\"na\">getProperty<\/span><span class=\"o\">(<\/span><span class=\"s\">\"user.dir\"<\/span><span class=\"o\">)<\/span>\n                                    <span class=\"o\">:<\/span> <span class=\"n\">compilationContainerVolume<\/span><span class=\"o\">;<\/span>\n\n        <span class=\"nc\">String<\/span> <span class=\"n\">sourceCodeFileName<\/span> <span class=\"o\">=<\/span> <span class=\"n\">execution<\/span><span class=\"o\">.<\/span><span class=\"na\">getSourceCodeFile<\/span><span class=\"o\">().<\/span><span class=\"na\">getOriginalFilename<\/span><span class=\"o\">();<\/span>\n\n        <span class=\"nc\">String<\/span> <span class=\"n\">containerName<\/span> <span class=\"o\">=<\/span> <span class=\"no\">COMPILATION_CONTAINER_NAME_PREFIX<\/span> <span class=\"o\">+<\/span> <span class=\"n\">execution<\/span><span class=\"o\">.<\/span><span class=\"na\">getImageName<\/span><span class=\"o\">();<\/span>\n\n        <span class=\"kt\">var<\/span> <span class=\"n\">processOutput<\/span> <span class=\"o\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nc\">AtomicReference<\/span><span class=\"o\">&lt;<\/span><span class=\"nc\">ProcessOutput<\/span><span class=\"o\">&gt;();<\/span>\n        <span class=\"n\">compilationTimer<\/span><span class=\"o\">.<\/span><span class=\"na\">record<\/span><span class=\"o\">(()<\/span> <span class=\"o\">-&gt;<\/span> <span class=\"o\">{<\/span>\n            <span class=\"n\">processOutput<\/span><span class=\"o\">.<\/span><span class=\"na\">set<\/span><span class=\"o\">(<\/span>\n                    <span class=\"n\">compile<\/span><span class=\"o\">(<\/span><span class=\"n\">volume<\/span><span class=\"o\">,<\/span> <span class=\"n\">compilationImageName<\/span><span class=\"o\">,<\/span> <span class=\"n\">containerName<\/span><span class=\"o\">,<\/span> <span class=\"n\">execution<\/span><span class=\"o\">.<\/span><span class=\"na\">getPath<\/span><span class=\"o\">(),<\/span> <span class=\"n\">sourceCodeFileName<\/span><span class=\"o\">)<\/span>\n            <span class=\"o\">);<\/span>\n        <span class=\"o\">});<\/span>\n\n        <span class=\"nc\">ProcessOutput<\/span> <span class=\"n\">compilationOutput<\/span> <span class=\"o\">=<\/span> <span class=\"n\">processOutput<\/span><span class=\"o\">.<\/span><span class=\"na\">get<\/span><span class=\"o\">();<\/span>\n\n        <span class=\"kt\">int<\/span> <span class=\"n\">compilationDuration<\/span> <span class=\"o\">=<\/span> <span class=\"n\">compilationOutput<\/span><span class=\"o\">.<\/span><span class=\"na\">getExecutionDuration<\/span><span class=\"o\">();<\/span>\n\n        <span class=\"nc\">ContainerInfo<\/span> <span class=\"n\">containerInfo<\/span> <span class=\"o\">=<\/span> <span class=\"n\">containerService<\/span><span class=\"o\">.<\/span><span class=\"na\">inspect<\/span><span class=\"o\">(<\/span><span class=\"n\">containerName<\/span><span class=\"o\">);<\/span>\n        <span class=\"nc\">ContainerHelper<\/span><span class=\"o\">.<\/span><span class=\"na\">logContainerInfo<\/span><span class=\"o\">(<\/span><span class=\"n\">containerName<\/span><span class=\"o\">,<\/span> <span class=\"n\">containerInfo<\/span><span class=\"o\">);<\/span>\n\n        <span class=\"nc\">Verdict<\/span> <span class=\"n\">verdict<\/span> <span class=\"o\">=<\/span> <span class=\"n\">getVerdict<\/span><span class=\"o\">(<\/span><span class=\"n\">compilationOutput<\/span><span class=\"o\">);<\/span>\n\n        <span class=\"n\">compilationDuration<\/span> <span class=\"o\">=<\/span> <span class=\"nc\">ContainerHelper<\/span><span class=\"o\">.<\/span><span class=\"na\">getExecutionDuration<\/span><span class=\"o\">(<\/span>\n                                                    <span class=\"n\">containerInfo<\/span> <span class=\"o\">==<\/span> <span class=\"kc\">null<\/span> <span class=\"o\">?<\/span> <span class=\"kc\">null<\/span> <span class=\"o\">:<\/span> <span class=\"n\">containerInfo<\/span><span class=\"o\">.<\/span><span class=\"na\">getStartTime<\/span><span class=\"o\">(),<\/span>\n                                                    <span class=\"n\">containerInfo<\/span> <span class=\"o\">==<\/span> <span class=\"kc\">null<\/span> <span class=\"o\">?<\/span> <span class=\"kc\">null<\/span> <span class=\"o\">:<\/span> <span class=\"n\">containerInfo<\/span><span class=\"o\">.<\/span><span class=\"na\">getEndTime<\/span><span class=\"o\">(),<\/span>\n                                                    <span class=\"n\">compilationDuration<\/span><span class=\"o\">);<\/span>\n\n        <span class=\"nc\">ContainerHelper<\/span><span class=\"o\">.<\/span><span class=\"na\">deleteContainer<\/span><span class=\"o\">(<\/span><span class=\"n\">containerName<\/span><span class=\"o\">,<\/span> <span class=\"n\">containerService<\/span><span class=\"o\">,<\/span> <span class=\"n\">threadPool<\/span><span class=\"o\">);<\/span>\n\n        <span class=\"k\">return<\/span> <span class=\"nc\">CompilationResponse<\/span>\n                <span class=\"o\">.<\/span><span class=\"na\">builder<\/span><span class=\"o\">()<\/span>\n                <span class=\"o\">.<\/span><span class=\"na\">verdict<\/span><span class=\"o\">(<\/span><span class=\"n\">verdict<\/span><span class=\"o\">)<\/span>\n                <span class=\"o\">.<\/span><span class=\"na\">error<\/span><span class=\"o\">(<\/span><span class=\"n\">compilationOutput<\/span><span class=\"o\">.<\/span><span class=\"na\">getStdErr<\/span><span class=\"o\">())<\/span>\n                <span class=\"o\">.<\/span><span class=\"na\">compilationDuration<\/span><span class=\"o\">(<\/span><span class=\"n\">compilationDuration<\/span><span class=\"o\">)<\/span>\n                <span class=\"o\">.<\/span><span class=\"na\">build<\/span><span class=\"o\">();<\/span>\n    <span class=\"o\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<h3><span class=\"ez-toc-section\" id=\"%D8%A7%D8%B3%D8%AA%D8%B1%D8%A7%D8%AA%DA%98%DB%8C_%D8%A7%D8%AC%D8%B1%D8%A7\"><\/span>\n<p>  \u0627\u0633\u062a\u0631\u0627\u062a\u0698\u06cc \u0627\u062c\u0631\u0627<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u06cc\u06a9 \u0642\u0637\u0639\u0647 \u06a9\u062f \u062f\u0631 \u0645\u0648\u0631\u062f \u0646\u062d\u0648\u0647 \u0627\u0646\u062c\u0627\u0645 \u06cc\u06a9 \u0627\u062c\u0631\u0627 \u0622\u0645\u062f\u0647 \u0627\u0633\u062a.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight java\"><code>   <span class=\"kd\">public<\/span> <span class=\"nc\">ExecutionResponse<\/span> <span class=\"nf\">run<\/span><span class=\"o\">(<\/span><span class=\"nc\">Execution<\/span> <span class=\"n\">execution<\/span><span class=\"o\">,<\/span> <span class=\"kt\">boolean<\/span> <span class=\"n\">deleteImageAfterExecution<\/span><span class=\"o\">)<\/span> <span class=\"o\">{<\/span>\n\n        <span class=\"n\">buildContainerImage<\/span><span class=\"o\">(<\/span><span class=\"n\">execution<\/span><span class=\"o\">);<\/span>\n\n        <span class=\"kt\">var<\/span> <span class=\"n\">testCasesResult<\/span> <span class=\"o\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nc\">LinkedHashMap<\/span><span class=\"o\">&lt;<\/span><span class=\"nc\">String<\/span><span class=\"o\">,<\/span> <span class=\"nc\">TestCaseResult<\/span><span class=\"o\">&gt;();<\/span>\n        <span class=\"nc\">Verdict<\/span> <span class=\"n\">verdict<\/span> <span class=\"o\">=<\/span> <span class=\"kc\">null<\/span><span class=\"o\">;<\/span>\n        <span class=\"nc\">String<\/span> <span class=\"n\">err<\/span> <span class=\"o\">=<\/span> <span class=\"s\">\"\"<\/span><span class=\"o\">;<\/span>\n\n        <span class=\"k\">for<\/span> <span class=\"o\">(<\/span><span class=\"nc\">ConvertedTestCase<\/span> <span class=\"n\">testCase<\/span> <span class=\"o\">:<\/span> <span class=\"n\">execution<\/span><span class=\"o\">.<\/span><span class=\"na\">getTestCases<\/span><span class=\"o\">())<\/span> <span class=\"o\">{<\/span>\n\n            <span class=\"nc\">TestCaseResult<\/span> <span class=\"n\">testCaseResult<\/span> <span class=\"o\">=<\/span> <span class=\"n\">executeTestCase<\/span><span class=\"o\">(<\/span><span class=\"n\">execution<\/span><span class=\"o\">,<\/span> <span class=\"n\">testCase<\/span><span class=\"o\">);<\/span>\n\n            <span class=\"n\">testCasesResult<\/span><span class=\"o\">.<\/span><span class=\"na\">put<\/span><span class=\"o\">(<\/span><span class=\"n\">testCase<\/span><span class=\"o\">.<\/span><span class=\"na\">getTestCaseId<\/span><span class=\"o\">(),<\/span> <span class=\"n\">testCaseResult<\/span><span class=\"o\">);<\/span>\n\n            <span class=\"n\">verdict<\/span> <span class=\"o\">=<\/span> <span class=\"n\">testCaseResult<\/span><span class=\"o\">.<\/span><span class=\"na\">getVerdict<\/span><span class=\"o\">();<\/span>\n\n            <span class=\"n\">log<\/span><span class=\"o\">.<\/span><span class=\"na\">info<\/span><span class=\"o\">(<\/span><span class=\"s\">\"Status response for the test case {} is {}\"<\/span><span class=\"o\">,<\/span> <span class=\"n\">testCase<\/span><span class=\"o\">.<\/span><span class=\"na\">getTestCaseId<\/span><span class=\"o\">(),<\/span> <span class=\"n\">verdict<\/span><span class=\"o\">.<\/span><span class=\"na\">getStatusResponse<\/span><span class=\"o\">());<\/span>\n\n            <span class=\"c1\">\/\/ Update metrics<\/span>\n            <span class=\"n\">verdictsCounters<\/span><span class=\"o\">.<\/span><span class=\"na\">get<\/span><span class=\"o\">(<\/span><span class=\"n\">verdict<\/span><span class=\"o\">.<\/span><span class=\"na\">getStatusResponse<\/span><span class=\"o\">()).<\/span><span class=\"na\">increment<\/span><span class=\"o\">();<\/span>\n\n            <span class=\"k\">if<\/span> <span class=\"o\">(<\/span><span class=\"n\">verdict<\/span> <span class=\"o\">!=<\/span> <span class=\"nc\">Verdict<\/span><span class=\"o\">.<\/span><span class=\"na\">ACCEPTED<\/span><span class=\"o\">)<\/span> <span class=\"o\">{<\/span>\n                <span class=\"c1\">\/\/ Don't continue if the current test case failed<\/span>\n                <span class=\"n\">log<\/span><span class=\"o\">.<\/span><span class=\"na\">info<\/span><span class=\"o\">(<\/span><span class=\"s\">\"Test case id: {} failed, abort executions\"<\/span><span class=\"o\">,<\/span> <span class=\"n\">testCase<\/span><span class=\"o\">.<\/span><span class=\"na\">getTestCaseId<\/span><span class=\"o\">());<\/span>\n                <span class=\"n\">err<\/span> <span class=\"o\">=<\/span> <span class=\"n\">testCaseResult<\/span><span class=\"o\">.<\/span><span class=\"na\">getError<\/span><span class=\"o\">();<\/span>\n                <span class=\"k\">break<\/span><span class=\"o\">;<\/span>\n            <span class=\"o\">}<\/span>\n        <span class=\"o\">}<\/span>\n\n        <span class=\"c1\">\/\/ Delete container image asynchronously<\/span>\n        <span class=\"k\">if<\/span> <span class=\"o\">(<\/span><span class=\"n\">deleteImageAfterExecution<\/span><span class=\"o\">)<\/span> <span class=\"o\">{<\/span>\n            <span class=\"nc\">ContainerHelper<\/span><span class=\"o\">.<\/span><span class=\"na\">deleteImage<\/span><span class=\"o\">(<\/span><span class=\"n\">execution<\/span><span class=\"o\">.<\/span><span class=\"na\">getImageName<\/span><span class=\"o\">(),<\/span> <span class=\"n\">containerService<\/span><span class=\"o\">,<\/span> <span class=\"n\">threadPool<\/span><span class=\"o\">);<\/span>\n        <span class=\"o\">}<\/span>\n\n        <span class=\"k\">return<\/span> <span class=\"nc\">ExecutionResponse<\/span>\n                <span class=\"o\">.<\/span><span class=\"na\">builder<\/span><span class=\"o\">()<\/span>\n                <span class=\"o\">.<\/span><span class=\"na\">verdict<\/span><span class=\"o\">(<\/span><span class=\"n\">verdict<\/span><span class=\"o\">)<\/span>\n                <span class=\"o\">.<\/span><span class=\"na\">testCasesResult<\/span><span class=\"o\">(<\/span><span class=\"n\">testCasesResult<\/span><span class=\"o\">)<\/span>\n                <span class=\"o\">.<\/span><span class=\"na\">error<\/span><span class=\"o\">(<\/span><span class=\"n\">err<\/span><span class=\"o\">)<\/span>\n                <span class=\"o\">.<\/span><span class=\"na\">build<\/span><span class=\"o\">();<\/span>\n    <span class=\"o\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight java\"><code><span class=\"kd\">private<\/span> <span class=\"nc\">TestCaseResult<\/span> <span class=\"nf\">executeTestCase<\/span><span class=\"o\">(<\/span><span class=\"nc\">Execution<\/span> <span class=\"n\">execution<\/span><span class=\"o\">,<\/span>\n                                           <span class=\"nc\">ConvertedTestCase<\/span> <span class=\"n\">testCase<\/span><span class=\"o\">)<\/span> <span class=\"o\">{<\/span>\n\n        <span class=\"n\">log<\/span><span class=\"o\">.<\/span><span class=\"na\">info<\/span><span class=\"o\">(<\/span><span class=\"s\">\"Start running test case id = {}\"<\/span><span class=\"o\">,<\/span> <span class=\"n\">testCase<\/span><span class=\"o\">.<\/span><span class=\"na\">getTestCaseId<\/span><span class=\"o\">());<\/span>\n\n        <span class=\"nc\">String<\/span> <span class=\"n\">expectedOutput<\/span> <span class=\"o\">=<\/span> <span class=\"n\">testCase<\/span><span class=\"o\">.<\/span><span class=\"na\">getExpectedOutput<\/span><span class=\"o\">();<\/span>\n\n        <span class=\"c1\">\/\/ Free memory space<\/span>\n        <span class=\"n\">testCase<\/span><span class=\"o\">.<\/span><span class=\"na\">freeMemorySpace<\/span><span class=\"o\">();<\/span>\n\n        <span class=\"kt\">var<\/span> <span class=\"n\">result<\/span> <span class=\"o\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nc\">AtomicReference<\/span><span class=\"o\">&lt;<\/span><span class=\"nc\">TestCaseResult<\/span><span class=\"o\">&gt;();<\/span>\n        <span class=\"n\">executionTimer<\/span><span class=\"o\">.<\/span><span class=\"na\">record<\/span><span class=\"o\">(()<\/span> <span class=\"o\">-&gt;<\/span> <span class=\"o\">{<\/span>\n            <span class=\"c1\">\/\/ Run the execution container<\/span>\n            <span class=\"n\">result<\/span><span class=\"o\">.<\/span><span class=\"na\">set<\/span><span class=\"o\">(<\/span><span class=\"n\">runContainer<\/span><span class=\"o\">(<\/span><span class=\"n\">execution<\/span><span class=\"o\">,<\/span> <span class=\"n\">testCase<\/span><span class=\"o\">.<\/span><span class=\"na\">getTestCaseId<\/span><span class=\"o\">(),<\/span> <span class=\"n\">expectedOutput<\/span><span class=\"o\">));<\/span>\n        <span class=\"o\">});<\/span>\n\n        <span class=\"nc\">TestCaseResult<\/span> <span class=\"n\">testCaseResult<\/span> <span class=\"o\">=<\/span> <span class=\"n\">result<\/span><span class=\"o\">.<\/span><span class=\"na\">get<\/span><span class=\"o\">();<\/span>\n        <span class=\"k\">return<\/span> <span class=\"n\">testCaseResult<\/span><span class=\"o\">;<\/span>\n    <span class=\"o\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0647\u0631 \u0632\u0628\u0627\u0646 \u0628\u0631\u0646\u0627\u0645\u0647 \u0646\u0648\u06cc\u0633\u06cc \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u0647\u0627\u06cc \u0627\u062c\u0631\u0627\u06cc\u06cc \u0648 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u062e\u0627\u0635 \u062e\u0648\u062f \u0631\u0627 \u062f\u0627\u0631\u062f.  \u0628\u0631\u0627\u06cc \u0627\u06cc\u062c\u0627\u062f \u0627\u06cc\u0646 \u0686\u06a9\u06cc\u062f\u0647 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646 \u0627\u0632 \u0627\u0635\u0644 \u0648\u0627\u0631\u0648\u0646\u06af\u06cc \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u0628\u0627 \u0627\u06cc\u062c\u0627\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0631\u062f <strong>\u0627\u062c\u0631\u0627<\/strong> \u06a9\u0644\u0627\u0633 \u0647\u0627 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0627\u0644\u06af\u0648\u06cc \u06a9\u0627\u0631\u062e\u0627\u0646\u0647 \u0627\u06cc \u0627\u0646\u062a\u0632\u0627\u0639\u06cc<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/nabfollower.com\/blog\/wp-content\/uploads\/2023\/05\/1682891129_391_\u0686\u06af\u0648\u0646\u0647-\u0628\u0627-\u0627\u0633\u062a\u0641\u0627\u062f\u0647-\u0627\u0632-\u062c\u0627\u0648\u0627-\u0648-\u062f\u0627\u06a9\u0631-\u06cc\u06a9-\u06a9\u0627\u0645\u067e\u0627\u06cc\u0644\u0631-\u06a9\u062f.png\" alt=\"\u062a\u0648\u0636\u06cc\u062d\u0627\u062a \u062a\u0635\u0648\u06cc\u0631\" loading=\"lazy\" width=\"800\" height=\"142\" title=\"\"><\/p>\n<h4><span class=\"ez-toc-section\" id=\"%DA%A9%D8%A7%D8%B1%D8%AE%D8%A7%D9%86%D9%87_%DA%86%DA%A9%DB%8C%D8%AF%D9%87\"><\/span>\n<p>  \u06a9\u0627\u0631\u062e\u0627\u0646\u0647 \u0686\u06a9\u06cc\u062f\u0647<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>\u0627\u0644\u06af\u0648\u06cc Abstract Factory \u06cc\u06a9 \u0627\u0644\u06af\u0648\u06cc \u0637\u0631\u0627\u062d\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0631\u0627\u0647\u06cc \u0628\u0631\u0627\u06cc \u0627\u06cc\u062c\u0627\u062f \u062e\u0627\u0646\u0648\u0627\u062f\u0647 \u0647\u0627\u06cc\u06cc \u0627\u0632 \u0627\u0634\u06cc\u0627\u0621 \u0645\u0631\u062a\u0628\u0637 \u06cc\u0627 \u0648\u0627\u0628\u0633\u062a\u0647 \u0628\u062f\u0648\u0646 \u0645\u0634\u062e\u0635 \u06a9\u0631\u062f\u0646 \u06a9\u0644\u0627\u0633 \u0647\u0627\u06cc \u0645\u0634\u062e\u0635 \u0622\u0646\u0647\u0627 \u0641\u0631\u0627\u0647\u0645 \u0645\u06cc \u06a9\u0646\u062f.  \u0628\u0631\u0627\u06cc \u0627\u06cc\u062c\u0627\u062f \u0627\u0634\u06cc\u0627\u06cc\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u0634\u0648\u062f \u06a9\u0647 \u0645\u062a\u0639\u0644\u0642 \u0628\u0647 \u06cc\u06a9 \u062e\u0627\u0646\u0648\u0627\u062f\u0647 \u0648\u0627\u062d\u062f \u0647\u0633\u062a\u0646\u062f\u060c \u0627\u0645\u0627 \u0642\u0631\u0627\u0631 \u0646\u06cc\u0633\u062a \u0628\u0627 \u0647\u0645 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0634\u0648\u0646\u062f.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight java\"><code><span class=\"nd\">@FunctionalInterface<\/span>\n<span class=\"kd\">public<\/span> <span class=\"kd\">interface<\/span> <span class=\"nc\">AbstractExecutionFactory<\/span> <span class=\"o\">{<\/span>\n\n    <span class=\"cm\">\/**\n     * Create execution.\n     *\n     * @param sourceCode  the source code\n     * @param testCases   the test cases\n     * @param timeLimit   the time limit\n     * @param memoryLimit the memory limit\n     * @return the execution\n     *\/<\/span>\n    <span class=\"nc\">Execution<\/span> <span class=\"nf\">createExecution<\/span><span class=\"o\">(<\/span><span class=\"nc\">MultipartFile<\/span> <span class=\"n\">sourceCode<\/span><span class=\"o\">,<\/span>\n                              <span class=\"nc\">List<\/span><span class=\"o\">&lt;<\/span><span class=\"nc\">ConvertedTestCase<\/span><span class=\"o\">&gt;<\/span> <span class=\"n\">testCases<\/span><span class=\"o\">,<\/span>\n                              <span class=\"kt\">int<\/span> <span class=\"n\">timeLimit<\/span><span class=\"o\">,<\/span>\n                              <span class=\"kt\">int<\/span> <span class=\"n\">memoryLimit<\/span><span class=\"o\">);<\/span>\n<span class=\"o\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight java\"><code><span class=\"kd\">public<\/span> <span class=\"kd\">abstract<\/span> <span class=\"kd\">class<\/span> <span class=\"nc\">ExecutionFactory<\/span> <span class=\"o\">{<\/span>\n\n    <span class=\"kd\">private<\/span> <span class=\"kd\">static<\/span> <span class=\"nc\">Map<\/span><span class=\"o\">&lt;<\/span><span class=\"nc\">Language<\/span><span class=\"o\">,<\/span> <span class=\"nc\">ExecutionType<\/span><span class=\"o\">&gt;<\/span> <span class=\"n\">registeredExecutionTypes<\/span> <span class=\"o\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nc\">EnumMap<\/span><span class=\"o\">&lt;&gt;(<\/span><span class=\"nc\">Language<\/span><span class=\"o\">.<\/span><span class=\"na\">class<\/span><span class=\"o\">);<\/span>\n\n    <span class=\"kd\">private<\/span> <span class=\"kd\">static<\/span> <span class=\"nc\">Map<\/span><span class=\"o\">&lt;<\/span><span class=\"nc\">Language<\/span><span class=\"o\">,<\/span> <span class=\"nc\">AbstractExecutionFactory<\/span><span class=\"o\">&gt;<\/span> <span class=\"n\">registeredFactories<\/span> <span class=\"o\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nc\">EnumMap<\/span><span class=\"o\">&lt;&gt;(<\/span><span class=\"nc\">Language<\/span><span class=\"o\">.<\/span><span class=\"na\">class<\/span><span class=\"o\">);<\/span>\n\n    <span class=\"kd\">private<\/span> <span class=\"nf\">ExecutionFactory<\/span><span class=\"o\">()<\/span> <span class=\"o\">{}<\/span>\n\n    <span class=\"cm\">\/**\n     * Register.\n     *\n     * @param language the language\n     * @param factory  the factory\n     *\/<\/span>\n    <span class=\"kd\">public<\/span> <span class=\"kd\">static<\/span> <span class=\"kt\">void<\/span> <span class=\"nf\">registerExecution<\/span><span class=\"o\">(<\/span><span class=\"nc\">Language<\/span> <span class=\"n\">language<\/span><span class=\"o\">,<\/span> <span class=\"nc\">AbstractExecutionFactory<\/span> <span class=\"n\">factory<\/span><span class=\"o\">)<\/span> <span class=\"o\">{<\/span>\n        <span class=\"n\">registeredFactories<\/span><span class=\"o\">.<\/span><span class=\"na\">putIfAbsent<\/span><span class=\"o\">(<\/span><span class=\"n\">language<\/span><span class=\"o\">,<\/span> <span class=\"n\">factory<\/span><span class=\"o\">);<\/span>\n    <span class=\"o\">}<\/span>\n\n    <span class=\"cm\">\/**\n     * Register execution type.\n     *\n     * @param language      the language\n     * @param executionType the execution type\n     *\/<\/span>\n    <span class=\"kd\">public<\/span> <span class=\"kd\">static<\/span> <span class=\"kt\">void<\/span> <span class=\"nf\">registerExecutionType<\/span><span class=\"o\">(<\/span><span class=\"nc\">Language<\/span> <span class=\"n\">language<\/span><span class=\"o\">,<\/span> <span class=\"nc\">ExecutionType<\/span> <span class=\"n\">executionType<\/span><span class=\"o\">)<\/span> <span class=\"o\">{<\/span>\n        <span class=\"n\">registeredExecutionTypes<\/span><span class=\"o\">.<\/span><span class=\"na\">putIfAbsent<\/span><span class=\"o\">(<\/span><span class=\"n\">language<\/span><span class=\"o\">,<\/span> <span class=\"n\">executionType<\/span><span class=\"o\">);<\/span>\n    <span class=\"o\">}<\/span>\n\n    <span class=\"cm\">\/**\n     * Gets execution type.\n     *\n     * @param language the language\n     * @return the execution type\n     *\/<\/span>\n    <span class=\"kd\">public<\/span> <span class=\"kd\">static<\/span> <span class=\"nc\">ExecutionType<\/span> <span class=\"nf\">getExecutionType<\/span><span class=\"o\">(<\/span><span class=\"nc\">Language<\/span> <span class=\"n\">language<\/span><span class=\"o\">)<\/span> <span class=\"o\">{<\/span>\n        <span class=\"k\">return<\/span> <span class=\"n\">registeredExecutionTypes<\/span><span class=\"o\">.<\/span><span class=\"na\">get<\/span><span class=\"o\">(<\/span><span class=\"n\">language<\/span><span class=\"o\">);<\/span>\n    <span class=\"o\">}<\/span>\n\n    <span class=\"cm\">\/**\n     * Gets registered factories.\n     *\n     * @return the registered factories\n     *\/<\/span>\n    <span class=\"kd\">public<\/span> <span class=\"kd\">static<\/span> <span class=\"nc\">Set<\/span><span class=\"o\">&lt;<\/span><span class=\"nc\">Language<\/span><span class=\"o\">&gt;<\/span> <span class=\"nf\">getRegisteredFactories<\/span><span class=\"o\">()<\/span> <span class=\"o\">{<\/span>\n        <span class=\"k\">return<\/span> <span class=\"n\">registeredFactories<\/span>\n                <span class=\"o\">.<\/span><span class=\"na\">keySet<\/span><span class=\"o\">()<\/span>\n                <span class=\"o\">.<\/span><span class=\"na\">stream<\/span><span class=\"o\">()<\/span>\n                <span class=\"o\">.<\/span><span class=\"na\">collect<\/span><span class=\"o\">(<\/span><span class=\"nc\">Collectors<\/span><span class=\"o\">.<\/span><span class=\"na\">toSet<\/span><span class=\"o\">());<\/span>\n    <span class=\"o\">}<\/span>\n\n    <span class=\"cm\">\/**\n     * Gets execution.\n     *\n     * @param sourceCode  the source code\n     * @param testCases   the test cases\n     * @param timeLimit   the time limit\n     * @param memoryLimit the memory limit\n     * @param language    the language\n     * @return the execution\n     *\/<\/span>\n    <span class=\"kd\">public<\/span> <span class=\"kd\">static<\/span> <span class=\"nc\">Execution<\/span> <span class=\"nf\">createExecution<\/span><span class=\"o\">(<\/span><span class=\"nc\">MultipartFile<\/span> <span class=\"n\">sourceCode<\/span><span class=\"o\">,<\/span>\n                                            <span class=\"nc\">List<\/span><span class=\"o\">&lt;<\/span><span class=\"nc\">ConvertedTestCase<\/span><span class=\"o\">&gt;<\/span> <span class=\"n\">testCases<\/span><span class=\"o\">,<\/span>\n                                            <span class=\"kt\">int<\/span> <span class=\"n\">timeLimit<\/span><span class=\"o\">,<\/span>\n                                            <span class=\"kt\">int<\/span> <span class=\"n\">memoryLimit<\/span><span class=\"o\">,<\/span>\n                                            <span class=\"nc\">Language<\/span> <span class=\"n\">language<\/span><span class=\"o\">)<\/span> <span class=\"o\">{<\/span>\n        <span class=\"nc\">AbstractExecutionFactory<\/span> <span class=\"n\">factory<\/span> <span class=\"o\">=<\/span> <span class=\"n\">registeredFactories<\/span><span class=\"o\">.<\/span><span class=\"na\">get<\/span><span class=\"o\">(<\/span><span class=\"n\">language<\/span><span class=\"o\">);<\/span>\n        <span class=\"k\">if<\/span> <span class=\"o\">(<\/span><span class=\"n\">factory<\/span> <span class=\"o\">==<\/span> <span class=\"kc\">null<\/span><span class=\"o\">)<\/span> <span class=\"o\">{<\/span>\n            <span class=\"k\">throw<\/span> <span class=\"k\">new<\/span> <span class=\"nf\">FactoryNotFoundException<\/span><span class=\"o\">(<\/span><span class=\"s\">\"No ExecutionFactory registered for the language \"<\/span> <span class=\"o\">+<\/span> <span class=\"n\">language<\/span><span class=\"o\">);<\/span>\n        <span class=\"o\">}<\/span>\n\n        <span class=\"k\">return<\/span> <span class=\"n\">factory<\/span><span class=\"o\">.<\/span><span class=\"na\">createExecution<\/span><span class=\"o\">(<\/span>\n                <span class=\"n\">sourceCode<\/span><span class=\"o\">,<\/span>\n                <span class=\"n\">testCases<\/span><span class=\"o\">,<\/span>\n                <span class=\"n\">timeLimit<\/span><span class=\"o\">,<\/span>\n                <span class=\"n\">memoryLimit<\/span><span class=\"o\">);<\/span>\n    <span class=\"o\">}<\/span>\n<span class=\"o\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0647\u0645\u0647 \u0632\u0628\u0627\u0646 \u0647\u0627 \u0631\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646 \u062f\u0631 \u06cc\u06a9 \u06a9\u0644\u0627\u0633 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u062b\u0628\u062a \u06a9\u0631\u062f.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight java\"><code>   <span class=\"kd\">private<\/span> <span class=\"kt\">void<\/span> <span class=\"nf\">configureLanguages<\/span><span class=\"o\">()<\/span> <span class=\"o\">{<\/span>\n        <span class=\"c1\">\/\/ Register factories<\/span>\n        <span class=\"n\">register<\/span><span class=\"o\">(<\/span><span class=\"nc\">Language<\/span><span class=\"o\">.<\/span><span class=\"na\">JAVA<\/span><span class=\"o\">,<\/span>\n                <span class=\"o\">(<\/span><span class=\"n\">sourceCode<\/span><span class=\"o\">,<\/span> <span class=\"n\">testCases<\/span><span class=\"o\">,<\/span> <span class=\"n\">timeLimit<\/span><span class=\"o\">,<\/span> <span class=\"n\">memoryLimit<\/span><span class=\"o\">)<\/span> <span class=\"o\">-&gt;<\/span> <span class=\"k\">new<\/span> <span class=\"nc\">JavaExecution<\/span><span class=\"o\">(<\/span>\n                        <span class=\"n\">sourceCode<\/span><span class=\"o\">,<\/span>\n                        <span class=\"n\">testCases<\/span><span class=\"o\">,<\/span>\n                        <span class=\"n\">timeLimit<\/span><span class=\"o\">,<\/span>\n                        <span class=\"n\">memoryLimit<\/span><span class=\"o\">,<\/span>\n                        <span class=\"nc\">ExecutionFactory<\/span><span class=\"o\">.<\/span><span class=\"na\">getExecutionType<\/span><span class=\"o\">(<\/span><span class=\"nc\">Language<\/span><span class=\"o\">.<\/span><span class=\"na\">JAVA<\/span><span class=\"o\">)));<\/span>\n\n        <span class=\"n\">register<\/span><span class=\"o\">(<\/span><span class=\"nc\">Language<\/span><span class=\"o\">.<\/span><span class=\"na\">PYTHON<\/span><span class=\"o\">,<\/span>\n                <span class=\"o\">(<\/span><span class=\"n\">sourceCode<\/span><span class=\"o\">,<\/span> <span class=\"n\">testCases<\/span><span class=\"o\">,<\/span> <span class=\"n\">timeLimit<\/span><span class=\"o\">,<\/span> <span class=\"n\">memoryLimit<\/span><span class=\"o\">)<\/span> <span class=\"o\">-&gt;<\/span> <span class=\"k\">new<\/span> <span class=\"nc\">PythonExecution<\/span><span class=\"o\">(<\/span>\n                        <span class=\"n\">sourceCode<\/span><span class=\"o\">,<\/span>\n                        <span class=\"n\">testCases<\/span><span class=\"o\">,<\/span>\n                        <span class=\"n\">timeLimit<\/span><span class=\"o\">,<\/span>\n                        <span class=\"n\">memoryLimit<\/span><span class=\"o\">,<\/span>\n                        <span class=\"nc\">ExecutionFactory<\/span><span class=\"o\">.<\/span><span class=\"na\">getExecutionType<\/span><span class=\"o\">(<\/span><span class=\"nc\">Language<\/span><span class=\"o\">.<\/span><span class=\"na\">PYTHON<\/span><span class=\"o\">)));<\/span>\n<span class=\"o\">...<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0628\u0631\u0627\u06cc \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0628\u06cc\u0634\u062a\u0631 \u062f\u0631 \u0645\u0648\u0631\u062f <strong>\u0627\u062c\u0631\u0627<\/strong> \u06a9\u0644\u0627\u0633 \u0648 \u0646\u062d\u0648\u0647 \u0627\u06cc\u062c\u0627\u062f \u0645\u062d\u06cc\u0637 \u0627\u062c\u0631\u0627 \u0628\u0647 \u06a9\u0644\u0627\u0633 Execution \u0645\u0631\u0627\u062c\u0639\u0647 \u06a9\u0646\u06cc\u062f<\/p>\n<h3><span class=\"ez-toc-section\" id=\"%D9%86%D8%AD%D9%88%D9%87_%D9%85%D8%AD%D8%A7%D8%B3%D8%A8%D9%87_%DA%A9%D8%A7%D9%85%D9%BE%D8%A7%DB%8C%D9%84_%D9%88_%D9%85%D8%AF%D8%AA_%D8%B2%D9%85%D8%A7%D9%86_%D8%A7%D8%AC%D8%B1%D8%A7\"><\/span>\n<p>  \u0646\u062d\u0648\u0647 \u0645\u062d\u0627\u0633\u0628\u0647 \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u0648 \u0645\u062f\u062a \u0632\u0645\u0627\u0646 \u0627\u062c\u0631\u0627<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u062e\u0648\u0628\u060c \u0645\u0627 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u0645 \u0627\u0632 \u062f\u0633\u062a\u0648\u0631 \u0628\u0627\u0632\u0631\u0633\u06cc docker \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645 \u062a\u0627 \u062a\u0645\u0627\u0645 \u062c\u0632\u0626\u06cc\u0627\u062a \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 (\u062a\u0627\u0631\u06cc\u062e \u0627\u06cc\u062c\u0627\u062f\u060c \u062a\u0627\u0631\u06cc\u062e \u0634\u0631\u0648\u0639 \u0627\u062c\u0631\u0627\u060c \u0648\u0636\u0639\u06cc\u062a\u060c \u062a\u0627\u0631\u06cc\u062e \u067e\u0627\u06cc\u0627\u0646 \u0627\u062c\u0631\u0627\u060c \u0648\u0636\u0639\u06cc\u062a \u062e\u0631\u0648\u062c&#8230;) \u0631\u0627 \u0628\u062f\u0633\u062a \u0622\u0648\u0631\u06cc\u0645.<\/p>\n<h4><span class=\"ez-toc-section\" id=\"Docker_Inspect\"><\/span>\n<p>  Docker Inspect<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>\u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0627 \u062a\u0639\u06cc\u06cc\u0646 \u0634\u0646\u0627\u0633\u0647 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u06cc\u0627 \u062a\u0635\u0648\u06cc\u0631 \u06cc\u0627 \u0646\u0627\u0645 \u0638\u0631\u0641 \u06cc\u0627 \u062a\u0635\u0648\u06cc\u0631 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0622\u0631\u06af\u0648\u0645\u0627\u0646 \u0627\u0632 \u062f\u0633\u062a\u0648\u0631 \u0628\u0627\u0632\u0631\u0633\u06cc docker \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f.<\/p>\n<p>\u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u062b\u0627\u0644\u060c \u0628\u0631\u0627\u06cc \u0628\u0631\u0631\u0633\u06cc \u06cc\u06a9 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u0628\u0647 \u0646\u0627\u0645 &#8220;my_container&#8221;\u060c \u062f\u0633\u062a\u0648\u0631 \u0632\u06cc\u0631 \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code>docker inspect my_container\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0647\u0645\u0686\u0646\u06cc\u0646 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0632 \u06af\u0632\u06cc\u0646\u0647 &#8211;format \u0628\u0631\u0627\u06cc \u0646\u0645\u0627\u06cc\u0634 \u0641\u0642\u0637 \u0641\u06cc\u0644\u062f\u0647\u0627\u06cc \u062e\u0627\u0635 \u06cc\u0627 \u0641\u0631\u0645\u062a \u06a9\u0631\u062f\u0646 \u062e\u0631\u0648\u062c\u06cc \u0628\u0647 \u0631\u0648\u0634\u06cc \u062e\u0627\u0635 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code>docker inspect <span class=\"nt\">--format<\/span><span class=\"o\">=<\/span><span class=\"s1\">'{{json .Config}}'<\/span> my_container\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0628\u0631\u0627\u06cc \u062c\u0632\u0626\u06cc\u0627\u062a \u0628\u06cc\u0634\u062a\u0631 \u0628\u0647 \u06a9\u062f \u0645\u0646\u0628\u0639 \u06a9\u0627\u0645\u0644 \u0628\u0631\u0646\u0627\u0645\u0647 \u0645\u0631\u0627\u062c\u0639\u0647 \u06a9\u0646\u06cc\u062f. <\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D8%B3%D8%A7%DB%8C%D8%B1_%D9%85%D9%88%D8%A7%D8%B1%D8%AF_%D9%85%D9%88%D8%AC%D9%88%D8%AF_%D8%AF%D8%B1_%D9%BE%D8%A7%DB%8C%DA%AF%D8%A7%D9%87_%DA%A9%D8%AF\"><\/span>\n<p>  \u0633\u0627\u06cc\u0631 \u0645\u0648\u0627\u0631\u062f \u0645\u0648\u062c\u0648\u062f \u062f\u0631 \u067e\u0627\u06cc\u06af\u0627\u0647 \u06a9\u062f<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<ul>\n<li>\u0646\u0645\u0648\u062f\u0627\u0631 \u0647\u0644\u0645 \u0628\u0631\u0627\u06cc \u0627\u0633\u062a\u0642\u0631\u0627\u0631 \u0633\u0631\u0648\u06cc\u0633 \u062f\u0631 \u0646\u0645\u0648\u062f\u0627\u0631\u0647\u0627\u06cc \u0647\u0644\u0645 K8s\n<\/li>\n<li>\u062a\u0647\u06cc\u0647 \u0632\u06cc\u0631\u0633\u0627\u062e\u062a \u062f\u0631 Azure \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0642\u0627\u0644\u0628 ARM\n<\/li>\n<li>\u0627\u062c\u0631\u0627\u06cc \u0645\u062d\u0644\u06cc \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 docker-compose \u0627\u0632 \u062c\u0645\u0644\u0647 \u0627\u0631\u062a\u0628\u0627\u0637 \u0628\u06cc\u0646 RabbitMq \u0648 ApacheKafka docker-compose\n<\/li>\n<\/ul>\n<h2><span class=\"ez-toc-section\" id=\"%D9%86%D8%AA%DB%8C%D8%AC%D9%87\"><\/span>\n<p>  \u0646\u062a\u06cc\u062c\u0647<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0627\u06cc\u062c\u0627\u062f \u06cc\u06a9 \u067e\u0644\u062a\u0641\u0631\u0645 \u062d\u0644 \u0645\u0633\u0626\u0644\u0647 \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u06cc\u06a9 \u06a9\u0627\u0631 \u0686\u0627\u0644\u0634 \u0628\u0631\u0627\u0646\u06af\u06cc\u0632 \u0628\u0627\u0634\u062f\u060c \u0627\u0645\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0627\u06cc\u0646 \u0641\u0631\u0622\u06cc\u0646\u062f \u0631\u0627 \u0628\u0633\u06cc\u0627\u0631 \u0642\u0627\u0628\u0644 \u0645\u062f\u06cc\u0631\u06cc\u062a \u06a9\u0646\u062f.  \u0628\u0627 \u0645\u0632\u0627\u06cc\u0627\u06cc \u0641\u0631\u0627\u0648\u0627\u0646 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627\u060c \u0645\u0627\u0646\u0646\u062f \u062c\u062f\u0627\u0633\u0627\u0632\u06cc\u060c \u0642\u0627\u0628\u0644 \u062d\u0645\u0644 \u0628\u0648\u062f\u0646\u060c \u0633\u0627\u0632\u06af\u0627\u0631\u06cc\u060c \u0645\u0642\u06cc\u0627\u0633 \u067e\u0630\u06cc\u0631\u06cc \u0648 \u0645\u0642\u0631\u0648\u0646 \u0628\u0647 \u0635\u0631\u0641\u0647 \u0628\u0648\u062f\u0646\u060c \u0628\u0647 \u0631\u0627\u062d\u062a\u06cc \u0645\u06cc \u062a\u0648\u0627\u0646 \u0641\u0647\u0645\u06cc\u062f \u06a9\u0647 \u0686\u0631\u0627 \u0622\u0646\u0647\u0627 \u06cc\u06a9 \u0627\u0646\u062a\u062e\u0627\u0628 \u0639\u0627\u0644\u06cc \u0628\u0631\u0627\u06cc \u0633\u0627\u062e\u062a\u0646 \u06cc\u06a9 \u067e\u0644\u062a \u0641\u0631\u0645 \u0642\u062f\u0631\u062a\u0645\u0646\u062f \u062d\u0644 \u0645\u0634\u06a9\u0644 \u0647\u0633\u062a\u0646\u062f.  \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646\u060c \u0686\u0647 \u0639\u0644\u0627\u0642\u0647\u200c\u0645\u0646\u062f \u0628\u0647 \u06a9\u062f\u0646\u0648\u06cc\u0633\u06cc \u0647\u0633\u062a\u06cc\u062f \u06a9\u0647 \u0628\u0647 \u062f\u0646\u0628\u0627\u0644 \u062a\u0642\u0648\u06cc\u062a \u0645\u0647\u0627\u0631\u062a\u200c\u0647\u0627\u06cc \u062e\u0648\u062f \u0647\u0633\u062a\u06cc\u062f \u06cc\u0627 \u06a9\u0633\u0628\u200c\u0648\u06a9\u0627\u0631\u06cc \u06a9\u0647 \u0628\u0647 \u062f\u0646\u0628\u0627\u0644 \u0628\u0647\u0628\u0648\u062f \u0639\u0645\u0644\u06a9\u0631\u062f \u062e\u0648\u062f \u0647\u0633\u062a\u06cc\u062f\u060c \u0627\u0632 \u0627\u0645\u062a\u062d\u0627\u0646 \u06a9\u0631\u062f\u0646 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627 \u062f\u0631\u06cc\u063a \u0646\u06a9\u0646\u06cc\u062f\u060c \u062e\u0648\u0634\u062d\u0627\u0644 \u062e\u0648\u0627\u0647\u06cc\u062f \u0634\u062f \u06a9\u0647 \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0631\u0627 \u0627\u0646\u062c\u0627\u0645 \u062f\u0627\u062f\u06cc\u062f!  \u0648 \u0628\u0647 \u06cc\u0627\u062f \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f\u060c \u0647\u0645\u0627\u0646\u0637\u0648\u0631 \u06a9\u0647 \u0646\u0642\u0644 \u0642\u0648\u0644 \u0645\u0639\u0631\u0648\u0641 \u0645\u06cc \u06af\u0648\u06cc\u062f: &#8220;\u0638\u0631\u0648\u0641 \u0628\u0631\u0627\u06cc \u06a9\u062f \u0634\u0645\u0627 \u0645\u0627\u0646\u0646\u062f \u0644\u06af\u0648 \u0647\u0633\u062a\u0646\u062f&#8221;\u060c \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0627\u0632 \u0633\u0627\u062e\u062a\u0646 \u067e\u0644\u062a \u0641\u0631\u0645 \u062d\u0644 \u0645\u0633\u0626\u0644\u0647 \u062e\u0648\u062f \u0644\u0630\u062a \u0628\u0628\u0631\u06cc\u062f\u060c \u0627\u0645\u06a9\u0627\u0646\u0627\u062a \u0628\u06cc \u067e\u0627\u06cc\u0627\u0646 \u0627\u0633\u062a!<\/p>\n<\/p><\/div>\n","protected":false},"excerpt":{"rendered":"<p>\u0622\u06cc\u0627 \u062a\u0627 \u0628\u0647 \u062d\u0627\u0644 \u0641\u06a9\u0631 \u06a9\u0631\u062f\u0647 \u0627\u06cc\u062f \u06a9\u0647 \u067e\u0644\u062a\u0641\u0631\u0645 \u0647\u0627\u06cc\u06cc \u0645\u0627\u0646\u0646\u062f Codeforces \u0648 LeetCode \u0686\u06af\u0648\u0646\u0647 \u06a9\u0627\u0631 \u0645\u06cc \u06a9\u0646\u0646\u062f\u061f \u0686\u06af\u0648\u0646\u0647 \u0622\u0646\u0647\u0627 \u06a9\u062f \u0686\u0646\u062f\u06cc\u0646 \u06a9\u0627\u0631\u0628\u0631 \u0631\u0627 \u062f\u0631 \u0628\u0631\u0627\u0628\u0631 \u0645\u0648\u0627\u0631\u062f \u0622\u0632\u0645\u0627\u06cc\u0634\u06cc \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u0648 \u0627\u062c\u0631\u0627 \u0645\u06cc \u06a9\u0646\u0646\u062f\u061f \u0686\u06af\u0648\u0646\u0647 \u06a9\u0627\u0631\u0627\u06cc\u06cc \u0627\u0644\u06af\u0648\u0631\u06cc\u062a\u0645 \u0647\u0627 \u0631\u0627 \u062a\u0639\u06cc\u06cc\u0646 \u0645\u06cc \u06a9\u0646\u0646\u062f\u061f\u062f\u0631 \u0627\u06cc\u0646 \u0645\u0642\u0627\u0644\u0647\u060c \u0628\u0647 \u0641\u0631\u0622\u06cc\u0646\u062f \u0633\u0627\u062e\u062a \u06cc\u06a9 \u067e\u0644\u062a\u0641\u0631\u0645 \u062d\u0644 \u0645\u0633\u0626\u0644\u0647 \u0628\u0633\u06cc\u0627\u0631 \u0645\u0648\u062b\u0631 \u062e\u0648\u0627\u0647\u06cc\u0645 \u067e\u0631\u062f\u0627\u062e\u062a. \u06a9\u062f &hellip;<\/p>\n","protected":false},"author":2,"featured_media":20471,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"fifu_image_url":"","fifu_image_alt":"","footnotes":""},"categories":[339],"tags":[],"class_list":["post-20470","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dev"],"_links":{"self":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/20470","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/comments?post=20470"}],"version-history":[{"count":0,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/20470\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media\/20471"}],"wp:attachment":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media?parent=20470"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/categories?post=20470"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/tags?post=20470"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}