{"id":25502,"date":"2023-11-14T05:01:00","date_gmt":"2023-11-14T04:01:00","guid":{"rendered":"https:\/\/sii.pl\/blog\/?p=25502"},"modified":"2024-07-22T14:25:06","modified_gmt":"2024-07-22T12:25:06","slug":"czy-wiesz-jak-uzywac-semver","status":"publish","type":"post","link":"https:\/\/sii.pl\/blog\/czy-wiesz-jak-uzywac-semver\/","title":{"rendered":"Czy wiesz, jak u\u017cywa\u0107 SemVer?"},"content":{"rendered":"\n<p>W artykule chcia\u0142bym poruszy\u0107 temat, kt\u00f3ry jest wa\u017cny dla nas wszystkich \u00ad\u2013 wersjonowanie semantyczne, znane r\u00f3wnie\u017c jako Semantic Versioning albo SemVer.<\/p>\n\n\n\n<p>SemVer to standard wersjonowania oprogramowania i niezale\u017cnie od tego, czy jeste\u015b programist\u0105 dowolnej technologii, studentem, testerem, czy kimkolwiek zainteresowanym rozwojem oprogramowania, <strong>SemVer wp\u0142ywa na nas wszystkich.<\/strong><\/p>\n\n\n\n<p>Korzystamy z SemVer, nawet je\u015bli nie zdajemy sobie z tego sprawy. Wersjonowanie oprogramowania ma kluczowe znaczenie dla stabilno\u015bci, zgodno\u015bci i efektywno\u015bci naszych aplikacji. Dlatego chcia\u0142bym podzieli\u0107 si\u0119 z Tob\u0105 wiedz\u0105 na ten temat, aby\u015b m\u00f3g\u0142 <strong>jeszcze lepiej zrozumie\u0107 i wykorzysta\u0107 ten standard w swojej pracy.<\/strong><\/p>\n\n\n\n<p>W tym artykule zaprezentuj\u0119 nie tylko teoretyczne aspekty SemVer, ale tak\u017ce <strong>zapoznam Ci\u0119 z jego praktycznym zastosowaniem<\/strong>. Dowiesz si\u0119, jak zarz\u0105dza\u0107 zale\u017cno\u015bciami, aby zapewni\u0107 stabilno\u015b\u0107 i bezpiecze\u0144stwo projektu. Przyjrzymy si\u0119 r\u00f3wnie\u017c korzy\u015bciom wynikaj\u0105cym z konsekwentnego stosowania SemVer oraz wyzwaniom, na jakie mo\u017cemy natrafi\u0107 podczas implementacji.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Czym jest numeracja wersji i dlaczego jest wa\u017cna?<\/strong><\/h2>\n\n\n\n<p>Numeracja wersji to spos\u00f3b identyfikacji i odr\u00f3\u017cnienia r\u00f3\u017cnych wersji oprogramowania. Ka\u017cda nowa wersja otrzymuje unikalny numer, kt\u00f3ry pozwala nam \u015bledzi\u0107 i kontrolowa\u0107 zmiany. Dzi\u0119ki numeracji wersji mo\u017cemy stwierdzi\u0107, czy dana wersja oprogramowania jest aktualna, nowsza lub starsza. To szczeg\u00f3lnie istotne przy wprowadzaniu zmian i udost\u0119pnianiu aktualizacji.<\/p>\n\n\n\n<p><strong>Wersje sk\u0142adaj\u0105 si\u0119 z trzech cyfr: X.Y.Z<\/strong><\/p>\n\n\n\n<p>Przyk\u0142adowo, we\u017amy pierwsz\u0105 lepsz\u0105 bibliotek\u0119, np. React \ud83d\ude09 W dniu pisania tego artyku\u0142u najnowsza wersja to <strong>18.2.0<\/strong>. Co oznaczaj\u0105 poszczeg\u00f3lne cyfry?<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Major<\/strong><\/h3>\n\n\n\n<p>Pierwsza liczba \u2013 18 \u2013 reprezentuje numer wersji g\u0142\u00f3wnej (major). Jej zwi\u0119kszenie (np. z <strong>17<\/strong> do <strong>18)<\/strong> wskazuje na wprowadzenie istotnych modyfikacji, kt\u00f3re mog\u0105 wp\u0142ywa\u0107 na istniej\u0105ce funkcje i wymaga\u0107 dostosowania.<\/p>\n\n\n\n<p><strong>Przyk\u0142ad<\/strong>: Zmiana interfejsu u\u017cytkownika, nowe funkcjonalno\u015bci, znaczne zmiany w strukturze kodu.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Minor<\/strong><\/h3>\n\n\n\n<p>Druga cyfra \u2013 2 \u2013 to numer wersji mniejszej (minor). Zwi\u0119kszenie tego numeru (np. z 18.<strong>1<\/strong> do 18.<strong>2<\/strong>) wskazuje na wprowadzenie nowych funkcji oprogramowania bez wp\u0142ywu na istniej\u0105ce.<\/p>\n\n\n\n<p><strong>Przyk\u0142ad<\/strong>: Dodanie nowego modu\u0142u, rozszerzenie istniej\u0105cych funkcji, ulepszenie wydajno\u015bci.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Patch<\/strong><\/h3>\n\n\n\n<p>Trzecia cyfra \u2013 0 \u2013 reprezentuje numer wersji poprawki (patch). Zwi\u0119kszenie numeru wersji patch (np. z 18.2.<strong>0<\/strong> do 18.2.<strong>1<\/strong>) wskazuje na wprowadzenie poprawek bez zmian w funkcjonalno\u015bci.<\/p>\n\n\n\n<p><strong>Przyk\u0142ad<\/strong>: Naprawa znalezionych b\u0142\u0119d\u00f3w, \u0142atanie luk w zabezpieczeniach, poprawki interfejsu.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Rola oznaczania zmian<\/strong><\/h3>\n\n\n\n<p>Oznaczanie zmian w wersjach ma<strong> ogromne znaczenie! <\/strong>Pami\u0119taj, \u017ce dok\u0142adne oznaczanie numer\u00f3w wersji pomaga u\u017cytkownikom oprogramowania zrozumie\u0107, jakie zmiany zosta\u0142y wprowadzone w poszczeg\u00f3lnych wersjach. Dzi\u0119ki temu mog\u0105 \u015bwiadomie decydowa\u0107 o aktualizacjach.<\/p>\n\n\n\n<p>Oznaczanie zmian pozwala im \u015bledzi\u0107, jakie modyfikacje zosta\u0142y wprowadzone mi\u0119dzy kolejnymi wersjami, a tak\u017ce przewidzie\u0107, jakie zmiany mog\u0105 mie\u0107 wp\u0142yw na istniej\u0105ce rozwi\u0105zania. Dzi\u0119ki takiej informacji mo\u017cna dostosowa\u0107 si\u0119 do wprowadzanych zmian, aktualizowa\u0107 swoje aplikacje i unika\u0107 potencjalnych problem\u00f3w.<\/p>\n\n\n\n<p>W \u015bwiecie programowania istnieje wiele bibliotek i modu\u0142\u00f3w, kt\u00f3re pomagaj\u0105 w tworzeniu aplikacji. <strong>Zarz\u0105dzanie zale\u017cno\u015bciami jest kluczowe<\/strong>, aby nasz projekt dzia\u0142a\u0142 sprawnie i by\u0142 aktualny.<\/p>\n\n\n\n<p>Wersjonowanie Semantyczne to standard wersjonowania, kt\u00f3ry zapewnia sp\u00f3jno\u015b\u0107 i kontrol\u0119 nad wersjami u\u017cywanych bibliotek.<\/p>\n\n\n\n<p>W kolejnej cz\u0119\u015bci artyku\u0142u dowiesz si\u0119, jak deklarowa\u0107 zale\u017cno\u015bci w projekcie i jak wykorzysta\u0107 podstawowe operatory wersji.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Deklarowanie zale\u017cno\u015bci<\/strong><\/h2>\n\n\n\n<p>W celu okre\u015blenia wymaganych bibliotek i modu\u0142\u00f3w w aplikacji javascript, korzystamy z pliku konfiguracyjnego package.json. W pliku tym mo\u017cemy zadeklarowa\u0107 nazwy zale\u017cno\u015bci oraz okre\u015bli\u0107 szczeg\u00f3lne, minimalne lub maksymalne wersje, kt\u00f3re nasz projekt obs\u0142uguje.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/11\/Obraz1-2.png\"><img decoding=\"async\" width=\"451\" height=\"85\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/11\/Obraz1-2.png\" alt=\"Przyk\u0142ad deklaracji zale\u017cno\u015bci w pliku package.json\" class=\"wp-image-25503\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/11\/Obraz1-2.png 451w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/11\/Obraz1-2-300x57.png 300w\" sizes=\"(max-width: 451px) 100vw, 451px\" \/><\/a><figcaption class=\"wp-element-caption\">Ryc. 1 Przyk\u0142ad deklaracji zale\u017cno\u015bci w pliku package.json<\/figcaption><\/figure>\n\n\n\n<p>W powy\u017cszym przyk\u0142adzie widzimy deklaracj\u0119 trzech zale\u017cno\u015bci:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>react,<\/li>\n\n\n\n<li>@reduxjs\/toolkit,<\/li>\n\n\n\n<li>axios.<\/li>\n<\/ul>\n\n\n\n<p>Przy ka\u017cdej zale\u017cno\u015bci mo\u017cemy okre\u015bli\u0107 operator wersji, kt\u00f3ry pomo\u017ce nam zarz\u0105dza\u0107 aktualizacjami.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Operator &#8222;^&#8221; (marchewka\/caret)<\/strong><\/h3>\n\n\n\n<p>Pozwala na aktualizacj\u0119 do najnowszej zgodnej zadeklarowanej wersji, zapewniaj\u0105c przy tym kompatybilno\u015b\u0107 z nowymi funkcjonalno\u015bciami. Przyk\u0142adowo, je\u015bli zadeklarujemy nasz\u0105 bibliotek\u0119 React w nast\u0119puj\u0105cy spos\u00f3b &#8222;react&#8221;: &#8222;^18.1.0&#8221; to mo\u017cemy by\u0107 pewni, \u017ce podczas aktualizacji naszej aplikacji wersja biblioteki mo\u017ce by\u0107 wi\u0119ksza lub r\u00f3wna 18.1.0, ale te\u017c mniejsza od 19.0.0.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Operator &#8222;~&#8221; (tylda)<\/strong><\/h3>\n\n\n\n<p>Umo\u017cliwia aktualizacj\u0119 do najnowszej wersji poprawiaj\u0105cej b\u0142\u0119dy, zachowuj\u0105c zgodno\u015b\u0107 z deklaracj\u0105 wersji. Przyk\u0142adowo nasza biblioteka do obs\u0142ugi stanu aplikacji zadeklarowana nast\u0119puj\u0105co &#8222;@reduxjs\/toolkit&#8221;: &#8222;~1.8.4&#8221; b\u0119dzie aktualizowana do wersji wi\u0119kszej lub r\u00f3wnej 1.8.4, ale mniejszej ni\u017c 1.9.0.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full is-resized\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/11\/Obraz2.png\"><img decoding=\"async\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/11\/Obraz2.png\" alt=\"Operatory wersji oprogramowania\" class=\"wp-image-25505\" width=\"609\" height=\"431\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/11\/Obraz2.png 876w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/11\/Obraz2-300x213.png 300w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/11\/Obraz2-768x544.png 768w\" sizes=\"(max-width: 609px) 100vw, 609px\" \/><\/a><figcaption class=\"wp-element-caption\">Ryc. 2 Operatory wersji oprogramowania<\/figcaption><\/figure>\n\n\n\n<p>Dzi\u0119ki operatorom mo\u017cemy kontrolowa\u0107, jakie aktualizacje bibliotek b\u0119d\u0105 uwzgl\u0119dniane w naszym projekcie, jednocze\u015bnie zachowuj\u0105c stabilno\u015b\u0107 i unikaj\u0105c niepo\u017c\u0105danych zmian.<\/p>\n\n\n\n<p>Je\u015bli nadal nie masz pewno\u015bci jak to dzia\u0142a albo chcesz przetestowa\u0107 zadeklarowan\u0105 wersj\u0119, polecam <a aria-label=\" (opens in a new tab)\" href=\"https:\/\/semver.npmjs.com\/\" target=\"_blank\" rel=\"noreferrer noopener\" class=\"ek-link\" rel=\"nofollow\" >bardzo fajne narz\u0119dzie do testowania dost\u0119pne na stronie npmjs.com<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Aktualizowanie wersji<\/strong><\/h2>\n\n\n\n<p>Jest takie magiczne polecenie, kt\u00f3re nie wszystkim jest znane, ale znacz\u0105co u\u0142atwia proces podbijania wersji. Gdy po wprowadzeniu poprawek chcesz podbi\u0107 wersj\u0119, np. modu\u0142u npm, masz do wyboru dwie metody. Mo\u017cesz to zrobi\u0107 na piechot\u0119, zmieniaj\u0105c r\u0119cznie plik package.json, albo skorzysta\u0107 z polecenia <strong>npm version<\/strong>.<\/p>\n\n\n\n<p>Oto trzy przyk\u0142ady, kt\u00f3re pokazuj\u0105, jak to dzia\u0142a w praktyce:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>npm version patch<\/strong> \u2013 zwi\u0119ksza numer wersji poprawki. Przyk\u0142ad: 1.0.0 -&gt; 1.0.1.<\/li>\n\n\n\n<li><strong>npm version minor<\/strong> \u2013 zwi\u0119ksza numer wersji mniejszej. Przyk\u0142ad: 1.0.0 -&gt; 1.1.0.<\/li>\n\n\n\n<li><strong>npm version major<\/strong> \u2013 zwi\u0119ksza numer wersji g\u0142\u00f3wnej. Przyk\u0142ad: 1.0.0 -&gt; 2.0.0.<\/li>\n<\/ul>\n\n\n\n<p>Polecenia te automatycznie aktualizuj\u0105 numer wersji w pliku package.json, a jako bonus tworz\u0105 nowy tag w repozytorium Git.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Dzi\u0119kuj\u0119, \u017ce tutaj dotar\u0142e\u015b!<\/strong><\/h2>\n\n\n\n<p>Mam nadziej\u0119, \u017ce podzieli\u0142em si\u0119 z Tob\u0105 warto\u015bciow\u0105 wiedz\u0105 i \u017ce to, co przeczyta\u0142e\u015b, rzeczywi\u015bcie wp\u0142ynie na Twoj\u0105 efektywno\u015b\u0107. Wersjonowanie Semantyczne pozwala nam klarownie i jednoznacznie komunikowa\u0107 zmiany w naszym oprogramowaniu. Dzi\u0119ki <strong>precyzyjnie okre\u015blonym zasadom<\/strong>, zar\u00f3wno u\u017cytkownicy oprogramowania, jak i cz\u0142onkowie zespo\u0142u s\u0105 w stanie \u0142atwo zrozumie\u0107, jakie zmiany wprowadza dana wersja. To u\u0142atwia proces aktualizacji, rozwi\u0105zywanie problem\u00f3w i zapewnianie stabilno\u015bci projektu.<\/p>\n\n\n\n<p>Nieprawid\u0142owe stosowanie wersjonowania mo\u017ce prowadzi\u0107 do niejasno\u015bci, konfuzji i problem\u00f3w zwi\u0105zanych z zale\u017cno\u015bciami w projekcie. Je\u015bli nie deklarujemy zale\u017cno\u015bci zgodnie z zasadami SemVer, mo\u017cemy przypadkowo wprowadzi\u0107 niekompatybilne zmiany, co mo\u017ce doprowadzi\u0107 do b\u0142\u0119d\u00f3w lub awarii w naszym oprogramowaniu.<\/p>\n\n\n\n<p>Nie mniej poprawne stosowanie SemVer przyniesie korzy\u015bci zar\u00f3wno nam, jak u\u017cytkownikom naszego oprogramowania. Dba\u0142o\u015b\u0107 o jasne oznaczenie zmian i odpowiednie zarz\u0105dzanie zale\u017cno\u015bciami wp\u0142ynie na <strong>stabilno\u015b\u0107, bezpiecze\u0144stwo i efektywno\u015b\u0107<\/strong> naszych projekt\u00f3w.<\/p>\n\n\n\n<p>Dzi\u0119kuj\u0119 za po\u015bwi\u0119cony czas i zapraszam do dalszego zg\u0142\u0119biania tematu SemVer. To wa\u017cne narz\u0119dzie, kt\u00f3re ma bezpo\u015bredni wp\u0142yw na nasz\u0105 prac\u0119, wi\u0119c b\u0105d\u017amy \u015bwiadomi jego warto\u015bci i wykorzystujmy je w praktyce.<\/p>\n\n\n\n<p>***<\/p>\n\n\n\n<p>Jesli ciekawi\u0105 Ci\u0119 narz\u0119dzia wykorzystywane w IT, zajrzyj r\u00f3wnie\u017c <a href=\"https:\/\/sii.pl\/blog\/all\/przeglad-narzedzi\/\" target=\"_blank\" aria-label=\"do innych artyku\u0142\u00f3w naszych ekspert\u00f3w (opens in a new tab)\" rel=\"noreferrer noopener\" class=\"ek-link\">do innych artyku\u0142\u00f3w naszych ekspert\u00f3w<\/a>. <\/p>\n\n\n<div class=\"kk-star-ratings kksr-auto kksr-align-left kksr-valign-bottom\"\n    data-payload='{&quot;align&quot;:&quot;left&quot;,&quot;id&quot;:&quot;25502&quot;,&quot;slug&quot;:&quot;default&quot;,&quot;valign&quot;:&quot;bottom&quot;,&quot;ignore&quot;:&quot;&quot;,&quot;reference&quot;:&quot;auto&quot;,&quot;class&quot;:&quot;&quot;,&quot;count&quot;:&quot;5&quot;,&quot;legendonly&quot;:&quot;&quot;,&quot;readonly&quot;:&quot;&quot;,&quot;score&quot;:&quot;5&quot;,&quot;starsonly&quot;:&quot;&quot;,&quot;best&quot;:&quot;5&quot;,&quot;gap&quot;:&quot;11&quot;,&quot;greet&quot;:&quot;&quot;,&quot;legend&quot;:&quot;5\\\/5 ( votes: 5)&quot;,&quot;size&quot;:&quot;18&quot;,&quot;title&quot;:&quot;Czy wiesz, jak u\u017cywa\u0107 SemVer?&quot;,&quot;width&quot;:&quot;139.5&quot;,&quot;_legend&quot;:&quot;{score}\\\/{best} ( {votes}: {count})&quot;,&quot;font_factor&quot;:&quot;1.25&quot;}'>\n            \n<div class=\"kksr-stars\">\n    \n<div class=\"kksr-stars-inactive\">\n            <div class=\"kksr-star\" data-star=\"1\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"2\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"3\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"4\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"5\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n    <\/div>\n    \n<div class=\"kksr-stars-active\" style=\"width: 139.5px;\">\n            <div class=\"kksr-star\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n    <\/div>\n<\/div>\n                \n\n<div class=\"kksr-legend\" style=\"font-size: 14.4px;\">\n            5\/5 ( votes: 5)    <\/div>\n    <\/div>\n","protected":false},"excerpt":{"rendered":"<p>W artykule chcia\u0142bym poruszy\u0107 temat, kt\u00f3ry jest wa\u017cny dla nas wszystkich \u00ad\u2013 wersjonowanie semantyczne, znane r\u00f3wnie\u017c jako Semantic Versioning albo &hellip; <a class=\"continued-btn\" href=\"https:\/\/sii.pl\/blog\/czy-wiesz-jak-uzywac-semver\/\">Continued<\/a><\/p>\n","protected":false},"author":584,"featured_media":25510,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_editorskit_title_hidden":false,"_editorskit_reading_time":0,"_editorskit_is_block_options_detached":false,"_editorskit_block_options_position":"{}","inline_featured_image":false,"footnotes":""},"categories":[1316],"tags":[2427,1833,1832,1675,1546],"class_list":["post-25502","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-development-na-miekko","tag-digital","tag-semver","tag-semantic-versioning","tag-moim-zdaniem","tag-przeglad-narzedzi"],"acf":[],"aioseo_notices":[],"republish_history":[],"featured_media_url":"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/11\/Czy-wiesz-jak-uzywac-SemVer.pptx.jpg","category_names":["Development na mi\u0119kko"],"_links":{"self":[{"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/posts\/25502"}],"collection":[{"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/users\/584"}],"replies":[{"embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/comments?post=25502"}],"version-history":[{"count":2,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/posts\/25502\/revisions"}],"predecessor-version":[{"id":25948,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/posts\/25502\/revisions\/25948"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/media\/25510"}],"wp:attachment":[{"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/media?parent=25502"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/categories?post=25502"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/tags?post=25502"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}