{"id":475,"date":"2024-09-04T12:28:48","date_gmt":"2024-09-04T10:28:48","guid":{"rendered":"https:\/\/merkulova.thkit.ee\/wp20\/?page_id=475"},"modified":"2024-09-04T14:10:17","modified_gmt":"2024-09-04T12:10:17","slug":"harjutused","status":"publish","type":"page","link":"https:\/\/merkulova.thkit.ee\/wp20\/harjutused\/","title":{"rendered":"Harjutused"},"content":{"rendered":"\n<h1 class=\"wp-block-heading\">Harjutused 2-8\/10-12<\/h1>\n\n\n\n<p><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><a href=\"https:\/\/lastovski21.thkit.ee\/wp\/harjutused-3-7\/\">Harjutused 2-8\/10-12<\/a><\/li>\n<\/ol>\n\n\n\n<h1 class=\"wp-block-heading\">Harjutus 2 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0432 codesandbox<\/h1>\n\n\n\n<figure class=\"wp-block-embed\"><div class=\"wp-block-embed__wrapper\">\nhttps:\/\/github.com\/MihhailLastovski\/Harjutus2Codesandbox\n<\/div><\/figure>\n\n\n\n<p>\u041e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c CodeSandbox<br>\u0412\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u0448\u0430\u0431\u043b\u043e\u043d Vanilla Js<br>\u0412\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u0432 index.mjs \u044d\u0442\u043e\u0442 \u043a\u043e\u0434 \u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u0441 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043a\u0430\u043c\u0438 \u043c\u0430\u0448\u0438\u043d<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td>1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253<\/td><td><code>import<\/code><code>\".\/styles.css\"<\/code><code>;<\/code><code>const myjson = [<\/code><code>&nbsp;&nbsp;<\/code><code>{<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>Car: {<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>Color: <\/code><code>\"Rose red\"<\/code><code>,<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>\"Tinted windows\"<\/code><code>: <\/code><code>false<\/code><code>,<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>Wheels: 4,<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>\"Roof Cargo\"<\/code><code>: <\/code><code>null<\/code><code>,<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>Entertainment: [<\/code><code>\"Fm Radio\"<\/code><code>, <\/code><code>\"MP3, MP4 and MKV player\"<\/code><code>, <\/code><code>\"harman\/kardon speakers\"<\/code><code>],<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>Accessories: [<\/code><code>\"satnav\"<\/code><code>,<\/code><code>\"cruise control\"<\/code><code>]<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>},<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>Car2:{<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>Color: <\/code><code>\"Navy blue\"<\/code><code>,<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>\"Tinted windows\"<\/code><code>: <\/code><code>true<\/code><code>,<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>Wheels: 4,<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>\"Roof Cargo\"<\/code><code>: <\/code><code>\"Thule\"<\/code><code>,<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>Entertainment: [<\/code><code>\"Fm Radio\"<\/code><code>, <\/code><code>\"Apple CarPlay\/Android Auto\"<\/code><code>, <\/code><code>\"Bowers &amp; Wilkins Premium Sound speakers\"<\/code><code>],<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>Accessories: [<\/code><code>\"self drive system\"<\/code><code>,<\/code><code>\"lugagge cover\"<\/code><code>]<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>}<\/code><code>&nbsp;&nbsp;<\/code><code>}<\/code><code>];<\/code><code>document.getElementById(<\/code><code>\"app\"<\/code><code>).innerHTML = `<\/code><code>&lt;div id = <\/code><code>\"json\"<\/code><code>&gt;<\/code><code>&nbsp;&nbsp;<\/code><code>&lt;h1&gt;Car properties &lt;\/h1&gt;<\/code><code>&nbsp;&nbsp;<\/code><code>&lt;p&gt;Color: ${myjson[0].Car.Color}&lt;\/p&gt;<\/code><code>&nbsp;&nbsp;<\/code><code>&lt;p&gt;Tinted windows: ${myjson[0].Car[<\/code><code>\"Tinted windows\"<\/code><code>]}&lt;\/p&gt;<\/code><code>&nbsp;&nbsp;<\/code><code>&lt;p&gt;Wheels: ${myjson[0].Car.Wheels}&lt;\/p&gt;<\/code><code>&nbsp;&nbsp;<\/code><code>&lt;p&gt;Roof Cargo: ${myjson[0].Car[<\/code><code>\"Roof Cargo\"<\/code><code>]}&lt;\/p&gt;<\/code><code>&nbsp;&nbsp;<\/code><code>&lt;p&gt;Entertainment: ${myjson[0].Car.Entertainment}&lt;\/p&gt;<\/code><code>&nbsp;&nbsp;<\/code><code>&lt;p&gt;Accessories: ${myjson[0].Car.Accessories}&lt;\/p&gt;<\/code><code>&lt;\/div&gt;<\/code><code>&lt;table&gt;<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>&lt;tr style=<\/code><code>\"border: 1pt solid black\"<\/code><code>&gt;<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>&lt;th&gt;Property&lt;\/th&gt;<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>&lt;th&gt;Car0&lt;\/th&gt;<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>&lt;th&gt;Car1&lt;\/th&gt;<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>&lt;\/tr&gt;<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>${Object.keys(myjson[0].Car).map(property =&gt; `<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>&lt;tr&gt;<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>&lt;td&gt;${property}&lt;\/td&gt;<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>&lt;td&gt;${myjson[0].Car[property]}&lt;\/td&gt;<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>&lt;td&gt;${myjson[0].Car2[property]}&lt;\/td&gt;<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>&lt;\/tr&gt;<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>`).join(<\/code><code>''<\/code><code>)}<\/code><code>&nbsp;<\/code><code>&lt;\/table&gt;<\/code><code>&lt;style&gt;<\/code><code>&nbsp;<\/code><code>table, tr, td{<\/code><code>&nbsp;&nbsp;<\/code><code>border: 2pt solid black<\/code><code>&nbsp;<\/code><code>}<\/code><code>&lt;\/style&gt;<\/code><code>&nbsp;&nbsp;<\/code><code>`;<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h1 class=\"wp-block-heading\">Harjutus 3 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u043c \u0441 session storage<\/h1>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u041e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u043d\u043e\u0432\u0443\u044e \u0432\u043a\u043b\u0430\u0434\u043a\u0443 \u0432 chrome \u0438 \u0432\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b<\/li>\n\n\n\n<li><code>sessionStorage<\/code>&nbsp;\u2013 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u0441\u0435\u0430\u043d\u0441\u043e\u0432<\/li>\n\n\n\n<li><code>sessionStorage.setItem('color','enda lemmikv\u00e4rv')<\/code>\u2013 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u043d\u043e\u0432\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u0441\u0435\u0430\u043d\u0441\u043e\u0432<\/li>\n\n\n\n<li><code>sessionStorage.getItem('color')<\/code>&nbsp;\u2013 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430<\/li>\n<\/ol>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lastovski21.thkit.ee\/wp\/wp-content\/uploads\/2023\/09\/pilt-11.png\" alt=\"\" class=\"wp-image-1566\"\/><\/figure>\n\n\n\n<p>\u0412 application -&gt; Session Storage \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lastovski21.thkit.ee\/wp\/wp-content\/uploads\/2023\/09\/pilt-12.png\" alt=\"\" class=\"wp-image-1567\"\/><\/figure>\n\n\n\n<h1 class=\"wp-block-heading\">Harjutus 4 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u043c \u0441 local storage<\/h1>\n\n\n\n<ol class=\"wp-block-list\">\n<li><code>localStorage<\/code>&nbsp;\u2013 \u043a\u043e\u043c\u0430\u043d\u043b\u0430 \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430<\/li>\n\n\n\n<li><code>localStorage.setItem('car','audi')<\/code>&nbsp;\u2013 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u043d\u043e\u0432\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435<\/li>\n\n\n\n<li><code>localStorage.getItem('car')<\/code>&nbsp;\u2013 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435<\/li>\n<\/ol>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lastovski21.thkit.ee\/wp\/wp-content\/uploads\/2023\/09\/pilt-15.png\" alt=\"\" class=\"wp-image-1570\"\/><\/figure>\n\n\n\n<p>\u0412 application -&gt; Local Storage \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lastovski21.thkit.ee\/wp\/wp-content\/uploads\/2023\/09\/pilt-13.png\" alt=\"\" class=\"wp-image-1568\"\/><\/figure>\n\n\n\n<h1 class=\"wp-block-heading\">Harjutus 5 \u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0444\u0430\u0439\u043b\u044b cookie<\/h1>\n\n\n\n<p>.\\xh.exe -h https:\/\/www.youtube.com \u2013 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u044d\u0442\u043e\u0439 \u043a\u043e\u043d\u0441\u043e\u043b\u044c\u043d\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043a\u0430\u043a\u0438\u0435 cookie \u0444\u0430\u0439\u043b\u044b \u0431\u0435\u0440\u0435\u0442 youtube.com<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lastovski21.thkit.ee\/wp\/wp-content\/uploads\/2023\/10\/image-1-1024x433.png\" alt=\"\" class=\"wp-image-1638\"\/><\/figure>\n\n\n\n<h1 class=\"wp-block-heading\">Harjutus 6 \u0437\u0430\u043f\u0440\u043e\u0441 \u043a api \u043d\u0430 js<\/h1>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u041e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c codesandbox \u0438 \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u0448\u0430\u0431\u043b\u043e\u043d static (HTML)<\/li>\n\n\n\n<li>\u041f\u0438\u0448\u0435\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043a\u043e\u0434 \u0432 \u0444\u0430\u0439\u043b index.html<\/li>\n<\/ol>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td>123456789101112131415161718192021222324<\/td><td><code>&lt;!<\/code><code>DOCTYPE<\/code><code>html&gt;<\/code><code>&lt;<\/code><code>html<\/code><code>lang<\/code><code>=<\/code><code>\"en\"<\/code><code>&gt;<\/code><code>&nbsp;&nbsp;<\/code><code>&lt;<\/code><code>head<\/code><code>&gt;<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>&lt;<\/code><code>meta<\/code><code>charset<\/code><code>=<\/code><code>\"UTF-8\"<\/code><code>\/&gt;<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>&lt;<\/code><code>meta<\/code><code>name<\/code><code>=<\/code><code>\"viewport\"<\/code><code>content<\/code><code>=<\/code><code>\"width=device-width, initial-scale=1.0\"<\/code><code>\/&gt;<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>&lt;<\/code><code>meta<\/code><code>http-equiv<\/code><code>=<\/code><code>\"X-UA-Compatible\"<\/code><code>content<\/code><code>=<\/code><code>\"ie=edge\"<\/code><code>\/&gt;<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>&lt;<\/code><code>title<\/code><code>&gt;Static Template&lt;\/<\/code><code>title<\/code><code>&gt;<\/code><code>&nbsp;&nbsp;<\/code><code>&lt;\/<\/code><code>head<\/code><code>&gt;<\/code><code>&nbsp;&nbsp;<\/code><code>&lt;<\/code><code>body<\/code><code>&gt;<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>&lt;<\/code><code>button<\/code><code>type<\/code><code>=<\/code><code>\"button\"<\/code><code>onclick<\/code><code>=<\/code><code>\"loadDoc()\"<\/code><code>&gt;Request bacon&lt;\/<\/code><code>button<\/code><code>&gt;<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>&lt;<\/code><code>p<\/code><code>id<\/code><code>=<\/code><code>\"demo\"<\/code><code>&gt;&lt;\/<\/code><code>p<\/code><code>&gt;<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>&lt;<\/code><code>script<\/code><code>&gt;<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>function loadDoc() {<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>const xhttp = new XMLHttpRequest();<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>xhttp.onload = function () {<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>document.getElementById(\"demo\").innerHTML = this.responseText;<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>};<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>xhttp.open(\"GET\", \"<a href=\"https:\/\/baconipsum.com\/api\/?type=all-meat\">https:\/\/baconipsum.com\/api\/?type=all-meat<\/a>\");<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>xhttp.send();<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>}<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>&lt;\/<\/code><code>script<\/code><code>&gt;<\/code><code>&nbsp;&nbsp;<\/code><code>&lt;\/<\/code><code>body<\/code><code>&gt;<\/code><code>&lt;\/<\/code><code>html<\/code><code>&gt;<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>3. \u0421\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c \u0444\u0430\u0439\u043b \u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u043e\u0442\u0432\u0435\u0442 \u0441 API<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lastovski21.thkit.ee\/wp\/wp-content\/uploads\/2023\/09\/pilt-16.png\" alt=\"\" class=\"wp-image-1578\"\/><\/figure>\n\n\n\n<h1 class=\"wp-block-heading\">Harjutus 7 \u0440\u0430\u0431\u043e\u0442\u0430 \u0441 api github<\/h1>\n\n\n\n<p>\u041e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c codesandbox, \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u0448\u0430\u0431\u043b\u043e\u043d JS Vanilla<\/p>\n\n\n\n<p>\u0412\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u044d\u0442\u043e\u0442 \u043a\u043e\u0434 \u0432 index.mjs<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td>123456789101112131415161718192021222324252627282930313233343536373839404142<\/td><td><code>let<\/code><code>profile = <\/code><code>\"\"<\/code><code>;<\/code><code>let<\/code><code>profileName = <\/code><code>\"\"<\/code><code>;<\/code><code>let<\/code><code>profileID = <\/code><code>\"\"<\/code><code>;<\/code><code>let<\/code><code>profileLink = <\/code><code>\"\"<\/code><code>;<\/code><code>let<\/code><code>profileRepos = <\/code><code>\"\"<\/code><code>;<\/code><code>&nbsp;<\/code><code>function<\/code><code>renderPage(){<\/code><code>&nbsp;&nbsp;<\/code><code>document.getElementById(<\/code><code>\"app\"<\/code><code>).innerHTML = `<\/code><code>&nbsp;&nbsp;<\/code><code>&lt;div&gt;<\/code><code>&nbsp;&nbsp;<\/code><code>&lt;h1&gt;Github&lt;\/h1&gt;<\/code><code>&nbsp;&nbsp;<\/code><code>&lt;p&gt;Please enter profile name: &lt;\/p&gt;<\/code><code>&nbsp;&nbsp;<\/code><code>&lt;input \/&gt;<\/code><code>&nbsp;&nbsp;<\/code><code>&lt;div <\/code><code>class<\/code><code>=<\/code><code>\"content\"<\/code><code>&gt;<\/code><code>&nbsp;&nbsp;<\/code><code>&lt;h1 id=<\/code><code>\"name\"<\/code><code>&gt;Name: ${profileName}&lt;\/h1&gt;<\/code><code>&nbsp;&nbsp;<\/code><code>&lt;p id=<\/code><code>\"id\"<\/code><code>&gt;Id: ${profileID}&lt;\/p&gt;<\/code><code>&nbsp;&nbsp;<\/code><code>&lt;p id=<\/code><code>\"repos\"<\/code><code>&gt;Repos: ${profileRepos}&lt;\/p&gt;<\/code><code>&nbsp;&nbsp;<\/code><code>&lt;p id=<\/code><code>\"profileurl\"<\/code><code>&gt;Link: ${profileLink}<\/code><code>&nbsp;&nbsp;<\/code><code>&lt;a href=${profileName}<\/code><code>\" target=\"<\/code><code>_blank<\/code><code>\"&gt;&lt;\/a&gt;&lt;\/p&gt;<\/code><code>&nbsp;&nbsp;<\/code><code>&lt;\/div&gt;<\/code><code>&nbsp;&nbsp;<\/code><code>&lt;\/div&gt;<\/code><code>&nbsp;&nbsp;<\/code><code>`;<\/code><code>}<\/code><code>let fetchProfile = async () =&gt; {<\/code><code>&nbsp;&nbsp;<\/code><code>let fetchedData;<\/code><code>&nbsp;<\/code><code>&nbsp;&nbsp;<\/code><code>await fetch(`<a href=\"https:\/\/api.github.com\/users\/\">https:\/\/api.github.com\/users\/<\/a>${profile}`)<\/code><code>&nbsp;&nbsp;<\/code><code>.then((response) =&gt; response.json())<\/code><code>&nbsp;&nbsp;<\/code><code>.then((data) =&gt; (fetchedData = data));<\/code><code>&nbsp;&nbsp;<\/code><code>profileName = fetchedData.login ;<\/code><code>&nbsp;&nbsp;<\/code><code>profileID = fetchedData.id ;<\/code><code>&nbsp;&nbsp;<\/code><code>profileLink = fetchedData.html_url&nbsp; ;<\/code><code>&nbsp;&nbsp;<\/code><code>profileRepos = fetchedData.public_repos&nbsp; ;<\/code><code>&nbsp;<\/code><code>&nbsp;&nbsp;<\/code><code>renderPage();<\/code><code>};<\/code><code>renderPage();<\/code><code>const input = document.querySelector(\"<\/code><code>input<\/code><code>\");<\/code><code>input.addEventListener(\"<\/code><code>change\",updateValue);<\/code><code>function<\/code><code>updateValue(e){<\/code><code>&nbsp;&nbsp;<\/code><code>profile = e.target.value;<\/code><code>&nbsp;&nbsp;<\/code><code>fetchProfile();<\/code><code>}<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>\u041d\u0430 \u0432\u044b\u0445\u043e\u0434\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0434\u043b\u044f \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430 \u043f\u0440\u043e\u0444\u0438\u043b\u0435\u0439 GitHub, \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e API GitHub<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lastovski21.thkit.ee\/wp\/wp-content\/uploads\/2023\/09\/pilt-17.png\" alt=\"\" class=\"wp-image-1581\"\/><\/figure>\n\n\n\n<h1 class=\"wp-block-heading\">Harjutus 8 \u0432\u044b\u0432\u043e\u0434 xml \u0444\u0430\u0439\u043b\u0430 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e js<\/h1>\n\n\n\n<p>\u041f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u0432 \u0443\u0434\u043e\u0431\u043d\u044b\u0439 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440 \u043a\u043e\u0434\u0430<\/p>\n\n\n\n<p>\u0421\u043e\u0437\u0434\u0430\u0435\u043c \u0444\u0430\u0439\u043b games.xml \u0438 \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u0432 \u043d\u0435\u0433\u043e \u044d\u0442\u043e\u0442 \u043a\u043e\u0434<\/p>\n\n\n\n<p><code>function<\/code><code>loadXMLDoc() {<\/code><\/p>\n\n\n\n<p><code>&nbsp;&nbsp;<\/code><code>let<\/code><code>xmlhttp = <\/code><code>new<\/code><code>XMLHttpRequest();<\/code><\/p>\n\n\n\n<p><code>&nbsp;&nbsp;<\/code><code>xmlhttp.onreadystatechange = <\/code><code>function<\/code><code>() {<\/code><\/p>\n\n\n\n<p><code>&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>if<\/code><code>(<\/code><code>this<\/code><code>.readyState === 4 &amp;&amp; <\/code><code>this<\/code><code>.status === 200) {<\/code><\/p>\n\n\n\n<p><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>getGameDetails(<\/code><code>this<\/code><code>);<\/code><\/p>\n\n\n\n<p><code>&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>}<\/code><\/p>\n\n\n\n<p><code>&nbsp;&nbsp;<\/code><code>};<\/code><\/p>\n\n\n\n<p><code>&nbsp;&nbsp;<\/code><code>xmlhttp.open(<\/code><code>\"GET\"<\/code><code>, <\/code><code>\"src\/games.xml\"<\/code><code>, <\/code><code>true<\/code><code>);<\/code><\/p>\n\n\n\n<p><code>&nbsp;&nbsp;<\/code><code>xmlhttp.send();<\/code><\/p>\n\n\n\n<p><code>}<\/code><\/p>\n\n\n\n<p><code>function<\/code><code>getGameDetails(xml) {<\/code><\/p>\n\n\n\n<p><code>&nbsp;&nbsp;<\/code><code>const xmlDoc = xml.responseXML;<\/code><\/p>\n\n\n\n<p><code>&nbsp;&nbsp;<\/code><code>let<\/code><code>tableRows = <\/code><code>\"&lt;tr&gt;&lt;th&gt;Title&lt;\/th&gt;&lt;th&gt;Price&lt;\/th&gt;&lt;th&gt;Platforms&lt;\/th&gt;&lt;\/tr&gt;\"<\/code><code>;<\/code><\/p>\n\n\n\n<p><code>&nbsp;&nbsp;<\/code><code>let<\/code><code>gameElements = xmlDoc.getElementsByTagName(<\/code><code>\"game\"<\/code><code>);<\/code><\/p>\n\n\n\n<p><code>&nbsp;&nbsp;<\/code><code>for<\/code><code>(<\/code><code>let<\/code><code>i = 0; i &lt; gameElements.length; i++) {<\/code><\/p>\n\n\n\n<p><code>&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>tableRows +=<\/code><\/p>\n\n\n\n<p><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>\"&lt;tr&gt;&lt;td&gt;\"<\/code><code>+<\/code><\/p>\n\n\n\n<p><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>gameElements[i].getElementsByTagName(<\/code><code>\"title\"<\/code><code>)[0].childNodes[0].nodeValue +<\/code><\/p>\n\n\n\n<p><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>\"&lt;\/td&gt;&lt;td&gt;\"<\/code><code>+<\/code><\/p>\n\n\n\n<p><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>gameElements[i].getElementsByTagName(<\/code><code>\"price\"<\/code><code>)[0].childNodes[0].nodeValue +<\/code><\/p>\n\n\n\n<p><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>\"&lt;\/td&gt;&lt;td&gt;\"<\/code><code>;<\/code><\/p>\n\n\n\n<p><code>&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>let<\/code><code>platforms = gameElements[i].getElementsByTagName(<\/code><code>\"platform\"<\/code><code>);<\/code><\/p>\n\n\n\n<p><code>&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>for<\/code><code>(<\/code><code>let<\/code><code>j = 0; j &lt; platforms.length; j++) {<\/code><\/p>\n\n\n\n<p><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>tableRows += platforms[j].childNodes[0].nodeValue + <\/code><code>\"\/\"<\/code><code>;<\/code><\/p>\n\n\n\n<p><code>&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>}<\/code><\/p>\n\n\n\n<p><code>&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>tableRows += <\/code><code>\"&lt;\/td&gt;&lt;\/tr&gt;\"<\/code><code>;<\/code><\/p>\n\n\n\n<p><code>&nbsp;&nbsp;<\/code><code>}<\/code><\/p>\n\n\n\n<p><code>&nbsp;&nbsp;<\/code><code>document.getElementById(<\/code><code>\"xmlTable\"<\/code><code>).innerHTML = tableRows;<\/code><\/p>\n\n\n\n<p><code>}<\/code><\/p>\n\n\n\n<p><code>document.getElementById(<\/code><code>\"app\"<\/code><code>).innerHTML = `&lt;table id=<\/code><code>\"xmlTable\"<\/code><code>&gt;&lt;\/table&gt;`;<\/code><\/p>\n\n\n\n<p><code>loadXMLDoc();<\/code><\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><\/td><td><code>&lt;?<\/code><code>xml<\/code><code>version<\/code><code>=<\/code><code>\"1.0\"<\/code><code>encoding<\/code><code>=<\/code><code>\"UTF-8\"<\/code><code>?&gt;<\/code><code>&lt;<\/code><code>gameslist<\/code><code>&gt;<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>&lt;<\/code><code>game<\/code><code>&gt;<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>&lt;<\/code><code>title<\/code><code>lang<\/code><code>=<\/code><code>\"en\"<\/code><code>&gt;Hearthstone&lt;\/<\/code><code>title<\/code><code>&gt;<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>&lt;<\/code><code>price<\/code><code>&gt;Free&lt;\/<\/code><code>price<\/code><code>&gt;<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>&lt;\/<\/code><code>game<\/code><code>&gt;<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>&lt;<\/code><code>game<\/code><code>&gt;<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>&lt;<\/code><code>title<\/code><code>lang<\/code><code>=<\/code><code>\"en\"<\/code><code>&gt;Dota 2&lt;\/<\/code><code>title<\/code><code>&gt;<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>&lt;<\/code><code>price<\/code><code>&gt;Life&lt;\/<\/code><code>price<\/code><code>&gt;<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>&lt;\/<\/code><code>game<\/code><code>&gt;<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>&lt;<\/code><code>game<\/code><code>&gt;<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>&lt;<\/code><code>title<\/code><code>lang<\/code><code>=<\/code><code>\"en\"<\/code><code>&gt;Elden ring&lt;\/<\/code><code>title<\/code><code>&gt;<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>&lt;<\/code><code>price<\/code><code>&gt;60$&lt;\/<\/code><code>price<\/code><code>&gt;<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>&lt;\/<\/code><code>game<\/code><code>&gt;<\/code><code>&lt;\/<\/code><code>gameslist<\/code><code>&gt;<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>\u0421\u043e\u0437\u0434\u0430\u0435\u043c \u0444\u0430\u0439\u043b index.mjs \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u044d\u0442\u043e\u0442 \u043a\u043e\u0434<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>function<\/strong> loadXMLDoc(){<\/li>\n\n\n\n<li>&nbsp; let xmlhttp =<strong>new<\/strong> XMLHttpRequest();<\/li>\n\n\n\n<li>&nbsp; xmlhttp.onreadystatechange=<strong>function<\/strong>(){<\/li>\n\n\n\n<li><strong>if<\/strong>(<strong>this<\/strong>.readyState===4&amp;&amp;<strong>this<\/strong>.status===200){<\/li>\n\n\n\n<li>&nbsp; &nbsp; &nbsp; getGameDetails(<strong>this<\/strong>);<\/li>\n\n\n\n<li>}<\/li>\n\n\n\n<li>};<\/li>\n\n\n\n<li>&nbsp; xmlhttp.open(&#8220;GET&#8221;,&#8221;src\/games.xml&#8221;,<strong>true<\/strong>);<\/li>\n\n\n\n<li>&nbsp; xmlhttp.send();<\/li>\n\n\n\n<li>}<\/li>\n\n\n\n<li><\/li>\n\n\n\n<li><strong>function<\/strong> getGameDetails(xml){<\/li>\n\n\n\n<li><strong>const<\/strong> xmlDoc = xml.responseXML;<\/li>\n\n\n\n<li>&nbsp; let tableRows =&#8221;&lt;tr&gt;&lt;th&gt;Title&lt;\/th&gt;&lt;th&gt;Price&lt;\/th&gt;&lt;th&gt;Platforms&lt;\/th&gt;&lt;\/tr&gt;&#8221;;<\/li>\n\n\n\n<li>&nbsp; let gameElements = xmlDoc.getElementsByTagName(&#8220;game&#8221;);<\/li>\n\n\n\n<li><strong>for<\/strong>(let i =0; i &lt; gameElements.length; i++){<\/li>\n\n\n\n<li>&nbsp; &nbsp; tableRows +=<\/li>\n\n\n\n<li>&#8220;&lt;tr&gt;&lt;td&gt;&#8221;+<\/li>\n\n\n\n<li>&nbsp; &nbsp; &nbsp; gameElements[i].getElementsByTagName(&#8220;title&#8221;)[0].childNodes[0].nodeValue+<\/li>\n\n\n\n<li>&#8220;&lt;\/td&gt;&lt;td&gt;&#8221;+<\/li>\n\n\n\n<li>&nbsp; &nbsp; &nbsp; gameElements[i].getElementsByTagName(&#8220;price&#8221;)[0].childNodes[0].nodeValue+<\/li>\n\n\n\n<li>&#8220;&lt;\/td&gt;&lt;td&gt;&#8221;;<\/li>\n\n\n\n<li>&nbsp; &nbsp; let platforms = gameElements[i].getElementsByTagName(&#8220;platform&#8221;);<\/li>\n\n\n\n<li><strong>for<\/strong>(let j =0; j &lt; platforms.length; j++){<\/li>\n\n\n\n<li>&nbsp; &nbsp; &nbsp; tableRows += platforms[j].childNodes[0].nodeValue+&#8221;\/&#8221;;<\/li>\n\n\n\n<li>}<\/li>\n\n\n\n<li>&nbsp; &nbsp; tableRows +=&#8221;&lt;\/td&gt;&lt;\/tr&gt;&#8221;;<\/li>\n\n\n\n<li>}<\/li>\n\n\n\n<li>&nbsp; document.getElementById(&#8220;xmlTable&#8221;).innerHTML= tableRows;<\/li>\n\n\n\n<li>}<\/li>\n\n\n\n<li><\/li>\n\n\n\n<li>document.getElementById(&#8220;app&#8221;).innerHTML= `&lt;table id=&#8221;xmlTable&#8221;&gt;&lt;\/table&gt;`;<\/li>\n\n\n\n<li><\/li>\n\n\n\n<li>loadXMLDoc();<\/li>\n<\/ol>\n\n\n\n<p>\u0421\u043e\u0437\u0434\u0430\u0435\u043c \u0444\u0430\u0439\u043b index.html \u0438 \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u044d\u0442\u043e\u0442 \u043a\u043e\u0434<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td>1234567891011121314151617181920212223<\/td><td><code>&lt;!<\/code><code>DOCTYPE<\/code><code>html&gt;<\/code><code>&lt;<\/code><code>html<\/code><code>lang<\/code><code>=<\/code><code>\"en\"<\/code><code>&gt;<\/code><code>&lt;<\/code><code>head<\/code><code>&gt;<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>&lt;<\/code><code>meta<\/code><code>charset<\/code><code>=<\/code><code>\"UTF-8\"<\/code><code>\/&gt;<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>&lt;<\/code><code>title<\/code><code>&gt;Title&lt;\/<\/code><code>title<\/code><code>&gt;<\/code><code>&lt;\/<\/code><code>head<\/code><code>&gt;<\/code><code>&lt;<\/code><code>body<\/code><code>&gt;<\/code><code>&lt;<\/code><code>div<\/code><code>id<\/code><code>=<\/code><code>\"app\"<\/code><code>&gt;&lt;\/<\/code><code>div<\/code><code>&gt;<\/code><code>&lt;\/<\/code><code>body<\/code><code>&gt;<\/code><code>&lt;<\/code><code>script<\/code><code>src<\/code><code>=<\/code><code>\"index.mjs\"<\/code><code>&gt;&lt;\/<\/code><code>script<\/code><code>&gt;<\/code><code>&lt;\/<\/code><code>html<\/code><code>&gt;<\/code><code>&lt;<\/code><code>style<\/code><code>&gt;<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>table{<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>border: 2pt solid black;<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>border-radius: 20px;<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>font-size: large;<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>width: 300px;<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>height: 300px;<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>}<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>td{<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>border: 2pt solid black;<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>}<\/code><code>&lt;\/<\/code><code>style<\/code><code>&gt;<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>\u0414\u043e\u043b\u0436\u043d\u044b \u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0438\u0433\u0440\u044b \u0438\u0437 xml \u0444\u0430\u0439\u043b\u0430 \u0438 \u0432\u044b\u0432\u0432\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0443<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lastovski21.thkit.ee\/wp\/wp-content\/uploads\/2023\/10\/image.png\" alt=\"\" class=\"wp-image-1637\"\/><\/figure>\n\n\n\n<h1 class=\"wp-block-heading\">Harjutus 10 \u043f\u0438\u0441\u044c\u043c\u043e \u043f\u0440\u0438 github push<\/h1>\n\n\n\n<p>\u0421\u043e\u0437\u0434\u0430\u0435\u043c \u043f\u0443\u0441\u0442\u043e\u0439 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lastovski21.thkit.ee\/wp\/wp-content\/uploads\/2023\/09\/pilt-18.png\" alt=\"\" class=\"wp-image-1590\"\/><\/figure>\n\n\n\n<p>\u043a\u043b\u043e\u043d\u0438\u0440\u0443\u0435\u043c \u0435\u0433\u043e<br>git clone https:\/\/github.com\/MihhailLastovski\/harjutus10.git<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lastovski21.thkit.ee\/wp\/wp-content\/uploads\/2023\/09\/pilt-19.png\" alt=\"\" class=\"wp-image-1591\"\/><\/figure>\n\n\n\n<p>\u0421\u043e\u0437\u0434\u0430\u0435\u043c \u043f\u0430\u043f\u043a\u0438 .github\/workflows<br>\u0421\u043e\u0437\u0434\u0430\u0435\u043c \u0444\u0430\u0439\u043b mail-on-push.yml<br>\u0412 \u043d\u0435\u0433\u043e \u043f\u0438\u0448\u0435\u043c \u044d\u0442\u043e\u0442 \u043a\u043e\u0434<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td>12345678910111213141516171819202122232425262728<\/td><td><code>name:<\/code><code>Mail <\/code><code>on<\/code><code>Push<\/code><code>on:<\/code><code>&nbsp;&nbsp;<\/code><code>push:<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>branches:<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>-<\/code><code>main<\/code><code>jobs:<\/code><code>&nbsp;&nbsp;<\/code><code>send-mail:<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>runs-on:<\/code><code>ubuntu-latest<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>steps:<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>-<\/code><code>name<\/code><code>:<\/code><code>Checkout Repo<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>uses:<\/code><code>actions\/checkout@v2<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>-<\/code><code>name<\/code><code>:<\/code><code>Send Email<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>uses:<\/code><code>dawidd6\/action-send-mail@v3<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>with:<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>server_address:<\/code><code>smtp.gmail.com<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>server_port:<\/code><code>465<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>username:<\/code><code>$<\/code><code>{<\/code><code>{<\/code><code>secrets.MAIL_USERNAME <\/code><code>}<\/code><code>}<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>password:<\/code><code>$<\/code><code>{<\/code><code>{<\/code><code>secrets.MAIL_PASSWORD <\/code><code>}<\/code><code>}<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>subject:<\/code><code>\"Push to Repository: ${{ github.repository }}\"<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>to:<\/code><code>\"your@gmail.com\"<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>body:<\/code><code>|<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>Kehtestuse looja nimi<\/code><code>:<\/code><code>$<\/code><code>{<\/code><code>{<\/code><code>github.event.pusher.name <\/code><code>}<\/code><code>}<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>Kehtestuse s\u00f5num<\/code><code>:<\/code><code>$<\/code><code>{<\/code><code>{<\/code><code>github.event.head_commit.message <\/code><code>}<\/code><code>}<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>from:<\/code><code>Github actions<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>\u041d\u0430 \u0433\u0438\u0442\u0445\u0430\u0431\u0435 \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u0434\u0432\u0435 \u0441\u0435\u043a\u0440\u0435\u0442\u043d\u044b\u0445 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445<br>\u0412 MAIL_USERNAME \u043f\u0438\u0448\u0435\u043c \u0441\u0432\u043e\u044e \u043f\u043e\u0447\u0442\u0443<br>\u0412 MAIL_PASSWORD \u043f\u0438\u0448\u0435\u043c \u043f\u0430\u0440\u043e\u043b\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u0435\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0441\u0442\u043e\u0438\u0442 \u0434\u0432\u0443\u0445\u044d\u0442\u0430\u043f\u043d\u0430\u044f \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f<br>\u0415\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0432 \u0430\u043a\u043a\u0430\u0443\u043d\u0442 google\/\u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c\/\u0434\u0432\u0443\u0445\u044d\u0442\u0430\u043f\u043d\u0430\u044f \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f\/\u043f\u0430\u0440\u043e\u043b\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lastovski21.thkit.ee\/wp\/wp-content\/uploads\/2023\/09\/pilt-23.png\" alt=\"\" class=\"wp-image-1602\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lastovski21.thkit.ee\/wp\/wp-content\/uploads\/2023\/09\/pilt-20-1024x650.png\" alt=\"\" class=\"wp-image-1593\"\/><\/figure>\n\n\n\n<p>\u0414\u0430\u043b\u0435\u0435 \u0434\u0435\u043b\u0430\u0435\u043c push \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043d\u0430 github \u0438 \u043c\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0442\u0430\u043a\u043e\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043d\u0430 \u043f\u043e\u0447\u0442\u0443<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lastovski21.thkit.ee\/wp\/wp-content\/uploads\/2023\/09\/pilt-21.png\" alt=\"\" class=\"wp-image-1595\"\/><\/figure>\n\n\n\n<p>\u0418 \u0432 github\/actions<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lastovski21.thkit.ee\/wp\/wp-content\/uploads\/2023\/09\/pilt-22-1024x166.png\" alt=\"\" class=\"wp-image-1596\"\/><\/figure>\n\n\n\n<h1 class=\"wp-block-heading\">Harjutus 11 \u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u0441 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c\u0438 \u043d\u0430 \u043e\u0434\u043d\u043e\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u0435<\/h1>\n\n\n\n<figure class=\"wp-block-embed\"><div class=\"wp-block-embed__wrapper\">\nhttps:\/\/github.com\/MihhailLastovski\/serverMessage.git\n<\/div><\/figure>\n\n\n\n<p>\u041e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u0443\u0434\u043e\u0431\u043d\u044b\u0439 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440 \u043a\u043e\u0434\u0430 \u0438 \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u0434\u0432\u0430 \u0444\u0430\u0439\u043b\u0430: index.html; server.js<br>\u0412\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u0432 \u043d\u0438\u0445 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043a\u043e\u0434<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td>123456789101112131415161718192021222324252627282930313233343536373839<\/td><td><code>&lt;!<\/code><code>doctype<\/code><code>html&gt;<\/code><code>&lt;<\/code><code>form<\/code><code>name<\/code><code>=<\/code><code>\"publish\"<\/code><code>&gt;<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>&lt;<\/code><code>input<\/code><code>type<\/code><code>=<\/code><code>\"text\"<\/code><code>name<\/code><code>=<\/code><code>\"message\"<\/code><code>maxlength<\/code><code>=<\/code><code>\"50\"<\/code><code>\/&gt;<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>&lt;<\/code><code>input<\/code><code>type<\/code><code>=<\/code><code>\"submit\"<\/code><code>value<\/code><code>=<\/code><code>\"Send\"<\/code><code>\/&gt;<\/code><code>&lt;\/<\/code><code>form<\/code><code>&gt;<\/code><code>&lt;<\/code><code>div<\/code><code>id<\/code><code>=<\/code><code>\"messages\"<\/code><code>&gt;&lt;\/<\/code><code>div<\/code><code>&gt;<\/code><code>&lt;<\/code><code>script<\/code><code>&gt;<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>let url = location.host == 'localhost' ?<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>'ws:\/\/localhost:8080\/ws' : location.host == 'javascript.local' ?<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>`ws:\/\/javascript.local\/article\/websocket\/chat\/ws` : \/\/ dev integration with local site<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>`wss:\/\/javascript.info\/article\/websocket\/chat\/ws`; \/\/ prod integration with javascript.info<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>\/\/\u0441\u043e\u0437\u0434\u0430\u0435\u043c \u043e\u0431\u044a\u0435\u043a\u0442 \u0441 \u0432\u0435\u0431\u0441\u043e\u043a\u0435\u0442\u043e\u043c<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>let socket = new WebSocket(url);<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>\/\/ \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043d\u0430 \u0444\u043e\u0440\u043c\u0443<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>document.forms.publish.onsubmit = function() {<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>let outgoingMessage = this.message.value;<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>socket.send(outgoingMessage);<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>return false;<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>};<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>\/\/ \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u043c \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>socket.onmessage = function(event) {<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>let incomingMessage = event.data;<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>showMessage(incomingMessage);<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>};<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>\/\/\u0435\u0441\u043b\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0437\u0430\u043a\u0440\u044b\u0442 \u0441\u043e\u043a\u0435\u0442, \u0442\u043e \u043f\u0438\u0448\u0435\u043c \u043e\u0431 \u044d\u0442\u043e\u043c \u0432 \u043a\u043e\u043d\u0441\u043e\u043b\u0438<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>socket.onclose = event =&gt; console.log(`Closed ${event.code}`);<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>\/\/ \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0432 div#messages<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>function showMessage(message) {<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>let messageElem = document.createElement('div');<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>messageElem.textContent = message;<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>document.getElementById('messages').prepend(messageElem);<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>}<\/code><code>&lt;\/<\/code><code>script<\/code><code>&gt;<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td>12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849<\/td><td><code>const http = require(<\/code><code>'http'<\/code><code>);<\/code><code>const fs = require(<\/code><code>'fs'<\/code><code>);<\/code><code>const ws = <\/code><code>new<\/code><code>require(<\/code><code>'ws'<\/code><code>)<\/code><code>\/\/\u0441\u043e\u0437\u0434\u0430\u0435\u043c \u0432\u0435\u0431\u0441\u043e\u043a\u0435\u0442 \u0441\u0435\u0440\u0432\u0435\u0440<\/code><code>const wss = <\/code><code>new<\/code><code>ws.Server({noServer: <\/code><code>true<\/code><code>});<\/code><code>\/\/\u043f\u0440\u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438 \u043d\u0430 \u0430\u0434\u0440\u0435\u0441\u0441 \/ws, \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u0430 \u043a \u0441\u043e\u043a\u0435\u0442 \u0441\u0435\u0440\u0432\u0435\u0440\u0443<\/code><code>function<\/code><code>accept(req, res){<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>if<\/code><code>(req.url === <\/code><code>'\/ws'<\/code><code>&amp;&amp; req.headers.upgrade &amp;&amp;<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>req.headers.upgrade.toLowerCase() === <\/code><code>'websocket'<\/code><code>&amp;&amp;<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>req.headers.connection.match(\/\\bupgrade\\b\/i)){<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>wss.handleUpgrade(req, req.socket, Buffer.alloc(0), onSocketConnect);<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>} <\/code><code>else<\/code><code>if<\/code><code>(req.url === <\/code><code>'\/'<\/code><code>){<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>fs.createReadStream(<\/code><code>'.\/index.html'<\/code><code>).pipe(res);<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>} <\/code><code>else<\/code><code>{<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>res.writeHead(404);<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>res.end()<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>}<\/code><code>}<\/code><code>\/\/\u0441\u043e\u0437\u0434\u0430\u0435\u043c \u0441\u0435\u0442 \u0438\u0437 \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432<\/code><code>const clients = <\/code><code>new<\/code><code>Set();<\/code><code>\/\/\u043f\u0440\u0438 \u043f\u0440\u0438\u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0438 \u043a \u0441\u043e\u043a\u0435\u0442\u0443, \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0435\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u044d\u0432\u0435\u043d\u0442\u044b \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0432\u0448\u0435\u043c\u0443\u0441\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e<\/code><code>function<\/code><code>onSocketConnect(ws){<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>clients.add(ws)<\/code><code>\/\/\u043f\u0440\u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>ws.on(<\/code><code>'message'<\/code><code>, <\/code><code>function<\/code><code>(message){<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>message = message.slice(0, 50);<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>for<\/code><code>(<\/code><code>let<\/code><code>client of clients) {clients.send(message);}<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>});<\/code><code>\/\/\u043f\u0440\u0438 \u0437\u0430\u043a\u0440\u044b\u0442\u0438\u0438 \u0441\u043e\u043a\u0435\u0442\u0430<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>ws.on(<\/code><code>'close'<\/code><code>, <\/code><code>function<\/code><code>(){<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>log(<\/code><code>'connection closed'<\/code><code>);<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>clients.<\/code><code>delete<\/code><code>(ws);<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>})<\/code><code>}<\/code><code>let<\/code><code>log;<\/code><code>if<\/code><code>(!module[<\/code><code>\"parent\"<\/code><code>]){<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>log = console.log();<\/code><code>\/\/\u0441\u043e\u0437\u0434\u0430\u0435\u043c \u0441\u0435\u0440\u0432\u0435\u0440<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>http.createServer(accept).listen(8080);<\/code><code>} <\/code><code>else<\/code><code>{<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>log = <\/code><code>function<\/code><code>() {};<\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>exports.accept = accept;<\/code><code>}<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>\u0412 \u043f\u0430\u043f\u043a\u0435 \u0441 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u043c \u0432 \u043a\u043e\u043d\u0441\u043e\u043b\u0438 \u043f\u0438\u0448\u0435\u043c npm init \u0438 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c vestlusruum<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lastovski21.thkit.ee\/wp\/wp-content\/uploads\/2023\/09\/pilt-24.png\" alt=\"\" class=\"wp-image-1605\"\/><\/figure>\n\n\n\n<p>\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043e\u0431\u0449\u0430\u0442\u044c\u0441\u044f \u0441 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u043d\u0430 \u0442\u043e\u043c \u0436\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u0435<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Harjutus 12 \u0441\u043e\u043b\u044c \u0438 \u0445\u0435\u0448 \u043f\u0430\u0440\u043e\u043b\u044f<\/h1>\n\n\n\n<figure class=\"wp-block-embed\"><div class=\"wp-block-embed__wrapper\">\nhttps:\/\/github.com\/MihhailLastovski\/passwordHash.git\n<\/div><\/figure>\n\n\n\n<p>\u041e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u0443\u0434\u043e\u0431\u043d\u044b\u0439 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440 \u043a\u043e\u0434\u0430 \u0438 \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u0434\u0432\u0430 \u0444\u0430\u0439\u043b\u0430: generateHash.js \u0412\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u0432 \u043d\u0435\u0433\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043a\u043e\u0434<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td>123456789101112<\/td><td><code>const bcrypt = require(<\/code><code>'bcrypt'<\/code><code>);<\/code><code>const myPassword = <\/code><code>''<\/code><code>;<\/code><code>console.time(<\/code><code>'Time to generate salt'<\/code><code>);<\/code><code>const salt = bcrypt.genSaltSync(10);<\/code><code>console.log(<\/code><code>'This is your salt: '<\/code><code>+ salt);<\/code><code>console.timeEnd(<\/code><code>'Time to generate salt'<\/code><code>);<\/code><code>console.time(<\/code><code>'Time to generate hash'<\/code><code>);<\/code><code>const&nbsp; hashedPassword = bcrypt.hashSync(myPassword, salt);<\/code><code>console.log(myPassword + <\/code><code>' is your passwod &amp; this your password after hashing it: '<\/code><code>+ hashedPassword);<\/code><code>console.timeEnd(<\/code><code>'Time to generate hash'<\/code><code>);<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u043a\u043e\u0434 \u0438\u043b\u0438 \u043d\u0430\u0436\u0438\u043c\u0430\u0435\u043c ctrl + shift + F10<br>\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u201c\u0441\u043e\u043b\u044c\u201d \u0438 \u0445\u0435\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043f\u0430\u0440\u043e\u043b\u0438<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lastovski21.thkit.ee\/wp\/wp-content\/uploads\/2023\/09\/pilt-25.png\" alt=\"\" class=\"wp-image-1608\"\/><\/figure>\n\n\n\n<p><strong>Password salting<\/strong>&nbsp;\u2013 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u044b \u0434\u043e \u0438\u043b\u0438 \u043f\u043e\u0441\u043b\u0435 \u043f\u0430\u0440\u043e\u043b\u044f \u043f\u0435\u0440\u0435\u0434 \u0445\u0435\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c, \u0447\u0442\u043e\u0431\u044b \u0441\u043a\u0440\u044b\u0442\u044c \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043f\u0430\u0440\u043e\u043b\u044c<br><strong>Password hashing<\/strong>&nbsp;\u2013 \u044d\u0442\u043e \u043e\u0434\u043d\u043e\u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u0442 \u043f\u0430\u0440\u043e\u043b\u044c \u0432 \u0437\u0430\u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u043e\u0432 \u0445\u0435\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Minu telefoninumber: +372 53630434\nMinu post: lastovskim@gmail.com<\/code><\/pre>\n\n\n\n<p>Copyright &#8211; OceanWP Theme by OceanWP<a href=\"https:\/\/lastovski21.thkit.ee\/wp\/harjutused-3-7\/#\"><\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Harjutused 2-8\/10-12 Harjutus 2 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0432 codesandbox \u041e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c CodeSandbox\u0412\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u0448\u0430\u0431\u043b\u043e\u043d Vanilla Js\u0412\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u0432 index.mjs \u044d\u0442\u043e\u0442 \u043a\u043e\u0434 \u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u0441 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043a\u0430\u043c\u0438 \u043c\u0430\u0448\u0438\u043d 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 import&#8221;.\/styles.css&#8221;;const myjson = [&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;Car: {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Color: &#8220;Rose red&#8221;,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#8220;Tinted windows&#8221;: false,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Wheels: 4,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#8220;Roof Cargo&#8221;: null,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Entertainment: [&#8220;Fm Radio&#8221;, &#8220;MP3, MP4 and MKV player&#8221;, &#8220;harman\/kardon speakers&#8221;],&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Accessories: [&#8220;satnav&#8221;,&#8221;cruise control&#8221;]&nbsp;&nbsp;&nbsp;&nbsp;},&nbsp;&nbsp;&nbsp;&nbsp;Car2:{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Color: &#8220;Navy blue&#8221;,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#8220;Tinted windows&#8221;: true,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Wheels: 4,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#8220;Roof Cargo&#8221;: &#8220;Thule&#8221;,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Entertainment: [&#8220;Fm [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-475","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.8 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Harjutused - Irina Merkulova &otilde;pimapp | portfoolio<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/merkulova.thkit.ee\/wp20\/harjutused\/\" \/>\n<meta property=\"og:locale\" content=\"et_EE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Harjutused - Irina Merkulova &otilde;pimapp | portfoolio\" \/>\n<meta property=\"og:description\" content=\"Harjutused 2-8\/10-12 Harjutus 2 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0432 codesandbox \u041e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c CodeSandbox\u0412\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u0448\u0430\u0431\u043b\u043e\u043d Vanilla Js\u0412\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u0432 index.mjs \u044d\u0442\u043e\u0442 \u043a\u043e\u0434 \u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u0441 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043a\u0430\u043c\u0438 \u043c\u0430\u0448\u0438\u043d 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 import&quot;.\/styles.css&quot;;const myjson = [&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;Car: {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Color: &quot;Rose red&quot;,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;Tinted windows&quot;: false,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Wheels: 4,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;Roof Cargo&quot;: null,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Entertainment: [&quot;Fm Radio&quot;, &quot;MP3, MP4 and MKV player&quot;, &quot;harman\/kardon speakers&quot;],&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Accessories: [&quot;satnav&quot;,&quot;cruise control&quot;]&nbsp;&nbsp;&nbsp;&nbsp;},&nbsp;&nbsp;&nbsp;&nbsp;Car2:{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Color: &quot;Navy blue&quot;,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;Tinted windows&quot;: true,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Wheels: 4,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;Roof Cargo&quot;: &quot;Thule&quot;,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Entertainment: [&quot;Fm [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/merkulova.thkit.ee\/wp20\/harjutused\/\" \/>\n<meta property=\"og:site_name\" content=\"Irina Merkulova &otilde;pimapp | portfoolio\" \/>\n<meta property=\"article:modified_time\" content=\"2024-09-04T12:10:17+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"13 minutit\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/merkulova.thkit.ee\/wp20\/harjutused\/\",\"url\":\"https:\/\/merkulova.thkit.ee\/wp20\/harjutused\/\",\"name\":\"Harjutused - Irina Merkulova &otilde;pimapp | portfoolio\",\"isPartOf\":{\"@id\":\"https:\/\/merkulova.thkit.ee\/wp20\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/merkulova.thkit.ee\/wp20\/harjutused\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/merkulova.thkit.ee\/wp20\/harjutused\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/lastovski21.thkit.ee\/wp\/wp-content\/uploads\/2023\/09\/pilt-11.png\",\"datePublished\":\"2024-09-04T10:28:48+00:00\",\"dateModified\":\"2024-09-04T12:10:17+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/merkulova.thkit.ee\/wp20\/harjutused\/#breadcrumb\"},\"inLanguage\":\"et\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/merkulova.thkit.ee\/wp20\/harjutused\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"et\",\"@id\":\"https:\/\/merkulova.thkit.ee\/wp20\/harjutused\/#primaryimage\",\"url\":\"https:\/\/lastovski21.thkit.ee\/wp\/wp-content\/uploads\/2023\/09\/pilt-11.png\",\"contentUrl\":\"https:\/\/lastovski21.thkit.ee\/wp\/wp-content\/uploads\/2023\/09\/pilt-11.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/merkulova.thkit.ee\/wp20\/harjutused\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u0413\u043b\u0430\u0432\u043d\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\",\"item\":\"https:\/\/merkulova.thkit.ee\/wp20\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Harjutused\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/merkulova.thkit.ee\/wp20\/#website\",\"url\":\"https:\/\/merkulova.thkit.ee\/wp20\/\",\"name\":\"Veebirakenduse portfoolio\",\"description\":\"Noorem Tarkvaraarendaja eriala\",\"publisher\":{\"@id\":\"https:\/\/merkulova.thkit.ee\/wp20\/#\/schema\/person\/3e81f4867c46822cdeca159fa89142ae\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/merkulova.thkit.ee\/wp20\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"et\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/merkulova.thkit.ee\/wp20\/#\/schema\/person\/3e81f4867c46822cdeca159fa89142ae\",\"name\":\"admin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"et\",\"@id\":\"https:\/\/merkulova.thkit.ee\/wp20\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/4c53fa504772b2274d9d09d84825a2c569865fca538b5b70247d8f1668b9eb51?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/4c53fa504772b2274d9d09d84825a2c569865fca538b5b70247d8f1668b9eb51?s=96&d=mm&r=g\",\"caption\":\"admin\"},\"logo\":{\"@id\":\"https:\/\/merkulova.thkit.ee\/wp20\/#\/schema\/person\/image\/\"},\"sameAs\":[\"https:\/\/merkulova.thkit.ee\/wp20\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Harjutused - Irina Merkulova &otilde;pimapp | portfoolio","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/merkulova.thkit.ee\/wp20\/harjutused\/","og_locale":"et_EE","og_type":"article","og_title":"Harjutused - Irina Merkulova &otilde;pimapp | portfoolio","og_description":"Harjutused 2-8\/10-12 Harjutus 2 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0432 codesandbox \u041e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c CodeSandbox\u0412\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u0448\u0430\u0431\u043b\u043e\u043d Vanilla Js\u0412\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u0432 index.mjs \u044d\u0442\u043e\u0442 \u043a\u043e\u0434 \u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u0441 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043a\u0430\u043c\u0438 \u043c\u0430\u0448\u0438\u043d 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 import\".\/styles.css\";const myjson = [&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;Car: {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Color: \"Rose red\",&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\"Tinted windows\": false,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Wheels: 4,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\"Roof Cargo\": null,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Entertainment: [\"Fm Radio\", \"MP3, MP4 and MKV player\", \"harman\/kardon speakers\"],&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Accessories: [\"satnav\",\"cruise control\"]&nbsp;&nbsp;&nbsp;&nbsp;},&nbsp;&nbsp;&nbsp;&nbsp;Car2:{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Color: \"Navy blue\",&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\"Tinted windows\": true,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Wheels: 4,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\"Roof Cargo\": \"Thule\",&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Entertainment: [\"Fm [&hellip;]","og_url":"https:\/\/merkulova.thkit.ee\/wp20\/harjutused\/","og_site_name":"Irina Merkulova &otilde;pimapp | portfoolio","article_modified_time":"2024-09-04T12:10:17+00:00","twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"13 minutit"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/merkulova.thkit.ee\/wp20\/harjutused\/","url":"https:\/\/merkulova.thkit.ee\/wp20\/harjutused\/","name":"Harjutused - Irina Merkulova &otilde;pimapp | portfoolio","isPartOf":{"@id":"https:\/\/merkulova.thkit.ee\/wp20\/#website"},"primaryImageOfPage":{"@id":"https:\/\/merkulova.thkit.ee\/wp20\/harjutused\/#primaryimage"},"image":{"@id":"https:\/\/merkulova.thkit.ee\/wp20\/harjutused\/#primaryimage"},"thumbnailUrl":"https:\/\/lastovski21.thkit.ee\/wp\/wp-content\/uploads\/2023\/09\/pilt-11.png","datePublished":"2024-09-04T10:28:48+00:00","dateModified":"2024-09-04T12:10:17+00:00","breadcrumb":{"@id":"https:\/\/merkulova.thkit.ee\/wp20\/harjutused\/#breadcrumb"},"inLanguage":"et","potentialAction":[{"@type":"ReadAction","target":["https:\/\/merkulova.thkit.ee\/wp20\/harjutused\/"]}]},{"@type":"ImageObject","inLanguage":"et","@id":"https:\/\/merkulova.thkit.ee\/wp20\/harjutused\/#primaryimage","url":"https:\/\/lastovski21.thkit.ee\/wp\/wp-content\/uploads\/2023\/09\/pilt-11.png","contentUrl":"https:\/\/lastovski21.thkit.ee\/wp\/wp-content\/uploads\/2023\/09\/pilt-11.png"},{"@type":"BreadcrumbList","@id":"https:\/\/merkulova.thkit.ee\/wp20\/harjutused\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u0413\u043b\u0430\u0432\u043d\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430","item":"https:\/\/merkulova.thkit.ee\/wp20\/"},{"@type":"ListItem","position":2,"name":"Harjutused"}]},{"@type":"WebSite","@id":"https:\/\/merkulova.thkit.ee\/wp20\/#website","url":"https:\/\/merkulova.thkit.ee\/wp20\/","name":"Veebirakenduse portfoolio","description":"Noorem Tarkvaraarendaja eriala","publisher":{"@id":"https:\/\/merkulova.thkit.ee\/wp20\/#\/schema\/person\/3e81f4867c46822cdeca159fa89142ae"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/merkulova.thkit.ee\/wp20\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"et"},{"@type":["Person","Organization"],"@id":"https:\/\/merkulova.thkit.ee\/wp20\/#\/schema\/person\/3e81f4867c46822cdeca159fa89142ae","name":"admin","image":{"@type":"ImageObject","inLanguage":"et","@id":"https:\/\/merkulova.thkit.ee\/wp20\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/4c53fa504772b2274d9d09d84825a2c569865fca538b5b70247d8f1668b9eb51?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/4c53fa504772b2274d9d09d84825a2c569865fca538b5b70247d8f1668b9eb51?s=96&d=mm&r=g","caption":"admin"},"logo":{"@id":"https:\/\/merkulova.thkit.ee\/wp20\/#\/schema\/person\/image\/"},"sameAs":["https:\/\/merkulova.thkit.ee\/wp20"]}]}},"_links":{"self":[{"href":"https:\/\/merkulova.thkit.ee\/wp20\/wp-json\/wp\/v2\/pages\/475","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/merkulova.thkit.ee\/wp20\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/merkulova.thkit.ee\/wp20\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/merkulova.thkit.ee\/wp20\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/merkulova.thkit.ee\/wp20\/wp-json\/wp\/v2\/comments?post=475"}],"version-history":[{"count":4,"href":"https:\/\/merkulova.thkit.ee\/wp20\/wp-json\/wp\/v2\/pages\/475\/revisions"}],"predecessor-version":[{"id":484,"href":"https:\/\/merkulova.thkit.ee\/wp20\/wp-json\/wp\/v2\/pages\/475\/revisions\/484"}],"wp:attachment":[{"href":"https:\/\/merkulova.thkit.ee\/wp20\/wp-json\/wp\/v2\/media?parent=475"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}