{"id":1424,"date":"2021-11-14T00:33:55","date_gmt":"2021-11-14T00:33:55","guid":{"rendered":"https:\/\/kalkus.dev\/?p=1424"},"modified":"2023-08-24T23:15:58","modified_gmt":"2023-08-24T23:15:58","slug":"parada-atrakcji","status":"publish","type":"post","link":"https:\/\/kalkus.dev\/blog\/2021\/11\/14\/parada-atrakcji\/","title":{"rendered":"Parada atrakcji"},"content":{"rendered":"\n<p>Programowanie to przygoda. Naprawd\u0119. Siadaj\u0105c do komputera i chc\u0105c co\u015b zaprogramowa\u0107 igracie z losem. Jeste\u015bcie jak bohater antycznej tragedii, kt\u00f3ry jakby si\u0119 nie szarpa\u0142, jak nie manewrowa\u0142 i tak prze\u017cyje przygody jakich si\u0119 nie spodziewa\u0142. Mo\u017ce nawet polegnie.<\/p>\n\n\n\n<p>Dzi\u015b poleg\u0142em ja.<\/p>\n\n\n\n<p>Nie jest to nic nowego. Dzie\u0144 jak co dzie\u0144 w \u017cyciu programisty. Pomy\u015bla\u0142em jednak, \u017ce warto to zanotowa\u0107 nie dla koder\u00f3w, ale dla \u2013 tak zwanego \u2013 biznesu, dla os\u00f3b bez koderskiej praktyki, kt\u00f3re dziwi\u0105 si\u0119, \u017ce programi\u015bci nie lubi\u0105 wycenia\u0107 zada\u0144, \u017ce sp\u00f3\u017aniaj\u0105 si\u0119 z wykonaniem projekt\u00f3w i \u017ce wykonanie prostej czynno\u015bci zajmuje im kilka dni. Musz\u0105 si\u0119 leni\u0107 ci arystokraci IT najpewniej! Czy\u017cby?<\/p>\n\n\n\n<p>Historia zaczyna si\u0119 niewinnie: chc\u0119 wizualnie od\u015bwie\u017cy\u0107 bloga. Nie lubi\u0119 jednak \u2013 jak wi\u0119kszo\u015b\u0107 frontendowc\u00f3w \u2013 PHP, wi\u0119c nik\u0142y jest m\u00f3j entuzjazm w kwestii tworzenia nowego szablonu WordPress. Niewielki research i szybko pojawi\u0142 si\u0119 w g\u0142\u00f3wce g\u0142upi pomys\u0142. Zrobi\u0119 w Gatsby. Nowy, seksowny framework, oparty na React, musi by\u0107 przyjemnie i ciekawie!<\/p>\n\n\n\n<p>Zaczynam wi\u0119c. Szybka instalacja, nieco dokumentacji i jedziemy z dewelopmentem. Ju\u017c na wst\u0119pie nadzieja, \u017ce b\u0119dzie \u0142atwo pada ofiar\u0105 rzeczywisto\u015bci. Gatsby niby to ma co\u015b wygenerowa\u0107 z endpointa GraphQLowego, ale w gruncie rzeczy nie generuje nic. Trudno, napisz\u0119 \u201ez palca\u201d.<\/p>\n\n\n\n<p>Do WordPressa dodaj\u0119 pluginy WP GraphQL i WP Gatsby, jak kontrybutor w dokumentacji przykaza\u0142. I nawet udaje si\u0119 co\u015b pobra\u0107. Tyle, \u017ce jakby nie wszystko. GraphQL zwraca jedynie posty po angielsku. No tak \u2013 bloga prowadz\u0119 w dw\u00f3ch j\u0119zykach. Trzeba wi\u0119c wymy\u015bli\u0107, jak pobra\u0107 te drugie. \u0141atwo to jednak tylko brzmi. Okazuje si\u0119 bowiem, \u017ce plugin Polylang do obs\u0142ugi wielu j\u0119zyk\u00f3w rozk\u0142ada na \u0142opatki plugin WP Gatsby. Trzeba u\u017cy\u0107 innego \u2013 WP GraphQL Polylang, kt\u00f3ry jednak odbiera nam mo\u017cliwo\u015b\u0107 korzystania z wbudowanego w Gatsby klienta GraphQL.<\/p>\n\n\n\n<p>Zainstalowa\u0142em zatem klilenta Apollo. Wydawa\u0142 si\u0119 dzia\u0142a\u0107. Ucieszony napisa\u0142em prosty komponent wy\u015bwietlaj\u0105cy list\u0119 post\u00f3w. Nag\u0142\u00f3wki, pi\u0119knie, wy\u015bwietla\u0142y si\u0119. Tyle, \u017ce ju\u017c nie tre\u015b\u0107. Tre\u015b\u0107 przychodzi\u0142a z backendu pusta. Co ciekawe plugin to samo zapytanie inaczej rozwi\u0105zywa\u0142 po stronie klienta i w oknie pluginu WordPress. Ciekawy przypadek. Ciekawy\u2026<\/p>\n\n\n\n<p>Tak by\u0142 ciekawy, \u017ce godzin\u0119 co najmniej sp\u0119dzi\u0142em na analizowaniu r\u00f3\u017cnic, nie dopatrzywszy si\u0119 \u017cadnych istotnych. Kolejne p\u00f3\u0142 godziny za\u015b na przeszukiwaniu Google w pr\u00f3bie rozwi\u0105zania tej zagadki. Tak jednak niestety si\u0119 okaza\u0142o, \u017ce jest to do\u015b\u0107 \u015bwie\u017ca sprawa i w zasadzie nikt o tym nie pisze. Wreszcie znalaz\u0142em kana\u0142 Slack pluginu i uda\u0142o mi si\u0119 w jego historii odnale\u017a\u0107 wzmiank\u0119 o autentykacji. Potencjalnie wi\u0119c brak tre\u015bci post\u00f3w wynika z braku uwierzytelnienia. No to ju\u017c pewnie jeste\u015bmy w domu\u2026<\/p>\n\n\n\n<p>Niefortunnie droga do tego domu okazuje si\u0119 prosta jak u Barei. \u017beby dokona\u0107 autentykacji nale\u017cy zainstalowa\u0107 \u2013 i to r\u0119cznie, \u015bci\u0105gaj\u0105c samemu z repozytorium Githuba \u2013 plugin WPGraphQL JWT Authentication, a nast\u0119pnie wygenerowa\u0107 gdzie\u015b sekret, wkleic go do pliku konfiguracyjnego wp-config, a tak\u017ce upewni\u0107 si\u0119, \u017ce serwer wspiera nag\u0142\u00f3wek HTTP_AUTHORIZATION. A \u017ceby wspiera\u0142 trzeba w apache skonfigurowa\u0107 .htaccess i\u2026<\/p>\n\n\n\n<p>I zrobi\u0142a si\u0119 pierwsza w nocy.<\/p>\n\n\n\n<p>Nad tak banalnym zadaniem jak wy\u015bwietlenie listy post\u00f3w pobranych z backendu oraz jego konfiguracja sp\u0119dzi\u0142em dobre 8 godzin i uda\u0142o mi si\u0119 jedynie wy\u015bwietli\u0107 ich nag\u0142\u00f3wki. To, co mia\u0142o by\u0107 najprostsze (konfiguracja backendu) okaza\u0142o si\u0119 piramidalnie trudne, a tego, nad czym planowa\u0142em sp\u0119dzi\u0107 wi\u0119kszo\u015b\u0107 pracy (layout frontu, routing, struktura stron) nie uda\u0142o mi si\u0119 nawet zacz\u0105\u0107.<\/p>\n\n\n\n<p>Owszem \u2013 s\u0105 to w wi\u0119kszo\u015bci technologie mi nieznane, ani z Gatsbym, ani z pluginem \u00a0WPGraphQL wcze\u015bniej nie pracowa\u0142em \u2013 ale jednak nie s\u0105 to tak zupe\u0142nie obce mi kwestie. Mimo wszystko kompletnie ugrz\u0119z\u0142em w bagnie ustawie\u0144, nieprzewidzianych zale\u017cno\u015bci, specjalnych przypadk\u00f3w i niedor\u00f3bek opensource\u2019owym oprogramowaniu.<\/p>\n\n\n\n<p>I tak si\u0119 prosz\u0119 pa\u0144stwa uprawia t\u0119 dewelopersk\u0105 rol\u0119, co \u0142amie p\u0142ug i plecy \u0142amie.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Programowanie to przygoda. Naprawd\u0119. Siadaj\u0105c do komputera i chc\u0105c co\u015b zaprogramowa\u0107 igracie z losem. Jeste\u015bcie jak bohater antycznej tragedii, kt\u00f3ry jakby si\u0119 nie szarpa\u0142, jak nie manewrowa\u0142 i tak prze\u017cyje przygody jakich si\u0119 nie spodziewa\u0142. Mo\u017ce nawet polegnie. Dzi\u015b poleg\u0142em ja. Nie jest to nic nowego. Dzie\u0144 jak co dzie\u0144 w \u017cyciu programisty. Pomy\u015bla\u0142em jednak, [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":1426,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[204,7],"tags":[199,165,191],"_links":{"self":[{"href":"https:\/\/kalkus.dev\/blog\/wp-json\/wp\/v2\/posts\/1424"}],"collection":[{"href":"https:\/\/kalkus.dev\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kalkus.dev\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kalkus.dev\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/kalkus.dev\/blog\/wp-json\/wp\/v2\/comments?post=1424"}],"version-history":[{"count":4,"href":"https:\/\/kalkus.dev\/blog\/wp-json\/wp\/v2\/posts\/1424\/revisions"}],"predecessor-version":[{"id":1430,"href":"https:\/\/kalkus.dev\/blog\/wp-json\/wp\/v2\/posts\/1424\/revisions\/1430"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kalkus.dev\/blog\/wp-json\/wp\/v2\/media\/1426"}],"wp:attachment":[{"href":"https:\/\/kalkus.dev\/blog\/wp-json\/wp\/v2\/media?parent=1424"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/kalkus.dev\/blog\/wp-json\/wp\/v2\/categories?post=1424"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kalkus.dev\/blog\/wp-json\/wp\/v2\/tags?post=1424"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}