{"id":328293,"date":"2022-01-20T03:00:23","date_gmt":"2022-01-20T03:00:23","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=328293"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=328293","title":{"rendered":"<span>[\u041e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u0435] \u041d\u043e\u0432\u043e\u0433\u043e\u0434\u043d\u0438\u0439 \u0434\u0435\u0442\u0435\u043a\u0442\u0438\u0432: \u0441\u0442\u0440\u0430\u043d\u043d\u044b\u0439 \u0445\u0430\u0439\u0437\u0435\u043d\u0431\u0430\u0433 \u0432 \u00ab\u043f\u0438\u0442\u043e\u043d\u044c\u0438\u0445\u00bb \u0447\u0430\u0441\u0430\u0445<\/span>"},"content":{"rendered":"<div><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body_version-1\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/webt\/ki\/0g\/ta\/ki0gtaf4rz5vn8wtzngalf3w0sw.jpeg\" data-src=\"https:\/\/habrastorage.org\/webt\/ki\/0g\/ta\/ki0gtaf4rz5vn8wtzngalf3w0sw.jpeg\" data-blurred=\"true\"\/><\/p>\n<p>  <\/p>\n<p>\u0417\u0434\u0435\u0441\u044c \u043b\u0435\u0436\u0438\u0442 \u043e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u0435 &#171;\u0440\u0430\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f&#187; <a href=\"\/ru\/post\/598909\/\">\u041d\u043e\u0432\u043e\u0433\u043e\u0434\u043d\u0438\u0439 \u0434\u0435\u0442\u0435\u043a\u0442\u0438\u0432: \u0441\u0442\u0440\u0430\u043d\u043d\u044b\u0439 \u0445\u0430\u0439\u0437\u0435\u043d\u0431\u0430\u0433 \u0432 \u00ab\u043f\u0438\u0442\u043e\u043d\u044c\u0438\u0445\u00bb \u0447\u0430\u0441\u0430\u0445<\/a>.<br \/>  \u0418\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u0445\u043e\u0442\u0435\u043b \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0441\u0442\u0430\u0442\u044c\u044e \u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439, \u043d\u043e \u043f\u043e\u043d\u044f\u043b \u0447\u0442\u043e \u0430\u043f\u0434\u0435\u0439\u0442 \u0432\u044b\u0445\u043e\u0434\u0438\u0442 \u0447\u0443\u0442\u044c \u043d\u0435 \u0434\u043b\u0438\u043d\u043d\u0435\u0435 \u0441\u0430\u043c\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438.<\/p>\n<p>  <\/p>\n<p>\u041d\u0430\u043f\u043e\u043c\u043d\u044e \u043a\u0440\u0430\u0442\u043a\u043e\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0447\u0430\u0441\u0442\u0438: python, \u043a\u0430\u043a \u0432\u043f\u0440\u043e\u0447\u0435\u043c \u0438 \u0432\u0441\u0451 \u043d\u0430 \u043d\u0435\u043c \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0435, \u0432\u0440\u0435\u043c\u0435\u043d\u0430\u043c\u0438 \u043f\u0440\u044b\u0433\u0430\u0435\u0442 \u0432 \u0431\u0443\u0434\u0443\u0449\u0435\u0435, \u0430 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e \u0432 2023-\u0439 \u0433\u043e\u0434 \u0432 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0437\u043e\u043d\u0435, \u0438 \u043f\u043e \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0434\u0430\u043d\u043d\u044b\u043c \u0432 2024-\u0439 \u0432 UTC\/GMT (\u043d\u043e \u044d\u0442\u043e \u043d\u0435 \u0442\u043e\u0447\u043d\u043e) \u0438 \u043f\u043e\u0431\u044b\u0432 \u0442\u0430\u043c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u043e\u0431\u0440\u0430\u0442\u043d\u043e \u0432 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435.<br \/>  \u0412\u043e \u0432\u0440\u0435\u043c\u044f \u043f\u0440\u044b\u0436\u043a\u0430 \u043e\u043d\u043e \u0432\u0435\u0434\u0435\u0442 \u0441\u0435\u0431\u044f \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e (\u0442.\u0435. \u0441\u0447\u0438\u0442\u0430\u0435\u0442 \u043d\u0430\u043d\u043e-, \u043c\u0438\u043a\u0440\u043e- \u0438 \u043c\u0438\u043b\u043b\u0438\u0441\u0435\u043a\u0443\u043d\u0434\u044b, \u0430 \u0442\u043e \u0438 \u0441\u0435\u043a\u0443\u043d\u0434\u044b, \u043a\u0430\u043a \u0431\u0443\u0434\u0442\u043e \u0432\u0440\u0435\u043c\u044f \u0438\u0434\u0435\u0442 \u043a\u0430\u043a \u043d\u0438 \u0432 \u0447\u0451\u043c \u043d\u0435 \u0431\u044b\u0432\u0430\u043b\u043e) \u0432 2023-\u043c \u0442.\u0435. \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e, \u043f\u0440\u0438 \u0442\u043e\u043c \u0447\u0442\u043e \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u044b\u0445 \u043f\u0440\u044b\u0436\u043a\u043e\u0432 \u0432\u0440\u0435\u043c\u044f \u0432\u043d\u043e\u0432\u044c \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u0431\u0443\u0434\u0442\u043e \u043f\u043e \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0435\u043d\u0438\u044e \u043e\u043d\u043e (\u0432\u0440\u0435\u043c\u044f) \u0442\u0435\u0447\u0435\u0442 \u0432 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e\u0439 \u0432\u0441\u0435\u043b\u0435\u043d\u043d\u043e\u0439. \u041e\u0434\u043d\u0430\u043a\u043e \u0441\u0442\u0440\u0430\u043d\u043d\u043e\u0435 \u0435\u0433\u043e &#171;\u043e\u0442\u0440\u0430\u0436\u0435\u043d\u0438\u0435&#187; \u0432 UTC\/GMT, \u043d\u0443 \u0442\u043e \u0447\u0442\u043e \u043a\u0430\u043a \u0431\u0443\u0434\u0442\u043e \u0431\u044b \u0432 2024-\u043c, \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043c\u0435\u043d\u0435\u0435 \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e, \u0438\u0431\u043e \u0434\u043b\u044f \u043d\u0435\u0433\u043e \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0435\u0442\u0441\u044f \u0441\u0442\u0440\u0430\u043d\u043d\u044b\u0435 \u0434\u0440\u0435\u0439\u0444\u044b \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043a \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u044e \u043f\u0440\u044b\u0436\u043a\u0430.<br \/>  \u0425\u043e\u0442\u044f \u043a\u0443\u0434\u0430 \u0443\u0436 \u0441\u0442\u0440\u0430\u043d\u043d\u0435\u0435.<\/p>\n<p><a name=\"habracut\"><\/a>  <\/p>\n<p>\u0412\u0441\u0451 \u044d\u0442\u043e \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u0445\u043e\u0442\u044c \u0438 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043a\u0430\u043a &#171;\u0431\u0438\u0442\u0430\u044f \u043f\u0430\u043c\u044f\u0442\u044c&#187;, \u0432\u0440\u044f\u0434 \u043b\u0438 \u044d\u0442\u0438\u043c \u043e\u0431\u044a\u044f\u0441\u043d\u044f\u0435\u0442\u0441\u044f, \u0438\u0431\u043e \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0430\u043d\u043e\u043c\u0430\u043b\u0438\u0439 \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u044e\u0442\u0441\u044f \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u043d\u0435\u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u044b\u0435 \u0432\u0435\u043b\u0438\u0447\u0438\u043d\u044b \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u044b\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 <abbr title=\"seconds since the Epoch also known as Epoch time, Posix time or UNIX Epoch time\">unix time<\/abbr>, \u0434\u043b\u044f \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0432\u043e \u0433\u043b\u0430\u0432\u0443 \u0443\u0433\u043b\u0430 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0432\u0438\u0434\u0430:<\/p>\n<p>  <\/p>\n<pre><code class=\"python\">RT, UTC\/GMT     ==>  t, UTC\/GMT   ==>   lt, UTC-08:00 CLOCK_REALTIME  ==>   time(RT)    ==>   localtime(t) ---------------------------------------------------------------          1640M  ==>     1705M     ==>   1674M<\/code><\/pre>\n<p>  <\/p>\n<p>\u0427\u0442\u043e \u043a\u0430\u043a \u0431\u044b \u043d\u0438 \u0432 \u0446\u0435\u043b\u043e\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u043e\u0439 \u0444\u043e\u0440\u043c\u0435 \u043d\u0438 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 \u0441 \u043f\u043b\u0430\u0432\u0430\u044e\u0449\u0435\u0439 \u0437\u0430\u043f\u044f\u0442\u043e\u0439 \u043f\u0440\u043e\u0441\u0442\u0435\u0439\u0448\u0438\u043c\u0438 \u0431\u0438\u0442\u043e\u0432\u044b\u043c\u0438 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f\u043c\u0438 (<code>&amp;<\/code> \u0438\u043b\u0438 <code>|<\/code>) \u043d\u0435 \u043e\u0431\u044a\u044f\u0441\u043d\u0438\u0442\u044c\u2026 \u041d\u0443 \u0438 \u043a\u0430\u043a \u0432\u0438\u0448\u0435\u043d\u043a\u0430 \u044d\u0442\u043e\u0442 \u0434\u043e \u0441\u0442\u0440\u0430\u043d\u043d\u043e\u0441\u0442\u0438 \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0434\u043b\u044f <code>lt<\/code>, \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0435\u0449\u0435 \u0438 &#171;\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e&#187; \u0442\u0438\u043a\u0430\u044e\u0449\u0438\u0439 \u0432 \u0442\u0435\u0447\u0435\u043d\u0438\u0438 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0430\u043d\u043e\u043c\u0430\u043b\u0438\u0439.<\/p>\n<p>  <\/p>\n<p>&#171;\u0420\u0430\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435&#187; \u0437\u0430\u0442\u044f\u043d\u0443\u043b\u043e\u0441\u044c \u0447\u0443\u0442\u044c-\u0447\u0443\u0442\u044c \u2014 \u043f\u0440\u0430\u0437\u0434\u043d\u0438\u043a\u0438, \u043d\u0443 \u0438 \u0447\u0435\u043b\u043e\u0432\u0435\u043a, \u0443 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043e\u043d\u043e \u043f\u043e\u043b\u043e\u043c\u0430\u043d\u043e, <del>\u043d\u0438\u043a\u0443\u0434\u0430 \u043d\u0435 \u0442\u043e\u0440\u043e\u043f\u0438\u0442\u0441\u044f<\/del> \u043f\u043e \u0432\u0441\u0435\u0439 \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0437\u0430\u043d\u044f\u0442\u043e\u0439 \u043e\u0447\u0435\u043d\u044c, \u0442.\u043a. \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0441 \u043f\u0430\u0443\u0437\u0430\u043c\u0438 \u0432 \u0434\u0432\u0430-\u0442\u0440\u0438 \u0434\u043d\u044f.<br \/>  \u0421\u0440\u0430\u0437\u0443 \u0441\u043a\u0430\u0436\u0443 \u0447\u0442\u043e python \u0431\u044b\u043b \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043d\u0435\u0443\u0432\u0438\u043d\u043e\u0432\u0430\u0442\u044b\u043c\u2026 \u0412\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u0432\u044b\u044f\u0441\u043d\u0438\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u0432\u0430\u0430\u0431\u0449\u0435 \u043d\u0435\u0443\u0432\u0438\u043d\u043e\u0432\u043d\u044b\u0439 \u043e\u043d. \u0412\u0430\u0430\u0431\u0449\u0435 \u0447\u0438\u0441\u0442\u043e\u0439 \u0432\u043e\u0434\u044b \u043d\u0435\u0443\u0432\u0438\u043d\u043e\u0432\u043d\u044b\u0439. \u041a\u0440\u0430\u0439\u043d\u0435\u0439 \u0441\u0442\u0435\u043f\u0435\u043d\u0438 \u043d\u0435\u0443\u0432\u0438\u043d\u043e\u0432\u043d\u044b\u0439. <\/p>\n<p>  <\/p>\n<p>\u0410 \u0435\u0441\u043b\u0438 \u0441\u0435\u0440\u044c\u0451\u0437\u043d\u043e, \u043a\u0442\u043e \u0431\u044b \u0441\u043e\u043c\u043d\u0435\u0432\u0430\u043b\u0441\u044f, \u043e\u0434\u043d\u0430\u043a\u043e \u043b\u0443\u0447\u0448\u0435 \u0432\u0441\u0451 \u0436\u0435 \u043f\u043e \u043f\u043e\u0440\u044f\u0434\u043a\u0443&#8230;<\/p>\n<p>  <\/p>\n<p>\u0418\u0442\u0430\u043a, \u0447\u0442\u043e \u0435\u0449\u0435 \u0434\u0435\u043b\u0430\u043b\u043e\u0441\u044c \u043d\u0430 \u0442\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u0435 \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0439\u043c\u0430\u0442\u044c \u0431\u0430\u0433\u0443 (\u0434\u043b\u044f \u0442\u0435\u0445 \u043a\u0442\u043e \u043d\u0435 \u0432\u0438\u0434\u0435\u043b \u0430\u043f\u0434\u0435\u0439\u0442\u044b \u043f\u0435\u0440\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u0438):<\/p>\n<p>  <\/p>\n<ul>\n<li>\u043f\u0435\u0440\u0435\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 Debian 11 \u0430 \u0437\u0430\u0442\u0435\u043c \u0438 Fedora 34 \u043d\u0430 \u0442\u043e\u0439 \u0436\u0435 VM \u0441 \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u0442\u0435\u0441\u0442\u043e\u043c \u043d\u0430 \u0447\u0438\u0441\u0442\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0445 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043f\u043e\u043c\u0435\u043d\u044f\u043b\u0430<\/li>\n<li>python 3.10.2 \u0441\u043e\u0431\u0440\u0430\u043d\u043d\u044b\u0439 \u0438\u0437 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u043e\u0432 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0442\u0430\u043c \u0442\u043e\u0442 \u0436\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442, \u0430\u043d\u043e\u043c\u0430\u043b\u0438\u044f \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u0441 \u0442\u043e\u0439 \u0436\u0435 \u0447\u0430\u0441\u0442\u043e\u0442\u043e\u0439 \u0438 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0442\u0435\u043c \u0436\u0435 \u0434\u0430\u043c\u043f\u043e\u043c \u0438\u0437 \u043f\u043e\u0434 ltrace<\/li>\n<li>\u0447\u0435\u043b\u043e\u0432\u0435\u043a \u043e\u0431\u0440\u0430\u0449\u0430\u043b\u0441\u044f \u0441 \u044d\u0442\u0438\u043c \u043a \u0445\u043e\u0441\u0442\u0435\u0440\u0443 \u2014 \u043e\u043d\u0438 \u043d\u0438\u0447\u0435\u0433\u043e \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u043f\u043e\u043a\u0430 \u043d\u0435 \u043e\u0442\u0432\u0435\u0442\u0438\u043b\u0438<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0441 ltrace \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u0435 \u043f\u0440\u043e\u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0435 \u043d\u0435 \u0432\u0438\u0434\u0438\u0442\u0441\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u043c, \u0430 \u0442\u043e\u0432\u0430\u0440\u0438\u0449 \u0443\u0436\u0435 \u0441\u0430\u043c \u0441\u043e\u0431\u0438\u0440\u0430\u043b \u043f\u0438\u0442\u043e\u043d \u0438\u0437 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u043e\u0432, \u0437\u0430\u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u043c\u043d\u0435 &#171;\u043f\u043e\u0434\u0435\u0431\u0430\u0436\u0438\u0442\u044c&#187; \u0435\u0433\u043e \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043d\u0430 \u043f\u0440\u0435\u0434\u043c\u0435\u0442 \u0443\u0442\u043e\u0447\u043d\u0438\u0442\u044c \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043c\u0435\u0441\u0442\u0435 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e \u0442\u043e \u0432\u0441\u0451 \u043b\u043e\u043c\u0430\u0435\u0442\u0441\u044f, \u0442.\u0435. \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0442\u0435\u0441\u0442 \u043d\u0430 \u0434\u0435\u0431\u0430\u0436\u043d\u043e\u043c \u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u043e\u043f\u0430\u0442\u0447\u0435\u043d\u043e\u043c python.<br \/>  \u0427\u0442\u043e\u0431\u044b \u043d\u0435 \u043f\u0443\u0433\u0430\u0442\u044c \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u0430 <code>gdb<\/code>, conditional breakpoint \u0438 \u0442\u043e\u043c\u0443 \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u043c\u0438 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f\u043c\u0438 \u0434\u0430 \u0438\u0437 \u043f\u043e\u0434 \u043a\u043e\u043d\u0441\u043e\u043b\u0438, <del>\u043d\u0430 \u043a\u043e\u043b\u0435\u043d\u043a\u0435<\/del> \u0431\u044b\u043b\u0430 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0430 \u043f\u0440\u043e\u0441\u0442\u0435\u043d\u044c\u043a\u0430\u044f \u0437\u0430\u043f\u043b\u0430\u0442\u043a\u0430 \u0434\u043b\u044f python 3.10.2, \u0441 \u0446\u0435\u043b\u044c\u044e \u0432\u044b\u0432\u0435\u0441\u0442\u0438 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u044b\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0432 \u043a\u0430\u0436\u0434\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0432 \u0446\u0435\u043f\u043e\u0447\u043a\u0435 \u043e\u0442 <code>clock_gettime<\/code> \u0434\u043e \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043c\u0435\u0441\u0442\u0430\u043c\u0438 \u043a\u0440\u0438\u0432\u043e\u0433\u043e \u043e\u0442\u0432\u0435\u0442\u0430 <code>time.time()<\/code> \u0438 \u043a\u0430\u043a \u043e\u043d \u0437\u0430\u0442\u0435\u043c \u0434\u043e\u043b\u0435\u0442\u0430\u0435\u0442 \u0434\u043e <code>time.localtime()<\/code>:<\/p>\n<p>  <\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">patch-debug-time.diff<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"diff\">diff --git a\/Modules\/timemodule.c b\/Modules\/timemodule.c index 4caacc3b64..c975928fe7 100644 --- a\/Modules\/timemodule.c +++ b\/Modules\/timemodule.c @@ -70,7 +70,9 @@ static PyObject*  _PyFloat_FromPyTime(_PyTime_t t)  {      double d = _PyTime_AsSecondsDouble(t); -    return PyFloat_FromDouble(d); +    PyObject* op = PyFloat_FromDouble(d); +    printf(\"**** %-40s%.3lf  ooo>>  %.3lf (O:%p)\\n\", __FUNCTION__, d, PyFloat_AsDouble(op), op); +    return op;  }  @@ -468,6 +470,7 @@ parse_time_t_args(PyObject *args, const char *format, time_t *pwhen)      else {          if (_PyTime_ObjectToTime_t(ot, &amp;whent, _PyTime_ROUND_FLOOR) == -1)              return 0; +        printf(\"**** %-40s%.ld....  &lt;&lt;ooo  %.3lf (O:%p)\\n\", __FUNCTION__, whent, PyFloat_AsDouble(ot), ot);      }      *pwhen = whent;      return 1; diff --git a\/Python\/pytime.c b\/Python\/pytime.c index 1ef99aee74..7afa21df6b 100644 --- a\/Python\/pytime.c +++ b\/Python\/pytime.c @@ -292,7 +292,7 @@ _PyTime_FromNanosecondsObject(_PyTime_t *tp, PyObject *obj)  }   #ifdef HAVE_CLOCK_GETTIME -static int +int __attribute__((visibility(\"default\")))  pytime_fromtimespec(_PyTime_t *tp, struct timespec *ts, int raise)  {      _PyTime_t t, nsec; @@ -326,6 +326,8 @@ pytime_fromtimespec(_PyTime_t *tp, struct timespec *ts, int raise)          t += nsec;      }  +    printf(\"**** %-40s%ld\\n\", __FUNCTION__, t); +      *tp = t;      return res;  } @@ -338,7 +340,7 @@ _PyTime_FromTimespec(_PyTime_t *tp, struct timespec *ts)  #endif   #if !defined(MS_WINDOWS) -static int +int __attribute__((visibility(\"default\")))  pytime_fromtimeval(_PyTime_t *tp, struct timeval *tv, int raise)  {      _PyTime_t t, usec; @@ -655,7 +657,7 @@ _PyTime_AsTimespec(_PyTime_t t, struct timespec *ts)  }  #endif  -static int +int __attribute__((visibility(\"default\")))  py_get_system_clock(_PyTime_t *tp, _Py_clock_info_t *info, int raise)  {  #ifdef MS_WINDOWS @@ -765,7 +767,7 @@ py_get_system_clock(_PyTime_t *tp, _Py_clock_info_t *info, int raise)      return 0;  }  -_PyTime_t +_PyTime_t __attribute__((visibility(\"default\")))  _PyTime_GetSystemClock(void)  {      _PyTime_t t; @@ -777,10 +779,12 @@ _PyTime_GetSystemClock(void)      return t;  }  -int +int __attribute__((visibility(\"default\")))  _PyTime_GetSystemClockWithInfo(_PyTime_t *t, _Py_clock_info_t *info)  { -    return py_get_system_clock(t, info, 1); +    int ret = py_get_system_clock(t, info, 1); +    printf(\"**** %-40s%ld\\n\", __FUNCTION__, *t); +    return ret;  }   #if __APPLE__<\/code><\/pre>\n<\/div><\/div>\n<p>  <\/p>\n<p>\u041a\u0430\u043a \u0437\u0430\u043f\u043b\u0430\u0442\u0430 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0432 \u044d\u0442\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 (\u0432\u044b\u0440\u0435\u0437\u0430\u043d\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u0440\u0435\u043b\u0435\u0432\u0430\u043d\u0442\u043d\u044b\u0435 \u043a\u0443\u0441\u043a\u0438 \u043a\u043e\u0434\u0430 \u0438\u0437 <code>pytime.c<\/code> \u0438 <code>timemodule.c<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0442\u0443\u0442 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0443\u043f\u0440\u043e\u0449\u0435\u043d\u044b \u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u044b \u043f\u043e\u044f\u0441\u043d\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u043e\u0441\u0442\u0438):<\/p>\n<p>  <\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u041f\u0440\u043e\u043f\u0430\u0442\u0447\u0435\u043d\u044b\u0439 \u0438 \u0443\u043f\u0440\u043e\u0449\u0435\u043d\u043d\u044b\u0439 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 \u043d\u0430 \u0441\u044f\u0445 &#8230;<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"cpp\">\/\/ == \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0435 time.time(), \u0434\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430 1640M (\u0433\u0443\u0434) \u0438\u043b\u0438 1705M (\u0431\u044d\u0434) ==  \/\/ \u0434\u0435\u043b\u0430\u0435\u0442 \u0438\u0437 \u0434\u043b\u0438\u043d\u043d\u043e\u0433\u043e \u0446\u0435\u043b\u043e\u0433\u043e \u043f\u0438\u0442\u043e\u043d\u0438\u0439 \u043e\u0431\u044a\u0435\u043a\u0442 \u0441 double (posix epoch \u0441\u0435\u043a\u0443\u043d\u0434\u044b) \u0432\u043d\u0443\u0442\u0440\u0438:  static PyObject*  _PyFloat_FromPyTime(_PyTime_t t)  {      double d = _PyTime_AsSecondsDouble(t); \/\/ \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0434\u0435\u043b\u0438\u043c \u043d\u0430 1e9      PyObject* op = PyFloat_FromDouble(d);  \/\/ \u043e\u0431\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0435\u043c double \u0432 PyObject +    printf(\"**** %-40s%.3lf  ooo>>  %.3lf (O:%p)\\n\", __FUNCTION__, d, PyFloat_AsDouble(op), op);      return op;  }  \/\/ \u0434\u0435\u043b\u0430\u0435\u0442 \u0438\u0437 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b timespec \u0434\u043b\u0438\u043d\u043d\u043e\u0435 \u0446\u0435\u043b\u043e\u0435 (int64_t), \u043d\u0430\u043d\u043e\u0441\u0435\u043a\u0443\u043d\u0434\u044b \u043e\u0442 posix epoch: static int pytime_fromtimespec(_PyTime_t *tp, struct timespec *ts, int raise) {     _PyTime_t t;       t = (_PyTime_t)ts->tv_sec;      t *= SEC_TO_NS; \/\/ 1e9      t += ts->tv_nsec; +    printf(\"**** %-40s%ld\\n\", __FUNCTION__, t);      *tp = t;      return res;  }  \/\/ \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u0432 \u043d\u0430\u043d\u043e\u0441\u0435\u043a\u0443\u043d\u0434\u0430\u0445 \u043e\u0442 posix epoch, \u043a\u043e\u0433\u0434\u0430 defined(HAVE_CLOCK_GETTIME), \/\/ \u0447\u0442\u043e \u0441\u043f\u0440\u0430\u0432\u0435\u0434\u043b\u0438\u0432\u043e \u0434\u043b\u044f \u043d\u0443\u0436\u043d\u043e\u0439 \u043d\u0430\u043c \u043c\u0430\u0448\u0438\u043d\u043a\u0438:  static int  py_get_system_clock(_PyTime_t *tp, _Py_clock_info_t *info, int raise)  {      struct timespec ts; ...      err = clock_gettime(CLOCK_REALTIME, &amp;ts);      if (err) {...}      if (pytime_fromtimespec(tp, &amp;ts, raise) &lt; 0) {          return -1;      }       if (info) {...} ...      return 0;  }   \/\/ \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u043e-\u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u0430\u044f \u0432\u043d\u0443\u0442\u0440\u044f\u043d\u043a\u0430 time.time():  int  _PyTime_GetSystemClockWithInfo(_PyTime_t *t, _Py_clock_info_t *info)  {      int ret = py_get_system_clock(t, info, 1); +    printf(\"**** %-40s%ld\\n\", __FUNCTION__, *t);      return ret;  }  \/\/ == \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0435 time.localtime(), \u0433\u0434\u0435 \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0435\u0442\u0441\u044f 1674M ==  static int  parse_time_t_args(PyObject *args, const char *format, time_t *pwhen)  {      PyObject *ot = NULL;      time_t whent;       if (!PyArg_ParseTuple(args, format, &amp;ot))          return 0; ...          \/\/ PyObject \u0432 double \u0438 \u043e\u043a\u0440\u0443\u0433\u043b\u044f\u0435\u043c \u0434\u043e \u0446\u0435\u043b\u043e\u0433\u043e (\u0432 time_t, posix epoch \u0441\u0435\u043a\u0443\u043d\u0434\u044b):          if (_PyTime_ObjectToTime_t(ot, &amp;whent, _PyTime_ROUND_FLOOR) == -1)              return 0; +        printf(\"**** %-40s%.ld....  &lt;&lt;ooo  %.3lf (O:%p)\\n\", __FUNCTION__, whent, PyFloat_AsDouble(ot), ot); ...      *pwhen = whent;      return 1;  } <\/code><\/pre>\n<\/div><\/div>\n<p>  <\/p>\n<p>\u0421\u043a\u0440\u0438\u043f\u0442 \u0434\u043b\u044f \u0432\u0441\u0435\u0433\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0430 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043a\u0430\u043a \u0442\u043e \u0442\u0430\u043a:<\/p>\n<p>  <\/p>\n<pre><code class=\"bash\">cd \/tmp\/python-test  # \u043a\u043b\u043e\u043d\u0438\u0440\u0443\u0435\u043c (3.10.2) \u0438\u0437 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u0430\u0440\u0438\u044f \u0432 \u0442\u0435\u043a\u0443\u0449\u0443\u044e \u043f\u0430\u043f\u043a\u0443: git clone --branch v.3.10.2 --depth 1  https:\/\/github.com\/python\/cpython.git .  # \u043d\u0430\u043a\u0430\u0442\u044b\u0432\u0430\u0435\u043c patch (\u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0432 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0432 patch-debug-time.diff): git apply patch-debug-time.diff  # \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u043c \u043f\u0438\u0442\u043e\u043d \u0432 \u043f\u0430\u043f\u043a\u0435 build\/debug: mkdir -p .\/build\/debug &amp;&amp; cd .\/build\/debug ..\/..\/configure CFLAGS='-DPy_DEBUG' --with-pydebug make  # \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0442\u0435\u0441\u0442 \u0438 \u0436\u0434\u0435\u043c \u043f\u0440\u044b\u0436\u043a\u0430 \u0432\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438: printf 'typedef clockid_t = enum (CLOCK_REALTIME=0, CLOCK_MONOTONIC=1);\\ntypedef timespec = struct(long, long);\\ntypedef tm = struct(int, int, int, int, int, int, int, int, int);\\nint clock_gettime(clockid_t, +timespec*);\\ndouble floor(void*, double);\\ntm* localtime_r(long*, +tm*);\\n' > \/tmp\/ltrace.conf ltrace -e '*gettime+floor+localtime_r' -F \/tmp\/ltrace.conf \\   .\/python -c $'import time\\nwhile True: t=time.time(); lt=time.localtime(t); print(\"%.3f\\t%.3f\\t%s\" % (time.monotonic(), t, time.strftime(\"%Y-%m-%dT%H:%M:%S\", lt))), time.sleep(0.5)'<\/code><\/pre>\n<p>  <\/p>\n<p>\u0417\u0430\u043f\u043b\u0430\u0442\u043a\u0430 \u0438 \u0441\u043a\u0440\u0438\u043f\u0442 <a href=\"https:\/\/github.com\/fail2ban\/fail2ban\/issues\/3187#issuecomment-1014804267\" rel=\"nofollow noopener noreferrer\">\u0443\u043b\u0435\u0442\u0435\u043b\u0438 \u0434\u043e \u0431\u0435\u043d\u0435\u0444\u0438\u0446\u0438\u0430\u0440\u0430<\/a> \u0438 <del>\u043e\u0436\u0438\u0434\u0430\u0435\u043c\u043e<\/del> \u0447\u0435\u0440\u0435\u0437 \u043f\u0430\u0440\u0443 \u0434\u043d\u0435\u0439 \u043f\u0440\u0438\u043b\u0435\u0442\u0435\u043b <a href=\"https:\/\/github.com\/fail2ban\/fail2ban\/issues\/3187#issuecomment-1015584224\" rel=\"nofollow noopener noreferrer\">\u043e\u0442\u0432\u0435\u0442<\/a>, \u0433\u0434\u0435 \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u043e \u0442\u0430\u043a \u043f\u0440\u043e\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e <del>\u043f\u0438\u0442\u043e\u043d \u043d\u0435\u0443\u0438\u043d\u043e\u0432\u0430\u0442\u044b\u0439<\/del> \u043f\u0440\u044b\u0436\u043a\u0438 \u0432 \u0431\u0443\u0434\u0443\u0449\u0435\u0435 \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u044e\u0442\u0441\u044f \u0442\u0430\u043c \u0433\u0434\u0435 \u043e\u043d\u0438 \u0442\u0443\u043f\u043e \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0442\u044c\u0441\u044f (\u0430 \u043e\u043d\u0438, \u043a\u0430\u043a \u0442\u043e\u0442 \u0441\u0443\u0441\u043b\u0438\u043a, \u0432 \u043d\u0430\u043b\u0438\u0447\u0438\u0438). \u041e\u0434\u043d\u0430\u043a\u043e \u0432\u0441\u0451 \u043f\u043e \u043f\u043e\u0440\u044f\u0434\u043a\u0443\u2026 <\/p>\n<p>  <\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0442\u0435\u0441\u0442\u0430 &#8230;<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"python\">python->clock_gettime(CLOCK_MONOTONIC, { 1351882, 719005224 })                                          = 0 **** pytime_fromtimespec                     1351882719005224 python->clock_gettime(CLOCK_REALTIME, { 1642516505, 739162789 })                                        = 0 **** pytime_fromtimespec                     1642516505739162789 **** _PyTime_GetSystemClockWithInfo          1642516505739162789 **** _PyFloat_FromPyTime                     1642516505.739  ooo>>  1642516505.739 (O:0x7f17b4b84400) **** parse_time_t_args                       1642516505....  &lt;&lt;ooo  1642516505.739 (O:0x7f17b4b84400) python->localtime_r(1642516505, { 5, 35, 6, 18, 0, 122, 2, 17, 0 })                                     = { 5, 35, 6, 18, 0, 122, 2, 17, 0 } python->clock_gettime(CLOCK_MONOTONIC, { 1351883, 222098983 })                                          = 0 **** pytime_fromtimespec                     1351883222098983 **** _PyFloat_FromPyTime                     1351883.222  ooo>>  1351883.222 (O:0x7f17b4b84220) 1351883.222 1642516505.739  2022-01-18T06:35:05 -- python->clock_gettime(CLOCK_MONOTONIC, { 1351883, 222672553 })                                          = 0 **** pytime_fromtimespec                     1351883222672553 python->clock_gettime(CLOCK_REALTIME, { 1642516506, 243048649 })                                        = 0 **** pytime_fromtimespec                     1642516506243048649 **** _PyTime_GetSystemClockWithInfo          1642516506243048649 **** _PyFloat_FromPyTime                     1676140652.455  ooo>>  1676140652.455 (O:0x7f17b4b84220) **** parse_time_t_args                       1676140652....  &lt;&lt;ooo  1676140652.455 (O:0x7f17b4b84220) python->localtime_r(1676140652, { 32, 37, 10, 11, 1, 123, 6, 41, 0 })                                   = { 32, 37, 10, 11, 1, 123, 6, 41, 0 } python->clock_gettime(CLOCK_MONOTONIC, { 1351883, 724655853 })                                          = 0 **** pytime_fromtimespec                     1351883724655853 **** _PyFloat_FromPyTime                     1384655.922  ooo>>  1384655.922 (O:0x7f17b4b84400) 1415970.483 1707394536.366  2023-02-11T10:37:32 -- python->clock_gettime(CLOCK_MONOTONIC, { 1351883, 724982418 })                                          = 0 **** pytime_fromtimespec                     1351883724982418 python->clock_gettime(CLOCK_REALTIME, { 1642516506, 751439357 })                                        = 0 **** pytime_fromtimespec                     1642516506751439357 **** _PyTime_GetSystemClockWithInfo          1642516506751439357 **** _PyFloat_FromPyTime                     1642516506.751  ooo>>  1642516506.751 (O:0x7f17b4b84400) **** parse_time_t_args                       1642516506....  &lt;&lt;ooo  1642516506.751 (O:0x7f17b4b84400) python->localtime_r(1642516506, { 6, 35, 6, 18, 0, 122, 2, 17, 0 })                                     = { 6, 35, 6, 18, 0, 122, 2, 17, 0 } python->clock_gettime(CLOCK_MONOTONIC, { 1351884, 293524900 })                                          = 0 **** pytime_fromtimespec                     1351884293524900 **** _PyFloat_FromPyTime                     1351884.294  ooo>>  1351884.294 (O:0x7f17b4b84220) 1351884.294 1642516506.751  2022-01-18T06:35:06 -- python->clock_gettime(CLOCK_MONOTONIC, { 1351884, 321497772 })                                          = 0 **** pytime_fromtimespec                     1351884321497772 python->clock_gettime(CLOCK_REALTIME, { 1642516507, 359952744 })                                        = 0 **** pytime_fromtimespec                     1642516507359952744 **** _PyTime_GetSystemClockWithInfo          1642516507359952744 **** _PyFloat_FromPyTime                     1642516507.360  ooo>>  1642516507.360 (O:0x7f17b4b84220) **** parse_time_t_args                       1642516507....  &lt;&lt;ooo  1642516507.360 (O:0x7f17b4b84220) python->localtime_r(1642516507, { 7, 35, 6, 18, 0, 122, 2, 17, 0 })                                     = { 7, 35, 6, 18, 0, 122, 2, 17, 0 } python->clock_gettime(CLOCK_MONOTONIC, { 1351884, 863699790 })                                          = 0 **** pytime_fromtimespec                     1351884863699790 **** _PyFloat_FromPyTime                     1351884.864  ooo>>  1351884.864 (O:0x7f17b4b84400) 1351884.864 1642516507.360  2022-01-18T06:35:07 -- python->clock_gettime(CLOCK_MONOTONIC, { 1351884, 889163504 })                                          = 0 **** pytime_fromtimespec                     1351884889163504 python->clock_gettime(CLOCK_REALTIME, { 1642516507, 918812741 })                                        = 0 **** pytime_fromtimespec                     1642516507918812741 **** _PyTime_GetSystemClockWithInfo          1642516507918812741 **** _PyFloat_FromPyTime                     1676140654.381  ooo>>  1676140654.381 (O:0x7f17b4b84400) **** parse_time_t_args                       1676140654....  &lt;&lt;ooo  1676140654.381 (O:0x7f17b4b84400) python->localtime_r(1676140654, { 34, 37, 10, 11, 1, 123, 6, 41, 0 })                                   = { 34, 37, 10, 11, 1, 123, 6, 41, 0 } python->clock_gettime(CLOCK_MONOTONIC, { 1351885, 400173973 })                                          = 0 **** pytime_fromtimespec                     1351885400173973 **** _PyFloat_FromPyTime                     1384657.598  ooo>>  1384657.598 (O:0x7f17b4b84220) 1415972.159 1707394538.291  2023-02-11T10:37:34 -- python->clock_gettime(CLOCK_MONOTONIC, { 1351885, 400525494 })                                          = 0 **** pytime_fromtimespec                     1351885400525494 python->clock_gettime(CLOCK_REALTIME, { 1642516508, 421229660 })                                        = 0 **** pytime_fromtimespec                     1642516508421229660 **** _PyTime_GetSystemClockWithInfo          1642516508421229660 **** _PyFloat_FromPyTime                     1642516508.421  ooo>>  1642516508.421 (O:0x7f17b4b84220) **** parse_time_t_args                       1642516508....  &lt;&lt;ooo  1642516508.421 (O:0x7f17b4b84220) python->localtime_r(1642516508, { 8, 35, 6, 18, 0, 122, 2, 17, 0 })                                     = { 8, 35, 6, 18, 0, 122, 2, 17, 0 } python->clock_gettime(CLOCK_MONOTONIC, { 1351885, 902929970 })                                          = 0 **** pytime_fromtimespec                     1351885902929970 **** _PyFloat_FromPyTime                     1351885.903  ooo>>  1351885.903 (O:0x7f17b4b84400) 1351885.903 1642516508.421  2022-01-18T06:35:08 --<\/code><\/pre>\n<\/div><\/div>\n<p>  <\/p>\n<p><em>\u041a\u0441\u0442\u0430\u0442\u0438, \u0432\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043c\u0435\u0442\u0438\u043b, \u0447\u0442\u043e \u0446\u0438\u0444\u0440\u044b \u0443\u0441\u043f\u0435\u043b\u0438 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u043e\u0434\u0440\u0430\u0441\u0442\u0438, \u0447\u0442\u043e 1642M (\u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043c\u0435\u0441\u044f\u0446 \u043d\u0430\u0437\u0430\u0434 \u0431\u044b\u043b\u0430 \u0435\u0449\u0435 1640M), \u0447\u0442\u043e 1676M (\u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0440\u0430\u043d\u0435\u0435 \u0431\u044b\u043b\u0430 1674M), \u0438 \u0441\u0434\u0435\u043b\u0430\u043b\u0438 \u043e\u043d\u0438 \u044d\u0442\u043e \u043f\u0440\u043e\u043f\u043e\u0440\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e (\u0447\u0442\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0435\u0449\u0435 \u043e\u0434\u0438\u043d \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442 \u043f\u0440\u043e\u0442\u0438\u0432 \u0431\u0438\u0442\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438).<\/em><\/p>\n<p>  <\/p>\n<p>\u0411\u0435\u0440\u0451\u043c \u043f\u0435\u0440\u0432\u044b\u0439 \u043a\u0443\u0441\u043e\u043a \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0435\u043c 1676M \u0432\u043c\u0435\u0441\u0442\u043e \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0433\u043e 1642M \u0438 \u043f\u044b\u0442\u0430\u0435\u043c\u0441\u044f \u0447\u0435\u0440\u0435\u0437 \u043d\u0435\u0433\u043e \u0432\u044b\u0439\u0442\u0438 \u043d\u0430 \u0442\u043e\u0433\u043e &#171;\u043c\u0435\u0440\u0446\u0430\u044e\u0449\u0435\u0433\u043e&#187; \u0432\u0434\u0430\u043b\u0435\u043a\u0435 \u0441\u0443\u0441\u043b\u0438\u043a\u0430.<br \/>  \u0418\u0442\u0430\u043a \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0432\u044b\u0445\u043b\u043e\u043f \u0442\u0435\u0441\u0442\u0430 \u0434\u043b\u044f \u043f\u0435\u0440\u0432\u043e\u0439 \u0430\u043d\u043e\u043c\u0430\u043b\u0438\u0438 (diff \u0441\u0438\u043d\u0442\u0430\u043a\u0441 \u0434\u043b\u044f \u0443\u0434\u0430\u0440\u0435\u043d\u0438\u044f, \u0442.\u0435. \u043f\u043e\u0434\u0441\u0432\u0435\u0442\u043a\u0438 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0441\u043b\u0435\u0434\u0430 \u0437\u0432\u0435\u0440\u044c\u043a\u0430):<\/p>\n<p>  <\/p>\n<pre><code class=\"diff\">  python->clock_gettime(CLOCK_REALTIME, { 1642516506, 243048649 })                                        = 0   **** pytime_fromtimespec                     1642516506243048649   **** _PyTime_GetSystemClockWithInfo          1642516506243048649 - **** _PyFloat_FromPyTime                     1676140652.455  ooo>>  1676140652.455 (O:0x7f17b4b84220)   **** parse_time_t_args                       1676140652....  &lt;&lt;ooo  1676140652.455 (O:0x7f17b4b84220)   python->localtime_r(1676140652, { 32, 37, 10, 11, 1, 123, 6, 41, 0 })                                   = { 32, 37, 10, 11, 1, 123, 6, 41, 0 }   python->clock_gettime(CLOCK_MONOTONIC, { 1351883, 724655853 })                                          = 0   **** pytime_fromtimespec                     1351883724655853   **** _PyFloat_FromPyTime                     1384655.922  ooo>>  1384655.922 (O:0x7f17b4b84400)   1415970.483   1707394536.366  2023-02-11T10:37:32 --<\/code><\/pre>\n<p>  <\/p>\n<p>\u0422.\u0435. \u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0432\u044b\u0448\u0435 \u0432 \u043a\u043e\u0434 \u0434\u043b\u044f <a href=\"https:\/\/github.com\/python\/cpython\/blob\/v3.10.2\/Modules\/timemodule.c#L72\" rel=\"nofollow noopener noreferrer\">_PyFloat_FromPyTime<\/a>, \u0438 \u0447\u0442\u043e \u043c\u044b \u0442\u0430\u043c \u0432\u0438\u0434\u0438\u043c? \u0410 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0442\u043e \u0447\u0442\u043e <code>_PyTime_AsSecondsDouble(t)<\/code> \u0432\u0434\u0440\u0443\u0433 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 1676M \u0432\u043c\u0435\u0441\u0442\u043e 1642M, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0437\u0430\u0442\u0435\u043c, \u0443\u0436\u0435 \u0432 \u0438\u0441\u043f\u043e\u0440\u0447\u0435\u043d\u043d\u043e\u043c \u0432\u0438\u0434\u0435, \u043e\u0431\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u043e\u0431\u044a\u0435\u043a\u0442.<br \/>  \u0418 \u044d\u0442\u043e \u043f\u0440\u0438 \u0432\u0435\u0440\u043d\u043e\u043c <code>t<\/code>, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0431\u044b\u043b\u043e <code>1642516506243048649<\/code>, \u0447\u0442\u043e \u043f\u0440\u0438 \u0434\u0435\u043b\u0435\u043d\u0438\u0438 \u043d\u0430 <code>1e9<\/code> \u0432\u0434\u0440\u0443\u0433 \u043f\u043e\u0447\u0435\u043c\u0443-\u0442\u043e \u0434\u0430\u0451\u0442 \u043d\u0430\u043c <code>1676140652.455<\/code>!<\/p>\n<p>  <\/p>\n<p>\u0415\u0441\u043b\u0438 \u0436\u0435 \u043c\u044b \u0437\u0430\u0433\u043b\u044f\u043d\u0435\u043c \u0432 <a href=\"https:\/\/github.com\/python\/cpython\/blob\/v3.10.2\/Python\/pytime.c#L452-L470\" rel=\"nofollow noopener noreferrer\">_PyTime_AsSecondsDouble<\/a>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e \u0432\u0441\u0435\u0439 \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0438 \u0435\u0441\u0442\u044c \u0441\u0443\u0442\u044c \u0438\u0441\u043a\u043e\u043c\u0430\u044f \u043c\u0430\u0448\u0438\u043d\u0430 \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u043d\u0430\u043c \u0442\u0430\u043c \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u043e \u043f\u0440\u043e\u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u0443\u044e\u0442 \u0433\u043b\u0443\u0431\u043e\u043a\u0438\u0439 \u0444\u0438\u043b\u043e\u0441\u043e\u0444\u0441\u043a\u0438\u0439 \u0441\u043c\u044b\u0441\u043b \u0444\u0440\u0430\u0437\u044b &#171;\u0421\u0443\u0441\u043b\u0438\u043a\u0430 \u0432\u0438\u0434\u0438\u0448\u044c?.. \u0412\u043e\u0442 \u0438 \u044f \u043d\u0435 \u0432\u0438\u0436\u0443\u2026 \u0410 \u043e\u043d \u0435\u0441\u0442\u044c&#187;:<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">double _PyTime_AsSecondsDouble(_PyTime_t t) {     \/* volatile avoids optimization changing how numbers are rounded *\/     volatile double d;      if (t % SEC_TO_NS == 0) {         _PyTime_t secs;         \/* Divide using integers to avoid rounding issues on the integer part.            1e-9 cannot be stored exactly in IEEE 64-bit. *\/         secs = t \/ SEC_TO_NS;         d = (double)secs;     }     else {         d = (double)t; \/* \u0422\u044b \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u0448\u044c, \u0447\u0442\u043e \u044d\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442? *\/         d \/= 1e9;      \/* \u042d\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442, \u0447\u0442\u043e \u044d\u0442\u0430 \u043f\u0430\u043a\u043e\u0441\u0442\u044c \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442! *\/     }     return d; }<\/code><\/pre>\n<p>  <\/p>\n<p>\u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043d\u0438\u043a\u0430\u043a\u043e\u0439 \u043c\u0430\u0433\u0438\u0438 \u0442\u0443\u0442 \u043d\u0435\u0442 \u0438 \u0431\u044b\u0442\u044c \u043d\u0435 \u043c\u043e\u0436\u0435\u0442: <code>volatile<\/code> \u0434\u043b\u044f <code>d<\/code> \u2014 \u044d\u0442\u043e \u043f\u043e\u043f\u044b\u0442\u043a\u0430 \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438, \u0438\u0437\u043c\u0435\u043d\u044f\u044e\u0449\u0435\u0439 \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u043e\u043a\u0440\u0443\u0433\u043b\u0435\u043d\u0438\u044f \u0447\u0438\u0441\u0435\u043b, \u0430 \u043f\u0435\u0440\u0432\u0430\u044f \u0432\u0435\u0442\u043a\u0430 \u0441\u043b\u0443\u0436\u0438\u0442 \u0434\u043b\u044f \u043f\u0440\u0435\u0434\u043e\u0442\u0432\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043e\u0448\u0438\u0431\u043a\u0438 \u0432 \u0440\u0430\u0441\u0447\u0435\u0442\u0430\u0445 \u043d\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0445 \u0441 64-\u0431\u0438\u0442\u043d\u044b\u043c FP, \u0435\u0441\u043b\u0438 \u0447\u0438\u0441\u043b\u043e \u0434\u0435\u043b\u0438\u0442\u0441\u044f \u043d\u0430 \u0435\u0434\u0438\u043d\u0438\u0446\u0443 \u0441 9 \u043d\u0443\u043b\u044f\u043c\u0438 \u0431\u0435\u0437 \u043e\u0441\u0442\u0430\u0442\u043a\u0430 (\u0438\u043c\u0435\u0435\u043c \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u0440\u0443\u0433\u043b\u044b\u0435 \u0441\u0435\u043a\u0443\u043d\u0434\u044b). \u0422.\u0435. \u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u043e \u0442\u0443\u0442 \u043b\u0438\u0431\u043e \u0432 \u0446\u0435\u043b\u043e\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u043e\u0439 \u0434\u043b\u044f int64_t, \u043b\u0438\u0431\u043e \u0432 FP \u0430\u0440\u0438\u0444\u043c\u0435\u0442\u0438\u043a\u0435 \u0434\u043b\u044f double (\u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u043e\u0441\u0442\u0430\u0442\u043a\u0430 \u043f\u0440\u0438 \u0434\u0435\u043b\u0435\u043d\u0438\u0438 <code>t<\/code> \u043d\u0430 <code>SEC_TO_NS<\/code>, \u0442\u043e \u0435\u0441\u0442\u044c \u043d\u0430 \u0442\u043e\u0442 \u0441\u0430\u043c\u044b\u0439 \u043b\u044f\u0440\u0434).<br \/>  \u0415\u0441\u043b\u0438 \u043a\u043e\u0440\u043e\u0447\u0435, \u0442\u043e \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u044d\u0442\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u043e <a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%94%D0%B5%D1%82%D0%B5%D1%80%D0%BC%D0%B8%D0%BD%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D1%8B%D0%B9_%D0%B0%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC\" rel=\"nofollow noopener noreferrer\">\u0434\u0435\u0442\u0435\u0440\u043c\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0430<\/a>, \u0447\u0442\u043e \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0438\u0441\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u043a\u0430\u043a\u0438\u0435-\u043b\u0438\u0431\u043e \u043e\u0442\u043a\u043b\u043e\u043d\u0435\u043d\u0438\u044f \u043e\u0442 \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u043e\u0431\u044b\u0447\u043d\u043e\u0433\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0434\u0435\u043b\u0435\u043d\u0438\u044f <code>t \/ 1e9<\/code>. \u0427\u0442\u043e \u0434\u043b\u044f <code>1642516506243048649 \/ 1e9<\/code> \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c <code>1642516506.243<\/code> \u0430 \u043d\u0438\u043a\u0430\u043a \u043d\u0435 <code>1676140652.455<\/code>.<br \/>  \u041d\u0443, \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0435\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u0435\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e.<\/p>\n<p>  <\/p>\n<p>\u041e\u0442\u0441\u044e\u0434\u0430 \u0432\u044b\u0432\u043e\u0434, \u0447\u0442\u043e \u043e\u043d\u0430 (\u0442\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u0430) \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e. \u041a\u0430\u043a \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0432 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435 \u0438 \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u043b\u043e\u0441\u044c&#8230;<\/p>\n<p>  <\/p>\n<p>&#171;\u0410 \u0433\u0434\u0435 \u0436\u0435 \u0442\u043e\u0442 <code>1707M<\/code> (\u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 <code>time.time()<\/code>) \u0432 \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u044b\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u0445&#187; \u0441\u043f\u0440\u043e\u0441\u0438\u0442 \u0446\u0435\u043f\u043a\u0438\u0439 \u0438 \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044c. \u0418 \u044f \u0435\u043c\u0443 \u043d\u0435\u0437\u0430\u043c\u0435\u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043e\u0442\u0432\u0435\u0447\u0443: \u043b\u0438\u0431\u043e \u043c\u044b \u0434\u043e \u043d\u0438\u0445 \u0435\u0449\u0435 \u043d\u0435 \u0434\u043e\u0431\u0440\u0430\u043b\u0438\u0441\u044c (\u043d\u0443\u0436\u043d\u0430 \u0435\u0449\u0435 \u043f\u0430\u0440\u043e\u0447\u043a\u0430 <code>printf<\/code> \u0433\u0434\u0435-\u043d\u0438\u0431\u0443\u0434\u044c), \u043b\u0438\u0431\u043e \u044d\u0442\u043e \u0442\u0430\u043a \u043d\u0435 \u0434\u0435\u0431\u0430\u0436\u0438\u0442\u0441\u044f (\u0445\u0430\u0439\u0437\u0435\u043d\u0431\u0430\u0433 \u0442\u0443\u0442 \u0432\u0441\u0451-\u0442\u0430\u043a\u0438 \u0438\u043b\u0438 \u043f\u043e\u0433\u0443\u043b\u044f\u0442\u044c \u0432\u044b\u0448\u0435\u043b), \u043b\u0438\u0431\u043e, \u0447\u0442\u043e \u0441\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e, \u043c\u044b \u0438\u043c\u0435\u0435\u043c \u043f\u043e\u0445\u043e\u0436\u0443\u044e \u043e\u0448\u0438\u0431\u043a\u0443 \u0432 FP \u043f\u0440\u0438 \u043e\u043a\u0440\u0443\u0433\u043b\u0435\u043d\u0438\u0438 \u0447\u0438\u0441\u043b\u0430 (\u0438\u043b\u0438 \u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u043e\u043d\u043e\u0433\u043e \u043d\u0430 <code>%.3f<\/code>) \u0432 \u043f\u0438\u0442\u043e\u043d\u044c\u0435\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0438\u043d\u0442\u0435\u0440\u043f\u043e\u043b\u044f\u0446\u0438\u0438 %-\u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u043c.<\/p>\n<p>  <\/p>\n<p>\u041a\u0430\u043a-\u0442\u043e \u0442\u0430\u043a.<br \/>  \u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043f\u043e\u0434\u043e\u0437\u0440\u0435\u043d\u0438\u0435 \u043d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043f\u0440\u0438\u0447\u0438\u043d\u044b:<\/p>\n<p>  <\/p>\n<ol>\n<li>\u043b\u0438\u0431\u043e FPU, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0447\u0442\u043e-\u043b\u0438\u0431\u043e \u043f\u043e\u0445\u043e\u0436\u0435\u0435 \u043d\u0430 &#171;broken AMD FPU FIP\/FDP\/FOP leak&#187; <a href=\"https:\/\/xenbits.xen.org\/xsa\/advisory-172.html\" rel=\"nofollow noopener noreferrer\">XSA-172<\/a> (\u0437\u0430\u043c\u0435\u0442\u0438\u043c \u0447\u0442\u043e \u0437\u0434\u0435\u0441\u044c \u043a\u0430\u043a \u0438 \u0443 \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u0430 \u0440\u0435\u0447\u044c \u043f\u0440\u043e AMD)<\/li>\n<li>\u043b\u0438\u0431\u043e \u043f\u043e\u0432\u0440\u0435\u0436\u0434\u0435\u043d\u043d\u0430\u044f \u043f\u0430\u043c\u044f\u0442\u044c (\u0441\u0442\u0440\u0430\u043d\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0442\u043e \u043e\u043d\u043e \u0432\u0441\u0451 \u043d\u0430 \u0443\u0434\u0438\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e \u0438 \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043d\u0435 \u043f\u0440\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0438\u0433\u0434\u0435 \u0431\u043e\u043b\u0435\u0435, \u0442\u0435\u043c \u0431\u043e\u043b\u0435\u0435 \u0435\u0441\u043b\u0438 \u0442\u043e, \u043a\u0430\u043a \u043e\u043d\u043e \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442, \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043d\u0430 \u0441\u0442\u0435\u043a\u0435)<\/li>\n<li>\u043b\u0438\u0431\u043e hypervisor, \u043a \u043f\u0440\u0438\u043c\u0435\u0440\u0443 \u0447\u0442\u043e-\u043d\u0438\u0431\u0443\u0434\u044c \u0438\u0437 \u043e\u043f\u0435\u0440\u044b <a href=\"https:\/\/arxiv.org\/abs\/1806.07480\" rel=\"nofollow noopener noreferrer\">LazyFP<\/a> \u0438 \u0442.\u043f. \u0438\u043b\u0438 \u043a\u0430\u043a \u0435\u0441\u043b\u0438 \u0431\u044b \u043a\u0442\u043e-\u0442\u043e \u043f\u0440\u043e\u0431\u0443\u0435\u0442 \u0441\u0430\u043c \u0445\u043e\u0441\u0442 \u0438\u043b\u0438 \u043a\u0430\u043a\u0443\u044e-\u043b\u0438\u0431\u043e \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u043a\u0443 \u043d\u0430 \u043d\u0435\u043c \u043d\u0430 exploit \u0432 \u0441\u0442\u043e\u0440\u043e\u043d\u0443 \u0432\u0435\u043a\u0442\u043e\u0440\u043e\u0432 \u0442\u0438\u043f\u0430 branch predictor attack (\u0442\u0438\u043f\u0430 \u0442\u0435\u0445 \u0436\u0435 meltdown\/spectre) \u0438 \u0442\u0435\u043c \u0441\u0430\u043c\u044b\u043c \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u043f\u043e\u043b\u043e\u043c\u043a\u0443 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u043c\u0430\u0448\u0438\u043d\u044b\/CPU\/FPU \u0438 \u0442.\u0434.<\/li>\n<\/ol>\n<p>  <\/p>\n<p>\u041d\u0430 \u044d\u0442\u043e\u043c \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0431\u044b \u0438 \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u044c, \u043f\u043e\u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u043e\u0432\u0430\u0432 \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u0443 \u043b\u0438\u0431\u043e \u043a\u0430\u043a-\u0442\u043e \u0437\u0430\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430 \u0441\u043c\u0435\u043d\u0438\u0442\u044c \u0434\u043b\u044f \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u043a\u0438 host, \u043b\u0438\u0431\u043e \u043f\u043e\u043c\u0435\u043d\u044f\u0442\u044c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0445\u043e\u0441\u0442\u0435\u0440\u0430.<br \/>  \u041e\u0434\u043d\u0430\u043a\u043e, \u0437\u0430\u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u043f\u043e\u043c\u043e\u0447\u044c \u043b\u044e\u0434\u044f\u043c \u0432\u044b\u044f\u0441\u043d\u0438\u0442\u044c \u0447\u0442\u043e \u044d\u0442\u043e \u0442\u0430\u043a\u043e\u0435 \u0437\u0430 \u0431\u0435\u0434\u0430.<br \/>  \u041d\u0430\u0431\u0440\u043e\u0441\u0430\u043b <del>\u043d\u0430 \u043a\u043e\u043b\u0435\u043d\u043a\u0435<\/del> \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 <a href=\"https:\/\/gist.github.com\/sebres\/0bba158de5bb01736ac4da93fe7916d2\" rel=\"nofollow noopener noreferrer\">\u0441\u043a\u0440\u0438\u043f\u0442<\/a>, \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u044e\u0449\u0438\u0439 \u043f\u0440\u043e\u0441\u0442\u0435\u043d\u044c\u043a\u0438\u0439 \u043a\u043e\u0434 \u043d\u0430 \u0441\u044f\u0445 (\u0431\u0435\u0437\u043e \u0432\u0441\u044f\u043a\u0438\u0445 \u043f\u0438\u0442\u043e\u043d\u043e\u0432) \u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u044e\u0449\u0438\u0439 \u0435\u0433\u043e \u044d\u043a\u0437\u0435\u0448\u043d\u0438\u043a \u0441 \u0446\u0435\u043b\u044c\u044e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c, \u0447\u0442\u043e \u0443 \u043d\u0430\u0441 \u0442\u0443\u0442 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0441\u043b\u043e\u043c\u0430\u043d\u043e FPU \u0438\u043b\u0438 \u043f\u0430\u043c\u044f\u0442\u044c.<br \/>  \u0415\u0441\u043b\u0438 \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u0442\u0435\u0441\u0442\u0430 time-jump \u0431\u0443\u0434\u0435\u0442 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d (\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0435 \u043d\u0430\u043d\u043e\u0441\u0435\u043a\u0443\u043d\u0434\u044b, \u043d\u043e \u043d\u0435\u0432\u0435\u0440\u043d\u044b\u0435 \u0441\u0435\u043a\u0443\u043d\u0434\u044b), \u044d\u0442\u043e \u0441\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e \u0431\u0443\u0434\u0435\u0442 \u0441\u0438\u0433\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043e \u00ab\u0441\u043b\u043e\u043c\u0430\u043d\u043d\u043e\u043c\u00bb FPU, \u0432 \u043f\u0440\u043e\u0442\u0438\u0432\u043d\u043e\u043c \u0436\u0435 \u0441\u043b\u0443\u0447\u0430\u0435 \u044d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0441\u0438\u0433\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043e \u00ab\u0441\u043b\u043e\u043c\u0430\u043d\u043d\u043e\u0439\u00bb \u043f\u0430\u043c\u044f\u0442\u0438, \u0442\u0430\u043a \u043a\u0430\u043a \u043f\u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044e \u0441 python, \u044d\u0442\u043e\u0442 \u043a\u043e\u0434 \u0432\u0441\u0435\u0433\u0434\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043e\u0434\u043d\u0438 \u0438 \u0442\u0435 \u0436\u0435 \u0430\u0434\u0440\u0435\u0441\u0430 \u043f\u0430\u043c\u044f\u0442\u0438 \u0432 \u0441\u0442\u0435\u043a\u0435 \u0438\u043b\u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b.<br \/>  \u041f\u043e\u043a\u0430 \u0431\u0435\u0437 \u043e\u0442\u0432\u0435\u0442\u0430, <del>\u0434\u0432\u0430 \u0434\u043d\u044f \u0435\u0449\u0435 \u043d\u0435 \u043f\u0440\u043e\u0448\u043b\u043e<\/del>.<\/p>\n<p>  <\/p>\n<p>\u0417\u0430 \u0441\u0438\u043c \u043f\u043e\u0437\u0432\u043e\u043b\u044c\u0442\u0435 \u043e\u0442\u043a\u043b\u0430\u043d\u044f\u0442\u044c\u0441\u044f, \u0432\u0441\u0435\u043c \u0443\u0447\u0430\u0441\u0442\u0432\u043e\u0432\u0430\u0432\u0448\u0438\u043c \u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u0441\u043f\u0430\u0441\u0438\u0431\u043e. \u0410\u0445 \u0434\u0430, \u043d\u0438\u0436\u0435 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043e\u043f\u0440\u043e\u0441, \u043a\u0430\u043a \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u0441\u044f \u00abMessieurs, faites vos jeux\u00bb&#8230;<\/p>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"v-portal\" style=\"display:none;\"><\/div>\n<\/div>\n<p> <!----> <\/p>\n<div class=\"tm-article-poll\">\n<div class=\"tm-notice tm-article-poll__notice tm-notice_positive\"><!----> <\/p>\n<div class=\"tm-notice__inner\"><!----> <\/p>\n<div class=\"tm-notice__content\"><span>\u0422\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u043c\u043e\u0433\u0443\u0442 \u0443\u0447\u0430\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0432 \u043e\u043f\u0440\u043e\u0441\u0435. <a rel=\"nofollow\" href=\"\/kek\/v1\/auth\/habrahabr\/?back=\/ru\/post\/646395\/&#038;hl=ru\">\u0412\u043e\u0439\u0434\u0438\u0442\u0435<\/a>, \u043f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430.<\/span><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__header\">\u0427\u0442\u043e \u044d\u0442\u043e \u0432\u0441\u0451-\u0442\u0430\u043a\u0438 \u0437\u0430 \u0437\u0432\u0435\u0440\u044c?<\/div>\n<div class=\"tm-article-poll__answers\">\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent\">             33.33%           <\/span> <span class=\"tm-article-poll__answer-label\">FPU<\/span> <span class=\"tm-article-poll__answer-votes\">             9           <\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress\" style=\"width:33.33%;\"><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent\">             3.7%           <\/span> <span class=\"tm-article-poll__answer-label\">CPU<\/span> <span class=\"tm-article-poll__answer-votes\">             1           <\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress\" style=\"width:3.7%;\"><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent\">             3.7%           <\/span> <span class=\"tm-article-poll__answer-label\">\u043f\u0430\u043c\u044f\u0442\u044c<\/span> <span class=\"tm-article-poll__answer-votes\">             1           <\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress\" style=\"width:3.7%;\"><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent\">             11.11%           <\/span> <span class=\"tm-article-poll__answer-label\">\u043f\u0438\u0442\u043e\u043d<\/span> <span class=\"tm-article-poll__answer-votes\">             3           <\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress\" style=\"width:11.11%;\"><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent\">             7.41%           <\/span> <span class=\"tm-article-poll__answer-label\">\u0436\u0443\u043a<\/span> <span class=\"tm-article-poll__answer-votes\">             2           <\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress\" style=\"width:7.41%;\"><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent tm-article-poll__answer-percent_winning\">             55.56%           <\/span> <span class=\"tm-article-poll__answer-label\">\u0441\u0443\u0441\u043b\u0438\u043a<\/span> <span class=\"tm-article-poll__answer-votes\">             15           <\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress tm-article-poll__answer-progress_winning\" style=\"width:55.56%;\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__stats\">        \u041f\u0440\u043e\u0433\u043e\u043b\u043e\u0441\u043e\u0432\u0430\u043b\u0438 27 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439.          \u0412\u043e\u0437\u0434\u0435\u0440\u0436\u0430\u043b\u0438\u0441\u044c 11 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439.      <\/div>\n<\/div>\n<p> \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:\/\/habr.com\/ru\/post\/646395\/\"> https:\/\/habr.com\/ru\/post\/646395\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body_version-1\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/webt\/ki\/0g\/ta\/ki0gtaf4rz5vn8wtzngalf3w0sw.jpeg\" data-src=\"https:\/\/habrastorage.org\/webt\/ki\/0g\/ta\/ki0gtaf4rz5vn8wtzngalf3w0sw.jpeg\" data-blurred=\"true\"\/><\/p>\n<p>  <\/p>\n<p>\u0417\u0434\u0435\u0441\u044c \u043b\u0435\u0436\u0438\u0442 \u043e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u0435 &#171;\u0440\u0430\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f&#187; <a href=\"\/ru\/post\/598909\/\">\u041d\u043e\u0432\u043e\u0433\u043e\u0434\u043d\u0438\u0439 \u0434\u0435\u0442\u0435\u043a\u0442\u0438\u0432: \u0441\u0442\u0440\u0430\u043d\u043d\u044b\u0439 \u0445\u0430\u0439\u0437\u0435\u043d\u0431\u0430\u0433 \u0432 \u00ab\u043f\u0438\u0442\u043e\u043d\u044c\u0438\u0445\u00bb \u0447\u0430\u0441\u0430\u0445<\/a>.<br \/>  \u0418\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u0445\u043e\u0442\u0435\u043b \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0441\u0442\u0430\u0442\u044c\u044e \u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439, \u043d\u043e \u043f\u043e\u043d\u044f\u043b \u0447\u0442\u043e \u0430\u043f\u0434\u0435\u0439\u0442 \u0432\u044b\u0445\u043e\u0434\u0438\u0442 \u0447\u0443\u0442\u044c \u043d\u0435 \u0434\u043b\u0438\u043d\u043d\u0435\u0435 \u0441\u0430\u043c\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438.<\/p>\n<p>  <\/p>\n<p>\u041d\u0430\u043f\u043e\u043c\u043d\u044e \u043a\u0440\u0430\u0442\u043a\u043e\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0447\u0430\u0441\u0442\u0438: python, \u043a\u0430\u043a \u0432\u043f\u0440\u043e\u0447\u0435\u043c \u0438 \u0432\u0441\u0451 \u043d\u0430 \u043d\u0435\u043c \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0435, \u0432\u0440\u0435\u043c\u0435\u043d\u0430\u043c\u0438 \u043f\u0440\u044b\u0433\u0430\u0435\u0442 \u0432 \u0431\u0443\u0434\u0443\u0449\u0435\u0435, \u0430 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e \u0432 2023-\u0439 \u0433\u043e\u0434 \u0432 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0437\u043e\u043d\u0435, \u0438 \u043f\u043e \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0434\u0430\u043d\u043d\u044b\u043c \u0432 2024-\u0439 \u0432 UTC\/GMT (\u043d\u043e \u044d\u0442\u043e \u043d\u0435 \u0442\u043e\u0447\u043d\u043e) \u0438 \u043f\u043e\u0431\u044b\u0432 \u0442\u0430\u043c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u043e\u0431\u0440\u0430\u0442\u043d\u043e \u0432 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435.<br \/>  \u0412\u043e \u0432\u0440\u0435\u043c\u044f \u043f\u0440\u044b\u0436\u043a\u0430 \u043e\u043d\u043e \u0432\u0435\u0434\u0435\u0442 \u0441\u0435\u0431\u044f \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e (\u0442.\u0435. \u0441\u0447\u0438\u0442\u0430\u0435\u0442 \u043d\u0430\u043d\u043e-, \u043c\u0438\u043a\u0440\u043e- \u0438 \u043c\u0438\u043b\u043b\u0438\u0441\u0435\u043a\u0443\u043d\u0434\u044b, \u0430 \u0442\u043e \u0438 \u0441\u0435\u043a\u0443\u043d\u0434\u044b, \u043a\u0430\u043a \u0431\u0443\u0434\u0442\u043e \u0432\u0440\u0435\u043c\u044f \u0438\u0434\u0435\u0442 \u043a\u0430\u043a \u043d\u0438 \u0432 \u0447\u0451\u043c \u043d\u0435 \u0431\u044b\u0432\u0430\u043b\u043e) \u0432 2023-\u043c \u0442.\u0435. \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e, \u043f\u0440\u0438 \u0442\u043e\u043c \u0447\u0442\u043e \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u044b\u0445 \u043f\u0440\u044b\u0436\u043a\u043e\u0432 \u0432\u0440\u0435\u043c\u044f \u0432\u043d\u043e\u0432\u044c \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u0431\u0443\u0434\u0442\u043e \u043f\u043e \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0435\u043d\u0438\u044e \u043e\u043d\u043e (\u0432\u0440\u0435\u043c\u044f) \u0442\u0435\u0447\u0435\u0442 \u0432 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e\u0439 \u0432\u0441\u0435\u043b\u0435\u043d\u043d\u043e\u0439. \u041e\u0434\u043d\u0430\u043a\u043e \u0441\u0442\u0440\u0430\u043d\u043d\u043e\u0435 \u0435\u0433\u043e &#171;\u043e\u0442\u0440\u0430\u0436\u0435\u043d\u0438\u0435&#187; \u0432 UTC\/GMT, \u043d\u0443 \u0442\u043e \u0447\u0442\u043e \u043a\u0430\u043a \u0431\u0443\u0434\u0442\u043e \u0431\u044b \u0432 2024-\u043c, \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043c\u0435\u043d\u0435\u0435 \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e, \u0438\u0431\u043e \u0434\u043b\u044f \u043d\u0435\u0433\u043e \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0435\u0442\u0441\u044f \u0441\u0442\u0440\u0430\u043d\u043d\u044b\u0435 \u0434\u0440\u0435\u0439\u0444\u044b \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043a \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u044e \u043f\u0440\u044b\u0436\u043a\u0430.<br \/>  \u0425\u043e\u0442\u044f \u043a\u0443\u0434\u0430 \u0443\u0436 \u0441\u0442\u0440\u0430\u043d\u043d\u0435\u0435.<\/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-328293","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/328293","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=328293"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/328293\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=328293"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=328293"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=328293"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}