{"id":284514,"date":"2017-04-06T09:40:02","date_gmt":"2017-04-06T05:40:02","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=284514"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=284514","title":{"rendered":"\u041f\u0438\u0448\u0438 \u043d\u0430 C \u043a\u0430\u043a \u0434\u0436\u0435\u043d\u0442\u043b\u044c\u043c\u0435\u043d"},"content":{"rendered":"<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/264\/877\/15e\/26487715e69445adb1c631dc801830d5.jpg\"\/><br \/>  <i><\/p>\n<blockquote><p>\u00abCode Monkey like Fritos<br \/>  Code Monkey like Tab and Mountain Dew<br \/>  Code Monkey very simple man<br \/>  With big warm fuzzy secret heart:<br \/>  Code Monkey like you<br \/>  Code Monkey like you\u00bb  <\/p><\/blockquote>\n<p>   \u2014 Jonathan Coulton \u2014 Code Monkey<br \/>  <\/i><\/p>\n<p>  \u042f \u0434\u0443\u043c\u0430\u044e, \u043c\u043d\u043e\u0433\u0438\u043c \u0437\u043d\u0430\u043a\u043e\u043c\u0430 \u044d\u0442\u0430 \u0448\u0438\u043a\u0430\u0440\u043d\u0430\u044f \u043f\u0435\u0441\u043d\u044f Jonathan Coulton&#8217;\u0430, \u0438 \u044d\u0442\u0430 \u0436\u0438\u0437\u043d\u0435\u043d\u043d\u0430\u044f \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f, \u043a\u043e\u0433\u0434\u0430 \u00abRob say Code Monkey very diligent\u00bb, \u043d\u043e \u00abhis output stink\u00bb \u0438 \u00abhis code not &#8216;functional&#8217; or &#8216;elegant&#8217;\u00bb. <\/p>\n<p>  \u042f\u0437\u044b\u043a \u0421\u0438, \u043f\u043e\u0434\u0430\u0440\u0438\u0432\u0448\u0438\u0439 \u043d\u0430\u043c \u0441\u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0433\u043e \u0441\u043e\u0444\u0442\u0430, \u043f\u043e\u0442\u0438\u0445\u043e\u043d\u044c\u043a\u0443 \u0431\u044b\u043b \u0432\u044b\u0442\u0435\u0441\u043d\u0435\u043d \u0438\u0437 \u0434\u0435\u0441\u043a\u0442\u043e\u043f\u0430 \u0438 \u044d\u043d\u0442\u0435\u0440\u043f\u0440\u0430\u0439\u0437\u0430 \u0442\u0430\u043a\u0438\u043c\u0438 \u0432\u044b\u0441\u043e\u043a\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u044b\u043c\u0438 \u0433\u0438\u0433\u0430\u043d\u0442\u0430\u043c\u0438 \u043a\u0430\u043a Java \u0438 C# \u0438 \u0437\u0430\u043d\u044f\u043b \u043d\u0438\u0448\u0443 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. \u0418 \u0432\u0441\u0435 \u0431\u044b \u0445\u043e\u0440\u043e\u0448\u043e, \u043d\u043e \u0441\u0438\u0441\u0442\u0435\u043c\u0449\u0438\u043a\u0438 \u2014 \u043e\u0447\u0435\u043d\u044c <s>\u043e\u0442\u0431\u0438\u0442\u044b\u0435<\/s> \u0441\u0432\u043e\u0435\u043e\u0431\u0440\u0430\u0437\u043d\u044b\u0435 \u0440\u0435\u0431\u044f\u0442\u0430. \u0417\u0430\u0434\u0430\u0447\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u0440\u043e\u0439 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u044e\u0442 \u043f\u0435\u0440\u0435\u0434 \u043d\u0438\u043c\u0438 \u0434\u0430\u0436\u0435 \u0441\u0432\u043e\u0435\u0439 \u0444\u043e\u0440\u043c\u0443\u043b\u0438\u0440\u043e\u0432\u043a\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u044b \u0432\u043e\u0433\u043d\u0430\u0442\u044c \u0432 \u0443\u0436\u0430\u0441 \u043f\u0440\u043e\u0441\u0442\u044b\u0445 \u0441\u043c\u0435\u0440\u0442\u043d\u044b\u0445. \u0421\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0433\u043e\u0432\u043e\u0440\u044f, \u0442\u0430\u043a \u0436\u0435, \u043a\u0430\u043a \u0438 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f.<\/p>\n<p>  \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u043c\u044b \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043c \u043e \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0445 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0430\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u044f \u0432\u044b\u043d\u0435\u0441 \u0438\u0437 \u0433\u043b\u0443\u0431\u0438\u043d \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043d\u0430 \u0421\u0438. \u041f\u043e\u0435\u0445\u0430\u043b\u0438.<br \/>  <a name=\"habracut\"><\/a><br \/>  \u041f\u0443\u043d\u043a\u0442\u044b \u0431\u0443\u0434\u0443\u0442 \u0440\u0430\u0441\u043f\u043e\u043b\u0430\u0433\u0430\u0442\u044c\u0441\u044f \u043e\u0442 \u0441\u0430\u043c\u044b\u0445 \u0444\u0443\u043d\u0434\u0430\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u0445 \u0438 \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u044b\u0445 (\u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u043d\u0430 \u043d\u043e\u0432\u0438\u0447\u043a\u043e\u0432 \u0432 \u044f\u0437\u044b\u043a\u0435 \u0421\u0438) \u0434\u043e \u0441\u0430\u043c\u044b\u0445 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u043d\u044b\u0445, \u043d\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0445. \u0415\u0441\u043b\u0438 \u0447\u0443\u0432\u0441\u0442\u0432\u0443\u0435\u0442\u0435, \u0447\u0442\u043e \u0432\u044b \u044d\u0442\u043e \u0437\u043d\u0430\u0435\u0442\u0435 \u2014 \u043b\u0438\u0441\u0442\u0430\u0439\u0442\u0435 \u0434\u0430\u043b\u044c\u0448\u0435.<\/p>\n<p>  <\/p>\n<h2> \u041f\u0440\u0430\u043a\u0442\u0438\u043a\u0430 I: \u0421\u043e\u0431\u043b\u044e\u0434\u0430\u0439\u0442\u0435 \u0435\u0434\u0438\u043d\u044b\u0439 Code Style \u0438 \u0444\u0443\u043d\u0434\u0430\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u044b \u00ab\u0445\u043e\u0440\u043e\u0448\u0435\u0433\u043e \u0442\u043e\u043d\u0430\u00bb<\/h2>\n<p>  \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e INPUT, \u043f\u0430\u0440\u0441\u0438\u0442 \u0435\u0451 \u0432 \u043c\u0430\u0441\u0441\u0438\u0432 IncomingValues \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 result_to_return? \u041e\u0442\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0431\u044b\u0434\u043b\u043e\u043a\u043e\u0434!<br \/>  \u0422\u043e, \u0447\u0442\u043e \u0432 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0432\u044b\u0434\u0430\u0435\u0442 \u043d\u043e\u0432\u0438\u0447\u043a\u0430 \u2014 \u043d\u0435\u0441\u043e\u0431\u043b\u044e\u0434\u0435\u043d\u0438\u0435 \u0435\u0434\u0438\u043d\u043e\u0433\u043e \u0441\u0442\u0438\u043b\u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u043a\u043e\u0434\u0430 \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u0421\u043b\u0435\u0434\u043e\u043c \u0438\u0434\u0435\u0442 \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0440\u0430\u0432\u0438\u043b \u00ab\u0445\u043e\u0440\u043e\u0448\u0435\u0433\u043e \u0442\u043e\u043d\u0430\u00bb.<br \/>  \u0412\u043e\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0430\u043c\u044b\u0445 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u043d\u044b\u0445 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u0439 \u043a \u043e\u0444\u043e\u0440\u043c\u043b\u0435\u043d\u0438\u044e \u043a\u043e\u0434\u0430 \u043d\u0430 \u0421\u0438:<\/p>\n<ul>\n<li><b>\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u043c\u0430\u043a\u0440\u043e\u0441\u043e\u0432 \u0438 \u043c\u0430\u043a\u0440\u043e\u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u043f\u0438\u0448\u0443\u0442\u0441\u044f \u043a\u0430\u043f\u0441\u043e\u043c, \u0441\u043b\u043e\u0432\u0430 \u0432 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f\u0445 \u043e\u0442\u0434\u0435\u043b\u044f\u044e\u0442\u0441\u044f \u0434\u0440\u0443\u0433 \u043e\u0442 \u0434\u0440\u0443\u0433\u0430 \u043d\u0438\u0436\u043d\u0438\u043c \u043f\u043e\u0434\u0447\u0435\u0440\u043a\u0438\u0432\u0430\u043d\u0438\u0435\u043c.<\/b><br \/> \n<pre><code class=\"cpp\">#define MAX_ARRAY_SIZE    32 #deifne INCORRECT_VALUE   -1 #deifne IPC_FIND_NODE(x)  ipc_find_node(config.x) <\/code><\/pre>\n<p>  <\/li>\n<li><b>\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0432 \u043d\u0438\u0436\u043d\u0435\u043c \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0435, \u0430 \u0441\u043b\u043e\u0432\u0430 \u0432 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f\u0445 \u043e\u0442\u0434\u0435\u043b\u044f\u044e\u0442\u0441\u044f \u043d\u0438\u0436\u043d\u0438\u043c \u043f\u043e\u0434\u0447\u0435\u0440\u043a\u0438\u0432\u0430\u043d\u0438\u0435\u043c<\/b><br \/> \n<pre><code class=\"cpp\">int my_int_variable = 0; char *hello_str = &quot;hello_habrahabr&quot;; pid_t current_pid = fork();<\/code><\/pre>\n<p>\u0412\u043e\u043e\u0431\u0449\u0435, \u044d\u0442\u043e\u0442 \u043f\u0443\u043d\u043a\u0442 \u0441\u043f\u043e\u0440\u043d\u044b\u0439. \u041c\u043d\u0435 \u0434\u043e\u0432\u043e\u0434\u0438\u043b\u043e\u0441\u044c \u0432\u0438\u0434\u0435\u0442\u044c \u043f\u0440\u043e\u0435\u043a\u0442\u044b, \u0433\u0434\u0435 \u0438\u043c\u0435\u043d\u0430 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u043f\u0438\u0448\u0443\u0442\u0441\u044f \u0432 pascalCase \u0438 CamelCase \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e.<\/p>\n<\/li>\n<li><b>\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u0447\u043d\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u043e\u0431\u0449\u0435\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u0438\u0448\u0443\u0442\u0441\u044f \u043e\u0434\u043d\u0438\u043c \u0441\u043b\u043e\u0432\u043e\u043c, \u0438\u043d\u043e\u0433\u0434\u0430 \u0441\u043e\u043a\u0440\u0430\u0449\u0435\u043d\u043d\u044b\u043c, \u043d\u043e \u044d\u0442\u043e \u0441\u043b\u043e\u0432\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442 \u0441\u0443\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u2014 \u0447\u0442\u043e \u043e\u043d\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u0434\u0435\u043b\u0430\u0442\u044c.<\/b><br \/>  \u041a\u0441\u0442\u0430\u0442\u0438, \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e \u0432\u0437\u044f\u0442\u044c \u0437\u0430 \u043f\u0440\u0438\u0432\u044b\u0447\u043a\u0443 \u043f\u0438\u0441\u0430\u0442\u044c \u043a\u043e\u0434 \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u043e\u0434\u043d\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0434\u0435\u043b\u0430\u043b\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u043d\u0443 \u0432\u0435\u0449\u044c. \u0418\u043c\u0435\u043d\u043d\u043e \u044d\u0442\u043e \u0434\u043e\u043b\u0436\u043d\u043e \u043e\u0442\u0440\u0430\u0437\u0438\u0442\u044c\u0441\u044f \u0432 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0438. <br \/>  \u0422\u043e \u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0441\u043a\u0430\u0437\u0430\u0442\u044c \u0438 \u043f\u0440\u043e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u2014 \u043d\u0438\u043a\u0430\u043a\u0438\u0445 a, b, c \u2014 \u0432 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0438 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u043e\u0442\u0440\u0430\u0436\u0435\u043d \u0441\u043c\u044b\u0441\u043b (\u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440\u044b \u043d\u0435 \u0432 \u0441\u0447\u0435\u0442). \u0421\u0430\u043c\u043e\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0438\u0440\u0443\u0435\u043c\u044b\u0439 \u043a\u043e\u0434 \u2014 \u043e\u0447\u0435\u043d\u044c \u0445\u043e\u0440\u043e\u0448\u0430\u044f \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0430.\n<\/li>\n<li><b>\u0421\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 (\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b\u0437\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0432 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u0445 \u0440\u0430\u0431\u043e\u0442\u044b \u0432\u043d\u0443\u0442\u0440\u0438 \u043a\u0430\u043a\u043e\u0433\u043e-\u0442\u043e \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u043d\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430) \u043b\u0443\u0447\u0448\u0435 \u043d\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u0431\u044b\u043b\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e \u044f\u0441\u043d\u043e, \u0447\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442 \u044d\u0442\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f.<\/b><br \/>  \u041a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e, \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043c\u0435\u0436\u0434\u0443 \u0441\u0442\u0438\u043b\u0435\u043c \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f: CamelCase \u0438 under_score, \u0442\u0443\u0442 \u0443\u0436\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u0432\u0430\u0441.<br \/> \n<pre><code class=\"cpp\">\/* \u043f\u0440\u0438\u043c\u0435\u0440 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043e\u0431\u0449\u0435\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f *\/ static void dgtprint(char *str) {      int i;      for (i = 0; i &lt; strlen(str); i++) {          if (isdigit(str[i]))              printf(&quot;%c&quot;, str[i]);          else              print(&quot;_&quot;);      } }  \/* \u043f\u0440\u0438\u043c\u0435\u0440 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441\u043e \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u043d\u044b\u043c \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u043e\u043c *\/ \/* CamelCase *\/ void EnableAllVlans(struct vlan_cfg *vp) {     int i;     for (i = 0; i &lt; VLAN_COUNT; i++) {         EnableVlanByProto(vp.vlan[i]);     } }  \/* under_score *\/ void enable_all_vlans(struct vlan_cfg *vp) {     int i;     for (i = 0; i &lt; VLAN_COUNT; i++) {         enable_vlan_by_proto(vp.vlan[i]);     } }<\/code><\/pre>\n<p>  <\/li>\n<li><b>i, j, k \u2014 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0435 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u0434\u043b\u044f \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u0432 \u0446\u0438\u043a\u043b\u0430<\/b><br \/> \n<pre><code class=\"cpp\">int array[MAX_ARRAY_SIZE] = arrinit(); register int i, j, k; for (i = 0; i &lt; MAX_ARRAY_SIZE; i++)      for (j = 0; j &lt; MAX_ARRAY_SIZE; j++)         for (k = MAX_ARRAY_SIZE; k &gt;= 0; k--)             dosmthng(i, j, k, array[i]);<\/code><\/pre>\n<\/li>\n<li><b>\u0421\u043e\u0431\u043b\u044e\u0434\u0430\u0439\u0442\u0435 \u043e\u0434\u043d\u043e\u0440\u043e\u0434\u043d\u043e\u0441\u0442\u044c \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0430 \u0441\u043a\u043e\u0431\u043e\u043a<\/b><br \/> \n<pre><code class=\"cpp\">if (condition) { dosmthng(); } else {     dont_do_something(); } \/* \u041d\u0435 \u0434\u0435\u043b\u0430\u0439\u0442\u0435 \u0442\u0430\u043a *\/  if (condition) {     dosmthng();  } else {     dont_do_something(); } \/* \u0413\u043e\u0440\u0430\u0437\u0434\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u0435\u0435 \u0431\u0443\u0434\u0435\u0442 \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c \u043e\u0434\u043d\u043e\u043c\u0443 \u043f\u0440\u0430\u0432\u0438\u043b\u0443 \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0430 \u0441\u043a\u043e\u0431\u043e\u043a, \u043a\u0430\u043a \u0442\u0443\u0442 *\/  if (condition)  {     dosmthng();  }  else {     dont_do_something(); } \/* \u0418\u043b\u0438 \u043a\u0430\u043a \u0442\u0443\u0442 *\/  \/* \u041d\u0443, \u0438\u043b\u0438 \u043a\u0430\u043a \u0442\u0443\u0442, \u043d\u043e \u044d\u0442\u043e \u0443\u0436\u0435 \u0441\u043e\u0432\u0441\u0435\u043c \u044d\u043a\u0437\u043e\u0442\u0438\u043a\u0430 *\/ if (condition) { dosmthng(); } else { dont_do_something(); } <\/code><\/pre>\n<\/li>\n<li><b>\u041e\u0431\u044a\u044f\u0432\u043b\u044f\u0439\u0442\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438.<\/b> \u0415\u0441\u043b\u0438 \u044d\u0442\u043e \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435, \u0442\u043e \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u0444\u0430\u0439\u043b\u0430.<br \/>  \u041f\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0439\u0442\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043f\u0440\u0438 \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u0438. \u0427\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043d\u0443\u043b\u044f, \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0438 \u2014 NULL:<br \/> \n<pre><code class=\"cpp\">int counter = 0, start_position = 0, unknown_position = 0; struct dhcp_header * dhcp = NULL, * dhcp_temp = NULL; char input_string[32] = { 0 };<\/code><\/pre>\n<p>\u041d\u0443 \u043e\u0441\u0442\u0430\u0432\u0438\u043b\u0438 \u043c\u044b \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043d\u0435\u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c\u0438, \u0438 \u0447\u0442\u043e?<br \/>  \u0410 \u0442\u043e. \u0415\u0441\u043b\u0438 \u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0438\u0445 (\u0434\u043e \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438) \u0432 \u043e\u0442\u043b\u0430\u0434\u043a\u0435 (\u0432 \u0442\u043e\u043c \u0436\u0435 gdb), \u0442\u0430\u043c \u0431\u0443\u0434\u0435\u0442 \u043b\u0435\u0436\u0430\u0442\u044c \u043c\u0443\u0441\u043e\u0440. \u042d\u0442\u043e \u043d\u0435\u0440\u0435\u0434\u043a\u043e \u0441\u0431\u0438\u0432\u0430\u0435\u0442 \u0441 \u0442\u043e\u043b\u043a\u0443 (\u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e, \u0435\u0441\u043b\u0438 \u043c\u0443\u0441\u043e\u0440 \u00ab\u043f\u043e\u0445\u043e\u0436 \u043d\u0430 \u043f\u0440\u0430\u0432\u0434\u0443\u00bb). \u041f\u0440\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0438 \u044f \u0432\u043e\u043e\u0431\u0449\u0435 \u043c\u043e\u043b\u0447\u0443.<\/p>\n<\/li>\n<li><b>\u041f\u0438\u0448\u0438\u0442\u0435 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438 \u0441 \u0443\u043c\u043e\u043c.<\/b><br \/>  \u041d\u0435 \u043d\u0430\u0434\u043e \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u0436\u0434\u0443\u044e \u0441\u0442\u0440\u043e\u0447\u043a\u0443 \u043a\u043e\u0434\u0430 \u2014 \u0435\u0441\u043b\u0438 \u0432\u044b \u043f\u0438\u0448\u0438\u0442\u0435 \u0441\u0430\u043c\u043e\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0438\u0440\u0443\u0435\u043c\u044b\u0439 \u043a\u043e\u0434, \u0431\u043e\u043b\u044c\u0448\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0435\u0433\u043e \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0434\u043b\u044f \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u044f.\n<p>  \u041e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u2014 \u043f\u0438\u0441\u0430\u0442\u044c \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0439, \u0435\u0441\u043b\u0438 \u0438\u0437 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0438 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u0441\u043b\u043e\u0436\u043d\u043e \u043f\u043e\u043d\u044f\u0442\u044c \u0432\u0435\u0441\u044c \u0435\u0451 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b. \u0414\u043b\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u2014 \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0442\u0435 \u0436\u0435, \u0432 \u043f\u043e\u044f\u0441\u043d\u0435\u043d\u0438\u0438 \u043d\u0443\u0436\u0434\u0430\u044e\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u043d\u0435\u043b\u0438\u043d\u0435\u0439\u043d\u044b\u0439 \u0432\u0435\u0449\u0438, \u0433\u0434\u0435 \u043e\u0434\u043d\u043e\u0433\u043e \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u043c\u0430\u043b\u043e. <\/p>\n<p>  \u041d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435, \u0432 \u0432\u043e\u043f\u0440\u043e\u0441\u0435 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u043f\u043e\u043b\u043d\u0430\u044f \u0441\u0432\u043e\u0431\u043e\u0434\u0430 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u2014 \u043d\u0430\u0434\u043e \u043b\u0438\u0448\u044c \u0441\u043b\u0435\u0434\u0438\u0442\u044c, \u0447\u0442\u043e\u0431\u044b \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0435\u0432 \u0431\u044b\u043b\u043e \u043d\u0435 \u043c\u043d\u043e\u0433\u043e, \u043d\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e, \u0447\u0442\u043e\u0431\u044b \u0447\u0435\u043b\u043e\u0432\u0435\u043a, \u0432\u0438\u0434\u044f\u0449\u0438\u0439 \u0432\u0430\u0448 \u043a\u043e\u0434 \u0432 \u043f\u0435\u0440\u0432\u044b\u0439 \u0440\u0430\u0437, \u043d\u0435 \u0437\u0430\u0434\u0430\u0432\u0430\u043b \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u0432.  <\/p>\n<pre><code class=\"cpp\">\/* \u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 1, \u0435\u0441\u043b\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0441 \u043c\u043e\u0434\u0435\u043c\u043d\u044b\u043c   * \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435\u043c \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u0438\u0441\u044c, \u0438 0, \u0435\u0441\u043b\u0438 \u043d\u0435\u0442.   *\/ static int CheckModemConnection() {   int i = 0;   \/* \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0441\u0435\u0442\u0438 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e - \u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0447\u0430\u0449\u0435 \u0432\u0441\u0435\u0433\u043e *\/   if (CHECK_CFG_STR(Network.LanIpAddress) || CHECK_CFG_STR(Network.LanNetmask))     return 1;    for(i = 0; i &lt; MAX_MODEM_IDX; i++)   {     if (CHECK_CFG_INT(Modems.Modem[i].Proto) || CHECK_CFG_INT(Modems.Modem[i].MTU) ||       CHECK_CFG_STR(Modems.Modem[i].Username) || CHECK_CFG_STR(Modems.Modem[i].Password) ||       CHECK_CFG_STR(Modems.Modem[i].Number) || CHECK_CFG_STR(Modems.Modem[i].AdditionalParams) ||       CHECK_CFG_STR(Modems.Modem[i].PIN) || CHECK_CFG_STR(Modems.Modem[i].MRU) ||        CHECK_CFG_STR(Modems.Modem[i].PppoeIdle) || CHECK_CFG_STR(Modems.Modem[i].USBPort) ||       CHECK_CFG_STR(Reservation.Prefer) || CHECK_CFG_STR(Modems.Modem[i].PppoeConnectType) ||        CHECK_CFG_INT(Modems.Mode) || CHECK_CFG_INT(Aggregation.usb1) || CHECK_CFG_INT(Aggregation.usb2))       return 1;   }   return 0; }<\/code><\/pre>\n<p>  \u0415\u0441\u043b\u0438 \u0432\u044b \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442\u0435 \u0441 \u0442\u0440\u0435\u043a\u0435\u0440\u0430\u043c\u0438 (\u0432\u0440\u043e\u0434\u0435 <a href=\"https:\/\/ru.wikipedia.org\/wiki\/Redmine\">RedMine<\/a>), \u0442\u043e \u043f\u0440\u0438 \u0432\u043d\u0435\u0441\u0435\u043d\u0438\u0438 \u043f\u0440\u0430\u0432\u043e\u043a \u0432 \u043a\u043e\u0434 \u043c\u043e\u0436\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043d\u043e\u043c\u0435\u0440 \u0437\u0430\u0434\u0430\u0447\u0438, \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u044d\u0442\u0438 \u043f\u0440\u0430\u0432\u043a\u0438 \u0431\u044b\u043b\u0438 \u0432\u043d\u0435\u0441\u0435\u043d\u044b. \u0415\u0441\u043b\u0438 \u0443 \u043a\u043e\u0433\u043e-\u0442\u043e \u043f\u0440\u0438 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435 \u043a\u043e\u0434\u0430 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u0435\u0442 \u0432\u043e\u043f\u0440\u043e\u0441 \u0430-\u043b\u044f \u00ab\u0417\u0430\u0447\u0435\u043c \u0442\u0443\u0442 \u044d\u0442\u043e\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b?\u00bb, \u0435\u043c\u0443 \u043d\u0435 \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u0434\u0430\u043b\u0435\u043a\u043e \u0445\u043e\u0434\u0438\u0442\u044c. \u0412 \u043d\u0430\u0448\u0435\u0439 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 \u0435\u0449\u0435 \u043f\u0438\u0448\u0443\u0442 \u0444\u0430\u043c\u0438\u043b\u0438\u044e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u0430, \u0447\u0442\u043e\u0431\u044b \u0435\u0441\u043b\u0438 \u0447\u0442\u043e \u0437\u043d\u0430\u0442\u044c, \u043a \u043a\u043e\u043c\u0443 \u0438\u0434\u0442\u0438 \u0441 \u0440\u0430\u0441\u0441\u043f\u0440\u043e\u0441\u0430\u043c\u0438.  <\/p>\n<blockquote><p>\/* Muraviyov: #66770 *\/<\/p><\/blockquote>\n<\/li>\n<\/ul>\n<hr\/>\n<p><i>P.S. \u0414\u043b\u044f \u0442\u0435\u0445 \u043a\u0442\u043e \u0443\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u0443: \u0442\u0430\u043a \u0436\u0435 \u043d\u0435 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0437\u0430\u0431\u044b\u0432\u0430\u0442\u044c, \u0447\u0442\u043e \u0432 \u043a\u0430\u0436\u0434\u043e\u0439 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438, \u043a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0441\u0432\u043e\u0439 Code Style, \u0438 \u0435\u043c\u0443 \u043d\u0443\u0436\u043d\u043e \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c. \u0412 \u043f\u0440\u043e\u0442\u0438\u0432\u043d\u043e\u043c \u0441\u0443\u043b\u0443\u0447\u0430\u0435 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043a\u0430\u043a \u043c\u0438\u043d\u0438\u043c\u0443\u043c \u0443\u043a\u043e\u0440\u0438\u0437\u043d\u0435\u043d\u043d\u044b\u0435 \u0432\u0437\u0433\u043b\u044f\u0434\u044b \u0442\u043e\u0432\u0430\u0440\u0438\u0449\u0435\u0439-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0432 \u0438\u043b\u0438 \u0432\u0442\u044b\u043a \u043e\u0442 \u043d\u0430\u0447\u0430\u043b\u044c\u0441\u0442\u0432\u0430.<\/i><\/p>\n<p>  <\/p>\n<h2> \u041f\u0440\u0430\u043a\u0442\u0438\u043a\u0430 II: \u041e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u0443\u0439\u0442\u0435 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0432\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 <\/h2>\n<p>  \u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0444\u0430\u0439\u043b\u043e\u0432 \u2014 \u0438\u043c\u0435\u0435\u0442 \u0441\u043c\u044b\u0441\u043b \u0445\u043e\u0440\u043e\u0448\u043e \u043f\u043e\u0434\u0443\u043c\u0430\u0442\u044c \u043d\u0430\u0434 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043e\u0439 \u043f\u0440\u043e\u0435\u043a\u0442\u0430.<br \/>  \u041a\u0430\u0436\u0434\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 \u0443\u043d\u0438\u043a\u0430\u043b\u0435\u043d, \u043d\u043e, \u0442\u0435\u043c \u043d\u0435 \u043c\u0435\u043d\u0435\u0435, \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0440\u044f\u0434 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u043c\u043e\u0433\u0443\u0442 \u0443\u0434\u043e\u0431\u043d\u043e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0435\u043a\u0442:<\/p>\n<ol>\n<li><b>\u041d\u0430\u0437\u044b\u0432\u0430\u0439\u0442\u0435 \u0444\u0430\u0439\u043b\u044b \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u0432\u0441\u0435\u043c \u0431\u044b\u043b\u043e \u044f\u0441\u043d\u043e, \u043a\u0430\u043a\u043e\u0439 \u0444\u0430\u0439\u043b \u0437\u0430 \u0447\u0442\u043e \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442.<\/b><br \/>  \u041d\u0435 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043d\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0444\u0430\u0439\u043b\u044b file1.c, mySUPER_COOL_header.h \u0438 \u0442.\u0434. <br \/>  main.c \u2014 \u0434\u043b\u044f \u0444\u0430\u0439\u043b\u0430 \u0441 \u0442\u043e\u0447\u043a\u043e\u0439 \u0432\u0445\u043e\u0434\u0430, graph_const.h \u2014 \u0434\u043b\u044f \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u0447\u043d\u0438\u043a\u0430 \u0441 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u043c\u0438 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0430\u043c\u0438 \u0431\u0443\u0434\u0435\u0442 \u0432 \u0441\u0430\u043c\u044b\u0439 \u0440\u0430\u0437.\n<\/li>\n<li><b>\u0425\u0440\u0430\u043d\u0438\u0442\u0435 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u0447\u043d\u0438\u043a\u0438 \u0432 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 include.<\/b><br \/>  \u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043f\u0440\u0438\u043c\u0435\u0440:<br \/> \n<ul>\n<li>project\/<br \/> \n<ul>\n<li>common.c<\/li>\n<li>common.h<\/li>\n<li>main.c<\/li>\n<li>network.h<\/li>\n<li>networking.c<\/li>\n<li>networking_v6.c<\/li>\n<li>packet.c<\/li>\n<li>packet.h<\/li>\n<li>Makefile<\/li>\n<\/ul>\n<p>   <\/li>\n<\/ul>\n<p>\u0412 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435, \u043f\u0440\u043e\u0435\u043a\u0442 \u043a\u0430\u043a \u043f\u0440\u043e\u0435\u043a\u0442. \u041d\u043e \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043d\u0430 \u0441\u0435\u043a\u0443\u043d\u0434\u0443 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u043c, \u0447\u0442\u043e \u0443 \u043d\u0430\u0441 \u043d\u0435 9 \u0444\u0430\u0439\u043b\u043e\u0432, \u0430, \u0441\u043a\u0430\u0436\u0435\u043c, 39. \u0427\u0442\u043e-\u0442\u043e \u0431\u044b\u0441\u0442\u0440\u043e \u043d\u0430\u0439\u0442\u0438 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430\u0442\u0438\u0447\u043d\u043e. \u0414\u0430, \u0432 \u043a\u043e\u043d\u0441\u043e\u043b\u0438 \u2014 \u043f\u0430\u0440\u0430 \u043f\u0443\u0441\u0442\u044f\u043a\u043e\u0432, \u043d\u043e \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u0447\u0435\u043b\u043e\u0432\u0435\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441 GUI, \u0438\u043b\u0438, \u0447\u0442\u043e \u0435\u0449\u0435 \u0445\u0443\u0436\u0435, \u043f\u044b\u0442\u0430\u0435\u0442\u0441\u044f \u043d\u0430\u0439\u0442\u0438 \u0444\u0430\u0439\u043b \u0432 Github\/Gitlab\/Bitbucket?<br \/>  \u0415\u0441\u043b\u0438 \u043e\u043d \u0442\u043e\u0447\u043d\u043e \u043d\u0435 \u0437\u043d\u0430\u0435\u0442, \u043a\u0430\u043a\u043e\u0439 \u0444\u0430\u0439\u043b \u0435\u043c\u0443 \u043d\u0443\u0436\u0435\u043d? \u041c\u043e\u0436\u043d\u043e \u0441\u0431\u0435\u0440\u0435\u0447\u044c \u043c\u043d\u043e\u0433\u043e \u043d\u0435\u0440\u0432\u043e\u0432, \u0435\u0441\u043b\u0438 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0442\u0430\u043a:  <\/p>\n<ul>\n<li>project\/<br \/> \n<ul>\n<li>include\/<br \/> \n<ul>\n<li>common.h<\/li>\n<li>network.h<\/li>\n<li>packet.h<\/li>\n<\/ul>\n<p>   <\/li>\n<li>common.c<\/li>\n<li>main.c<\/li>\n<li>networking.c<\/li>\n<li>networking_v6.c<\/li>\n<li>packet.c<\/li>\n<li>Makefile<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>  \u041d\u0435 \u0437\u0430\u0431\u044b\u0432\u0430\u0435\u043c, \u0447\u0442\u043e \u043f\u0443\u0442\u044c \u043a \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 include \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0432 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u0445 \u0441\u0431\u043e\u0440\u043a\u0438. \u0412\u043e\u0442 \u043f\u0440\u0438\u043c\u0435\u0440\u0447\u0438\u043a \u0434\u043b\u044f \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e Makefile (include \u0432 \u0442\u043e\u0439 \u0436\u0435 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438, \u0447\u0442\u043e \u0438 Makefile):  <\/p>\n<pre><code>@$(CC) $(OBJS) -o networkd -L$(ROMFS)\/lib -linteraction -Wall -lpthread -I .\/include<\/code><\/pre>\n<p>  <\/li>\n<li><b>\u041b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438 \u0433\u0440\u0443\u043f\u043f\u0438\u0440\u0443\u0439\u0442\u0435 .c \u0444\u0430\u0439\u043b\u044b \u0432 \u043f\u0430\u043f\u043a\u0438. <\/b><br \/>  \u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0438\u0433\u0440\u0430, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0435\u0441\u0442\u044c \u0444\u0430\u0439\u043b\u044b, \u043e\u0442\u0432\u0435\u0447\u0430\u044e\u0449\u0438\u0435 \u0437\u0430 \u0434\u0432\u0438\u0436\u043e\u043a\/\u0437\u0432\u0443\u043a\/\u0433\u0440\u0430\u0444\u0438\u043a\u0443 \u2014 \u0431\u0443\u0434\u0435\u0442 \u0443\u0434\u043e\u0431\u043d\u043e \u0440\u0430\u0441\u043a\u0438\u0434\u0430\u0442\u044c \u0438\u0445 \u043f\u043e \u043f\u0430\u043f\u043a\u0430\u043c. \u0417\u0432\u0443\u043a, \u0433\u0440\u0430\u0444\u0438\u043a\u0443 \u0438 \u0434\u0432\u0438\u0436\u043e\u043a \u2014 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u0434\u0440\u0443\u0433 \u043e\u0442 \u0434\u0440\u0443\u0433\u0430.\n<\/li>\n<li>\u0414\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043a \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u043c\u0443 \u043f\u0443\u043d\u043a\u0442\u0443 \u2014 <b>\u0444\u0430\u0439\u043b\u044b \u0441\u0431\u043e\u0440\u043a\u0438 \u043a\u0440\u0443\u0442\u043e \u0440\u0430\u0437\u043c\u0435\u0449\u0430\u0442\u044c \u0432 \u043a\u0430\u0436\u0434\u043e\u0439 \u0438\u0437 \u0442\u0430\u043a\u0438\u0445 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0439<\/b>, \u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c \u0438\u0445 \u0438\u0437 \u0444\u0430\u0439\u043b\u0430 \u0441\u0431\u043e\u0440\u043a\u0438 \u0432 \u043a\u043e\u0440\u043d\u0435\u0432\u043e\u0439 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438. \u0412 \u0442\u0430\u043a\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 Makefile \u0432 \u043a\u043e\u0440\u043d\u0435\u0432\u043e\u0439 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u0430\u043a:<br \/> \n<pre><code>.PHONY clean build build:     cd sound\/ && make clean && make      cd graphics\/ && make clean && make     cd engine\/ && make clean && make sound:     cd sound\/ && make clean && make graphics:     cd graphics\/ && make clean && make engine:     cd engine\/ && make clean && make clean:     cd sound\/ && make clean     cd engine\/ && make clean     cd greaphics\/ && make clean<\/code><\/pre>\n<\/li>\n<\/ol>\n<h2> \u041f\u0440\u0430\u043a\u0442\u0438\u043a\u0430 III: \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u0432\u0440\u0430\u043f\u043f\u0435\u0440-\u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u044b\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 <\/h2>\n<p>  \u0412\u0440\u0430\u043f\u043f\u0435\u0440-\u0444\u0443\u043d\u043a\u0446\u0438\u044f (\u0444\u0443\u043d\u043a\u0446\u0438\u044f-\u043e\u0431\u0435\u0440\u0442\u043a\u0430) \u0432 \u044f\u0437\u044b\u043a\u0435 \u0421\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0441\u043e \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u043e\u0439 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u043e\u0439 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f. \u041a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e, \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 \u0432 \u0440\u0430\u0431\u043e\u0442\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432\u0430\u043c \u043e\u0431 \u044d\u0442\u043e\u043c \u0441\u043a\u0430\u0436\u0435\u0442, \u0430 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f errno \u043f\u0440\u0438\u043c\u0435\u0442 \u0432 \u0441\u0435\u0431\u044f \u043a\u043e\u0434 \u043e\u0448\u0438\u0431\u043a\u0438.<\/p>\n<p>  \u0415\u0441\u043b\u0438 \u0432\u044b \u043f\u0438\u0448\u0438\u0442\u0435 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 (\u0430 \u0441\u0435\u0439\u0447\u0430\u0441 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c \u043d\u0430 \u0441\u0438 \u2014 \u0438\u043c\u0435\u043d\u043d\u043e \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b), \u0442\u043e \u043d\u0435\u0442 \u043d\u0438\u0447\u0435\u0433\u043e \u0445\u0443\u0436\u0435, \u0447\u0435\u043c \u00ab\u043d\u0435\u043c\u043e\u0435\u00bb \u043f\u0430\u0434\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b. \u041f\u043e-\u0445\u043e\u0440\u043e\u0448\u0435\u043c\u0443, \u043e\u043d\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u043a\u0440\u0430\u0441\u0438\u0432\u043e \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u044c\u0441\u044f, \u043d\u0430\u043f\u043e\u0441\u043b\u0435\u0434\u043e\u043a \u0441\u043a\u0430\u0437\u0430\u0432, \u0447\u0442\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u043f\u043e\u0448\u043b\u043e \u043d\u0435 \u043f\u043e \u043f\u043b\u0430\u043d\u0443.<\/p>\n<p>  \u041d\u043e \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043e\u0442 \u043a\u0430\u0436\u0434\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0432 \u043a\u043e\u0434\u0435 \u2014 \u0442\u0430\u043a\u043e\u0435 \u0441\u0435\u0431\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435. \u0422\u0443\u0442 \u0436\u0435 \u0443\u043f\u0430\u0434\u0435\u0442 \u0447\u0438\u0442\u0430\u0435\u043c\u043e\u0441\u0442\u044c, \u0438 \u043e\u0431\u044a\u0435\u043c (+ \u0438\u0437\u0431\u044b\u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c) \u043a\u043e\u0434\u0430 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u0441\u044f \u0432 \u043f\u0430\u0440\u0443 \u0440\u0430\u0437.<\/p>\n<p>  \u0422\u0443\u0442 \u0438 \u043f\u043e\u043c\u043e\u0433\u0430\u044e\u0442 \u0432\u0440\u0430\u043f\u043f\u0435\u0440\u044b. \u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043f\u0435\u0440\u0432\u044b\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 \u2014 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u0439 \u043a\u043e\u0434 \u0431\u0435\u0437 \u0432\u0440\u0430\u043f\u043f\u0435\u0440\u043e\u0432:  <\/p>\n<pre><code class=\"cpp\">int sock_one = 0, sock_two = 0, sock_three = 0; \/* \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f \u0438\u043c\u0435\u0435\u0442 \u0431\u043e\u043b\u044c\u0448\u0438\u0439 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442, \u0447\u0435\u043c \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f \u043f\u0440\u0438\u0441\u0432\u0430\u0438\u0432\u0430\u043d\u0438\u044f,   * \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u0438\u0441\u0432\u0430\u0438\u0432\u0430\u043d\u0438\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0432 \u0441\u043a\u043e\u0431\u043a\u0430\u0445  *\/ if ((socket_one = socket(AF_INET , SOCK_STREAM , 0)) &lt;= 0) {      perror(&quot;socket one&quot;);     exit(EXIT_ERROR_CODE); } if ((socket_two = socket(AF_INET , SOCK_DGRAM , 0)) &lt;= 0) {      perror(&quot;socket two&quot;);     exit(EXIT_ERROR_CODE); } if ((socket_three = socket(PF_INET , SOCK_RAW , 0)) &lt;= 0) {      perror(&quot;socket three&quot;);     exit(EXIT_ERROR_CODE); } <\/code><\/pre>\n<p>  \u041d\u0443, \u0442\u0430\u043a\u043e\u0435 \u0441\u0435\u0431\u0435, \u043d\u0435 \u043f\u0440\u0430\u0432\u0434\u0430 \u043b\u0438? \u0422\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0441 \u043e\u0431\u0435\u0440\u0442\u043a\u0430\u043c\u0438.  <\/p>\n<pre><code class=\"cpp\">\/* \u0413\u0434\u0435-\u0442\u043e \u0432 \u043a\u043e\u0434\u0435... *\/ int Socket(int domain, int type, int proto) {     int desk = socket(domain, type, proto);     if (desk &lt;= 0) {         perror(&quot;socket&quot;);         exit(EXIT_ERROR_CODE);     }     return desk; } \/* ......... n \u0441\u0442\u0440\u043e\u0447\u0435\u043a \u0441\u043f\u0443\u0441\u0442\u044f - \u043d\u0430\u0448 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 ......... *\/ int socket_one = 0, socket_two = 0, soket_three = 0; socket_one = Socket(AF_INET , SOCK_STREAM , 0); socket_two = Socket(AF_INET , SOCK_DGRAM , 0); socket_three = Socket(PF_INET , SOCK_RAW , 0);<\/code><\/pre>\n<p>  \u041a\u0430\u043a \u0432\u0438\u0434\u0438\u0442\u0435, \u043a\u043e\u0434 \u043f\u043e-\u043f\u0440\u0435\u0436\u043d\u0435\u043c\u0443 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u0435\u043d (\u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u00ab\u043d\u0435\u043c\u043e\u0433\u043e\u00bb \u043f\u0430\u0434\u0435\u043d\u0438\u044f), \u043d\u043e \u0442\u0435\u043f\u0435\u0440\u044c \u0435\u0433\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u043a\u043e\u043c\u043f\u0430\u043a\u0442\u043d\u0435\u0435.<br \/>  \u042f \u043d\u0430\u0437\u044b\u0432\u0430\u044e \u043e\u0431\u0435\u0440\u0442\u043a\u0438 \u0438\u043c\u0435\u043d\u0435\u043c \u0441\u0430\u043c\u0438\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439, \u043d\u043e \u0441 \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0431\u0443\u043a\u0432\u044b. \u041a\u0430\u0436\u0434\u044b\u0439 \u0441\u0430\u043c \u0432\u043e\u043b\u0435\u043d \u0432\u044b\u0431\u0440\u0430\u0442\u044c, \u043a\u0430\u043a \u0438\u0445 \u043e\u0444\u043e\u0440\u043c\u043b\u044f\u0442\u044c.<\/p>\n<p>  \u0412 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u043e\u0431\u0435\u0440\u0442\u043e\u043a \u0435\u0441\u0442\u044c \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043c\u0438\u043d\u0443\u0441, \u043a\u043e\u0442\u043e\u0440\u044b\u0439, \u0435\u0441\u043b\u0438 \u0437\u0430\u0445\u043e\u0442\u0435\u0442\u044c, \u043c\u043e\u0436\u043d\u043e \u0440\u0435\u0448\u0438\u0442\u044c \u043a\u043e\u0441\u0442\u044b\u043b\u0435\u043c. \u0410 \u0447\u0442\u043e \u044d\u0442\u043e \u0437\u0430 \u043c\u0438\u043d\u0443\u0441 \u2014 \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u0445 \ud83d\ude42<\/p>\n<p>  <\/p>\n<h2> \u041f\u0440\u0430\u043a\u0442\u0438\u043a\u0430 IV: \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 keywords \u043a\u0430\u043a \u043f\u0440\u043e\u0444\u0438 <\/h2>\n<p>  \u0425\u043e\u0440\u043e\u0448\u0435\u0435 \u0437\u043d\u0430\u043d\u0438\u0435 keywords \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u043b\u0438\u0448\u043d\u0438\u043c. \u0414\u0430, \u0438 \u0431\u0435\u0437 \u043d\u0438\u0445 \u0432\u0430\u0448 \u043a\u043e\u0434 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c, \u043d\u0435 \u0441\u043f\u043e\u0440\u044e. \u041d\u043e \u043a\u043e\u0433\u0434\u0430 \u0440\u0435\u0447\u044c \u0437\u0430\u0439\u0434\u0435\u0442 \u043e\u0431 \u044d\u043a\u043e\u043d\u043e\u043c\u0438\u0438 \u043c\u0435\u0441\u0442\u0430, \u0431\u044b\u0441\u0442\u0440\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0438 \u0438 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u2014 \u044d\u0442\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u043e, \u0447\u0435\u0433\u043e \u0432\u0430\u043c \u0431\u0443\u0434\u0435\u0442 \u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u0442\u044c. <\/p>\n<p>  \u041a \u0442\u043e\u043c\u0443 \u0436\u0435, \u043c\u0430\u043b\u043e \u043a\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0445\u0432\u0430\u0441\u0442\u0430\u0442\u044c\u0441\u044f \u0445\u043e\u0440\u043e\u0448\u0438\u043c \u0437\u043d\u0430\u043d\u0438\u0435\u043c \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0445 \u0441\u043b\u043e\u0432, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0438\u0445 \u043f\u043e\u0432\u0441\u0435\u0434\u043d\u0435\u0432\u043d\u043e\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0448\u0430\u043d\u0441\u043e\u043c \u0431\u043b\u0435\u0441\u043d\u0443\u0442\u044c \u0437\u043d\u0430\u043d\u0438\u044f\u043c\u0438 \u043f\u0435\u0440\u0435\u0434 \u043a\u043e\u043b\u043b\u0435\u0433\u0430\u043c\u0438. \u041e\u0434\u043d\u0430\u043a\u043e, \u043d\u0435 \u043d\u0430\u0434\u043e \u0431\u0435\u0437\u0434\u0443\u043c\u043d\u043e \u043f\u0438\u0445\u0430\u0442\u044c \u043a\u0435\u0439\u0432\u043e\u0440\u0434\u044b \u0432\u0441\u044e\u0434\u0443, \u043a\u0443\u0434\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u043c\u043e\u0436\u043d\u043e. \u0412\u043e\u0442 \u0432\u0430\u043c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0444\u0438\u0447:<\/p>\n<ul>\n<li><i>register<\/i> \u2014 \u0434\u0430\u0435\u0442 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0443 \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u0435 \u043f\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0445 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430, \u0430 \u043d\u0435 \u0432 \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u0430 register \u043f\u0440\u0438 \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439-\u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u0446\u0438\u043a\u043b\u0430 \u0441 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u043c \u0442\u0435\u043b\u043e\u043c \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0432\u044b\u0441\u0438\u0442\u044c \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u044b \u0432\u0441\u0435\u0433\u043e \u0446\u0438\u043a\u043b\u0430 \u0432 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437. <br \/> \n<pre><code class=\"cpp\">register byte i = 0; for (i; i &lt; 256; i++)     check_value(i);<\/code><\/pre>\n<p>  <\/li>\n<li><i>restrict<\/i> \u2014 \u043f\u0440\u0438 \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u0438 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044f \u0434\u0430\u0435\u0442 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0443 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u044e (\u0432\u044b, \u043a\u0430\u043a \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442, \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u0442\u0435), \u0447\u0442\u043e \u043d\u0438 \u043e\u0434\u0438\u043d \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043d\u0430 \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u043f\u0430\u043c\u044f\u0442\u0438, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0446\u0435\u043b\u0435\u0432\u043e\u0439 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c. \u041f\u0440\u043e\u0444\u0438\u0442 \u044d\u0442\u043e\u0433\u043e \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u0430 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0443 \u043d\u0435 \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c, \u043d\u0435 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043b\u0438 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u0435\u0449\u0435 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u0446\u0435\u043b\u0435\u0432\u043e\u0439 \u0431\u043b\u043e\u043a \u043f\u0430\u043c\u044f\u0442\u0438. \u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0432\u043d\u0443\u0442\u0440\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0435\u0439 \u043e\u0434\u043d\u043e\u0433\u043e \u0442\u0438\u043f\u0430 \u2014 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u043e\u043d \u0432\u0430\u043c \u043f\u0440\u0438\u0433\u043e\u0434\u0438\u0442\u0441\u044f.<br \/> \n<pre><code class=\"cpp\">void updatePtrs(size_t *restrict ptrA, size_t *restrict ptrB, size_t *restrict val); <\/code><\/pre>\n<p>  <\/li>\n<li><i>volatile<\/i> \u2014 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0443, \u0447\u0442\u043e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0430 \u043d\u0435\u044f\u0432\u043d\u044b\u043c \u0434\u043b\u044f \u043d\u0435\u0433\u043e \u043e\u0431\u0440\u0430\u0437\u043e\u043c. \u0414\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u043f\u043e\u043c\u0435\u0442\u0438\u0442 \u043a\u043e\u0434, \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u0439 \u043e\u0442 \u0432\u043e\u043b\u0430\u0442\u0438\u043b\u044c\u043d\u043e\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439, \u043a\u0430\u043a dead code (\u043a\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d), \u043e\u043d \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0431\u0440\u043e\u0448\u0435\u043d, \u0438 \u0432 \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0441\u044f \u0432 \u043f\u043e\u043b\u043d\u043e\u043c \u043e\u0431\u044a\u0435\u043c\u0435. <br \/> \n<pre><code class=\"cpp\">int var = 1; if (!var)             \/* \u042d\u0442\u0438 2 \u0441\u0442\u0440\u043e\u0447\u043a\u0438 \u0431\u0443\u0434\u0443\u0442 \u043e\u0442\u0431\u0440\u043e\u0448\u0435\u043d\u044b \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u043e\u043c *\/     dosmthng();     volatile int var = 1; if (!var)            \/* \u0410 \u0432\u043e\u0442 \u044d\u0442\u0438  - \u043d\u0435\u0442 *\/     dosmthng();  <\/code><\/pre>\n<\/li>\n<\/ul>\n<p>  \u0418 \u044d\u0442\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u0435\u0440\u0448\u0438\u043d\u0430 \u0430\u0439\u0441\u0431\u0435\u0440\u0433\u0430. \u0420\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u043e\u0432 \u0438 \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0445 \u0441\u043b\u043e\u0432 \u2014 <a href=\"http:\/\/en.cppreference.com\/w\/c\/keyword\">\u043a\u0443\u0447\u0430<\/a>. <\/p>\n<p>  <\/p>\n<h2> \u041f\u0440\u0430\u043a\u0442\u0438\u043a\u0430 V: \u041d\u0435 \u0434\u043e\u0432\u0435\u0440\u044f\u0439\u0442\u0435 \u0441\u0435\u0431\u0435. \u0414\u043e\u0432\u0435\u0440\u044f\u0439\u0442\u0435 valgrind. <\/h2>\n<p>  \u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435 \u0435\u0441\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0430 \u0441\u043e \u0441\u0442\u0440\u043e\u043a\u0430\u043c\u0438, \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043f\u0430\u043c\u044f\u0442\u0438 \u0438 \u0432\u0441\u0435, \u0433\u0434\u0435 \u0437\u0430\u043c\u0435\u0448\u0430\u043d\u044b \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0438, \u0442\u043e \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u043b\u0438\u0448\u043d\u0438\u043c \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0441\u0435\u0431\u044f.<\/p>\n<p>  <a href=\"https:\/\/ru.wikipedia.org\/wiki\/Valgrind\">Valgrind<\/a> \u2014 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0430 \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043c\u043e\u0447\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u0443 \u0432\u044b\u044f\u0432\u0438\u0442\u044c \u0443\u0442\u0435\u0447\u043a\u0438 \u043f\u0430\u043c\u044f\u0442\u0438 \u0438 \u043e\u0448\u0438\u0431\u043a\u0438 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430. \u041d\u0435 \u0431\u0443\u0434\u0443 \u0432\u0434\u0430\u0432\u0430\u0442\u044c\u0441\u044f \u0432 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0438, \u0441\u043a\u0430\u0436\u0443 \u043b\u0438\u0448\u044c, \u0447\u0442\u043e \u0434\u0430\u0436\u0435 \u0432 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430\u0445 \u043e\u043d \u043d\u0435\u0440\u0435\u0434\u043a\u043e \u043d\u0430\u0445\u043e\u0434\u0438\u0442 \u043a\u043e\u0441\u044f\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u043e\u0432\u0441\u0435\u043c \u043d\u0435 \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u044b \u0434\u043b\u044f \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u043e\u0432, \u043d\u043e, \u0442\u0435\u043c \u043d\u0435 \u043c\u0435\u043d\u0435\u0435, \u0432 \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438 \u043c\u043e\u0433\u0443\u0442 \u043f\u043e\u0432\u043b\u0435\u0447\u044c \u0437\u0430 \u0441\u043e\u0431\u043e\u0439 \u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b. \u0417\u0430 \u0432\u0441\u0435\u043c \u043d\u0435 \u0443\u0441\u043b\u0435\u0434\u0438\u0448\u044c. <br \/>  + \u0443 \u043d\u0435\u0435 \u0435\u0441\u0442\u044c \u0438 \u0434\u0440\u0443\u0433\u043e\u0439 \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b.<\/p>\n<p>  \u0411\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u043e \u043d\u0435\u043c \u043c\u043e\u0436\u043d\u043e \u0443\u0437\u043d\u0430\u0442\u044c <a href=\"https:\/\/www.opennet.ru\/base\/dev\/valgrind_memory.txt.html\">\u0442\u0443\u0442<\/a>.<\/p>\n<p>  <\/p>\n<h2> \u041f\u0440\u0430\u043a\u0442\u0438\u043a\u0430 VI: \u041f\u043e\u043c\u043e\u0433\u0430\u0439\u0442\u0435 \u0442\u0435\u043c, \u043a\u0442\u043e \u0445\u043e\u0447\u0435\u0442 \u0443\u043b\u0443\u0447\u0448\u0438\u0442\u044c \u0432\u0430\u0448 \u0441\u043e\u0444\u0442 <\/h2>\n<p>  \u0414\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0437 \u044f \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u043b \u043c\u043e\u043c\u0435\u043d\u0442\u044b \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438, \u043a\u043e\u0433\u0434\u0430 \u0442\u0438\u043f \u0437\u0430\u0434\u0430\u0447\u0438 feature \u0432 \u0442\u0440\u0435\u043a\u0435\u0440\u0435 \u0440\u044f\u0434\u043e\u043c \u0441 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c \u00ab\u043f\u0440\u043e\u0431\u043b\u0435\u043c\u043d\u043e\u0439\u00bb \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0432\u044b\u0437\u044b\u0432\u0430\u043b \u0441\u043e\u0437\u043d\u0430\u043d\u0438\u0435 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u043d\u0430 \u043d\u043e\u0441\u0443 \u0442\u043e\u043d\u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u044b.<\/p>\n<p>  \u041f\u0440\u0438\u043c\u0435\u0440 \u0431\u0443\u0434\u0435\u0442 \u0432\u0437\u044f\u0442 \u0438\u0437 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u043e\u0432 busybox 1.21. \u0414\u043b\u044f \u0442\u0435\u0445 \u043a\u0442\u043e \u043d\u0435 \u0437\u043d\u0430\u0435\u0442, \u0447\u0442\u043e \u0442\u0430\u043a\u043e\u0435 busybox, \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c <a href=\"https:\/\/ru.wikipedia.org\/wiki\/BusyBox\">\u044d\u0442\u0443 \u0432\u0438\u043a\u0438-\u0441\u0442\u0430\u0442\u044c\u044e<\/a>.<\/p>\n<p>  \u0412 \u0441\u043e\u0441\u0442\u0430\u0432 busybox \u0432\u0445\u043e\u0434\u0438\u0442 \u043a\u0440\u043e\u0448\u0435\u0447\u043d\u044b\u0439 <a href=\"https:\/\/ru.wikipedia.org\/wiki\/DHCP\">DHCP<\/a>-\u043a\u043b\u0438\u0435\u043d\u0442 \u2014 udhcp. \u0412 \u043e\u0434\u0438\u043d \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u044b\u0439 \u0434\u0435\u043d\u044c \u043f\u0435\u0440\u0435\u0434 \u043c\u043d\u043e\u0439 \u0432\u0441\u0442\u0430\u043b\u0430 \u0437\u0430\u0434\u0430\u0447\u0430 \u2014 \u0440\u0430\u0441\u0448\u0438\u0440\u0438\u0442\u044c \u0435\u0433\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b, \u0441\u0434\u0435\u043b\u0430\u0432 \u0435\u0433\u043e \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u044b\u043c \u043a \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0435\/\u043f\u0440\u0438\u0435\u043c\u0443 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u0434\u043b\u0438\u043d\u043e\u0439 \u0431\u043e\u043b\u044c\u0448\u0435 576 \u0431\u0430\u0439\u0442. \u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u0430\u0437\u043c\u0435\u0440 DHCP-\u043f\u0430\u043a\u0435\u0442\u0430 \u0432 \u044d\u0442\u043e\u043c \u043a\u043b\u0438\u0435\u043d\u0442\u0435 \u0431\u044b\u043b \u0438\u043c\u0435\u043d\u043d\u043e 576 \u0431\u0430\u0439\u0442 (\u044d\u0442\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442 <a href=\"https:\/\/ru.wikipedia.org\/wiki\/Maximum_transmission_unit\">mtu<\/a> \u0434\u043b\u044f \u0441\u0435\u0442\u0435\u0439 \u043d\u0430 X.25). \u0422\u0430\u043a\u043e\u0439 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0440\u0430\u0437\u043c\u0435\u0440 \u2014 \u043f\u0440\u044f\u043c\u043e\u0435 \u043f\u0440\u043e\u0442\u0438\u0432\u043e\u0440\u0435\u0447\u0438\u0435 RFC \u0441 \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0439 \u0432 \u043d\u0435\u043c 57\u0439 \u043e\u043f\u0446\u0438\u0435\u0439. <\/p>\n<p>  \u041d\u043e \u043d\u0435 \u0431\u0443\u0434\u0435\u043c \u0443\u0433\u043b\u0443\u0431\u043b\u044f\u0442\u044c\u0441\u044f \u0432 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0438, \u043f\u043e\u0447\u0435\u043c\u0443 \u0441\u043e\u0437\u0434\u0430\u0442\u0435\u043b\u0438 busybox \u0442\u0430\u043a \u0441\u043e\u0433\u0440\u0435\u0448\u0438\u043b\u0438, \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0443\u0436\u0435 \u043f\u0440\u0438\u043c\u0435\u0440:  <\/p>\n<pre><code class=\"cpp\">\/* 1\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 *\/ enum { \tIP_UDP_DHCP_SIZE = sizeof(struct ip_udp_dhcp_packet) - CONFIG_UDHCPC_SLACK_FOR_BUGGY_SERVERS, \tUDP_DHCP_SIZE    = sizeof(struct udp_dhcp_packet) - CONFIG_UDHCPC_SLACK_FOR_BUGGY_SERVERS, \tDHCP_SIZE        = sizeof(struct dhcp_packet) - CONFIG_UDHCPC_SLACK_FOR_BUGGY_SERVERS, }; <\/code><\/pre>\n<p>  \u0421\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0441\u0430\u043c\u0438 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u043f\u0430\u043a\u0435\u0442\u043e\u0432:   <\/p>\n<pre><code class=\"cpp\">struct dhcp_packet { \tuint8_t op;      \/* BOOTREQUEST or BOOTREPLY *\/ \tuint8_t htype;   \/* hardware address type. 1 = 10mb ethernet *\/ \tuint8_t hlen;    \/* hardware address length *\/ \tuint8_t hops;    \/* used by relay agents only *\/ \tuint32_t xid;    \/* unique id *\/ \tuint16_t secs;   \/* elapsed since client began acquisition\/renewal *\/ \tuint16_t flags;  \/* only one flag so far: *\/ \tuint32_t ciaddr; \/* client IP (if client is in BOUND, RENEW or REBINDING state) *\/ \tuint32_t yiaddr; \/* 'your' (client) IP address *\/ \t\/* IP address of next server to use in bootstrap, returned in DHCPOFFER, DHCPACK by server *\/ \tuint32_t siaddr_nip; \tuint32_t gateway_nip; \/* relay agent IP address *\/ \tuint8_t chaddr[16];   \/* link-layer client hardware address (MAC) *\/ \tuint8_t sname[64];    \/* server host name (ASCIZ) *\/ \tuint8_t file[128];    \/* boot file name (ASCIZ) *\/ \tuint32_t cookie;      \/* fixed first four option bytes (99,130,83,99 dec) *\/ \tuint8_t options[DHCP_OPTIONS_BUFSIZE + CONFIG_UDHCPC_SLACK_FOR_BUGGY_SERVERS]; } PACKED;  struct ip_udp_dhcp_packet { \tstruct iphdr ip; \tstruct udphdr udp; \tstruct dhcp_packet data; } PACKED;  struct udp_dhcp_packet { \tstruct udphdr udp; \tstruct dhcp_packet data; } PACKED;<\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435.<\/p>\n<h3>\u041f\u0435\u0440\u0432\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442<\/h3>\n<p>\u041a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u044b, \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0430\u044e\u0449\u0438\u0435 \u0440\u0430\u0437\u043c\u0435\u0440 \u043f\u0430\u043a\u0435\u0442\u0430 \u2014 \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u043f\u0440\u0438\u0432\u044f\u0437\u0430\u043d\u044b \u043a sizeof \u043e\u0442 <em>\u043d\u0435\u0438\u0437\u043c\u0435\u043d\u043d\u043e\u0439 \u043f\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0443 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b<\/em> (\u0432 \u043d\u0435\u0439 \u043d\u0435\u0442 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0435\u0439 \u2014 \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0442\u0435\u043a, \u0442\u043e\u043b\u044c\u043a\u043e \u0445\u0430\u0440\u0434\u043a\u043e\u0440). \u041e \u0447\u0435\u043c \u044d\u0442\u043e \u0433\u043e\u0432\u043e\u0440\u0438\u0442? \u0410 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u043c\u044b \u0437\u0430\u0445\u043e\u0442\u0438\u043c \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0440\u0430\u0437\u043c\u0435\u0440 \u043f\u0430\u043a\u0435\u0442\u0430 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0442\u044c\u0441\u044f \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438 (\u0438\u0437 \u0441\u043e\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u044d\u0442\u0438\u043a\u0438 \u0438 \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0430\u043c, \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0430\u043a\u0430\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0438 \u0438\u043c\u0435\u0435\u0442 \u043f\u0440\u0430\u0432\u043e \u043d\u0430 \u0436\u0438\u0437\u043d\u044c), \u043d\u0430\u043c \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f:   <\/p>\n<ol>\n<li> \u0418\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 dhcp-\u043f\u0430\u043a\u0435\u0442\u0430, \u0431\u0443\u0444\u0444\u0435\u0440 \u043e\u043f\u0446\u0438\u0439 (\u0438\u043c\u0435\u043d\u043d\u043e \u043e\u043d \u0432\u043b\u0438\u044f\u0435\u0442 \u043d\u0430 \u0440\u0430\u0437\u043c\u0435\u0440) \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0435\u043c, \u0447\u0442\u043e\u0431\u044b \u0432 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u043c \u0432\u044b\u0434\u0435\u043b\u044f\u0442\u044c \u043f\u043e\u0434 \u043d\u0435\u0433\u043e \u043f\u0430\u043c\u044f\u0442\u044c. <\/li>\n<li> \u041e\u0442\u043a\u0430\u0437\u0430\u0442\u044c\u0441\u044f \u043e\u0442 \u044d\u0442\u0438\u0445 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442 \u0438 \u0432\u044b\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c \u0440\u0430\u0437\u043c\u0435\u0440 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u043f\u0440\u044f\u043c\u043e \u0432 \u043a\u043e\u0434\u0435. \u0410 \u043c\u0435\u0441\u0442, \u0433\u0434\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u044d\u0442\u0438 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u044b \u043e\u0445 \u043a\u0430\u043a \u043d\u0435\u043c\u0430\u043b\u043e.<\/li>\n<li> \u0412\u043e \u0432\u0441\u0435\u0445 \u043c\u0435\u0441\u0442\u0430\u0445, \u0433\u0434\u0435 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442\u0441\u044f dhcp-\u043f\u0430\u043a\u0435\u0442, \u043d\u0430\u043c \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u0434\u0435\u043b\u0430\u0442\u044c \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435 \u043e\u0441\u0432\u043e\u0431\u043e\u0436\u0434\u0435\u043d\u0438\u0435 \u043f\u0430\u043c\u044f\u0442\u0438. \u0410 \u043c\u0435\u0441\u0442 \u044d\u0442\u0438\u0445 \u043c\u043d\u043e\u0433\u043e, \u043a\u043e\u0434 busybox&#8217;\u0430 \u043e\u0442\u043d\u044e\u0434\u044c \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e\u0439, \u0438 \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0433\u0440\u0430\u043c\u043e\u0442\u043d\u043e \u044d\u0442\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u0443\u0431\u0438\u0442\u044c \u043a\u0443\u0447\u0443 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e\u0431\u044b \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f, \u0433\u0434\u0435 \u0438 \u043a\u0430\u043a \u044d\u0442\u0438 \u043f\u0430\u043a\u0435\u0442\u044b \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u044e\u0442\u0441\u044f, \u0438 \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0434\u043e\u043b\u0433\u043e \u0436\u0438\u0432\u0443\u0442.<\/li>\n<\/ol>\n<p>  \u041d\u043e, \u0437\u043d\u0430\u0435\u0442\u0435, \u044d\u0442\u043e \u0442\u0430\u043a, \u0446\u0432\u0435\u0442\u043e\u0447\u043a\u0438. \u041f\u043e\u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u044f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0431\u0435\u0441\u043f\u0435\u0447\u043d\u043e\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438. \u0422\u0435\u043f\u0435\u0440\u044c \u044f\u0433\u043e\u0434\u043a\u0438.<\/p>\n<p>  \u0412 \u0442\u043e\u043c \u0436\u0435 \u0444\u0430\u0439\u043b\u0435 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0442\u0430\u043a\u0438\u0435 \u0441\u0442\u0440\u043e\u043a\u0438:  <\/p>\n<pre><code class=\"cpp\">\/* 2\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 *\/ \/* Let's see whether compiler understood us right *\/ struct BUG_bad_sizeof_struct_ip_udp_dhcp_packet { \tchar c[IP_UDP_DHCP_SIZE == 576 ? 1 : -1]; };<\/code><\/pre>\n<p>  <\/p>\n<h3>\u0412\u0442\u043e\u0440\u043e\u0439 \u043c\u043e\u043c\u0435\u043d\u0442:<\/h3>\n<pre><code class=\"cpp\">char c[IP_UDP_DHCP_SIZE == 576 ? 1 : -1];<\/code><\/pre>\n<p>  \u0422\u0435\u0440\u043d\u0430\u0440\u043d\u044b\u0439 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440, \u043f\u0440\u0438 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u0441 \u0434\u043b\u0438\u043d\u043e\u0439 1, \u0432 \u0441\u043b\u0443\u0447\u0430\u0435, \u0435\u0441\u043b\u0438 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0430 IP_UDP_DHCP_SIZE \u0440\u0430\u0432\u043d\u0430 576, \u0438 -1, \u0435\u0441\u043b\u0438 \u0434\u043b\u0438\u043d\u0430 \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f. \u041b\u0438\u0447\u043d\u043e \u0443 \u043c\u0435\u043d\u044f, \u043a\u043e\u0433\u0434\u0430 \u044f \u044d\u0442\u043e \u0443\u0432\u0438\u0434\u0435\u043b, \u043f\u043e\u0432\u0438\u0441 \u0432\u043e\u043f\u0440\u043e\u0441: \u00ab\u0427\u0435\u0435\u0435\u0435\u0435\u0435\u0435\u0435\u0435?\u00bb.<\/p>\n<p>  \u0422\u043e \u0435\u0441\u0442\u044c, \u0435\u0441\u043b\u0438 \u043d\u0430\u043c \u043d\u0430\u0434\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u044c \u0440\u0430\u0437\u043c\u0435\u0440 \u043f\u0430\u043a\u0435\u0442\u0430 (\u0447\u0435\u0440\u0435\u0437 \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u0435 \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u0431\u0443\u0444\u0435\u0440\u0430 \u043e\u043f\u0446\u0438\u0439), \u0441\u043b\u0435\u0434\u0443\u044f \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 (\u0441\u043a\u0430\u0436\u0435\u043c, \u0430\u0434\u0430\u043f\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0434 mtu \u0434\u043b\u044f Ethernet II), \u0442\u043e \u043f\u0440\u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u0443 \u043d\u0430\u0441 \u0431\u0443\u0434\u0435\u0442 \u0447\u0442\u043e-\u0442\u043e \u0432\u0440\u043e\u0434\u0435:  <\/p>\n<blockquote><p>test.c:7:7: error: size of array \u2018c\u2019 is negative<br \/>  char c[IP_UDP_DHCP_SIZE == 576? 1: -1];<\/p><\/blockquote>\n<p>  \u041a\u043e\u0441\u0442\u044b\u043b\u044c, \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0439 \u0441 \u043e\u0434\u043d\u043e\u0439 \u0446\u0435\u043b\u044c\u044e \u2014 \u0432\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0435\u0433\u043e, \u043a\u0430\u043a \u043f\u0430\u043b\u043a\u0443, \u0432 \u043a\u043e\u043b\u0435\u0441\u0430 \u0442\u043e\u043c\u0443, \u043a\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0442\u044c \u044d\u0442\u043e\u0442 \u043a\u043e\u0434.<br \/>  \u0412\u0435\u0440\u043d\u0435\u0435, \u043d\u0435 \u0442\u0430\u043a. <br \/>  \u042d\u0442\u043e \u2014 <i>\u043a\u043e\u0441\u0442\u044b\u043b\u044c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u044f\u0441\u043d\u043e \u0432\u0430\u043c \u0441\u043a\u0430\u0436\u0435\u0442: \u043d\u0435 \u043d\u0430\u0434\u043e \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0442\u044c \u043c\u043e\u044e \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e, \u0445\u043e\u0447\u0435\u0448\u044c \u043f\u0430\u043a\u0435\u0442 \u0431\u043e\u043b\u044c\u0448\u0435 \u2014 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0438, \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043f\u0430\u043c\u044f\u0442\u044c \u0438 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u0442\u0435\u0431\u0435 \u0432 \u043f\u043e\u043c\u043e\u0449\u044c!<\/i><\/p>\n<p>  \u042d\u0442\u043e \u2014 \u043f\u0440\u0438\u043c\u0435\u0440 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0435 \u0441\u0442\u043e\u0438\u0442. \u041d\u0438\u043a\u043e\u0433\u0434\u0430. \u0418\u043d\u0430\u0447\u0435 \u0441\u043b\u0443\u0447\u0438\u0442\u0441\u044f \u043d\u0430\u0441\u0438\u043b\u0438\u0435. \u0420\u0430\u043d\u043e \u0438\u043b\u0438 \u043f\u043e\u0437\u0434\u043d\u043e.  <\/p>\n<hr\/>\n<p><i>\u041d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435, \u043a\u043e\u0434 busybox \u043e\u0447\u0435\u043d\u044c \u044d\u043b\u043b\u0435\u0433\u0430\u043d\u0442\u0435\u043d, \u043f\u0443\u0441\u0442\u044c \u0438 \u0441\u043e\u0432\u0441\u0435\u043c \u043d\u0435 \u043f\u0440\u043e\u0441\u0442. \u0412\u0441\u0435\u043c, \u043a\u0442\u043e \u0445\u043e\u0447\u0435\u0442 \u0432\u0437\u0433\u043b\u044f\u043d\u0443\u0442\u044c \u043d\u0430 \u044f\u0437\u044b\u043a \u0441\u0438 \u043f\u043e\u0434 \u0434\u0440\u0443\u0433\u0438\u043c \u0443\u0433\u043b\u043e\u043c \u2014 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 <a href=\"https:\/\/git.busybox.net\/busybox\/tree\/networking\/udhcp?h=1_26_stable\">\u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0430\u043c\u0438<\/a>. \u0421\u0438\u0442\u0443\u0430\u0446\u0438\u044f \u0441 udhcpc \u2014 \u0441\u043a\u043e\u0440\u0435\u0435 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0438\u0437 \u043f\u0440\u0430\u0432\u0438\u043b<\/i>.<\/p>\n<hr\/>\n<p>\u041f\u0438\u0448\u0438 \u043a\u043e\u0434 \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u0442\u0435, \u043a\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0435\u0433\u043e \u0441\u043e\u043f\u0440\u043e\u0432\u043e\u0436\u0434\u0430\u0442\u044c \u043b\u044e\u0431\u0438\u043b\u0438 \u0442\u0435\u0431\u044f, \u0430 \u043d\u0435 \u043d\u0435\u043d\u0430\u0432\u0438\u0434\u0435\u043b\u0438. <br \/>  \u0421\u043b\u043e\u0436\u043d\u0430\u044f \u0433\u0438\u0431\u043a\u0430\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u043b\u0443\u0447\u0448\u0435 \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e \u043a\u043e\u0441\u0442\u044b\u043b\u044f.<br \/>  \u041e\u043f\u0438\u0441\u044b\u0432\u0430\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044b \u0434\u043e\u0441\u0442\u0443\u043f\u0430, \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0438\u0440\u0443\u0439 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u043d\u044b\u0435 \u043c\u043e\u043c\u0435\u043d\u0442\u044b. \u041d\u0435 \u0434\u0435\u043b\u0430\u0439 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442, \u043e\u0442 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0432\u0435\u0441\u044c \u043a\u043e\u0434. \u041d\u0435 \u0434\u043e\u043f\u0443\u0441\u043a\u0430\u0439 \u0443\u0442\u0435\u0447\u0435\u043a \u043f\u0430\u043c\u044f\u0442\u0438. \u0421\u043b\u0435\u0434\u0438 \u0437\u0430 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c\u044e \u0438 \u043e\u0442\u043a\u0430\u0437\u043e\u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u043e\u0441\u0442\u044c\u044e \u043a\u043e\u0434\u0430. <br \/>  <b><i>\u041f\u0438\u0448\u0438 \u043d\u0430 \u0421\u0438 \u043a\u0430\u043a \u0434\u0436\u0435\u043d\u0442\u043b\u044c\u043c\u0435\u043d.<\/i><\/b><br \/>  \u0423\u0434\u0430\u0447\u0438, \u0425\u0430\u0431\u0440!<br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habrahabr.ru\/post\/325678\/\"> https:\/\/habrahabr.ru\/post\/325678\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/264\/877\/15e\/26487715e69445adb1c631dc801830d5.jpg\"\/><br \/>  <i><\/p>\n<blockquote><p>\u00abCode Monkey like Fritos<br \/>  Code Monkey like Tab and Mountain Dew<br \/>  Code Monkey very simple man<br \/>  With big warm fuzzy secret heart:<br \/>  Code Monkey like you<br \/>  Code Monkey like you\u00bb  <\/p><\/blockquote>\n<p>   \u2014 Jonathan Coulton \u2014 Code Monkey<br \/>  <\/i><\/p>\n<p>  \u042f \u0434\u0443\u043c\u0430\u044e, \u043c\u043d\u043e\u0433\u0438\u043c \u0437\u043d\u0430\u043a\u043e\u043c\u0430 \u044d\u0442\u0430 \u0448\u0438\u043a\u0430\u0440\u043d\u0430\u044f \u043f\u0435\u0441\u043d\u044f Jonathan Coulton&#8217;\u0430, \u0438 \u044d\u0442\u0430 \u0436\u0438\u0437\u043d\u0435\u043d\u043d\u0430\u044f \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f, \u043a\u043e\u0433\u0434\u0430 \u00abRob say Code Monkey very diligent\u00bb, \u043d\u043e \u00abhis output stink\u00bb \u0438 \u00abhis code not &#8216;functional&#8217; or &#8216;elegant&#8217;\u00bb. <\/p>\n<p>  \u042f\u0437\u044b\u043a \u0421\u0438, \u043f\u043e\u0434\u0430\u0440\u0438\u0432\u0448\u0438\u0439 \u043d\u0430\u043c \u0441\u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0433\u043e \u0441\u043e\u0444\u0442\u0430, \u043f\u043e\u0442\u0438\u0445\u043e\u043d\u044c\u043a\u0443 \u0431\u044b\u043b \u0432\u044b\u0442\u0435\u0441\u043d\u0435\u043d \u0438\u0437 \u0434\u0435\u0441\u043a\u0442\u043e\u043f\u0430 \u0438 \u044d\u043d\u0442\u0435\u0440\u043f\u0440\u0430\u0439\u0437\u0430 \u0442\u0430\u043a\u0438\u043c\u0438 \u0432\u044b\u0441\u043e\u043a\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u044b\u043c\u0438 \u0433\u0438\u0433\u0430\u043d\u0442\u0430\u043c\u0438 \u043a\u0430\u043a Java \u0438 C# \u0438 \u0437\u0430\u043d\u044f\u043b \u043d\u0438\u0448\u0443 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. \u0418 \u0432\u0441\u0435 \u0431\u044b \u0445\u043e\u0440\u043e\u0448\u043e, \u043d\u043e \u0441\u0438\u0441\u0442\u0435\u043c\u0449\u0438\u043a\u0438 \u2014 \u043e\u0447\u0435\u043d\u044c <s>\u043e\u0442\u0431\u0438\u0442\u044b\u0435<\/s> \u0441\u0432\u043e\u0435\u043e\u0431\u0440\u0430\u0437\u043d\u044b\u0435 \u0440\u0435\u0431\u044f\u0442\u0430. \u0417\u0430\u0434\u0430\u0447\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u0440\u043e\u0439 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u044e\u0442 \u043f\u0435\u0440\u0435\u0434 \u043d\u0438\u043c\u0438 \u0434\u0430\u0436\u0435 \u0441\u0432\u043e\u0435\u0439 \u0444\u043e\u0440\u043c\u0443\u043b\u0438\u0440\u043e\u0432\u043a\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u044b \u0432\u043e\u0433\u043d\u0430\u0442\u044c \u0432 \u0443\u0436\u0430\u0441 \u043f\u0440\u043e\u0441\u0442\u044b\u0445 \u0441\u043c\u0435\u0440\u0442\u043d\u044b\u0445. \u0421\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0433\u043e\u0432\u043e\u0440\u044f, \u0442\u0430\u043a \u0436\u0435, \u043a\u0430\u043a \u0438 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f.<\/p>\n<p>  \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u043c\u044b \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043c \u043e \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0445 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0430\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u044f \u0432\u044b\u043d\u0435\u0441 \u0438\u0437 \u0433\u043b\u0443\u0431\u0438\u043d \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043d\u0430 \u0421\u0438. \u041f\u043e\u0435\u0445\u0430\u043b\u0438.  <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-284514","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/284514","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=284514"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/284514\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=284514"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=284514"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=284514"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}